* .version: changed version to 2.5.4
authortecodev <tecodev@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Thu, 27 Oct 2005 19:32:46 +0000 (19:32 +0000)
committertecodev <tecodev@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Thu, 27 Oct 2005 19:32:46 +0000 (19:32 +0000)
commit52eb93f73f643bc7175d8f6ea06ec78b1026f001
tree4aec429e754ba9e84f0801503e4f0f87378114a3
parentdf600563e3005614c5ab09aab6ba39218bbd3191
* .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

git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3914 4a8a32a2-be11-0410-ad9d-d568d2c75423
36 files changed:
.version
ChangeLog
device/lib/Makefile.in
device/lib/pic/Makefile.rules
device/lib/pic/NEWS [new file with mode: 0644]
device/lib/pic/README [new file with mode: 0644]
device/lib/pic/TEMPLATE.S [new file with mode: 0644]
device/lib/pic/libsdcc/_divschar.c [new file with mode: 0644]
device/lib/pic/libsdcc/_divuchar.c [new file with mode: 0644]
device/lib/pic/libsdcc/_gptrget1.S [new file with mode: 0644]
device/lib/pic/libsdcc/_gptrget2.S [new file with mode: 0644]
device/lib/pic/libsdcc/_gptrget3.S [new file with mode: 0644]
device/lib/pic/libsdcc/_gptrget4.S [new file with mode: 0644]
device/lib/pic/libsdcc/_gptrput1.S [new file with mode: 0644]
device/lib/pic/libsdcc/_gptrput2.S [new file with mode: 0644]
device/lib/pic/libsdcc/_gptrput3.S [new file with mode: 0644]
device/lib/pic/libsdcc/_gptrput4.S [new file with mode: 0644]
device/lib/pic/libsdcc/_modschar.c [new file with mode: 0644]
device/lib/pic/libsdcc/_moduchar.c [new file with mode: 0644]
device/lib/pic/libsdcc/_mulchar.c [new file with mode: 0644]
device/lib/pic/libsdcc/_mulint.c
device/lib/pic/libsdcc/_mullong.c
device/lib/pic/libsdcc/macros.inc [new file with mode: 0644]
doc/sdccman.lyx
src/SDCCopt.c
src/pic/device.c
src/pic/gen.c
src/pic/gen.h
src/pic/genarith.c
src/pic/glue.c
src/pic/main.c
src/pic/main.h
src/pic/pcode.c
src/pic/pcodepeep.c
src/pic/pcoderegs.c
src/pic/ralloc.c