1 <!doctype html public "-//w3c//dtd html 4.0 transitional//en">
4 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
5 <meta name="GENERATOR" content="Mozilla/4.7 [en] (X11; I; Linux 2.2.12-20 i686) [Netscape]">
8 <b><font size=+2>Enhancements and Bug fixes.</font></b>
12 <br><b>Release 2.1.9G</b>
15 <font color="#CC0000">Applied several patches provided by "Anton
16 Voloshin" <vav@isv.ru> mainly to SDCCglue.c, SDCCmain.c & sdcdb/cmd.c</font></li>
19 <font color="#CC0000">First parameter of struct member function pointer
20 not passed in register.</font></li>
23 <font color="#CC0000">Parameter passing problem if first parameter of a
24 routine passed as second parm of another routine, vice versa. This bug
25 would caused some of the library routines to fail.</font></li>
28 <font color="#CC0000">Address of structure member passed as parameter caused
32 <font color="#CC0000">#pragma callee-saves did not always work.</font></li>
35 <font color="#CC0000">Furthur bug fix for live range computation within
39 <font color="#CC0000">Register 'b' could be clobbered when there was '*',
40 '/' or '%' operation for generic pointers.</font></li>
43 <font color="#CC0000">initialisation for pointers to structure elements
44 in code space generated errors.</font></li>
47 <font color="#CC0000">Debugger info lost when multiple files were linked
51 <font color="#CC0000">Fixed buf in printf_large.c(vsprintf called with wrong parms)
55 <font color="#CC0000">"extern" variables when spilt did not allocate spill locations
56 . i.e. "sloc" undefined error.
60 <font color="#CC0000">Added optimization for PUSH. "xdata" variables do not need to be
61 assigned to temps to be pushed.
65 <font color="#CC0000">Fixed aliasing problem where some pointer sub expressions
66 were carried across basic blocks .</font></li>
69 <font color="#CC0000">Upgraded to version 0.2.36 of ucsim .</font></li>
72 <font color="#CC0000">Added new optimization within basic blocks pointer
73 set values will replace get pointer values within a basic block. (across
74 basic blocks is a little bit complex will have to think about it some more).</font></li>
76 <br><font color="#CC0000">which in plain english means.</font>
77 <br><font color="#CC0000"> a->b
79 <br><font color="#CC0000"> putchar(a->b);</font>
80 <br><font color="#CC0000">will come..</font>
81 <br><font color="#CC0000"> a->b
83 <br><font color="#CC0000">
84 putchar(10);</font></ul>
89 <br><b>Release 2.1.9F</b>
92 <font color="#CC0000">pointers passed to functions as parameters are removed
93 from cse list.</font></li>
96 <font color="#CC0000">live range computation for variables inside loops
100 <font color="#CC0000">upgraded ucsim to latest release 0.2.31</font></li>
103 <font color="#CC0000">loop invariant bug fix for (global variables assigned
104 constant values inside a loop)</font></li>
107 <font color="#CC0000">Applied patch provided by "Anton Voloshin"
108 <vav@isv.ru> rel files put into separate lines in the .lnk file.</font></li>
111 <font color="#CC0000">union of structures caused compiler to generate incorrect
112 code for member access.</font></li>
115 <font color="#CC0000">added patch to vprintf.c to null terminate output
116 string. BESSIERE_Jerome@stna.dgac.fr (BESSIERE Jerome)</font></li>
119 <font color="#CC0000">Debugger had problem with structures/unions on stack</font></li>
122 <font color="#CC0000">Debugger will now stop when simulator stops even
123 when break point not hit.</font></li>
126 <font color="#CC0000">Debugger will display simulators "startup message",
127 this makes it a clearer to the user that the debugger is actually piggy
128 backing on top of the simulator.</font></li>
131 <font color="#CC0000">Applied patch to assembler/linker some names were
132 getting truncated @ 8 characters . patch by "Anton Voloshin" <vav@isv.ru></font></li>
135 <font color="#CC0000">_gptrput.c was leaving a byte on stack if unknown
136 storage class.</font></li>
139 <font color="#CC0000">parameter passing was incorrect for reentrant functions
140 when prototype declared without parameter name.</font></li>
146 <br><b><font size=+1>Release 2.1.9E</font></b>
149 <font color="#CC0000">"remat " was not being cleared for global variables.</font></li>
152 <font color="#CC0000">stack offset of a variable computed incorrectly in
153 some situations.</font></li>
156 <font color="#CC0000">Applied patch for floating point routine provided
157 by<font size=+1> </font>Wojciech Zabolotny <wzab@ise.pw.edu.pl></font></li>
160 <font color="#CC0000">Force allocation of local variable if address taken
161 (even if not initialised)</font></li>
164 <font color="#CC0000">Fixed loop reversal bug .</font></li>
167 <font color="#CC0000">Fixed another bug in register allocator , long variables
168 can be printfed now.</font></li>
171 <font color="#CC0000">DEBUGGER can now print values on stack and aggregates.</font></li>
174 <font color="#CC0000">Upgraded to 0.2.26 of ucsim.</font></li>
180 <br><b><font size=+1>Release 2.1.9D</font></b>
183 <font color="#CC0000">Fixed loop optimization bug was treating variables
184 defined twice as loop induction.</font></li>
187 <font color="#CC0000">Fixed loop optimization constrained induction variable
188 detection.</font></li>
191 <font color="#CC0000">Fixed bug in some floating point routines (fix provided
192 by Wojciech Zabolotny <wzab@ise.pw.edu.pl>)</font></li>
195 <font color="#CC0000">Fixed code generation bug for return literal floating
199 <font color="#CC0000">Fixed register packing was not moving return value
200 under certain conditions.</font></li>
203 <font color="#CC0000">Improved error recovery for undefined symbols.</font></li>
209 <br><b><font size=+2>Release 2.1.9C</font></b>
212 <font color="#CC0000">Fixed bug with register allocation, effected mostly
213 large routines compiled using the --model-large option.</font></li>
216 <font color="#CC0000">Fixed bug in array of structures dereferncing.</font></li>
219 <font color="#CC0000">Simplified the intermediate code generattion , removed
220 some tree nodes. The parser will not generate nodes with structure derefs,
221 and the operators +=,-= ..etc will be changed at parse time, this creates
222 a simplififed parse tree.</font></li>
225 <font color="#CC0000">Upgraded to latest version of "gc", compile problems
226 on Redhat 6.0 should be fixed.</font></li>
229 <font color="#CC0000">Fixed passing simulator parameters from the debugger
230 command line.</font></li>
233 <font color="#CC0000">Fixed problem with the floating point routines.</font></li>
239 <br><b><font size=+1>Release 2.1.9B</font></b>
242 <font color="#CC0000"><font size=+1>Fixed pointer access and array reference
243 bug introduced in the previous version.</font></font></li>
246 <font color="#CC0000"><font size=+1>integrated ucsim.0.2.25</font></font></li>
249 <font color="#CC0000"><font size=+1>Fixed bug for code not generated for
250 global pointers assigned to address of array element.</font></font></li>
253 <font color="#CC0000"><font size=+1>Fixed one more bug in live range computation.</font></font></li>
256 <font color="#CC0000"><font size=+1>Fixed bug in register allocator , it
257 was overwriting computed liverange values.</font></font></li>
261 <br><b><font size=+1>Release 2.1.9A</font></b>
264 <font color="#CC0000"><font size=+1>Fixed bug in common subexpression elimination,
265 problem was found when a local variable was assigned values more than once
266 in a basic block.</font></font></li>
269 <font color="#CC0000"><font size=+1>Added warning when a "void" object
270 is cast to a non-void object.</font></font></li>
273 <font color="#CC0000"><font size=+1>Added warning when a non-pointer type
274 is cast to a _generic pointer.</font></font></li>
277 <font color="#CC0000"><font size=+1>Added a peephole optimization
278 rule to remove some moves.</font></font></li>
281 <font color="#CC0000"><font size=+1>Fixed problem in register packing ,
282 registers assigned to parameters were not being saved on the stack.</font></font></li>
285 <font color="#CC0000"><font size=+1>Bug in loop inductions, the induction
286 variable detection was not correctly replacing all references.</font></font></li>
289 <font color="#CC0000"><font size=+1>Merged bug fixes provided by <i>Wojciech
290 Stryjewski <wstryj1@tiger.lsu.edu to></i> SDCCgen51.c</font></font></li>
293 <font color="#CC0000"><font size=+1>Local variable treated as invariant
294 even when address is taken.</font></font></li>
297 <font color="#CC0000"><font size=+1>Fixed Parameter problem for functions
298 with empty bodies.</font></font></li>
301 <font color="#CC0000"><font size=+1>Fixed problem with array dereferncing
302 when array of pointers.</font></font></li>
305 <hr WIDTH="100%"></ul>
308 <blockquote><b><font size=+1>Release 2.1.9</font></b>
311 <font color="#CC0000"><font size=+1>Integrated new simulator from Daniel
312 "ucsim-0.20.xx"</font></font></li>
315 <font color="#CC0000"><font size=+1>.cdb file will be created always, and
316 will contain global variables & function entry/extis information always.
317 This will facilitate debuggers especially NoICE.</font></font></li>
320 <font color="#CC0000"><font size=+1>Fixed bug when using typedefed types
321 in a structure.</font></font></li>
324 <font color="#CC0000"><font size=+1>Fixed aliasing bug in the loop optimizer,
325 when a global array is used in a loop it should not be treated as an invariant
326 if there are function calls in the loop.</font></font></li>
329 <font color="#CC0000"><font size=+1>Fixed problem with register allocation,
330 this was causing some of the "long" routines to fail.</font></font></li>
333 <font color="#CC0000"><font size=+1>Fixed problem of clobbering value of
334 _bp.</font></font></li>
337 <font color="#CC0000"><font size=+1>Fixed problem of clobbering acc when
338 a long variable is the first argument to a reentrant function.</font></font></li>
341 <font color="#CC0000"><font size=+1>Fixed a peephole optimizer problem,
342 when it was changing the ljmp to a sjmp in a jump-table.</font></font></li>
345 <font color="#CC0000"><font size=+1>Enhanced the initialization routines
346 to support initialization with '&' operations.</font></font></li>
352 <br><b><font size=+1>Release 2.1.8</font></b>
355 <font color="#CC0000"><font size=+1>Void function returning value check
356 was not working properly.(fixed)</font></font></li>
359 <font color="#CC0000"><font size=+1>Assigning 'void' values to variables
360 will generate warning.</font></font></li>
363 <font color="#CC0000"><font size=+1>Improved register allocation to use
364 "acc" , this will improve code generation , but for this register color
365 is severely restricted, will gradually work on improving this. This reduces
366 the redundant register moved drastically (once totally implemented)</font></font></li>
369 <font color="#CC0000"><font size=+1>Added some peephole rules eliminate
370 jump to jumps.</font></font></li>
373 <font color="#CC0000"><font size=+1>Bug in SDCCgen51.c when using a bit
374 variable (locally defined) in an if statement.</font></font></li>
377 <font color="#CC0000"><font size=+1>Literal values being cast to pointers
378 was not working.</font></font></li>
381 <font color="#CC0000"><font size=+1>'volatile' arrtibute for structure/union
382 elements were bieng ignored. Now we can selectively declare structure elements
383 to be volatile.</font></font></li>
386 <font color="#CC0000"><font size=+1>Did some profiling to improve performance,
387 changed peephole optimizer a little with profiler feedback.</font></font></li>
390 <font color="#CC0000"><font size=+1>Was generating incorrect "cjne" code
391 under some situations.</font></font></li>
394 <font color="#CC0000"><font size=+1>Improved data flow computation.</font></font></li>
397 <font color="#CC0000"><font size=+1>Fixed bug in geniCodeCast for floating
398 point conversions.</font></font></li>
401 <font color="#CC0000"><font size=+1>Fixed bug in modulong routine found
402 by Béla Török <aseht@ms1.kssg.ch></font></font></li>
405 <font color="#CC0000"><font size=+1>Fixed bug for long shift left found
406 by Béla Török <aseht@ms1.kssg.ch></font></font></li>
409 <font color="#CC0000"><font size=+1>Fixed bug with register allocator ,
410 was marking variables as rematerializable too aggresively.</font></font></li>
413 <font color="#CC0000"><font size=+1>Added --version option.</font></font></li>
416 <font color="#CC0000"><font size=+1>Fixed problem of compiling source files
417 not in current directory.</font></font></li>
420 <font color="#CC0000"><font size=+1>Fixed a bug in a bitvector routine
421 (bitVectResize)</font></font></li>
424 <font color="#CC0000"><font size=+1>Added error message when "continue/break"
425 are out of context.</font></font></li>
428 <font color="#CC0000"><font size=+1>Fixed bug in error checking for uninitialised
429 local variables.</font></font></li>
432 <font color="#CC0000"><font size=+1>Fixed bug in code generation for not
433 (!) operation.</font></font></li>
436 <font color="#CC0000"><font size=+1>Fixed bug in live range computation
437 when intervenening unreachable block is present.</font></font></li>
440 <font color="#CC0000"><font size=+1>Changed register saving scheme, bank
441 will be saved only when called from a interrupt service routine.</font></font></li>
444 <font color="#CC0000"><font size=+1>Fixed bug with >> and << with
445 unknown shift count.</font></font></li>
448 <font color="#CC0000"><font size=+1>The fix to the bit vector exposed some
449 problem with the register allocation, fixed now.</font></font></li>
452 <font color="#CC0000"><font size=+1>Added an extra heuristic for register
453 spilling, now the spilling will a lot lower than before.</font></font></li>
456 <font color="#CC0000"><font size=+1>Added some more optimizations for register
457 packing.</font></font></li>
460 <font color="#CC0000"><font size=+1>Added a bunch of preprocessor options
461 see command line options in the documentation for details.</font></font></li>
464 <font color="#CC0000"><font size=+1>Some cosmetics like timestamp in .asm
465 in addition to Version Number.</font></font></li>
468 <font color="#CC0000"><font size=+1>fixed another bug with live range computation.</font></font></li>
471 <font color="#CC0000"><font size=+1>Automatic static variables will not
472 be assigned to registers.</font></font></li>
475 <font color="#CC0000"><font size=+1>The parameter name mangling a little
476 so that it gives the warnings/errors with the correct name, also required
477 for debugger.</font></font></li>
480 <font color="#CC0000"><font size=+1>Jean Louis fixed some bugs with shifting
481 "long" variables.</font></font></li>
484 <font color="#CC0000"><font size=+1>Fixed bug of access of local bit variables
485 when compiling with --model-large</font></font></li>
488 <font color="#CC0000"><font size=+1>Fixed two bugs in Register allocator.</font></font></li>
491 <font color="#CC0000"><font size=+1>Added fix to peephole optimizer rule
492 matching , fixed provided by Frieder.</font></font></li>
495 <font color="#CC0000"><font size=+1>"Mark O'Farrell" <ofarrell@haq.com.au>
496 added segment type to the segment definition.</font></font></li>
499 <font color="#CC0000"><font size=+1>"Mark O'Farrell" <ofarrell@haq.com.au>
500 added option to start stack after the data segment --stack-after-data (see
501 documentation)</font></font></li>
504 <font color="#CC0000"><font size=+1>Changed the computation for default
505 stack location, now if all four banks are used the stack will be placed
506 after the data segment (--stack-after-data), so as not to clobber the bit
507 segment (this should make Daniel Drotos happy:).</font></font></li>
510 <font color="#CC0000"><font size=+1>Compiler will no longer crash when
511 an uninitialised local variable is detected.</font></font></li>
514 <font color="#CC0000"><font size=+1>Fixed bug for bad code generation for
515 anl,xor & or when operand is on stack .</font></font></li>
518 <font color="#CC0000"><font size=+1>Fixed bug for side effecting parameters
519 when calling a reentrant function.</font></font></li>
522 <font color="#CC0000"><font size=+1>Improved optimization for ++ &
523 -- operation when operand is on stack.</font></font></li>
526 <font color="#CC0000"><font size=+1>Was STILL saving entire register bank
527 when calling function with different register bank from non ISR function.</font></font></li>
530 <font color="#CC0000"><font size=+1>Changed register saveing for ISR functions
531 not using register bank (see documentation [Interrupt Service Routines])</font></font></li>
534 <font color="#CC0000"><font size=+1>Josef Wolf <jw@raven.inka.de> provided
535 a set of serial routines which do not use the external ram (ser_ir.c),
536 included these as libraries.</font></font></li>
539 <font color="#CC0000"><font size=+1>PSW was not being saved for ISRs with
540 no register bank specification.</font></font></li>
543 <font color="#CC0000"><font size=+1>Integrated Daniel's simulator with
544 the compiler source distribution.</font></font></li>
547 <font color="#CC0000"><font size=+1>Added reduced "printf" routine it works
548 but is very resource intensive.</font></font></li>
551 <font color="#CC0000"><font size=+1>Certain complex pointer declarations
552 were not being handled correctly.</font></font></li>
555 <font color="#CC0000"><font size=+1>switch statements with empty bodies
556 were causing the compiler to crash.</font></font></li>
559 <font color="#CC0000"><font size=+1>sizeof union object computed incorrectly.</font></font></li>
562 <font color="#CC0000"><font size=+1>union element when passed as parameter
563 to a function generated incorrect code.</font></font></li>
566 <font color="#CC0000"><font size=+1>Martijn van Balen <balen@natlab.research.philips.com>
567 provided a complete set of printf routines including sprintf.</font></font></li>
570 <font color="#CC0000"><font size=+1>Fixed bug when union member is a pointer
571 and is used on the right side of an assignment.</font></font></li>
574 <font color="#CC0000"><font size=+1>Improved register allocation
575 for arrays, structure & union members in data space will no longer
576 be spilt.</font></font></li>
579 <font color="#CC0000"><font size=+1>Some optimizations for pointer access
580 had got clobbered put them back.</font></font></li>
583 <font color="#CC0000"><font size=+1>Fixed bug for right shifting signed
584 quantity by zero.</font></font></li>
587 <font color="#CC0000"><font size=+1>Constant propagation had problem when
588 long variables were used in division.</font></font></li>
591 <font color="#CC0000"><font size=+1>Fixed bug in register allocator on
592 rare situations it saved wrong live ranges.</font></font></li>
595 <font color="#CC0000"><font size=+1>Fixed Bug with Backend (gen51.c) incorrect
596 code was generated when far space variable assigned o variable in far space.</font></font></li>
599 <font color="#CC0000"><font size=+1>Fixed problem with loop invariant processing,
600 was not taking into consideration when address or pointer was passed as
601 parameter to a function.</font></font></li>
604 <font color="#CC0000"><font size=+1>Added --help & -h option.</font></font></li>
607 <font color="#CC0000"><font size=+1>Added the peephole optimization rules
608 provided by Frieder <fe@lake.iup.uni-heidelberg.de></font></font></li>
611 <font color="#CC0000"><font size=+1>Function prototypes without parameter
612 names were occasionally causing problems.</font></font></li>
615 <font color="#CC0000"><font size=+1>Fixed problem with _spx inc/dec when
616 using xternal stack.</font></font></li>
619 <font color="#CC0000"><font size=+1>Register allocation bug</font></font></li>
622 <font color="#CC0000"><font size=+1>Addition of constant to generic pointer
623 was causing problems sometimes.</font></font></li>
626 <font color="#CC0000"><font size=+1>Improved register allocation some more.</font></font></li>
629 <font color="#CC0000"><font size=+1>Fixed bug in live range analysis (for
630 some complex contro flow situations.</font></font></li>
633 <font color="#CC0000"><font size=+1>Fixed bug of 'b' getting clobbered
634 in some left & right shift operations.</font></font></li>
637 <font color="#CC0000"><font size=+1>Added --callee-saves (documentation
638 updated)</font></font></li>
641 <font color="#CC0000"><font size=+1>Fixed bug in hTabDeleteItem() in SDCChasht.c
642 (exposed during debugger development)</font></font></li>
645 <font color="#CC0000"><font size=+1>Fixed bug in grammar .. to allow absolute
646 address for local "bit" variables.</font></font></li>
649 <font color="#CC0000"><font size=+1>Added #pragma CALLEE-SAVES (same effect
650 as --calle-saves)</font></font></li>
653 <font color="#CC0000"><font size=+1>Added #pragma EXCLUDE (see docs)</font></font></li>
656 <font color="#CC0000"><font size=+1>Fixed problem xrl generating incorrect
657 code.</font></font></li>
660 <font color="#CC0000"><font size=+1>Yet another problem in register allocator
661 fixed.</font></font></li>
664 <font color="#CC0000"><font size=+1>Fixed a bug with dataflow computation,
665 was computing pointer kills incorrectly.</font></font></li>
668 <font color="#CC0000"><font size=+1>Added loop reversal.</font></font></li>
671 <font color="#CC0000"><font size=+1>Fixed bug in structure declaration</font></font></li>
674 <font color="#CC0000"><font size=+1>Fixed floating point routines</font></font></li>
677 <font color="#CC0000"><font size=+1>Fixed parsing problem for LONG hex
678 constants</font></font></li>
681 <font color="#CC0000"><font size=+1>Fixed bug to allow local variables
682 to be declared in 'code' space.</font></font></li>
685 <font color="#CC0000"><font size=+1>Fixed bug in code generation for floating
686 point .</font></font></li>
689 <font color="#CC0000"><font size=+1>Parameters access was incorrect when
690 callee-saves && reentrant.</font></font></li>
693 <font color="#CC0000"><font size=+1>Fixed bug in hashTable routine.</font></font></li>
696 <font color="#CC0000"><font size=+1>Fixed bug when string initialisers
697 are used for char arrays with bounds.</font></font></li>
700 <font color="#CC0000"><font size=+1>Was generating incorrect code when
701 options --model-large && --stack-auto were used together</font></font></li>
704 <font color="#CC0000"><font size=+1>Replaced 32bit multiplication routine
705 with JeanLouis VERN's much better routine.</font></font></li>
708 <font color="#CC0000"><font size=+1>Fixed problem with loop-reversing</font></font></li>
711 <font color="#CC0000"><font size=+1>Introduced parameter passing using
712 registers.</font></font></li>
715 <font color="#CC0000"><font size=+1>Applied improvements/cleanups supplied
716 by Larry Dolittle.</font></font></li>
719 <font color="#CC0000"><font size=+1>Moved the variable substitution by
720 register equivalent to earlier phase , this generates much more optimized
721 code.</font></font></li>
724 <font color="#CC0000"><font size=+1>Compiler crashed when first parameter
725 was declared "const"</font></font></li>
728 <font color="#CC0000"><font size=+1>Assembler generated bad opcode for
729 "djnz" when the "." operator was used.</font></font></li>
735 <br><b><font size=+1>Release 2.1.7</font></b>
738 <font color="#CC0000"><font size=+1>Fixed a bug in the DEF-USE chaining
739 algorithm , was keeping some dead DEFs alive in the DEF bit vector of a
740 symbol.</font></font></li>
743 <font color="#CC0000"><font size=+1>Fixed bug with "(null)" operand generated
744 in rare situations.</font></font></li>
747 <font color="#CC0000"><font size=+1> Trefor <Trefor@magera.freeserve.co.uk>
748 did some more clean up.</font></font></li>
751 <font color="#CC0000"><font size=+1>Fixed bug that was introduced with
752 '&' with a literal.</font></font></li>
755 <font color="#CC0000"><font size=+1>Added alternate serial package provided
756 by "Wolfgang Esslinger "<wolfgang@WiredMinds.com> in ./sdcc51lib/_ser.c
757 (documentation updated)</font></font></li>
760 <font color="#CC0000"><font size=+1>Added Header file sab80515.h
761 provided by Béla Török <aseht@ms1.kssg.ch></font></font></li>
764 <font color="#CC0000"><font size=+1>Had made flow computation for global
765 variables too restrictive, now constant propagation will be allowed with
766 global variables.</font></font></li>
772 <br><b><font size=+1>Release 2.1.6</font></b>
776 <font color="#CC0000"><font size=+1>Fixed bug in the routines <b>_*2fs.c
778 variable 'sign' should be declared as 'long'.</font></font></li>
781 <font color="#CC0000"><font size=+1>Included _char2fs in libfloat.lib</font></font></li>
784 <font color="#CC0000"><font size=+1>Fixed register allocator bug
785 for allocating pointers (found by "Dr. Ed Croson" <soarebc@internetcds.com>).</font></font></li>
788 <font color="#CC0000"><font size=+1>Furthur loop induction variable detection
789 improvement.</font></font></li>
792 <font color="#CC0000"><font size=+1>Changed loop induction detection so
793 that it does not treat global variables as induction any more, this saves
794 some code, since assignments to global variables cannot be easily eliminated.</font></font></li>
797 <font color="#CC0000"><font size=+1>Fixed problem of __sdcc_program_startup
798 being out of range when large amount of initialization code is present.</font></font></li>
801 <font color="#CC0000"><font size=+1>Fixed bug with function returning pointers.</font></font></li>
804 <font color="#CC0000"><font size=+1>Changed register allocation to aggressively
805 allocate local variables to registers, users will see a vast improvement
806 in the generated code, not only in terms of speed but also in terms
807 of data space utilization. Previously if there were multiple definitions
808 for a local variable flowing into a basic block the compiler would allocate
809 space for the variable, now it will allocate space only if it runs out
810 of registers.</font></font></li>
813 <font color="#CC0000"><font size=+1>Jean-Louis VERN (jlvern@<writeme.com>)
814 has done some more enhancements to the code generator ..... his comments.</font></font></li>
818 <font color="#CC0000"><font size=+1>I did some light improvement s:</font></font></li>
820 <br><font color="#CC0000"><font size=+1>
821 - increment 16&32bits</font></font>
822 <br><font color="#CC0000"><font size=+1>
823 - decrement 16&32bits</font></font>
824 <br><font color="#CC0000"><font size=+1>
825 - assignment with literal</font></font>
826 <br><font color="#CC0000"><font size=+1>
827 - return with literal</font></font>
828 <br><font color="#CC0000"><font size=+1>and some cosmetics before optimizing
829 mult and div...*</font></font></blockquote>
832 <font color="#CC0000"><font size=+1> "BESSIERE Jerome" <BESSIERE_Jerome@stna.dgac.fr>
833 made a lot of improvements to the support routines, these include reducing
834 some memory leaks.. here are his comments.</font></font></li>
838 <font color="#CC0000"><font size=+1>//* Incorrect call of werror(E_OUT_OF_MEM,...);</font></font></li>
840 <br><font color="#CC0000"><font size=+1>//* 1-a In file SDCCBBlock.c /
841 function iCodeBreakDown (...)</font></font>
842 <br><font color="#CC0000"><font size=+1>//* 1-b In file SDCChasht.c / function
843 newHashTable(...)</font></font>
844 <br><font color="#CC0000"><font size=+1>//* 1-c In file SDCCmain.c / function
845 parseCmdLine(...)</font></font>
847 <font color="#CC0000"><font size=+1>//* Sometime the compiler crash due
848 to compilation error</font></font></li>
850 <br><font color="#CC0000"><font size=+1>//* In file SDCCast.c / function
851 createFunction(...)</font></font>
853 <font color="#CC0000"><font size=+1>//* Sometime SDCC access not allocated
854 memory</font></font></li>
856 <br><font color="#CC0000"><font size=+1>//* In file SDCChasht.c / function
857 hTabSearch(...)</font></font>
859 <font color="#CC0000"><font size=+1>/* Many and many memory leak when not
860 using CYGWIN32</font></font></li>
862 <br><font color="#CC0000"><font size=+1>//* and garblage collector
863 (I'm using MS VC++ 6.0 and WIN32)</font></font>
864 <br><font color="#CC0000"><font size=+1>//* specially in peepHole function
865 consuming Mo and Mo</font></font>
866 <br><font color="#CC0000"><font size=+1>//* even on compiling small function</font></font>
867 <br><font color="#CC0000"><font size=+1>//* I created a new function in
868 file SDCChasht.c for deleting an hTab</font></font>
869 <br><font color="#CC0000"><font size=+1>//* It Reduces memory leaks</font></font></blockquote>
872 <font color="#CC0000"><font size=+1>"Salvador Eduardo Tropea \(SET\)" <salvador@inti.gov.ar>
873 provided patches required to compile the system using DJGPP, the executables
874 produced can run on plain DOS. He has also created a <b>readme.dj</b> file
875 for those who want to compile using DJGPP.</font></font></li>
878 <font color="#CC0000"><font size=+1>Added code to issue warnings if something
879 is compared to / assigned a literal value which is greater than what the
880 variable can hold.</font></font></li>
883 <font color="#CC0000"><font size=+1>Changed the data/space extended message
884 to <b>info </b>, since this not really a warning message.</font></font></li>
887 <font color="#CC0000"><font size=+1>Added routine auto baud, for automatic
888 baud rate detection , adapted from Paul Stoffregen's <paul@ece.orst.edu>
889 autobaud.asm</font></font></li>
892 <font color="#CC0000"><font size=+1>Was not doing check for constants in
893 case for ++/--, i.e. a variable declared as const could be incremented
894 or decremented</font></font></li>
897 <font color="#CC0000"><font size=+1>Fixed bug when setting & fetching
898 data from far space .</font></font></li>
901 <font color="#CC0000"><font size=+1>Added bunch of peephole optimization
902 rules.</font></font></li>
905 <font color="#CC0000"><font size=+1>Trefor@magera.freeserve.co.uk. Updated
906 the build script to give a choice to compile the libraries as large model
907 or small model.</font></font></li>
910 <font color="#CC0000"><font size=+1>Trefor also got rid of those annoying
911 warnings when compiling with egcs ( braces about ambiguous 'else')</font></font></li>
914 <font color="#CC0000"><font size=+1>Added some heuristics in constant folding
915 routine , to prevent pointer live ranges from becoming too long, this was
916 causing some avoidable spill code to be generated.</font></font></li>
919 <font color="#CC0000"><font size=+1>Added support for ANSI routines <b>setjmp</b>
920 and <b>longjmp. </b>Documentation updated.</font></font></li>
923 <font color="#CC0000"><font size=+1>Was generating code for unreachable
924 basic blocks ... now will not generate code for unreachable code... will
925 issue a warning.</font></font></li>
928 <font color="#CC0000"><font size=+1>Was generating incorrect code when
929 adding values to generic pointers (some times).</font></font></li>
932 <font color="#CC0000"><font size=+1>Improved bitwise '&' operation
933 a little bit to improve code generation.</font></font></li>
937 <br><b><font size=+1>Release 2.1.5</font></b>
938 <p><font size=+1>Mostly a bug fix release</font>
942 <font color="#CC0000"><font size=+1>Fixed post & pre increment / Decrement
943 problem and inefficiency</font></font></li>
946 <font color="#CC0000"><font size=+1>Structures/Unions. Three things were
947 done this structure declarations.</font></font></li>
951 <font color="#CC0000"><font size=+1>The long standing union problem has
952 been fixed, a very rudimentary solution right now , will some up with a
953 better solution shortly.</font></font></li>
956 <font color="#CC0000"><font size=+1>Structures declared inside function
957 scopes were not being properly cleaned up, came across this problem while
958 generating debug information fixed now.</font></font></li>
961 <font color="#CC0000"><font size=+1>pointers declared inside structures
962 were broken after the pointer fix in Version 2.1.3, now fixed.</font></font></li>
966 <font color="#CC0000"><font size=+1>Fixed some library routines , for --model-large
970 <font color="#CC0000"><font size=+1>Added whole lot of stuff for debug
971 information generation (DO NOT use --debug option might cause unpredictable
972 results).</font></font></li>
976 <br><b><font size=+1>Release 2.1.4</font></b>
980 <font color="#CC0000"><font size=+1>Problem with parameter overlay : when
981 two functions with overlaid parameters were nested, the parameters of the
982 outer function was clobbered. This has been fixed, now the inner function
983 call will be lifted out and evaluated before parameters for the outer call
984 are assigned values.</font></font></li>
987 <font color="#CC0000"><font size=+1>New optimization added (suggested by
988 Jean Louis VERN <jlvern@writeme.com> to prevent global variables in
989 near space from being assigned to registers.</font></font></li>
992 <font color="#CC0000"><font size=+1>Improved loop optimization, now will
993 keep induction variables alive after loops even if loops have more that
994 one exit. This makes me happy, it takes care of almost all the common loop
995 constructs. So unless the user is doing something really weird the induction
996 variables will be carried outside the loop. This also lays down the
997 ground work for value based optimizations, i.e. when the loop count is
998 known, then value of the induction variables will also be known at certain
999 exit points.</font></font></li>
1002 <font color="#CC0000"><font size=+1>Fixed bug in genPlus, genAnd,genXor,genOr
1003 routines , was generating incorrect code for Far Space variable with Literal.</font></font></li>
1006 <font color="#CC0000"><font size=+1>Fixed bugs in SDCCglue.c, was generating
1007 -ve size for variables of size 32768 or greater.</font></font></li>
1010 <font color="#CC0000"><font size=+1>Changed register allocator to try &
1011 keep all local variables in 'registers' regardless of they are declared
1012 with the register storage class or not, this will reduce the amount of
1013 data space required by the compiler generated code.</font></font></li>
1016 <font color="#CC0000"><font size=+1>Fixed bug in SDCCmain.c , was unlinking
1017 file preOutName before reading it (okay with POSIX , not okay with DOS).</font></font></li>
1020 <font color="#CC0000"><font size=+1>David Bonnel <dbonnell@ozemail.com.au>.
1021 fixed the following bugs</font></font></li>
1025 <font color="#CC0000"><font size=+1>In SDCCicode.c at line# 1314 should
1026 be calling valMod not valDiv.</font></font></li>
1029 <font color="#CC0000"><font size=+1>In line# 2728 missing a break statement
1030 after the division case .</font></font></li>
1034 <font color="#CC0000"><font size=+1>David Bonnell <dbonnell@ozemail.com.au>.
1035 also added a new option <b>--iram-size <value> . </b>
1036 His description of it ..... (Dave speaking)</font></font></li>
1040 <font color="#CC0000"><font size=+1>I added the command '-a [iram-size]'
1041 to the linker. iram-size defaults to 128 (0x80) if it is omitted
1042 (which is the amount of internal RAM I have on my DS5000T chip :-)</font></font></li>
1044 <font color="#CC0000"><font size=+1>
1045 Anyway, if this command is given, the (new) function iramcheck() is called
1046 after linking to check that the OSEG, ISEG, and DSEG's do not extend
1047 past the end of internal RAM. (Internal RAM is from 0..iram_size-1).
1048 It spits out a warning such as:</font></font>
1049 <p><font color="#CC0000"><font size=+1>
1050 WARNING! Segment DSEG extends past the end of internal RAM. Check
1051 map file.</font></font>
1052 <p><font color="#CC0000"><font size=+1> when such a problem
1053 is detected.</font></font>
1054 <p><font color="#CC0000"><font size=+1> Then I added a new
1055 command-line option to SDCC, '--iram-size iram-size'. When this command
1056 is given the linker command shown above is added to the linker command
1057 file so that it will do the checking for internal RAM overflow.</font></font>
1060 <font color="#CC0000"><font size=+1> BESSIERE Jerome <BESSIERE_Jerome@stna.dgac.fr>
1061 fixed the following bugs.</font></font></li>
1065 <font color="#CC0000"><font size=+1>File sdccicod.c / function operandOperation(...)</font></font></li>
1068 <font color="#CC0000"><font size=+1>File sdccval.c / function valDiv(...)</font></font></li>
1071 <font color="#CC0000"><font size=+1>File sdccbitv.c / function bitVectBitValue(...)</font></font></li>
1074 <font color="#CC0000"><font size=+1>File sdccbitv.c / function bitVectUnSetBit(...)</font></font></li>
1079 <br><b><font size=+1>Release 2.1.3</font></b>
1083 <font color="#CC0000"><font size=+1>Fixed bug in assembler <b>i51mch.c</b>
1084 ; <b>dot</b> operator when used in branch instructions was generating incorrect
1085 opcode.</font></font></li>
1088 <font color="#CC0000"><font size=+1>Enhanced Dead Code elimination, (it
1089 was missing some ).</font></font></li>
1092 <font color="#CC0000"><font size=+1>Added new rules to SDCCpeeph.def
1093 provided by Frieder <fe@lake.iup.uni-heidelberg.de></font></font></li>
1096 <font color="#CC0000"><font size=+1>Fixed pointer return bug found by David
1097 Bonnel <dbonnell@ozemail.com.au>.</font></font></li>
1100 <font color="#CC0000"><font size=+1>Fixed the POINTER fiasco, I had misinterpreted
1101 the grammar.</font></font></li>
1105 <font color="#CC0000"><font size=+1>data char *p; was interpreted
1106 as [generic pointer to char, with p in data space]. now interpreted as
1107 pointer to character in data space with the pointer residing in unknown
1108 space.</font></font></li>
1111 <font color="#CC0000"><font size=+1>Updated the documentation for this.</font></font></li>
1115 <font color="#CC0000"><font size=+1>Updated documentation to include comments
1116 about Parameter Overlaying.</font></font></li>
1119 <font color="#CC0000"><font size=+1>Improved type checking to generate
1120 error message when a void type is casted to some other type</font></font></li>
1123 <font color="#CC0000"><font size=+1>Jean-Louis VERN (instead of sleeping
1124 at night) has made some GREAT!! improvements to the back end for frequently
1125 used expressions like</font></font></li>
1129 <font color="#CC0000"><font size=+1>if ( x & literal) ...</font></font></li>
1132 <font color="#CC0000"><font size=+1>if ( x ^ literal) ...</font></font></li>
1135 <font color="#CC0000"><font size=+1>if ( x | literal) ...</font></font></li>
1138 <font color="#CC0000"><font size=+1>if ( bit & x) ...</font></font></li>
1141 <font color="#CC0000"><font size=+1>if ( bit | x ) ...</font></font></li>
1144 <font color="#CC0000"><font size=+1>if (bit ^ x) ....</font></font></li>
1148 <font color="#CC0000"><font size=+1>Jean-Louis VERN rewrote the _decdptr.c
1149 routine to improve it.</font></font></li>
1153 <br><b><font size=+1>Release 2.1.2</font></b>
1157 <font color="#CC0000"><font size=+1>Bug in genAnd (SDCCgen51.c) caused
1158 the compiler to issue error message for some bit wise and operations.</font></font></li>
1161 <font color="#CC0000"><font size=+1>File _spx.c missing from source bundle.</font></font></li>
1164 <font color="#CC0000"><font size=+1>Invalid code generated when interrupt
1165 service routine used with external stack option.</font></font></li>
1168 <font color="#CC0000"><font size=+1>Added --no-peep option to disable peep
1169 hole optimization.</font></font></li>
1172 <font color="#CC0000"><font size=+1>Added --peep-asm option to optionally
1173 pass inline assembler code through the peephole optimizer.</font></font></li>
1176 <font color="#CC0000"><font size=+1>Fixed bug in _strcpy.c David Bonnell
1177 <dbonnell@ozemail.com.au>.</font></font></li>
1186 <br><b><font size=+1>Release 2.1.1</font></b>
1190 <font color="#CC0000"><font size=+1><b>bit </b>variables could not be declared
1192 , bug was introduces while improving type checking for bit fields in structures.</font></font></li>
1196 <p><b><font size=+1>Release 2.1.0</font></b>
1197 <p><font size=+1>A full source code release. Lots of stuff done in this
1202 <font color="#CC0000"><font size=+1>Floating point support completed (although
1203 cannot be used in small model).</font></font></li>
1206 <font color="#CC0000"><font size=+1>Data flow computation enhanced to stop
1207 flow computation of global variables when there is a call to another function.</font></font></li>
1210 <font color="#CC0000"><font size=+1>JeanLouis VERN added a whole lot of
1211 optimizations to the back end.</font></font></li>
1214 <font color="#CC0000"><font size=+1>Function return value assigned to a
1215 bit variable was crashing the compiler.</font></font></li>
1218 <font color="#CC0000"><font size=+1>Changed the way peep hole optimizer
1219 rules were being included. Now it is much easier to add default rules.</font></font></li>
1222 <font color="#CC0000"><font size=+1>Added two new pointer types "* pdata"
1223 and "* idata" these will facilitate the following</font></font></li>
1227 <font color="#CC0000"><font size=+1>Optimized access to near data</font></font></li>
1230 <font color="#CC0000"><font size=+1>Implementation of external stack (External
1231 stack is required if the compiler is going to be used to implement an RTOS)</font></font></li>
1235 <font color="#CC0000"><font size=+1>Fixed problem of Compiler giving warning
1236 when it did not find any reaching definition for a local static variable.</font></font></li>
1239 <font color="#CC0000"><font size=+1>Added code to backed for more optimized
1240 access to arrays, structures & unions placed in near space, now the
1241 compiler will not use indirect addressing to fetch the data if the offset
1242 is can be determined at compile time.</font></font></li>
1245 <font color="#CC0000"><font size=+1>Changed the way the startup code works.
1246 Documentation updated see section Startup for more details.</font></font></li>
1249 <font color="#CC0000"><font size=+1>Completed implementation of external
1250 stack. Documentation updated see section External stack.</font></font></li>
1253 <font color="#CC0000"><font size=+1>Jean-Louis VERN added a LOT of optimizations
1254 to the back end code generator, following is only a small list.</font></font></li>
1258 <font color="#CC0000"><font size=+1>gencjne improved</font></font></li>
1261 <font color="#CC0000"><font size=+1>gencmp improved</font></font></li>
1264 <font color="#CC0000"><font size=+1>genand improved</font></font></li>
1267 <font color="#CC0000"><font size=+1>genor improved.</font></font></li>
1270 <font color="#CC0000"><font size=+1>_divuint improved</font></font></li>
1273 <font color="#CC0000"><font size=+1>_divuint improved.</font></font></li>
1277 <font color="#CC0000"><font size=+1>Variables with absolute addresses now
1278 considered as VOLATILE.</font></font></li>
1281 <font color="#CC0000"><font size=+1>Dead Code elimination routine updated
1282 : will not eliminate global assignments to global variables when function
1283 call present.</font></font></li>
1286 <font color="#CC0000"><font size=+1>Added file <b>at89S8252.h </b>to distribution
1287 file supplied by "Michael Schmitt" <mschmitt@mainz-online.de></font></font></li>
1290 <font color="#CC0000"><font size=+1>Martijn van Balen <balen@natlab.research.philips.com>.
1291 Fixed problems in assembler and linker. Files affected are<b> asout.c</b>
1292 and <b>lklist.c</b></font></font></li>
1295 <font color="#CC0000"><font size=+1>Initialized character array variables
1296 with no size were being generated one byte less in length.</font></font></li>
1299 <font color="#CC0000"><font size=+1>Access to bit fields within structures
1300 mucho mucho improved.</font></font></li>
1303 <font color="#CC0000"><font size=+1>The compiler was allocating space on
1304 the stack for local variables (for reentrant functions) even when not needed,
1305 this has been fixed, the compiler will not allocate space on the stack
1306 for local variables if they are assigned to registers.</font></font></li>
1310 <br><b><font size=+1>Release 2.0.21</font></b>
1314 <font size=+1><font color="#CC0000">Enhancement made to unsigned long &
1315 integer division by </font><font color="#FF0000">Martijn van Balen <balen@natlab.research.philips.com></font></font></li>
1318 <font color="#FF0000"><font size=+1> _gptrget.c & _gptrput.c made
1319 register bank independent by Martijn van Balen <balen@natlab.research.philips.com>.</font></font></li>
1322 <font color="#FF0000"><font size=+1>sdccbuil.sh script fixed by Subject:
1323 Markus Mathes <mathes@prp.physik.tu-darmstadt.de></font></font></li>
1326 <font color="#FF0000"><font size=+1>Martijn van Balen <balen@natlab.research.philips.com>
1327 found some problems with post & pre increment of pointer variables
1328 , these are fixed.</font></font></li>
1332 <br><b><font size=+1>Release 2.0.20</font></b>
1333 <p><font size=+1>Mostly enhancements in this release. Some bug fixes by
1337 <font color="#FF0000"><font size=+1>Enhanced loop optimization (induction
1338 variables), will generate more compact code for simple loops</font></font></li>
1341 <font color="#FF0000"><font size=+1>Enhanced some aspects of basic block
1342 processing.</font></font></li>
1345 <font color="#FF0000"><font size=+1>Added a couple more MCU header files.</font></font></li>
1348 <font color="#FF0000"><font size=+1>Jean Louis made some enhancements in
1349 SDCCgen51.c for better code generation.</font></font></li>
1352 <font color="#FF0000"><font size=+1>Jean Louis also fixed some bugs in
1353 the back end .</font></font></li>
1357 <br><b><font size=+1>Release 2.0.19</font></b>
1361 <font color="#FF0000"><font size=+1>Assignment of array variable to a pointer
1362 sometimes did not generate code.</font></font></li>
1365 <font color="#FF0000"><font size=+1>File containing intialised variables
1366 ONLY with NO functions caused the compiler to crash</font></font></li>
1369 <font color="#FF0000"><font size=+1>Initialising global volatile variables
1370 caused the compiler to fail.</font></font></li>
1373 <font color="#FF0000"><font size=+1>Generated incorrect code when bit variables
1374 were modified and subsequently used in a conditional statement.</font></font></li>
1377 <font color="#FF0000"><font size=+1>Added 3 more header files for Atmel
1378 MCUs , provided by Bernd Bartmann (Bernd.Bartmann@picard.isdn.cs.tu-berlin.de)</font></font></li>
1381 <font color="#FF0000"><font size=+1>Added a lot of peephole optimization
1382 rules, some suggested by Daniel Drotos <drdani@mazsola.iit.uni-miskolc.hu></font></font></li>
1385 <font color="#FF0000"><font size=+1>Added check to make sure functions
1386 do not return 'bit'.</font></font></li>
1389 <font color="#FF0000"><font size=+1>Jean Louis-VERN (jlvern@writeme.com)
1390 fixed bug for divide with literal in his code.</font></font></li>
1396 <br><b><font size=+1>Release 2.0.18</font></b>
1400 <font color="#FF0000"><font size=+1>Function prototype problem when parameter
1401 name in the prototype was the same as a local variables.</font></font></li>
1404 <font color="#FF0000"><font size=+1>Added header files for Atmel AT89x51
1405 & AT89X52 provided by : Bernd Bartmann (Bernd.Bartmann@picard.isdn.cs.tu-berlin.de)</font></font></li>
1408 <font color="#FF0000"><font size=+1>Jean Louis-VERN (jlvern@writeme.com)
1409 has made </font><font size=+2>substantial improvements</font><font size=+1>
1410 to the Back-end code generation for </font><font size=+2>shift operations
1411 </font><font size=+1>and
1412 </font><font size=+2>multiplication.</font></font></li>
1419 <br><b><font size=+1>Release 2.0.17</font></b></dl>
1426 <font color="#FF0000"><font size=+1>Empty if body with non-emtpy else body
1427 cause compiler to give error message. Patch provided by Martijn van Balen
1428 <balen@natlab.research.philips.com></font></font></li>
1431 <font color="#FF0000"><font size=+1>Loop optimizer missed induction variables
1432 ;</font></font></li>
1435 <font color="#FF0000"><font size=+1>Added option <b>--main-return</b> ,
1436 will generate a '<b>ret</b>' instead of '<b>ljmp .</b>' when this option
1437 is used.</font></font></li>
1440 <font color="#FF0000"><font size=+1>Add support for user defined startup
1441 code.</font></font></li>
1449 <font color="#FF0000"><font size=+1>generating incorrect assembler code
1450 (new line missing), for '<i>long</i>' variables initialization when defined
1451 in '<i>code'</i> space.</font></font></li>
1454 <font color="#FF0000"><font size=+1><i>aslink</i> occasionally core dumped,
1455 after it finished processing. (patch provided by Eric Norum <eric@skatter.USask.Ca>
1456 )</font></font></li>
1459 <font color="#FF0000"><font size=+1>comparing <i>pointers with literals
1461 e.g. ptr == NULL gave error message, (NULL had to be explicitly cast to
1462 the pointer type)</font></font></li>
1465 <font color="#FF0000"><font size=+1>assigning <b>signed char</b> values
1466 to <b>sfr</b>s generated duplicate code.</font></font></li>
1469 <font color="#FF0000"><font size=+1>definitions for CHAR_MIN, INT_MAX &
1470 LONG_MAX incorrect in limits.h</font></font></li>
1473 <font color="#FF0000"><font size=+1>some more patches from Eric Norum <eric@skatter.USask.Ca>
1474 his description of the patches.</font></font></li>
1478 <font color="#FF0000"><font size=+1>1) asxxxx/lkmain.c:181</font></font></li>
1480 <br><font color="#FF0000"><font size=+1> startp->f_type is
1481 an integer variable and so should not be</font></font>
1482 <br><font color="#FF0000"><font size=+1> compared with NULL.</font></font>
1483 <p><font color="#FF0000"><font size=+1>2) asxxxx/lkmain.c:195</font></font>
1484 <br><font color="#FF0000"><font size=+1> *ip is a character
1485 variable and so should not be</font></font>
1486 <br><font color="#FF0000"><font size=+1> compared with NULL.</font></font>
1487 <p><font color="#FF0000"><font size=+1>3) asxxxx/lkmain.c:717</font></font>
1488 <br><font color="#FF0000"><font size=+1> ctype[c] is a character
1489 variable so the expression (ctype[c] != ILL)</font></font>
1490 <br><font color="#FF0000"><font size=+1> is always true on
1491 machines where char variables are signed.</font></font>
1492 <p><font color="#FF0000"><font size=+1>4) SDCCmain.c:780</font></font>
1493 <br><font color="#FF0000"><font size=+1> The preprocessor output
1494 file was left in the temporary directory.</font></font>
1498 <font color="#FF0000"><font size=+1> volatile variables when used
1499 as loop induction variables caused the compiler to crash.</font></font></li>
1502 <font color="#FF0000"><font size=+1>compiler generated '<b>char * idata
1503 icp</b>' as a generic pointer instead of 1 byte pointer.</font></font></li>
1506 <font color="#FF0000"><font size=+1>link file problem, when linking multiple
1507 files together the compiler sometimes generated a bad file name.</font></font></li>
1510 <font color="#FF0000"><font size=+1>library function _<b>atol.c </b>had
1511 the function <b>main</b> in it.</font></font></li>
1514 <font color="#FF0000"><font size=+1>Incorrect code generated left shift
1515 of <b>one byte</b> variables <b>'rl'</b> should be <b>'rlc' </b>. Patch
1516 provided by : Jean-Louis VERN <jlvern@writeme.com></font></font></li>
1519 <font color="#FF0000"><font size=+1>Bug in <b>./cpp/cpplib.c </b>. Patch
1520 provided by :Martijn van Balen <balen@natlab.research.philips.com></font></font></li>
1523 <font color="#FF0000"><font size=+1>Consecutive <b>'if'</b> statements
1524 sometimes caused the compiler to crash. This bug was a fairly serious.</font></font></li>
1527 <font color="#FF0000"><font size=+1>Incorrect code generated right shift
1528 of <b>long variables</b> variables <b>'rlc'</b> should be <b>'rrc' </b>.
1529 Patch provided by : Jean-Louis VERN <jlvern@writeme.com></font></font></li>
1532 <font color="#FF0000"><font size=+1>Xor, And and Or operation with bit
1533 variable & non-bit variable generated incomplete code.</font></font></li>
1536 <font color="#FF0000"><font size=+1>Expression folding was too aggresive,
1537 was corrupting parameters in certain situations.</font></font></li>
1540 <font color="#FF0000"><font size=+1>Function prototypes declared with parameter
1541 names , occasionally caused problems.</font></font></li>