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
epetrich [Thu, 1 Jan 2004 17:10:04 +0000 (17:10 +0000)]
* src/SDCCsymt.h,
* src/SDCC.y (struct_or_union_specifier),
* support/Util/SDCCerr.c,
* support/Util/SDCCerr.h: verify that struct & union tags are used
as declared.
epetrich [Thu, 18 Dec 2003 21:23:36 +0000 (21:23 +0000)]
* src/SDCCast.c (createIvalCharPtr),
* src/SDCCglue.c (printChar): fixed bug #862241 (an error in my fix for
bug #753752)
* support/regression/tests/nullstring.c: tests for these two bugs
epetrich [Tue, 16 Dec 2003 19:46:43 +0000 (19:46 +0000)]
* src/SDCCval.c (valPlus, valMinus, valShift): fixed some problems with
implicit casts via union; they don't work on big endian systems
(possible fix for bug #861138)
frief [Sat, 13 Dec 2003 23:31:56 +0000 (23:31 +0000)]
* src/mcs51/main.c: fixed bug #737001 for the mcs51. SDCC clears xdata and data memory on startup. Set the environment variable SDCC_NOGENRAMCLEAR to disable this.
frief [Sat, 13 Dec 2003 23:09:08 +0000 (23:09 +0000)]
* src/mcs51/main.c: fixed bug #737001 for the mcs51. SDCC clears xdata and data memory on startup. Set the environment variable SDCC_NOGENRAMCLEAR to disable this.
frief [Sat, 13 Dec 2003 13:19:38 +0000 (13:19 +0000)]
src/mcs51/peephole.def, src/ds390/peephole.def: using the atomic test and clear instruction jbc (allows non-interrupt and interrupt code to safely compete for a resource without the non-interrupt code having to disable interrupts)
frief [Sat, 13 Dec 2003 13:17:53 +0000 (13:17 +0000)]
using the atomic test and clear instruction jbc. Allows non-interrupt and interrupt code to safely compete for a resource
without the non-interrupt code having to disable interrupts. Moved peephole 251 to the end and renumbered two to get
ascending numbers.
frief [Sat, 13 Dec 2003 13:16:08 +0000 (13:16 +0000)]
using the atomic test and clear instruction jbc. Allows non-interrupt and interrupt code to safely compete for a resource without the non-interrupt code having to disable interrupts.
epetrich [Sat, 13 Dec 2003 06:56:07 +0000 (06:56 +0000)]
* src/SDCCicode.c (geniCodeAdd),
* src/SDCCast.c (decorateType): fixed bug #857753 (need to be careful
with valFromType if type might be a pointer and host is big endian).
* src/SDCCast.c (decorateType): unary plus compatible with all arithmetic
types, not just integer types.
* src/SDCCsymt.c (addSymChain): clarified error message when symbol is
multiply defined with mismatching "at" address.
epetrich [Tue, 9 Dec 2003 07:17:29 +0000 (07:17 +0000)]
* src/SDCCopt.c (killDeadCode): change iCode type to DUMMY_READ_VOLATILE
instead of deleting the iCode when an operand is volatile
* src/z80/gen.c (genDummyRead),
* src/mcs51/gen.c (genDummyRead),
* src/ds390/gen.c (genDummyRead),
* src/hc08/gen.c (genDummyRead): handle operands in IC_LEFT and/or IC_RIGHT,
not just IC_RIGHT
* src/SDCCicode.c (geniCodeCall): fixed bug #851607
* src/SDCC.y: fixed bug #850420
frief [Fri, 5 Dec 2003 18:15:33 +0000 (18:15 +0000)]
Peter Townson's z80 in/out, more to bit/sbit/idata, link to indent, 'at' and initialization, #pragma preproc_asm, some ds390 options, array in code space, 2.3.6
epetrich [Fri, 5 Dec 2003 06:37:18 +0000 (06:37 +0000)]
Applied z80 i/o port patch from Peter Townson and fixed some operators
to better handle operands in A register.
* device/include/z180.h
* src/SDCC.y
* src/SDCCglue.c
* src/z80/gen.c
* src/z80/gen.h
* src/z80/main.c
* src/z80/peeph-z80.def
* src/z80/peeph.def
* src/z80/z80.h
epetrich [Mon, 1 Dec 2003 07:37:58 +0000 (07:37 +0000)]
* sim/ucsim/hc08.src/inst.cc,
* sim/ucsim/hc08.src/hc08mac.h: fixed some problems with CC flag bits and
carries from x to h
* src/hc08/gen.c (aopAdrStr): fixed problem with 16 bit immediate
* src/hc08/gen.c (XAccRsh): fixed problem with right shift
* device/include/stdarg.h: fixed varargs for hc08
* device/lib/Makefile.in,
* device/lib/hc08/Makefile,
* device/lib/hc08/_mulint.c,
* device/lib/hc08/_mullong.c: fixed some endian problems
epetrich [Wed, 26 Nov 2003 18:19:53 +0000 (18:19 +0000)]
* src/SDCCast.c (decorateType): disabled a transformation I added in
revision 1.188 (access to fields of a structure at an absolute address);
it breaks with bitfields, extern declarations, and gcse analysis.
* src/SDCCopt.c (isLocalWithoutDef): if ADDRESS_OF applied to a symbol, it
could be assigned through a pointer, so don't complain.
* src/SDCCast.c (astErrors),
* src/SDCCast.h,
* src/SDCCglue.c (emitRegularMap): fixed bug #847813
epetrich [Wed, 19 Nov 2003 17:23:35 +0000 (17:23 +0000)]
* src/SDCCcse.c (algebraicOpts): fixed bug #773153
* src/SDCClrange.c (rlivePoint): need to mark IC_RESULT used if POINTER_GET op
* src/SDCCopt.c (eBBlockFromiCode),
* src/SDCClrange.c (hashiCodeKeys, sequenceiCode, computeLiveRanges): seperated
the creation of the key hash table from the sequencing so it can be used
earlier (for some GCSE bug fixes still pending)
epetrich [Sat, 15 Nov 2003 08:38:38 +0000 (08:38 +0000)]
* src/SDCCcse.c (cseBBlock): fixed bug #527779
* src/SDCCcse.c (deleteGetPointers): rewrote so that the set
ordering is immaterial.
* src/SDCCdflow.c (mergeInExprs): fixed bug #587536
epetrich [Fri, 14 Nov 2003 08:33:10 +0000 (08:33 +0000)]
* src/SDCCicode.c (geniCodeAddressOf): fixed part of bug #840381
* src/SDCCopt.c (replaceRegEqv, isLocalWithoutDef): fixed other part
(SIGSEV) of bug #840381
* src/SDCCmain.c (linkEdit, assemble): fixed bug #841606 (don't
unlink new file before rename if new and old filenames are the same)
frief [Thu, 13 Nov 2003 21:17:25 +0000 (21:17 +0000)]
src/mcs51/main.c: started fixing bug #737001 (SDCC not clearing uninitialized variables) for the mcs51. Set environment variable SDCC_GENRAMCLEAR to test.
xdata initialization slightly shorter
frief [Thu, 13 Nov 2003 21:15:36 +0000 (21:15 +0000)]
started fixing bug #737001 (SDCC not clearing uninitialized variables) for the mcs51. Set environment variable SDCC_GENRAMCLEAR to test.
xdata initialization slightly shorter
epetrich [Sun, 9 Nov 2003 01:51:10 +0000 (01:51 +0000)]
* support/regression/fwk/lib/testfwk.c: printn is recursive and thus needs
the reentrant attribute.
* src/hc08/gen.c (genPackBits): added missing stack readjustment
* sim/ucsim/hc08.src/inst.cc (inst_mov): fixed bugs with mov instruction
simulation
* src/SDCCast.c (decorateType): fixed bug with storage class not being
updated during pointer dereference; f.e. ~(((char *)1)*) was being
erroneously reduced to a literal.
* src/hc08/ralloc.c (packRegisters, rematStr),
* src/hc08/gen.c (aopForRemat): allow literals to be rematerialized in
some cases
frief [Fri, 7 Nov 2003 17:31:22 +0000 (17:31 +0000)]
* doc/Makefile:sdccman.pdf should build with correct references (more info in commit msg)
* doc/clean.mk: also remove *.out files
* doc/sdccman.lyx: some additions, larger top/bottom margins
frief [Fri, 7 Nov 2003 17:25:28 +0000 (17:25 +0000)]
- removed dependency from l2hidx.ist (not in the directory and adds an unwanted section)
- always use dvipdf to generate the pdf file (pdflatex creates docs for acrobat reader >= 5.0)
- two runs of latex before and after makeindex (needed for correct pagenumbers in index)
epetrich [Fri, 7 Nov 2003 07:01:10 +0000 (07:01 +0000)]
* src/SDCC.y: fixed bug #837365
* support/regression/tests/bitopcse.c
* src/hc08/gen.c (genPointerGet): Don't assume pointer operand is
a symbol (might be valop instead)
* device/lib/Makefile.in: added errno.c to HC08SOURCES
* device/lib/clean.mk: added hc08 to the cleaning list
borutr [Fri, 7 Nov 2003 06:25:14 +0000 (06:25 +0000)]
* support/Util/NewAlloc.c, as/hc08/lklibr.c, as/mcs51/lklibr.c,
as/z80/aslist.c, as/z80/assym.c: removed inclusion of nonstandard malloc.h;
malloc is declared in standard stdlib.h
epetrich [Tue, 4 Nov 2003 14:19:03 +0000 (14:19 +0000)]
* src/SDCCcse.c (ifxOptimize),
* src/SDCClabel.c (labelIfx, deleteIfx): When the condition to
an IFX iCode is volatile, convert to DUMMY_READ_VOLATILE instead
deleting the IFX iCode.
* src/hc08/ralloc.c: reduced unneeded slocs
* src/hc08/gen.c: fixed bug in asmopToBoolean
epetrich [Tue, 4 Nov 2003 06:46:48 +0000 (06:46 +0000)]
* src/SDCCcse.c (ifxOptimize),
* src/SDCClabel.c (labelIfx, deleteIfx): When the condition to
an IFX iCode is volatile, convert to DUMMY_READ_VOLATILE instead
deleting the IFX iCode.
* src/hc08/ralloc.c: reduced unneeded slocs
* src/hc08/gen.c: fixed bug in asmopToBoolean