+2004-03-26 Bernhard Held <bernhard AT bernhardheld.de>
+
+ * device/lib/small/Makefile: fixed parallel execution by
+ replacing `make` by `$(MAKE)`
+
+2004-03-23 Bernhard Held <bernhard AT bernhardheld.de>
+
+ * device/lib/vprintf.c (vsprintf): minor optimization, see bug #801101
+
+2004-03-23 Scott Dattalo <scott AT dattalo.com>
+
+ * src/pic/gen.c (genCpl): multi-byte complements were not working.
+ * src/regression/Makefile: Regression test was not running.
+
+2004-03-23 Bernhard Held <bernhard AT bernhardheld.de>
+
+ * src/SDCCast.c (resultTypePropagate, decorateType): avoid promotion to int for
+ complement if possible
+ * src/SDCCval.c (valComplement),
+ * src/SDCCicode.c (operandOperation): fixed complement of literal
+ * support/regression/tests/onebyte.c (testComplement): added
+
+2004-03-22 Bernhard Held <bernhard AT bernhardheld.de>
+
+ * src/SDCCast.c (processParms): fixed bug #920866; decorateType() can
+ return an optimized tree; actually replace actParm with the new tree
+ * src/SDCCast.h: added some parantheses to remove side effects
+ * support/regression/tests/bug-920866.c
+
+2004-03-21 Scott Dattalo <scott AT dattalo.com>
+ * src/pic/gen.c, src/pic/gen.h, src/pic/genarith.c, src/pic/pcode.c:
+ Bit operands were not being handled properly in the pic14 port.
+ (now src/regression/add.c passes again).
+
+2004-03-20 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+ * src/SDCC.y (labeled_statement): case and default no longer require
+ a following statement (RFE #893037)
+
+2004-03-19 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+ * src/mcs51/gen.c (pushSide, genSignedRightShift, genDjnz, geniPush):
+ use MOVA macro to avoid "mov a,acc" when peephole optimizer is
+ disabled (fixes bug #916294)
+ * sim/ucsim/s51.src/mov.cc (inst_mov_a_addr): Throw an error on
+ "mov a,acc"; patch provided by Lenny Story
+ * device/include/mc68hc908gp32.h: header contibuted by Juan Gonzalez
+
+2004-03-19 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+ * src/mcs51/gen.c (genFunction): optimize RECEIVE in reentrant
+ functions
+ * src/ds390/gen.c (genFunction, genEndFunction),
+ * src/ds390/ralloc.c (ds390_assignRegisters),
+ * src/mcs51/gen.c (genFunction, genEndFunction, mcs51_assignRegisters):
+ * src/mcs51/ralloc.c (mcs51_assignRegisters): Skip optimizing registers
+ pushed if there are parameters passed on the stack. Also, a cleaner
+ way to decide if r0/r1 should be pushed/popped. (Together they fix
+ bug #918693)
+
+2004-03-18 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+ * doc/sdccman.lyx,
+ * device/lib/mcs51/crtpagesfr.asm,
+ * device/lib/mcs51/crtxinit.asm,
+ * device/lib/mcs51/crtxstack.asm: Changed name of _PAGESFR to _XPAGE
+ to avoid confusion with Si Lab's SFRPAGE register.
+
+2004-03-17 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+ * src/SDCCglue.c (emitMaps): allow public sfr variables
+ * src/SDCCglue.c (initialComments): include compiler build date
+ with compiler version and put the timestamp of the generated
+ assembly file on a serperate line to be less confusing.
+ * src/port.h: added genInitStartup hook
+ * src/avr/main.c,
+ * src/ds390/main.c,
+ * src/hc08/main.c,
+ * src/pic/main.c,
+ * src/pic16/main.c,
+ * src/xa51/main.c,
+ * src/z80/main.c: genInitStartup initialize as NULL (default to
+ historical behaviour)
+ * src/SDCCglue.c (glue): _sdcc_gsinit_startup is now port specific.
+ * src/mcs51/main.c: (_mcs51_genInitStartup, _mcs51_genExtraAreas,
+ _mcs51_genXINIT, _mcs51_genRAMCLEAR): link initialization code from the
+ library instead of hard coding it into the compiler.
+ * support/regression/ports/mcs51-stack-auto/spec.mk,
+ * src/SDCCmain.c (linkEdit): added mcs51.lib to the link libraries
+ * device/lib/mcs51/Makefile,
+ * device/lib/small/Makefile,
+ * device/lib/large/Makefile,
+ * device/lib/mcs51/crtpagesfr.asm,
+ * device/lib/mcs51/crtstart.asm,
+ * device/lib/mcs51/crtxclear.asm,
+ * device/lib/mcs51/crtxinit.asm,
+ * device/lib/mcs51/crtclear.asm,
+ * device/lib/mcs51/crtxstack.asm: move most of the mcs51 C runtime
+ startup/initialization out of src/SDCCglue.c and src/mcs51/main.c
+ and into user configurable files.
+ * device/lib/clean.mk: clean mcs51 directory too
+ * support/regression/tests/longlit.c: added static to T1 declaration
+ * doc/sdccman.lyx: documented _PAGESFR sfr for customizing pdata
+ accesses in the initialization code
+
+2004-03-14 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+ * device/include/mc68hc908qy.h: corrected declarations of FLBPR and
+ OSCTRIMVAL as noted in bug #916008
+
+2004-03-14 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+ * src/SDCCloop.c (basicInduction): fixed bug with loop induction
+ in loops with multiple exits (reported as incorrect registers
+ used by Martin Helmling in Sdcc-user list)
+
+2004-03-12 Frieder Ferlemann <Frieder.Ferlemann AT web.de>
+
+ * src/ds390/main.c (_ds390_genAssemblerPreamble): cosmetic change,
+ made ds390 register extensions look less like error messages
+
+2004-03-12 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+ * src/SDCCglue.c (printIvalPtr): fixed bug with pointer initializer
+ reported by Adam Wozniak in Sdcc-user list
+
+2004-03-10 Bernhard Held <bernhard AT bernhardheld.de>
+
+ * src/SDCCast.c (decorateType): fixed with bug and promotion in
+ arithmetic optimizations, added debug output
+
+2004-03-09 Bernhard Held <bernhard AT bernhardheld.de>
+
+ * device/lib/time.c (mktime): fixed bug reported by Bert Thomas
+ * sdcc.spec: updated and split sdcc into 3 rpms
+ * src/SDCCast.c (decorateType): &|^ don't need addCast(); addCast() is
+ needed for literals of LEFT_OP and '+'
+ * src/SDCCicode.c (geniCodeLogic): I must have been braindead when I
+ introduced RESULT_TYPE_NOPROM
+ (geniCodeMultiply): fixed logic for decision if mul is optimized to
+ left shift
+ * src/SDCCsymt.c (computeType): op is int; added RESULT_TYPE_OTHER;
+ limited promotion to int only for '*'
+ * src/SDCCsymt.h (computeType): op is int, removed RESULT_TYPE_NOPROM
+
+2004-03-09 Hans Dorn <hjdorn AT users.sourceforge.net>
+
+ * src/pic16/gen.c (genSkip),
+ (genc16bit2lit), (gencjneshort): commented out
+ (is_LitOp): new helper function, checks operand type
+ (genCmpEq): rewritten
+
+2004-03-08 Bernhard Held <bernhard AT bernhardheld.de>
+
+ * support/regression/tests/bug-908454.c: added
+
+2004-03-07 Bernhard Held <bernhard AT bernhardheld.de>
+
+ * src/SDCCast.c (addCast): fixed bug #908454 by promoting bits to char
+ * src/SDCCicode.c (usualBinaryConversions): op needs int type
+ (geniCodeCast): cosmetic, don't preserve bit storage class
+ (geniCodeLeftShift): added promotion
+ (geniCodeLogic): fixed regression
+ * src/SDCCsymt.c (computeTypeOr): accept bits too
+ (compareType): 2nd part of fix for bug #908454, needed for bitfields
+
+2004-03-07 Borut Razem <borut.razem AT siol.net>
+
+ * support/Util/findme.c: alloca() replaced with malloc()/free() pair
+
+2004-03-06 Vangelis Rokas <vrokas AT otenet.gr>
+
+ * src/pic16/ralloc.c (pic16_genPackRegisters): reverted to old
+ version of pic16_genPackRegisters which does not check if ic is a
+ CAST operator,
+ * src/pic16/gen.c (ifxForOp): disabled new and untested code in
+ function cause string1.c regression test fails
+
+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
+
+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
+ hosts we ended without a mullong_wrapper()
+
2004-01-27 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
* ChangeLog: changed "@" to " AT " in hopes of reducing spam and