1555 lines
53 KiB
HTML
1555 lines
53 KiB
HTML
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
|
<meta name="GENERATOR" content="Mozilla/4.7 [en] (X11; I; Linux 2.2.12-20 i686) [Netscape]">
|
|
</head>
|
|
<body>
|
|
<b><font size=+2>Enhancements and Bug fixes.</font></b>
|
|
<br>
|
|
<blockquote>
|
|
<hr WIDTH="100%">
|
|
<br><b>Release 2.1.9G</b>
|
|
<ul>
|
|
<li>
|
|
<font color="#CC0000">Applied several patches provided by "Anton
|
|
Voloshin" <vav@isv.ru> mainly to SDCCglue.c, SDCCmain.c & sdcdb/cmd.c</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">First parameter of struct member function pointer
|
|
not passed in register.</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">Parameter passing problem if first parameter of a
|
|
routine passed as second parm of another routine, vice versa. This bug
|
|
would caused some of the library routines to fail.</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">Address of structure member passed as parameter caused
|
|
problems.</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">#pragma callee-saves did not always work.</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">Furthur bug fix for live range computation within
|
|
loops.</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">Register 'b' could be clobbered when there was '*',
|
|
'/' or '%' operation for generic pointers.</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">initialisation for pointers to structure elements
|
|
in code space generated errors.</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">Debugger info lost when multiple files were linked
|
|
.</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">Fixed buf in printf_large.c(vsprintf called with wrong parms)
|
|
.</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">"extern" variables when spilt did not allocate spill locations
|
|
. i.e. "sloc" undefined error.
|
|
.</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">Added optimization for PUSH. "xdata" variables do not need to be
|
|
assigned to temps to be pushed.
|
|
.</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">Fixed aliasing problem where some pointer sub expressions
|
|
were carried across basic blocks .</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">Upgraded to version 0.2.36 of ucsim .</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">Added new optimization within basic blocks pointer
|
|
set values will replace get pointer values within a basic block. (across
|
|
basic blocks is a little bit complex will have to think about it some more).</font></li>
|
|
|
|
<br><font color="#CC0000">which in plain english means.</font>
|
|
<br><font color="#CC0000"> a->b
|
|
= 10;</font>
|
|
<br><font color="#CC0000"> putchar(a->b);</font>
|
|
<br><font color="#CC0000">will come..</font>
|
|
<br><font color="#CC0000"> a->b
|
|
= 10;</font>
|
|
<br><font color="#CC0000">
|
|
putchar(10);</font></ul>
|
|
</blockquote>
|
|
|
|
<blockquote>
|
|
<hr WIDTH="100%">
|
|
<br><b>Release 2.1.9F</b>
|
|
<ul>
|
|
<li>
|
|
<font color="#CC0000">pointers passed to functions as parameters are removed
|
|
from cse list.</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">live range computation for variables inside loops
|
|
improved.</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">upgraded ucsim to latest release 0.2.31</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">loop invariant bug fix for (global variables assigned
|
|
constant values inside a loop)</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">Applied patch provided by "Anton Voloshin"
|
|
<vav@isv.ru> rel files put into separate lines in the .lnk file.</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">union of structures caused compiler to generate incorrect
|
|
code for member access.</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">added patch to vprintf.c to null terminate output
|
|
string. BESSIERE_Jerome@stna.dgac.fr (BESSIERE Jerome)</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">Debugger had problem with structures/unions on stack</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">Debugger will now stop when simulator stops even
|
|
when break point not hit.</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">Debugger will display simulators "startup message",
|
|
this makes it a clearer to the user that the debugger is actually piggy
|
|
backing on top of the simulator.</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">Applied patch to assembler/linker some names were
|
|
getting truncated @ 8 characters . patch by "Anton Voloshin" <vav@isv.ru></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">_gptrput.c was leaving a byte on stack if unknown
|
|
storage class.</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">parameter passing was incorrect for reentrant functions
|
|
when prototype declared without parameter name.</font></li>
|
|
</ul>
|
|
</blockquote>
|
|
|
|
<blockquote>
|
|
<hr WIDTH="100%">
|
|
<br><b><font size=+1>Release 2.1.9E</font></b>
|
|
<ul>
|
|
<li>
|
|
<font color="#CC0000">"remat " was not being cleared for global variables.</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">stack offset of a variable computed incorrectly in
|
|
some situations.</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">Applied patch for floating point routine provided
|
|
by<font size=+1> </font>Wojciech Zabolotny <wzab@ise.pw.edu.pl></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">Force allocation of local variable if address taken
|
|
(even if not initialised)</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">Fixed loop reversal bug .</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">Fixed another bug in register allocator , long variables
|
|
can be printfed now.</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">DEBUGGER can now print values on stack and aggregates.</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">Upgraded to 0.2.26 of ucsim.</font></li>
|
|
</ul>
|
|
</blockquote>
|
|
|
|
<blockquote>
|
|
<hr WIDTH="100%">
|
|
<br><b><font size=+1>Release 2.1.9D</font></b>
|
|
<ul>
|
|
<li>
|
|
<font color="#CC0000">Fixed loop optimization bug was treating variables
|
|
defined twice as loop induction.</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">Fixed loop optimization constrained induction variable
|
|
detection.</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">Fixed bug in some floating point routines (fix provided
|
|
by Wojciech Zabolotny <wzab@ise.pw.edu.pl>)</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">Fixed code generation bug for return literal floating
|
|
point.</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">Fixed register packing was not moving return value
|
|
under certain conditions.</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">Improved error recovery for undefined symbols.</font></li>
|
|
</ul>
|
|
</blockquote>
|
|
|
|
<blockquote>
|
|
<hr WIDTH="100%">
|
|
<br><b><font size=+2>Release 2.1.9C</font></b>
|
|
<ul>
|
|
<li>
|
|
<font color="#CC0000">Fixed bug with register allocation, effected mostly
|
|
large routines compiled using the --model-large option.</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">Fixed bug in array of structures dereferncing.</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">Simplified the intermediate code generattion , removed
|
|
some tree nodes. The parser will not generate nodes with structure derefs,
|
|
and the operators +=,-= ..etc will be changed at parse time, this creates
|
|
a simplififed parse tree.</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">Upgraded to latest version of "gc", compile problems
|
|
on Redhat 6.0 should be fixed.</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">Fixed passing simulator parameters from the debugger
|
|
command line.</font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000">Fixed problem with the floating point routines.</font></li>
|
|
</ul>
|
|
</blockquote>
|
|
|
|
<blockquote>
|
|
<hr WIDTH="100%">
|
|
<br><b><font size=+1>Release 2.1.9B</font></b>
|
|
<ul>
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed pointer access and array reference
|
|
bug introduced in the previous version.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>integrated ucsim.0.2.25</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug for code not generated for
|
|
global pointers assigned to address of array element.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed one more bug in live range computation.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug in register allocator , it
|
|
was overwriting computed liverange values.</font></font></li>
|
|
</ul>
|
|
|
|
<hr WIDTH="100%">
|
|
<br><b><font size=+1>Release 2.1.9A</font></b>
|
|
<ul>
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug in common subexpression elimination,
|
|
problem was found when a local variable was assigned values more than once
|
|
in a basic block.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Added warning when a "void" object
|
|
is cast to a non-void object.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Added warning when a non-pointer type
|
|
is cast to a _generic pointer.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Added a peephole optimization
|
|
rule to remove some moves.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed problem in register packing ,
|
|
registers assigned to parameters were not being saved on the stack.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Bug in loop inductions, the induction
|
|
variable detection was not correctly replacing all references.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Merged bug fixes provided by <i>Wojciech
|
|
Stryjewski <wstryj1@tiger.lsu.edu to></i> SDCCgen51.c</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Local variable treated as invariant
|
|
even when address is taken.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed Parameter problem for functions
|
|
with empty bodies.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed problem with array dereferncing
|
|
when array of pointers.</font></font></li>
|
|
|
|
<br>
|
|
<hr WIDTH="100%"></ul>
|
|
</blockquote>
|
|
|
|
<blockquote><b><font size=+1>Release 2.1.9</font></b>
|
|
<ul>
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Integrated new simulator from Daniel
|
|
"ucsim-0.20.xx"</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>.cdb file will be created always, and
|
|
will contain global variables & function entry/extis information always.
|
|
This will facilitate debuggers especially NoICE.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug when using typedefed types
|
|
in a structure.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed aliasing bug in the loop optimizer,
|
|
when a global array is used in a loop it should not be treated as an invariant
|
|
if there are function calls in the loop.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed problem with register allocation,
|
|
this was causing some of the "long" routines to fail.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed problem of clobbering value of
|
|
_bp.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed problem of clobbering acc when
|
|
a long variable is the first argument to a reentrant function.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed a peephole optimizer problem,
|
|
when it was changing the ljmp to a sjmp in a jump-table.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Enhanced the initialization routines
|
|
to support initialization with '&' operations.</font></font></li>
|
|
</ul>
|
|
</blockquote>
|
|
|
|
<blockquote>
|
|
<hr WIDTH="100%">
|
|
<br><b><font size=+1>Release 2.1.8</font></b>
|
|
<ul>
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Void function returning value check
|
|
was not working properly.(fixed)</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Assigning 'void' values to variables
|
|
will generate warning.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Improved register allocation to use
|
|
"acc" , this will improve code generation , but for this register color
|
|
is severely restricted, will gradually work on improving this. This reduces
|
|
the redundant register moved drastically (once totally implemented)</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Added some peephole rules eliminate
|
|
jump to jumps.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Bug in SDCCgen51.c when using a bit
|
|
variable (locally defined) in an if statement.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Literal values being cast to pointers
|
|
was not working.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>'volatile' arrtibute for structure/union
|
|
elements were bieng ignored. Now we can selectively declare structure elements
|
|
to be volatile.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Did some profiling to improve performance,
|
|
changed peephole optimizer a little with profiler feedback.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Was generating incorrect "cjne" code
|
|
under some situations.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Improved data flow computation.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug in geniCodeCast for floating
|
|
point conversions.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug in modulong routine found
|
|
by Béla Török <aseht@ms1.kssg.ch></font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug for long shift left found
|
|
by Béla Török <aseht@ms1.kssg.ch></font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug with register allocator ,
|
|
was marking variables as rematerializable too aggresively.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Added --version option.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed problem of compiling source files
|
|
not in current directory.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed a bug in a bitvector routine
|
|
(bitVectResize)</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Added error message when "continue/break"
|
|
are out of context.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug in error checking for uninitialised
|
|
local variables.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug in code generation for not
|
|
(!) operation.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug in live range computation
|
|
when intervenening unreachable block is present.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Changed register saving scheme, bank
|
|
will be saved only when called from a interrupt service routine.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug with >> and << with
|
|
unknown shift count.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>The fix to the bit vector exposed some
|
|
problem with the register allocation, fixed now.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Added an extra heuristic for register
|
|
spilling, now the spilling will a lot lower than before.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Added some more optimizations for register
|
|
packing.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Added a bunch of preprocessor options
|
|
see command line options in the documentation for details.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Some cosmetics like timestamp in .asm
|
|
in addition to Version Number.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>fixed another bug with live range computation.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Automatic static variables will not
|
|
be assigned to registers.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>The parameter name mangling a little
|
|
so that it gives the warnings/errors with the correct name, also required
|
|
for debugger.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Jean Louis fixed some bugs with shifting
|
|
"long" variables.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug of access of local bit variables
|
|
when compiling with --model-large</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed two bugs in Register allocator.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Added fix to peephole optimizer rule
|
|
matching , fixed provided by Frieder.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>"Mark O'Farrell" <ofarrell@haq.com.au>
|
|
added segment type to the segment definition.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>"Mark O'Farrell" <ofarrell@haq.com.au>
|
|
added option to start stack after the data segment --stack-after-data (see
|
|
documentation)</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Changed the computation for default
|
|
stack location, now if all four banks are used the stack will be placed
|
|
after the data segment (--stack-after-data), so as not to clobber the bit
|
|
segment (this should make Daniel Drotos happy:).</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Compiler will no longer crash when
|
|
an uninitialised local variable is detected.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug for bad code generation for
|
|
anl,xor & or when operand is on stack .</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug for side effecting parameters
|
|
when calling a reentrant function.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Improved optimization for ++ &
|
|
-- operation when operand is on stack.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Was STILL saving entire register bank
|
|
when calling function with different register bank from non ISR function.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Changed register saveing for ISR functions
|
|
not using register bank (see documentation [Interrupt Service Routines])</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Josef Wolf <jw@raven.inka.de> provided
|
|
a set of serial routines which do not use the external ram (ser_ir.c),
|
|
included these as libraries.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>PSW was not being saved for ISRs with
|
|
no register bank specification.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Integrated Daniel's simulator with
|
|
the compiler source distribution.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Added reduced "printf" routine it works
|
|
but is very resource intensive.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Certain complex pointer declarations
|
|
were not being handled correctly.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>switch statements with empty bodies
|
|
were causing the compiler to crash.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>sizeof union object computed incorrectly.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>union element when passed as parameter
|
|
to a function generated incorrect code.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Martijn van Balen <balen@natlab.research.philips.com>
|
|
provided a complete set of printf routines including sprintf.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug when union member is a pointer
|
|
and is used on the right side of an assignment.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Improved register allocation
|
|
for arrays, structure & union members in data space will no longer
|
|
be spilt.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Some optimizations for pointer access
|
|
had got clobbered put them back.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug for right shifting signed
|
|
quantity by zero.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Constant propagation had problem when
|
|
long variables were used in division.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug in register allocator on
|
|
rare situations it saved wrong live ranges.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed Bug with Backend (gen51.c) incorrect
|
|
code was generated when far space variable assigned o variable in far space.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed problem with loop invariant processing,
|
|
was not taking into consideration when address or pointer was passed as
|
|
parameter to a function.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Added --help & -h option.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Added the peephole optimization rules
|
|
provided by Frieder <fe@lake.iup.uni-heidelberg.de></font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Function prototypes without parameter
|
|
names were occasionally causing problems.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed problem with _spx inc/dec when
|
|
using xternal stack.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Register allocation bug</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Addition of constant to generic pointer
|
|
was causing problems sometimes.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Improved register allocation some more.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug in live range analysis (for
|
|
some complex contro flow situations.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug of 'b' getting clobbered
|
|
in some left & right shift operations.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Added --callee-saves (documentation
|
|
updated)</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug in hTabDeleteItem() in SDCChasht.c
|
|
(exposed during debugger development)</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug in grammar .. to allow absolute
|
|
address for local "bit" variables.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Added #pragma CALLEE-SAVES (same effect
|
|
as --calle-saves)</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Added #pragma EXCLUDE (see docs)</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed problem xrl generating incorrect
|
|
code.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Yet another problem in register allocator
|
|
fixed.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed a bug with dataflow computation,
|
|
was computing pointer kills incorrectly.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Added loop reversal.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug in structure declaration</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed floating point routines</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed parsing problem for LONG hex
|
|
constants</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug to allow local variables
|
|
to be declared in 'code' space.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug in code generation for floating
|
|
point .</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Parameters access was incorrect when
|
|
callee-saves && reentrant.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug in hashTable routine.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug when string initialisers
|
|
are used for char arrays with bounds.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Was generating incorrect code when
|
|
options --model-large && --stack-auto were used together</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Replaced 32bit multiplication routine
|
|
with JeanLouis VERN's much better routine.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed problem with loop-reversing</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Introduced parameter passing using
|
|
registers.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Applied improvements/cleanups supplied
|
|
by Larry Dolittle.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Moved the variable substitution by
|
|
register equivalent to earlier phase , this generates much more optimized
|
|
code.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Compiler crashed when first parameter
|
|
was declared "const"</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Assembler generated bad opcode for
|
|
"djnz" when the "." operator was used.</font></font></li>
|
|
</ul>
|
|
</blockquote>
|
|
|
|
<blockquote>
|
|
<hr WIDTH="100%">
|
|
<br><b><font size=+1>Release 2.1.7</font></b>
|
|
<ul>
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed a bug in the DEF-USE chaining
|
|
algorithm , was keeping some dead DEFs alive in the DEF bit vector of a
|
|
symbol.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug with "(null)" operand generated
|
|
in rare situations.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1> Trefor <Trefor@magera.freeserve.co.uk>
|
|
did some more clean up.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug that was introduced with
|
|
'&' with a literal.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Added alternate serial package provided
|
|
by "Wolfgang Esslinger "<wolfgang@WiredMinds.com> in ./sdcc51lib/_ser.c
|
|
(documentation updated)</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Added Header file sab80515.h
|
|
provided by Béla Török <aseht@ms1.kssg.ch></font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Had made flow computation for global
|
|
variables too restrictive, now constant propagation will be allowed with
|
|
global variables.</font></font></li>
|
|
</ul>
|
|
</blockquote>
|
|
|
|
<blockquote>
|
|
<hr WIDTH="100%">
|
|
<br><b><font size=+1>Release 2.1.6</font></b>
|
|
<br>
|
|
<blockquote>
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug in the routines <b>_*2fs.c
|
|
</b>the
|
|
variable 'sign' should be declared as 'long'.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Included _char2fs in libfloat.lib</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed register allocator bug
|
|
for allocating pointers (found by "Dr. Ed Croson" <soarebc@internetcds.com>).</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Furthur loop induction variable detection
|
|
improvement.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>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.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed problem of __sdcc_program_startup
|
|
being out of range when large amount of initialization code is present.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug with function returning pointers.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>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.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Jean-Louis VERN (jlvern@<writeme.com>)
|
|
has done some more enhancements to the code generator ..... his comments.</font></font></li>
|
|
|
|
<blockquote>
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>I did some light improvement s:</font></font></li>
|
|
|
|
<br><font color="#CC0000"><font size=+1>
|
|
- increment 16&32bits</font></font>
|
|
<br><font color="#CC0000"><font size=+1>
|
|
- decrement 16&32bits</font></font>
|
|
<br><font color="#CC0000"><font size=+1>
|
|
- assignment with literal</font></font>
|
|
<br><font color="#CC0000"><font size=+1>
|
|
- return with literal</font></font>
|
|
<br><font color="#CC0000"><font size=+1>and some cosmetics before optimizing
|
|
mult and div...*</font></font></blockquote>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1> "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.</font></font></li>
|
|
|
|
<blockquote>
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>//* Incorrect call of werror(E_OUT_OF_MEM,...);</font></font></li>
|
|
|
|
<br><font color="#CC0000"><font size=+1>//* 1-a In file SDCCBBlock.c /
|
|
function iCodeBreakDown (...)</font></font>
|
|
<br><font color="#CC0000"><font size=+1>//* 1-b In file SDCChasht.c / function
|
|
newHashTable(...)</font></font>
|
|
<br><font color="#CC0000"><font size=+1>//* 1-c In file SDCCmain.c / function
|
|
parseCmdLine(...)</font></font>
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>//* Sometime the compiler crash due
|
|
to compilation error</font></font></li>
|
|
|
|
<br><font color="#CC0000"><font size=+1>//* In file SDCCast.c / function
|
|
createFunction(...)</font></font>
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>//* Sometime SDCC access not allocated
|
|
memory</font></font></li>
|
|
|
|
<br><font color="#CC0000"><font size=+1>//* In file SDCChasht.c / function
|
|
hTabSearch(...)</font></font>
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>/* Many and many memory leak when not
|
|
using CYGWIN32</font></font></li>
|
|
|
|
<br><font color="#CC0000"><font size=+1>//* and garblage collector
|
|
(I'm using MS VC++ 6.0 and WIN32)</font></font>
|
|
<br><font color="#CC0000"><font size=+1>//* specially in peepHole function
|
|
consuming Mo and Mo</font></font>
|
|
<br><font color="#CC0000"><font size=+1>//* even on compiling small function</font></font>
|
|
<br><font color="#CC0000"><font size=+1>//* I created a new function in
|
|
file SDCChasht.c for deleting an hTab</font></font>
|
|
<br><font color="#CC0000"><font size=+1>//* It Reduces memory leaks</font></font></blockquote>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>"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 <b>readme.dj</b> file
|
|
for those who want to compile using DJGPP.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Added code to issue warnings if something
|
|
is compared to / assigned a literal value which is greater than what the
|
|
variable can hold.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Changed the data/space extended message
|
|
to <b>info </b>, since this not really a warning message.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Added routine auto baud, for automatic
|
|
baud rate detection , adapted from Paul Stoffregen's <paul@ece.orst.edu>
|
|
autobaud.asm</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Was not doing check for constants in
|
|
case for ++/--, i.e. a variable declared as const could be incremented
|
|
or decremented</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug when setting & fetching
|
|
data from far space .</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Added bunch of peephole optimization
|
|
rules.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Trefor@magera.freeserve.co.uk. Updated
|
|
the build script to give a choice to compile the libraries as large model
|
|
or small model.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Trefor also got rid of those annoying
|
|
warnings when compiling with egcs ( braces about ambiguous 'else')</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>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.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Added support for ANSI routines <b>setjmp</b>
|
|
and <b>longjmp. </b>Documentation updated.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Was generating code for unreachable
|
|
basic blocks ... now will not generate code for unreachable code... will
|
|
issue a warning.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Was generating incorrect code when
|
|
adding values to generic pointers (some times).</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Improved bitwise '&' operation
|
|
a little bit to improve code generation.</font></font></li>
|
|
</blockquote>
|
|
|
|
<hr WIDTH="100%">
|
|
<br><b><font size=+1>Release 2.1.5</font></b>
|
|
<p><font size=+1>Mostly a bug fix release</font>
|
|
<br>
|
|
<blockquote>
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed post & pre increment / Decrement
|
|
problem and inefficiency</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Structures/Unions. Three things were
|
|
done this structure declarations.</font></font></li>
|
|
|
|
<blockquote>
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>The long standing union problem has
|
|
been fixed, a very rudimentary solution right now , will some up with a
|
|
better solution shortly.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Structures declared inside function
|
|
scopes were not being properly cleaned up, came across this problem while
|
|
generating debug information fixed now.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>pointers declared inside structures
|
|
were broken after the pointer fix in Version 2.1.3, now fixed.</font></font></li>
|
|
</blockquote>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed some library routines , for --model-large
|
|
.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Added whole lot of stuff for debug
|
|
information generation (DO NOT use --debug option might cause unpredictable
|
|
results).</font></font></li>
|
|
</blockquote>
|
|
|
|
<hr WIDTH="100%">
|
|
<br><b><font size=+1>Release 2.1.4</font></b>
|
|
<br>
|
|
<ul>
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Problem with parameter overlay : when
|
|
two functions with overlaid parameters were nested, the parameters of the
|
|
outer function was clobbered. This has been fixed, now the inner function
|
|
call will be lifted out and evaluated before parameters for the outer call
|
|
are assigned values.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>New optimization added (suggested by
|
|
Jean Louis VERN <jlvern@writeme.com> to prevent global variables in
|
|
near space from being assigned to registers.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Improved loop optimization, now will
|
|
keep induction variables alive after loops even if loops have more that
|
|
one exit. This makes me happy, it takes care of almost all the common loop
|
|
constructs. So unless the user is doing something really weird the induction
|
|
variables will be carried outside the loop. This also lays down the
|
|
ground work for value based optimizations, i.e. when the loop count is
|
|
known, then value of the induction variables will also be known at certain
|
|
exit points.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug in genPlus, genAnd,genXor,genOr
|
|
routines , was generating incorrect code for Far Space variable with Literal.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bugs in SDCCglue.c, was generating
|
|
-ve size for variables of size 32768 or greater.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Changed register allocator to try &
|
|
keep all local variables in 'registers' regardless of they are declared
|
|
with the register storage class or not, this will reduce the amount of
|
|
data space required by the compiler generated code.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug in SDCCmain.c , was unlinking
|
|
file preOutName before reading it (okay with POSIX , not okay with DOS).</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>David Bonnel <dbonnell@ozemail.com.au>.
|
|
fixed the following bugs</font></font></li>
|
|
|
|
<ul>
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>In SDCCicode.c at line# 1314 should
|
|
be calling valMod not valDiv.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>In line# 2728 missing a break statement
|
|
after the division case .</font></font></li>
|
|
</ul>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>David Bonnell <dbonnell@ozemail.com.au>.
|
|
also added a new option <b>--iram-size <value> . </b>
|
|
His description of it ..... (Dave speaking)</font></font></li>
|
|
|
|
<ul>
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>I added the command '-a [iram-size]'
|
|
to the linker. iram-size defaults to 128 (0x80) if it is omitted
|
|
(which is the amount of internal RAM I have on my DS5000T chip :-)</font></font></li>
|
|
</ul>
|
|
<font color="#CC0000"><font size=+1>
|
|
Anyway, if this command is given, the (new) function iramcheck() is called
|
|
after linking to check that the OSEG, ISEG, and DSEG's do not extend
|
|
past the end of internal RAM. (Internal RAM is from 0..iram_size-1).
|
|
It spits out a warning such as:</font></font>
|
|
<p><font color="#CC0000"><font size=+1>
|
|
WARNING! Segment DSEG extends past the end of internal RAM. Check
|
|
map file.</font></font>
|
|
<p><font color="#CC0000"><font size=+1> when such a problem
|
|
is detected.</font></font>
|
|
<p><font color="#CC0000"><font size=+1> Then I added a new
|
|
command-line option to SDCC, '--iram-size iram-size'. When this command
|
|
is given the linker command shown above is added to the linker command
|
|
file so that it will do the checking for internal RAM overflow.</font></font>
|
|
<br>
|
|
<li>
|
|
<font color="#CC0000"><font size=+1> BESSIERE Jerome <BESSIERE_Jerome@stna.dgac.fr>
|
|
fixed the following bugs.</font></font></li>
|
|
|
|
<ul>
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>File sdccicod.c / function operandOperation(...)</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>File sdccval.c / function valDiv(...)</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>File sdccbitv.c / function bitVectBitValue(...)</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>File sdccbitv.c / function bitVectUnSetBit(...)</font></font></li>
|
|
</ul>
|
|
</ul>
|
|
|
|
<hr WIDTH="100%">
|
|
<br><b><font size=+1>Release 2.1.3</font></b>
|
|
<br>
|
|
<ul>
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug in assembler <b>i51mch.c</b>
|
|
; <b>dot</b> operator when used in branch instructions was generating incorrect
|
|
opcode.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Enhanced Dead Code elimination, (it
|
|
was missing some ).</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Added new rules to SDCCpeeph.def
|
|
provided by Frieder <fe@lake.iup.uni-heidelberg.de></font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed pointer return bug found by David
|
|
Bonnel <dbonnell@ozemail.com.au>.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed the POINTER fiasco, I had misinterpreted
|
|
the grammar.</font></font></li>
|
|
|
|
<ul>
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>data char *p; was interpreted
|
|
as [generic pointer to char, with p in data space]. now interpreted as
|
|
pointer to character in data space with the pointer residing in unknown
|
|
space.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Updated the documentation for this.</font></font></li>
|
|
</ul>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Updated documentation to include comments
|
|
about Parameter Overlaying.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Improved type checking to generate
|
|
error message when a void type is casted to some other type</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Jean-Louis VERN (instead of sleeping
|
|
at night) has made some GREAT!! improvements to the back end for frequently
|
|
used expressions like</font></font></li>
|
|
|
|
<ul>
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>if ( x & literal) ...</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>if ( x ^ literal) ...</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>if ( x | literal) ...</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>if ( bit & x) ...</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>if ( bit | x ) ...</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>if (bit ^ x) ....</font></font></li>
|
|
</ul>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Jean-Louis VERN rewrote the _decdptr.c
|
|
routine to improve it.</font></font></li>
|
|
</ul>
|
|
|
|
<hr WIDTH="100%">
|
|
<br><b><font size=+1>Release 2.1.2</font></b>
|
|
<br>
|
|
<ul>
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Bug in genAnd (SDCCgen51.c) caused
|
|
the compiler to issue error message for some bit wise and operations.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>File _spx.c missing from source bundle.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Invalid code generated when interrupt
|
|
service routine used with external stack option.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Added --no-peep option to disable peep
|
|
hole optimization.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Added --peep-asm option to optionally
|
|
pass inline assembler code through the peephole optimizer.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed bug in _strcpy.c David Bonnell
|
|
<dbonnell@ozemail.com.au>.</font></font></li>
|
|
</ul>
|
|
|
|
<ul>
|
|
<li>
|
|
</li>
|
|
</ul>
|
|
|
|
<hr WIDTH="100%">
|
|
<br><b><font size=+1>Release 2.1.1</font></b>
|
|
<br>
|
|
<ul>
|
|
<li>
|
|
<font color="#CC0000"><font size=+1><b>bit </b>variables could not be declared
|
|
<b>extern</b>
|
|
, bug was introduces while improving type checking for bit fields in structures.</font></font></li>
|
|
</ul>
|
|
|
|
<hr WIDTH="100%">
|
|
<p><b><font size=+1>Release 2.1.0</font></b>
|
|
<p><font size=+1>A full source code release. Lots of stuff done in this
|
|
release.</font>
|
|
<br>
|
|
<ul>
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Floating point support completed (although
|
|
cannot be used in small model).</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Data flow computation enhanced to stop
|
|
flow computation of global variables when there is a call to another function.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>JeanLouis VERN added a whole lot of
|
|
optimizations to the back end.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Function return value assigned to a
|
|
bit variable was crashing the compiler.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Changed the way peep hole optimizer
|
|
rules were being included. Now it is much easier to add default rules.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Added two new pointer types "* pdata"
|
|
and "* idata" these will facilitate the following</font></font></li>
|
|
|
|
<ul>
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Optimized access to near data</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Implementation of external stack (External
|
|
stack is required if the compiler is going to be used to implement an RTOS)</font></font></li>
|
|
</ul>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Fixed problem of Compiler giving warning
|
|
when it did not find any reaching definition for a local static variable.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Added code to backed for more optimized
|
|
access to arrays, structures & unions placed in near space, now the
|
|
compiler will not use indirect addressing to fetch the data if the offset
|
|
is can be determined at compile time.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Changed the way the startup code works.
|
|
Documentation updated see section Startup for more details.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Completed implementation of external
|
|
stack. Documentation updated see section External stack.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Jean-Louis VERN added a LOT of optimizations
|
|
to the back end code generator, following is only a small list.</font></font></li>
|
|
|
|
<ul>
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>gencjne improved</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>gencmp improved</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>genand improved</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>genor improved.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>_divuint improved</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>_divuint improved.</font></font></li>
|
|
</ul>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Variables with absolute addresses now
|
|
considered as VOLATILE.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Dead Code elimination routine updated
|
|
: will not eliminate global assignments to global variables when function
|
|
call present.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Added file <b>at89S8252.h </b>to distribution
|
|
file supplied by "Michael Schmitt" <mschmitt@mainz-online.de></font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Martijn van Balen <balen@natlab.research.philips.com>.
|
|
Fixed problems in assembler and linker. Files affected are<b> asout.c</b>
|
|
and <b>lklist.c</b></font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Initialized character array variables
|
|
with no size were being generated one byte less in length.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>Access to bit fields within structures
|
|
mucho mucho improved.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#CC0000"><font size=+1>The compiler was allocating space on
|
|
the stack for local variables (for reentrant functions) even when not needed,
|
|
this has been fixed, the compiler will not allocate space on the stack
|
|
for local variables if they are assigned to registers.</font></font></li>
|
|
</ul>
|
|
|
|
<hr WIDTH="100%">
|
|
<br><b><font size=+1>Release 2.0.21</font></b>
|
|
<br>
|
|
<blockquote>
|
|
<li>
|
|
<font size=+1><font color="#CC0000">Enhancement made to unsigned long &
|
|
integer division by </font><font color="#FF0000">Martijn van Balen <balen@natlab.research.philips.com></font></font></li>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1> _gptrget.c & _gptrput.c made
|
|
register bank independent by Martijn van Balen <balen@natlab.research.philips.com>.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>sdccbuil.sh script fixed by Subject:
|
|
Markus Mathes <mathes@prp.physik.tu-darmstadt.de></font></font></li>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>Martijn van Balen <balen@natlab.research.philips.com>
|
|
found some problems with post & pre increment of pointer variables
|
|
, these are fixed.</font></font></li>
|
|
</blockquote>
|
|
|
|
<hr WIDTH="100%">
|
|
<br><b><font size=+1>Release 2.0.20</font></b>
|
|
<p><font size=+1>Mostly enhancements in this release. Some bug fixes by
|
|
Jean Louis.</font>
|
|
<blockquote>
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>Enhanced loop optimization (induction
|
|
variables), will generate more compact code for simple loops</font></font></li>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>Enhanced some aspects of basic block
|
|
processing.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>Added a couple more MCU header files.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>Jean Louis made some enhancements in
|
|
SDCCgen51.c for better code generation.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>Jean Louis also fixed some bugs in
|
|
the back end .</font></font></li>
|
|
</blockquote>
|
|
|
|
<hr WIDTH="100%">
|
|
<br><b><font size=+1>Release 2.0.19</font></b>
|
|
<br>
|
|
<blockquote>
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>Assignment of array variable to a pointer
|
|
sometimes did not generate code.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>File containing intialised variables
|
|
ONLY with NO functions caused the compiler to crash</font></font></li>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>Initialising global volatile variables
|
|
caused the compiler to fail.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>Generated incorrect code when bit variables
|
|
were modified and subsequently used in a conditional statement.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>Added 3 more header files for Atmel
|
|
MCUs , provided by Bernd Bartmann (Bernd.Bartmann@picard.isdn.cs.tu-berlin.de)</font></font></li>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>Added a lot of peephole optimization
|
|
rules, some suggested by Daniel Drotos <drdani@mazsola.iit.uni-miskolc.hu></font></font></li>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>Added check to make sure functions
|
|
do not return 'bit'.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>Jean Louis-VERN (jlvern@writeme.com)
|
|
fixed bug for divide with literal in his code.</font></font></li>
|
|
</blockquote>
|
|
</blockquote>
|
|
|
|
<ul>
|
|
<hr WIDTH="100%">
|
|
<br><b><font size=+1>Release 2.0.18</font></b>
|
|
<br>
|
|
<ul>
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>Function prototype problem when parameter
|
|
name in the prototype was the same as a local variables.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>Added header files for Atmel AT89x51
|
|
& AT89X52 provided by : Bernd Bartmann (Bernd.Bartmann@picard.isdn.cs.tu-berlin.de)</font></font></li>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>Jean Louis-VERN (jlvern@writeme.com)
|
|
has made </font><font size=+2>substantial improvements</font><font size=+1>
|
|
to the Back-end code generation for </font><font size=+2>shift operations
|
|
</font><font size=+1>and
|
|
</font><font size=+2>multiplication.</font></font></li>
|
|
</ul>
|
|
</ul>
|
|
|
|
<dl>
|
|
<dl>
|
|
<hr WIDTH="100%">
|
|
<br><b><font size=+1>Release 2.0.17</font></b></dl>
|
|
</dl>
|
|
|
|
<dl>
|
|
<ul>
|
|
<ul>
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>Empty if body with non-emtpy else body
|
|
cause compiler to give error message. Patch provided by Martijn van Balen
|
|
<balen@natlab.research.philips.com></font></font></li>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>Loop optimizer missed induction variables
|
|
;</font></font></li>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>Added option <b>--main-return</b> ,
|
|
will generate a '<b>ret</b>' instead of '<b>ljmp .</b>' when this option
|
|
is used.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>Add support for user defined startup
|
|
code.</font></font></li>
|
|
</ul>
|
|
</ul>
|
|
|
|
<dl>
|
|
<hr WIDTH="100%">
|
|
<ul>
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>generating incorrect assembler code
|
|
(new line missing), for '<i>long</i>' variables initialization when defined
|
|
in '<i>code'</i> space.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1><i>aslink</i> occasionally core dumped,
|
|
after it finished processing. (patch provided by Eric Norum <eric@skatter.USask.Ca>
|
|
)</font></font></li>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>comparing <i>pointers with literals
|
|
</i>,
|
|
e.g. ptr == NULL gave error message, (NULL had to be explicitly cast to
|
|
the pointer type)</font></font></li>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>assigning <b>signed char</b> values
|
|
to <b>sfr</b>s generated duplicate code.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>definitions for CHAR_MIN, INT_MAX &
|
|
LONG_MAX incorrect in limits.h</font></font></li>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>some more patches from Eric Norum <eric@skatter.USask.Ca>
|
|
his description of the patches.</font></font></li>
|
|
|
|
<ul>
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>1) asxxxx/lkmain.c:181</font></font></li>
|
|
|
|
<br><font color="#FF0000"><font size=+1> startp->f_type is
|
|
an integer variable and so should not be</font></font>
|
|
<br><font color="#FF0000"><font size=+1> compared with NULL.</font></font>
|
|
<p><font color="#FF0000"><font size=+1>2) asxxxx/lkmain.c:195</font></font>
|
|
<br><font color="#FF0000"><font size=+1> *ip is a character
|
|
variable and so should not be</font></font>
|
|
<br><font color="#FF0000"><font size=+1> compared with NULL.</font></font>
|
|
<p><font color="#FF0000"><font size=+1>3) asxxxx/lkmain.c:717</font></font>
|
|
<br><font color="#FF0000"><font size=+1> ctype[c] is a character
|
|
variable so the expression (ctype[c] != ILL)</font></font>
|
|
<br><font color="#FF0000"><font size=+1> is always true on
|
|
machines where char variables are signed.</font></font>
|
|
<p><font color="#FF0000"><font size=+1>4) SDCCmain.c:780</font></font>
|
|
<br><font color="#FF0000"><font size=+1> The preprocessor output
|
|
file was left in the temporary directory.</font></font>
|
|
<br> </ul>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1> volatile variables when used
|
|
as loop induction variables caused the compiler to crash.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>compiler generated '<b>char * idata
|
|
icp</b>' as a generic pointer instead of 1 byte pointer.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>link file problem, when linking multiple
|
|
files together the compiler sometimes generated a bad file name.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>library function _<b>atol.c </b>had
|
|
the function <b>main</b> in it.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>Incorrect code generated left shift
|
|
of <b>one byte</b> variables <b>'rl'</b> should be <b>'rlc' </b>. Patch
|
|
provided by : Jean-Louis VERN <jlvern@writeme.com></font></font></li>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>Bug in <b>./cpp/cpplib.c </b>. Patch
|
|
provided by :Martijn van Balen <balen@natlab.research.philips.com></font></font></li>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>Consecutive <b>'if'</b> statements
|
|
sometimes caused the compiler to crash. This bug was a fairly serious.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>Incorrect code generated right shift
|
|
of <b>long variables</b> variables <b>'rlc'</b> should be <b>'rrc' </b>.
|
|
Patch provided by : Jean-Louis VERN <jlvern@writeme.com></font></font></li>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>Xor, And and Or operation with bit
|
|
variable & non-bit variable generated incomplete code.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>Expression folding was too aggresive,
|
|
was corrupting parameters in certain situations.</font></font></li>
|
|
|
|
<li>
|
|
<font color="#FF0000"><font size=+1>Function prototypes declared with parameter
|
|
names , occasionally caused problems.</font></font></li>
|
|
</ul>
|
|
</dl>
|
|
|
|
<dl>
|
|
<ul>
|
|
<li>
|
|
</li>
|
|
</ul>
|
|
</dl>
|
|
</dl>
|
|
|
|
</body>
|
|
</html>
|