tecodev [Wed, 3 Aug 2005 12:00:24 +0000 (12:00 +0000)]
* 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
* 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
* 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)
* 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
* 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)
* 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
* 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.
* 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)
maartenbrock [Thu, 30 Jun 2005 18:03:33 +0000 (18:03 +0000)]
* 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
tecodev [Wed, 15 Jun 2005 19:50:54 +0000 (19:50 +0000)]
* 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()
tecodev [Thu, 26 May 2005 15:25:48 +0000 (15:25 +0000)]
* 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
tecodev [Sun, 22 May 2005 12:39:39 +0000 (12:39 +0000)]
* 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
tecodev [Tue, 17 May 2005 21:28:45 +0000 (21:28 +0000)]
* device/include/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
tecodev [Mon, 16 May 2005 19:11:21 +0000 (19:11 +0000)]
* src/pic16/gen.{c,h}: s/mov2f/pic16_mov2f made public
* src/pic16/genarith.c (genAddit): fixed bug 1202480
* src/pic16/pcode.{c,h} (pic16_newpCodeOpBit_simple): NEW
convenience function for bit access
frief [Sun, 15 May 2005 19:08:10 +0000 (19:08 +0000)]
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
tecodev [Sat, 14 May 2005 12:11:22 +0000 (12:11 +0000)]
* 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
* 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