Adding support for replacing ljmps with sjmps in jumptables
[fw/sdcc] / ChangeLog
index c9184b5484abcbd34c1c994b07ce3383d1b42d5b..af926fdefd22a1d4015f92ac4e2fa0ad8c1b426b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,189 @@
+2004-11-29 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>
+
+       * src/pic16/pcode.c: fixed bug which may produce error in non-GNU
+       compilers
+
+2004-11-25 Vangelis Rokas <vrokas AT otenet.gr>
+
+       * src/pic16/device.h,
+       * src/pic16/genarith.c,
+       * src/pic16/glue.c,
+       * src/pic16/main.c,
+       * src/pic16/pcode.c: applied patches #1068154 and #1070213
+
+2004-11-24 Vangelis Rokas <vrokas AT otenet.gr>
+
+       Large cummulative patch for pic16 port.
+       * device/lib/pic16/gstack.h: NEW, user can specify its own handler
+       to call when a stack overflow occurs,
+       * (malloc.h): added CVS Id tag,
+       * (pic18f{242,252,442,452}.h): added T0CONbits structure and
+       variable,
+       * added libc directory. The current version of LibC contains string
+       functions, ctype functions and macros and some functions of the
+       stdlib set (like malloc/free/atof/atoi etc...). All functions are to
+       be extensively tested in the future. Standard disclaimer here.
+       Library is not automatically build yet. But one can build it by
+       invoking 'make' inside the libc directory.
+       * added ADC library under libio. Preliminary version yet.
+
+       * src/pic16/gen.h: added emitTOGC macro, to toggle Carry flag,
+       * src/pic16/gen.c (aopForRemat): asmop size is filled by
+       aopForRemat() now and not by pic16_aopOp(),
+       * (pic16_popGetTempReg): removed warning messgae when allocating
+       temporary registers, its a buggy feature and will be removed,
+       * (pic16_popGet): set register instance field in AOP_CRY,
+       * (pic16_outBitC): fixed for results in size greater than 1,
+       * (genUminusFloat): fixed for pic16, ported code from mcs51,
+       * (pic16_storeForReturn): optimized return of 0,
+       * (genCmp): experimental code for new genCmp which uses PIC18's
+       special compare&skip instructions. Initial tests fail some times
+       with variables grater than 1 byte in size, so new code is disabled,
+       * (genUnpackBits, genPackBits): more optimizations in reading/writing,
+       a single bit,
+       * (genCast): began a fix to optimize the casting of a bit to another
+       bit, now assigning a bitfield to another bitfield will fail, sorry,
+       * src/pic16/main.c: disabled the use of lr-support feature,
+       * src/pic16/pcode.h: renamed PCASMDIR to PCAD,
+       * added some function prototypes, added function _debugf prototype,
+       * src/pic16/pcode.c: (pic16_get_op): fixed emitting operands of register
+       bits with offset (case PO_GPR_BIT),
+       * (genericPrint): don't emit INFO pcode when --pcode-verbose not in
+       command line,
+       * (isBankInstruction): modified to return 0 for no banking instruction,
+       and 1 for banking instruction,
+       * (pic16_isPCinFlow): check for PCAD (assembler directives) too,
+       caused stop processing pCodes after a inline assembly block,
+       * (pic16_popCopyGPR2Bit): updated to match bitfields with offset,
+       * src/pic16/pcoderegs.c: fixed a bug with eliminating some temporary
+       registers when it shouldn't,
+       * src/pic16/ralloc.c (allocReg): add preliminary support for
+       supporting a limited set of temporary registers,
+
+2004-11-23 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+       * src/hc08/gen.c (genAssign, genPointerGetSetOfs, genDataPointerGet,
+         genDataPointerSet): ensure assignments always copy in MSB to LSB
+         order,
+         (loadRegFromAop): recognize CLRH optimization,
+         (genFunction): optimize RECEIVE iCodes in reentrant functions
+
+2004-11-20 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+       * src/SDCCmain.c (parseCmdLine, optionsTable[]): fixed bug with
+         --out-fmt-s19 turning into --out-fmt-elf if s19 was already
+         selected.
+       * src/SDCCmain.c (linkEdit): don't define SSEG for HC08
+       * src/hc08/main.c (_hc08_setDefaultOptions): default xdata to be
+         contiguous with data
+
+2004-11-19 Frieder Ferlemann <Frieder.Ferlemann AT web.de>
+
+       * device/lib/_gptrget.c (_gptrget),
+       * device/lib/_gptrgetc.c (_gptrgetc),
+       * 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 Hubert Sack <hsack2002 AT arcor.de> in RFE #1067986, thanks
+
+2004-11-18 Maarten Brock <sourceforge.brock AT dse.nl>
+
+       * .version: bumped version to 2.4.7
+       * device/lib/_gptrget.c (_gptrget): is now _naked
+       * device/lib/_gptrgetc.c (_gptrgetc): is now _naked
+       * device/lib/_gptrput.c (_gptrput): is now _naked
+       * src/SDCCast.c (createBlock): removed ridiculous self-assignment,
+         (createFunction): fixed xstack
+       * src/SDCCglue.c (emitMaps): set allocation required for bit area
+       * src/SDCCicode.c (geniCodeCast): don't change SPEC_OCLS for literal
+         or bit either,
+         (geniCodeCritical): store original interrupt state in an iTemp bit
+         var unless stack-auto
+       * src/SDCCicode.h: added CRITICAL and ENDCRITICAL to SKIP_IC2
+       * src/SDCCmain.c (setIncludePath): added include/target to search path
+       * src/SDCCmem.c (allocParms): store bit vars in bit space, not overlay
+       * src/SDCCsymt.c (checkFunction): don't check regbank for isr's against
+         prototype,
+         (processFuncArgs): put bit vars in bit area
+       * src/mcs51/gen.c (saveRegisters, unsaveRegisters, genXpush, saveRBank,
+         unsaveRBank): fixed xstack,
+         (genFunction): bugfix: replaced (global!) reentrant with fReentrant,
+         (genFunction, genEndFunction): fixed xstack,
+         (genAssign): optimization don't walk backwards through mem
+       * src/mcs51/main.c (_mcs51_regparm): don't pass bit params in registers
+       * src/mcs51/ralloc.c (createStackSpil): spill bits to bit area
+       * support/regression/Makefile: also make library (for stack-auto) when
+         making "all" and added "test-mcs51-xstack-auto"
+       * support/regression/fwk/lib/testfwk.c: added T2_isr prototype for mcs51
+       * support/regression/ports/mcs51/T2_isr.c: added this file as a stub
+       * support/regression/ports/mcs51/fwk.lib: added to link T2_isr stub
+       * support/regression/ports/mcs51/spec.mk: added rules for fwk.lib
+       * support/regression/ports/mcs51-stack-auto/spec.mk: replaced
+         make-library by MAKE_LIBRARY
+       * support/regression/ports/mcs51-xstack-auto/spec.mk: file added to run
+         regression tests for xstack
+       * support/regression/tests/bitvars.c: test for bit vars (bug 938782)
+       * support/regression/tests/critical.c: test for critical on mcs51
+
+2004-11-18 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+       * support/regression/ports/ucz80/spec.mk: use include and lib files from
+         built version of sdcc instead of installed version
+
+2004-11-14 Maarten Brock <sourceforge.brock AT dse.nl>
+
+       * src/mcs51/gen.c (toBoolean): fixed bug 1065458
+       * device/lib/Makefile.in: z80 uses printf_large.c, sprintf.c and
+         vprintf.c now
+       * device/lib/printf_large.c (calculate_digit): fixed bug 1057979
+       * device/lib/z80/Makefile: don't use printf.c as it fails bug 1057979
+         WARNING: remove device/lib/build/z80/printf.o by hand when
+         updating from previous build!
+       * device/lib/z80/printf.c: updated comment
+       * support/regression/tests/bug1057979.c: test all ports now
+       * support/regression/tests/bug1065458.c: file added
+
+2004-11-12 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+       * src/z80/gen.c (genFunction, genEndFunction): avoided generating
+         *_start and *_end symbols for static functions
+
+2004-11-11 Maarten Brock <sourceforge.brock AT dse.nl>
+
+       * src/SDCCmain.c (linkEdit): don't suppress crt0 if --nostdlib is used
+         and search crt0.o in all library paths,
+         (setIncludePath): proper handling of --nostdinc,
+         (setLibPath): proper handling of --nostdlib
+       * support/regression/Makefile,
+       * support/regression/ports/ds390/spec.mk,
+       * support/regression/ports/gbz80/spec.mk,
+       * support/regression/ports/hc08/spec.mk,
+       * support/regression/ports/mcs51/spec.mk,
+       * support/regression/ports/mcs51-large/spec.mk,
+       * support/regression/ports/mcs51-stack-auto/spec.mk,
+       * support/regression/ports/z80/spec.mk: use include and lib files from
+         built version of sdcc instead of installed version
+       * doc/sdccman.lyx: fixed typo in --nostdinc
+
 2004-11-10 Slade Rich <slade_rich AT users.sourceforge.net>
 
        * src/pic/pcode.c,
        * support/regression/ports/mcs51/support.c: reload T1 asap
        * doc/sdccman.lyx: updated for options --pack-iram and --no-pack-iram,
          pdata use and clear idata startup behaviour
+       * support/regression/tests/bug1057979.c: added
 
 2004-11-04 Maarten Brock <sourceforge.brock AT dse.nl>