* src/port.h,
* src/mcs51/main.c,
* src/ds390/main.c,
* src/z80/main.c,
* src/hc08/main.c,
* src/pic/main.c,
* src/pic16/main.c,
* src/avr/main.c,
* src/xa51/main.c
* src/SDCCicode.c (geniCodeJumpTable): Better logic to determine if a
a jump table is the best form for a switch statement, including
automatic insertion of missing cases to make the case range
continuous. Developed in collaboration with Frieder Ferlemann.
* src/pic16/gen.c (genPackBits): added operand right in function
parameters, load result directly if p_type is POINTER (that is
called by genNearPointerSet)
* (genUnPackBits): added operand left in function parameters,
* (genNearPointerGet, genNearPointerSet): prevent the loading of
FSR0 if accessing bitfields,
epetrich [Tue, 31 Aug 2004 07:46:41 +0000 (07:46 +0000)]
* src/SDCCpeeph.c (labelIsReturnOnly): support hc08 rts opcode also
* src/SDCCpeeph.c (buildLabelRefCountHash): assume function entry point
labels are referenced at least once (even if a reference is not found)
* src/hc08/gen.c (emitcode): set isComment flag for comments
* src/hc08/peeph.def: added rules 5a..5f (optimize redundant immediate
loads), rules 6a..6b (optimize jumps to return)
epetrich [Mon, 30 Aug 2004 05:04:03 +0000 (05:04 +0000)]
* src/hc08/gen.c (loadRegFromAop): better use of clra & clrx
* src/hc08/gen.c (genAnd, genOr): fixed bug with conditional when
multi-byte volatile operands are used
* src/hc08/gen.c (shiftRLong): fixed bug with wrong rotate direction
* src/hc08/main.c (_hc08_genAssemblerPreamble): moved the built-in
initialization to area GSINIT0 so that it would always precede
any static initializers in GSINIT
* support/regression/tests/zeropad.c: fixed idata define for hc08
* support/regression/tests/bug-927659.c,
* support/regression/tests/float_trans.c: disabled tests for hc08
pending missing library routines
* .version: increased version number to 2.4.4 - hc08 port now passes
regression tests
vrokas [Sun, 29 Aug 2004 10:26:33 +0000 (10:26 +0000)]
* src/pic16/gen.c (genFunction, genEndFunction): fixed return
instruction for interrupt handlers, use fast returns when returning
from high priority interrupts
epetrich [Sun, 29 Aug 2004 07:44:29 +0000 (07:44 +0000)]
* src/hc08/gen.c (genAnd, genOr, transferAopAop, rmwWithAop): optimized
code generation
* src/hc08/gen.c (genrshFour, genCpl): fixed bugs
* src/hc08/gen.c (genMultOneByte, genDivOneByte, genModOneByte): fixed
bugs, ported much of Bernhard's code from mcs51
* src/mcs51/gen.c (genSend),
* src/hc08/gen.c (genSend): fixed bug with lost SEND iCodes if more
than one when calling a reentrant function
* device/lib/_mullong.c: defined an alternate struct layout for big
endian ports (hc08)
epetrich [Sat, 28 Aug 2004 05:48:48 +0000 (05:48 +0000)]
* src/SDCCsymt.c (processFuncArgs): make sure parameter types
are sane and complete before asking the port its prefered parameter
passing method (fixes bug #1017633)
* device/lib/hc08/_ret.c: added "data" storage class to _ret2
and _ret3
epetrich [Fri, 27 Aug 2004 06:46:26 +0000 (06:46 +0000)]
* src/hc08/gen.c (genPointerSet, genFarPointerSet): moved code from
genFarPointerSet into genPointerSet; eliminated genFarPointerSet
* src/hc08/gen.c (genPointerGet, genFarPointerGet): moved code from
genFarPointerGet into genPointerGet; eliminated genFarPointerGet
* src/hc08/gen.c (genPackBitsImmed): generate optimized code for
assignments to bitfields at known addresses
* src/hc08/gen.c (genUnpackBitsImmed): generate optimized code for
reads from bitfields at known addresses
* src/hc08/ralloc.c (packRegisters),
* src/hc08/gen.c (genPointerGet, genUnpackBits, genUnpackBitsImmed,
genhc08Code): optimize pointer get values used as conditionals
* src/hc08/peeph.def: added rules 2e & 2f to optimize bit test
and branch
frief [Sat, 14 Aug 2004 14:10:03 +0000 (14:10 +0000)]
2004-08-14 Frieder Ferlemann <Frieder.Ferlemann AT web.de>
* src/mcs51/gen.c (genJumpTab): jumptables for more than 16 switch cases use more compact code
epetrich [Thu, 12 Aug 2004 02:32:05 +0000 (02:32 +0000)]
* src/SDCCsymt.h,
* src/SDCCsymt.c (changePointer, checkDecl, addSymChain): changed
parameter of changePointer() from symbol* to sym_link*
* src/SDCCast.c (decorateType): call changePointer() for CAST op
* src/SDCCsymt.c (compareType): void* type is castable to other
pointers, but not necesarily an exact match.
* src/SDCCicode.c (geniCodeCast): allow void* casting here since it
is no longer blindly treated as an exact match.
* src/SDCCval.c (valCastLiteral): treat missing type as cast to void
* src/SDCCmem.c (allocGlobal): don't turn S_REGISTER storage class
to S_FIXED for pic16 port and when symbol is not in level 0,
allocate for S_REGISTER storage class and pic16 port, too,
* src/pic16/device.h: prototype for checkSym,
* src/pic16/device.c (pic16_dump_access, checkSym): NEW,
* (pic16_assignConfigWordValue): test the value and the mask to
validate that the value is suitable for the configuration word,
* src/pic16/glue.c (pic16_printIvalFuncPtr): use 'externs' to
collect extern declared symbols, don't emit symbol twice, check
first if symbol is in publics set first,
* src/pic16/main.c (_pic16_keywords[]): added keyword 'register',
* added command line '--fstack' which enables an experimental
feature for stack access, too buggy to be used yet...
* src/pic16/ralloc.c (pic16_accessregWithName): NEW,
* (pic16_allocDirReg): when register has storage class S_REGISTER
allocate in pic16_dynAccessRegs,
* device/include/pic16/pic18f????.h: modified configuration word
naming convention, words started as CONFIG0H but should be CONFIG1H
* doc/sdccman.lyx: updated example in section "Absolute Addressing"
* src/mcs51/peeph.def: added contributed fix for "bug" #995347 as peephole 177.e. Thanks to anonymous
* src/pic16/glue.c (pic16_printIvalFuncPtr): when an extern
function isn't used in the source but referenced as a
variable initializer then declare it as extern in .asm file
* .version: increased version number to 2.4.3
Adding version extension according to ChangeLog CVS revision
* src/Makefile.in (target all): added dependency 'version.h'
* (rule version.h): added rule to create version.h from ChangeLog
* src/version.awk: AWK script to create version.h
* src/SDCCdwarf2.c (dwWriteModule),
* src/SDCCglue.c (initialComments),
* src/SDCCmain.c (printVersionInfo): modified to write after
version string the version extension number,
* src/SDCCutil.c: included "version.h"
* (getBuildNumber): NEW, returns SDCC's ChangeLog minor revision
number,
* src/SDCCutil.h: added prototype for getBuildNumber
* src/SDCCmain.c (parseCmdLine): when sOpt is 'I' add rest in
includeDirsSet, too,
* src/SDCCsymt.c (checkSClass): don't emit error when a variable,
const char [] is found in function prototype...
* src/pic16/genarith.c (pic16_genUMult8XLit_8): optimization to omit
moving to WREG with source is already in WREG,
* src/pic16/gen.h: added AOP_FSR0 and AOP_FSR2 in enum,
* src/pic16/gen.c (getFreePtr): updated to look for FSR0 and FSR2,
* (aopForSym): stack'ed symbols are partially supported, added
if-clause to support symbols in FARSPACE,
* (sameRegs): added test for AOP_ACC to see if registers are same,
* (pic16_freeAsmop): added case for AOP_FSR0 and AOP_FSR2,
* (pic16_aopGet): added case for AOP_FSR0 and AOP_FSR2,
* (pic16_popRegFromString): will not allocate a new register if it
doesn't find one by name, bug may have introduced...
* (pic16_popGet): added case for AOP_FSR0 and AOP_FSR2,
* (genIpush): revived to use pic16 port's stack,
* (genAddrOf): added incomplete case for stack'ed operand,
* (genCast): optimized a pair of MOVFW,MOVWF to MOVFF
* src/pic16/genutils.c (pic16_genNot): almot new vesrion for NOT,
can handle multibyte operands,
* src/pic16/glue.c (pic16_printIval*): some debug info added,
* (pic16initialComments): added message for MPLAB compatibility
mode enabled,
* src/pic16/main.h: prototype for pic16_mplab_comp,
* src/pic16/main.c (pic16_optionsTable): new option --mplab-comp,
which enabled MPLAB compatibility mode (i.e. no #LINE/#FILE, BANKED)
* (_pic16_linkEdit): NEW, handles link stage, transferred here
because of increased complexity of procedure,
* (_process_pragma): stack pragma changed to format 'stack pos len',
emit symbol '_stack_end' to conform with gplink,
* src/pic16/pcode.c (pic16_newpCodeOpBit): using pic16_regWithName
to search for register,
* (pic16_get_op, pic16_get_op2): added case for PO_W, PO_WREG and
PO_GPR_REGISTER,
* (pic16_pCode2str): when in MPLAB compatibility mode, comment out
#LINE directives and replace 'B' with 'BANKED' in instruction opcodes
* (pic16_getRegFromInstruction, pic16_getRegFromInstruction2): added
case for PO_GPR_REGISTER,
* (pic16_AnalyzeBanking): removed the old message for inc2h.pl, past
dies, the new era is ahead !...
* src/pic16/ralloc.c: added hash reposits pic16_dynAllocRegNames and
pic16_dynInternalRegs,
* (pic16_allocregWithName, pic16_procregWithName, pic16_regWithname): NEW,
* (pic16_allocDirReg): minor optimizations and bug fixes,
* (pic16_allocWithIdx): when searching pic16_dynProcessorRegs use fixed,
* device/lib/pic16/startup/crt0*.c: extern definition of stack_end,
load stack and frame pointer with address of 'stack_end' symbol
* src/SDCCmain.c (parseCmdLine): when sOpt is 'I' add rest in
includeDirsSet, too,
* src/SDCCsymt.c (checkSClass): don't emit error when a variable,
const char [] is found in function prototype...
* src/pic16/genarith.c (pic16_genUMult8XLit_8): optimization to omit
moving to WREG with source is already in WREG,
* src/pic16/gen.h: added AOP_FSR0 and AOP_FSR2 in enum,
* src/pic16/gen.c (getFreePtr): updated to look for FSR0 and FSR2,
* (aopForSym): stack'ed symbols are partially supported, added
if-clause to support symbols in FARSPACE,
* (sameRegs): added test for AOP_ACC to see if registers are same,
* (pic16_freeAsmop): added case for AOP_FSR0 and AOP_FSR2,
* (pic16_aopGet): added case for AOP_FSR0 and AOP_FSR2,
* (pic16_popRegFromString): will not allocate a new register if it
doesn't find one by name, bug may have introduced...
* (pic16_popGet): added case for AOP_FSR0 and AOP_FSR2,
* (genIpush): revived to use pic16 port's stack,
* (genAddrOf): added incomplete case for stack'ed operand,
* (genCast): optimized a pair of MOVFW,MOVWF to MOVFF
* src/pic16/genutils.c (pic16_genNot): almot new vesrion for NOT,
can handle multibyte operands,
* src/pic16/glue.c (pic16_printIval*): some debug info added,
* (pic16initialComments): added message for MPLAB compatibility
mode enabled,
* src/pic16/main.h: prototype for pic16_mplab_comp,
* src/pic16/main.c (pic16_optionsTable): new option --mplab-comp,
which enabled MPLAB compatibility mode (i.e. no #LINE/#FILE, BANKED)
* (_pic16_linkEdit): NEW, handles link stage, transferred here
because of increased complexity of procedure,
* src/pic16/pcode.c (pic16_newpCodeOpBit): using pic16_regWithName
to search for register,
* (pic16_get_op, pic16_get_op2): added case for PO_W, PO_WREG and
PO_GPR_REGISTER,
* (pic16_pCode2str): when in MPLAB compatibility mode, comment out
#LINE directives and replace 'B' with 'BANKED' in instruction opcodes
* (pic16_getRegFromInstruction, pic16_getRegFromInstruction2): added
case for PO_GPR_REGISTER,
* (pic16_AnalyzeBanking): removed the old message for inc2h.pl, past
dies, the new era is ahead !...
* src/pic16/ralloc.c: added hash reposits pic16_dynAllocRegNames and
pic16_dynInternalRegs,
* (pic16_allocregWithName, pic16_procregWithName, pic16_regWithname): NEW,
* (pic16_allocDirReg): minor optimizations and bug fixes,
* (pic16_allocWithIdx): when searching pic16_dynProcessorRegs use fixed,
Adding version extension according to ChangeLog CVS revision
* src/Makefile.in (target all): added dependency 'version.h'
* (rule version.h): added rule to create version.h from ChangeLog
* src/version.awk: AWK script to create version.h
* src/SDCCdwarf2.c (dwWriteModule),
* src/SDCCglue.c (initialComments),
* src/SDCCmain.c (printVersionInfo): modified to write after
version string the version extension number,
* src/SDCCutil.c: included "version.h"
* (getBuildNumber): NEW, returns SDCC's ChangeLog minor revision
number,
* src/SDCCutil.h: added prototype for getBuildNumber