tecodev [Wed, 8 Feb 2006 18:32:55 +0000 (18:32 +0000)]
* 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
bernhardheld [Fri, 27 Jan 2006 21:38:09 +0000 (21:38 +0000)]
* 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
bernhardheld [Sat, 31 Dec 2005 15:22:55 +0000 (15:22 +0000)]
* src/SDCCval.c (cheapestVal): beautified
(valNot): ANSI: result type is int (SDCC: unsigned char)
* support/regression/tests/onebyte.c: added promotion and signedness tests for unary minus
* support/regression/tests/not.c: added
bernhardheld [Sat, 31 Dec 2005 13:17:32 +0000 (13:17 +0000)]
* 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, valNot): fix sign and promotion
* 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
bernhardheld [Wed, 28 Dec 2005 22:01:43 +0000 (22:01 +0000)]
* 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
tecodev [Sun, 18 Dec 2005 14:51:13 +0000 (14:51 +0000)]
* 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
maartenbrock [Wed, 7 Dec 2005 12:49:32 +0000 (12:49 +0000)]
* 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
borutr [Sun, 27 Nov 2005 14:38:57 +0000 (14:38 +0000)]
* support/cpp2/cppinit.c, support/cpp2/cpplib.h, support/cpp2/mkdeps.c,
support/cpp2/mkdeps.h: added command line option
-obj-ext=<extension> to SDCPP to define object file externion, used
for generation of make dependencies (-M)
* src/SDCCmain.c: pass -obj-ext=<extension> to SDCPP
borutr [Sun, 27 Nov 2005 14:34:12 +0000 (14:34 +0000)]
* support/cpp2/cppinit.c, support/cpp2/cpplib.h, support/cpp2/mkdeps.c,
support/cpp2/mkdeps.h: added command line option
-obj-ext=<extension> to SDCPP to define object file externion, used
for generation of make dependencies (-M)
* src/SDCCmain.c: pass -obj-ext=<extension> to SDCPP
bernhardheld [Fri, 18 Nov 2005 22:33:33 +0000 (22:33 +0000)]
* 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
borutr [Fri, 18 Nov 2005 21:51:38 +0000 (21:51 +0000)]
* 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
borutr [Thu, 17 Nov 2005 18:25:51 +0000 (18:25 +0000)]
* device/lib/pic16/Makefile.rules, device/lib/pic16/Makefile.subdir:
itroduced 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.
tecodev [Fri, 11 Nov 2005 23:09:56 +0000 (23:09 +0000)]
* 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
borutr [Fri, 4 Nov 2005 18:38:26 +0000 (18:38 +0000)]
* sim/ucsim/cmd.src/error.cc, sim/ucsim/cmd.src/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
maartenbrock [Sun, 30 Oct 2005 12:18:12 +0000 (12:18 +0000)]
* 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
* 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
maartenbrock [Thu, 27 Oct 2005 21:05:38 +0000 (21:05 +0000)]
* 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
tecodev [Thu, 27 Oct 2005 19:32:46 +0000 (19:32 +0000)]
* .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
maartenbrock [Thu, 27 Oct 2005 14:21:46 +0000 (14:21 +0000)]
* 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
tecodev [Wed, 26 Oct 2005 11:08:11 +0000 (11:08 +0000)]
* 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
bernhardheld [Wed, 26 Oct 2005 06:48:27 +0000 (06:48 +0000)]
* 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