X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=ChangeLog;h=ea84b81c0abde80a9825f665718035f445cc874a;hb=9f96f0d9232d7813c296a5b69155541a8bf0a112;hp=e9d4a05c26ce654d765ad0815703c395b985e6c0;hpb=05ca13907af274b53739c9d1ec853db0a3a164d9;p=fw%2Fsdcc diff --git a/ChangeLog b/ChangeLog index e9d4a05c..ea84b81c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,991 @@ +2004-10-12 Slade Rich + + * src/pic/pcode.c : Applied a code patch supplied by Paul Ashmore in comments for Bugs item #954788. + +2004-10-10 Vangelis Rokas + + * 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 + +2004-10-06 Vangelis Rokas + + * 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 + +2004-10-05 Maarten Brock + + * 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. + +2004-10-05 Vangelis Rokas + + * device/lib/pic16/libsdcc/gptr/gptr*.c: added return statements + * device/include/pic16/stdio.h: fixed bug with colon + +2004-10-03 Vangelis Rokas + + * device/include/pic16/stdio.h, + * device/include/pic16/stdlib.h, + * device/include/pic16/math.h: NEW + * device/lib/pic16/libsdcc/gptr/*.c (gptrget*, gptrput*): functions + declared as _naked to reduce overhead + * 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 + +2004-10-01 Vangelis Rokas + + * .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/pic16/stdarg.h, + * device/include/asm/pic16/features.h, + * device/include/lib/pic16/libsdcc/gptr/{*.c, Makefile}: 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, + +2004-09-24 Martin Helmling + + * debugger/mcs51/cmd.c: set PC if a symbol at pc reg is set + * debugger/mcs51/simi.c: addapt new syntax of s51 + +2004-09-23 Vangelis Rokas + + * src/pic16/genutils.c (pic16_genNot): fixed bug #1032265, + * src/pic16/pcode.c: commented out some calls to free() in order to + fix bug #989576, + +2004-09-23 Erik Petrich + + * 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. + +2004-09-19 Erik Petrich + + * src/SDCC.lex: fixed bug #1030549 + +2004-09-19 Erik Petrich + + * 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 + +2004-09-18 Erik Petrich + + * 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) + +2004-09-17 Vangelis Rokas + + * 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 + +2004-09-16 Erik Petrich + + * 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 + +2004-09-15 Bernhard Held + + * src/SDCCsymt.h: removed RESULT_CHECK + * src/SDCCast.c, + * src/SDCCglue.c, + * src/SDCCval.c, + * src/pic/glue.c, + * src/pic16/glue.c: replaced RESULT_CHECK with RESULT_TYPE_NONE + +2004-09-15 Vangelis Rokas + + * 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 + +2004-09-14 Vangelis Rokas + + * 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, + +2004-09-12 Maarten Brock + + * src/mcs51/ralloc.c (packRegisters): applied fix by Bernhard Held + for bugs 898889 & 979599. Also used some safer print instructions. + +2004-09-12 Vangelis Rokas + + * 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, + * src/pic16/pcode.c, + * src/pic16/pcode.h: added some structures and functions for a new + optimization scheme to compansate 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 + +2004-09-12 Bernhard Held + + * doc/Makefile, + * doc/clean.mk: added support for easy creation of sdcc-doc.tar.bz2 + * doc/sdccman.lyx: updated sdcc version to 2.4.4 + +2004-09-10 Erik Petrich + + * doc/sdccman.lyx: fixed a problem with my new index entries (thanks + Frieder) and clarified the default code optimization mode + +2004-09-10 Erik Petrich + + * src/SDCC.lex (doPragma, process_pragma), + * src/SDCCglobl.h (struct optimize): added pragmas "opt_code_speed", + "opt_code_size", and "opt_code_balanced" + * src/SDCCmain.c (optionsTable[], printOptions, scanOptionsTable): + regrouped options by category, added support for category headers + * src/SDCCmain.c (parseCmdLine): added options "--opt-code-speed" + and "--opt-code-size" + * doc/sdccman.lyx: documented these new options and pragmas + * src/hc08/gen.c (AccLsh, AccRsh): take speed/size optimization + preference into account + +2004-09-08 Maarten Brock + + * src/SDCCicode.c (geniCodePostInc, geniCodePreInc, geniCodePostDec, + geniCodePreDec): Fixed bug 904237 by generating a warning + * src/SDCCerr.h, + * src/SDCCerr.c: added warning W_SIZEOF_VOID + +2004-09-09 Slade Rich + + * src/pic/device.c : When no max ram set validate full memory range. + * src/pic/pcode.c, + * src/pic/pcodepeep.c : Copy C code comments to optimised replacement code. + +2004-09-08 Maarten Brock + + * device/lib/_gptrget.c, + * device/lib/_gptrput.c: updated comment + * device/lib/calloc.c, + * device/lib/free.c, + * device/lib/malloc.c, + * device/lib/realloc.c: added LGPL, made them reentrant-safe + * src/SDCCcse.c (cseBBlock), + * src/SDCCicode.c (printOperand, geniCodeArray), + * src/SDCCicode.h (struct operand): fixed bug 868103 + * support/regression/tests/bug-868103.c: added + * src/SDCCast.c (searchLitOp), + * src/SDCCcse.h (struct cseDef), + * src/SDCCglue.c (printIvalArray, spacesToUnderscores), + * src/SDCCicode.h (struct operand), + * src/SDCCsymt.h (struct sym_link), + * src/avr/gen.c (hasInc), + * src/ds390/gen.c (hasInc), + * src/hc08/gen.c (genPlusIncr, hasInc), + * src/mcs51/gen.c (hasInc), + * src/pic16/glue.c (pic16_printIvalChar), + * src/pic16/ralloc.c (regWithIdx), + * src/xa51/gen.c (hasInc) : removed warnings + * src/SDCCast.c (createBlock): added comment ??? + * src/hc08/ralloc.c: updated comments + +2004-09-07 Frieder Ferlemann + + * doc/sdccman.lyx: updated section on switch statements, added + section about semaphore locking + * doc/Makefile: added option -info for latex2html + * device/lib/_gptrget.c, + * device/lib/_gptrput.c: __XPAGE instead of P2 in outcommented code + +2004-09-06 Slade Rich + + * src/pic/device.h, + * src/pic/device.c, + * src/pic/port.c : Changed PIC14 code to not set bit RP1 when + maxram is less than 0x100. + +2004-09-06 Slade Rich + + * Bug fixes for PIC14 - signed RSHIFT problem. Patch supplied by Allen(agschrum). + +2004-09-06 Erik Petrich + + * 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. + +2004-09-02 Erik Petrich + + * src/hc08/ralloc.c (canDefAccResult): multi-byte shift is unsafe for + accumulator result if it needs sign extension + +2004-09-02 Maarten Brock + + * src/hc08/ralloc.c (canUseAccOperand): fixed comparison bug + +2004-09-02 Maarten Brock + + * device/lib/gbz80/printf.c, + * device/lib/z80/printf.c: removed define for NULL + +2004-09-02 Maarten Brock + + * as/xa51/xa_link.c, + * device/examples/ds390/ow390/ad26.c, + * device/examples/ds390/ow390/cnt1d.c, + * device/examples/ds390/ow390/counter.c, + * device/examples/ds390/ow390/ds2480.h, + * device/examples/ds390/ow390/ds2480ut.c, + * device/examples/ds390/ow390/findtype.c, + * device/examples/ds390/ow390/gethumd.c, + * device/examples/ds390/ow390/owllu.c, + * device/examples/ds390/ow390/ownetu.c, + * device/examples/ds390/ow390/swt12.c, + * device/examples/ds390/ow390/swtloop.c, + * device/examples/ds390/ow390/temp.c, + * device/examples/ds390/ow390/temp10.c, + * device/examples/ds390/ow390/thermo21.c, + * device/examples/ds390/ow390/tinilnk.c, + * device/examples/ds390/ow390/tstfind.c, + * device/examples/serialcomm/windows/serial.cpp, + * device/examples/serialcomm/windows/test_serialcomm.cpp, + * device/include/reg51.h: fixed line endings for cvs + +2004-09-02 Erik Petrich + + * src/hc08/ralloc.c (canDefAccResult, canUseAccOperand, + packRegsForAccUse, packRegisters): new accumulator register + packing algorithm + * support/regression/ports/hc08/support.c (_putchar): suppress + warning of unused variable + * src/SDCCicode.c: added SWAP entry to codeTable + +2004-09-01 Maarten Brock + + * device/lib/sprintf.c: forgot to add this file before previous commit + +2004-09-01 Vangelis Rokas + + * 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, + +2004-08-31 Maarten Brock + + * device/include/stdio.h: added NULL, size_t, typedef pfn_outputchar, + _print_format; updated printf, sprintf, vsprintf + * device/include/asm/default/features.h: corrected comment/define + * device/lib/Makefile.in: added sprintf.c + * device/lib/libsdcc.lib: added sprintf module + * device/lib/printf_large.c, + * device/lib/vprintf.c, + * device/lib/sprintf.c: totally refactored printf_large and vprintf + into these 3 files + * support/regression/Makefile: changed ALL_PORTS into a usefull default + * support/regression/ports/mcs51-stack-auto/spec.mk: added sprintf + * support/regression/tests/bug-927659.c: removed dummy putchar, enabled + hc08 test + * support/regression/tests/zeropad.c: define idata as data for hc08 + +2004-08-31 Erik Petrich + + * 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) + +2004-08-30 Erik Petrich + + * device/lib/acosf.c (acosf), + * device/lib/asinf.c (asinf), + * device/lib/atanf.c (atanf), + * device/lib/ceilf.c (ceilf), + * device/lib/cosf.c (cosf), + * device/lib/coshf.c (coshf), + * device/lib/cotf.c (cotf), + * device/lib/fabsf.c (fabsf), + * device/lib/floorf.c (floorf), + * device/lib/log10f.c (log10f), + * device/lib/logf.c (logf), + * device/lib/sinf.c (sinf), + * device/lib/sinhf.c (sinhf), + * device/lib/sqrtf.c (sqrtf), + * device/lib/tanf.c (tanf), + * device/lib/tanhf.c (tanhf), + * device/include/math.h: defined _FLOAT_FUNC_REENTRANT macro and + replaced all instances of "reentrant" in the library functions + defined in math.h with this macro. + * support/regression/tests/float_trans.c: reenabled test for hc08 + +2004-08-30 Bernhard Held + + * device/lib/pic16/Makefile.common.in: added MODELFLAGS again, it was + erroneously deleted + +2004-08-30 Erik Petrich + + * 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 + + +2004-08-29 Bernhard Held + + * device/lib/pic16/Makefile.common.in: added $(MM) to fix `make clean` + * Makefile.common.in, + * as/Makefile, + * as/hc08/Makefile.in, + * as/mcs51/Makefile.in, + * as/z80/Makefile.in, + * debugger/mcs51/Makefile.in, + * device/include/Makefile.in, + * device/lib/Makefile.in, + * doc/Makefile, + * link/Makefile, + * link/z80/Makefile.in, + * packihx/Makefile.in, + * sim/ucsim/main_in.mk, + * sim/ucsim/avr.src/Makefile.in, + * sim/ucsim/doc/Makefile.in, + * sim/ucsim/gui.src/serio.src/Makefile.in, + * sim/ucsim/hc08.src/Makefile.in, + * sim/ucsim/s51.src/Makefile.in, + * sim/ucsim/xa.src/Makefile.in, + * sim/ucsim/z80.src/Makefile.in, + * src/Makefile.in, + * support/cpp2/Makefile.in, + * support/librarian/Makefile, + * support/makebin/Makefile: added DESTDIR to the install path proposed + by "Maciej 'Agaran' Pijanka" + * doc/sdccman.lyx: added DESTDIR documentation + +2004-08-29 Vangelis Rokas (vrokas AT otenet.gr> + + * src/pic16/gen.c (genFunction, genEndFunction): fixed return + instruction for interrupt handlers, use fast returns when returning + from high priority interrupts + +2004-08-29 Erik Petrich + + * 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) + +2004-08-28 Erik Petrich + + * src/hc08/gen.c (shiftL2Left2Result): fix for bug-500536 regression + test + +2004-08-28 Erik Petrich + + * 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 + +2004-08-27 Erik Petrich + + * src/hc08/gen.c (genPackBitsImmed, genUnpackBitsImmed): fix offset + problem in bitfields >= 8 bits. + +2004-08-27 Maarten Brock + + * src/SDCCsymt.c: undid changes that were not meant to be committed + +2004-08-27 Maarten Brock + + * support/regression/ports/hc08spec.mk: REENTRANT must be reentrant + +2004-08-27 Maarten Brock + + * src/hc08/gen.c (genUminusFloat): fixed bug where only 3 bytes were + copied and wrong bit got inverted + +2004-08-27 Erik Petrich + + * 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 + +2004-08-24 Erik Petrich + + * src/mcs51/gen.c (genPointerGet, genNearPointerGet, genPagedPointerGet, + genFarPointerGet, genCodePointerGet, genGenPointerGet, genUnpackBits), + * src/mcs51/ralloc.c (packRegisters): optimize pointer get values used + as conditionals + +2004-08-22 Frieder Ferlemann + + * src/mcs51/peeph.def: peepholes 248.i-m for xdata bitfields + +2004-08-21 Erik Petrich + + * src/mcs51/ralloc.c (packRegsForOneuse): fixed bug #1012650 and some + related problems + +2004-08-21 Bernhard Held + + * sim/ucsim/cmd.src/Makefile.in: run lex only if $(PRJDIR)/devel exists + +2004-08-18 Erik Petrich + + * src/z80/ralloc.c (packRegsForAssign): ported some bug fixes from the + mcs51 port + +2004-08-16 Slade Rich + + * src/pic/gen.c: Restored fn genRet as previous fix was incorrect. + +2004-08-14 Frieder Ferlemann + + * src/mcs51/gen.c (genJumpTab): jumptables for more than 16 switch + cases use more compact code. + +2004-08-13 Slade Rich + + * src/pic/gen.c: Fixed problem with fn returning a variable bigger than a char. + +2004-08-12 Erik Petrich + + * src/SDCClrange.c (findPrevUse): fixed bug #1007371 + +2004-08-12 Erik Petrich + + * 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 + +2004-08-12 Slade Rich + + * src/pic/glue.c: Added struct initialisation fn printIvalStruct. + +2004-08-11 Slade Rich + + * src/pic/gen.c, + * src/pic/pcode.c, + * src/pic/ralloc.h, + * src/pic/ralloc.c: Printing rIdx on internal verbose debug. + +2004-08-10 Slade Rich + + * src/pic/device.c, + * src/pic/device.h, + * src/pic/device.c: Will no longer exit if #pragma maxram has not been defined. + +2004-08-06 Erik Petrich + + * src/mcs51/gen.c (emitcode): fixed bug #992819 + +2004-08-05 Maarten Brock + + * src/pic/ralloc.c (deassignLR): allthough pic port is buggy already, + there's no need to make it worse + +2004-08-05 Erik Petrich + + * src/mcs51/ralloc.c (deassignLR), + * src/ds390/ralloc.c (deassignLR), + * src/hc08/ralloc.c (deassignLR), + * src/z80/ralloc.c (deassignLR), + * src/pic/ralloc.c (deassignLR), + * src/pic16/ralloc.c (deassignLR), + * src/avr/ralloc.c (deassignLR), + * src/SDCClrange.c (findRecursiveSucc, findRecursivePred, findPrevUse, + rlivePoint): fixed another part of bug #971834 + +2004-08-04 Erik Petrich + + * src/z80/main.c: enabled "critical" keyword + * src/z80/mappings.i, + * src/z80/gen.c (genFunction, genEndFunction): support for interrupt + functions (fixes bug #979646) + * doc/sdccman.lyx: added a subsection explaining z80 interrupt support + +2004-08-04 Jesus Calvino-Fraga + + * src/mcs51/gen.c (genInline): Add \n for labels, not DOS/WIN dirs + such as c:\mydir. + +2004-08-03 Maarten Brock + + * src/SDCCloop.c (loopInvariants): fixed bug 983545, hope this + doesn't disable too much optimizations + +2004-08-02 Slade Rich + + * src/pic/glue.c Disabled "WARNING: function 'main' undefined" when -S option is used. + +2004-08-02 Maarten Brock + + * src/SDCClrange.c (rlivePoint): fixed bug 988568, thanks to anonymous + +2004-08-02 Slade Rich + + * src/pic/gen.c tidied up tabs + * src/pic/genarith.c tidied up tabs and fixed bug with literal multiple where same register was used for hi and low byte + * src/pic/main.c tidied up tabs + * src/pic/pcode.c tidied up tabs and disabled verbose code generation + * src/pic/pcoderegs.c tidied up tabs + * src/pic/ralloc.c tidied up tabs + +2004-07-30 Vangelis Rokas + + * 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 + +2004-07-29 Maarten Brock + + * device/include/mcs51reg.h: fixed bug 970993 + +2004-07-27 Maarten Brock + + * added lib/calloc.c, lib/free.c, lib/realloc.c, include/stddef.h + * updated lib/malloc.c, lib/libsdcc.lib, lib/Makefile.in, include/malloc.h + * src/SDCC.lex (doPragma): added pragma disable_warning + * src/SDCCmain.c (parseCmdLine): added option --disable-warning + * src/ds390/gen.c (genPlusIncr): fixed bug when incrementing generic pointers + * support/Util/SDCCerr.c (vwerror): suppress disabled warnings and output + error/warning numbers, + added function setWarningDisabled() + * support/Util/SDCCerr.h: added setWarningDisabled() and MAX_ERROR_WARNING + * support/regression/ports/mcs51-stack-auto/spec.mk: added dependencies + _memcmp.c _memmove.c calloc.c realloc.c free.c + * support/regression/tests/malloc.c: added tests for new functionality + * support/regression/tests/zeropad.c: added tests for truncated initializers + and initialized char arrays starting with '\x0' + * src/mcs51/peeph.def: fixed regression, added peephole 177.f + +2004-07-26 Bernhard Held + + * support/valdiag/tests/overflow.c: fixed warning on (1 >> 40) + +2004-07-26 Frieder Ferlemann + + * 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 + +2004-07-25 Vangelis Rokas + + * 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 + +2004-07-24 Vangelis Rokas + + * .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, + * (rule dep): added dependency version.h, + * 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 + +2004-07-23 Vangelis Rokas + + * src/pic16/glue.c (pic16emitStaticSeg): fixed bug with files + without source code but only variable initializers + +2004-07-20 Vangelis Rokas + + * src/pic16/glue.c (pic16emitRegularMap): unused functions marked as + external are not declared as extern to reduce overhead while linking + +2004-07-20 Maarten Brock + + * src/SDCCast.c (decorateType): removed buggy fix for bug #979599 + +2004-07-11 Maarten Brock + + * src/SDCCglue.c (printIvalArray): fixed bug #984229, thanks to Phuah + Yee Keat for the patch + * src/SDCCast.c (decorateType): fixed bug #979599 + * src/ds390/gen.h: removed local fReturnSizeDS390 + * src/ds390/gen.c: made fReturnSizeDS390 signed short to remove a warning + * src/ds390/gen.c (genAnd, genOr, genXor), + * src/mcs51/gen.c (genAnd, genOr, genXor): generate better optimized code + +2004-07-04 Vangelis Rokas + + * src/SDCCmain.c (linkEdit): modifications only for pic16 port, + add relFilesSet to $3, manipulate $2 to handle linking of object + files without source files in command line, + * device/include/pic16 (all headers): added ID location macros, + * src/pic16/device.c (struct PIC16_device Pics16[]): added field + entries for ID location bytes, + * (pic16_assignIdByteValue): NEW, + * src/pic16/device.h: new structures idRegInfo_t and idBytesInfo_t, + added field dumpcalltree to pic16_options_t, + * src/pic16/gen.c (genCmp): fixed bug case so a temporary register + is used instead of pic16_Gstack_base_addr, check if (ifx) before + emitting rFalseIfx label after check_carry label, + * src/pic16/glue.c (PIC16_IS_IDLOC_ADDRESS, PIC16_IS_HWREG_ADDRESS, + pic16_emitDIRegs), NEW + * (pic16glue): dump .calltree file when option --calltree found, + * src/pic16/main.c (OPTION _pic16_optionsTable): new option --calltree + * (_pic16_genAssemblerPreamble): emit ID locations after + configuration registers, + * (pic16_linkCmd): modifications of the link command, + * src/pic16/pcode.c (pic16_pciMOVFF): PCC_REGISTER replaces PCC_REGISTER2 + * (pic16_pCodeInitRegisters): don't init stack registers, + * (pic16_findPrevInstruction): fixed bug, + * (pic16_getRegFromInstruction, pic16_getRegFromInstruction2): fixed + bug with immediate registers, + * (buildCallTree): traces stack push and pop, + * (pct2): dump also stack usage for each function, + * src/pic16/ralloc.c (dynrIdx): registers names start from 0x00 + * (pic16_allocDirReg): various modifications, + * (pic16_typeRegWithIdx): when searching pic16_dynProcessorRegs set + fixed to 1, + +2004-07-02 Vangelis Rokas + + * src/pic16/pcode.c: removed buggy double colon + +2004-07-01 Borut Razem + + * support/scripts/sdcc.nsi: added include/pic16 to setup + +2004-06-30 Vangelis Rokas + + * device/lib/Makefile.in: fixed bug in target objects-pic16, + * device/lib/pic16/Makefile: prefixed with dash (-) command under + target 'clean', + * doc/sdccman.lyx: changed version to 2.4.2 and added some port + specific command line arguments. Also added sample lkr script + for placing a variable at a specific memory bank. + * src/pic16/device.c (pic16_dump_gsection): NEW, to dump variables + at a specific memory bank, + * (pic16_dump_isection): fixed bug which caused string literals to + be omitted when dumping idata section, + * (pic16_groupRegistersInSection): added code to handle registers + in specific memory banks, + * src/pic16/gen.c: labelOffset is prefixed with pic16_ and made + public, all references are renamed too, + * (pic16_aopGet): removed switch cases for AOP_R0,AOP_R1,AOP_DPTR, + AOP_DPTR2, + * (pic16_storeForReturn): added case to handle when dest is WREG, + * src/pic16/genarith.c (pic16_pCodeOpSubType): NEW, + * src/pic16/glue.c (pic16emitRegularMap): when adding a register in + pic16_rel_udata, check to see if that register is marked as being + a member of a specific memory bank, + * (pic16_printIvalCharPtr): added code to add string literals either + to code or the idata sections, + * src/pic16/main.c (_process_pragma): added \n to WHITE constant, + also accept the 'udata' pragma, + * src/pic16/main.h: new structure types sectName and sectSym + * src/pic16/pcode.c: added new pCodeInstruction entry for BANKSEL + * (newpCodeOpBit): added PIC_OPTYPE subt in function prototype, + * (pic16_findPrevInstruction): fixed, it returned nothing, + * (insertBankSwitch): fixed to emit banksel/skip and skip/banksel + instruction combinations, + * (pic16_FixRegisterBanking): heavily reorganised, + * (pic16_AnalyzeBanking): if generating banksel directives is + disabled, then don't call FixRegisterBanking at all, + * src/pic16/ralloc.c (bitEQUs, aliasEQUs, allDefsOutOfRange): + completely removed, + * (pic16_writeUsedRegisters): added call to pic16_dump_gsection + +2004-06-29 Bernhard Held + + * src/SDCCglue.c (printChar): fixed bug #973350, patch provided by + Phuah Yee Keat + +2004-06-28 Vangelis Rokas + + * src/pic16/glue.c (pic16createInterruptVect): function now emits + correctly the IVT even if it is relocated to some other location + 2004-06-28 Vangelis Rokas * device/include/pic16/pic18fregs.h: added case for pic18f2220.h @@ -16,8 +1004,8 @@ 2004-06-25 Frieder Ferlemann - * src/mcs51/peeph.def: added peepholes 182.d (return 0.0), - 256 (range check), 257 (do while), 258.a-f (bit banging + * src/mcs51/peeph.def: added peepholes 182.d (return 0.0), + 256 (range check), 257 (do while), 258.a-f (bit banging f.e. on 3-wire SPI bus) 2004-06-21 Erik Petrich @@ -89,7 +1077,7 @@ * src/z80/ralloc.c (serialRegAssign), * src/ds390/ralloc.c (serialRegAssign), * src/mcs51/ralloc.c (serialRegAssign): fixed bug #964479 - + 2004-06-08 Erik Petrich * src/SDCCicode.c (geniCodeJumpTable): fixed bug #967601 @@ -114,7 +1102,7 @@ command argument --denable-peeps, for testing, * device/lib/pic16/startup/Makefile: added --no-peep,--pomit-config-words, --pomit-ivt in COMPILE_FLAGS - + 2004-06-06 Maarten Brock * src/pic16/pcode.c (pic16_emitDB): removed double semicolon which fails @@ -6141,3 +7129,5 @@ * as/mcs51/aslink.h: accept everything as symbol name in rel-files, bug fix ID 452601 * as/mcs51/lklex.c: accept everything as symbol name in rel-files, bug fix ID 452601 * as/mcs51/lksym.c: accept everything as symbol name in rel-files, bug fix ID 452601 + +$Revision$