frief [Sun, 8 Feb 2004 14:29:30 +0000 (14:29 +0000)]
* device/include/c8051f120.h,c8051f300.h,c8051f310.h: added/updated header files for
Silicon Laboratories (formerly Cygnal) CPUs. Contributed by Maarten Brock.
* doc/sdccman.lyx: minor changes, recommended diff -Naur and diff -u in new section Submitting patches
epetrich [Sat, 7 Feb 2004 08:21:56 +0000 (08:21 +0000)]
* support/Util/SDCCerr.h,
* support/Util/SDCCerr.c,
* src/SDCCast.c (decorateType, sizeofOp): complain when sizeof is used
with an incomplete type (fixed bug #883734)
* src/SDCCicode.c (geniCodeCast): fixed bug #890510
epetrich [Fri, 6 Feb 2004 06:27:15 +0000 (06:27 +0000)]
* src/SDCCast.c (decorateType),
* src/SDCCicode.c (geniCodeParms, geniCodeCall): fixed bugs in my ANSI
function pointer implementation
* support/regression/tests/funptrs.c: added tests to verify both forms
of function pointers work correctly. Added tests to verify parameters
are passed in the correct order.
vrokas [Fri, 6 Feb 2004 01:54:37 +0000 (01:54 +0000)]
2004-02-06 Vangelis Rokas <vrokas AT otenet.gr>
* device.c (regCompare): registers are sorted by ascending
address and increasing size,
* main.c (_pic16_finaliseOptions): removed the declaration
of compiler macro MCU. Now a macro of the format pic18fxxxx
will be defined from the command line
2004-02-06 Hans-Juergen Dorn <hans.dorn AT apl-landau.de>
patch committed by Vangelis Rokas <vrokas AT otenet.gr>
* pcode.c (pic16initMnemonics): fixed typo in assignment to PCOP_RLNCF
PCOP_RLCF was overwritten!
* gen.c (genSkip) commented out calls to pic16_emitcode,
* (genCmpEQ) fixed "long" compares, only high word did get compared,
* (genlshTwo),
* (genRRC) added debugging info,
* (shiftL2Left2Result) Fixed bug, if offr > offl. Result got
overwritten while shifting,
* (shiftR2Left2Result) Fixed bug, if offr < offl. Result got
overwritten while shifting,
* (AccLsh),
* (AccRsh),
* (shiftLLeftOrResult),
* (shiftRLeftOrResult),
* (shiftRLong),
* (shiftLLong) Implemented with pic16_emitpcode
* (genlshFour) Replaced pic16_aopPut with pic16_emitpcode,
* (genLeftShift) Fixed bug, operand for shift by variable always
was "and"ed with 0x0f,
* (genLeftShiftLiteral),
* (genrshTwo),
* (genRightShiftLiteral) added debugging info,
* (genrshFour) added comment,
* (genRightShift) determined signedness from operand "left"
instead of "result"
epetrich [Wed, 4 Feb 2004 06:26:03 +0000 (06:26 +0000)]
* src/SDCCicode.c (geniCodeParms),
* src/SDCCast.c (decorateType, processParms): support for ANSI-style
function pointers, fixed function pointer bugs #861242 and #861896
bernhardheld [Sat, 31 Jan 2004 21:47:47 +0000 (21:47 +0000)]
* src/SDCCast.c (processParams): added new type flow and restructured
(gatherAutoInit): added new type flow
(addCast): cosmetic changes
(getLeftResultType): added new type flow for array indices, patch provided by Stas, see FR #877103
(decorateType): SDCC_NEWTYPEFLOW removed, new type flow is now standard; array index patch by Stas
* src/SDCCast.h: added prototype getResultTypeFromType()
* src/SDCCval.h,
* src/SDCCval.c (resolveIvalSym) (resolveIvalSym),
* src/pic/glue.c (pic14emitStaticSeg),
* src/pic16/glue.c (pic16emitStaticSeg),
* src/SDCCglue.c (emitRegularMap) (emitStaticSeg): added new type flow for initialization of symbols
* src/SDCCicode.c (geniCodeArray): removed warning W_ARRAY_BOUND
* support/Util/SDCCerr.h:
* support/Util/SDCCerr.c: replaced W_ARRAY_BOUND by W_IDX_OUT_OF_BOUNDS
* .version: bumped version number to 2.3.8
frief [Sat, 31 Jan 2004 21:36:33 +0000 (21:36 +0000)]
Added header files for Silicon Laboratories (formerly Cygnal) CPUs
converted by Maarten Brock. The original cygnal license prohibited inclusion into SDCC.
On 2004-01-19 Maarten has received permission from <mcutools@silabs.com>: "We are currently in the process of removing the copyright notices from our header files. So, feel free to do what you like with them". We maybe will change later from LGPL to whatever license shows up on the silabs website.
epetrich [Thu, 29 Jan 2004 06:36:41 +0000 (06:36 +0000)]
* src/z80/gen.c (genMult): handle single byte result product
* src/SDCCopt.c (killDeadCode): never convert ADDRESS_OF iCode to
DUMMY_READ_VOLATILE (fixed bug #886367)
bernhardheld [Tue, 27 Jan 2004 09:40:04 +0000 (09:40 +0000)]
Fixed promotion, it should be done on AST level:
* src/SDCCast.c (addCast): added promotion to int
(decorateType): updated call to upCast()
* src/SDCCicode.c (geniCodeLeftShift): removed call usualUnaryConversions()
bernhardheld [Sun, 25 Jan 2004 21:33:56 +0000 (21:33 +0000)]
* src/SDCCast.c: added an additional type flow in decorateType() of opposite direction, see feature request #860006; it's enabled at runtime by setting the environment variable SDCC_NEWTYPEFLOW
* src/SDCCast.h: changed prototype of decorateType()
* src/SDCCglue.c (emitRegularMap): updated call of decorateType()
* src/SDCCicode.c (geniCodeDivision) (geniCodeModulus): promotion from 'char' to 'int' can be omitted, if both operands are 'unsigned char'; see feature request #877103
* src/SDCCval.c: updated call of decorateType()
(valBitwise): fixed bug #882876
(valMinus): added promotion
(valLogicAndOr): result is unsigned
(cheapestVal) (constVal): literals from 0...255 are 'unsigned char' now
* src/SDCCsymt.c (computeType),
* src/mcs51/gen.c (genCmpGt) (genCmpLt): literal 'unsigned char' must not cause an unsigned operation
* src/pic/glue (pic14emitRegularMap),
* src/pic16/glue.c (pic16emitRegularMap): updated call of decorateType()
bernhardheld [Tue, 20 Jan 2004 21:08:53 +0000 (21:08 +0000)]
* src/pic/device.c,
* src/pic/gen.c,
* src/pic/gen.h,
* src/pic/glue.c,
* src/pic/main.c,
* src/pic/pcode.c,
* src/pic/pcode.h,
* src/pic/pcodepeep.c,
* src/pic/pcoderegs.c,
* src/pic/ralloc.c,
* src/pic/ralloc.h: applied patch from Slade Rich;
added support for multiple code pages and multiple RAM banks on the
PIC 14 port. The ASM files now no longer simply assume all the
code / RAM are in the same page / bank. This means the linker can
safely allocate code/RAM of separate ASM files to different pages/banks.
* doc/sdccman.lyx: added Slade's tips
bernhardheld [Tue, 20 Jan 2004 21:06:26 +0000 (21:06 +0000)]
* support/valdiag/tests/overflow.c: added shift tests
* src/pic/device.c,
* src/pic/gen.c,
* src/pic/gen.h,
* src/pic/glue.c,
* src/pic/main.c,
* src/pic/pcode.c,
* src/pic/pcode.h,
* src/pic/pcodepeep.c,
* src/pic/pcoderegs.c,
* src/pic/ralloc.c,
* src/pic/ralloc.h: applied patch from Slade Rich;
added support for multiple code pages and multiple RAM banks on the
PIC 14 port. The ASM files now no longer simply assume all the
code / RAM are in the same page / bank. This means the linker can
safely allocate code/RAM of separate ASM files to different pages/banks.
* doc/sdccman.lyx: added Slade's tips
epetrich [Tue, 20 Jan 2004 05:48:09 +0000 (05:48 +0000)]
* src/hc08/gen.c (genPlusIncr, genUminus, genMinusDec, genCmp,
shiftL2Left2Result): fixed bug #879326
(genAnd, genOr, genXor): fixed bug when result was of type AOP_CRY
(genMultOneByte): fixed bug in signed vs unsigned multiplication
* sim/ucsim/hc08.src/inst.cc (inst_clr): added missing effective
address fetch for clr instruction
* device/lib/hc08/_mulint.c: created optimized assembly version
* src/SDCCdflow.c (computeDataFlow): fixed bug #878209
vrokas [Fri, 16 Jan 2004 15:06:35 +0000 (15:06 +0000)]
2004-01-16 Vangelis Rokas <vrokas@otenet.gr>
* src/SDCCmain.c (linkEdit): variable $3 of the linker command is
loaded with the linker search paths (-L arguments) and the libraries
to be linked with the current source (-l arguments). Changes
currently will affect only the pic16 port.
* src/pic16/main.c (_pic16_finaliseOptions): add to the linker
include path the port specific paths and port specific libraries,
* gplink command now contains the $3 argument,
* src/pic16/device.h,
* src/pic16/device.c,: structure PIC_device is made public and
renamed to PIC16_device, the same for variable Pics which is renamed
to Pics16. Updated all references to them.
* src/pic16/glue.c (pic16glue): corrected bug with code
initialization which bypassed the variable initializations block.
* device/lib/pic16/Makefile.rules: removed --penable-stack from
COMPILE_FLAGS and added the --nostdinc option
vrokas [Tue, 13 Jan 2004 23:18:32 +0000 (23:18 +0000)]
2004-01-14 Vangelis Rokas <vrokas@otenet.gr>
Documenting changes from previous commits.
* configure.in (version 1.56),
* configure: initially I've added AC_CONFIG_SUBDIRS(device/lib/pic16)
when generating output files to configure the pic16 library,
but now I've commented it out, since gputils aren't installed in the
SF compile farm, so library won't compile
* device/lib/Makefile.in (version 1.56): initially I've added in
target 'all' the prerequestive 'model-pic16' so it compiled the
pic16 library, but now I've commented it out for the same reasons
above,
* added targets 'model-pic16' and 'objects-pic16' to compile the
library
* added target 'port-specific-objects-pic16' to handle the
generated libraries and copy them into the build/ directory
* added target 'clean-intermediate-pic16' to clean intermediate
files into pic16 directory
* in target 'installdirs' added line to create directory pic16 in
the installation path
* device/include/Makefile.in (version 1.11): in target 'install'
added lines to copy all header files to installation path,
* in target 'installdirs' added line create directory for pic16
headers in the installation path
epetrich [Tue, 13 Jan 2004 06:31:25 +0000 (06:31 +0000)]
* src/z80/main.c (_parseOptions): fixed the portmode= command line
option so that it actually works. Made it specific to the z80, since
the gbz80 doesn't have these kinds of I/O ports.
vrokas [Mon, 12 Jan 2004 23:31:46 +0000 (23:31 +0000)]
2004-01-13 Vangelis Rokas <vrokas@otenet.gr>
Mainly changes to support compilation of the device libraries
* src/pic16/device.c: stack is allocated via symbol and not
via literal number. The symbol is placed in the corresponding
position of the data ram
* (pic16_dump_section): relocatable and absolute uninitialized
data are now emitted in sorted order to reduce section naming,
* src/pic16/ralloc.c (newReg): fixed bug with SFR's that
weren't marked as being in the access bank,
vrokas [Mon, 12 Jan 2004 22:40:44 +0000 (22:40 +0000)]
2004-01-13 Vangelis Rokas <vrokas@otenet.gr>
Added portion of GNU PIC Library under the directory
device/include/pic16 and device/lib/pic16. These files
contain the declarations of SFRs for the PIC18Fxx2 devices.
The directory is initialized via configure from toplevel.
frief [Sun, 11 Jan 2004 20:13:16 +0000 (20:13 +0000)]
doc/sdccman.lyx: Moved and added some sections, small changes all over.
Telling LaTeX to be less strict with word spacing
to better keep the right margin. Changed some notes about
maintainance of the ports in section 3.2.1 - OK like this?
frief [Sun, 11 Jan 2004 20:10:11 +0000 (20:10 +0000)]
Moved and added some sections, small changes all over.
Telling LaTeX to be less strict with word spacing
to better keep the right margin. Changed some notes about
maintainance of the ports in section 3.2.1 - OK like this?
vrokas [Sun, 11 Jan 2004 15:26:54 +0000 (15:26 +0000)]
2004-01-11 Vangelis Rokas <vrokas@otenet.gr>
SDCC source changes:
* src/SDCCopt.c (cntToFcall, cnvToFloatCast, cnvFromFloatCast,
convilong): modified to inform the pic16 port that builtin functions
are external
PIC16 PORT specific changes:
* src/pic16/device.c pic16_dump_equates() added,
processor registers declared internally by the port are emitted in
the translation as equates,
* src/pic16/gen.c: inline code is passed unprocessed to the
translation,
* (pic16_popGetLit2): fnuction modified to take second operand as
pCodeOp pointer and not as literal,
* (popRegFromIdx): prefixed with pic16_,
* (pic16_popCombine2): modified to receive already allocated pCode
operands,
* (pic16_pushpCodeOpReg, pic16_poppCodeOpReg): added
* (genFunction): initializes local stack frame and pushes on stack
all the registers used by this function,
* (genEndFunction): restores all registers from stack and restores
stack frame,
* src/pic16/glue.c (pic16emitRegularMap): various changes and
improvements,
* (pic16glue): changed the program startup sequence,
* added new dbName code 'A' for functions placed in absolute section
* src/pic16/main.c: added function attribute _naked,
* added pragma 'code' to place a fnuction at an absolute address,
* added command line arguments --debug-ralloc and --pcode-verbose,
* (_pic16_finiliseOptions): options.all_callee_saves is set by default
* src/pic16/pcode.c (pic16_pBlockConvert2Absolute) added,
* (pic16_newpCodeOpLit2): modified to take the second operand as
pCodeOp pointer,
* (pic16_printpBlock): modified to emit each function in a separate
section,
* (pic16_get_op): modified to use the gpasm modifiers LOW,HIGH and
UPPER for immediate operands,
* src/pic16/pcodepeeph.c: added peephole support for the LFSR
instruction,
* src/pic16/peeph.def: all peepholes with movff are commented out,
because there is a problem in the pcode peep optimizer,
* src/pic16/ralloc.c: the register allocator can now reuse local
function symbols for another function. This saves register usage.
* src/pic16/ralloc.h: added flag isLocal in structure regs,
Added file src/pic16/NOTES with information about program writing on
the current port version.
epetrich [Fri, 9 Jan 2004 06:03:09 +0000 (06:03 +0000)]
* src/ds390/main.c,
* src/z80/main.c: added missed needLinkerScript flags (more than
one port structure defined in these file)
* src/ds390/gen.c (aopForSym, aopOp, operandsEqu, aopOp3): fixed
bug #795325
vrokas [Thu, 8 Jan 2004 16:08:03 +0000 (16:08 +0000)]
2004-01-08 Vangelis Rokas <vrokas@otenet.gr>
* src/SDCCmain.c: removed various references to DEFAULT_PORT
* src/port.h: added flag needLinkerScript in port->linker
structure to inform whether to create a .lnk file or not,
* src/avr/main.c,
* src/ds390/main.c,
* src/hc08/main.c,
* src/mcs51/main.c,
* src/pic/main.c,
* src/pic16/main.c,
* src/xa51/main.c,
* src/z80/main.c: changed appropriately to configure
needLinkerScript flag
* src/pic/gen.c,
* src/pic16/gen.c (genAddrOf): fixed bug #863624
* src/pic/glue.c: added variable udata_section_name to
override default uninitialized data segment definition for
devices only with SHAREBANK memory (reported from Erik Epetrich)
* (pic14emitOverlay): modified to emit a commented overlay segment
directive when no overlay data exist
* (picglue): modified to emit uninitialized data segment
according to udata_section_name
* src/pic/main.c (_pic14_parseOptions): added command line
options --udata-section-name=[name] to override default
udata definition name
* modified _linkCmd and _asmCmd to include compiler passed
arguments via -W option
* src/pic16/main.c: added $l in _asmCmd, changed extension for
object file from '.rel' to '.o' in port->linker structure,
changed size of fptr from 2 to 3 in port structure
epetrich [Wed, 7 Jan 2004 07:28:00 +0000 (07:28 +0000)]
* src/SDCCsymt.c (processFuncArgs): fixed superflous allocation noted
in bug #860505
* src/SDCCmem.c (printAllocInfoSeg, printAllocInfo): minor changes to
how the function variable allocation summary is displayed; also
include information about variables allocated to the overlay
segment
epetrich [Tue, 6 Jan 2004 07:14:55 +0000 (07:14 +0000)]
A python script to validate compiler diagnostic messages. It can be
used to verify that sdcc complains about bad c source code and
gives a good location of the error.
* support/valdiag/Makefile,
* support/valdiag/valdiag.py,
* support/valdiag/tests/*
epetrich [Tue, 6 Jan 2004 07:04:52 +0000 (07:04 +0000)]
* src/SDCC.y (enum_specifier, enumerator_list, opt_assign_expr),
* src/SDCCsymt.c (newEnumType),
* src/SDCCsymt.h
* support/Util/SDCCerr.c,
* support/Util/SDCCerr.h: fixed bug #871258 and some other unreported
enum related bugs.
* support/regression/tests/enum.c: added test for enum values that
require at least 2 bytes of storage.
vrokas [Mon, 5 Jan 2004 19:45:14 +0000 (19:45 +0000)]
2004-01-06 Vangelis Rokas <vrokas@otenet.gr>
PIC16 port related changes:
* device.c: removed pic16_finalMapping and pic16_finalMappingSize,
added variable stackPos,
* gen.c: genCall, assignResultValue: added support for
pushing/retrieving function parameters to/from stack,
genFunction,genEndFunction: setup stack frame for the
generated function,
genAddrOf: will be changed according to bug 863624
* added files genutils.c and genutils.h which contain gen*
debugged and optimised functions extracted from gen.c
* glue.c: added variable 'externs' which holds extern symbols,
pic16emitRegularMap: is modified to properly handle relocatable
symbols under the new scheme,
pic16createInterruptVect: is modified
pic16printPublics: is modified to emit 'global' assembler directives,
added pic16_printExterns to print extern symbols,
pic16glue: initializes stack/frame pointer in the beginning of
the assembly output. Temporary hack, will be corrected later,
because gplink yet does not support stack and SDCC does not
yet support a type of crt0.o object to create the final binary.
* Removed many lines that contain 8051 legacy code.
* The code is finally placed under a 'code' directive.
* Added port specific options.
* _process_pragma: simplified since now we do not need *special*
include file to define SFR registers. But a separate header
will be needed. This will be developed later.
* _pic16_parseOptions: added, parses port specific options:
--pgen-banksel, --obanksel=, --pomit-config-words, --pomit-ivt,
--pleave-reset-vector, --penable-stack, --pstack-model, --debug-xtra
--preplace-udata-with=
* _pic16_setDefaultOptions: modified to initialize section names,
but hack is temporarly out of order since it needs improvement.
* _pic16_genAssemblerPreamble: configuration words are emitted by
their address instead of their name. This part is incomplete and
supports only the 18Fxx2 devices. Other devices will emit an error
during assembly since they do not contain the same set of config
registers
* _pic16_genIVT: is modified,
* pcode.c: added definitions for some hardware registers that are needed
for stack support
* added flag is2LitOp and variable pci_magic in pCodeInstruction.
All PCI entries are updated. Now LFSR is supported.
* Removed pic16_pciTRIS is mentioned by mdubuc in source
* added pic16_newpCodeOpLit2 to support instructions with
two literal arguments
* pic16_pCode2str: corrected code that emits assembler instructions
with two literal operands and those that have an access bit modifier
* genericPrint: now PC_ASMDIR pCodes, can emit a label if it exists,
this fixes a bug which caused some labels to be lost, when an
assembler directive was added, i.e. banksel,
* pic16_FixRegisterBanking: improved logic that causes the insertion
of bank switching,
* InlineFunction: functions that are called once, are not any more
inlined. This can be a port option in the future,
* pcode.h: added pCodeOpLit2 and added variable label in pCodeAsmDir
* ralloc.c: added pic16_rel_udata and pic16_fix_udata variables which
hold the corresponding uninitialized symbols,
* pic16_allocProcessorRegister: registers have explicit marked the
accessBank field,
* pic16_allocInternalRegister: registers are explicit marked as
not used,
* pic16_writeUsedRegs: pic16_dynDirectBitRegs was missing from the
processing list, so bit registers were lost,
*
* ralloc.h: added field 'accessBank' and original symbol operand
in register definition,
* removed the field isMapped from register definition,
** Several functions have been removed from various sources:
BanksUsedFlow2,BanksUsedFlow,FixBankFlow,InstructionRegBank,
pic16_addMemRange,pic16_isREGinBank,pic16_dump_map,pic16_dump_cblock
isSFR,validAddress,mapRegister,assignRegister,pic16_assignFixedRegisters
pic16_assignRelocatableRegisters
** others have been introduced:
pic16_areRegsSame,pic16_dump_section,checkAddReg,pic16_groupRegistersInSection
pic16_popGetLit2,pic16_popCombine2,pushw,pushaop
vrokas [Mon, 5 Jan 2004 17:45:04 +0000 (17:45 +0000)]
2004-01-05 Vangelis Rokas <vrokas@otenet.gr>
* support/scripts/inc2h.pl: changed definition of BIT_AT
to emit 'sbit at' instead of 'bit at'. This was a request.
PIC16 port related preliminary changes:
* gen.c: prefixed function popRegFromString with
pic16_ and all references to it corrected
* pcode.c: all pic16_pc_* hardware registers prefixed
with underscore (_),
pic16_popCopyGPR2Bit(): function sets register wasUsed=1
* ralloc.c: newReg(): when register is REG_SFR then
set address to rIdx,
pic16_allocProcessorRegister(): marks register wasUsed=0
pic16_writeUsedRegs(): added a call to assign processor
registers via pic16_assignFixedRegisters