Enhancements and Bug fixes.
 


Release 2.1.9G


Release 2.1.9F


Release 2.1.9E


Release 2.1.9D


Release 2.1.9C


Release 2.1.9B

Release 2.1.9A
Release 2.1.9


Release 2.1.8


Release 2.1.7


Release 2.1.6
 
  • Fixed bug in the routines _*2fs.c the variable 'sign' should be declared as 'long'.
  • Included _char2fs in libfloat.lib
  • Fixed register allocator  bug for allocating pointers (found by "Dr. Ed Croson" <soarebc@internetcds.com>).
  • Furthur loop induction variable detection improvement.
  • Changed loop induction detection so that it does not treat global variables as induction any more, this saves some code, since assignments to global variables cannot be easily eliminated.
  • Fixed problem of __sdcc_program_startup being out of range when large amount of initialization code is present.
  • Fixed bug with function returning pointers.
  • Changed register allocation to aggressively allocate local variables to registers, users will see a vast improvement in the generated code, not only in terms  of speed but also in terms of data space utilization. Previously if there were multiple definitions for a local variable flowing into a basic block the compiler would allocate space for the variable, now it will allocate space only if it runs out of registers.
  • Jean-Louis VERN (jlvern@<writeme.com>) has done some more enhancements to the code generator ..... his comments.
  • I did some light improvement s:

  •         - increment 16&32bits
           - decrement 16&32bits
            - assignment with literal
            - return with literal
    and some cosmetics before optimizing mult and div...*
  •  "BESSIERE Jerome" <BESSIERE_Jerome@stna.dgac.fr> made a lot of improvements to the support routines, these include reducing some memory leaks.. here are his comments.
  • //* Incorrect call of werror(E_OUT_OF_MEM,...);

  • //* 1-a In file SDCCBBlock.c / function iCodeBreakDown (...)
    //* 1-b In file SDCChasht.c / function newHashTable(...)
    //* 1-c In file SDCCmain.c / function parseCmdLine(...)
  • //* Sometime the compiler crash due to compilation error

  • //* In file SDCCast.c / function createFunction(...)
  • //* Sometime SDCC access not allocated memory

  • //* In file SDCChasht.c / function hTabSearch(...)
  • /* Many and many memory leak when not using CYGWIN32

  • //* and  garblage collector (I'm using MS VC++ 6.0 and WIN32)
    //* specially in peepHole function consuming Mo and Mo
    //* even on compiling small function
    //* I created a new function in file SDCChasht.c for deleting an hTab
    //* It Reduces memory leaks
  • "Salvador Eduardo Tropea \(SET\)" <salvador@inti.gov.ar> provided patches required to compile the system using DJGPP, the executables produced can run on plain DOS. He has also created a readme.dj file for those who want to compile using DJGPP.
  • Added code to issue warnings if something is compared to / assigned a literal value which is greater than what the variable can hold.
  • Changed the data/space extended message to info , since this not really a warning message.
  • Added routine auto baud, for automatic baud rate detection , adapted from Paul Stoffregen's  <paul@ece.orst.edu> autobaud.asm
  • Was not doing check for constants in case for ++/--, i.e. a variable declared as const could be incremented or decremented
  • Fixed bug when setting & fetching data from far space .
  • Added bunch of peephole optimization rules.
  • Trefor@magera.freeserve.co.uk. Updated the build script to give a choice to compile the libraries as large model or small model.
  • Trefor also got rid of those annoying warnings when compiling with egcs ( braces about ambiguous 'else')
  • Added some heuristics in constant folding routine , to prevent pointer live ranges from becoming too long, this was causing some avoidable spill code to be generated.
  • Added support for ANSI routines setjmp and longjmp. Documentation updated.
  • Was generating code for unreachable basic blocks ... now will not generate code for unreachable code... will issue a warning.
  • Was generating incorrect code when adding values to generic pointers (some times).
  • Improved bitwise '&' operation a little bit to improve code generation.


  • Release 2.1.5

    Mostly a bug fix release
     

  • Fixed post & pre increment / Decrement problem and inefficiency
  • Structures/Unions. Three things were done this structure declarations.
  • The long standing union problem has been fixed, a very rudimentary solution right now , will some up with a better solution shortly.
  • Structures declared inside function scopes were not being properly cleaned up, came across this problem while generating debug information fixed now.
  • pointers declared inside structures were broken after the pointer fix in Version 2.1.3, now fixed.
  • Fixed some library routines , for --model-large .
  • Added whole lot of stuff for debug information generation (DO NOT use --debug option might cause unpredictable results).


  • Release 2.1.4
     

    Release 2.1.3
     

    Release 2.1.2
     

    Release 2.1.1
     

    Release 2.1.0

    A full source code release. Lots of stuff done in this release.
     



    Release 2.0.21
     
  • Enhancement made to unsigned long & integer division by Martijn van Balen <balen@natlab.research.philips.com>
  •  _gptrget.c & _gptrput.c made register bank independent  by Martijn van Balen <balen@natlab.research.philips.com>.
  • sdccbuil.sh script fixed by Subject: Markus Mathes <mathes@prp.physik.tu-darmstadt.de>
  • Martijn van Balen <balen@natlab.research.philips.com> found some problems with post & pre increment of pointer variables , these are fixed.


  • Release 2.0.20

    Mostly enhancements in this release. Some bug fixes by Jean Louis.

  • Enhanced loop optimization (induction variables), will generate more compact code for simple loops
  • Enhanced some aspects of basic block processing.
  • Added a couple more MCU header files.
  • Jean Louis made some enhancements in SDCCgen51.c for better code generation.
  • Jean Louis also fixed some bugs in the back end .


  • Release 2.0.19
     
  • Assignment of array variable to a pointer sometimes did not generate code.
  • File containing intialised variables ONLY with NO functions caused the compiler to crash
  • Initialising global volatile variables caused the compiler to fail.
  • Generated incorrect code when bit variables were modified and subsequently used in a conditional statement.
  • Added 3 more header files for Atmel MCUs , provided by Bernd  Bartmann (Bernd.Bartmann@picard.isdn.cs.tu-berlin.de)
  • Added a lot of peephole optimization rules, some suggested by Daniel Drotos <drdani@mazsola.iit.uni-miskolc.hu>
  • Added check to make sure functions do not return 'bit'.
  • Jean Louis-VERN (jlvern@writeme.com) fixed bug for divide with literal in his code.


  • Release 2.0.17