frief [Sun, 28 Nov 2004 14:17:41 +0000 (14:17 +0000)]
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
maartenbrock [Fri, 26 Nov 2004 16:28:21 +0000 (16:28 +0000)]
* device/lib/printf_large.c (_print_format): fixed bug 1073386,
(calculate_digit): added optimization for octal and hex
* support/regression/tests/bug1057979.c: added test for bug 1073386
vrokas [Wed, 24 Nov 2004 00:20:50 +0000 (00:20 +0000)]
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,
epetrich [Sat, 20 Nov 2004 05:57:00 +0000 (05:57 +0000)]
* 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
frief [Fri, 19 Nov 2004 19:02:01 +0000 (19:02 +0000)]
* 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
maartenbrock [Thu, 18 Nov 2004 12:38:26 +0000 (12:38 +0000)]
* .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
maartenbrock [Sun, 14 Nov 2004 11:53:10 +0000 (11:53 +0000)]
* 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
maartenbrock [Thu, 11 Nov 2004 12:10:48 +0000 (12:10 +0000)]
* 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
vrokas [Thu, 4 Nov 2004 12:34:49 +0000 (12:34 +0000)]
2004-11-04 Vangelis Rokas <vrokas AT otenet.gr>
* src/pic16/main.c (options): added command line --gstack, to trace
stack over/under flows,
* added pragma 'wparam' to allow passing first byte of function
parameters via WREG, syntax is #pragma wparam my_function[, func2...]
* src/pic16/gen.c (pic16_testStackOverflow): function which emits a
call to __gstack_test function and sets up the symbol as extern,
* (pic16_pushpCodeOp, pic16_poppCodeOp, pushw, pushaop, popaopidx,
* popaop): added call to pic16_testStackOverflow,
* (wParamCmp, inWparamList): NEW, test existence of a symbol in
wparamList list,
* (genCall, genPcall): now all parameters are passed via stack
except in functions that are pass to wparam pragma in which WREG is
used too,
* (genPcall): REENTRANT flag is checked to see if variable prototype
contains reentrant keyword, don't call a non-reentrant function, via
a reentrant function pointer or vice versa, functions are never
passed via WREG,
* (genJumpTab): applied patch from bug #1057478 by R.Neider and
D.Winkler,
* src/pic16/glue.c (pic16emitRegularMap): fixed bug which caused a
SIGSEGV when accessing a NULL register stucture,
* (pic16_printGPointerType): modified to handle UPPER modifier for
function initializers, changed prototype of function to simpler one,
* (pic16_printIvalFuncPtr): check to see if function is already
added in externs list,
* src/pic16/pcoderegs.c (pCodeOptime2pCodes): fixed bug which
optimized a move from W to SFR with a move to the same register
later after a CALL,
* device/lib/pic16/debug: NEW directory, contains debug features
which are enabled when linking with libdebug.lib, currently command
line option --gstack enables stack pointer tracing for over/under
flow, corresponding sources are in debug/gstack
vrokas [Sat, 30 Oct 2004 11:15:15 +0000 (11:15 +0000)]
* doc/sdccman.lyx: updated SDCC version,
* (PIC16 port): update list of command line options,
* src/pic16/device.h (structure pic16_options_t): added field gstack
to enable stack overflow tracing on push/pops,
* src/pic16/device.c (statistics structure): added statistics
structure,
* (pic16_dump_access, pic16_dump_usection, pic16_dump_gsection,
pic16_dump_int_registers): increase statistics counters for each
* variable which is encountered
* (pic16_dump_usection): emit each .udata variable to its own udata
section,
* src/pic16/gen.c (assignResultValue, genCall, genPcall, genFunction):
when macro USE_WREG_IN_FUNC_PARAMS is set to 0 pass all function
parameters via stack, otherwise use old scheme,
* src/pic16/glue.c (pic16_emitStatistics): dump statistics in
assembler output file,
* src/pic16/main.c: added command line options --gstack to enable
push/pop tracing for stack overflow,
* src/pic16/pcode.c (all pCodeInstruction records for PIC18F
instructions): added size of each instruction,
* (pic16_countInstruction): estimate size of instructions in
the_pFile list, inline assembly blocks are not counted,
* (pic16_FixRegisterBanking): trace previous register usage, when
banksel optimizations is greater than 0, don't emit a redudant
banksel directive,
frief [Fri, 22 Oct 2004 11:29:13 +0000 (11:29 +0000)]
* device/lib/ser_ir_cts_rts.c: integer promotion caused a call to the
non-reentrant function __modsint in the interrupt function (thus
corrupting math operations during serial I/O)
* device/lib/ser_ir.c: as above, changed buffersize
* src/mcs51/peeph.def: added 259.a,b for removing redundant ret
* doc/Makefile: added option -t for rsync
frief [Fri, 22 Oct 2004 11:24:48 +0000 (11:24 +0000)]
integer promotion caused a call to the non-reentrant function __modsint in the interrupt
function (thus corrupting math operations during serial I/O),
ser_ir.c: as above, changed buffersize
vrokas [Wed, 20 Oct 2004 14:02:16 +0000 (14:02 +0000)]
* device/lib/pic16/libsdcc/Makefile: added lregs directory in
makefile targets,
* device/lib/pic16/libsdcc/lregs/{Makefile,lrst.c,lrrest.c}: NEW
support functions to replace long sequences of MOVFF's from access
bank registers to stack and vice versa,
* src/pic16/device.h: added new field opt_flags, where optimization
flags can be set to enable certain features,
* src/pic16/gen.c (pic16_emitpinfo): NEW to add PC_INFO pCode in
* pBlock, (genFunction, genEndFunction): surroung loop for
saving/loading used registers in stack with PC_INFO pCodes,
INF_LREGS. Code in between can then be optimized by pCode optimizer
to support function calls,
* (genDataPointerSet): fixed bug which loaded float fields in
structures with corrupt data,
* src/pic16/genutils.c (debugf, _debugf): macro/function which emits
in a standard way debug info on stderr. Feature used for developing
and debugging only,
* src/pic16/glue.c (pic16glue): reformatted, deleted some old and
obsolete chunks of code,
* if optimization flag OF_LR_SUPPORT was set, call pic16_OptimizeLocalRegs,
* src/pic16/main.c (_pic16_parseOptions): added handler for --flr-support,
* pic16/src/pcode.c (pic16_newpCodeInfo,
* (pic16_newpCodeOpLocalRegs),
* (pic16_convertLocalRegs2Support): NEW, to support new optimization
feature,
* (pic16_pCodeConstString): printing of the initial value of a
symbol as a comment is inhibited since parsing was already done by
copyStr and output is corrupt,
* (pic16_pCode2str, genericPrint): handle PC_INFO pCode,
maartenbrock [Tue, 19 Oct 2004 11:10:37 +0000 (11:10 +0000)]
* as/mcs51/lkarea.c: removed old K&R style,
(lnksect): changed check on boundary error,
(lnksect2): changed check on boundary error,
(lnksect2): extend XSTK to end of page if size = 1
* as/mcs51/lkmain.c: removed old K&R style,
(Areas51): create l_IRAM symbol
* as/mcs51/lkmem.c (summary2): added report on PSEG and XSTK
* device/lib/Makefile.in: renamed model-mcs51-reentrant to
model-mcs51-stack-auto, added model-mcs51-xstack-auto
* device/lib/_mullong.c: added version to be compiled with xstack
* device/lib/mcs51/crtclear.asm: clear only upto --iram-size
* device/lib/mcs51/crtxclear.asm: clear pdata as well
* device/lib/mcs51/crtxstack.asm: fixed comment
* src/SDCCglue.c: maxInterrupts defaults to 0,
(emitMaps): added pdata,
(createInterruptVect): (re)moved default,
(glue): added pdata,
(glue): moved __start__xstack to XSTK with default size 1
* src/SDCCmain.c (parseCmdLine): automatically set options.intlong_rent
and options.float_rent when options.stackAuto is set,
(linkEdit): only write XDATA_NAME if provided on command line
* src/SDCCmem.h,
* src/SDCCmem.c: added pdata
* src/port.h: added pdata_name to PORT
* src/mcs51/gen.c (toBoolean): fixed for Acc use of aopGet,
(saveRegisters, unsaveRegisters): removed usage of B,
(genMinus): fixed accumulator clash,
(genJumpTab): added comment, this needs another look
* src/mcs51/gen.c: added check for "B in use" paranoia,
added pushB() and popB()
* src/mcs51/peeph.def: restart after 177.c so 177.a can get a second
chance
* src/avr/main.c,
* src/ds390/main.c,
* src/hc08/main.c,
* src/mcs51/main.c,
* src/pic/main.c,
* src/pic16/main.c,
* src/xa51/main.c,
* src/z80/main.c: (reset_regparms) made void parameter explicit and
added PSEG (PAG,XDATA) or NULL to port specifier
* src/ds390/main.c (_ds390_genIVT): moved implemented default in here
* src/mcs51/main.c (_mcs51_genIVT): moved implemented default in here,
(_mcs51_genInitStartup): removed __start__xstack equ,
(mcs51_port): moved xstack from XSEG (XDATA) to XSTK (PAG,XDATA)
* src/pic16/device.c (pic16_dump_usection, pic16_dump_isection),
* src/z80/gen.c (_rleAppend): fixed warnings
* support/regression/tests/zeropad.c: added pdata test
* .version: bumped to 2.4.6
vrokas [Sat, 16 Oct 2004 14:48:33 +0000 (14:48 +0000)]
2004-10-16 Vangelis Rokas <vrokas AT otenet.gr>
* device/include/pic16/math.h: included sdcc-lib.h,
* device/lib/pic16/startup/crt*.c: startup function marked _naked
* src/pic16/gen.c (struct _G): added field useWreg, is set to 1 when
WREG holds the first byte function parameters,
* (aopForSym): take special case for symbols which are in FARSPACE
but in CODESPACE too,
* (assignResultValue): modified to take into account _G.useWreg,
* (genCall): don't use wreg for parameter passing when function is
declared as reentrant, too, added optimization INCF to stack
pointer when stack parameter count is 1,
* (genFunction, genEndFunction): refurnished and fixed to not using
wreg for passing parameters when function has varargs or is
reentrant, fixed bug with symbol name compare for generating
functions in absolute address,
* (pic16_storeForReturn): refurnished,
* (genCmp): began writing a new version of the function, not ready
yet, therefore it is disabled,
* (genAssign): do not read code memory when assigning a function to
a pointer function,
* src/pic16/glue.c (pic16emitStaticSeg): abSym->name is defined an
array of characters, not pointer,
* (pic16initialComments): in debug mode emit an .ident directive for
the assembler,
* (_process_pragma): emit a new warning type (internal to pic16)
when setting stack to default length, emit a similar warning when
placing a function at absolute address and address is not word aligned
* (_pic16_parseOptions): added 'return TRUE' statement,
* (_pic16_linkEdit): if compiling a source, then add the source's
file object, first in the list of objects to link,
vrokas [Tue, 12 Oct 2004 09:49:27 +0000 (09:49 +0000)]
* device/lib/pic16/libsdcc/gptr/gptrput[234].c: an external
reference to a deprecated symbol _GPTRREG was causing failure to
link. Thanks G. M. Gallant for the info.
vrokas [Tue, 12 Oct 2004 09:48:19 +0000 (09:48 +0000)]
* device/lib/pic16/libsdcc/gptr/gptrput[234].c: an external
reference to a deprecated symbol _GPTRREG was causing failure to
link. Thanks G. M. Gallant for the info.
* src/pic16/*.dsp: added CR-LF at eol so MSVC can read them
vrokas [Sun, 10 Oct 2004 20:50:36 +0000 (20:50 +0000)]
* src/pic16/device.c (pic16_dump_gsection,
* pic16_groupRegistersInSection): handle symbols declared to be in
access bank differently,
* src/pic16/gen.c (struct _G): added field resDirect,
* (aopForSym): if symbol on stack and iCode is '=' and result exists,
send values read from stack directly to result and don't allocate
temporary values,
* (pic16_sameRegs): fixed bug that allowed MOVFF to move between
same registers,
* (pic16_sameRegsOfs): NEW,
* (freeAsmop): if _G.resDirect is set then do not mark registers as
free because they were not allocated from temporary pool,
* pic16_popRegFromString): workaround to fix a problem with
allocating variables twice or never,
* (genGenPointerGet): using PRODL instead of FSR0H,
* (genGenPointerSet): using POSTDEC1 (that is a stack location)
instead of FSR0H,
* (genAssign): take advantage of the _G.resDirect flag,
* (genCast): around line 11844, use mov2f instead of directly
MOVFF'ing between operands to account for literal values,
* src/pic16/genutils.c: some new debug functions for gpsim have been
added,
* src/pic16/glue.c (pic16_printIvalType): fixed bug that initialized
float with integer part only,
* src/pic16/main.c (_process_pragma): handle pragma udata access to
place variables in access bank
* device/lib/pic16/libsdcc/gptr/gptr*.c: using BRA instead of GOTO,
updated sources to reflect recent changes in gen.c
vrokas [Sun, 10 Oct 2004 20:45:19 +0000 (20:45 +0000)]
* src/pic16/device.c (pic16_dump_gsection,
* pic16_groupRegistersInSection): handle symbols declared to be in
access bank differently,
* src/pic16/gen.c (struct _G): added field resDirect,
* (aopForSym): if symbol on stack and iCode is '=' and result exists,
send values read from stack directly to result and don't allocate
temporary values,
* (pic16_sameRegs): fixed bug that allowed MOVFF to move between
same registers,
* (pic16_sameRegsOfs): NEW,
* (freeAsmop): if _G.resDirect is set then do not mark registers as
free because they were not allocated from temporary pool,
* pic16_popRegFromString): workaround to fix a problem with
allocating variables twice or never,
* (genGenPointerGet): using PRODL instead of FSR0H,
* (genGenPointerSet): using POSTDEC1 (that is a stack location)
instead of FSR0H,
* (genAssign): take advantage of the _G.resDirect flag,
* (genCast): around line 11844, use mov2f instead of directly
MOVFF'ing between operands to account for literal values,
* src/pic16/genutils.c: some new debug functions for gpsim have been
added,
* src/pic16/glue.c (pic16_printIvalType): fixed bug that initialized
float with integer part only,
* src/pic16/main.c (_process_pragma): handle pragma udata access to
place variables in access bank
* device/lib/pic16/libsdcc/gptr/gptr*.c: using BRA instead of GOTO,
updated sources to reflect recent changes in gen.c
vrokas [Wed, 6 Oct 2004 01:07:12 +0000 (01:07 +0000)]
* device/lib/pic16/libsdcc/Makefile.rules: fixed bug concerning
sources that searched for headers in installation path, now the
device/include/pic16 is used,
* src/pic16/glue.c (pic16glue),
* src/pic16/pcode.c (pCode2str, genericPrint): don't print .file or
.line directives if not in debug mode, this suppresses assembler's
warnings for ignored directives
maartenbrock [Tue, 5 Oct 2004 10:59:23 +0000 (10:59 +0000)]
* src/port.h: made reset_regparms prototype void parameter explicit.
* src/SDCCsymt.c (processFuncArgs): removed argument "func".
* src/mcs51/ralloc.c (packRegisters): new fix for bugs 898889 & 979599.
* doc/sdccman.lyx: documented warning disabling and how to use
printf_large to make it print floats.
* device/include/stdbool.h: NEW
* device/lib/_atof.c,
* device/lib/_divuint.c,
* device/lib/_divulong.c,
* device/lib/expf.c,
* device/lib/printf_large.c,
* device/lib/sincosf.c,
* device/lib/sincoshf.c: used stdbool.h, all compile with stack-auto now
* device/lib/Makefile.in: added target for model-mcs51-reentrant to build
a completely reentrant lib.
vrokas [Sun, 3 Oct 2004 01:10:21 +0000 (01:10 +0000)]
* device/lib/Makefile.in (target port-specific-objects-pic16):
changed * to *.* so to ignore the CVS directory,
* src/pic16/gen.c (pic16_freeAsmop): added code to store result of
stacked variables back in stack,
* (genEndFunction): fixed bug reported by G.M. Gallant with stack
corruption
vrokas [Fri, 1 Oct 2004 14:49:51 +0000 (14:49 +0000)]
* .version: bumped version number to 2.4.5
* support/Util/SDCCerr.h: added warning W_POSSBUG2.
* support/Util/SDCCerr.c (messages structure): added entry for
W_POSSBUG2
Large cumulative patch for pic16 port and libraries.
* device/include/pic16/sdcc-lib.h,
* device/include/asm/pic16/features.h: NEW,
* device/include/pic16/float.h: changes reentrant keyword with
_FS_REENTRANT, added prototype for __fsneq, included sdcc-lib.h
* device/lib/pic16/libsdcc/Makefile: added target directory gptr,
updated target build-libraries to include objects from gptr,
* device/lib/pic16/libsdcc/{char,int,long}/*.c: added macro
_IL_REENTRANT to all function headings, included sdcc-lib.h header,
* device/lib/pic16/libsdcc/float/*.c: added macro _FS_REENTRANT to
all function headings,
* src/SDCCmain.c: added global parameter userIncDirsSet,
* (parseCmdLine): when option -I is encountered add directory to
userIncDirsSet too,
* src/version.awk: added space between control and long,
* src/pic16/NOTES: added some notes for the port,
* src/pic16/gen.c: added prototype for mov2fp function,
* (fReturnpic16[]): properly named return value registers,
* (_G structure): added fields stackRegSet, fregsUsed, stack_lat,
* (aopForSym): added code to handle symbols with onStack flag set,
symbols onStack are allocated PTRSIZE bytes,
* (aopFreeAsmop): handles special case where asmops are stack objects,
* (aopGet, pic16_popGet): adde cod to handle new asmop AOP_STA,
* (pic16_popGetTempReg, pic16_popGetTempRegCond, pic16_popReleaseTempReg):
added argument lock to trace flaws in allocating temporary registers
when developing port,
* (pic16_popGetLit, pic16_popGetLit2): changed lit from unsigned to signed
* (pic16_popRegFromString): reenabled allocating a direct register
from string,
* (assignResultValue): various beautifications,
* fixed bug #1037717 (patch from R. Neider & D. Wrinkler) with mistaken
referenced function argument,
* (genIpush): reenabled to allow stacked arguments, handles only
ic->parmPush iCodes,
* (genCall, genPcall): major changes to allow for variable argument
functions, fixed a bug with falsely restoring stack pointer after
returning from call,
* (genFunction): pending code for critical function,
* (shiftR1Left2ResultSigned, shiftR1Left2Result, shiftL2Left2Result,
* (shiftR2Left2Result, shiftLLong) applied patch #1032155 from R.Neider,
* (genNearPointerGet): fixed bug with indirect reading, was always
reading from INDF0
* (genGenPointerGet, genGenPointerSet): rewrote to support generic
pointers,
* (genAddrOf): rewrote code to take address of a stacked function parameter
* (genCast): fixed casting to generic pointer type,
* src/pic16/gen.h: added AOP_STA,
* (struct asmop): added field stk,
* src/pic16/genarith.c (pic16_AopType): handle AOP_STA,
* (pic16_genPlusIncr): changed emitSKPNZ to emitSKPNZ,
* (pic16_genAddLit, pic16_genPlus): applied patch #1034042 by tecodev,
* (pic16_genMinus): fixed bug #1035119 with patch submitted by tecodev,
* src/pic16/genutils.c (pic16_genNot): removed symbol *tlbl,
* src/pic16/glue.c (pic16_printGPPointerType): fixed to support new
generic pointers,
* src/pic16/main.c (_pic16_initPaths): ignores default SDCC include
and library paths,
* (pic16_port structure): generic pointer size is set to 3,
* src/pic16/pcode.c (pic16_newpCodeOpLit): correctly print literal integer,
* (insertBankSwitch): cast to (char *) to prevent 64bit CPUs'
compiler warning,
* src/pic16/ralloc.c (allocReg): prevent allocating register when
operand is an iTemp,
* src/SDCCicode.h,
* src/SDCCicode.c (isiCodeInFunctionCall),
* src/avr/ralloc.c (selectSpil),
* src/pic/ralloc.c (selectSpil),
* src/pic16/ralloc.c (selectSpil),
* src/ds390/ralloc.c (selectSpil),
* src/hc08/ralloc.c (selectSpil),
* src/xa51/ralloc.c (selectSpil),
* src/mcs51/ralloc.c (selectSpil): Don't use remainSpil to spill to the
stack in the middle of a function call sequence (fixes bug #1020268)
* src/SDCCicode.c (geniCodeJumpTable): fixed error in computing the
costs associated with the minimum switch case.
* src/SDCCcse.h (struct cseDef),
* src/SDCCcse.c (cseBBlock, newCseDef, ifFromAddrTaken): purge CSEs
over a function call if the CSE is derived from a symbol whose
address has been taken (fixes bug #1029883)
* support/regression/tests/bug-1029883: a new regression test for
this bug
* src/hc08/gen.c (emitinline): fixed bug #1029778
* src/SDCC.y (assignment_expr): fixed the grammer so that assignment
to a cast object is no longer a syntax error ("fixes" bug #1030006,
and starts toward RFE #905167)
* src/pic16/gen.c (mov2f): New function to move an operand to
another without considering if it is a literal or a register,
* (pic16_sameRegs): don't check if they are both AOP_REG,
* (AccRsh): removed andmask=0 lines,
* (genLeftShift): duplicated to be improved in future versions,
* src/pic16/main.c (_process_pragma): emit stack default size in hex,
* src/pic16/pcode.c: added POC_INFSNZW, updated inverted_op fields
in POC_INCFSZ, POC_INCFSZW, POC_INFSNZ,
* (pic16initMnemonics): added initialization for POC_INFSNZW,
* (insertBankSwitch): fixed inserting banksel directives algorithm
for instructions that follow a skip instruction, this fixes a report
for broken subtraction code generation,
* src/pic16/ralloc.c (deassignLRs): do not free register if current
iCode is a left op, just in case result and right share the same
registers
* src/hc08/main.c,
* src/hc08/gen.c (genJumpTable): more efficient jump table, supports
preservation of HX
* src/hc08/gen.c (pullRegs): fixed order of HX & XA pairs
* src/mcs51/ralloc.c (packRegisters): removed the patch applied
on 2004-09-12; it was buggy
* src/SDCCicode.c (piCode): applied patch from Raphael Neider,
* src/pic16/device.c (pic16_assignConfigWordValues): wrong
configuration values no more rejected by compiler, they are assigned
to configuration registers with a warning message instead,
* src/pic16/glue.c (pic16_emitConfigRegs): added +1 at top-limit of
the for-loop so last conf register is emitted too,
* (_pic16_initPaths): link library libsdcc.lib by default,
* (_hasNativeMulFor): modified test for multiplication according to
Raphael Neider's remarks. Integer multiplication is also done with
support functions,
* device/include/pic16/pic18fregs.h: corrected type error in while
testing and including 18f6720 header file
* src/pic16/device.h (pic16_options): removed field use_crt,
* src/pic16/gen.c (genUnpackBits): added call to pic16_loadFSR0
until an optimization to handle single bits is added,
* (pic16_loadFSR0): moved before genUnpackBits,
* (genAnd): some white lines removed,
* src/pic16/main.c (_pic16_finaliseOptions): set omit_ivt and clear
leave_reset flags in pic16_options when using crt modules,
* src/pic16/device.h (pic16_options_t): added field use_crt,
crt_name, no_crt,
* src/pic16/genarith.c (pic16_genPlus): added an assert(0) line to
catch a probable future bug,
* src/pic16/gen.c: aopIdx function commented out,
* (genAssign): commented out old code which used aopIdx,
* src/pic16/glue.c (pic16glue): removed some legacy fragments of
code, added if conditionals to take into account the --use-crt
command line options,
* src/pic16/main.c (pic16_optionsTable): added new command line
options, --use-crt= and --no-crt,
* (_pic16_linkEdit): now the proper crt object is added in the
linker command line except than when --no-crt is specified,
* pcode.c,
* pcode.h: added some structures and functions for a new
optimization scheme to compansete for instruction overhead between
same iCodes, this scheme is currently under development and is not
working in any way,
* src/pic16/gen.c (genAnd): added patch provided by Aaron Collwell
to && operator,
* device/lib/pic16/startup/crt0i.c,
* device/lib/pic16/startup/crt0iz.c: added global char variable
__uflags to force the generation of an idata section