* .version: bumped version number to 2.4.8
[fw/sdcc] / ChangeLog
index c608614c4be1ef392552331945ebe2b65e1e7c1e..5fe897c46a95a6a645802e2901baa817bdf08457 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,442 @@
-2004-11-18 Maarten Brock <sourceforge.brock AT dse.nl>
+2005-01-22 Vangelis Rokas <vrokas AT otenet.gr>
+
+       * .version: bumped version number to 2.4.8
+       * device/lib/pic16/pics.all: list of PIC18F devices supported by
+       pic16 port,
+       * device/lib/pic16/libio/i2c/: I2C module support library,
+       * device/include/pic16/i2c.h: I2C support library header,
+       * device/lib/pic16/libc/stdio/: standard IO support sources,
+       * (printf_small.c): printf_small() source, supports float print,
+       * (printf_tiny.c): printf_tiny() source, does not support floats,
+       * device/lib/pic16/Makefile.common.in: added OPT_FLAGS macro to
+       enable global optimizations for entire library source, other
+       Makefiles in the source tree are also modified to reflect this,
+       * device/lib/pic16/libc/stdlib/putchar.c (putchar): dummy putchar()
+       function,
+       * doc/sdccman.lyx: updated to reflect new changes,
+       * src/pic16/gen.c (aopForSym): don't handle sym->iaccess in
+       sym->onStack if-case,
+       * src/pic16/main.c (_pic16_keywords): commented out keywords bit,
+       sbit, idata, _idata, xdata, _xdata,
+       * added pragma library, to link an external library, (see doc),
+       * removed command line options, --pomit-config-words, --pomit-ivt,
+       --pleave-reset-vector,
+       * (pic16_finaliseOptions): when define macro SDCC_MODEL_{SMALL/LARGE}
+       when calling assembler to reflect memory model used, also define
+       macro STACK_MODEL_{SMALL/LARGE} when compiling and assembling to
+       reflect stack model used,
+       * src/pic16/ralloc.c (pic16_allocDirReg): when operand is allocated
+       on stack return NULL,
+
+2005-01-22 Daniel Winkler <post AT danielwinkler.de>
+
+       * src/SDCCopt.c (killDeadCode): do not throw iCodes away if one
+         of the operands is volatile. Fixes #1020220
+
+2005-01-22 Daniel Winkler <post AT danielwinkler.de>
+
+       * src/pic16/pcoderegs.c (pCodeOptime2pCodes): reenabled optimization
+       * (OptimizeRegUsage): make sure that there is really no other flow where
+         the first pCode is used
+
+2005-01-22 Raphael Neider <rneider AT web.de>
+
+       * src/pic16/pcoderegs.c (pCodeOptime2pCodes): disabled optimization
+         to fix #1106967 (pCode->seq are not set up correctly)
+
+2004-01-22 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+       * src/SDCCglue.c (glue): make sure code area is declared before the
+       static initialization area.
+
+2005-01-21 Raphael Neider <rneider AT web.de>
+
+       * device/lib/Makefile.in: fixed test for pic16 install dir
+       * device/lib/pic16/*/Makefile*: modified compile flags to enable
+         optimizations
+       * doc/sdccman.lyx: updated banksel optimization, removed --flr-support and
+         added --optimize-goto compiler switch and pragma wparam documentation
+       * src/pic16/pcode.c (pic16_OptimizeBanksel): removed statistics dump
+       * src/pic16/pcodepeep.c (pic16_pCodeOpCopy): fixed copying of WREG, PRODL
+         and PRODH closing bug #1071770 (peephole optimizer)
+
+2005-01-19 Raphael Neider <rneider AT web.de>
+
+       * src/SDCCglobl.h: ensure that PATH_MAX >= 2048 to guarantee
+         cmdLine buffers (used when calling sdcpp...) are large enough
+         (MAX_PATH=256 truncates arguments leading to system halts when
+         used in MinGW...)
+       * src/pic16/gen.c (pic16_sameRegs): relaxed size criterion
+       * (genUminus): rewritten to for efficiency
+       * (genNearPointer[GS]et): enforce reloading of FSR0 (was still
+         used uninitialized in some cases)
+       * (genCast): upcasting a 16bit int to a 24bit GPOINTER may not
+         copy the third byte from the int -- now assumes 0x80 (data memory)
+       * src/pic16/genarith.c (pic16_genPlus): fixed bug when swapping
+         operands (genAddLit expects the iCode's operands to swapped as
+         well), fixed leftover bytes (crashed for short left operands)
+       * (pic16_genMinusDec): performance improvements, removed false
+         PIC14 emitSKPNCs
+       * (pic16_genMinus): fixed to cope with differently sized operands
+       * src/pic16/glue.c (pic16_glue): added new banksel optimization
+         for --obanksel > 1
+       * src/pic16/pcode.c: implemented (first phase of) banksel optimization
+       * src/pic16/graph.[ch]: implementation of directed graphs, used by
+         new banksel optimization
+       * src/pic16/pcoderegs.c (pCodeRegMapLiveRangesInFlow): prevented
+         analysis for temporary registers (segfaults...)
+       * src/pic16/peeph.def: added rule
+
+2005-01-18 Vangelis Rokas <vrokas AT otenet.gr>
+
+       * device/lib/pic16/libc/stdlib/x_ftoa.c: it defines x_ftoa function
+       which converts a float number to its ASCII representation
+       * device/lib/pic16/libc/utils/cnvfrac.S,cnvint.S: support
+       functions to convert the fractional and integer part of a float to ASCII,
+       * device/lib/pic16/libc/stdlib/(calloc.c,free.c, malloc.c,
+       realloc.c): added _MALLOC_SPEC to explicit place variables in data
+       ram
+       * device/include/asm/pic16/features.h: added _CODE, _DATA, _AUTOMEM,
+       _STATMEM macros,
+       * device/include/pic16/adc.h: added GPL info,
+       * src/pic16/gen.c (genIfxpCOpJump): perform an genIfxJump but using
+       a pCodeOp as tested operand,
+       * (genNearPointerGet): optimized bit testing, does not use
+       intermediate register for bit value, test directly instead with
+       BTFSS, BTFSC, works only for single bits,
+       * (genpic16Code): dump the name of the iCode in the asm,
+       * src/pic16/ralloc.c (decodeOp): removed static declaration and
+       renamed to pic16_decodeOp,
+       * (serialRegAssign): do not allocate a temporary register for iCode
+       sequences that test a single bit for 1/0
+
+2005-01-12 Vangelis Rokas <vrokas AT otenet.gr>
+
+       * src/pic16/pcode.[ch]: introduced pic16_stackpnt_*,
+       pic16_framepnt_*, pic16_stack_*, pic1_frame_* pointer variables to
+       access stack and frame pointers. They are initially assigned to
+       point at pic16_pc_fsr1[lh] and pic16_pc_fsr2[lh] variables and other
+       accessing SFRs. Updated all occurences of modification of stack or
+       frame pointer in gen.c and pcode.c,
+       * src/pic16/ralloc.c (serialRegAssign): fixed two bugs with
+       assigning of a literal value to pointers,
+       * src/pic16/main.c (pic16_finiliseOptions): set pre-processor define
+       flag STACK_MODEL_SMALL or STACK_MODEL_LARGE according to the model
+       selected
+
+2005-01-11 Vangelis Rokas <vrokas AT otenet.gr>
+
+       * doc/sdccman.lyx: update documentation about stack pragma, added
+       some info for stack memory models
+
+2005-01-08 Jesus Calvino-Fraga <jesusc AT ece.ubc.ca>
+
+       * src/pic16/gen.c (DEBUGpc): MSVC 6 does not support macro variable arguments
+
+2005-01-08 Raphael Neider <rneider AT web.de>
+
+       * src/pic16/device.c (pic16_dump_usection): changed naming scheme for
+         udata sections to fix bug #1097823
+
+2005-01-05 Raphael Neider <rneider AT web.de>
+
+       * src/pic16/gen.c (genGenericShift): added handling of differently
+         sized left operand and result
+
+2005-01-04 Raphael Neider <rneider AT web.de>
+
+       * src/pic16/gen.c (genIfxJump): fixed inverted skips on CARRY
+       * (genIfx): fixed (?) read from uninitialized SPIL_LOC (now assumes CARRY
+         to hold the condition bit)
+       * added new version of genCmp (old code available via #define)
+       * added new version of genShiftLeft/genShiftRight in a generic
+         way, now supports shifting by negative values
+       * (genLeftShiftLiteral, genRightShiftLiteral): use absolute value of
+         shiftCount (expected by genGenericShift)
+       * src/pic16/genarith.c (genPlus): added code for adding CARRY+literal
+       * src/pic16/pcode.c (pic16_OptimizeJumps): removed annoying statistics
+         dump
+       * (pic16_newpCodeOpLit): changed to cast to unsigned char (as e.g. -32766
+         is an invalid literal too...)
+
+2005-01-04 Vangelis Rokas <vrokas AT otenet.gr>
+
+       * src/pic16/gen.c (aopForSym, genEndFunction): applied some fixes
+       from Raphael Neider,
+       * src/pic16/pcode.c (pic16_newpCodeOpLit): removed casting to char
+       for 8-bit literals. This fixes some literal operands which are sign
+       extended to 16-bits ints when instruction needs only 8-bits.
+
+2004-12-31 Paul Stoffregen <paul AT pjrc.com>
+
+       * device/lib/logf.c: added mcs51 assembly version
+       * device/lib/expf.c: added mcs51 assembly version
+       * device/lib/_logexpf.c: new shared asm code for expf and logf
+       * device/include/math.h: add defines for assembly math library
+       * device/lib/Makefile.in: build new _logexpf.c
+       * device/lib/libfloat.lib: use new _logexpf.c
+
+2004-12-29 Slade Rich <slade_rich AT users.sourceforge.net>
 
-       * device/lib/printf_large.c (_print_format): fixed bug 1073386,
-         (calculate_digit): added optimization for octal and hex
+       * src/pic/device.c
+       * src/pic/pcode.c : adjusted internal stack and pre-allocated registers for
+         device types which have less than 0x7f registers.
+
+2004-12-29 Slade Rich <slade_rich AT users.sourceforge.net>
+
+       * src/pic/genarith.c : Fixed problem with subtraction where the result would not be updated when borrowing.
+
+2004-12-28 Paul Stoffregen <paul AT pjrc.com>
+
+       * device/lib/printf_fast.c: only build on supported arch.
+       * device/lib/printf_tiny.c: only build on supported arch.
+       * device/lib/printf_fast_f.c: only build if asm float lib
+       * device/lib/_fsget1arg.c: only build if asm float lib
+       * device/lib/_fsget2args.c: only build if asm float lib
+       * device/lib/_fsnormalize.c: only build if asm float lib
+       * device/lib/_fsreturnval.c: only build if asm float lib
+       * device/lib/_fsrshift.c: only build if asm float lib
+       * device/lib/_fsswapargs.c: only build if asm float lib
+       * device/include/stdio.h: don't provide print_fast,
+         print_fast_f, print_tiny prototypes if --xstack used
+
+2004-12-28 Maarten Brock <sourceforge.brock AT dse.nl>
+
+       * device/lib/sincosf.c (sincosf): don't invert bit/bool by ~
+       * support/regression/ports/mcs51-stack-auto/spec.mk: added new _fs.. files
+         to the SOURCES
+
+2004-12-28 Paul Stoffregen <paul AT pjrc.com>
+
+       * device/lib/printf_fast_f.c: same as printf_fast, but
+         with floating point enabled
+       * device/lib/printf_fast.c: minor tweaks
+       * device/include/stdio.h: add printf_fast_f
+
+2004-12-27 Paul Stoffregen <paul AT pjrc.com>
+
+       * src/SDCCmain.c: make --float-reent default for mcs51
+       * device/lib/_fsadd.c: added mcs51 assembly version
+       * device/lib/_fssub.c: added mcs51 assembly version
+       * device/lib/_fsmul.c: added mcs51 assembly version
+       * device/lib/_fsdiv.c: added mcs51 assembly version
+       * device/lib/_fseq.c: added mcs51 assembly version
+       * device/lib/_fsneq.c: added mcs51 assembly version
+       * device/lib/_fsgt.c: added mcs51 assembly version
+       * device/lib/_fslt.c: added mcs51 assembly version
+       * device/lib/_fscmp.c: shared code for fseq,fsgt,fslt,fsneq
+       * device/lib/Makefile.in: add _fscmp to build
+       * device/lib/libfloat.lib: add _fscmp to build
+
+2004-12-27 Paul Stoffregen <paul AT pjrc.com>
+
+       * device/lib/_fs2slong.c: added mcs51 assembly version
+       * device/lib/_fs2sint.c: added mcs51 assembly version
+       * device/lib/_fs2schar.c: added mcs51 assembly version
+       * device/lib/_fs2ulong.c: added mcs51 assembly version
+       * device/lib/_fs2uint.c: added mcs51 assembly version
+       * device/lib/_fs2uchar.c: added mcs51 assembly version
+       * device/lib/_slong2fs.c: added mcs51 assembly version
+       * device/lib/_sint2fs.c: added mcs51 assembly version
+       * device/lib/_schar2fs.c: added mcs51 assembly version
+       * device/lib/_ulong2fs.c: added mcs51 assembly version
+       * device/lib/_uint2fs.c: added mcs51 assembly version
+       * device/lib/_uchar2fs.c: added mcs51 assembly version
+       * device/include/float.h: added #define to select asm vs c
+
+2004-12-26 Paul Stoffregen <paul AT pjrc.com>
+
+       * device/lib/printf_fast.c: improvements to float output
+       * device/include/float.h: add defines for assembly float library
+       * device/lib/_fsget1arg.c: receive 1 float arg
+       * device/lib/_fsget2args.c: receive 2 float args (reentrant)
+       * device/lib/_fsnormalize.c: normalize a float
+       * device/lib/_fsreturnval.c: return float, various helper routines
+       * device/lib/_fsrshift.c: right shift a float's mantissa
+       * device/lib/_fsswapargs.c: swap 2 floats
+       * device/lib/Makefile.in: build these 6 new files for mcs51
+       * device/lib/libfloat.lib: add these 6 files to the library
+
+2004-12-26 Borut Razem <borut.razem AT siol.net>
+
+       * sim/ucsim/avr.src/arith_inst.cc: fixed bug #1088372- savr is not
+         built by gcc 3.4.2
+
+2004-12-25 Paul Stoffregen <paul AT pjrc.com>
+
+       * device/lib/printf_tiny.c: printf for mcs51 in only 267 bytes,
+         and fully reentrant and register bank neutral.
+       * device/lib/printf_fast.c: added float (not enabled by default),
+         added compact/slower integer (also not enabled by default),
+         improved size/speed of fast integer code, other minor changes
+       * device/include/stdio.h, device/lib/Makefile.in,
+         device/lib/libsdcc.lib: integrate printf_tiny into mcs51 build
+
+2004-12-24 Maarten Brock <sourceforge.brock AT dse.nl>
+
+       * src/pic16/pcode.c: declaring variables other than at the start of a
+         block is not supported in C by VC6.
+
+2004-12-22 Vangelis Rokas <vrokas AT otenet.gr>
+
+       * applied a previous patch from Raphael Neider that wasn't included
+       in the previous commits, which fixes infinite loops within jumptable
+       improvements,
+       * made some fixes that previous patches introduced
+
+2004-12-21 Vangelis Rokas <vrokas AT otenet.gr>
+
+       * src/pic16/gen.c (pic16_aopGet): applied fix from Raphael Neider
+       that fixes an issue with AOP_PCODE asmop's offset,
+       * (pic16_popCopyReg): update instance field too,
+       * (mov2w): modified to pic16_mov2w because it conflicts with mov2w
+       function of pic port,
+       * (genCmp, genAnd, genAssign),
+       * src/pic16/genarith.c (genAddLit): some fixes from Raphael Neider,
+
+2004-12-20 Vangelis Rokas <vrokas AT otenet.gr>
+
+       * src/SDCCast.c (gatherAutoInit): allow pic16 to emit static
+       variables initial values to idata section,
+       * src/SDCCicode.c (geniCodeCall): patch from ### to fix unreferenced
+       variables in some functions. This utilizes parmBytes field of iCode
+       structure to hold the offset of the variable in stack. (might be
+       able to use the stack field too?)
+       * applied patch from Raphael Neider # ### , # ###
+       * src/pic16/glue.c (pic16emitRegularMap): fix to print static
+       variable initial values in idata section,
+       * src/pic16/ralloc.c (pic16_allocDirReg): don't allocate register
+       for static variables with initial value
+       * src/device/lib/pic16/libsdcc/float/ulong2fs.c (__ulong2fs):
+       applied fix in while loop from Raphael Neider.
+
+2004-12-19 Maarten Brock <sourceforge.brock AT dse.nl>
+
+       * src/ds390/gen.c (genCpl): fixed bit=~(char/bit) bugs, added warning
+       * src/ds390/main.c (_ds390_regparm): don't pass bit params in registers
+       * src/ds390/ralloc.c (serialRegAssign): spill bits
+       * src/mcs51/gen.c (genCpl): fixed bit=~(char) bugs, added warning
+       * support/Util/SDCCerr.c,
+       * support/Util/SDCCerr.h: added warning W_COMPLEMENT for using bit=~(bit)
+       * support/regression/tests/bitvars.c: added tests for bitwise complement(~)
+       * support/regression/tests/bitwise.c: added test for bitwise complement(~)
+
+2004-12-09 Maarten Brock <sourceforge.brock AT dse.nl>
+
+       * device/include/sdcc-lib.h: inserted LGPL, added includes
+         asm/ds390/features.h and asm/mcs51/features.h
+       * device/include/asm/default/features.h,
+       * device/include/asm/gbz80/features.h,
+       * device/include/asm/z80/features.h: added empty _AUTOMEM
+         and _STATMEM
+       * device/include/asm/ds390/features.h,
+       * device/include/asm/mcs51/features.h: added files with defines for
+         _AUTOMEM and _STATMEM indicating automatic and static storage class
+       * device/lib/printf_large.c (_print_format): optimized & used _AUTOMEM
+       * doc/sdccman.lyx: version 2.4.7, updated xstack documentation
+       * src/SDCCicode.c (geniCodeCast),
+       * src/SDCCsymt.c (compareType): allow cast of data-ptr to idata-ptr
+       * src/SDCCloop.c (loopInduction): removed unused variable lr
+       * src/SDCCopt.c (convilong, convertToFcall): moved "easy special case"
+         to convertToFcall to include char modulo (RFE 1065037), added check
+         if left operand is unsigned and use abs of literal value
+       * src/SDCCpeeph.c (setFromConditionArgs): removed double quotes option
+         as it doesn't work after conversion from peephole.def to peephole.rul
+       * src/mcs51/gen.c (toBoolean): added check for size,
+         (genModOneByte): optimized code for signed char modulo a literal
+         power of 2 (thanks to Hubert Sack),
+         (genRRC): removed unnecessary "clr c",
+         (genRLC): replaced "add a,acc" with cheaper "rlc a"
+       * src/mcs51/peeph.def: renamed 115 to 115.a, added rule 115.b: another
+         jump optimization,
+         swapped rules 256.c and 256.d,
+         extended 256.d by using new multiple checks (thanks Erik),
+         added rules 256.e and 256.f,
+         updated rule 261.a and 261.b to new generated code
+       * support/regression/tests/muldiv.c: added test div/mod by a power of 2
+
+2004-12-07 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+       * src/SDCCloop.c (basicInduction, loopInduction): fixed several
+         induction related bugs, including first part of bug #1074377
+
+2004-12-05 Vangelis Rokas <vrokas AT otenet.gr>
+
+       * applied patch from bug-report #1076292,
+       * applied patches for genAnd and Goto-optimizations for Raphael
+       Neider,
+       * src/SDCCicode.c (printOperand): fixed !REGA source to compile and
+       dump a less iCode information,
+       * src/pic16/device.h (pic16_options_t): added field debgen,
+       * src/pic16/gen.h: added macros DUMP_FUNCTION_ENTRY,
+       DUMP_FUNCTION_EXIT, FENTRY, FENTRY2,
+       * src/pic16/gen.c (my_powof2): renamed to pic16_my_powof2 and made
+       puclic,
+       * (various functions): added macros FENTRY and FENTRY2 to functions,
+       to emit function prologue,
+       * (various functions): fixed indentation,
+       * (genNearPointerGet): fixed loading of FSR0,
+       * (genPackBits): applied patch from Raphael Neider to fix updating
+       of FSR0 and touching only the modified bits,
+       * src/pic16/genarith.c (various functions): added macros FENTRY to
+       emit function prologue in comments,
+       * src/pic16/pcode.h: added functions debugf2, debugf3,
+       * src/pic16/ralloc.c: partial fix for packForPush caused
+       segmentation fault,
+
+2004-12-04 Frieder Ferlemann <Frieder.Ferlemann AT web.de>
+
+       * src/mcs51/peeph.def: added 261.a,b (16 bit rotate) by Stas Sergeev
+         <stsp AT users.sourceforge.net> with reversed byte order
+       * support/regression/tests/rotate.c: added (ds390 skips some tests)
+
+2004-12-03 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+       * src/z80/gen.c (genLeftShift, genRightShift): fixed second part of
+         bug #1074377
+       * src/hc08/gen.c (genrshFour, shiftRLong, shiftLLong),
+       * src/mcs51/gen.c (shiftLLong): Fixed some shifting bugs Frieder found
+
+2004-12-02 Slade Rich <slade_rich AT users.sourceforge.net>
+
+       * src/pic/pcode.c : fixed a problem where banksel was not being inserted.
+
+2004-12-02 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+       * src/SDCCpeeph.c (callFuncByName): support combined peephole rule
+         conditions,
+         (setFromConditionArgs): friendly operand parser for peephole rules,
+         (operandBaseName, operandsNotRelated): new peephole condition
+         "operandsNotRelated" -- similar to "operandsNotSame", but takes
+         architecture specific register naming into account, handles n-way
+         comparisons, and supports quoted literals
+       * src/mcs51/peeph.def: restored rule 177.d with an extra condition
+
+2004-12-02 Frieder Ferlemann <Frieder.Ferlemann AT web.de>
+
+       * src/mcs51/peeph.def: fixed bug #1076940
+
+2004-12-02 Slade Rich <slade_rich AT users.sourceforge.net>
+
+       * device/include/pic/pic16f877.h : added an include file for the PIC16F877 device.
+
+2004-11-28 Frieder Ferlemann <Frieder.Ferlemann AT web.de>
+
+       Adding support for replacing ljmps with sjmps in jumptables
+       generated for switch statements. For now you need to set the
+       environment variable SDCC_SJMP_JUMPTABLE to enable this.
+       Now 4 algorithms for mcs51 jumptable generation are used:
+       ljmp or sjmp jumptables for up to 16 cases, stack-pushing target
+       addresses loaded pc-relative for up to 112 cases and stack-pushing
+       target addresses loaded with offset from dptr for up to 256 cases.
+
+       * src/SDCCpeeph.c: added peephole conditional labelJTInRange
+       * src/mcs51/main.c: adapted constants for switch table generation
+       * src/mcs51/peeph.def: added 260.x for replacing ljmp with sjmp
+
+2004-11-26 Maarten Brock <sourceforge.brock AT dse.nl>
+
+       * device/lib/printf_large.c (_print_format): fixed bug 1073386
        * support/regression/tests/bug1057979.c: added test for bug 1073386
 
 2004-11-25 Vangelis Rokas <vrokas AT otenet.gr>
        * device/lib/_gptrput.c (_gptrput): _naked allows to use ret
          instead of sjmp to ret
        * src/mcs51/peeph.def: added peepholes 3.d-g and 177.g,h provided
-         by anonymous in RFE #1067986, thanks
+         by Hubert Sack <hsack2002 AT arcor.de> in RFE #1067986, thanks
 
 2004-11-18 Maarten Brock <sourceforge.brock AT dse.nl>