2006-04-28 Bernhard Held * device/lib/pic/libdev/Makefile.in, * device/lib/hc08/Makefile.in, * device/lib/gbz80/Makefile.in, * device/lib/z80/Makefile.in, * device/lib/ds390/Makefile.in, * device/lib/ds400/Makefile.in: added srcdir to include search path, thanks to Borut for the bug report 2006-04-28 Raphael Neider * src/pic/{gen.c,main.h,pcode.c}, * src/pic16/{gen.c,pcode.c}: quietened compiler warnings concerning signedness with casts 2006-04-28 Raphael Neider * src/pic/gen.c (genFunction): set global pic14_hasInterrupt on definition of an interrupt handler, * src/pic/glue.c (pic14_emitInterruptHandler): moved output of interrupt handler stuff from picglue() to separate routine, (picglue): enabled definition of intr handlers in files w/o main() 2006-04-26 Maarten Brock * support/librarian/sdcclib.c: moved include up to enable compilation with MSVC 2005 Express Edition (VC8) 2006-04-26 Bernhard Held * device/lib/Makefile: fixed build of gbz80 lib 2006-04-26 Maarten Brock * support/regression/tests/bug-460010.c, * support/regression/tests/bug-524691.c, * support/regression/tests/bug-716242.c: removed conditional defines that are already in testfwk.h 2006-04-25 Maarten Brock * src/ds390/gen.c (AccAXRrl1, AccAXLrl1): changed to real rotate by 1, (AccAXRsh1): added, shift right by 1, (AccAXLsh, AccAXRsh, AccAXRshS): updated for AccAXRrl1, AccAXRsh1 and AccAXLrl1 * support/regression/tests/rotate.c: use and enabled ds390 2006-04-25 Bernhard Held * src/SDCCast.c (decorateType): partial fix for RFE 1475769, remove cast to same type * src/SDCCast.c (decorateType): fix for RFE 1475742, optimize 'ifx (op == 0)' resp. 'ifx (op != 0)' * as/z80/Makefile, * link/z80/Makefile: removed, they have moved to Makefile.in files * configure, * configure.in: replaced duplicate message about ucsim by missing sdcpp * install-sh: fix bug #1204398 by setting umask 0022 * device/lib/Makefile: separate build of z80 and gbz80 lib 2006-04-24 Bernhard Held Enabled VPATH feature: changed nearly all Makefiles (149 files). See sdccman.lyx '2.4.10 VPATH feature' about how to use it. One basic decision: e.g. src/clean.mk includes further files. In order to make this work there are two solutions: - rename another dozen clean.mk to clean_in.mk, add srcdir to them and run configure on them. This way they can use 'include $(srcdir)/port-clean.mk' - always include clean.mk by the Makefile at the same level. To avoid that `make clean` tries to include and build Makefile.dep the MAKECMDGOALS are examined (see e.g. src/Makefile.in). This has been implemented, because now even `make uninstall` doesn't create Makefile.in. clean.mk could be eliminated by pasting it in Makefile.in. * debugger/mcs51/Makefile.in: build own objects from library sources (SLIB, SDCC) in current directory * configure, configure.in: renamed --disable-device-lib-build in --disable-device-lib; added --enable-doc, the required tools are searched by configure; added result message; the toolchain for the belonging ports are now only built, if the port is enabled. * support/regression/*: all output is written in directory gen, because the fwk and ports directories don't livet in the build tree using vpath * doc/sdccman.lyx: renamed --disable-device-lib-build to --disable-device-lib, added --enable-doc, added section VPATH * sim/ucsim/configure.in, * sim/ucsim/configure.in: hc08 couldn't be disabled, now hc08 and z80 are enabled by default 2006-04-24 Raphael Neider * src/pic/device.c (pic14_assignConfigWordValue): remember assignments to config word, "pic14_"-prefixed some extern functions (pic14_emitConfigWord): emit __config directive(s) if assignment to config word has been found * src/pic/device.h: added prototypes * src/pic/pcode.c: added "pic14_"-prefix where needed * src/pic/ralloc.c (IS_CONFIG_ADDRESS,pic14_assignRegisters): cosmetic fixup * src/pic/glue.c (pic14_constructAbsMap): handle assignments to config words, (pic14emitRegularMap): ignore config words, (pic14createInterruptVect): moved generating __config directives away (picglue): have __config directives emitted 2006-04-24 Borut Razem * doc/Makefile: sync with nightly build makefile 2006-04-24 Raphael Neider * src/pic/pcoderegs.c (OptimizeRegUsage): do not optimize registers that have not been assigned proper liveranges, fixes #1469504 and #1474602, (pCodeRegOptimizeRegUsage): fixed typo in comment 2006-04-24 Borut Razem * device/examples/main8051.c: deleted - it was removed from CVS 24.mar.2000 and after that modified 18.feb.2001, so it reappered after the transition to Subversion * src/SDCCalloc.h: deleted - it was removed from CVS 3.feb.2001 and after that modified 18.feb.2001, so it reappered after the transition to Subversion * sim/ucsim/cpu.gif, sim/ucsim/interrupt.gif, sim/ucsim/new.gif, sim/ucsim/serial1.gif, sim/ucsim/serial2.gif, sim/ucsim/term_cpuopt.gif, sim/ucsim/timers.gif, sim/ucsim/wins.gif, sim/ucsim/post.jpg, sim/ucsim/UCsim.jpg: corrected 2006-04-22 Maarten Brock * as/asx8051.dsp: added mcs51/strcmpi.h * as/hc08/as_hc08.dsp: added asm.h, m6808.h, strcmpi.h * as/hc08/aslink.h: updated lnksect prototype * as/hc08/asm.h, * as/mcs51/asm.h: added a_addr to struct area and s_org to struct sym * as/hc08/asmain.c, * as/mcs51/asmain.c (asmbl): init dot.s_org for S_ORG, (newdot): handle A_ABS * as/hc08/asout.c, * as/mcs51/asout.c (outarea): output address * as/hc08/lkaomf51.c, * as/mcs51/lkaomf51.c: disabled unused array UsageType * as/hc08/m08pst.c, * as/mcs51/i51pst.c, * as/z80/z80pst.c: "ABS" is not A_OVR * as/hc08/lkarea.c (newarea): read a_addr, (lnkarea): added codemap array, sort absolute areas to the front, combine all GSINITx/GSFINAL, (find_empty_space, allocate_space): new functions, (lnksect): return next address, handle absolute sections * as/mcs51/lkarea.c (newarea): read a_addr, lnksect2 prototype changed, (lnkarea2): define codemap unsigned, combine all GSINITx/GSFINAL, (find_empty_space, allocate_space): new, factored out of lnksect2, (lnksect2): return next address, handle absolute sections * as/hc08/lkhead.c, * as/mcs51/lkhead.c (newhead): head is absolute but not overlay * as/hc08/lklibr.c (addfile, fndsym), * as/mcs51/lklibr.c (addfile, buildlibraryindex, fndsym): prevent index out of range and detect both '\' and '/' * device/include/mcs51/c8051f200.h: added _XPAGE, removed bad comment * device/include/stdbool.h: removed SDCC_ds390 from check to pass regression tests (ds390 cannot return bool yet) * doc/sdccman.lyx: changed version number, document changed --no-peep, document critical interrupts on z80, document changed SDCC define * src/asm.c (_asxxxx_mapping): fixed .org directive, (_a390_mapping): added .org directive * src/hc08/gen.c (transferAopAop): made bytemask log to fix warning, (genMultOneByte): fixed warnings * src/hc08/hc08.dsp: lowered warning level to 2 to suppress pedantic ones * src/pic16/device.c: removed newReg prototype, removed BYTE_IN_LONG * src/pic16/gen.c (pic16_popGetLabel): made parameter key signed, (pic16_genLeftShiftLiteral, genRightShiftLiteral): fixed warnings * src/pic16/gen.h: changed prototype for pic16_popGetLabel * src/pic16/main.c: removed newReg prototype * src/pic16/pcode.c, * src/pic16/pcode.h (pic16_emitDB): changed parameter c to int to fix warnings * src/pic16/pic16.dsp: lowered warning level to 2 to suppress pedantic ones * src/pic16/ralloc.c * src/pic16/ralloc.h (newReg): changed type to int and size to unsigned to fix warnings * src/pic/pcode.c (allocInternalRegister): changed parameter optype from short to PIC_OPTYPE * src/pic/pic.dsp: lowered warning level to 2 to suppress pedantic ones * src/pic/ralloc.c (newReg, allocInternalRegister): changed parameter optype from short to PIC_OPTYPE * src/port.h: made int_size unsigned to fix warnings * src/SDCC.y: fixed warning on MSVC * src/SDCCicode.c (getArraySizePtr): return unsigned int * src/SDCCopt.c (convertToFcall): fixed warnings * src/SDCCsymt.h: removed double prototype for genSymName * src/xa51/ralloc.c (allocReg): made size unsigned int, type int and offset int to fix warnings 2006-04-22 Borut Razem * doc/sdccman.lyx, */Makefile, */Makefile.in: references to CVS replaced with Subversion 2006-04-21 Borut Razem * doc/sdccman.lyx, */Makefile, */Makefile.in: references to CVS replaced with Subversion 2006-04-19 Borut Razem * src/version.awk: adapted for svn * /asxxxx/asxhtml/*.gif: set property svn:mime-type to image/gif sim/ucsim/doc/*.gif: set property svn:mime-type to image/gif sim/ucsim/doc/*.jpg: set property svn:mime-type to image/jpeg /binutils-avr/etc/*.vi, *.jin: removed all properties support/scripts/sdcc.ico: set property svn:mime-type to image/x-icon 2006-04-19 Borut Razem * CVS to Subversion migration completed 2006-04-18 Borut Razem * support/scripts/sdcc.nsi: removed unexisting ${DEV_ROOT}\lib\pic\*.o, ${DEV_ROOT}\lib\src\pic\libdev\*.S, ${DEV_ROOT}\lib\src\pic\libdev\*.inc 2006-04-17 Borut Razem * device/include/Makefile.in: added pic/*.inc to the installation 2006-04-15 Bernhard Held * support/regression/collate-results.py: fixed output in case of a valdiag error * support/regression/generate-cases.py: fixed splitting of pathnames with dots * as/hc08/lklibr.c (addfile), * as/mcs51/lklibr.c (addfile): fixed off-by-one bug 2006-04-11 Raphael Neider * src/pic16/gen.c (getFreePtr, pic16_popRegFromString), * src/pic16/ralloc.c (pic16_allocregWithName): removed debug output * src/pic16/pcode.c (assignValnums): fixed #1460578 2006-04-11 Raphael Neider * device/lib/pic/libdev/*.c, * device/include/pic/*.h: replaced sfr and data with __sfr and __data, fixes #1468739, enables compilation in --std-c99 mode * support/scripts/inc2h.pl: emit __sfr/__data instead of sfr/data 2006-04-11 Raphael Neider * src/pic/device.c (find_device): removed debug output (list_valid_pics): enabled verbose listing of supported devices * device/include/stdbool.h: define bool as char for pic14/16 as well 2006-04-07 Frieder Ferlemann * src/SDCC.y: allow using brackets here: "__interrupt (1) __using (1)" 2006-04-07 Maarten Brock * .version: bumped version to 2.5.6 * src/pic/ralloc.c (newReg): MSVC doesn't support __builtin_return_address 2006-04-06 Raphael Neider * .version: bumped version to 2.5.6 (pic14 ABI changed) * src/SDCCmain.c: add -DSDCC_PROCESSOR= for pic14 port * src/pic/glue.c (emitSymbolToFile,pic14_constructAbsMap, pic14emitRegularMap,pic14emitMaps): moved output for absolute symbols to pic14_constructAbsMap (pic14printPublics): declare absolute global symbols as global (pic14createInterruptVect), * src/pic/ralloc.c (IS_CONFIG_ADDRESS): support second config word, (newReg): assume new registers unused, use correct name in hashtable (reg->name instead of name), more debugLog output * src/pic/device.h (PIC_device): added fields for verbose output * src/pic/device.c: moved device definition to pic14devices.txt, added routines for runtime parsing of pic14devices.txt, added support for second config word * src/pic/main.c (_process_pragma): removed #pragma maxram, (_pic14_keywords): no longer accept "bit" and "sbit" keywords (_pic14_initPaths): add search paths with "pic" suffix (not "pic14") (_pic14_parseOptions): moved pCodeInitRegisters here (_pic14_do_link): add "pic$(ARCH).lib" to linker arguments * src/pic/pcode.c (AnalyzeBanking): bail out on unset processor, (pCodeInitRegisters): rewrapped comments, perpared new approach to handling the pseudo stack * device/lib/Makefile.in: ignore failures in objects-pic16, * device/lib/pic/{configure,configure.in,Makefile}: added libdev/ * device/lib/pic/NEWS: document new dependency on picXXX.lib * device/lib/pic/Makefile.subdir, * device/lib/pic16/Makefile.subdir: improved clean rules * device/lib/pic/libdev/: NEW, pic14 device libraries * device/lib/pic/libsdcc/_gptr{get,put}{1,2,3,4}.S: use _X not X * device/lib/pic/libsdcc/macros.inc: use _X not X, declare default SFRs * device/include/Makefile.in: create subdir and install pic14 headers * device/include/pic/p16f_common.inc: removed unused declarations * device/include/pic/pic16*.h: added header files for 100+ 14 bit PICs from inc2h.pl v1.6, replaced BIT_AT macros with struct declarations * device/include/pic/pic14devices.txt: definition of supported devices, all above improvements contributed by Zik Saleeba, thanks * support/scripts/inc2h.pl: removed BIT_AT, replaced with structs * support/scripts/sdcc.nsi: also install pic14 device libraries and headers 2006-04-06 Maarten Brock * device/include/mcs51/c8051f410.h: added interrupt numbers, * device/include/mcs51/c8051f200.h: old SiLabs mcu completes the list, thanks to Charles Olds 2006-04-06 Frieder Ferlemann * debugger/mcs51/cmd.c (infoRegisters): show return address on stack 2006-04-06 Maarten Brock * src/SDCCpeeph.c (labelIsReturnOnly): fixed bug 1464657 * src/mcs51/gen.c (genJumpTab): fixed bug in medium model * support/regression/bug1464657.c: added, new test 2006-04-05 Maarten Brock * src/SDCCmain.c (preProcess): implemented RFE 1449908, define SDCC as the version number 2006-04-05 Maarten Brock * src/SDCCpeeph.c (initPeepHole): implemented RFE 1460196, when both --no-peep and --peep-file are used don't use default rules but do use the 2006-04-05 Maarten Brock * src/mcs51/gen.c (genCall): fixed bug 1457608 2006-03-30 Frieder Ferlemann * doc/sdccman.lyx: reverted to version 1.129 of december as my latest changes seem to cause (trigger?) problems with the build system. 2006-03-29 Maarten Brock * src/SDCCpeeph.c (operandsLiteral): new, added, (callFuncByName): inserted operandsLiteral * src/mcs51/peeph.def: reenabled 132.e, added extra check to 132.x 2006-03-28 Frieder Ferlemann * doc/sdccman.lyx: added paragraph "Use of SDCC in Education" * src/mcs51/peeph.def: disabled rule 132.e fixing bug #1453093 2006-03-24 Maarten Brock * src/z80/gen.c (genFunction, genEndFunction): fixed bug 1160666, implemented patch 1120823 Thanks to Willy De la Court (normal interrupts need an interrupt number now if they are made critical), and enabled nesting of critical functions though not for gbz80 (genCritical, genEndCritical): added functions (genZ80Code): added cases for CRITICAL and ENDCRITICAL * src/z80/mappings.i: added "ei" to all mappings 2006-03-20 Frieder Ferlemann * sim/ucsim/cmd.src/newcmdcl.h: applied patch fixing GCC 4.1 build submitted by the Debian SDCC maintainer Aurelien Jarno: "Credits goes to Martin Michlmayr, who rebuilt the whole Debian archive with gcc 4.1 on mips and wrote the patch" 2006-03-16 Raphael Neider * src/pic16/genarith.c (genAddLit): simplified and fixed case where the left operand is shorter than the result (c* = lit-c* + int), fixes bug #1450796 * src/pic16/gen.c (genRightShift): check IS_SYMOP before accessing OP_SYMBOL 2006-03-14 Vangelis Rokas * src/.version: increased version number to 2.5.5 * src/SDCCmain.c (linkEdit): do not test for PIC16 target since, PIC16 linking is done manually in pic16 port's _linkEdit, * src/SDCCsymt.c (compStructSize): for target PIC16 and shell variable PIC16_PACKED_BITFIELDS, compact bitfield structures as much as possible, * src/pic16/gen.c (aopForSym): when direct register name is WREG then allocate asmop as AOP_ACC, (aopForRemat): added parameter 'bool result' in function declaration, (pic16_aopGet): return AOP_ACC when accessing WREG, (pic16_popGetTempReg): minor modification, (pic16_popRegFromIdx): first try with 'pic16_regWithIdx' then with 'pic16_allocWithIdx', (genPcall): removed ftype, usage of OP_SYM_TYPE asserted error when calling function in absolute addresses, (genAssign): take into account AOP_ACC asmop, * src/pic16/pcode.c (pic16_newpCodeOpReg): minor modifications, * src/pic16/pcoderegs.c: some debug functions and lines added, * src/pic16/ralloc.c (decodeRegType): added but commented out, * (pic16_typeRegWithIdx): search 'pic16_dynInternalRegs' for given register too, * (pic16_findFreeReg, pic16_findFreeRegNext): allocate new register via call to allocReg, not by manually allocating a new one, (pic16_assignRegisters): now before going through the register allocating functions mark all registers as free. This eliminates some side effects resulting from peephole parser done earlier in the backbone 2006-03-13 Maarten Brock * src/SDCCicode.c (geniCodeLogic), * src/SDCCast.c (decorateType): applied patch by Bernhard for rfe 1422617 2006-03-10 Maarten Brock * src/mcs51/gen.c (sameReg): new, checks if two aop regs are the same, (genSend): bugfix, do not allocate and free twice, (shiftRLong): handle partially overlapping aops * support/regression/tests/bitopcse.c: fixed warning redefined idata 2006-03-08 Borut Razem * support/regression/fwk/include/testfwk.h: added defines for xdata, idata for pic16 2006-03-08 Maarten Brock * support/regression/tests/bug1409955.c: new, added * src/mcs51/gen.h: changed asmop.freed:1 to asmop.allocated for tracking * src/mcs51/gen.c (newAsmop): set asmop.allocated to 1, (aopForSym, aopOp): increment asmop.allocated if reused, (freeAsmop): decrement asmop.allocated and check for zero instead of using asmop.freed, (freeForBranchAsmop): use asmop.allocated instead of asmop.freed, (genNot, genCpl, genUminus, genMinus, genMult, genDiv, genMod, genCmpGt, genCmpLt, genAndOp, genOrOp, genAnd, genOr, genXor, genRRC, genRLC, genGetHbit, genGetAbit, genGetByte, genGetWord, genSwap, genLeftShiftLiteral, genLeftShift, genRightShiftLiteral, genSignedRightShift, genRightShift, genDataPointerGet, genPagedPointerGet, genFarPointerGet, genCodePointerGet, genGenPointerGet, genDataPointerSet, genAssign, genCast): free asmop's in reverse order from allocation, (genPlus, genCmpEq): free asmop's in reverse order from allocation and added swappedLR to keep track * support/regression/fwk/include/testfwk.h: added defines for xdata, idata, pdata & code for GCC, z80, gbz80 & hc08 * support/regression/tests/zeropad.c: moved defines to testfwk.h 2006-03-08 Raphael Neider * src/pic16/main.c (_hasNativeMulFor): fixed bug #1444425 2006-03-07 Maarten Brock * device/include/mcs51/c8051f410.h: new SiLabs mcu * src/ds390/peeph.def: disabled 186.d and 227.a as fix for #1434401 * support/regression/tests/array.c: added parenthesis, made arrays unsigned 2006-03-06 Borut Razem * support/regression/ports/pic16/spec.mk: link with libm18f.lib, made the linker quiet 2006-03-06 Vangelis Rokas * src/pic16/gen.c (genPcall): fixed bug #1443644 * src/pic16/device.h (struct pic16_options_t): added 'int CATregs' flag which dumps before the function entry point a data byte which represents the number of the local variables used by the specified function, added 'xinst' for initial support for Extended Instruction Support, * src/pic16/gen.c (aopForSym, pic16_aopGet): beautifications, (pic16_testStackOverflow): do not prefix GSTACK_TEST_NAME with port->fun_prefix anymore (may change later), (genFunction, genEndFunction): do not store/restore local registers for _main (this should take care the --main-return command line option in the future), (genOr): removed some legacy pic-port instructions, * src/pic16/genarith.c (genAddLit): re-enabled old code because performing operations with SFR's causes data to be written more than once to each SFR. Perhaps SFRs should be handled in special cases... * src/pic16/glue.c: macros BIG_ENDIAN and BYTE_IN_LONG are moved to pcode.h * src/pic16/main.c (_process_pragma): stack bound checking did not take into account for stack starting position, (struct OPTIONS pic16_optionsTable): added command line argument --extended or -y for Extended Instruction Support, * src/pic16/ralloc.c (pic16_decodeOp): added case for FUNCTION, (deassignLRs): *** perhaps the most important change, old 'for' code (commented out for reference), didn't account for some registers which were left marked 'not free' after a pointer operation. The change reduces register usage a lot in some cases 2006-03-04 Borut Razem * support/regression/ports/hc08/spec.mk: remove *.asm in traget _clean * support/regression/tests/bug-524697.c: decreased array size for mcs51 to fit into the internal RAM * support/regression/Makefile.in: a little bit more verbose 2006-03-03 Borut Razem * support/regression/fwk/lib/testfwk.c, support/regression/fwk/include/testfwk.h: introduced function _prints(), nonrecursive _printn(), call _initEmu() from main() * support/regression/ports/gbz80/support.asm, support/regression/ports/ucz80/support.asm, support/regression/ports/z80/support.asm, support/regression/ports/ds390/support.c, support/regression/ports/hc08/support.c, support/regression/ports/host/support.c, support/regression/ports/mcs51/support.c, support/regression/ports/xa51/support.c: added empty _initEmu() function * support/regression/ports/pic16/gpsim.cmd, support/regression/ports/pic16/spec.mk, support/regression/ports/pic16/support.c, support/regression/Makefile.in: added pic16 regression test 2006-03-01 Raphael Neider * src/pic16/gen.c (genPcall,pic16_derefPtr,genGenPointerGet, genConstPointerGet): use safe way of generating MOVFF to cover literals as well as registers, fixes bug #1440527 * src/pic16/glue.c (pic16_printIvalBitFields): prevent NULL pointer dereference (pic16_printIvalUnion,pic16_isUnion): NEW, handle initialized unions more correctly, fixes bug #1232186 (pic16_printIval): use pic16_printIvalUnion() for initialized unions * src/pic16/main.c (_pic16_linkEdit): reorder linker arguments to make gplink guess the correct processor in more cases, applied patch from Till Riedel attached to and fixing bug #1436552 2006-02-20 Frieder Ferlemann * support/regression/tests/array.c: added, contains check for #1434401 * src/mcs51/peeph.def: disabled 186.d as temporary fix for #1434401 2006-02-16 Maarten Brock * device/include/mcs51/at89s8253.h: new, thanks to Krzysztof Polomka * device/include/mcs51/at89S8252.h: fixed, thanks to Krzysztof Polomka * device/include/mcs51/c8051f326.h, * device/include/mcs51/c8051f340.h: new SiLabs mcu's * device/include/mcs51/c8051f000.h, * device/include/mcs51/c8051f018.h, * device/include/mcs51/c8051f020.h: used () with __at, renamed IDLE,STOP to PCON_IDLE,PCON_STOP and added sfr16 definitions 2006-02-14 Maarten Brock * src/mcs51/gen.c (genPlus, genMinus, genMult, genGetAbit, genGetByte, genGetWord): fixed bug 1409955 2006-02-14 Maarten Brock * device/include/hc08/mc68hc908gp32.h, * device/include/hc08/mc68hc908jb8.h: removed AWUL, added PTA6 & PTA7 2006-02-13 Maarten Brock * src/SDCCast.c (constExprValue): return NULL if not a value * src/SDCCglue.c (printIvalArray): fixed bug 1225568 * src/hc08/gen.c(genUnpackBits, genUnpackBitsImmed): fixed bug 1019480 * support/regression/tests/bitfields.c: enabled signed bitfield for all 2006-02-13 Borut Razem * src/regression/ptrarg.c: added, fails due to bug #1430967 * src/regression/Makefile: ptrarg.c added, ... 2006-02-12 Maarten Brock * src/z80/gen.c (genUnpackBits): fixed bug 1019480 * support/regression/tests/bitfields.c: enabled signed bitfield for z80 2006-02-11 Borut Razem * src/SDCCmain.c: Added "sdcc: Calling linker..." if --verbose, print "Processor: xxx" message to stdout only if --verbose 2006-02-11 Maarten Brock * src/SDCCglue.c (printIvalStruct): fixed bug 1426356 union initializer * support/regression/tests/bug1426356.c: added * support/regression/tests/bitfields.c: removed 2 tests 2006-02-10 Maarten Brock * device/include/mcs51/at89c51snd1c.h: updated comments, see patch 1428901 * device/include/mcs51/c8051f330.h, * device/include/mcs51/c8051f350.h: used () with __at, renamed IDLE,STOP to PCON_IDLE,PCON_STOP and added sfr16 definitions * device/lib/_divsint.c, * device/lib/_divuint.c, * device/lib/_divulong.c, * device/lib/_divulong.c: renamed a,b to x,y to avoid confusion, fixed register bank bug for small stackauto 2006-02-09 Maarten Brock * support/regression/fwk/lib/timeout.c: include for exit() 2006-02-08 Maarten Brock * support/regression/ports/mcs51-xstack-auto/spec.mk: forgot -I(...)/mcs51 * all.dsp: corrected several bin paths * device/include/mcs51/c8051f120.h, * device/include/mcs51/c8051f300.h, * device/include/mcs51/c8051f310.h: used () with __at and renamed IDLE,STOP to PCON_IDLE,PCON_STOP * device/include/mcs51/c8051f320.h: see above, also added sfr16 definitions * device/lib/printf_large.c (output_float): fixed bug 1388703 * support/regression/tests/bug1057979.c: added test for bug 1388703 2006-02-08 Raphael Neider * src/pic/pcode.c (pciTRIS): fixed typo, (BuildFlow,LinkFlow_pCode): added (disabled) debug output, (LinkFlow): fixed handling of flows that end in a call, (ReuseReg): perform safety check earlier * src/pic/pcoderegs.c (pCodeRegMapLiveRangesInFlow): fixed to work with flows at the beginning of a pBlock, fixes #1426557 (Symbol not previously defined), (pic14_ReMapLiveRanges): NEW, destroy and rebuild register usage information (RemoveUnusedRegisters): update register usage info * src/pic/ralloc.c (newReg): prevent duplicate registers from being created, reuse existing ones instead * src/pic/gen.c (genPcall): fixed #1424719 2006-02-07 Bernhard Held * link/z80/lkmain.c, * link/z80/lklex.c, * link/z80/lkdata.c, * link/z80/aslink.h: fixed build on current cygwin: replaced getline() by lk_getline() 2006-02-01 Borut Razem * src/regression/add.c, src/regression/add2.c, src/regression/add3.c, src/regression/add4.c, src/regression/and1.c, src/regression/and2.c, src/regression/arrays.c, src/regression/b.c, src/regression/bank1.c, src/regression/bool1.c, src/regression/bool2.c, src/regression/bool3.c, src/regression/call1.c, src/regression/compare.c, src/regression/compare10.c, src/regression/compare2.c, src/regression/compare3.c, src/regression/compare4.c, src/regression/compare5.c, src/regression/compare6.c, src/regression/compare7.c, src/regression/compare8.c, src/regression/compare9.c, src/regression/configword.c, src/regression/for.c, src/regression/inline.c, src/regression/mult1.c, src/regression/nestfor.c, src/regression/or1.c, src/regression/pointer1.c, src/regression/ptrfunc.c, src/regression/rotate1.c, src/regression/rotate2.c, src/regression/rotate3.c, src/regression/rotate4.c, src/regression/rotate5.c, src/regression/rotate6.c, src/regression/rotate7.c, src/regression/string1.c, src/regression/struct1.c, src/regression/sub.c, src/regression/sub2.c, src/regression/switch1.c, src/regression/while.c, src/regression/xor.c, src/regression/create_stc, src/regression/simulate, src/regression/rt.sh, src/regression/Makefile: reenabled Scott's PIC14 regression tests * src/regression/gpsim_assert.h: added 2006-01-28 Bernhard Held * src/ds390/gen.c (unsaveRegisters): fixed literal function pointer ((void (code *) (void)) 0) (); * as/hc08/aslex.c, * as/hc08/aslink.h, * as/hc08/asm.h, * as/hc08/asmain.c, * as/hc08/lkdata.c, * as/hc08/lklex.c, * as/hc08/lkmain.c, * as/mcs51/aslex.c, * as/mcs51/aslink.h, * as/mcs51/asm.h, * as/mcs51/asmain.c, * as/mcs51/lkdata.c, * as/mcs51/lklex.c, * as/mcs51/lkmain.c, * as/z80/aslex.c, * as/z80/asm.h, * as/z80/asmain.c: fixed build on current cygwin: replaced getline() by as_getline() 2006-01-27 Bernhard Held * src/SDCC.y: fixed bug #716242, exchanged pointer and function declarator in the symbol chain * src/SDCCsymt.h, * src/SDCCsymt.c (processFuncPtrArgs): added, removes "(void)" parameter list for function pointers * src/SDCCast.c (decorateType): added call of processFuncPtrArgs() * support/regression/tests/bug-716242.c: added 2006-01-20 Bernhard Held * src/SDCCicode.c (geniCodeAdd, geniCodeArray): use char for array offset if possible * src/SDCCast.c (getLeftResultType): 255 fits in char, not 256 2006-01-18 Bernhard Held * src/SDCCast.c (backPatchLabels): fixed bug #1408066: made it inifinitely recurseable, added static * support/regression/tests/bug-1408066.c: added 2006-01-17 Bernhard Held * src/SDCCicode.h, * src/SDCCicode.c (newiTempPreheaderLabel, newiTempLoopHeaderLabel): renamed, added possibility to create "postLoopLbl"-labels * src/SDCCBBlock.c (iCodeBreakDown): renamed newiTempPreheaderLabel to newiTempLoopHeaderLabel * src/SDCCloop.c (newInduction, newRegion, backEdges, insertIntoLoop, isNotInBlocks, addToExitsMarkDepth, createLoop, dominatedBy, addDefInExprs, assignmentsToSym, isOperandInvariant, pointerAssigned, hasNonPtrUse, loopInvariants, addressTaken, findInduction, findDefInRegion, mergeRegions, ifMerged, mergeInnerLoops): made static, (pinduction, pregion, hasIncomingDefs, findLoopEndSeq): disabled, (basicInduction): fixed bug #136564, made static, (loopInduction): changed parameter of basicInduction, made static, (addPostLoopBlock): added * src/SDCCloop.h: removed backEdges, pregion, pinduction, loopOptimizations, addressTaken, findDefInRegion, hasIncomingDefs, findLoopEndSeq * support/regression/tests/bug-136564.c: added * support/regression/ports/mcs51-xstack-auto/spec.mk: added --std-sdcc99 to LIBSDCCFLAGS 2006-01-16 Bernhard Held * src/SDCCicode.c (geniCodeIfx): fix bug 1406131: always false while loop * support/regression/tests/bug-1406131.c: added 2005-12-31 Bernhard Held * src/SDCCast.c (decorateType): fix promotion of unary minus * src/SDCCsymt.c (computeType): beautified * src/SDCCval.c (cheapestVal): beautified, old non-Ansi version removed, (valUnaryPM, valComplement): fix sign and promotion, (valNot): ANSI: result type is int (SDCC: unsigned char) * support/regression/tests/uminus.c: speedup by removing superflous test case 'int' * support/regression/tests/onebyte.c: added promotion and signedness tests for unary minus * support/regressions/tests/bug-477927.c: disable warning about uninitialized variables * support/regression/tests/not.c: added 2005-12-28 Bernhard Held * device/lib/Makefile.in: added --std-sdcc99 to CFLAGS * src/mcs51/gen.c (gen51Code): show final register usage after fillGaps in asm with --i-code-in-asm * src/SDCClrange.c (sequenceiCode, setLiveFrom, setLiveTo, markLiveRanges, markAlive, findNextUseSym, findNextUse, unvisitBlocks, incUsed, rliveClear, adjustIChain): made static, (setFromRange): excluded because it's unused, (findPrevUseSym, markWholeLoop): added, (findPrevUse): rewritten; fixes bug 895992; now a complete search through all branches of predecessors enables sdcc to emit the warning W_LOCAL_NOINIT, marking of outermost loop was incomplete, (rlivePoint): made static, added parameter emitWarnings which is only true during the first run out of two, (findRecursiveSucc, findRecursivePred): removed, (computeLiveRanges): made static, added parameter emitWarnings, (dumpIcRlive): added for debugging only * src/SDCClrange.h: added boolean parameter to computeLiveRanges(), removed prototype of setFromRange() * src/SDCCopt.c (eBBlockFromiCode): added new parameter emitWarnings in call of computeLiveRanges() * support/regression/tests/bug-895992.c: added * support/regression/tests/bug-971834.c: added * support/valdiag/tests/bug-895992.c: added * support/valdiag/tests/bug-971834.c: added 2005-12-18 Raphael Neider * src/pic16/gen.c: added IS_DIRECT macro for "direct" operands, (genUnpackBits): improved code for direct operands, (genPackBits): improved code for literal assignment to bitfields and for direct destination operands (no FSR indirection), prevented redundant AND, fixes #1362800, (AccLsh): added parameter to disable masking of the result * src/pic16/pcode.c (pic16_safepCodeUnlink): fixed to work with skip instructions with side-effects (like incfsz), (pic16_pCodeIsAlive): suppress verbose output unless pcode_verbose, * src/pic16/pcoderegs.c (RemoveRegsFromSet): removed annoying warning * device/lib/pic16/Makefile.common.in: added --asm=@GPASM@ to CC, fixes #1375263 2005-12-11 Bernhard Held * src/SDCCicode.c (geniCodeAssign): fixed bug 11369874, don't use volatile variables as spill location 2005-12-10 Bernhard Held * src/SDCCcse.c (findCheaperOp): fixed bug 1376320, copy signedness to replacing literals * support/regression/tests/bug-1376320.c: added 2005-12-08 Raphael Neider * src/pic/device.c: renamed is_shared to pic14_is_shared * src/pic/gen.c (genIfx): re-enabled handling of sbits * src/pic/glue.c (emitSymbolToFile): added workaround for sbits, (is_valid_identifier): added for above workaround 2005-12-07 Maarten Brock * device/lib/Makefile.in: fixed to enable port-specific-objects * device/lib/ds390/i2c390.c (BitOutI2C): optimized by making bout unsigned char, thanks Hubert Sack * doc/sdccman.lyx: documented --xstack-loc, elaborated a bit more on interrupts and pitfalls, removed "setjmp/longjmp unsupported", documented some unsupported C99 features * src/SDCCmain.c (linkEdit): adapted default lib path for --stack-auto * src/SDCCpeeph.c (readRules): inserted patch 1367130 for finding missing if, thanks Hubert Sack * src/mcs51/gen.c (genEndFunction): enabled "pop psw" for regbank 0 isr * support/regression/Makefile.in: test-mcs51-stack-auto no longer needs to make make_library * support/regression/get_ticks.py: new, get cpu cycles and code size, so regression tests can report resource usage (rfe 700441) * support/regression/collate-results.py: report resource usage * support/regression/ports/ds390/spec.mk, * support/regression/ports/hc08/spec.mk, * support/regression/ports/mcs51/spec.mk, * support/regression/ports/ucz80/spec.mk: run sim output through get_ticks * support/regression/ports/ds390/uCsim.cmd, * support/regression/ports/hc08/uCsim.cmd, * support/regression/ports/mcs51/uCsim.cmd, * support/regression/ports/ucz80/uCsim.cmd: inserted "state" to report time * support/regression/ports/mcs51-stack-auto/spec.mk: no need to build the library, use the default one * support/regression/ports/mcs51-xstack-auto/spec.mk: inserted rules for building the library 2005-12-06 Maarten Brock * config.dsp: added dependency on .version and configure_vc.awk * device/include/setjmp.h: updated for --stack-auto and --xstack * device/include/mcs51/at89c51snd1c.h: corrected line endings * device/include/mcs51/XC866.h: added, thanks Llewellyn van Zyl * device/lib/_setjmp.c: updated for --stack-auto and --xstack * device/lib/libsdcc.lib: added _setjmp * src/SDCCast.c (createIvalCharPtr): fixed warnings, (decorateType): fixed bug 1372851, (optimizeGetHbit): fixed warning * src/SDCCglue.c (printIvalChar, printIvalArray): adapted for flexible array initialisation * support/regression/tests/bug1057979.c: added test for bug 1358192 * support/regression/tests/setjmp.c: added, test for setjmp/longjmp 2005-12-03 Borut Razem * support/scripts/sdcc.nsi: added /SOLID option to "SetCompressor lzma" command since the NSIS was upgraded to version 2.11 on CF x86-linux2 2005-11-29 Bernhard Held * src/SDCCast.c (createIvalStruct, createIvalArray, createIvalPtr, createIval): implement symbol independant "flexible array member", (createIvalCharPtr): implemented flexible array initialisation with a string * src/SDCCsymt.c (copyStruct): removed, (getSize): fixed misleading comment, (getAllocSize): removed, the additional allocation size is now in sym->flexArrayLength, (checkStructFlexArray): new, syntax checks for flexible array members, (compStructSize): added syntax checks for "flexible array members" (copyStruct): removed, (copyLinkChain): removed inefficient fix for bug 770487 * src/SDCCglue.c (emitRegularMap): getAllocSize has been removed * src/SDCCsymt.h: added structdef.b_flexArrayMember and symbol->flexArrayLength * src/SDCCerr.c, * src/SDCCerr.h: added W_INVALID_FLEXARRAY, W_C89_NO_FLEXARRAY, E_FLEXARRAY_NOTATEND and E_FLEXARRAY_INEMPTYSTRCT * support/regression/tests/structflexarray.c: added * support/valdiag/tests/structflexiblearray.c: added 2005-11-29 Bernhard Held * src/SDCCast.c (decorateType): fixed bug 1368489 * support/Util/SDCCerr.c, * support/Util/SDCCerr.h: added warning W_CMP_SU_CHAR 2005-11-28 Frieder Ferlemann * device/include/mcs51/at89c51snd1c.h: added file submitted by Weston T. Schmidt , patch #1368001 2005-11-27 Borut Razem * support/cpp2/cppinit.c, support/cpp2/cpplib.h, support/cpp2/mkdeps.c, support/cpp2/mkdeps.h: added command line option -obj-ext= to SDCPP to define object file externion, used for generation of make dependencies (-M) * src/SDCCmain.c: pass -obj-ext= to SDCPP 2005-11-26 Borut Razem * support/scripts/sdcc.nsi: added small-stack-auto libraries, added missing device/lib/mcs51/crt*.asm, pic and pic16 sources, added pic and pic16 libraries 2005-11-26 Jesus Calvino-Fraga * device/include/float.h: Corrected typo in prototype of __fsgt 2005-11-25 Borut Razem * sdcc/device/lib/Makefile.in, sdcc/device/lib/incl.mk: added creation of model-mcs51-stack-auto libraries 2005-11-24 Bernhard Held * src/SDCCsymt.c (copyLinkChain): fixed bug 770487, copy structdef and fields-list too * src/SDCCast.c (createIvalArray): removed obsolete comment 2005-11-24 Borut Razem * sdcc/device/lib/Makefile.in: remove all unnecessary files, 2nd try..., added missing device/lib/mcs51/crt*.asm sources 2005-11-23 Bernhard Held * src/SDCCast.c (createIvalCharPtr): fixed bug 1348271 2005-11-22 Maarten Brock * device/lib/_fs2schar.c, * device/lib/_fs2sint.c, * device/lib/_fs2slong.c: optimized inline asm 2005-11-21 Jesus Calvino-Fraga * device/lib/_fs2slong.c, device/lib/_fs2sint.c, device/lib/_fs2char.c: Better handling of floats between -1.0 and 0.0. 2005-11-20 Frieder Ferlemann * src/mcs51/peeph.def: added missing "if"s as noted by Hubert Sack. (the missing "if"s prohibited removal of redundant labels) 2005-11-19 Jesus Calvino-Fraga * device/lib/_fs2slong.c, device/lib/_fs2sint.c, device/lib/_fs2char.c: Properly convert floats between -1.0 and 0.0 to long, int, and char types (max integer value of negative floats tends to zero). * device/lib/modff.c, device/lib/ceilf.c, device/lib/floorf.c: Removed changes made so to work properly with floats between -1.0 and 0.0, as the problem is fixed in _fs2slong.c, _fs2sint.c, and _fs2char.c 2005-11-18 Bernhard Held * src/SDCCcse.c (ReplaceOpWithCheaperOp): minor fix for debugging only * src/mcs51/gen.c (genUnpackBits): better code and a fix, (genCast) cosmetic change * src/ds390/gen.c (genUnpackBits, ): ported from mcs51 * src/ds390/ralloc.c (packRegsForAssign): ported fix for bitfields from mcs51 * support/regression/tests/bitfields (testSignedBitfields): added 2005-11-18 Borut Razem * sdcc/device/lib/Makefile.in: remove all unnecessary files * device/lib/pic/Makefile.rules, device/lib/pic16/Makefile.subdir: introduced SILENT option to make building of pic16 libraries less 2005-11-18 Jesus Calvino-Fraga * device/lib/modff.c, device/lib/ceilf.c, device/lib/floorf.c: Now they work properly with floats between -1.0 and 0.0 * device/lib/printf_large.c: Removed temporary patch for bug 1358192 2005-11-18 Maarten Brock * src/SDCCicode.c (printOperand): added missing else 2005-11-18 Bernhard Held * src/SDCCsymt.c (computeType): fixed bug 1358192: added missing else, reformatted for better readability * src/mcs51/gen.c (genUnpackBits): initial, incomplete support for signed bitfields 2005-11-17 Borut Razem * device/lib/pic16/Makefile.rules, device/lib/pic16/Makefile.subdir: introduced SILENT option to make building of pic16 libraries less verbose - used for nightly snapshot build * doc/sdccman.lyx: documented that SDCDB and ucSim are currently not available on Win32 platforms. * sdcc/device/lib/Makefile.in: added library sources for mcs51, small, medium, large, pic and pic16 2005-11-16 Jesus Calvino-Fraga * device/lib/printf_large.c: Temporary patch for bug 1358192: printf("%f"...) sets fraction to zero. 2005-11-16 Raphael Neider * src/pic/pcode.c (LinkFlow): handle empty flows correctly, fixes #1357221 * src/pic/gen.c (genIfx): implemented for CARRY bit * src/pic16/gen.c (genAssign,genCast): fixed assigning/casting to generic pointers, fixes #1357332, (pic16_movLit2f): NEW, (pic16_storeForReturn,genDataPointerSet): use pic16_movLit2f 2005-11-14 Maarten Brock * src/SDCCmain.c (parseCmdLine): fixed bug 1356800, thanks rsudjian 2005-11-11 Raphael Neider * src/pic/gen.c: handle FPOINTERS like POINTERS everywhere * src/pic16/gen.c (pic16_derefPtr): now works for non-pointers as well, compute pointer's type from operand, (genUnpackBits,genPackBits): handle FPOINTERS correctly, re-indented, improved single bit reads, fixes bug #1353379 2005-11-09 Borut Razem * support/scripts/sdcc.nsi: added lib/pic to the package 2005-11-08 Maarten Brock * src/SDCCval.c (valUnaryPM): fixed bug 1350699 2005-11-06 Maarten Brock * support/regression/tests/bug1348008.c: added * src/mcs51/gen.c (saveRBank, unsaveRBank): fixed bug 1348008 * support/regression/tests/bug1337835.c: updated comment 2005-11-06 Borut Razem * sim/ucsim/error.cc, sim/ucsim/errorcl.h, sim/ucsim/sim.src/stack.cc, sim/ucsim/sim.src/stackcl.h, sim/ucsim/sim.src/uc.cc, sim/ucsim/sim.src/uccl.h, sim/ucsim/sim.src/mem.cc, sim/ucsim/sim.src/memcl.h, sim/ucsim/cmd.src/set.cc, sim/ucsim/cmd.src/show.cc: dynamic construction of cl_error_class and derivates - 2.nd try 2005-11-05 Borut Razem * sim/ucsim/sim.src/error.cc: fixed uninitialized class member variable bug, which caused Bus Errors on sparc solaris 2005-11-04 Borut Razem * sim/ucsim/error.cc, sim/ucsim/errorcl.h, sim/ucsim/sim.src/stack.cc, sim/ucsim/sim.src/stackcl.h, sim/ucsim/sim.src/uc.cc, sim/ucsim/sim.src/uccl.h, sim/ucsim/sim.src/mem.cc, sim/ucsim/sim.src/memcl.h, sim/ucsim/cmd.src/cmdconf.cc: dynamic construction of cl_error_class and derivates to resolve the initialization problem on OSX 2005-11-02 Borut Razem * sim/ucsim/cmd.src/cmdutil.cc, sim/ucsim/cmd.src/newcmd.cc: corrected typo - #include 2005-11-02 Maarten Brock * src/asm.c (printILine): always close tmpFile, thanks Beau E. Cox, (_asxxxx_mapping): added org directive for future enhancements 2005-11-01 Borut Razem * sim/ucsim/app.cc, sim/ucsim/cmd.src/cmdutil.cc, sim/ucsim/cmd.src/newcmd.cc: enabled sockets on WIN32 * sim/ucsim/cmd.src/newcmd.cc: fixed bug with uninitialized variables 2005-10-31 Borut Razem * support/regression/generate-cases.py: escape backslashes in {testcase}: WIN32 backslash path delimiters should be escaped when used in C strings * support/regression/tests/bitfields.c: exclude failing assertions for __CYGWIN32__ and __MINGW32__ hosts 2005-10-30 Borut Razem * src/SDCCutil.c: corrected double comparison typo 2005-10-30 Maarten Brock * device/lib/medium/Makefile: added for new memory model medium * device/include/asm/mcs51/features.h: updated for medium/pdata * device/include/mcs51/c8051f120.h: added sfr16/sfr32 definitions, added Multiply & Accumulate sbit's and MAC0_PAGE define * device/include/mcs51/c8051f300.h: added sfr16 definitions * device/include/mcs51/c8051f310.h: added sfr16 definitions * device/lib/_mullong.c: update for medium model * device/lib/incl.mk: added medium model * doc/sdccman.lyx: documented medium model * src/SDCCast.c (isBitAndPow2): simplified using updated powof2 * src/SDCCicode.c (geniCodeMultiply, geniCodeDivision): use updated powof2 * src/SDCCmain.c (optionsTable, linkEdit): enabled medium model * src/SDCCmem.c (allocIntoSeg): set iaccess for pdata symbols, (allocParms): set SCLS and OCLS to pdata for medium model * src/SDCCsymt.c (processFuncArgs): use default_local_map and set iaccess for pdata, (powof2): return <0 if not power of 2 * src/avr/gen.c (genBitWise): use updated powof2 * src/mcs51/gen.c (genMinusDec): use acc if necessary, (shiftR2Left2Result): small optimization in setup, save acc when storing, (shiftLLeftOrResult): use B if necessary * src/mcs51/main.c (_mcs51_finaliseOptions, mcs51_port): added medium model * src/mcs51/peeph.def: renamed 226 to 226.b, added 226.a * src/pic/main.c (_pic14_do_link): made void parameter list explicit * support/regression/Makefile.in: added test-mcs51-medium * support/regression/ports/mcs51-medium/spec.mk: added to test medium model 2005-10-28 Bernhard Held * src/SDCCsymt.c (compStructSize): make bitfields without (un)signed specifier unsigned * device/lib/time.c (mktime): fixed bug 1334315 2005-10-28 Raphael Neider * device/include/pic/p16f_common.inc: added common declarations * src/pic/ralloc.c (initStack): moved regs *r to block start for Alpha 2005-10-27 Maarten Brock * src/mcs51/gen.c (getTempRegs): return 0 if not enough registers found, (aopPutUsesAcc): added to predict accumulator use, (assignResultValue): save acc if necessary, (genMinusDec): store result if indirectly addressed, (genDivOneByte): save acc if necessary, (movLeft2Result): bugfix if left already in acc, (genAnd, genOr, genXor, shiftL2Left2Result, shiftR2Left2Result): pay more attention to accumulator use (esp. pdata), (genReceive): receive pdata correctly * src/SDCCicode.c (isOperandInPagedSpace): added to detect pdata operands * src/SDCCicode.h: added isOperandInPagedSpace prototype 2005-10-27 Raphael Neider * doc/sdccman.lyx: corrected version (should be 2.5.4 not 2.5.5) 2005-10-27 Raphael Neider * .version: changed version to 2.5.4 * doc/sdccman.lyx: changed version to 2.5.4, added some remarks to PIC14 * device/lib/pic/libsdcc/{_mulint.c,_mullong.c}: use unsigned literals, (_divschar.c,divuchar.c,_mulchar.c,_modschar.c,_moduchar): NEW, arithmetics support routines * device/lib/pic/Makefile.rules: have assembler sources preprocessed * device/lib/Makefile.in: also create installdir for pic * src/SDCCopt.c (cnvToFcall): mark support routines `extern' for pic14 port as well * src/pic/device.c (dump_sfr): rewritten to delegate register placement to the linker (use `extern sym' rather than sym EQU addr), (validAddress): fixed to check last specified address * src/pic/gen.c (aopForSym): added code to deal with array (useless?), (popGetLit): truncate literal value to 8 bit, (popGet): moved assert to more appropriate place (popGetExternal): create pCode operand from and mark the according symbol as being `extern' (popGetAddr): added sanity check on immediate's offset, provide GPOINTER tag on demand (aopPut): fixed for immediates, (mov2w_op): move operand's address or contents to WREG (depending on operand type), safer variant of mov2w, (movwf,call_libraryfunc): NEW, handy abbreviations, (get_argument_pcop,get_return_val_pcop,pass_argument, get_returnvalue): interface for accessing function parameters and return values, (assignResultValuei,genRet): use new parameter/return value interface (pic14_getDataSize): back to old version handling generic pointers, (pic14_toBoolean,genNot,genCpl,genCmpEq,genOrOp): heavily rewritten, provided implementation and/or fixed old one, (genMultOneByte,genDivOneByte,genModOneByte): implemented as library calls, removed legacy 8051 reference code (AccLsh,AccRsh): rewritten and fixed to deal with signed operands (loadSignToC): NEW, move the operands sign bit to CARRY, (genGenericShift): NEW, replaces genLeftShift, genRightShift and genRightShiftSigned, accepts negative shift counts, (setup_fsr): load FSR and adjust IRP (indirect memory access), (emitPtrByteGet,emitPtrByteSet): rewritten, now works with generic pointers, __data pointers and __code pointers, (genUnpackBits,genPackBits): rewritten to work with generic pointers and signed bitfields, limit bitfields to 8 bit, (genDataPointerGet): fixed number of bytes read, (genGenPointerGet,genConstPointerGet): fixed bitfield access, (genPointerGet,genPointerSet): fixed handling of __code pointers, pointers to constant data are no longer assumed to point to __code space, removed invalid pointer types, (bitpatternFromVal): retrieve the PICs representation of an integer or float literal, (genDataPointerSet): fixed assigning to po_immediate operands, (genGenPointerSet): implemented as library call, (genIfx): fixed incorrect condition, (genAddrOf): limit generic pointers' addresses to 2 bytes, provide GPOINTER tag according to destination's storage class, (genCast): added code to handle casting to generic pointers, added sign-/zero extension of the result (aop_isLitLike,op_isLitLike): fixed handling of immediates * src/pic/gen.h: added macros to access IRP bit in STATUS register * src/pic/genarith.c (genAddLit): use min(result's,left's) size, sign extend the result * src/pic/glue.c (is_shared_address,is_shared): check whether a given address/register resides in the shared banks (emitSymbolToFile): improved to handle global and `pinned' symbols, put all variables into separate sections (have the linker arrange them) (picglue): put init code and interrupt handlers in separate sections * src/pic/main.c: added port specific options table, modified to PORT structure to make GPOINTERs 3 byte, added pic14_options (_pic14_do_link): private linking routine (update paths to libraries, add libsdcc.lib by default) * src/pic/main.h: declare pic14_options * src/pic/pcode.c: fixed instructions i/o relations, (RegCond): reverted to correct version, (newpCodeOpLit): truncate literals to 8 bit, (genericPrint): added debug output, (getRegFromInstruction): fixed for various operand types, simplified (BuildFlow): fixed broken handling of isntructions with labels (LinkFlow): start at last instruction in flow (skip trailing comments), pass the flow on to the next instruction after CALL (pCodeReplace): NEW, replace a pCode and move meta data to the new one (insertPCodeInstruction): fixed inserting after a skip instruction, (DoBankSelect): fixed for labeled instructions (OptimizepBlock): honor --nopeep switch (AnalyzeFlow,ReuseReg): prevent crash on source files with no function * src/pic/pcodepeep.c (pCodePeepMatchRule): prevent NULL pointer accesses * src/pic/pcoderegs.c (regIsLocal): NEW, check visibility of a register (pCodeOptime2pCodes): allow disabling this optimization via --no-pcode-opt due seldomly occuring bugs, fixed some conditions but is still buggy), started implementation of a dataflow based pCode optimization (CSE + dead code elimination) (pCodeRegMapLiveRangesInFlow): removed bogus inCond * src/pic/ralloc.c (initStack): renamed stack registers to STK%d, the new names are independant of the stack location and therefore portable across devices 2005-10-27 Maarten Brock * src/mcs51/ralloc.c (bitType): added to detect bit variables, (selectSpil): fixed bug 1337835 by not spilling bit variables * support/regression/tests/bug1337835.c: added test for this bug * src/mcs51/peeph.def: restart after rule 3.c, addded rules 263.x to optimize loading constants 2005-10-26 Raphael Neider * src/SDCCsymt.c (compStructSize): allow signed bitfields for PIC ports * src/pic16/gen.c (genUnpackBits): support signed bitfields, (genAssign): emit warning when casting literals to generic pointer type, also applies when taking the address of a fixed variable, (genCast): improved casting to generic pointers * src/pic16/glue.c (pic16emitStaticSeg): fixed(?) handling of fixed extern variables, added verbose error message * device/include/pic16/{string.h,errno.h}: added #pragma library c 2005-10-26 Bernhard Held * src/mcs51/gen.c (genMinus): fixed bug 1270906: reverse subtraction, carry must be complemented too * src/mcs51/peeph.def: addded rule 262 to remove double cpl c, which could be emitted by genMinus * src/SDCCval.c (constVal): fixed bug 1305065 2005-10-25 Bernhard Held * src/SDCCast.c (addCast): added promotion for bit variables (decorateType): emit W_COMPLEMENT before the problem vanishes behind promotion casts + optimisation (optimizeGetWord): fix warning 'i' might be used uninitialized * src/mcs51/gen.c (genCpl): removed W_COMPLEMENT * src/ds390/gen.c (genCpl): removed W_COMPLEMENT 2005-10-24 Bernhard Held * src/SDCCicode.c (ast2iCode): reverted to 1.224 because of regression: all chars are promoted to int; promotion should be handled in SDCCast.c 2005-10-15 Jesus Calvino-Fraga * device/lib/_strcmp.c: Fixed bug 1326457 2005-10-11 Raphael Neider * device/lib/pic16/libio/i2c.ignore: added 1320, fixes broken builds * device/lib/pic16/libdev/pic18f1320.c: added 1320's device library 2005-10-05 Maarten Brock * src/SDCC.y (AT): fixed bug with sfr32 addresses when built with GCC * support/regression/tests/sfr16.c: added test for the sfr32 bug 2005-10-04 Raphael Neider * device/include/pic16/pic18fregs.h, src/pic16/devices.inc, device/lib/pic16/pics.all: added pic18f1320 * src/pic16/pcode.c (mnem2key): fixed prototype's argument mismatch 2005-09-30 Raphael Neider * src/pic16/device.c (Pics16[]): moved device descriptions to devices.inc * src/pic16/devices.inc: NEW, provides device descriptions * src/pic16/gen.c (genInline): fixed handling of ';'-comments 2005-09-26 Maarten Brock * src/SDCCicode.c (operandOperation): added GETABIT, GETBYTE, GETWORD and GETHBIT 2005-09-25 Maarten Brock * doc/sdccman.lyx: updated Highest Order Bit documentation, documented Any Order Bit, Higher Order Byte and Higher Order Word * src/SDCC.y: added tokens GETABIT, GETBYTE, GETWORD * src/SDCCast.c (optimizeGetHbit): updated to also accept bool=expr&(1<>(8*n), (optimizeGetWord): new, to get a word from a long int: expr>>(8*n), (isConformingBody): also check GETABIT, GETBYTE, GETWORD, (decorateType): '&': also try GETABIT, GETBYTE, GETWORD optimization, RIGHT_OP: also try GETBYTE, GETWORD optimization, GETABIT, GETBYTE, GETWORD: decorate them, (isShiftRightLitVal, isBitAndPowOf2): new helper functions, (ast_print): added GETABIT, GETBYTE, GETWORD * src/SDCCcse.c (isSignedOp): added GETABIT, GETBYTE, GETWORD * src/SDCCicode.c (codeTable): added GETABIT, GETBYTE, GETWORD, (geniCodeBinary): new generic binary icode, (ast2iCode): added GETABIT, GETBYTE, GETWORD * src/port.h: updated comment for PORT.hasExtBitOp * src/mcs51/gen.c (genGetAbit): new, to get any single bit, (genGetByte): new, to get a single byte, (genGetWord): new, to get a word from a long, (gen51Code): added GETABIT, GETBYTE, GETWORD * src/mcs51/main.c (hasExtBitOp): added GETABIT, GETBYTE, GETWORD 2005-09-23 Raphael Neider * configure.in, configure: have device/lib/pic configured * device/lib/Makefile.in: added model-pic14 * device/lib/clean.mk: added pic/ to clean rule * device/lib/pic: added rudimentary pic14 library providing support functions for multiplication/division/generic pointer access * src/SDCCopt.c (convilong): mark support functions as extern for pic14 port as well * src/pic/gen.c (genMult): added assertions, (genpic14Code): emit warning on unhandled iCodes * src/pic/main.c (_hasNativeMulFor): return true only for 8x8 bit * src/pic/pcode.c (pCodeOpCopy), * src/pic16/pcodepeep.c (pic16_pCodeOpCopy): fixed handling of various pCodeOpReg-subtypes (PO_{STATUS,INTCON,PCL,PCLATH,PCLATU,BSR, SFR_REGISTER}), made safe for future extensions * src/pic16/pcode.c (pic16_safepCodeUnlink): allow for removal of instructions even if preceeded by SKIP instructions (also remove them); removed unused code * src/pic16/pcode.h: added arg2 to pCodeOpLit to match pCodeOpLit2, prevents leaving parts of the structure uninitialized after copying 2005-09-22 Maarten Brock * src/mcs51/gen.c (genMinus): fix for undetected bug introduced 3 months ago by me * support/regression/tests/addsub.c: added test for the bug 2005-09-21 Raphael Neider * device/include/pic16/pic18f1220.h, device/lib/pic16/libdev/pic18f1220.c: added ECCPAS sfr and bitfield * device/lib/pic16/Makefile.rules: added missing opening paren * src/pic16/gen.c (pic16_genNot,pic16_genCpl): removed as these are provided in genutils.c, (genUminusFloat,genUminus,genCmpEq): added asserts on different operand/result sizes, (genCmp): assert on NULL pointers first, then check deref'ed values * src/pic16/genutils.c (pic16_genCpl): fixed for different operand/ result size 2005-09-18 Raphael Neider * src/pic16/gen.c (genFarPointerGet,genFarPointerSet): removed as these are now unused, (genPointerGet,genPointerSet): handle FPOINTERs like POINTERs * src/pic16/pcode.c (pic16_symIsSpecial): assume REG_TMPs to be local, avoids uninitialized pointer dereference on r->name * src/pic16/ralloc.c (newReg): fixed indentation 2005-09-13 Maarten Brock * src/SDCCval.c (constVal): fixed bug 730366 * support/Util/SDCCerr.c, * support/Util/SDCCerr.h: added warning W_INVALID_INT_CONST 2005-09-10 Maarten Brock * as/mcs51/lkmem.c (summary2): fixed report for absolute areas (bug 1210220) 2005-09-09 Maarten Brock * src/mcs51/peeph.def (241.x): fixed bug when comparing generic pointers 2005-09-08 Maarten Brock * as/hc08/lkaomf51.c (OutputName): made name unsigned char, (hex2dec): made hex_digit unsigned char, removed ascii dependance * as/mcs51/lkaomf51.c (OutputName): made name unsigned char, (hex2dec): made hex_digit unsigned char, removed ascii dependance * as/mcs51/lkarea.c (lnkarea2): sort absolute areas to the front * packihx/packihx.c (hexDigit): made c unsigned char * as/mcs51/lklibr.c (fndsym), * link/z80/lkgb.c (gb), * link/z80/lklibr.c (fndsym), * link/z80/lkrloc.c (relr), * sim/ucsim/libltdl/ltdl.c (load_deplibs, try_dlopen), * src/SDCC.lex (checkCurrFile, process_pragma), * src/SDCCglue.c (spacesToUnderscores), * src/SDCCmain.c (setParseWithComma, processFile), * src/asm.c (tvsprintf, printCLine), * src/avr/gen.c (emitcode, aopPut), * src/ds390/gen.c (emitcode), * src/hc08/gen.c (emitcode, emitinline), * src/mcs51/gen.c (emitcode, genInline), * src/pic/pcodepeep.c (cvt_extract_destination, cvt_extract_status, tokenizeLineNode), * src/pic/ralloc.c (debugLog), * src/pic16/pcodepeep.c (cvt_extract_destination, cvt_extract_status, tokenizeLineNode), * src/pic16/ralloc.c (debugLog), * src/z80/main.c (_process_pragma): made all ctype.h function calls safe * src/SDCCopt.c: include math.h for fabs * src/SDCCpeeph.c: added macros ISCHARDIGIT, ISCHARSPACE and ISCHARALNUM and used them throughout the code to make ctype.h function calls safe * src/ds390/main.c (asmLineNodeFromLineNode), * src/mcs51/main.c (asmLineNodeFromLineNode): made p unsigned char* * src/pic/gen.c (DEBUGpic14_emitcode, pic14_emitcode): made lbp unsigned char* * src/pic/pcode.c (mnem2key): made mnem unsigned char*, (newpCodeAsmDir): made ctype.h function calls safe * src/pic16/gen.c (pic16_emitpcomment, DEBUGpic16_emitcode, pic16_emitcode): made lbp unsigned char* * src/pic16/pcode.c (mnem2key): made mnem unsigned char*, (pic16_newpCodeAsmDir): made ctype.h function calls safe * src/xa51/gen.c (emitcode), * src/z80/gen.c (_emit2): made lbp unsigned char* * support/Util/MySystem.c (split_command): made cmd_line and p unsigned char* 2005-09-05 Raphael Neider * src/pic16/ralloc.c (pic16_allocDirReg): use device specific access bank splitpoint 2005-09-05 Raphael Neider * device/lib/pic16/libc/Makefile: added (missing) string to SUBDIRS 2005-09-03 Maarten Brock * .version: changed to version 2.5.3 * doc/sdccman.lyx: changed version to 2.5.3, documented --codeseg and --constseg and pragma codeseg and constseg, documented bit parameters (reentrant) and bit returning * src/SDCCicode.c (geniCodeReceive): fixed (possible) bug generating currFunc->recvSize, but is this ok for all ports? (ast2iCode): result of ~ on unsigned char must be cast to int for bool to work * src/SDCCmem.c (allocGlobal, allocLocal): don't put bit returning function pointers in bit space * src/SDCCsymt.c (checkSClass): allow bit returning function pointers, (processFuncArgs): call port.reg_parm() with reentrancy info * src/port.h, * 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: port.reg_parm prototype extended with "bool reentrant" parameter * src/mcs51/main.c (_mcs51_regparm): use parameter reentrant instead of options.stackAuto for allocating bit register parameters * src/mcs51/gen.c (genNot): optimized complementing direct bit, (genSend): set BitBankUsed if it is, (selectRegBank): factored out of genCall for use in genPcall, (genCall): removed redundant dtype assignmen, use selectRegBank, (genPcall): handle returning in Carry properly, save in F0 if needed, (genReceive): handle bit register parameters * src/mcs51/ralloc.c (updateRegUsage): update BitBankUsed along the way, (mcs51_assignRegisters): enable bit registers for all reentrant functions and don't set BitBankUsed unconditionally * src/mcs51/peeph.def (177.d): fixed bug if %2==%3 * support/regression/tests/bitvars.c: enable tests for SDCC_STACK_AUTO * support/regression/tests/funptrs.c: added tests for BOOL and for return 2005-08-27 Borut Razem * device/lib/Makefile.in: cp on sparc-solaris (SunOS) and on ppc-osx (Darwin) does not support -u option. It seems that it is supported only on Linux - GNU cp 2005-08-25 Borut Razem * sim/ucsim/gui.src/serio.src/Makefile.in, sim/ucsim/s51.src/Makefile.in, sim/ucsim/avr.src/Makefile.in, sim/ucsim/z80.src/Makefile.in, sim/ucsim/hc08.src/Makefile.in, sim/ucsim/xa.src/Makefile.in: install -s changed to 2 steps: install and strip, since the strip at /usr/ccs/bin should be used on solaris 2005-08-24 Borut Razem * clean.mk, device/lib/clean.mk: find on sparc-solaris does not support -maxdepth option 2005-08-23 Bernhard Held * src/SDCCopt.c (convertToFcall): fixed modulus with divisors 1 and ffffffffu 2005-08-23 Maarten Brock * as/mcs51/aslink.h: completed lkrloc.c prototypes * as/mcs51/lkmain.c (link_main): fixed warning * device/include/stdbool.h: ds390 has no advanced bit support yet * src/SDCC.y: use SPEC_SHORT and renamed _signed to b_signed * src/SDCCsymt.c: use SPEC_SHORT and renamed _signed to b_signed * src/SDCCsymt.h (struct specifier): renamed _xxx bitfields to b_xxx and updated their macros * src/SDCCval.c (constVal): updated comment for renamed b_long 2005-08-22 Maarten Brock * as/mcs51/asdata.c: changed ctype['['] to BINOP * as/mcs51/asexpr.c (expr): added case '[' for bit access in bdata, (term): abused bit 15 of s_addr to indicate bit-addressable bytes, (oprio): set priority for '[' * as/mcs51/aslink.h: added define R_BIT, and prototypes for adb_bit and adb_24_bit * as/mcs51/asm.h: added defines R_BIT and S_BIT * as/mcs51/lkarea.c (lnksect2): use T for seg BIT_BANK and overlay it * as/mcs51/lkdata.c: changed ctype['['] to BINOP * as/mcs51/lkmain.c (Areas51): rel2 contains 12 (=C) areas now, added overlayable BIT_BANK area * as/mcs51/lkmem.c (summary): add BIT_BANK to BSEG_BYTES in the report, (summary2): explain 'T' in legenda * as/mcs51/lkrloc.c: replaced old K&R style, (relr): added R_BIT processing, (errmsg): added "Bit-addressable relocation error", (adb_bit): added for converting from byte- to bit-addressable space, (adb_24_bit): added for converting from byte- to bit-addressable space * device/include/stdbool.h: changed BOOL to __bit for mcs51 as it can be used in reentrant functions now even as return value * device/lib/_gptrput.c (_gptrput): removed obsolete code * src/SDCCast.c (resultTypePropagate): also propagate AND_OP and OR_OP, (decorateType): case '!', GETHBIT, AND_OP, OR_OP: result in bool or char * src/SDCCglobl.h: added indicator BitBankUsed * src/SDCCglue.c (glue): emit area BIT_BANK with byte 'bits' and equ's for the bit registers b0-b7 * src/SDCCicode.c (operandFromSymbol): removed IS_BITVAR check, (geniCodeCast): fixed bug 1263853, (geniCodeLogicAndOr): put result in bool or char, (geniCodeReceive): added parameter func for accessing the return type, (geniCodeFunctionBody): pass func to geniCodeReceive * src/SDCCmain.c: added indicator BitBankUsed * src/SDCCmem.c (allocLocal): explicitly set sclass for V_BIT * src/SDCCsymt.c (newBoolLink): added for creating a bool/bit, (checkSClass): don't put automatic bool/bit on stack, (checkFunction): removed check on function cannot return bit * src/SDCCsymt.h: added newBoolLink prototype * src/mcs51/gen.c (rb1regs): added bit registers, (movc): created for assigning to carry, (pushReg, popReg): created for pushing registers, (sameRegs): check both AOP_REG and AOP_CRY types, (aopOp): handle bit registers, (aopPut): optimization no self-assign, (saveRegisters): push reg->base (bits) only once for bit registers, and use pushReg, (unsaveRegisters): pop reg->base only once and use popReg, (assignResultValue): added parameter func and return in carry for bits, (genIpush): optimization no reload in A if not changed, (genSend): bit parameters in reentrant functions are passed in bit registers by first assigning to bits in B, then save registers and copy B to bits, (genCall): handle returning in Carry properly, save it in F0 if needed, (genPcall): updated assignResultValue call, this is not safe yet for bit returning function !!! (genFunction): don't generate equ's for bit registers and use pushReg, (genEndFunction): take care of bit returning functions and use popReg, (genRet): return bit in Carry, (genIfx): optimize bit registers and other directly addressable bits, (genReceive): updated assignResultValue call * src/mcs51/main.c (_mcs51_reset_regparm): added regBitParmFlg, (_mcs51_regparm): allow passing of upto 8 bit parameters in bit registers when using stack-auto * src/mcs51/ralloc.c (_G): added allBitregs, (regs8051): added the bit registers, (createStackSpil): use macro IS_BIT, (getRegBit): added to allocate a bit register, else spill, (getRegBitNoSpil): added to allocate a bit register, else a gpr, (updateRegUsage): factored out to ease stepping while debugging, (serialRegAssign): use updateRegUsage, only spill bits if necessary, also allocate bit registers, (fillGaps): handle bit registers, (findAllBitregs): added to create bit vector with all bit registers, (mcs51_allBitregs): returns this bit vector, (mcs51_assignRegisters): when using stack-auto use bit registers for passing parameters and creating local variables * src/mcs51/ralloc.h: added B0_IDX..B7_IDX and prototype mcs51_allBitregs 2005-08-22 Borut Razem * device/lib/Makefile.in: replaced find option -or with -o to make it run on solaris 2005-08-22 Raphael Neider * src/pic16/gen.c (pic16_loadFromReturn): added check for AOP_PCODE, fixes #1265442 (crash on Solaris) 2005-08-20 Borut Razem * configure, configure.in: added tests for libsocket and libnsl libraries, requred by sdcdb on sparc-solaris; generate support/regression/Makefile from support/regression/Makefile.in * support/regression/Makefile.in: added * device/lib/pic16/Makefile.common.in: force make to use bash shell * sim/ucsim/libtool: regenerated on sparc-solaris * sim/ucsim/avr.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: removed GNU ld specific linker options -Wl,--start-group and -Wl,--end-group to enable ucsim compilation on sparc-solaris, which doesn't use GNU ld linker * device/lib/Makefile.in: cp on sparc-solaris (SunOS) does not support -u option * as/Makefile: find on sparc-solaris does not support -maxdepth option 2005-08-19 Maarten Brock * src/mcs51/peeph.def: updated comments 2005-08-16 Frieder Ferlemann * device/lib/_gptrget.c, * device/lib/_gptrput.c: slightly shorter * doc/sdccman.lyx: incremented version * src/mcs51/peeph.def: moved peephole comments to the line of first change to better keep line correlation, reanimated 186.e * src/mcs51/peeph.def: renamed similar peepholes by using suffixes 2005-08-16 Slade Rich * src/pic/pcode.c : Pasted ".line" assembly directives patch from David Saxton with quotes around file name. 2005-08-15 Borut Razem * support/regression/tests/bitfields.c, support/regression/tests/bitvars.c, support/regression/tests/bitwise.c, support/regression/tests/literalop.c, support/regression/tests/rotate.c, support/regression/tests/zeropad.c: make tests run on x86_64 platform 2005-08-13 Raphael Neider * device/lib/pic16/Makefile.subdir: weakened clean-intermediate rule as it might be executed DURING a build (parallel make is wonderful) 2005-08-13 Raphael Neider * device/lib/Makefile.in (port-specific-objects-pic16): revert to cp $(PORT)/bin/*.* $(PORTDIR) * device/lib/pic16/Makefile: added .PHONY targets, removed builddir dependency * device/lib/pic16/Makefile.rules: build subdirs before creating the library, removed builddir rule, create $(builddir) early in recurse rule, use empty recurse rule for leaf directories * device/lib/pic16/Makefile.subdir: added phony targets, ignore mkdir errors (race condition), removed duplicate suffix "hex" from clean rules * device/lib/pic16/libdev/Makefile: recursive make via + and $(MAKE) * device/lib/pic16/libio/Makefile: create sub-make's builddir early, prevents mkdir -p from aborting on Alpha 2005-08-12 Raphael Neider * src/pic16/glue.c (pic16_print(G)PointerType): do not flush db-statements in order to allow for arrays of pointers in code sections to be placed without interspersed 0-padding, fixes bug #1256215 * (emitStatistics): fixed division by zero for pic18f1220 * src/pic16/pcode.c: buffer (up to) 12 DB directives to allow for unpadded writing of 8-bit, 16-bit, 24-bit and 32-bit values * (pic16_emitDS): respect DB_ITEMS_PER_LINE * (pic16_pCodeConstString): keep track of already emitted string literals to prevent "duplicate definitions of symbol _str_NR" * src/pic16/ralloc.c (pic16_allocRegByName): removed not so helpful debug message * device/lib/Makefile.in: ignore failing PIC16 library builds * device/lib/pic16/Makefile: do not build if gputils are missing * device/lib/pic16/Makefile.common.in: do not enforce MAKEFLAGS=-s 2005-08-10 Raphael Neider * device/lib/Makefile.in: fixed copying pic16 libraries (broken by my last commit) 2005-08-10 Raphael Neider * src/*.c, src/pic16/{gen.c,glue.c,main.c}: applied Vangelis Rokas' patch to add the new fixed point type "__fixed16x16" * device/lib/pic16/libsdcc/fixed16x16: added Vangelis' support functions for __fixed16x16 arithmetics * device/lib/pic16: reimplemented the build system to support a separate build directory, better handling of libio (create the library in a separate subdir for each architecture) and easier configuration (centralized in Makefile.common) 2005-08-07 Raphael Neider * src/pic16/gen.c (genrshTwo): fixed sign extension * src/pic16/device.c: added pic18f2320, 4220 and 4320 * device/include/pic16/pic18f2220.h: changed some bit definitions, added T0CONbits * device/include/pic16/pic18f4220.h: NEW, header for pic18f4220 and pic18f4320 * device/include/pic16/pic18fregs.h: added new devices, embraced Nop(), ClrWdt(), Sleep() and Reset() with do {} while(0) * device/include/pic16/signal.h: resolved name clashes on bit definitions, added DEF_HANDLER2(sig1,sig2,handler) to also allow testing for interrupt enable bits, added comments on how to use the macros * device/lib/pic16/libdev/pic18f2220.c: added T0CONbits * device/lib/pic16/libdev/pic18f{2320,4220,4320}.c: NEW, register definitions for the devices * device/lib/pic16/pics.all: added new devices * device/lib/pic16/libc/stdlib/calloc.c: fixed zeroing allocated memory * device/lib/pic16/libc/stdlib/memfree: do not count the block header as free memory * device/lib/pic16/libc/stdlib/memmisc.c (_initHeap): simplified and added missing end-of-blocklist-marker (reported by Peter Onion, fixes #1252814) * (_mergeHeapBlock): fixed loop condition * device/lib/pic16/libc/stdlib/realloc.c: return NULL for len==0, restructured code * device/lib/pic16/libc/stdlib/{malloc,memfreemax}.c: cleaned up a bit, reduced bitfield accesses, prevent endless loops in case of heap corruption * device/lib/pic16/libc/stdlib/x_ftoa.c: disabled "unreferenced arguments/must return a value" warnings * device/lib/pic16/libio/usart/ubaud.c (usart_baud): replaced BAUDREG with SPBRG * device/lib/pic16/libsdcc/lregs/{lrrest.c,lrst.c}, device/lib/pic16/debug/gstack/gstack.c: replaced _naked, _asm, _endasm with __naked, __asm, __endasm 2005-08-05 Raphael Neider * src/pic16/gen.c (pic16_aopGet): fixed handling of offsets in AOP_PCODE operands, fixes multibyte union-bitfield-accesses 2005-08-05 Borut Razem * device/lib/Makefile.in: added missing ';' * configure: removed ^M characters 2005-08-04 Jesus Calvino-Fraga * device/include/mcs51/at89c51ed2.h, device/include/mcs51/p89v51rd2.h, device/include/mcs51/at89s53.h: changed to GNU Lesser General Public License 2005-08-04 Borut Razem * configure.in: pic16 libraries build 2nd try - enable running configure in device/lib/pic16 * configure: regenerated from configure.in * device/lib/Makefile.in: create $(PORT)/bin directory 2005-08-03 Raphael Neider * src/pic16/gen.c (pic16_derefPtr): NEW, single place to get/set values via pointers * (genUnpackBits,genPackBits): changed detection of ptr->bitfield vs. sym.bitfield, fixed access via generic pointers, removed dead (wrong) code for multibyte bitfields * (genNearPointerGet, genGenPointerGet): removed useless code, fixed bitfield detection, fixes #1250594 * (genNearPointerSet): removed useless code * src/pic16/gen.h: renamed pic16_emitpcode to pic16_emitpcode_real and introduced macro pic16_emitpcode that conditionally emits the origin of the following pCode (useful for debugging SDCC) * src/pic16/pcode.c: changed (and disabled) some debug outputs * (createDefmap): fixed handling of LFSR for --optimize-df 2005-08-02 Borut Razem * device/lib/Makefile.in: pic16 libraries build enabled since gputils-0.13.2 are now localy installed at sourceforge's compile farm 2005-08-02 Raphael Neider * src/pic16/gen.c (genPackBits): removed deprecated warning * (genGenPointerSet): fixed bitfield detection 2005-08-02 Jesus Calvino-Fraga * device/include/mcs51/msm8xc154s.h: Removed PT2 definition, now in 8052.h. 2005-07-31 Raphael Neider * device/lib/pic16/libdev/pic18f458.c, device/include/pic16/pic18f458.h: added missing T0CONbits 2005-07-29 Maarten Brock * device/include/mcs51/msm8xc154s.h: added, thanks to Matthias Arndt 2005-07-28 Maarten Brock * src/mcs51/gen.c (operandsEqu): fixed bug 1246687 2005-07-23 Jesus Calvino-Fraga * device/include/mcs51/at89c51ed2.h: added. 2005-07-23 Raphael Neider * src/pic/gen.h: added emitpcode macro for debugging * src/pic/gen.c (emitpcode): renamed to emitpcode_real and replace by macro adding debug information on demand * (genNot): fixed to C semantics (!0 = 1; !x = 0 iff x != 0) * (gencjne): tried to fix; replaced with correct (slower) code * (gen{Unp,P}ackBits): fixed single bit access * src/pic/pcode.c (AnalyzepCode): fixed DFPRINTF argument * src/pic/pcodepeep.c (pCodeSearchCondition): fixed finding previous instruction * src/pic/pcoderegs.c (regIsSpecial): NEW, check whether a register has to be handled with care (forbidding movement of assignments/uses, removing assignments completely, ...) * (pCodeOptime2pCodes): make use of regIsSpecial * added lots of debugging output (commented out) * src/pic/rallloc.c (deassignLRs): prevent operand registers from being reused as result UNLESS it is known to work 2005-07-23 Maarten Brock * support/Util/dbuf.h: include for size_t * .version: changed to version 2.5.2 2005-07-23 Erik Petrich * src/SDCCloop.c (loopInvariants): fixed bug #1234048 2005-07-22 Erik Petrich * src/hc08/gen.c (genMinus): fixed bug #1241835, (genModOneByte): removed needless psha/pula 2005-07-22 Raphael Neider * src/SDCCmain.c (linkEdit): initialized linkerScriptFileName, have PIC14 handled like PIC16, fixes broken pic14 linker calls * src/pic/gen.c (resolveIfx): do not "invent" labels * (genSkipc): changed to positive logic * (genSkipCond): removed as no longer needed * (pic14_mov2w_regOrLit,genCmp): NEW, replacement for buggy version, backport from PIC16 * (genLeftShift): check operands are in different registers * src/pic/genarith.c (genPlus): replaced INCF with ADDLW as INCF does not update CARRY... * src/pic/main.c: fixed _linkCmd * src/pic/pcode.c (unlinkpCode): added inactive code * src/pic/ralloc.c (deassignLRs): keep arguments to shift operations alive (do not assign result and operand overlapping registers) 2005-07-22 Raphael Neider * src/pic/device.c (dump_sfr): replaced register declaration with call to emitSymbolToFile() to avoid duplicate symbols * (assignRelocatableRegisters): do not declare external symbols * src/pic/ralloc.c (allocNewDirReg): fixed to get size of arrays right (take size of type, not etype) * (allocDirReg): fixed call to allocNewDirReg() to pass OP_SYM_TYPE * (writeUsedRegs): also dump dynDirectRegs (e.g. local variables) * (packRegsForAccUse): disabled assignment of WREG as the result reg to prevent occurence of just fixed #1235003, fixes #1242954 * src/pic/glue.c (emitSymbolToFile): NEW, central place to declare symbols (avoids duplicate symbols in .asm file) * (pic14emitRegularMap): use emitSymbolToFile() * src/pic/gen.c (aopOp): fixed spillLocation handling * (gen{Unp,P}ackBits): fixed acquiring bit-operands * (genDataPointerSet): removed unneccessary variables/output 2005-07-22 Maarten Brock * as/mcs51/lkarea.c: enlarged codemap for banked memory * device/lib/mcs51/crtbank.asm: added # to 0x0F 2005-07-21 Raphael Neider * src/pic/gen.c (aopOp): do not generate AOP_ACC operands as pic14 architecture cannot handle them efficiently, fixes bug #1235003 * src/pic16/device.c (pic16_dump_{u,i}section,pic16_dump_int_registers): check for empty sets before using them (fixes bug #1232190) 2005-07-19 Maarten Brock * as/mcs51/lkarea.c (lnkarea, lnkarea2): improved BSEG size calculation, (lnksect2): generate warnings for memory overlap * src/SDCC.lex (doPragma, process_pragma): added pragma's codeseg and constseg to set the name of these segments so you can instruct the linker to place them in banks * src/SDCCast.c (decorateType): use new macro IS_FUNCPTR() * src/SDCCglobl.h: added MODEL_HUGE to enum, added code_seg and const_seg to options * src/SDCCglue.c (emitMaps): use options.const_seg, (createInterruptVect): put interrupt vectors in segment HOME, (glue): put HOME before static segment and put the main glue in HOME, (glue): use options.code_seg * src/SDCCicode.c (geniCodeCall): use new macro IS_FUNCPTR() * src/SDCCmain.c: added option --codeseg and --constseg to set the name of these segments so you can instruct the linker to place them in banks (linkEdit): use code_loc for HOME segment which should be the first segment in code memory now * src/SDCCmem.c: fixed more stuff like bug 1238386 * src/SDCCsymt.c (getSize): use generic pointer size for banked functions, (changePointer): don't change function pointers to code pointers for banked functions, (compareType): added exceptional check for banked function pointers * src/SDCCsymt.h: changed IFFUNC_ISBANKEDCALL, added IS_FUNCPTR * src/hc08/main.c (_hc08_genAssemblerPreamble): put HOME first, put CSEG after static in code memory * src/mcs51/gen.c: added aopLiteralLong prototype, (aopForSym): use getSize for functions, (genCall): generate banked calls over one trampoline __sdcc_banked_call in HOME with lsb of address in r0, msb in r1 and bank in r2, use -Wl-bBANKSEG=0xbbaaaa option to set the address (aaaa) and bank (bb) of the segment, (genPcall): use call for literal function pointers and generate banked calls over the one trampoline so there's only one place for the user to modify according to his/hers hardware, (genEndFunction): jump to __sdcc_banked_ret in HOME for banked functions, (genPlusIncr): moved check icount>4 beyond inc dptr optimization * src/mcs51/main.c: added keyword banked, (_mcs51_genExtraAreas): put HOME first followed by GSINIT, STATIC and CSEG * support/Util/SDCCerr.c, * support/Util/SDCCerr.h: added E_BANKED_WITH_CALLEESAVES, registers are needed for passing the bank and address to the trampoline * device/lib/mcs51/crtbank.asm: added for bankswitching * device/lib/mcs51/Makefile: added crtbank 2005-07-16 Erik Petrich * src/SDCCcse.c (algebraicOpts): fixed loss of volatility for fields at offset 0 of a struct or union as reported on 2005-07-07 in the developer mailing list. 2005-07-15 Maarten Brock * src/SDCCmem.c: fixed bug 1238386 2005-07-12 Frieder Ferlemann * src/mcs51/peeph.def: added labelrefcounting for peepholes (patch #1144962), added peephole 300, enabled 259.x * doc/sdccman.lyx: removed screenshot and provided link instead 2005-07-05 Frieder Ferlemann * doc/sdccman.lyx: added section about debugging with ddd * doc/figures/ddd_example.eps: screenshot of debugging session 2005-07-04 Raphael Neider * src/pic/gen.c (genPointerGet): handle pointers to CONST values like CODE pointers, fixes #1115683 * src/pic/pcode.c (DoBankSelect): forget LastRegIdx during function call, fixes bugs #1232211, #1228110, fixed wrong casts to pCodeFlow from pCodeInstructions 2005-07-04 Raphael Neider * src/pic/gen.c (popGet): changed assert to allow for bit operands * (popGetAddr): changed signature to provide an additional index, patched all call sites * (genCmpEq): handle literal-like operands correctly * (genAddrOf): added sanity checks on __code/__data pointers * (genAssign): added handling of symbols from __code section * (gencjne): do not generate code for comparisons whose result is neither stored nor used, fixes bug #1171114 * (AccLsh, AccRsh): operate on operand instead of WREG * (shift{Left,Right}_Left2ResultLit): NEW, size independant replacement for Shift{LR}{12}Left2Result; shift (byte/int/long) by known count * rewrote complete shift-by-literal logic, commented unused functions out * (genConstPointerGet): get multiple bytes (if result size > 1), fixed handling of non-immediate addresses * (genPointerGet): handle CODE pointers like CONST pointers * (genpic14Code): insert C-SRC lines as Cource-pCodes * ({aop,op}_isLitLike): NEW, single place to decide whether an operand is to be treated as a literal or not * (mov2w,genPcall,genCmpEq), src/pic/genarith.c: use aop_isLitLike() to decide between literal/register contents * (addSign): added missing offset * src/pic/gen.h: remove newline after FENTRY/FEXIT comments, only emit comment in debug-mode, use {aop,op}_isLitLike throughout the file * src/pic/glue.c: fix initializers for pointers (work in progress) * src/pic/pcode.c (get_op): honor index on _const symbols * ({reset,dump}pCodeStatistics): NEW, estimate code size * (dumppBlock): added pCode size estimation * src/pic/ralloc.c (deassignLRs,serialRegAssign,packRegisters): check for IS_SYMOP before OP_SYMBOL'ing * fixed indentation, compacted switch-statements * (allocReg): find free register and allocate it instead of allocating new registers all the time * (deassignLRs): prevent POINTER_GET's from being assigned the same registers as its operands (necessary only for multibyte GETs) 2005-07-01 Raphael Neider * src/pic/gen.h: added prototypes emitpComment, popGetAddr and debugging .asm-output macros FENTRY + FEXIT * src/pic/gen.c (Safe_vsnprintf): NEW, is there a more generic way... I wonder... * (emitpComment): NEW, printf to pCode * (popGet): added assert on too large offsets, fixed PO_IMMEDIATE's offset handling * (popGetAddr): NEW, variant of popGet to access an immediates high(er) bytes instead of the n'th byte of memory they reference, replaced popGet with popGetAddr where neccessary * (genDataPointerGet): reactivated and fixed implementation * (genNearPointerGet): enabled call to genDataPointerGet, fixes array- accesses * (genDataPointerSet): fixed multibyte assignments * (genpic14Code): fixed --i-code-in-asm handling * src/pic/genarith.c: fixed PO_IMMEDIATE issue using popGetAddr, * (genPlus): fixed index-out-of-bounds error * src/pic/pcode.c (get_op): fixed PO_IMMEDIATE's index/offset handling * src/pic/ralloc.c: added debugging output macro FENTRY2 * (spillThis): fixed indentation, enbraced for-body for clarity * (rematStr): commented out as now unused * (regTypeNum): commented out special spill case (overwrites arbitrary values) * fixes bugs #1229346, #1216476 (both arrays) and #1115667 (SIGSEGV) 2005-06-30 Maarten Brock * doc/sdccman.lyx: documented sfr16/sfr32, added example for using storage class with function pointers * src/mcs51/gen.c (genPlusIncr): optimized small offsets from dptr 2005-06-28 Maarten Brock * device/lib/_gptrget.c: also push/pop _PSBANK, added # to 0x03 * device/lib/_itoa.c, * device/lib/_ltoa.c: optimized codesize * src/SDCCsymt.c (checkSClass): added sanity check for sfr at addresses, but don't know how to suppress the double warning. * src/mcs51/gen.c (genPlusIncr): fixed bug when incrementing volatile int's * support/Util/SDCCerr.c, * support/Util/SDCCerr.h: added warning W_SFR_ABSRANGE for sanity check 2005-06-27 Maarten Brock * as/mcs51/asexpr.c (expr): disabled warning "not in .flat24 mode", fixed old K&R prototypes * as/mcs51/asout.c (outrb): always output as if generating 24bit addresses * device/lib/_gptrget.c, * device/lib/_gptrgetc.c, * device/lib/_gptrput.c: changed versions for new memory indicator values, also new versions for small generic pointers and banked generic pointers * src/port.h: added const_name * src/SDCC.lex: added keywords sfr16, __sfr16, sfr32, __sfr32 * src/SDCC.y: added tokens SFR16, SFR32 and their sfr_attributes * src/SDCCcse.c (findPrevIc): check all associative operators * src/SDCCglue.c (emitMaps): use CONST_NAME if defined * src/SDCCicode.h: added macro IS_ASSOCIATIVE * src/SDCCmem.c: updated comments, set far-space to 0 for pdata, results in optimized code * src/SDCCmem.h: added macro CONST_NAME * src/SDCCsymt.h: renumerated generic pointer types GPTYPE_... thereby moving the info into the highest bits, see also gptrget/gptrput * src/src.dsp: added sdcc.ico to project files * src/avr/gen.c (genCast): fixed bug 0x%d * src/avr/main.c (avr_port): added "CONST (CODE)" for const_name * src/ds390/gen.c (aopForRemat, adjustArithmeticResult): disconnected direct relation between ptr_type and DCL_TYPE, (genCast): fixed bug 0x%d * src/ds390/main.c (ds390_port, tininative_port, ds400_port): added "CONST (CODE)" for const_name * src/hc08/gen.c (genCast): fixed bug 0x%d * src/hc08/main.c (_hc08_genAssemblerPreamble): added .area ...const_name, (hc08_port): added "CONST (CODE)" for const_name * src/mcs51/gen.c (aopForSym): optimized pushing ACC, (aopForRemat, adjustArithmeticResult): disconnected direct relation between ptr_type and DCL_TYPE, (aopGetUsesAcc, aopGet, aopPut): changed first parameter from asmop* to operand* and took AOP() inside function so sfr-ness can be checked, (all over): repaired calls to aopGetUsesAcc, aopGet, aopPut to comply with new prototype, (genFunction, genEndFunction): optimized stack setup, (genMinus): optimized for literals with ending zeroes (in bytes), (genCast): fixed bug 0x%d * src/mcs51/main.c (_mcs51_keywords): added sfr16 and sfr32, (mcs51_port): added "CONST (CODE)" for const_name * src/mcs51/peeph.def: made rule 226 more generic * src/pic/main.c (pic_port): added "CONST (CODE)" for const_name * src/pic16/main.c (pic16_port): added "CONST (CODE)" for const_name * src/xa51/main.c (xa51_port): added "CONST (CODE)" for const_name * src/z80/main.c (z80_port): added NULL for const_name, (gbz80_port): added NULL for const_name * support/regression/tests/bug663539.c, * support/regression/tests/sfr16.c: new tests 2005-06-25 Jesus Calvino-Fraga * device/include/mcs51/p89v51rd2.h, device/include/mcs51/at89s53.h: added. 2005-06-24 Raphael Neider * device/lib/pic16/libdev/pic18f[68][567]20.c: corrected typos... * device/include/pic16/signal.h: added USBIF and SIG_USB 2005-06-24 Raphael Neider * device/lib/pic16/libdev/pic18f2455.c, device/include/pic16/pic18f2455.h: NEW * device/include/pic16/pic18fregs.h, device/lib/pic16/pics.all, src/pic16/device.c: added 18f2455 * device/lib/pic16/libdev/pic18f[68][567]20.c, device/include/pic16/{pic18f[68][567].h,usart.h}: replaced MULTIPLE_USARTS define with more relaible compatibility sfrs (for USART access) 2005-06-20 Slade Rich * src/pic/pcode.c : Fixed problem when a string constant contains a "\r\n" and the output asm file line is printed on two lines. 2005-06-19 Erik Petrich * sim/ucsim/hc08.src/inst.cc (inst_condbranch): fixed simulation of BGT, BLE, BHI, and BLS instructions * src/hc08/gen.c (outAcc, outBitC, outBitNV, genCmpLt, genCmpGt, genCmpEq): removed * src/hc08/gen.c (genCmpEQorNE, genCmp, branchopCmp, nameCmp, negatedCmp, exchangedCmp, genhc08Code): rewrite of comparison handling, fixes bug #1216342 * src/hc08/peeph.def: added rules 2g - 2l for new conditional branches 2005-06-15 Raphael Neider * src/pic16/NOTES: moved Vangelis from active developers to people to contact * device/include/pic16/{6520.h,8520.h}: fixed configuration bits * src/pic16/gen.c (): prevent iTemps from being considered to be in CODESPACE, fixes bug #1221120; for symbols in CODESPACE get number of bytes to read from OP_SYM_TYPE() instead of OP_SYM_ETYPE() 2005-06-06 Frieder Ferlemann * device/include/mcs51/reg764.h: Changed PB0 to PBO as requested by Marcel Telka in bug #1215704 2005-06-02 Slade Rich * src/pic/pcode.c : Changed pseudo stack size to 15 to allow WSAVE to be located in shared memory bank. 2005-05-31 Raphael Neider * src/pic16/{gen.c,genarith.c}: replaced sign-extension "CLRF, BTFSC , DECF/COMF" with side-effect-free "CLRF, BTFSC , SETF"; fixes "long>>9" 2005-05-27 Maarten Brock * device/lib/_strncpy.c: fixed the fix 2005-05-26 Raphael Neider * src/pic16/glue.c (pic16_printIvalChar): fixed _constant_ string initializers with \0, bug #1208187 * src/pic/glue.c (printIvalChar): fixed (non- and constant) string intializers with \0, bug #1208187 2005-05-26 Raphael Neider * src/pic16/glue.c (pic16_printIvalChar): fixed string initializers with \0, bug #1208187 * src/pic16/main.c (_process_pragma): added sanity checks for stack position and size, emit warnings when appropriate 2005-05-26 Maarten Brock * device/lib/_strncpy.c: fixed not filling with \0 2005-05-26 Erik Petrich * src/SDCCast.c (funcOfType, funcOfTypeVarg, stringToSymbol, createFunction), * src/SDCC.y (external_definition, enumerator, parameter_declaration, compound_statement), * src/SDCCsymt.h, * src/SDCCsymt.c (addSymChain, processFuncArgs): fixed bug #1159134 2005-05-24 Raphael Neider * src/pic16/glue.c (pic16_printGPointerType): fixed #1207796 2005-05-24 Raphael Neider * device/include/pic16/pic18f{442,452,458}.h: fixed wrong TRISE definitions, closes bug #1162453 2005-05-22 Raphael Neider * src/pic16/main.c (_process_pragma): check for missing arguments to pragmas code and udata * device/include/pic16/pic18f{2550,4331,4455,4520}.h: consistency fixes to match other headers (thanks to Jim Paris) * device/lib/pic16/libio/i2c.ignore: 18f4331 provides no I2C 2005-05-21 Maarten Brock * src/SDCCicode.c (isOperandEqual): fixed missing ; 2005-05-19 Maarten Brock * support/regression/tests/bug1198642.c: new test * src/SDCCicode.c (isOperandEqual): fixed bug 1198642 * src/SDCCcse.c (findPrevIc): added comment, please have a look * support/scripts/resource.h, * support/scripts/resource.rc, * src/src.dsp: added sdcc.ico to project as icon for sdcc.exe * support/scripts/sdcc.ico: added 32x32 icon 2005-05-18 Raphael Neider * device/lib/pic16/libdev/pic18f*.c, * device/include/pic16/pic18f*.h: updated "sfr" and "at X" keywords to "__sfr" and "__at (X)" * device/include/pic16/pic18fregs.h: added pic18f4520 * src/pic16/pcode.c (pic16_pCode2str): fixed (?) bug #1203088 (MPLAB compatibility) 2005-05-17 Raphael Neider * device/include/pic16/pic18f{2550,4331,4455,4520}.h: NEW * device/lib/pic16/libdev/pic18f{2550,4331,4455,4520}.c: NEW * device/lib/pic16/pics.all: added new devices * src/pic16/device.c: added support for pic18f4520 2005-05-16 Raphael Neider * src/pic16/gen.{c,h}: s/mov2f/pic16_mov2f made public * src/pic16/genarith.c (genAddLit): fixed bug 1202480 * src/pic16/pcode.{c,h} (pic16_newpCodeOpBit_simple): NEW convenience function for bit access 2005-05-15 Maarten Brock * device/lib/printf_large.c: fixed bug 1193299 * support/regression/tests/bug1057979.c: added test %3.3s 2005-05-15 Frieder Ferlemann * device/include/mcs51/8051.h, * device/include/mcs51/8052.h: made parseable with lint * device/include/mcs51/lint.h: added include file for (sp)lint * doc/sdccman.lyx: added doc about use of splint (syntax checking tool) * doc/cdbfileformat.lyx, * doc/test_suite_spec.lyx: hardcoded date to the date of last text change 2005-05-14 Raphael Neider * device/lib/pic16/Makefile.common.in: add --optimize-df to OPT_FLAGS * device/lib/pic16/libc/stdlib/itoa.c (new) * device/lib/pic16/libc/stdlib/Makefile: have itoa.c built * device/lib/pic16/libio/Makefile: exclude subdir according to ${subdir}.ignore for certain PICs (lacking e.g. i2c) * device/lib/pic16/libio/i2c.ignore (new): pic18f1220 has no I2C support * src/pic16/gen.c (genFunction): prevent annoying warning * src/pic16/pcode.c: renamed stack_t to dynstack_t to prevent nameclashes on BeOS * support/cpp2/cppmain.c (cpp_output_string): new * support/cpp2/cpplib.c (_cpp_do__Pragma): fixed _Pragma(""), fixes bug 1116802 2005-05-13 Borut Razem * src/SDCCmain.c (linkEdit): fixed bug 1195202 2005-05-12 Erik Petrich * .version: changed to version 2.5.1; back to bleeding edge development 2005-05-11 Borut Razem * doc/sdccman.lyx doc/cdbfileformat.lyx doc/test_suite_spec.lyx: generate PDF version 1.3 documents 2005-05-07 Erik Petrich * .version: changed to version 2.5.0 2005-04-27 Frieder Ferlemann * doc/sdccman.lyx: updated weblinks, index and smaller updates 2005-04-26 Erik Petrich * doc/sdccman.lyx: changed version 2.5.0, documented --std-c89, --std-sdcc89, --std-c99, --std-sdcc99, and the corresponding #pragmas, as well as many smaller updates. * .version: changed to version 2.5.0-pre1 2005-04-26 Jesus Calvino-Fraga * src/SDCCmain.c (setIncludePath): added port->target to SDCC_INCLUDE_NAME 2005-04-26 Maarten Brock * support/regression/tests/bug1185672.c: added * src/mcs51/gen.c (aopGetUsesAcc, genCpl, genAnd, genOr, genXor): fixed bug 1185672 * src/mcs51/gen.c (genCall): added comments, made it look safer * src/mcs51/gen.c (genEndFunction): simplified 2005-04-25 Maarten Brock * src/mcs51/ralloc.c (serialRegAssign): fixed bug 1189609 2005-04-14 Borut Razem * fixed bug 1045046 - SIGSEGV with really simple code?: src/pic/pcode.c (pCodeInitRegisters)- pseudo stack size increased to 16 src/pic/ralloc.c (typeRegWithIdx) - error message on pseudo stack overflow 2005-04-14 Borut Razem * src/pic16/gen.c (genInline), src/pic16/main.c (_process_pragma), src/pic16/device.h: temporarily disabled experimental #inline pragma for 2.5.0 release 2005-04-14 Maarten Brock * device/include/z80/stdio.h, * device/include/z80/string.h: removed these highly incomplete files so SDCC can use the default ones in device/include/ 2005-04-14 Erik Petrich * src/mcs51/gen.c (genEndFunction): removed unused variable to fix gcc warning. * device/lib/Makefile.in: default PORTINCDIR to the mcs51 subdir to fix sdcpp warnings. 2005-04-12 Maarten Brock * device/include/malloc.h: removed redundant __reentrant prototypes * device/lib/_mullong.c: added working xstack variant in asm (C version doesn't pass regression tests) * device/lib/bpx.c: used __data and made bpx char for mcs51 * src/SDCCast.c (decorateType): removed unused GPTYPE_IDATA, (createFunction): fixed bug with xstackPtr * src/SDCCcse.c: corrected comments * src/SDCCopt.c (convertToFcall): fixed warning in MSVC, (killDeadCode, eBBlockFromiCode): removed unused code * src/SDCCsymt.h: removed unused GPTYPE_GPTR and GPTYPE_IDATA, corrected comments * src/mcs51/gen.c (aopForSym, aopPut, toBoolean, unsaveRegisters, assignResultValue, genCall, genFunction, genEndFunction, genAnd, genOr, genXor, genAddrOf): fixed several bugs concerning xstack (genModOneByte): fixed warning in MSVC * src/mcs51/main.c (): added comments * src/mcs51/peeph.def: changed 129 to 129.a, added 129.b, 129.c & 129.d 2005-04-12 Maarten Brock * src/SDCCmain.c (linkEdit): oops, changed one line too many 2005-04-11 Maarten Brock * src/SDCCmain.c (linkEdit): fixed bug with finding crt0.o for z80 2005-04-10 Vangelis Rokas * src/pic16/glue.c (printIvalChar): fixed bug when emitting characters arrays of larger size than the declared one. 2005-04-10 Borut Razem * src/pic/gen.c (genInline), src/pic/pcode.c (newpCodeAsmDir), (pCode2str), (genericPrint), (unlinkpCodeFromBranch), (compareLabel), (findNextInstruction), (findPrevInstruction), (findInstructionUsingLabel), src/pic/pcode.h: fixed bug #1164907 - Labels not being recognized * src/pic/pcode.c (findLabel): added missing '\n' * src/src.dsp: added SDCCdwarf2.c to the project 2005-04-09 Borut Razem * support/scripts/sdcc.nsi: added include/hc08/* h to NSIS setup 2005-04-08 Raphael Neider * src/pic16/pcode.c: added helpers defmapInsertAfter (insert a new item into the chain after a given one) and mergeDefmapSymbols (combine defmap entries for each symbol per pcode) * (createDefmap): have defmap entries merged in the end * (defmapReplaceSymRef): split defmap entries covering two accesses to a symbol before replacing one access type's symbol, merge symbols in the end (replacement symbol might already have an entry) * (assignValnums): keep reference to written WREG intact 2005-04-08 Raphael Neider * src/pic16/pcode.c (struct defmap_s): named anonymous union (for Alpha) 2005-04-08 Vangelis Rokas * src/pic16/pcode.c (pic16_get_op2): enlarged size of array b to 128 bytes 2005-04-07 Raphael Neider * device/include/pic16/usart.h: added compatibility defines for devices with more than one USART * device/include/pic16/pic18f[68][567]20.h: activated above defines 2005-04-07 Maarten Brock * device/lib/Makefile.in: updated for port specific include 2005-04-07 Maarten Brock * support/regression/ports/mcs51/spec.mk: added mcs51 include 2005-04-07 Maarten Brock * device/include/8051.h, * device/include/8052.h, * device/include/at89S8252.h, * device/include/at89c55.h, * device/include/at89x051.h, * device/include/at89x51.h, * device/include/at89x52.h, * device/include/mcs51reg.h, * device/include/reg51.h, * device/include/reg764.h, * device/include/regc515c.h, * device/include/sab80515.h: (re)moved these 12 files * device/include/mcs51/8051.h, * device/include/mcs51/8052.h, * device/include/mcs51/at89S8252.h, * device/include/mcs51/at89c55.h, * device/include/mcs51/at89x051.h, * device/include/mcs51/at89x51.h, * device/include/mcs51/at89x52.h, * device/include/mcs51/mcs51reg.h, * device/include/mcs51/reg51.h, * device/include/mcs51/reg764.h, * device/include/mcs51/regc515c.h, * device/include/mcs51/sab80515.h: and added them here 2005-04-06 Maarten Brock * device/include/stdarg.h: changed SDCC specific keywords to double underlined form. * device/include/stdint.h: changed intptr_t and uintptr_t for others than mcs51 and ds390. * device/include/hc08/mc68hc908gp32.h, * device/include/hc08/mc68hc908jb8.h, * device/include/hc08/mc68hc908jkjl.h, * device/include/hc08/mc68hc908qy.h: fixed comments * device/include/mcs51/README: updated * device/include/mcs51/c8051f120.h: added PINRSF * device/lib/pic16/libc/stdlib/crc16.c: fixed comments * src/pic16/pcode.c: MSVC6 doesn't accept declaring new variables amidst code. Also inline is not supported. 2005-04-06 Raphael Neider * src/pic16/pcode.c (pic16_pCodeReplace): also update pcflow->end * (createDefmap): fixed CALLs to depend on FSR1 and RETLW to restore callers stack/frame pointers 2005-04-06 Vangelis Rokas * device/include/pic16/usart.h: added, missing in previous commit, * device/include/pic16/adc.h: fixed typo, * device/lib/pic16/libc/utils/cvtdec.S: added missing in previous commit, * device/lib/pic16/libc/stdlib/g_ftoa.S: modified to include * device/lib/pic16/libc/stdio/streams.c: leave stdin, stdout uninitialized because a bug appears with gplink * device/lib/pic16/{some makefiles}: moved $(CSTD) from CFLAGS to COMPILE_FLAGS and added CPPFLAGS with -nostdinc because sdcpp complains for unrecognised option 2005-04-05 Raphael Neider * src/pic16/gen.c (pic16_popCopyReg): made copying work for extended structs as well (using memcpy) * (genFunction): fixed comparison, used pCodeOpLabel to reduce warning on ISRs (GOTO has no label) * src/pic16/device.h: added OF_OPTIMIZE_DF * src/pic16/main.c: added compiler switch --optimize-df to enable the new data flow analysis/optimization * src/pic16/pcode.c: added (prototypes for and implementation of) dataflow analysis functions, fixed pCodeInstructions' inCond and outCond values, made RCALL a branch instruction * (pic16_unlinkpCode): keep C line if possible * (pic16_pCodeUnlink): removed cast on left side of assignment, have C line moved if possible * (pic16_getRegFrompCodeOp): NEW, improved version of... * (pic16_getRegFromInstruction,pic16_getRegFromInstruction2): changed to use new pic16_getRegFrompCodeOp (works for more SFRs) * (pic16_BuildFlow): fixed skip instructions with label (did not start new flow) * (pic16_getJumptabpCode): NEW, needed in... * (LinkFlow): fixed handling of jumptables, calls and conditional branches * (pic16_InsertCommentAfter): NEW * (pic16_pCodeReplace): made verbose and flow preserving * (AnalyzeFlow): added call to data flow analysis * src/pic16/pcode.h: added defmaps to pCodeFlow struct * src/pic16/pcodeflow.h: added PCC_STATUS to mean all STATUS bits * src/pic16/ralloc.c (packRegsForAssign): added return 1 in the end 2005-04-03 Erik Petrich * src/SDCCast.c (decorateType): fixed bug #1105626 2005-04-02 Vangelis Rokas * device/include/asm/pic16/features.h, * pic18f*.h headers, * device/include/pic16/adc.h, * device/include/pic16/delay.h, * device/include/pic16/i2c.h, * device/include/pic16/malloc.h, * device/include/pic16/stdio.h, * device/include/pic16/stdlib.h, * device/include/pic16/string.h, * device/lib/pic16/libc/stdio/printf_tiny.c, * device/lib/pic16/libc/stdio/printf_small.c, * device/lib/pic16/libc/stdio/strmgpsim.c, * device/lib/pic16/libc/stdio/strmmssp.c, * device/lib/pic16/libc/stdio/strmusart.c, * device/lib/pic16/libc/stdio/vfprintf.c, * device/lib/pic16/libc/stdlib/ltoa.c, * device/lib/pic16/libc/stdlib/putchar.c, * device/lib/pic16/libc/stdlib/x_ftoa.c, * device/lib/pic16/libc/stdlib/memchrpgm.c, * device/lib/pic16/libc/stdlib/memchrram.c, * device/lib/pic16/libc/stdlib/memcpypgm2ram.c, * device/lib/pic16/libc/stdlib/memcpyram2ram.c, * device/lib/pic16/libio/adc/adcbusy.c, * device/lib/pic16/libio/adc/adcread.c, * device/lib/pic16/libio/adc/adcsetch.c, * device/lib/pic16/libio/usart/ubaud.c, * device/lib/pic16/libio/usart/ubusy.c, * device/lib/pic16/libio/usart/udrdy.c, * device/lib/pic16/libio/usart/uopen.c, * device/lib/pic16/libio/usart/uputc.c, * device/lib/pic16/libsdcc/gptr/gptrget1.c, * device/lib/pic16/libsdcc/gptr/gptrget2.c, * device/lib/pic16/libsdcc/gptr/gptrget3.c, * device/lib/pic16/libsdcc/gptr/gptrget4.c, * device/lib/pic16/libsdcc/gptr/gptrput1.c, * device/lib/pic16/libsdcc/gptr/gptrput2.c, * device/lib/pic16/libsdcc/gptr/gptrput3.c, * device/lib/pic16/libsdcc/gptr/gptrput4.c: modified all SDCC specific keywords to double underlined form, * device/lib/pic16/libc/Makefile.rules, * device/lib/pic16/libsdcc/Makefile.rules, * device/lib/pic16/libm/Makefile, * device/lib/pic16/libio/Makefile.rules: added CSTD macro in CFLAGS to compile with C standard set in Makefile.common * device/lib/pic16/libc/stdlib/Makefile: added new C sources rand.c and crc.c in compilation process, * device/lib/pic16/libsdcc/int/divuint.c, * device/lib/pic16/libsdcc/long/divulong.c: changed declaration of `c' from signed to unsigned, * device/lib/pic16/startup/crt0.c, * device/lib/pic16/startup/crt0i.c, * device/lib/pic16/startup/crt0iz.c: adopted to all SDCC specific keywords to double underlined form, bug fixes in _do_cinit function which prevented the correct initialization of the .idata segment, * src/pic16/pcoderegs.c (insideLRBlock): fixed a bug that caused the core to enter a infinite loop * device/lib/pic16/libc/stdlib/rand.c, crc.c: new files 2005-04-02 Erik Petrich * src/SDCCicode.c (getArraySizePtr): fixed bug #1122171 2005-04-01 Erik Petrich * device/include/Makefile.in: add support for hc08 subdirectory * device/include/hc08/: new subdirectory * device/include/hc08/mc68hc908jkjl.h: new header contributed by Lucas Loizaga, thanks! * device/include/hc08/mc68hc908qy.h, * device/include/hc08/mc68hc908gp32.h, * device/include/hc08/mc68hc908jb8.h: moved hc08 register defs to their own directory. Changed internal macro names to use the compiler reserved namespace. Changed SDCC specific keywords to double underlined form. * device/include/math.h, * device/include/malloc.h, * device/include/stdarg.h, * device/include/stdbool.h * device/include/string.h, * device/include/tinibios.h, * device/include/ds400rom.h, * device/include/8051.h, * device/include/8052.h, * device/include/80c51xa.h, * device/include/at89c55.h, * device/include/at89S8252.h, * device/include/at89x51.h, * device/include/at89x52.h, * device/include/ds80c390.h, * device/include/reg764.h, * device/include/regc515c.h, * device/include/sab80515.h, * device/include/mcs51/c8051f000.h, * device/include/mcs51/c8051f018.h, * device/include/mcs51/c8051f020.h, * device/include/mcs51/c8051f040.h, * device/include/mcs51/c8051f060.h, * device/include/mcs51/c8051f120.h, * device/include/mcs51/c8051f300.h, * device/include/mcs51/c8051f310.h, * device/include/mcs51/c8051f320.h, * device/include/mcs51/c8051f330.h, * device/include/mcs51/c8051f350.h, * device/include/z180.h: Changed SDCC specific keywords to double underlined form. 2005-03-31 Vangelis Rokas * src/pic16/device.c (Pics16[]): added devices 18F2550, 18F4331, 18F4455, * (pic16_assignConfigWordValue): disable testing of configuration register value with config mask, * src/pic16/gen.c (pic16_testStackOverflow): prefix stack test function with port->fun_prefix, * (genFunction): when generating a naked interrupt function never create an absolute segment placed in interrupt vector address, place the actual interrupt function at IVA instead, when an interrupt function is generated with unspecified interrupt then do not create the absolute section, * (genGenPointerGet, genGenPointerSet, genPackBits): replace all code for generating a call to generic pointer get/put function with a call to function pic16_callGenericPointer(), * src/pic16/genutils.c (pic16_callGenericPointerRW): NEW, generates the call to the generic pointer get/put functions with prefixing the function name with port->fun_prefix, * src/pic16/glue.c (pic16glue): ifdef-out test of OF_LR_SUPPORT, * src/pic16/main.c (_process_pragma): prefix function with port->fun_prefix, * (_pic16_finaliseOptions): define macro __18Fxxxx macro when calling assembler, old 18Fxxxx macro is deprecated, * src/pic16/pcode.c (unlinkpCodeFromBranch): added PC_INLINE and PC_ASMDIR in while condition, * (findInstruction): add PC_ASMDIR in while condition, * (buildCallTree): prefix main with port->fun_prefix, * (pic16_pCode2str): fixed bug that didn't emit the memory access identifier for variable with banked access in instructions BTFSS, BTFSC, BCF, BSF, BTG * (AnalyzeFlow): moved call to OptimizepCode to pic16_AnalyzeBanking, * src/pic16/pcodepeep.c (pCodeOpCompare): increase size of b to 1024, * src/pic16/pcoderegs.c (pic16_pCodeRegoptimizeRegUsage): don't perform optimization when enviroment variable NO_REG_OPT is set, * (insideLRBlock): NEW, return 1 if register is inside an INF_LOCALREGS block, * (RemoveRegFromLRBlock): remove a register that is completely eliminated by register optimization, but it is still left in local register store/restore in/from stack block, * (Remove2pcodes): after removing register, check to see if it should be removed from local register store/restore in/from stack block, * src/pic16/ralloc.c (pic16_decodeOp): added decode for DUMMY_READ_VOLATILE, * device/include/pic16/adc.h: minor prototype modifications and update, * device/include/pic16/malloc.h: added GPL notice various modifications, * device/include/pic16/stdint.h: NEW, standard header for ints * device/include/pic16/delay.h: NEW, header for delay functions, delay10tcy, delay100tcy, delay1ktcy, delay10ktcy, delay100ktcy, delay1mtcy, * device/include/pic16/signal.h: NEW, header providing helper macros for implementing signal handlers, * device/include/pic16/stdio.h: added prototypes for functions, printf, vprintf, sprintf, vsprintf, fprintf, vfprintf. Added prototypes for stdin and stdout, added macro PUTCHAR to automatically implement putchar function prototype, * device/include/pic16/usart.h: modified and updated USART library, * device/lib/pic16/libio/adc/, * device/lib/pic16/libio/i2c: some modifications to improve library performance, * device/lib/pic16/libc/stdio/: modifications for the new printf* family of functions, * device/lib/pic16/libc/stdlib/: various modifications in the malloc family of functions and other sources, * device/lib/pic16/libio/usart/: NEW, c sources for the usart module of the PIC18Fxx[28] devices, * device/lib/pic16/libc/delay/: NEW, c sources for the delay functions, * device/lib/pic16/libc/utils/: minor modifications in the .S sources, * device/lib/pic16/startup/{crt0i.c, crt0iz.c}: redesign of the _do_cinit function, because the previous failed when local variables where not placed in the same memory bank, * device/lib/pic16/libsdcc/char/: various modifications to improve library performance, * doc/sdccman.lyx: some reorganization of the PIC16 part, added many information on the new functions of the c library and more... 2005-03-28 Erik Petrich * src/SDCCBBlock.c (iCodeBreakDown): fixed bug #1170212 2005-03-26 Raphael Neider * src/pic16/gen.c (genSkipc): fixed semantics (execute branch if condition == CARRY) * (genCmp): adapted to new genSkipc semantics * src/pic16/genutils.c (pic6_genCmp_special): removed side effect on rIfx (genCmp was broken) 2005-03-26 Erik Petrich * src/SDCCmain.c (setDefaultOptions, optionsTable[], parseCmdLine), * src/z80/main.c (_keywords[]), * src/SDCCglobal.h (struct options), * src/SDCC.y, * src/SDCC.lex (isTargetKeyword, doPragma, pragma_tbl[]): new pragmas to enable/disable SDCC and C99 extensions/keywords (std_c89, std_sdcc89, std_c99, std_sdcc99). Also, equivalent command line options (--std-c89, --std-sdcc89, --std-c99, --std-sdcc99). SDCC specific keywords are always available in leading double underscore form. The C99 support is mostly missing, but it's a start. * support/regression/tests/bug-227710.c: fixed nonconforming use of reserved identifier "__data". 2005-03-24 Maarten Brock * src/mcs51/peeph.def: fixed bug 1170013 2005-03-22 Maarten Brock * device/include/mcs51reg.h: fixed bug 842007 2005-03-21 Erik Petrich * src/SDCCcflow.c (dfNumCompare): committed the wrong version of this last time. 2005-03-20 Erik Petrich * src/port.h (struct PORT), * src/avr/ralloc.c (avr_assignRegisters), * src/avr/main.c, * src/ds390/ralloc.c (ds390_assignRegisters), * src/ds390/main.c, * src/hc08/ralloc.c (hc08_assignRegisters), * src/hc08/main.c, * src/mcs51/ralloc.c (mcs51_assignRegisters), * src/mcs51/main.c, * src/pic/ralloc.c (pic14_assignRegisters), * src/pic/main.c, * src/pic16/ralloc.c (pic16_assignRegisters), * src/pic16/main.c, * src/xa51/ralloc.c (xa51_assignRegisters), * src/xa51/main.c, * src/z80/ralloc.c (z80_assignRegisters), * src/z80/ralloc.h, * src/SDCCopt.c (eBBlockFromiCode, replaceRegEqv, killDeadCode), * src/SDCCcse.c (ifxOptimize, cseBBlock, cseAllBlocks), * src/SDCCcse.h, * src/SDCCdflow.c (computeDataFlow), * src/SDCCdflow.h, * src/SDCCloop.c (addDefInExprs, loopInvariants, loopOptimizations), * src/SDCCloop.h, * src/SDCCcflow.c (*), * src/SDCCcflow.h, * src/SDCCBBlock.c (iCodeBreakDown, dumpEbbsToFileExt, eBBWithEntryLabel), * src/SDCCBBlock.h (struct ebbIndex): new struct that keeps two copies of the eBBlock list, sorted by both bbnum and dfnum. (fixes bug with immedDom() returning wrong block; probably fixes bug #1160833) 2005-03-20 Borut Razem * support/scripts/inc2h.pl: WIN32 port 2005-03-19 Maarten Brock * device/lib/makefile.in: added abs.c and labs.c 2005-03-17 Maarten Brock * device/include/stdint.h: added * device/lib/abs.c: added * device/lib/labs.c: added * device/include/stdlib.h: added abs() and labs() prototypes * device/lib/libsdcc.lib: added abs and labs * device/include/float.h, * device/lib/_fsmul.c, * device/lib/printf_fast.c, * device/lib/printf_tiny.c: updated comments 2005-03-16 Erik Petrich * src/SDCCicode.c (geniCodeSwitch, geniCodeJumpTable): fixed bug #1164313 2005-03-16 Erik Petrich * src/SDCCcse.c (cseBBlock): retain assignment to self when volatile * src/SDCCast.c (isLoopCountable): fixed bug #1161985 2005-03-15 Maarten Brock * device/lib/printf_large.c: removed inline assembly for portability and readability. Use printf_fast if speed or size are more important. * src/pic16/gen.c: removed conditions around use of DEBUGpc * src/pic16/genutils.h: added define for DEBUGpc for MSVC 2005-03-15 Vangelis Rokas * src/pic16/genutils.c (pic16_genCmp_special): initialized offs to prevent compiler warning 2005-03-14 Vangelis Rokas * device/lib/pic16/startup/crt0i.c (_cinit): local variables where moved to level 0 and declared as static. Also they are explicit placed in access bank. This was necessery because some times they might cross memory bank boundaries. crt0iz.c is *NOT* updated!!! * src/pic16/device.h: added flag OPTIMIZE_CMP to enable some compare optimizations. Currently only compare to unsigned char is implemented, * src/pic16/gen.c: added fReturnIdx array, * (struct resolvedIfx) is moved to gen.h and made public, * (struct _G): added sregsAlloc and sregsAllocSet fields, * (aopForSym): added an optimization to directly store in stack of the operand of a SEND iCode, * (pic16_aopOp): don't return return registers as strings (AOP_STR) but as registers instead (AOP_REG) using the fReturnIdx array, * (pic16_freeAsmop): remove the freed register from the _G.sregsAlloc field, * (pic16_aopGet): in case AOP_STR, the compare to 'a' is changed to a compare of 'WREG', * (pic16_popGetTempRegCond): changed function prototype, now function takes also a bitVector argument v which holds the current set of registers that are allocated for stack access by aopForSym, registers allocated in aopForSym for accessing stack symbols are not any more part of the functions usedRegs field, * (genCall): some times aopOp is called for a stack variable to be send, aopForSym might perform the push, if this is true make sure that genCall doesn't push the variable twice by testing _G.resDirect, * (genFunction): changed testing for unspecified interrupt number from 256 to INTNO_UNSPEC, * modified selection scheme of frame pointer generation. Previously if function did use local registers a frame pointer was generated, now a frame pointer is generated only if function has arguments (that need PLUSW2 register access), or has stack arguments, or the compiler is not instructed to omit the frame pointer, * (genEndFunction): before restoring local registers that were saved in the function preamble, also restore the registers that *might* have been allocated for stack access, * (genRet): removed some old comments, * (genCmp, the active (RN's) version): added a call to the pic16_genCmp_special function to perform the compare with a more robust and optimized way, * (genInline): a feature has been added in inline code generation, which allows a wildcard variable substitution when writing inline assembly. Code is incomplete and experimental therefore undocumented, * (genCast): changed order of aopOp for result and right to allow aopForSym to directly load the result if possible, * src/pic16/genutils.c (selectCompareOp, pic16_genCmp_special): NEW, perform an optimized compare on some selected special occasions, * src/pic16/genutils.h: declaration of resolvedIfx structure from gen.c, * src/pic16/glue.c (pic16createInterrupVect): make sure we never generate an IVT any more, * src/pic16/main.c (pic16_optionsTable): added command line option --optimize-cmp, * (_pic16_initPaths): when calling C preprocessor define pic18fXXXX macro too, when calling assembler define pic18fXXXX *and* __18Fxxxx macros, * src/pic16/NOTES: Raphael Neider added in list of active developers * src/pic16/pcode.c (OPT_TYPE_STR): added strings jumptable_begin and jumptable_end to prevent bug #, * (pic16_pciADDWFC, ADDFWC, COMF, CLRF): added some missing flags in inCond and outCond fields, * src/pic16/pcoderegs.c (pCodeOptime2pCodes): add a fix for bug #, * src/pic16/ralloc.c (serialRegAssign): explicit set willCS to 0 to turn off register spilling, * (packRegsForOneUse): synced with other ports' versions although it is not used currently, * (pic16_packRegisters): added an optimization while reading structure bitfields, some registers may be saved (malloc code is decreased by 80 bytes) 2005-03-12 Vangelis Rokas * src/SDCCcse.c (cseBBlock): inside 'do operand lookup' loop test if left is a bitfield, if yes, then don't optimize assignment. Perhaps this can be optimized more? 2005-03-10 Raphael Neider * src/pic16/gen.c (pic16_loadFSR0, genPackBits, genUnpackBits, genNearPointerGet): (hopefully) fixed access to bitfields via pointers (p->bitN = x; and x = p->bitN; failed) 2005-03-09 Paul Stoffregen * device/lib/printf_fast.c: fix leading zero format, eg "%02d" 2005-03-09 Raphael Neider * src/SDCCopt.c (killDeadCode): fixed bug #1156016 2005-03-06 Maarten Brock * src/SDCCicode.h: moved CRITICAL and ENDCRITICAL from SKIP_IC2 to SKIP_IC * src/mcs51/ralloc.c (willCauseSpill): added check for REG_BIT type, (regTypeNum): set REG_BIT type if necessary * src/mcs51/ralloc.h: added define REG_BIT, used to fix bug 1144613 * support/regression/tests/critical.c: check bug 1144613 2005-03-02 Raphael Neider * src/pic16/gen.c (genRightShiftLiteral): fixed bug #1154256 2005-02-26 Erik Petrich * src/avr/ralloc.c (serialRegAssign), * src/ds390/ralloc.c (serialRegAssign), * src/hc08/ralloc.c (serialRegAssign), * src/mcs51/ralloc.c (serialRegAssign), * src/pic/ralloc.c (serialRegAssign), * src/pic16/ralloc.c (serialRegAssign), * src/xa51/ralloc.c (serialRegAssign), * src/z80/ralloc.c (serialRegAssign): fixed bug #1105154 2005-02-22 Maarten Brock * src/SDCCast.c (decorateType): fixed bug 1124787 2005-02-20 Hubert Sack committed by Frieder Ferlemann * src/mcs51/peeph.def: added peepholes 3.h-k and 132.a-f from patch #1121755 2005-02-20 Frieder Ferlemann * src/SDCCpeeph.def: new keyword "labelRefCountChange" which allows peepholes to keep the correct label reference count when adding/removing references to labels. A peephole file using this is appended to patch #1144962. 2005-02-14 Raphael Neider * device/lib/pic16/libc/string/memccpy.c: changed 3rd argument to char * src/SDCC.lex (process_pragma): fixed to make disable_warning work for PIC16 * src/pic16/gen.c (aopForSym, calls to pic16_aopOp): prevent unneccessary retrievals of result operand's value on assignment 2005-02-13 Vangelis Rokas * device/include/pic16/string.h: modified prototype for memccpy() to memccpy(void *, void *, char, size_t) * src/pic16/gen.c (genFunction, genEndFunction): reenable if-case to check whether to omit frame pointer or not, * (genInline): convert all occurences of "\n" to LF in inline assembler blocks, this helps formatting the inline text, * (pic16_loadFSR0): modified prototype, * (genNearPointerGet, genNearPointerSet): reorganization of code, removed some 8051 legacy code, * (genPackBits): enabled handling bitfields exceeding one byte in size, * src/pic16/ralloc.c (pic16_assignRegisters): clear dynrIdx variable before allocating temporary registers in functions, 2005-02-11 Maarten Brock * support/regression/tests/bitvars.c: corrected the "fix" 2005-02-10 Maarten Brock * support/regression/tests/bitvars.c, * support/regression/tests/bitwise.c, * support/regression/tests/rotate.c: "fixed" problems on Alpha 2005-02-10 Raphael Neider * src/pic16/pcode.c (assignToSameBank) : fixed cast to pointer of different size for Alpha * src/pic16/gen.c (genCmpEq) : improved compare with 0 2005-02-09 Raphael Neider * src/SDCC.lex(doPragma) : save and restore warning options as well (also added new stack plus clone- and copyAndFreeSDCCERRG()) * have #pragma less_pedantic set the errorlevel to WARNING (fixes #1117001) * (cloneOptimize) : fixed wrong malloc's size * support/Util/SDCCerr.[ch] : made SDCCERRG globally accessible to facilitate correct handling of #pragma (save|restore) 2005-02-09 Maarten Brock * src/mcs51/gen.c: removed non-standard C nameless struct/union 2005-02-04 Slade Rich * src/pic/gen.c : Fix for bugs #1080519 & #1115662. 2005-02-03 Maarten Brock * device/include/mcs51/c8051f120.h: added declarations for sbit port 2,3&4 2005-02-02 Raphael Neider * src/SDCCast.c (processParms): disabled W_NONRENT_ARGS for pic16 port * src/pic16/gen.c (aopForSym): reenabled special case for function pointers * (pic16_storeForReturn): fixed to allow returning function pointers * (genPackBits): improved accessing full bytes, implemented for GPOINTERs * device/include/pic16/{stddef.h,stdbool.h}: added 2005-02-02 Maarten Brock * device/include/mcs51/c8051f040.h: added define CPT2_PAGE 2005-02-01 Slade Rich * src/pic16/pic16.dsp : Added file graph.c to make it compile under windows * src/pic16/Makefile.bcc : Do not use this file but added file graph.c as it appeared to be required 2005-01-31 Borut Razem * support/scripts/sdcc.nsi: added include/asm/ds390, include/asm/mcs51, include/mcs51 and include/z80 directories to the package 2005-01-26 Erik Petrich * src/hc08/gen.c (genFunction): fixed bug #1112752 2005-01-30 Frieder Ferlemann * src/mcs51/peeph.def: adapted peephole 258.x to changed gen.c (genAnd) 2005-01-29 Frieder Ferlemann * src/mcs51/gen.c (genAnd): accessing LSB/MSB by rotating acc 2005-01-29 Maarten Brock * device/include/Makefile.in: create/copy mcs51 and z80 include subdirs 2005-01-27 Maarten Brock * device/include/c8051fxxx.h: removed these 6 files * device/include/mcs51/c8051fxxx.h: added these 11 new files 2005-01-26 Raphael Neider * src/pic16/gen.c (genAssign): fixed assignment from longs in codespace (were cut to three bytes) * (genDummyRead): implemented (except for CODESPACE...), fixed bug #1108575 * src/pic16/glue.c (emitStatistics): beautified * device/lib/pic16/libm/Makefile: added include path 2005-01-26 Erik Petrich * src/z80/gen.c (aopPut): fixed bug #1103902 2005-01-25 Erik Petrich * device/lib/expf.c: fixed bug #1095792 2005-01-24 Vangelis Rokas * device/lib/pic16/libm: added Math library sources 2005-01-24 Raphael Neider * src/pic16/pcode.h: added second memory operand to pCodeOpReg to enable upcast to pCodeOpReg2 (there is no type tag to differenciate the two and pic16_popGet2p cast into PCOR2) * src/pic16/main.c (_process_pragma): fixed another malloc bug (sizeof(sectNames) changed to sizeof(sectName)) Both patches fix segfaults under MinGW. 2005-01-23 Raphael Neider * src/pic16/{device.c,pcode.c}: s/free/Safe_free/g for Safe_[mc]?alloc()'ed variables * src/pic16/gen.c (pic16_aopOp,pic16_popGet): added handling of (byte sized) temporaries (assign them to WREG for now) * src/pic16/main.c (_process_pragma): fixed nasty malloc bug (used sizeof(set *sectSyms) instead of sizeof(struct sectSym)), this might fix SIGSEGVs on MinGW... * src/SDCCopt.c (killDeadCode): restored original behaviour (volatile operands might get thrown away though) 2005-01-23 Vangelis Rokas * src/pic16/gen.c: fixed bug #1106975, * src/pic16/gen.c: fixed possible bug #1102572, now during TOS pointer update, INTCON is saved, global interrupts are disabled and restored after updateing TOS. * src/SDCC.y, src/SDCC.lex, src/SDCCsymt.c, src/SDCCsymt.h: * added function attribute 'shadowregs' to take advantage of shadow registers, * added function attribute 'wparam' as an alternative to the wparam pragma, * support/Utils/SDCCerr.[ch]: added error E_SHADOWREGS_NO_ISR when user declares a non-ISR function as 'shadowregs', * doc/sdccman.lyx: updated to reflect recent changes of pic16 port 2005-01-22 Vangelis Rokas * .version: bumped version number to 2.4.8 * device/lib/pic16/pics.all: list of PIC18F devices supported by pic16 port, * device/lib/pic16/libio/i2c/: I2C module support library, * device/include/pic16/i2c.h: I2C support library header, * device/lib/pic16/libc/stdio/: standard IO support sources, * (printf_small.c): printf_small() source, supports float print, * (printf_tiny.c): printf_tiny() source, does not support floats, * device/lib/pic16/Makefile.common.in: added OPT_FLAGS macro to enable global optimizations for entire library source, other Makefiles in the source tree are also modified to reflect this, * device/lib/pic16/libc/stdlib/putchar.c (putchar): dummy putchar() function, * doc/sdccman.lyx: updated to reflect new changes, * src/pic16/gen.c (aopForSym): don't handle sym->iaccess in sym->onStack if-case, * src/pic16/main.c (_pic16_keywords): commented out keywords bit, sbit, idata, _idata, xdata, _xdata, * added pragma library, to link an external library, (see doc), * removed command line options, --pomit-config-words, --pomit-ivt, --pleave-reset-vector, * (pic16_finaliseOptions): when define macro SDCC_MODEL_{SMALL/LARGE} when calling assembler to reflect memory model used, also define macro STACK_MODEL_{SMALL/LARGE} when compiling and assembling to reflect stack model used, * src/pic16/ralloc.c (pic16_allocDirReg): when operand is allocated on stack return NULL, 2005-01-22 Daniel Winkler * src/SDCCopt.c (killDeadCode): do not throw iCodes away if one of the operands is volatile. Fixes #1020220 2005-01-22 Daniel Winkler * src/pic16/pcoderegs.c (pCodeOptime2pCodes): reenabled optimization * (OptimizeRegUsage): make sure that there is really no other flow where the first pCode is used 2005-01-22 Raphael Neider * src/pic16/pcoderegs.c (pCodeOptime2pCodes): disabled optimization to fix #1106967 (pCode->seq are not set up correctly) 2005-01-22 Erik Petrich * src/SDCCglue.c (glue): make sure code area is declared before the static initialization area. 2005-01-21 Raphael Neider * device/lib/Makefile.in: fixed test for pic16 install dir * device/lib/pic16/*/Makefile*: modified compile flags to enable optimizations * doc/sdccman.lyx: updated banksel optimization, removed --flr-support and added --optimize-goto compiler switch and pragma wparam documentation * src/pic16/pcode.c (pic16_OptimizeBanksel): removed statistics dump * src/pic16/pcodepeep.c (pic16_pCodeOpCopy): fixed copying of WREG, PRODL and PRODH closing bug #1071770 (peephole optimizer) 2005-01-19 Raphael Neider * src/SDCCglobl.h: ensure that PATH_MAX >= 2048 to guarantee cmdLine buffers (used when calling sdcpp...) are large enough (MAX_PATH=256 truncates arguments leading to system halts when used in MinGW...) * src/pic16/gen.c (pic16_sameRegs): relaxed size criterion * (genUminus): rewritten to for efficiency * (genNearPointer[GS]et): enforce reloading of FSR0 (was still used uninitialized in some cases) * (genCast): upcasting a 16bit int to a 24bit GPOINTER may not copy the third byte from the int -- now assumes 0x80 (data memory) * src/pic16/genarith.c (pic16_genPlus): fixed bug when swapping operands (genAddLit expects the iCode's operands to swapped as well), fixed leftover bytes (crashed for short left operands) * (pic16_genMinusDec): performance improvements, removed false PIC14 emitSKPNCs * (pic16_genMinus): fixed to cope with differently sized operands * src/pic16/glue.c (pic16_glue): added new banksel optimization for --obanksel > 1 * src/pic16/pcode.c: implemented (first phase of) banksel optimization * src/pic16/graph.[ch]: implementation of directed graphs, used by new banksel optimization