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
* 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 defmap entry for written WREG intact
* 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
* 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
* 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
<p18fxxx.inc>
* 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
* 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
vrokas [Thu, 31 Mar 2005 16:25:17 +0000 (16:25 +0000)]
* 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...
tecodev [Sat, 26 Mar 2005 17:49:18 +0000 (17:49 +0000)]
* 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)
epetrich [Sat, 26 Mar 2005 06:07:40 +0000 (06:07 +0000)]
* 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".
maartenbrock [Tue, 15 Mar 2005 07:34:20 +0000 (07:34 +0000)]
* 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
vrokas [Mon, 14 Mar 2005 01:24:58 +0000 (01:24 +0000)]
* 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)
vrokas [Sat, 12 Mar 2005 10:39:48 +0000 (10:39 +0000)]
* 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?
maartenbrock [Sun, 6 Mar 2005 11:50:17 +0000 (11:50 +0000)]
* 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
frief [Sun, 20 Feb 2005 19:31:18 +0000 (19:31 +0000)]
* 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.
frief [Sun, 20 Feb 2005 19:29:56 +0000 (19:29 +0000)]
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.
tecodev [Mon, 14 Feb 2005 11:00:42 +0000 (11:00 +0000)]
* 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