* sim/ucsim/configure.in,
[fw/sdcc] / ChangeLog
index 5a4d584ed719f0848a786ee0e7b15b4bcd51ee6c..d467f9349afa561a6148ddbda87c5776bba8fd17 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,395 @@
+2004-03-06 Bernhard Held <bernhard AT bernhardheld.de>
+
+       * sim/ucsim/configure.in,
+       * sim/ucsim/configure,
+       * sim/ucsim/doc/Makefile.in: use docdir
+       * src/SDCC.y: fixed sbit atrributes
+       * src/SDCCast.c (getResultTypeFromType): added support for bitfields
+       * src/SDCCast.c (decorateType): |^& need special promotion handling
+       * src/SDCCast.h,
+       * src/SDCCsymt.h: moved definition of RESULT_TYPE
+       * src/SDCCsymt.h (computeType),
+       * src/SDCCicode.c: computeType() needs op
+       * src/SDCCsymt.c (checkTypeSanity),
+       * doc/sddman.lyx: "plain" bitfields are unsigned
+       * src/SDCCsymt.c (computeTypeOr): added
+       * src/SDCCsymt.c (computeType): added support for bitfields, fixed
+       |^& ops
+       * src/SDCCval.c (val*): computeType() needs op
+       * src/SDCCval.c (valCastLiteral): fixed casting of bitfields
+       * support/regression/tests/onebyte.c: added tests for |^&
+
+2004-03-06 Hans Dorn <hjdorn AT users.sourceforge.net>
+
+       * src/pic16/gen.c: (genpic16Code) use copy of printILine's output
+       for writing icode into asm output.
+
+2004-03-05 Vangelis Rokas <vrokas AT otenet.gr>
+
+       * src/pic16/device.c: added some debug lines enabled
+       with macro DEBUG_CHECK,
+       * src/pic16/genarith.c: more debug in genPlus,
+       * (pic16_genUMult8XLit_16, pic16_genUMult8X8_16): removed,
+       * (pic16_genUMult16X16_16, pic16_genUMult16XLit_16): NEW,
+       * src/pic16/gen.c: added prototypes for pic16_genMult16X16_16,
+       * (aopForSym): onStack symbols are re-placed in data memspace,
+       and onStack flag is cleared,
+       * (pic16_popGetTempReg, pic16_popReleaseTempReg): modified to
+       copy temporary pcodeop,
+       * (genPcall): added warning for not updating PCLATU,
+       * (genFunction): removed test with IFFUNC_CALLEESAVES, its
+       always true for pic16 port,
+       * (genMultOneWord): NEW, supports integer multiplication,
+       * (genMult): modified to call genMultOneWord,
+       * (ifxForOp): added warning when return NULL,
+       * src/pic16/glue.c (pic16emitRegularMap): symbol implicit
+       flag is set before call to operandFromSymbol for implicit
+       added structures,
+       * src/pic16/main.c (_pic16_finaliseOptions): options.float_rent,
+       options.intlong_rent are set by default,
+       * (_hasNativeMulFor): modified to allow port generation of integer
+       multiplication,
+       * src/pic16/ralloc.c (pic16_allocDirReg): commented out line which
+       set regtype to REG_SFR for all registers, restricting seting the
+       accessBank flag for registers 0<= r < 0x80 and 0xf80<=r<=0xfff,
+
+2004-03-05 Frieder Ferlemann <Frieder.Ferlemann AT web.de>
+
+       * src/mcs51/peephole.def: added 251.b and 253.x. 253.x are applied
+       more than 500 times in the regression tests
+
+2004-03-05 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+       * support/Util/SDCCerr.h,
+       * support/Util/SDCCerr.c,
+       * src/SDCC.y (struct_or_union_specifier, enum_specifier,
+       enumerator_list),
+       * src/SDCCsymt.c (addSymChain): show location of oriignal definition
+       for symbol conflicts.
+       * support/valdiags/tests/enum.c,
+       * support/valdiags/tests/tentdecl.c,
+       * support/valdiags/tests/struct.c: expect possible error messages
+       referring to original symbol definitions.
+       * src/SDCC.y (struct_or_union_specifier, struct_declarator),
+       * src/SDCCsymt.h,
+       * src/SDCCsymt.c (promoteAnonStructs): support anonymous struct/union
+
+2004-03-03 Hans Dorn <hjdorn AT users.sourceforge.net>
+
+       * src/pic16/gen.c (gencjne): fixed for right=REG / left=LIT
+
+2004-02-03 Vangelis Rokas <vrokas AT otenet.gr>
+
+       * src/pic16/ralloc.c (newReg): fixed bug #908929
+
+2004-03-02 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+       * src/ds390/gen.c: added missing #include "main.h"
+
+2004-03-02 Vangelis Rokas <vrokas AT otenet.gr>
+
+       * src/pic16/device.c (checkAddSym): NEW, adds a symbol to set while
+       checking if symbol is already in set,
+       * src/pic16/device.h: prototype for checkAddSym,
+       * src/pic16/gen.c: (_G): added entry interruptvector,
+       * (assignResultValue): removed some commented out lines,
+       * (genFunction): check for ISR via sym->type, absolute section for
+       interrupt code is created via a new pBlock, the goto instruction is
+       placed now correctly at the interrupt vector position, changed all
+       references from ivec to _G.interruptvector,
+       * WREG,STATUS,BSR are not saved in stack upon an entry to interrupt
+       is the interrupt is a high priority one, same for return from ISR,
+       * src/pic16/glue.c: changed all calls of addSetHead for publics and
+       externs to calls of checkAddSym,
+       * src/pic16/pcode.c (pic16_pBlockConvert2*): emit warning when
+       pic16_pcode_verbose flag is set,
+       * src/pic16/pcode.h: extern to pic16_pcode_verbose,
+       * src/pic16/pcoderegs.c: message about how many registers are saved
+       will only be emitted if pic16_pcode_verbose flag is set,
+
+2004-03-02 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+       * src/ds390/ralloc.h,
+       * src/ds390/ralloc.c (ds390_regWithIdx),
+       * src/ds390/gen.c (emitcode),
+       * src/ds390/main.h,
+       * src/ds390/main.c (instructionSize, ds390newAsmLineNode, updateOpRW,
+       ds390opcodeCompare, asmLineNodeFromLineNode, getInstructionSize,
+       ds390operandCompare, getRegsRead, getRegsWritten,
+       initializeAsmLineNode): customized instruction size calculation for
+       ds390, started basis for some register optimizations
+       * src/ds390/gen.c (gen390Code, emitcode): associate iCodes with
+       corresponding assembly output
+       * src/ds390/gen.c (genFunction, genEndFunction): added case to handle
+       missing push/pop of r0/r1. Optimized push/pops
+
+2004-03-01 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+       * src/mcs51/main.c (instructionSize): fixed ACALL size
+       * src/mcs51/main.c (updateOpRW): fixed bug with @dptr, @a+dptr operands
+
+2004-03-01 Vangelis Rokas <vrokas AT otenet.gr>
+
+       * src/pic16/device.c (pic16_dump_section): fixed a bug that allowed
+       the sorting of rlist with NULL elements
+       * (print_idataType, print_idata): NEW to create idata sections
+       * src/pic16/device.h: idataSymSet new variable
+       * src/pic16/gen.c (genFunction): fixed some bugs in string
+       comparing, improved the absolute section creation for ISRs,
+       added FSR0L/FSR0H in registers that are saved in an ISR,
+       * (genInline): fixed the processing of inline snippets,
+       now they undergo no process by the peephole optimizer
+       * src/pic16/glue.c (pic16emitRegularMap): symbols with initialiser
+       are placed in idataSymSet,
+       * (pic16emitStaticSeg): extern symbols are added in externs,
+       * src/pic16/ralloc.c (pic16_allocDirReg): work around to reduce bank
+       switching when aboslute variables are placed in access bank memory
+       * (pic16_writeUsedRegs): added call to pic16_dump_idata,
+       * (packRegsForSupport,packRegsForAccUse,packRegsForOneuse):
+       commented out with #if,
+       * (pic16_packRegisters): reintroduce the check for CAST because some
+       symbols are not correctly handled,
+       * src/pic16/pcode.h: changed the definition of pCodeAsmDir to hold a
+       pCodeInstruction instead of pCode,
+       * src/pic16/pcode.c (pic16_newpCodeAsmDir): modified for the new
+       pCodeAsmDir definition,
+       * (pic16_pCode2str, genericPrint): when an AsmDir pcode has a NULL
+       directive, then the argument directive is emitted without the leading
+       tab, hack for inline labels which must be in the first column,
+       * (compareLabel,pic16_findNextInstruction),
+       * (pic16_findPrevInstruction): added case for PO_ASMDIR,
+       * (insertBankSwitch): modified for the new pCodeAsmDir,
+
+2004-03-01 Hans-Juergen Dorn <hans.dorn AT apl-landau.de>
+       patch applied by Vangelis Rokas <vrokas AT otenet.gr>
+
+       * src/pic16/gen.c (pic16_popGet): case PO_DIR, adds the offset to
+       instance,
+       * (pushSide): commented out with #if,
+       * (assignResultValue): fixed some typos in saving
+       registers,
+       * (genPcall): FIXED and sync'ed with genCall,
+       * (genDataPointerGet,genDataPointerSet): using offset not leoffset
+       * (genNearPointerGet): fixed to handle some more cases,
+       implementation scheme via table reads,
+       * (genConstPointerGet): modified to access code memory correct,
+       * (genCodePointerGet,genNearPointerSet,genGenPointerSet): modified
+       and improved to handle some cases
+       * glue.c (printIvalType,printIvalChar,emitStaticSeg): use "DB"
+       instead of "RETLW" for init data
+       * src/pic16/ralloc.c (pic16_allocDirReg): warning when a symbol is
+       not IN_DIRSPACE, work around to reduce bank switching when aboslute
+       variables are placed in access bank memory (<0x80 and >=0xf80),
+       * src/pic16/pcode.c: added SFRs TBLPTR, TABLAT, added opcodes TBLRD,
+       TBLRD_POSTINC,TBLRD_POSTDEC,TBLRD_PREINC,TBLWT,TBLWT_POSTINC,
+       TBLWT_POSTDEC,TBLWT_PREINC
+       * Fixed initialisation of BSR, set "alias" for SSAVE to "0"
+       * (pic16_emitDB,pic16_flushDB): New functions to generate "DB"
+       directives
+       * (pic16_pCodeConstString): use "DB" instead of "RETLW"
+       * src/pic16/pcode.h: added TBLRD*,TBLWT*, added pic16_emitDB,
+       pic16_flushDB, made pic16_newpCodeAsmDir public, added TBLPTR, TABLAT
+       * src/pic16/ralloc.h: added IDX_BSR,IDX_TBLPTR*,IDX_TABLAT
+
+2004-02-29  Borut Razem <borut.razem AT siol.net>
+
+       * src/Makefile.in, src/SDCCutil.c, support/Util/findme.c,
+       support/Util/findme.h, support/Util/system.h: enhance binary relative
+       search for lib and include by using findProgramPath()
+
+2004-02-28 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+       * src/SDCCpeeph.h,
+       * src/SDCCpeeph.c (pcDistance),
+       * src/port.h,
+       * src/mcs51/ralloc.h,
+       * src/mcs51/ralloc.c (mcs51_regWithIdx),
+       * src/mcs51/main.h,
+       * src/mcs51/main.c (instructionSize, asmLineNode, updateOpRW,
+       mcs51opcodeCompare, asmLineNodeFromLineNode, getInstructionSize,
+       mcs51operandCompare, getRegsRead, getRegsWritten): made instruction
+       size calculation port specific, started basis for some register
+       optimizations
+       * src/mcs51/gen.c (genFunction, genEndFunction): added case to handle
+       missing push/pop of r0/r1. Optimized push/pops
+       * src/mcs51/ralloc.c (packregisters): fixed bug #727095
+       * device/lib/_modsint.c (_modsint),
+       * device/lib/_modslong.c (_modslong): fixed sign of result in non-asm
+       and stack version so regression tests pass
+
+2004-02-26 Bernhard Held <bernhard AT bernhardheld.de>
+
+       * src/Makefile.in (dep): include SLIBOBJS in dependency check
+       * src/SDCCast.c (decorateType): catch another small optimization
+       with '?' operator
+       * src/SDCCsymt.c (computeType): added comments and cosmetic changes
+       * src/SDCCval.c (valMult, valDiv, valMod, valPlus, valMinus, valShift):
+       modified to finally use computeType() all over SDCC,
+       see Feature Request #877103
+       * src/SDCCval.h: cosmetic
+       * src/SDCCicode.c (operandOperation): fixed EQ_OP bug, now same as in
+       valCompare(); regression tested in muldiv.c
+       * support/regression/tests/muldiv.c (testMod): mod sign follows
+       dividend only
+
+2004-02-23 Bernhard Held <bernhard AT bernhardheld.de>
+
+       * src/SDCCast.c (decorateType): fixed bug #902362
+       * doc/INSTALL.txt: fixed install instructions for win32
+
+2004-02-21 Bernhard Held <bernhard AT bernhardheld.de>
+
+       * device/include/Makefile.in (install): fixed by replacing spaces
+       by tabs
+       * doc/README.txt,
+       * doc/INSTALL.txt: updated for release
+       * doc/sdccman.lyx: added warning for --xstack being buggy
+
+2004-02-20 Bernhard Held <bernhard AT bernhardheld.de>
+
+       * src/pic16/ralloc.c (packRegsForAccUse):  disabled functions with #if
+       to eliminate build warnings.
+       * src/pic16/gen.c (pic16_popGet): fixed for gcc 2.95.4
+
+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
 
        * src/hc08/gen.h,
        * src/hc08/gen.c (storeRegToAop, aopOp, aopAdrStr, accopWithAop,
-       rmwWithAop): Ported my 2004-10-02 fix for bug #663539 to the hc08,
+       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>