* doc/sdccman.lyx: removed PIC16 from PIC16 Port Specific Options,
[fw/sdcc] / ChangeLog
index cd8360335977dddb71fbf1a546c20794e974da1e..9e197ce334a4630f1421c5d2e0449ba5a5f27ad5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,399 @@
+2004-02-20 Vangelis Rokas <vrokas AT otenet.gr>
+          Hans-Juergen Dorn <hans.dorn AT apl-landau.de>
+
+       * doc/sdccman.lyx: removed PIC16 from PIC16 Port Specific Options,
+       removed -penable-stack, added comment for stack pragma, added
+       warning for not initializing the stack/frame registers, removed
+       comment at interrupts section
+
+       Stack is made permanent, there is no ability to disable stack usage.
+       * src/pic16/device.h,
+       * src/pic16/device.c: removed all references to USE_STACK macro,
+       * src/pic16/device.c (pic16_dump_section): when no elements in
+       rlist, free rlist before return,
+       * (pic16_dump_int_registers): NEW, internal registers are a new set
+       of general purpose registers reused by each function,
+       * (checkAddReg): returns 1 if registers is added to set,
+       * (pic16_groupRegistersInSection): when a registers is of type
+       PO_GPR_TEMP add it in pic16_int_regs and not in pic16_rel_udata,
+       * src/pic16/device.h: memRange and Assigned Memory are deleted,
+       SRCASECMP macro is moved here from device.c
+       * src/pic16/genarith.c (pic16_pCodeOpType): added cases for
+       PO_PCLATU, PO_PRODL, PO_PRODH,
+       * (pic16_pCodeOpType, genMinus, 
+       changed compares to "a" register, with AOP_ACC,
+       * (pic16_genPlus): fixed some bugs and indented properly,
+       * (pic16_addSign): changed size to size+offset in the MOVWF
+       instruction,
+       * (pic16_genUMult8XLit_8): NEW, uses processor MULLW instruction to
+       multiply 8-bit operand by literal, result is 8-bit,
+       * (pic16_genUMult8X8_8): NEW, uses processor MULWF instruction to
+       multiply 2 8-bit operand, result is 8-bit,
+       * (pic16_genMult8X8_8): modified to call genUMult8X*_8 functions and not
+       genUMult8X*_16,
+       * src/pic16/gen.c: changed accUse to contain WREG only,
+       * (pic16_emitcomment): renamed to pic16_emitpcomment,
+       * (aopForSym): allocated dir register when IN_DIRSPACE(space) is,
+       true, do not use immediate addressing any more unless sym is a
+       pointer in codespace,
+       * (aopForRemat): do not use immediate addressing when symbol not in
+       codespace and when symbol's address is requested,
+       * (aopOp): for-loop in if(sym->accUse) is modified for the new
+       accUse size (= 1),
+       * (aopGet): added case for AOP_ACC and don't return "accumulator
+       bug" but WREG instead,
+       * (popGetTempReg): pushes contents of temporary register in stack,
+       * (popReleaseTempReg): pops contents of temporary register from
+       stack. Use popGetTempReg/popReleaseTempReg in aligned pairs,
+       * (pic16_popGet): separated case AOP_ACC to return register WREG
+       from processor registers, AOP_PCODE not checks if pcop is PO_DIR
+       or PO_IMMEDIATE and initializes their instance/offset appropriately,
+       * The whole issue with aopForSym,aopForRemat,popGet) is to minimize
+       the use of immediate pointers to certain cases only.
+
+       * (pic16_pushpCodeOpReg, pic16_poppCodeOpReg): use pic16_popGet2p,
+       * (pic16_loadFromReturn, pic16_storeForReturn: NEW,
+       * (assignResultValue, genCall, genRet): modified to use the new
+       function return value scheme with WREG,PRODL,PRODH,FSR0L and FSR0,
+       genPcall is still broken,
+       * (genFunction): added code to create 'A' type pBlocks when
+       interrupt functions are generated, code not extensively tested yet,
+       ISRs push WREG,STATUS,BSR,PRODL,PRODH,FSR0L,FSR0H registers on stack,
+       * (genEndFunction): modified so ISRs pop stored registers from stack,
+       * (genMultOneByte): cleanup,
+       * (AccRsh): added flag andmask, to and result with appropriate mask,
+       * (genUnpackBits,genPackBits): fixed and can handle bit fields,
+       * (genDataPointerGet): fixed and reenabled its use,
+       * (genNearDataPointerGet): bugs fixed,
+       * (genDataPointerSet): bugs fixed,
+       * src/pic16/genutils.c: added functions pic16_DumpValue,pic16_DumpAop,
+       pic16_DumpSymbol, pic16_DumpOp,
+       * src/pic16/genutils.h: function prototypes for the above functions,
+       * src/pic16/glue.c: new flags initsfpnt, to initialize stack/frame
+       pointers,
+       * (pic16emitRegularMap): many many many improvements, but needs a
+       major cleanup,
+       * src/pic16/main.c: enable_stack in pic16_options is removed,
+       * (_pic16_parseOptions): removed command line options -penable-stack,
+       * (_process_pragma): emit stack symbol only when stack pragma is
+       processed,
+       * src/pic16/pcode.c: pic16_pc_fsr0 is removed, all operations are
+       redirected to FSR0L/FSR0H pair,
+       * (pic16_get_op, pic16_get_op2): modifications and improvements,
+       * (pic16_getRegFromInstruction, pic16_getRegFromInstruction2): added
+       cases PO_PRODL,PO_PRODH, pic16_getRegFromInstruction2 returns sane
+       for immediates,
+       * (insertBankSwitch): modified to handle cases like: (alfa + 1)
+       * (dumpPicOptype): NEW,
+       * src/pic16/pcode.h: added PO_PCLATU,PO_PRODL,PO_PRODH in enum,
+       * src/pic16/pcoderegs.c (pCodeRegMapLiveRangesInFlow): fixed bug
+       with movff instruction,
+       * src/pic16/ralloc.c: renamed typeRegWithIdx to pic16_typeRegWithIdx,
+       added pic16_int_regs, some packRegsFor* functions are commented out,
+       because produce errors,
+       * src/pic16/NOTES: minor modifications
+
+2004-02-18  Jesus Calvino-Fraga <jesusc AT ece.ubc.ca>
+
+       * as/mcs51/aslink.h, as/mcs51/lkarea.c, as/mcs51/lkdata.c, as/mcs51/lkmain.c,
+       as/mcs51/lkmem.c, src/SDCCglob.h, src/SDCCmain.c: added options --stack-size and
+       --pack-iram.
+       * doc/sdccman.lyx: described options --stack-size and --pack-iram.
+       * as/mcs51/lkaomf51.c: fixed bug #895763
+
+2004-02-17 Bernhard Held <bernhard AT bernhardheld.de>
+
+       * device/include/c8051f320.h: added. Contributed by Maarten Brock.
+
+2004-02-17 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+       * doc/sdccman.lyx: added details about the HC08 storage classes and
+       interrupts, fixed the register usage info for z80 & gbz80
+
+2004-02-17 Vangelis Rokas <vrokas AT otenet.gr>
+
+       * doc/sdccman.lyx: added more pic16 port documentation
+       * device/include/pic16/: added header pic18fregs.h
+
+2004-02-16 Bernhard Held <bernhard AT bernhardheld.de>
+
+       * doc/sdccman.lyx: added Vangelis' contribution
+
+2004-02-16 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+       * src/SDCClrange.c (rlivePoint): live range of SEND operand should
+       extend to the next CALL or PCALL, not just to the next CALL.
+
+2004-02-16 Vangelis Rokas <vrokas AT otenet.gr>
+
+       * src/pic16/gen.c (genInline): fixed bug #896482 with inline assembly
+
+2004-02-15 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+       * src/mcs51/ralloc.c (packRegsForAssign, reassignAliasedSym): fixed
+       bug #895752 and a better fix for bug #716790
+
+2004-02-15 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+       * src/SDCCsymt.c (processFuncArgs): fixed bug #896796
+
+2004-02-14 Frieder Ferlemann <Frieder.Ferlemann AT web.de>
+
+       * doc/sdccman.lyx: minor changes, minor changed
+
+2004-02-13 Bernhard Held <bernhard AT bernhardheld.de>
+
+       * src/SDCCicode.c (usualBinaryConversions): removed pic16 from ports
+       which can't handle SDCC_NEWONEBYTEOPS,
+       (geniCodeMultiply): removed conversion from mult to shift for pic14
+       and pic16
+
+2004-02-12 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+       * src/hc08/gen.h,
+       * src/hc08/gen.c (storeRegToAop, aopOp, aopAdrStr, accopWithAop,
+       rmwWithAop): Ported my 2003-10-02 fix for bug #663539 to the hc08,
+       thus fixing bug #895406
+
+2004-02-11 Bernhard Held <bernhard AT bernhardheld.de>
+
+       * device/lib/_modsint.c,
+       * device/lib/_modslong.c: sign follows divisor only
+       * src/hc08/gen.c (genMultOneByte): if result size is 1,
+       signs or signedness can be ignored
+       * src/SDCCast.c (addCast): cosmetic - added lineno to CAST
+       * src/SDCCast.c (resultTypePropagate): added even more ops: +, - and *,
+       added optimization for IFX,
+       (decorateType): Mult/Div/ModOneByte ops can handle all kind of signed
+       arguments;
+       reenabled optimization for IFX, which was removed on 2004-01-11
+       * src/SDCCast.h: added return type IFX
+       * src/SDCCicode.c: Mult/Div/ModOneByte ops can handle all kind of signed
+       arguments with 8 or 16 bit results; pic14 and pic16 ports use old
+       promotion behaviour; env. var. SDCC_NEWONEBYTEOPS selects the new,
+       SDCC_OLDONEBYTEOPS selects the old behaviour
+       * src/SDCCsymt.c (computeType): type2 can be NULL (for LEFT_OP);
+       changed again and commented promotion rule
+       * src/SDCCval.c (valDiv): promotion no longer necessary
+       * src/ds390/gen.c (genMultOneByte) (genDivOneByte) (genModOneByte),
+       * src/mcs51/gen.c (genMultOneByte) (genDivOneByte) (genModOneByte):
+       rewritten
+       * support/regression/tests/onebyte.c: added
+
+2004-02-11 Vangelis Rokas <vrokas AT otenet.gr>
+
+       * gen.c (genInline): reverted to old code for assemnling inline
+       code because of bug reported James Chadd
+
+2004-02-10 Vangelis Rokas <vrokas AT otenet.gr>
+
+       * ralloc.h: missing declarations from previous patch,
+       seems that patch for ralloc.h was never applied, fixed
+       
+2004-02-10 Hans-Juergen Dorn <hans.dorn AT apl-landau.de>
+          patch committed by Vangelis Rokas <vrokas AT otenet.gr>
+
+       * pcode.c,
+       * pcode.h,
+       * ralloc.h: added FSR0L, FSR0H and other missing PIC16 SFR's for
+       indirect addressing. Marked FSR0 as deprecated
+       * gen.c (pointerCode): commented out, not needed now
+       (pic16_popGet2p): new MOVFF helper function
+       (genGenPointerGet),
+       (genGenPointerSet): reimplemented with MOVFF and POSTINC0
+       (shiftRLong): removed duplicate debugging info
+
+2004-02-10 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+       * src/ds390/gen.c (genNearPointerGet),
+       * src/mcs51/gen.c (genNearPointerGet): allow the genDataPointerGet()
+       optimization with bits, but not bitfields.
+       * src/ds390/ralloc.c (packRegisters),
+       * src/mcs51/ralloc.c (packRegisters): fixed bug #884453 & #880832
+
+2004-02-09 Bernhard Held <bernhard AT bernhardheld.de>
+
+       * src/SDCCcse.c (algebraicOpts): copy operands before modification
+
+2004-02-09 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+       * src/SDCCsymt.h,
+       * src/SDCCicode.c (operandFromSymbol),
+       * src/mcs51/ralloc.c (verifyRegsAssigned, serialRegAssign),
+       * src/ds390/ralloc.c (verifyRegsAssigned, serialRegAssign),
+       * src/z80/ralloc.c (verifyRegsAssigned, serialRegAssign),
+       * src/hc08/ralloc.c (verifyRegsAssigned, serialRegAssign),
+       * src/pic/ralloc.c (verifyRegsAssigned, serialRegAssign),
+       * src/pic16/ralloc.c (verifyRegsAssigned, serialRegAssign): fixed
+       bug #892038
+       * src/SDCCast.c (createIvalStruct, createIvalArray, gatherAutoInit),
+       * src/SDCCglue.c (emitRegularMap, printIvalStruct, printIvalArray,
+       printIvalCharPtr, printIvalPtr, printIval, emitStaticSeg, emitOverlay)
+       * src/SDCCsymt.c (newSymbol),
+       * src/SDCC.y (struct_or_union_specifier, enum_specifier, 
+       enumerator_list),
+       * src/SDCCval.h,
+       * src/SDCCval.c (newiList): fixed bug #885705
+
+2004-02-08  Jesus Calvino-Fraga <jesusc AT ece.ubc.ca>
+
+       * doc/sdccman.lyx: added section 3.1.4: sdcclib.
+       * as/mcs51/lkmem.c: report the size of the stack in .mem file.
+
+2004-02-08 Frieder Ferlemann <Frieder.Ferlemann AT web.de>
+
+       * device/include/c8051f120.h,
+       * device/include/c8051f300.h,
+       * device/include/c8051f310.h: added/updated header files for Silicon
+       Laboratories (formerly Cygnal) CPUs. Contributed by Maarten Brock.
+       * doc/sdccman.lyx: minor changes, recommended diff -Naur and diff -u
+       in new section Submitting patches
+
+2004-02-08 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+       * src/mcs51/gen.c (genNearPointerGet, genPagedPointerGet,
+       genFarPointerGet, genCodePointerGet, genGenPointerGet,
+       genNearPointerSet, genPagedPointerSet, genFarPointerSet,
+       genGenPointerSet),
+       * src/ds390/gen.c (genNearPointerGet, genPagedPointerGet,
+       genFarPointerGet, genCodePointerGet, genGenPointerGet,
+       genNearPointerSet, genPagedPointerSet, genFarPointerSet,
+       genGenPointerSet),
+       * src/pic16/gen.c (genNearPointerGet, genPagedPointerGet,
+       genFarPointerGet, genCodePointerGet, genGenPointerGet,
+       genNearPointerSet, genPagedPointerSet, genFarPointerSet,
+       genGenPointerSet),
+       * src/pic/gen.c (genNearPointerGet, genPagedPointerGet,
+       genFarPointerGet, genCodePointerGet, genGenPointerGet,
+       genNearPointerSet, genPagedPointerSet, genFarPointerSet,
+       genGenPointerSet): fixed bug #892400
+       * src/pic16/gen.c (genSkipz, AccRol): disabled functions with #if 0
+       to eliminate build warnings.
+       * src/SDCCast.c (processParms),
+       * src/SDCC.y (function_declarator2, declarator2_function_attributes):
+       fixed bug 751859
+       * support/valdiag/valdiag.py: added GCC to the list of defines active
+       when compiling with gcc
+
+2004-02-07 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+       * support/Util/SDCCerr.h,
+       * support/Util/SDCCerr.c,
+       * src/SDCCast.c (decorateType, sizeofOp): complain when sizeof is used
+       with an incomplete type (fixed bug #883734)
+       * src/SDCCicode.c (geniCodeCast): fixed bug #890510
+
+2004-02-07 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+       * src/pic16/gen.c (genCmpEq, shiftRLong): fixed declarations
+
+2004-02-06 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+       * src/SDCCast.c (decorateType),
+       * src/SDCCicode.c (geniCodeParms, geniCodeCall): fixed bugs in my ANSI
+       function pointer implementation
+       * support/regression/tests/funptrs.c: added tests to verify both forms
+       of function pointers work correctly. Added tests to verify parameters
+       are passed in the correct order.
+
+2004-02-06  Vangelis Rokas <vrokas AT otenet.gr>
+
+       * device.c (regCompare): registers are sorted by ascending
+       address and increasing size,
+       * main.c (_pic16_finaliseOptions): removed the declaration
+       of compiler macro MCU. Now a macro of the format pic18fxxxx
+       will be defined from the command line
+
+2004-02-06  Hans-Juergen Dorn <hans.dorn AT apl-landau.de>
+           patch committed by Vangelis Rokas <vrokas AT otenet.gr>
+
+       * pcode.c (pic16initMnemonics): fixed typo in assignment to PCOP_RLNCF
+       PCOP_RLCF was overwritten!
+       * gen.c (genSkip): commented out calls to pic16_emitcode,
+       * (genCmpEQ): fixed "long" compares, only high word did get compared,
+       * (genlshTwo),
+       * (genRRC): added debugging info,
+       * (shiftL2Left2Result): Fixed bug, if offr > offl. Result got
+       overwritten while shifting,
+       * (shiftR2Left2Result): Fixed bug, if offr < offl. Result got
+       overwritten while shifting,
+       * (AccLsh),
+       * (AccRsh),
+       * (shiftLLeftOrResult),
+       * (shiftRLeftOrResult),
+       * (shiftRLong),
+       * (shiftLLong): Implemented with pic16_emitpcode
+       * (genlshFour): Replaced pic16_aopPut with pic16_emitpcode,
+       * (genLeftShift): Fixed bug, operand for shift by variable always
+       was "and"ed with 0x0f,
+       * (genLeftShiftLiteral),
+       * (genrshTwo),
+       * (genRightShiftLiteral): added debugging info,
+       * (genrshFour): added comment,
+       * (genRightShift): determined signedness from operand "left"
+       instead of "result"
+
+2004-02-04 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+       * src/SDCCicode.c (geniCodeParms),
+       * src/SDCCast.c (decorateType, processParms): support for ANSI-style
+       function pointers, fixed function pointer bugs #861242 and #861896
+
+2004-01-31 Frieder Ferlemann <Frieder.Ferlemann AT web.de>
+
+       * device/include/c8051f000.h,
+       * device/include/c8051f120.h,
+       * device/include/c8051f300.h: added header files for Silicon
+       Laboratories (formerly Cygnal) CPUs. Contributed by Maarten Brock.
+
+2004-01-31 Bernhard Held <bernhard AT bernhardheld.de>
+
+       * src/SDCCast.c (processParams): added new type flow and restructured
+       (gatherAutoInit): added new type flow
+       (addCast): cosmetic changes
+       (getLeftResultType): added new type flow for array indices, patch
+       provided by Stas, see FR #877103
+       (decorateType): SDCC_NEWTYPEFLOW removed, new type flow is now standard;
+       array index patch by Stas
+       * src/SDCCast.h: added prototype getResultTypeFromType()
+       * src/SDCCval.h,
+       * src/SDCCval.c (resolveIvalSym) (resolveIvalSym),
+       * src/pic/glue.c (pic14emitStaticSeg),
+       * src/pic16/glue.c (pic16emitStaticSeg),
+       * src/SDCCglue.c (emitRegularMap) (emitStaticSeg): added new type flow
+       for initialization of symbols
+       * src/SDCCicode.c (geniCodeArray): removed warning W_ARRAY_BOUND
+       * support/Util/SDCCerr.h:
+       * support/Util/SDCCerr.c: replaced W_ARRAY_BOUND by W_IDX_OUT_OF_BOUNDS
+       * .version: bumped version number to 2.3.8
+       * device/include/Makefile.in (install),
+       * doc/Makefile (install): changed to 'rm `find ...`' construct to
+       avoid warnings
+
+2004-01-30 Bernhard Held <bernhard AT bernhardheld.de>
+
+       * support/regression/tests/libmullong.c: fixed for 64 bit hosts
+       Slade Rich fixed an optimization bug
+       * src/pic/pcodepeep.c,
+       * src/pic/pcoderegs.c
+       * doc/Makefile (install): added test for directory
+
+2004-01-30 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+       * src/mcs51/ralloc.c (getRegPtr, getRegGpr),
+       * src/ds390/ralloc.c (getRegPtr, getRegGpr),
+       * src/pic/ralloc.c (getRegPtr, getRegGpr),
+       * src/pic16/ralloc.c (getRegPtr, getRegGpr),
+       * src/z80/ralloc.c (getRegGpr): fixed bug #883361
+       * as/mcs51/asexpr.c (term),
+       * as/hc08/asexpr.c (term): fixed bug #887146
+
+2004-01-29 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+       * src/z80/gen.c (genMult): handle single byte result product
+       * src/SDCCopt.c (killDeadCode): never convert ADDRESS_OF iCode to
+       DUMMY_READ_VOLATILE (fixed bug #886367)
+
 2004-01-27 Bernhard Held <bernhard AT bernhardheld.de>
 
        * support/regression/tests/libmullong.c: fixed logic, on little endian