1 2006-04-28 Bernhard Held <bernhard AT bernhardheld.de>
3 * device/lib/pic/libdev/Makefile.in,
4 * device/lib/hc08/Makefile.in,
5 * device/lib/gbz80/Makefile.in,
6 * device/lib/z80/Makefile.in,
7 * device/lib/ds390/Makefile.in,
8 * device/lib/ds400/Makefile.in: added srcdir to include search path,
9 thanks to Borut for the bug report
11 * configure: always create doc/Makefile independent from --enable-doc
12 * Makefile.in: always install from directory doc independent from
14 * device/lib/pic/Makefile.in: added libdev again, it was erroneously
16 * device/lib/pic/libdev/Makefile.in: fixed VPATH build
17 * doc/Makefile.in: install *.txt if present
19 2006-04-28 Raphael Neider <rneider AT web.de>
21 * src/pic/{gen.c,main.h,pcode.c},
22 * src/pic16/{gen.c,pcode.c}: quietened compiler warnings
23 concerning signedness with casts
25 2006-04-28 Raphael Neider <rneider AT web.de>
27 * src/pic/gen.c (genFunction): set global pic14_hasInterrupt on
28 definition of an interrupt handler,
29 * src/pic/glue.c (pic14_emitInterruptHandler): moved output of
30 interrupt handler stuff from picglue() to separate routine,
31 (picglue): enabled definition of intr handlers in files w/o main()
33 2006-04-26 Maarten Brock <sourceforge.brock AT dse.nl>
35 * support/librarian/sdcclib.c: moved include <limits.h> up to enable
36 compilation with MSVC 2005 Express Edition (VC8)
38 2006-04-26 Bernhard Held <bernhard AT bernhardheld.de>
40 * device/lib/Makefile: fixed build of gbz80 lib
42 2006-04-26 Maarten Brock <sourceforge.brock AT dse.nl>
44 * support/regression/tests/bug-460010.c,
45 * support/regression/tests/bug-524691.c,
46 * support/regression/tests/bug-716242.c: removed conditional defines
47 that are already in testfwk.h
49 2006-04-25 Maarten Brock <sourceforge.brock AT dse.nl>
51 * src/ds390/gen.c (AccAXRrl1, AccAXLrl1): changed to real rotate by 1,
52 (AccAXRsh1): added, shift right by 1,
53 (AccAXLsh, AccAXRsh, AccAXRshS): updated for AccAXRrl1, AccAXRsh1 and
55 * support/regression/tests/rotate.c: use <stdint.h> and enabled ds390
57 2006-04-25 Bernhard Held <bernhard AT bernhardheld.de>
59 * src/SDCCast.c (decorateType): partial fix for RFE 1475769,
60 remove cast to same type
61 * src/SDCCast.c (decorateType): fix for RFE 1475742,
62 optimize 'ifx (op == 0)' resp. 'ifx (op != 0)'
64 * link/z80/Makefile: removed, they have moved to
67 * configure.in: replaced duplicate message about ucsim by missing sdcpp
68 * install-sh: fix bug #1204398 by setting umask 0022
69 * device/lib/Makefile: separate build of z80 and gbz80 lib
71 2006-04-24 Bernhard Held <bernhard AT bernhardheld.de>
73 Enabled VPATH feature: changed nearly all Makefiles (149 files).
74 See sdccman.lyx '2.4.10 VPATH feature' about how to use it.
76 One basic decision: e.g. src/clean.mk includes further files. In order
77 to make this work there are two solutions:
78 - rename another dozen clean.mk to clean_in.mk, add srcdir to them and
79 run configure on them. This way they can use
80 'include $(srcdir)/port-clean.mk'
81 - always include clean.mk by the Makefile at the same level. To avoid
82 that `make clean` tries to include and build Makefile.dep the
83 MAKECMDGOALS are examined (see e.g. src/Makefile.in). This has been
84 implemented, because now even `make uninstall` doesn't create
85 Makefile.in. clean.mk could be eliminated by pasting it in
88 * debugger/mcs51/Makefile.in: build own objects from library sources
89 (SLIB, SDCC) in current directory
91 * configure, configure.in: renamed --disable-device-lib-build in
92 --disable-device-lib; added --enable-doc, the required tools are
93 searched by configure; added result message; the toolchain for the
94 belonging ports are now only built, if the port is enabled.
96 * support/regression/*: all output is written in directory gen, because
97 the fwk and ports directories don't livet in the build tree using vpath
99 * doc/sdccman.lyx: renamed --disable-device-lib-build to
100 --disable-device-lib, added --enable-doc, added section VPATH
102 * sim/ucsim/configure.in,
103 * sim/ucsim/configure.in: hc08 couldn't be disabled, now hc08 and
104 z80 are enabled by default
106 2006-04-24 Raphael Neider <rneider AT web.de>
108 * src/pic/device.c (pic14_assignConfigWordValue): remember assignments
109 to config word, "pic14_"-prefixed some extern functions
110 (pic14_emitConfigWord): emit __config directive(s) if assignment to
111 config word has been found
112 * src/pic/device.h: added prototypes
113 * src/pic/pcode.c: added "pic14_"-prefix where needed
114 * src/pic/ralloc.c (IS_CONFIG_ADDRESS,pic14_assignRegisters): cosmetic
116 * src/pic/glue.c (pic14_constructAbsMap): handle assignments to config
118 (pic14emitRegularMap): ignore config words,
119 (pic14createInterruptVect): moved generating __config directives away
120 (picglue): have __config directives emitted
122 2006-04-24 Borut Razem <borut.razem AT siol.net>
124 * doc/Makefile: sync with nightly build makefile
126 2006-04-24 Raphael Neider <rneider AT web.de>
128 * src/pic/pcoderegs.c (OptimizeRegUsage): do not optimize
129 registers that have not been assigned proper liveranges,
130 fixes #1469504 and #1474602,
131 (pCodeRegOptimizeRegUsage): fixed typo in comment
133 2006-04-24 Borut Razem <borut.razem AT siol.net>
135 * device/examples/main8051.c: deleted - it was removed from CVS
136 24.mar.2000 and after that modified 18.feb.2001, so it reappered
137 after the transition to Subversion
138 * src/SDCCalloc.h: deleted - it was removed from CVS
139 3.feb.2001 and after that modified 18.feb.2001, so it reappered
140 after the transition to Subversion
141 * sim/ucsim/cpu.gif, sim/ucsim/interrupt.gif, sim/ucsim/new.gif,
142 sim/ucsim/serial1.gif, sim/ucsim/serial2.gif,
143 sim/ucsim/term_cpuopt.gif, sim/ucsim/timers.gif, sim/ucsim/wins.gif,
144 sim/ucsim/post.jpg, sim/ucsim/UCsim.jpg: corrected
146 2006-04-22 Maarten Brock <sourceforge.brock AT dse.nl>
148 * as/asx8051.dsp: added mcs51/strcmpi.h
149 * as/hc08/as_hc08.dsp: added asm.h, m6808.h, strcmpi.h
150 * as/hc08/aslink.h: updated lnksect prototype
152 * as/mcs51/asm.h: added a_addr to struct area and s_org to struct sym
154 * as/mcs51/asmain.c (asmbl): init dot.s_org for S_ORG,
155 (newdot): handle A_ABS
157 * as/mcs51/asout.c (outarea): output address
158 * as/hc08/lkaomf51.c,
159 * as/mcs51/lkaomf51.c: disabled unused array UsageType
162 * as/z80/z80pst.c: "ABS" is not A_OVR
163 * as/hc08/lkarea.c (newarea): read a_addr,
164 (lnkarea): added codemap array, sort absolute areas to the front,
165 combine all GSINITx/GSFINAL,
166 (find_empty_space, allocate_space): new functions,
167 (lnksect): return next address, handle absolute sections
168 * as/mcs51/lkarea.c (newarea): read a_addr,
169 lnksect2 prototype changed,
170 (lnkarea2): define codemap unsigned, combine all GSINITx/GSFINAL,
171 (find_empty_space, allocate_space): new, factored out of lnksect2,
172 (lnksect2): return next address, handle absolute sections
174 * as/mcs51/lkhead.c (newhead): head is absolute but not overlay
175 * as/hc08/lklibr.c (addfile, fndsym),
176 * as/mcs51/lklibr.c (addfile, buildlibraryindex, fndsym): prevent
177 index out of range and detect both '\' and '/'
178 * device/include/mcs51/c8051f200.h: added _XPAGE, removed bad comment
179 * device/include/stdbool.h: removed SDCC_ds390 from check to pass
180 regression tests (ds390 cannot return bool yet)
181 * doc/sdccman.lyx: changed version number, document changed --no-peep,
182 document critical interrupts on z80, document changed SDCC define
183 * src/asm.c (_asxxxx_mapping): fixed .org directive,
184 (_a390_mapping): added .org directive
185 * src/hc08/gen.c (transferAopAop): made bytemask log to fix warning,
186 (genMultOneByte): fixed warnings
187 * src/hc08/hc08.dsp: lowered warning level to 2 to suppress pedantic
189 * src/pic16/device.c: removed newReg prototype, removed BYTE_IN_LONG
190 * src/pic16/gen.c (pic16_popGetLabel): made parameter key signed,
191 (pic16_genLeftShiftLiteral, genRightShiftLiteral): fixed warnings
192 * src/pic16/gen.h: changed prototype for pic16_popGetLabel
193 * src/pic16/main.c: removed newReg prototype
195 * src/pic16/pcode.h (pic16_emitDB): changed parameter c to int to fix
197 * src/pic16/pic16.dsp: lowered warning level to 2 to suppress pedantic
200 * src/pic16/ralloc.h (newReg): changed type to int and size to unsigned
202 * src/pic/pcode.c (allocInternalRegister): changed parameter optype
203 from short to PIC_OPTYPE
204 * src/pic/pic.dsp: lowered warning level to 2 to suppress pedantic ones
205 * src/pic/ralloc.c (newReg, allocInternalRegister): changed parameter
206 optype from short to PIC_OPTYPE
207 * src/port.h: made int_size unsigned to fix warnings
208 * src/SDCC.y: fixed warning on MSVC
209 * src/SDCCicode.c (getArraySizePtr): return unsigned int
210 * src/SDCCopt.c (convertToFcall): fixed warnings
211 * src/SDCCsymt.h: removed double prototype for genSymName
212 * src/xa51/ralloc.c (allocReg): made size unsigned int, type int and
213 offset int to fix warnings
215 2006-04-22 Borut Razem <borut.razem AT siol.net>
217 * doc/sdccman.lyx, */Makefile, */Makefile.in:
218 references to CVS replaced with Subversion
220 2006-04-21 Borut Razem <borut.razem AT siol.net>
222 * doc/sdccman.lyx, */Makefile, */Makefile.in:
223 references to CVS replaced with Subversion
225 2006-04-19 Borut Razem <borut.razem AT siol.net>
227 * src/version.awk: adapted for svn
228 * /asxxxx/asxhtml/*.gif: set property svn:mime-type to image/gif
229 sim/ucsim/doc/*.gif: set property svn:mime-type to image/gif
230 sim/ucsim/doc/*.jpg: set property svn:mime-type to image/jpeg
231 /binutils-avr/etc/*.vi, *.jin: removed all properties
232 support/scripts/sdcc.ico: set property svn:mime-type to image/x-icon
234 2006-04-19 Borut Razem <borut.razem AT siol.net>
236 * CVS to Subversion migration completed
238 2006-04-18 Borut Razem <borut.razem AT siol.net>
240 * support/scripts/sdcc.nsi: removed unexisting ${DEV_ROOT}\lib\pic\*.o,
241 ${DEV_ROOT}\lib\src\pic\libdev\*.S, ${DEV_ROOT}\lib\src\pic\libdev\*.inc
243 2006-04-17 Borut Razem <borut.razem AT siol.net>
245 * device/include/Makefile.in: added pic/*.inc to the installation
247 2006-04-15 Bernhard Held <bernhard AT bernhardheld.de>
249 * support/regression/collate-results.py: fixed output in case of
251 * support/regression/generate-cases.py: fixed splitting of pathnames
253 * as/hc08/lklibr.c (addfile),
254 * as/mcs51/lklibr.c (addfile): fixed off-by-one bug
256 2006-04-11 Raphael Neider <rneider AT web.de>
258 * src/pic16/gen.c (getFreePtr, pic16_popRegFromString),
259 * src/pic16/ralloc.c (pic16_allocregWithName): removed debug output
260 * src/pic16/pcode.c (assignValnums): fixed #1460578
262 2006-04-11 Raphael Neider <rneider AT web.de>
264 * device/lib/pic/libdev/*.c,
265 * device/include/pic/*.h: replaced sfr and data with __sfr and __data,
266 fixes #1468739, enables compilation in --std-c99 mode
267 * support/scripts/inc2h.pl: emit __sfr/__data instead of sfr/data
269 2006-04-11 Raphael Neider <rneider AT web.de>
271 * src/pic/device.c (find_device): removed debug output
272 (list_valid_pics): enabled verbose listing of supported devices
273 * device/include/stdbool.h: define bool as char for pic14/16 as well
275 2006-04-07 Frieder Ferlemann <Frieder.Ferlemann AT web.de>
277 * src/SDCC.y: allow using brackets here: "__interrupt (1) __using (1)"
279 2006-04-07 Maarten Brock <sourceforge.brock AT dse.nl>
281 * .version: bumped version to 2.5.6
282 * src/pic/ralloc.c (newReg): MSVC doesn't support __builtin_return_address
284 2006-04-06 Raphael Neider <rneider AT web.de>
286 * .version: bumped version to 2.5.6 (pic14 ABI changed)
287 * src/SDCCmain.c: add -DSDCC_PROCESSOR=<id> for pic14 port
288 * src/pic/glue.c (emitSymbolToFile,pic14_constructAbsMap,
289 pic14emitRegularMap,pic14emitMaps): moved output for absolute symbols to
290 pic14_constructAbsMap
291 (pic14printPublics): declare absolute global symbols as global
292 (pic14createInterruptVect),
293 * src/pic/ralloc.c (IS_CONFIG_ADDRESS): support second config word,
294 (newReg): assume new registers unused, use correct name in
295 hashtable (reg->name instead of name), more debugLog output
296 * src/pic/device.h (PIC_device): added fields for verbose output
297 * src/pic/device.c: moved device definition to pic14devices.txt,
298 added routines for runtime parsing of pic14devices.txt,
299 added support for second config word
300 * src/pic/main.c (_process_pragma): removed #pragma maxram,
301 (_pic14_keywords): no longer accept "bit" and "sbit" keywords
302 (_pic14_initPaths): add search paths with "pic" suffix (not "pic14")
303 (_pic14_parseOptions): moved pCodeInitRegisters here
304 (_pic14_do_link): add "pic$(ARCH).lib" to linker arguments
305 * src/pic/pcode.c (AnalyzeBanking): bail out on unset processor,
306 (pCodeInitRegisters): rewrapped comments, perpared new approach to
307 handling the pseudo stack
308 * device/lib/Makefile.in: ignore failures in objects-pic16,
309 * device/lib/pic/{configure,configure.in,Makefile}: added libdev/
310 * device/lib/pic/NEWS: document new dependency on picXXX.lib
311 * device/lib/pic/Makefile.subdir,
312 * device/lib/pic16/Makefile.subdir: improved clean rules
313 * device/lib/pic/libdev/: NEW, pic14 device libraries
314 * device/lib/pic/libsdcc/_gptr{get,put}{1,2,3,4}.S: use _X not X
315 * device/lib/pic/libsdcc/macros.inc: use _X not X, declare default SFRs
316 * device/include/Makefile.in: create subdir and install pic14 headers
317 * device/include/pic/p16f_common.inc: removed unused declarations
318 * device/include/pic/pic16*.h: added header files for 100+ 14 bit
319 PICs from inc2h.pl v1.6,
320 replaced BIT_AT macros with struct declarations
321 * device/include/pic/pic14devices.txt: definition of supported devices,
322 all above improvements contributed by Zik Saleeba, thanks
323 * support/scripts/inc2h.pl: removed BIT_AT, replaced with structs
324 * support/scripts/sdcc.nsi: also install pic14 device libraries and
327 2006-04-06 Maarten Brock <sourceforge.brock AT dse.nl>
329 * device/include/mcs51/c8051f410.h: added interrupt numbers,
330 * device/include/mcs51/c8051f200.h: old SiLabs mcu completes the list,
331 thanks to Charles Olds
333 2006-04-06 Frieder Ferlemann <Frieder.Ferlemann AT web.de>
335 * debugger/mcs51/cmd.c (infoRegisters): show return address on stack
337 2006-04-06 Maarten Brock <sourceforge.brock AT dse.nl>
339 * src/SDCCpeeph.c (labelIsReturnOnly): fixed bug 1464657
340 * src/mcs51/gen.c (genJumpTab): fixed bug in medium model
341 * support/regression/bug1464657.c: added, new test
343 2006-04-05 Maarten Brock <sourceforge.brock AT dse.nl>
345 * src/SDCCmain.c (preProcess): implemented RFE 1449908, define SDCC as the
348 2006-04-05 Maarten Brock <sourceforge.brock AT dse.nl>
350 * src/SDCCpeeph.c (initPeepHole): implemented RFE 1460196, when both
351 --no-peep and --peep-file <file> are used don't use default rules but
354 2006-04-05 Maarten Brock <sourceforge.brock AT dse.nl>
356 * src/mcs51/gen.c (genCall): fixed bug 1457608
358 2006-03-30 Frieder Ferlemann <Frieder.Ferlemann AT web.de>
360 * doc/sdccman.lyx: reverted to version 1.129 of december as my latest
361 changes seem to cause (trigger?) problems with the build system.
363 2006-03-29 Maarten Brock <sourceforge.brock AT dse.nl>
365 * src/SDCCpeeph.c (operandsLiteral): new, added,
366 (callFuncByName): inserted operandsLiteral
367 * src/mcs51/peeph.def: reenabled 132.e, added extra check to 132.x
369 2006-03-28 Frieder Ferlemann <Frieder.Ferlemann AT web.de>
371 * doc/sdccman.lyx: added paragraph "Use of SDCC in Education"
372 * src/mcs51/peeph.def: disabled rule 132.e fixing bug #1453093
374 2006-03-24 Maarten Brock <sourceforge.brock AT dse.nl>
376 * src/z80/gen.c (genFunction, genEndFunction): fixed bug 1160666,
377 implemented patch 1120823 Thanks to Willy De la Court (normal
378 interrupts need an interrupt number now if they are made critical),
379 and enabled nesting of critical functions though not for gbz80
380 (genCritical, genEndCritical): added functions
381 (genZ80Code): added cases for CRITICAL and ENDCRITICAL
382 * src/z80/mappings.i: added "ei" to all mappings
384 2006-03-20 Frieder Ferlemann <Frieder.Ferlemann AT web.de>
386 * sim/ucsim/cmd.src/newcmdcl.h: applied patch fixing GCC 4.1 build
387 submitted by the Debian SDCC maintainer Aurelien Jarno:
388 "Credits goes to Martin Michlmayr, who rebuilt the whole Debian
389 archive with gcc 4.1 on mips and wrote the patch"
391 2006-03-16 Raphael Neider <rneider AT web.de>
393 * src/pic16/genarith.c (genAddLit): simplified and fixed case where
394 the left operand is shorter than the result (c* = lit-c* + int),
396 * src/pic16/gen.c (genRightShift): check IS_SYMOP before accessing
399 2006-03-14 Vangelis Rokas <vrokas AT users.sourceforge.net>
401 * src/.version: increased version number to 2.5.5
402 * src/SDCCmain.c (linkEdit): do not test for PIC16 target since, PIC16
403 linking is done manually in pic16 port's _linkEdit,
404 * src/SDCCsymt.c (compStructSize): for target PIC16 and shell variable
405 PIC16_PACKED_BITFIELDS, compact bitfield structures as much as possible,
406 * src/pic16/gen.c (aopForSym): when direct register name is WREG then
407 allocate asmop as AOP_ACC,
408 (aopForRemat): added parameter 'bool result' in function declaration,
409 (pic16_aopGet): return AOP_ACC when accessing WREG,
410 (pic16_popGetTempReg): minor modification,
411 (pic16_popRegFromIdx): first try with 'pic16_regWithIdx' then with
412 'pic16_allocWithIdx',
413 (genPcall): removed ftype, usage of OP_SYM_TYPE asserted error when
414 calling function in absolute addresses,
415 (genAssign): take into account AOP_ACC asmop,
416 * src/pic16/pcode.c (pic16_newpCodeOpReg): minor modifications,
417 * src/pic16/pcoderegs.c: some debug functions and lines added,
418 * src/pic16/ralloc.c (decodeRegType): added but commented out,
419 * (pic16_typeRegWithIdx): search 'pic16_dynInternalRegs' for given
421 * (pic16_findFreeReg, pic16_findFreeRegNext): allocate new register via
422 call to allocReg, not by manually allocating a new one,
423 (pic16_assignRegisters): now before going through the register
424 allocating functions mark all registers as free. This eliminates some
425 side effects resulting from peephole parser done earlier in the backbone
427 2006-03-13 Maarten Brock <sourceforge.brock AT dse.nl>
429 * src/SDCCicode.c (geniCodeLogic),
430 * src/SDCCast.c (decorateType): applied patch by Bernhard for rfe 1422617
432 2006-03-10 Maarten Brock <sourceforge.brock AT dse.nl>
434 * src/mcs51/gen.c (sameReg): new, checks if two aop regs are the same,
435 (genSend): bugfix, do not allocate and free twice,
436 (shiftRLong): handle partially overlapping aops
437 * support/regression/tests/bitopcse.c: fixed warning redefined idata
439 2006-03-08 Borut Razem <borut.razem AT siol.net>
441 * support/regression/fwk/include/testfwk.h: added defines for xdata, idata
444 2006-03-08 Maarten Brock <sourceforge.brock AT dse.nl>
446 * support/regression/tests/bug1409955.c: new, added
447 * src/mcs51/gen.h: changed asmop.freed:1 to asmop.allocated for tracking
448 * src/mcs51/gen.c (newAsmop): set asmop.allocated to 1,
449 (aopForSym, aopOp): increment asmop.allocated if reused,
450 (freeAsmop): decrement asmop.allocated and check for zero instead of
452 (freeForBranchAsmop): use asmop.allocated instead of asmop.freed,
453 (genNot, genCpl, genUminus, genMinus, genMult, genDiv, genMod, genCmpGt,
454 genCmpLt, genAndOp, genOrOp, genAnd, genOr, genXor, genRRC, genRLC,
455 genGetHbit, genGetAbit, genGetByte, genGetWord, genSwap,
456 genLeftShiftLiteral, genLeftShift, genRightShiftLiteral,
457 genSignedRightShift, genRightShift, genDataPointerGet,
458 genPagedPointerGet, genFarPointerGet, genCodePointerGet,
459 genGenPointerGet, genDataPointerSet, genAssign, genCast): free asmop's
460 in reverse order from allocation,
461 (genPlus, genCmpEq): free asmop's in reverse order from allocation and
462 added swappedLR to keep track
463 * support/regression/fwk/include/testfwk.h: added defines for xdata, idata,
464 pdata & code for GCC, z80, gbz80 & hc08
465 * support/regression/tests/zeropad.c: moved defines to testfwk.h
467 2006-03-08 Raphael Neider <rneider AT web.de>
469 * src/pic16/main.c (_hasNativeMulFor): fixed bug #1444425
471 2006-03-07 Maarten Brock <sourceforge.brock AT dse.nl>
473 * device/include/mcs51/c8051f410.h: new SiLabs mcu
474 * src/ds390/peeph.def: disabled 186.d and 227.a as fix for #1434401
475 * support/regression/tests/array.c: added parenthesis, made arrays unsigned
477 2006-03-06 Borut Razem <borut.razem AT siol.net>
479 * support/regression/ports/pic16/spec.mk: link with libm18f.lib,
480 made the linker quiet
482 2006-03-06 Vangelis Rokas <vrokas AT users.sourceforge.net>
484 * src/pic16/gen.c (genPcall): fixed bug #1443644
485 * src/pic16/device.h (struct pic16_options_t): added 'int CATregs' flag
486 which dumps before the function entry point a data byte which represents
487 the number of the local variables used by the specified function, added
488 'xinst' for initial support for Extended Instruction Support,
489 * src/pic16/gen.c (aopForSym, pic16_aopGet): beautifications,
490 (pic16_testStackOverflow): do not prefix GSTACK_TEST_NAME with
491 port->fun_prefix anymore (may change later),
492 (genFunction, genEndFunction): do not store/restore local registers for
493 _main (this should take care the --main-return command line option in
495 (genOr): removed some legacy pic-port instructions,
496 * src/pic16/genarith.c (genAddLit): re-enabled old code because
497 performing operations with SFR's causes data to be written more than
498 once to each SFR. Perhaps SFRs should be handled in special cases...
499 * src/pic16/glue.c: macros BIG_ENDIAN and BYTE_IN_LONG are moved to
501 * src/pic16/main.c (_process_pragma): stack bound checking did not take
502 into account for stack starting position,
503 (struct OPTIONS pic16_optionsTable): added command line argument
504 --extended or -y for Extended Instruction Support,
505 * src/pic16/ralloc.c (pic16_decodeOp): added case for FUNCTION,
506 (deassignLRs): *** perhaps the most important change, old 'for' code
507 (commented out for reference), didn't account for some registers which
508 were left marked 'not free' after a pointer operation. The change
509 reduces register usage a lot in some cases
511 2006-03-04 Borut Razem <borut.razem AT siol.net>
513 * support/regression/ports/hc08/spec.mk: remove *.asm in traget
515 * support/regression/tests/bug-524697.c: decreased array size for
516 mcs51 to fit into the internal RAM
517 * support/regression/Makefile.in: a little bit more verbose
519 2006-03-03 Borut Razem <borut.razem AT siol.net>
521 * support/regression/fwk/lib/testfwk.c,
522 support/regression/fwk/include/testfwk.h: introduced function
523 _prints(), nonrecursive _printn(), call _initEmu() from main()
524 * support/regression/ports/gbz80/support.asm,
525 support/regression/ports/ucz80/support.asm,
526 support/regression/ports/z80/support.asm,
527 support/regression/ports/ds390/support.c,
528 support/regression/ports/hc08/support.c,
529 support/regression/ports/host/support.c,
530 support/regression/ports/mcs51/support.c,
531 support/regression/ports/xa51/support.c: added empty _initEmu()
533 * support/regression/ports/pic16/gpsim.cmd,
534 support/regression/ports/pic16/spec.mk,
535 support/regression/ports/pic16/support.c,
536 support/regression/Makefile.in: added pic16 regression test
538 2006-03-01 Raphael Neider <rneider AT web.de>
540 * src/pic16/gen.c (genPcall,pic16_derefPtr,genGenPointerGet,
541 genConstPointerGet): use safe way of generating MOVFF to cover
542 literals as well as registers, fixes bug #1440527
543 * src/pic16/glue.c (pic16_printIvalBitFields): prevent NULL pointer
545 (pic16_printIvalUnion,pic16_isUnion): NEW, handle initialized unions
546 more correctly, fixes bug #1232186
547 (pic16_printIval): use pic16_printIvalUnion() for initialized unions
548 * src/pic16/main.c (_pic16_linkEdit): reorder linker arguments to make
549 gplink guess the correct processor in more cases, applied patch
550 from Till Riedel attached to and fixing bug #1436552
552 2006-02-20 Frieder Ferlemann <Frieder.Ferlemann AT web.de>
554 * support/regression/tests/array.c: added, contains check for #1434401
555 * src/mcs51/peeph.def: disabled 186.d as temporary fix for #1434401
557 2006-02-16 Maarten Brock <sourceforge.brock AT dse.nl>
559 * device/include/mcs51/at89s8253.h: new, thanks to Krzysztof Polomka
560 * device/include/mcs51/at89S8252.h: fixed, thanks to Krzysztof Polomka
561 * device/include/mcs51/c8051f326.h,
562 * device/include/mcs51/c8051f340.h: new SiLabs mcu's
563 * device/include/mcs51/c8051f000.h,
564 * device/include/mcs51/c8051f018.h,
565 * device/include/mcs51/c8051f020.h: used () with __at, renamed IDLE,STOP to
566 PCON_IDLE,PCON_STOP and added sfr16 definitions
568 2006-02-14 Maarten Brock <sourceforge.brock AT dse.nl>
570 * src/mcs51/gen.c (genPlus, genMinus, genMult, genGetAbit, genGetByte,
571 genGetWord): fixed bug 1409955
573 2006-02-14 Maarten Brock <sourceforge.brock AT dse.nl>
575 * device/include/hc08/mc68hc908gp32.h,
576 * device/include/hc08/mc68hc908jb8.h: removed AWUL, added PTA6 & PTA7
578 2006-02-13 Maarten Brock <sourceforge.brock AT dse.nl>
580 * src/SDCCast.c (constExprValue): return NULL if not a value
581 * src/SDCCglue.c (printIvalArray): fixed bug 1225568
582 * src/hc08/gen.c(genUnpackBits, genUnpackBitsImmed): fixed bug 1019480
583 * support/regression/tests/bitfields.c: enabled signed bitfield for all
585 2006-02-13 Borut Razem <borut.razem AT siol.net>
587 * src/regression/ptrarg.c: added, fails due to bug #1430967
588 * src/regression/Makefile: ptrarg.c added, ...
590 2006-02-12 Maarten Brock <sourceforge.brock AT dse.nl>
592 * src/z80/gen.c (genUnpackBits): fixed bug 1019480
593 * support/regression/tests/bitfields.c: enabled signed bitfield for z80
595 2006-02-11 Borut Razem <borut.razem AT siol.net>
597 * src/SDCCmain.c: Added "sdcc: Calling linker..." if --verbose,
598 print "Processor: xxx" message to stdout only if --verbose
600 2006-02-11 Maarten Brock <sourceforge.brock AT dse.nl>
602 * src/SDCCglue.c (printIvalStruct): fixed bug 1426356 union initializer
603 * support/regression/tests/bug1426356.c: added
604 * support/regression/tests/bitfields.c: removed 2 tests
606 2006-02-10 Maarten Brock <sourceforge.brock AT dse.nl>
608 * device/include/mcs51/at89c51snd1c.h: updated comments, see patch 1428901
609 * device/include/mcs51/c8051f330.h,
610 * device/include/mcs51/c8051f350.h: used () with __at, renamed IDLE,STOP to
611 PCON_IDLE,PCON_STOP and added sfr16 definitions
612 * device/lib/_divsint.c,
613 * device/lib/_divuint.c,
614 * device/lib/_divulong.c,
615 * device/lib/_divulong.c: renamed a,b to x,y to avoid confusion, fixed
616 register bank bug for small stackauto
618 2006-02-09 Maarten Brock <sourceforge.brock AT dse.nl>
620 * support/regression/fwk/lib/timeout.c: include <stdlib.h> for exit()
622 2006-02-08 Maarten Brock <sourceforge.brock AT dse.nl>
624 * support/regression/ports/mcs51-xstack-auto/spec.mk: forgot -I(...)/mcs51
625 * all.dsp: corrected several bin paths
626 * device/include/mcs51/c8051f120.h,
627 * device/include/mcs51/c8051f300.h,
628 * device/include/mcs51/c8051f310.h: used () with __at and renamed IDLE,STOP
629 to PCON_IDLE,PCON_STOP
630 * device/include/mcs51/c8051f320.h: see above, also added sfr16 definitions
631 * device/lib/printf_large.c (output_float): fixed bug 1388703
632 * support/regression/tests/bug1057979.c: added test for bug 1388703
634 2006-02-08 Raphael Neider <rneider AT web.de>
636 * src/pic/pcode.c (pciTRIS): fixed typo,
637 (BuildFlow,LinkFlow_pCode): added (disabled) debug output,
638 (LinkFlow): fixed handling of flows that end in a call,
639 (ReuseReg): perform safety check earlier
640 * src/pic/pcoderegs.c (pCodeRegMapLiveRangesInFlow): fixed
641 to work with flows at the beginning of a pBlock,
642 fixes #1426557 (Symbol not previously defined),
643 (pic14_ReMapLiveRanges): NEW, destroy and rebuild register
645 (RemoveUnusedRegisters): update register usage info
646 * src/pic/ralloc.c (newReg): prevent duplicate registers from being
647 created, reuse existing ones instead
648 * src/pic/gen.c (genPcall): fixed #1424719
650 2006-02-07 Bernhard Held <bernhard AT bernhardheld.de>
655 * link/z80/aslink.h: fixed build on current cygwin:
656 replaced getline() by lk_getline()
658 2006-02-01 Borut Razem <borut.razem AT siol.net>
660 * src/regression/add.c, src/regression/add2.c, src/regression/add3.c,
661 src/regression/add4.c, src/regression/and1.c, src/regression/and2.c,
662 src/regression/arrays.c, src/regression/b.c, src/regression/bank1.c,
663 src/regression/bool1.c, src/regression/bool2.c,
664 src/regression/bool3.c, src/regression/call1.c,
665 src/regression/compare.c, src/regression/compare10.c,
666 src/regression/compare2.c, src/regression/compare3.c,
667 src/regression/compare4.c, src/regression/compare5.c,
668 src/regression/compare6.c, src/regression/compare7.c,
669 src/regression/compare8.c, src/regression/compare9.c,
670 src/regression/configword.c, src/regression/for.c,
671 src/regression/inline.c, src/regression/mult1.c,
672 src/regression/nestfor.c, src/regression/or1.c,
673 src/regression/pointer1.c, src/regression/ptrfunc.c,
674 src/regression/rotate1.c, src/regression/rotate2.c,
675 src/regression/rotate3.c, src/regression/rotate4.c,
676 src/regression/rotate5.c, src/regression/rotate6.c,
677 src/regression/rotate7.c, src/regression/string1.c,
678 src/regression/struct1.c, src/regression/sub.c,
679 src/regression/sub2.c, src/regression/switch1.c,
680 src/regression/while.c, src/regression/xor.c,
681 src/regression/create_stc, src/regression/simulate,
682 src/regression/rt.sh, src/regression/Makefile: reenabled Scott's PIC14
684 * src/regression/gpsim_assert.h: added
686 2006-01-28 Bernhard Held <bernhard AT bernhardheld.de>
688 * src/ds390/gen.c (unsaveRegisters): fixed literal function pointer
689 ((void (code *) (void)) 0) ();
706 * as/z80/asmain.c: fixed build on current cygwin:
707 replaced getline() by as_getline()
709 2006-01-27 Bernhard Held <bernhard AT bernhardheld.de>
711 * src/SDCC.y: fixed bug #716242, exchanged pointer and function
712 declarator in the symbol chain
714 * src/SDCCsymt.c (processFuncPtrArgs): added, removes "(void)"
715 parameter list for function pointers
716 * src/SDCCast.c (decorateType): added call of processFuncPtrArgs()
717 * support/regression/tests/bug-716242.c: added
719 2006-01-20 Bernhard Held <bernhard AT bernhardheld.de>
721 * src/SDCCicode.c (geniCodeAdd, geniCodeArray): use char for array
723 * src/SDCCast.c (getLeftResultType): 255 fits in char, not 256
725 2006-01-18 Bernhard Held <bernhard AT bernhardheld.de>
727 * src/SDCCast.c (backPatchLabels): fixed bug #1408066: made it
728 inifinitely recurseable, added static
729 * support/regression/tests/bug-1408066.c: added
731 2006-01-17 Bernhard Held <bernhard AT bernhardheld.de>
734 * src/SDCCicode.c (newiTempPreheaderLabel, newiTempLoopHeaderLabel):
735 renamed, added possibility to create "postLoopLbl"-labels
736 * src/SDCCBBlock.c (iCodeBreakDown): renamed newiTempPreheaderLabel to
737 newiTempLoopHeaderLabel
738 * src/SDCCloop.c (newInduction, newRegion, backEdges, insertIntoLoop,
739 isNotInBlocks, addToExitsMarkDepth, createLoop, dominatedBy,
740 addDefInExprs, assignmentsToSym, isOperandInvariant, pointerAssigned,
741 hasNonPtrUse, loopInvariants, addressTaken, findInduction,
742 findDefInRegion, mergeRegions, ifMerged, mergeInnerLoops): made static,
743 (pinduction, pregion, hasIncomingDefs, findLoopEndSeq): disabled,
744 (basicInduction): fixed bug #136564, made static,
745 (loopInduction): changed parameter of basicInduction, made static,
746 (addPostLoopBlock): added
747 * src/SDCCloop.h: removed backEdges, pregion, pinduction,
748 loopOptimizations, addressTaken, findDefInRegion, hasIncomingDefs,
750 * support/regression/tests/bug-136564.c: added
751 * support/regression/ports/mcs51-xstack-auto/spec.mk: added
752 --std-sdcc99 to LIBSDCCFLAGS
754 2006-01-16 Bernhard Held <bernhard AT bernhardheld.de>
756 * src/SDCCicode.c (geniCodeIfx): fix bug 1406131: always false
758 * support/regression/tests/bug-1406131.c: added
760 2005-12-31 Bernhard Held <bernhard AT bernhardheld.de>
762 * src/SDCCast.c (decorateType): fix promotion of unary minus
763 * src/SDCCsymt.c (computeType): beautified
764 * src/SDCCval.c (cheapestVal): beautified, old non-Ansi version removed,
765 (valUnaryPM, valComplement): fix sign and promotion,
766 (valNot): ANSI: result type is int (SDCC: unsigned char)
767 * support/regression/tests/uminus.c: speedup by removing superflous
769 * support/regression/tests/onebyte.c: added promotion and signedness
770 tests for unary minus
771 * support/regressions/tests/bug-477927.c: disable warning about
772 uninitialized variables
773 * support/regression/tests/not.c: added
775 2005-12-28 Bernhard Held <bernhard AT bernhardheld.de>
777 * device/lib/Makefile.in: added --std-sdcc99 to CFLAGS
778 * src/mcs51/gen.c (gen51Code): show final register usage after
779 fillGaps in asm with --i-code-in-asm
780 * src/SDCClrange.c (sequenceiCode, setLiveFrom, setLiveTo,
781 markLiveRanges, markAlive, findNextUseSym, findNextUse, unvisitBlocks,
782 incUsed, rliveClear, adjustIChain): made static,
783 (setFromRange): excluded because it's unused,
784 (findPrevUseSym, markWholeLoop): added,
785 (findPrevUse): rewritten; fixes bug 895992; now a complete search
786 through all branches of predecessors enables sdcc to emit the warning
787 W_LOCAL_NOINIT, marking of outermost loop was incomplete,
788 (rlivePoint): made static, added parameter emitWarnings which is only
789 true during the first run out of two,
790 (findRecursiveSucc, findRecursivePred): removed,
791 (computeLiveRanges): made static, added parameter emitWarnings,
792 (dumpIcRlive): added for debugging only
793 * src/SDCClrange.h: added boolean parameter to computeLiveRanges(),
794 removed prototype of setFromRange()
795 * src/SDCCopt.c (eBBlockFromiCode): added new parameter emitWarnings
796 in call of computeLiveRanges()
797 * support/regression/tests/bug-895992.c: added
798 * support/regression/tests/bug-971834.c: added
799 * support/valdiag/tests/bug-895992.c: added
800 * support/valdiag/tests/bug-971834.c: added
802 2005-12-18 Raphael Neider <rneider AT web.de>
804 * src/pic16/gen.c: added IS_DIRECT macro for "direct" operands,
805 (genUnpackBits): improved code for direct operands,
806 (genPackBits): improved code for literal assignment to bitfields
807 and for direct destination operands (no FSR indirection),
808 prevented redundant AND, fixes #1362800,
809 (AccLsh): added parameter to disable masking of the result
810 * src/pic16/pcode.c (pic16_safepCodeUnlink): fixed to work with
811 skip instructions with side-effects (like incfsz),
812 (pic16_pCodeIsAlive): suppress verbose output unless pcode_verbose,
813 * src/pic16/pcoderegs.c (RemoveRegsFromSet): removed annoying warning
814 * device/lib/pic16/Makefile.common.in: added --asm=@GPASM@ to CC,
817 2005-12-11 Bernhard Held <bernhard AT bernhardheld.de>
819 * src/SDCCicode.c (geniCodeAssign): fixed bug 11369874, don't use
820 volatile variables as spill location
822 2005-12-10 Bernhard Held <bernhard AT bernhardheld.de>
824 * src/SDCCcse.c (findCheaperOp): fixed bug 1376320, copy signedness to
826 * support/regression/tests/bug-1376320.c: added
828 2005-12-08 Raphael Neider <rneider AT web.de>
830 * src/pic/device.c: renamed is_shared to pic14_is_shared
831 * src/pic/gen.c (genIfx): re-enabled handling of sbits
832 * src/pic/glue.c (emitSymbolToFile): added workaround for sbits,
833 (is_valid_identifier): added for above workaround
835 2005-12-07 Maarten Brock <sourceforge.brock AT dse.nl>
837 * device/lib/Makefile.in: fixed to enable port-specific-objects
838 * device/lib/ds390/i2c390.c (BitOutI2C): optimized by making bout unsigned
839 char, thanks Hubert Sack
840 * doc/sdccman.lyx: documented --xstack-loc,
841 elaborated a bit more on interrupts and pitfalls,
842 removed "setjmp/longjmp unsupported",
843 documented some unsupported C99 features
844 * src/SDCCmain.c (linkEdit): adapted default lib path for --stack-auto
845 * src/SDCCpeeph.c (readRules): inserted patch 1367130 for finding missing
846 if, thanks Hubert Sack
847 * src/mcs51/gen.c (genEndFunction): enabled "pop psw" for regbank 0 isr
848 * support/regression/Makefile.in: test-mcs51-stack-auto no longer needs to
850 * support/regression/get_ticks.py: new, get cpu cycles and code size, so
851 regression tests can report resource usage (rfe 700441)
852 * support/regression/collate-results.py: report resource usage
853 * support/regression/ports/ds390/spec.mk,
854 * support/regression/ports/hc08/spec.mk,
855 * support/regression/ports/mcs51/spec.mk,
856 * support/regression/ports/ucz80/spec.mk: run sim output through get_ticks
857 * support/regression/ports/ds390/uCsim.cmd,
858 * support/regression/ports/hc08/uCsim.cmd,
859 * support/regression/ports/mcs51/uCsim.cmd,
860 * support/regression/ports/ucz80/uCsim.cmd: inserted "state" to report time
861 * support/regression/ports/mcs51-stack-auto/spec.mk: no need to build the
862 library, use the default one
863 * support/regression/ports/mcs51-xstack-auto/spec.mk: inserted rules for
866 2005-12-06 Maarten Brock <sourceforge.brock AT dse.nl>
868 * config.dsp: added dependency on .version and configure_vc.awk
869 * device/include/setjmp.h: updated for --stack-auto and --xstack
870 * device/include/mcs51/at89c51snd1c.h: corrected line endings
871 * device/include/mcs51/XC866.h: added, thanks Llewellyn van Zyl
872 * device/lib/_setjmp.c: updated for --stack-auto and --xstack
873 * device/lib/libsdcc.lib: added _setjmp
874 * src/SDCCast.c (createIvalCharPtr): fixed warnings,
875 (decorateType): fixed bug 1372851,
876 (optimizeGetHbit): fixed warning
877 * src/SDCCglue.c (printIvalChar, printIvalArray): adapted for flexible
879 * support/regression/tests/bug1057979.c: added test for bug 1358192
880 * support/regression/tests/setjmp.c: added, test for setjmp/longjmp
882 2005-12-03 Borut Razem <borut.razem AT siol.net>
884 * support/scripts/sdcc.nsi: added /SOLID option to "SetCompressor lzma"
885 command since the NSIS was upgraded to version 2.11 on CF x86-linux2
887 2005-11-29 Bernhard Held <bernhard AT bernhardheld.de>
889 * src/SDCCast.c (createIvalStruct, createIvalArray, createIvalPtr,
890 createIval): implement symbol independant "flexible array member",
891 (createIvalCharPtr): implemented flexible array initialisation with a
893 * src/SDCCsymt.c (copyStruct): removed,
894 (getSize): fixed misleading comment,
895 (getAllocSize): removed, the additional allocation size is now in
896 sym->flexArrayLength,
897 (checkStructFlexArray): new, syntax checks for flexible array members,
898 (compStructSize): added syntax checks for "flexible array members"
899 (copyStruct): removed,
900 (copyLinkChain): removed inefficient fix for bug 770487
901 * src/SDCCglue.c (emitRegularMap): getAllocSize has been removed
902 * src/SDCCsymt.h: added structdef.b_flexArrayMember and
903 symbol->flexArrayLength
905 * src/SDCCerr.h: added W_INVALID_FLEXARRAY, W_C89_NO_FLEXARRAY,
906 E_FLEXARRAY_NOTATEND and E_FLEXARRAY_INEMPTYSTRCT
907 * support/regression/tests/structflexarray.c: added
908 * support/valdiag/tests/structflexiblearray.c: added
910 2005-11-29 Bernhard Held <bernhard AT bernhardheld.de>
912 * src/SDCCast.c (decorateType): fixed bug 1368489
913 * support/Util/SDCCerr.c,
914 * support/Util/SDCCerr.h: added warning W_CMP_SU_CHAR
916 2005-11-28 Frieder Ferlemann <Frieder.Ferlemann AT web.de>
918 * device/include/mcs51/at89c51snd1c.h: added file submitted by
919 Weston T. Schmidt <schmidtw AT users.sourceforge.net>, patch #1368001
921 2005-11-27 Borut Razem <borut.razem AT siol.net>
923 * support/cpp2/cppinit.c, support/cpp2/cpplib.h, support/cpp2/mkdeps.c,
924 support/cpp2/mkdeps.h: added command line option
925 -obj-ext=<extension> to SDCPP to define object file externion, used
926 for generation of make dependencies (-M)
927 * src/SDCCmain.c: pass -obj-ext=<extension> to SDCPP
929 2005-11-26 Borut Razem <borut.razem AT siol.net>
931 * support/scripts/sdcc.nsi: added small-stack-auto libraries,
932 added missing device/lib/mcs51/crt*.asm, pic and pic16 sources,
933 added pic and pic16 libraries
935 2005-11-26 Jesus Calvino-Fraga <jesusc AT ece.ubc.ca>
937 * device/include/float.h: Corrected typo in prototype of __fsgt
939 2005-11-25 Borut Razem <borut.razem AT siol.net>
941 * sdcc/device/lib/Makefile.in, sdcc/device/lib/incl.mk:
942 added creation of model-mcs51-stack-auto libraries
944 2005-11-24 Bernhard Held <bernhard AT bernhardheld.de>
946 * src/SDCCsymt.c (copyLinkChain): fixed bug 770487, copy structdef
948 * src/SDCCast.c (createIvalArray): removed obsolete comment
950 2005-11-24 Borut Razem <borut.razem AT siol.net>
952 * sdcc/device/lib/Makefile.in: remove all unnecessary files, 2nd try...,
953 added missing device/lib/mcs51/crt*.asm sources
955 2005-11-23 Bernhard Held <bernhard AT bernhardheld.de>
957 * src/SDCCast.c (createIvalCharPtr): fixed bug 1348271
959 2005-11-22 Maarten Brock <sourceforge.brock AT dse.nl>
961 * device/lib/_fs2schar.c,
962 * device/lib/_fs2sint.c,
963 * device/lib/_fs2slong.c: optimized inline asm
965 2005-11-21 Jesus Calvino-Fraga <jesusc AT ece.ubc.ca>
967 * device/lib/_fs2slong.c, device/lib/_fs2sint.c, device/lib/_fs2char.c:
968 Better handling of floats between -1.0 and 0.0.
970 2005-11-20 Frieder Ferlemann <Frieder.Ferlemann AT web.de>
972 * src/mcs51/peeph.def: added missing "if"s as noted by Hubert Sack.
973 (the missing "if"s prohibited removal of redundant labels)
975 2005-11-19 Jesus Calvino-Fraga <jesusc AT ece.ubc.ca>
977 * device/lib/_fs2slong.c, device/lib/_fs2sint.c, device/lib/_fs2char.c:
978 Properly convert floats between -1.0 and 0.0 to long, int, and char
979 types (max integer value of negative floats tends to zero).
980 * device/lib/modff.c, device/lib/ceilf.c, device/lib/floorf.c:
981 Removed changes made so to work properly with floats between
982 -1.0 and 0.0, as the problem is fixed in _fs2slong.c, _fs2sint.c,
985 2005-11-18 Bernhard Held <bernhard AT bernhardheld.de>
987 * src/SDCCcse.c (ReplaceOpWithCheaperOp): minor fix for debugging only
988 * src/mcs51/gen.c (genUnpackBits): better code and a fix,
989 (genCast) cosmetic change
990 * src/ds390/gen.c (genUnpackBits, ): ported from mcs51
991 * src/ds390/ralloc.c (packRegsForAssign): ported fix for bitfields
993 * support/regression/tests/bitfields (testSignedBitfields): added
995 2005-11-18 Borut Razem <borut.razem AT siol.net>
997 * sdcc/device/lib/Makefile.in: remove all unnecessary files
998 * device/lib/pic/Makefile.rules, device/lib/pic16/Makefile.subdir:
999 introduced SILENT option to make building of pic16 libraries less
1001 2005-11-18 Jesus Calvino-Fraga <jesusc AT ece.ubc.ca>
1003 * device/lib/modff.c, device/lib/ceilf.c, device/lib/floorf.c:
1004 Now they work properly with floats between -1.0 and 0.0
1005 * device/lib/printf_large.c: Removed temporary patch for bug 1358192
1007 2005-11-18 Maarten Brock <sourceforge.brock AT dse.nl>
1009 * src/SDCCicode.c (printOperand): added missing else
1011 2005-11-18 Bernhard Held <bernhard AT bernhardheld.de>
1013 * src/SDCCsymt.c (computeType): fixed bug 1358192: added missing else,
1014 reformatted for better readability
1015 * src/mcs51/gen.c (genUnpackBits): initial, incomplete support for
1018 2005-11-17 Borut Razem <borut.razem AT siol.net>
1020 * device/lib/pic16/Makefile.rules, device/lib/pic16/Makefile.subdir:
1021 introduced SILENT option to make building of pic16 libraries less
1022 verbose - used for nightly snapshot build
1023 * doc/sdccman.lyx: documented that SDCDB and ucSim are currently not
1024 available on Win32 platforms.
1025 * sdcc/device/lib/Makefile.in: added library sources for mcs51, small,
1026 medium, large, pic and pic16
1028 2005-11-16 Jesus Calvino-Fraga <jesusc AT ece.ubc.ca>
1030 * device/lib/printf_large.c: Temporary patch for bug 1358192:
1031 printf("%f"...) sets fraction to zero.
1033 2005-11-16 Raphael Neider <rneider AT web.de>
1035 * src/pic/pcode.c (LinkFlow): handle empty flows correctly,
1037 * src/pic/gen.c (genIfx): implemented for CARRY bit
1038 * src/pic16/gen.c (genAssign,genCast): fixed assigning/casting
1039 to generic pointers, fixes #1357332,
1040 (pic16_movLit2f): NEW,
1041 (pic16_storeForReturn,genDataPointerSet): use pic16_movLit2f
1043 2005-11-14 Maarten Brock <sourceforge.brock AT dse.nl>
1045 * src/SDCCmain.c (parseCmdLine): fixed bug 1356800, thanks rsudjian
1047 2005-11-11 Raphael Neider <rneider AT web.de>
1049 * src/pic/gen.c: handle FPOINTERS like POINTERS everywhere
1050 * src/pic16/gen.c (pic16_derefPtr): now works for non-pointers as well,
1051 compute pointer's type from operand,
1052 (genUnpackBits,genPackBits): handle FPOINTERS correctly, re-indented,
1053 improved single bit reads, fixes bug #1353379
1055 2005-11-09 Borut Razem <borut.razem AT siol.net>
1057 * support/scripts/sdcc.nsi: added lib/pic to the package
1059 2005-11-08 Maarten Brock <sourceforge.brock AT dse.nl>
1061 * src/SDCCval.c (valUnaryPM): fixed bug 1350699
1063 2005-11-06 Maarten Brock <sourceforge.brock AT dse.nl>
1065 * support/regression/tests/bug1348008.c: added
1066 * src/mcs51/gen.c (saveRBank, unsaveRBank): fixed bug 1348008
1067 * support/regression/tests/bug1337835.c: updated comment
1069 2005-11-06 Borut Razem <borut.razem AT siol.net>
1071 * sim/ucsim/error.cc, sim/ucsim/errorcl.h,
1072 sim/ucsim/sim.src/stack.cc, sim/ucsim/sim.src/stackcl.h,
1073 sim/ucsim/sim.src/uc.cc, sim/ucsim/sim.src/uccl.h,
1074 sim/ucsim/sim.src/mem.cc, sim/ucsim/sim.src/memcl.h,
1075 sim/ucsim/cmd.src/set.cc, sim/ucsim/cmd.src/show.cc:
1076 dynamic construction of cl_error_class and derivates - 2.nd try
1078 2005-11-05 Borut Razem <borut.razem AT siol.net>
1080 * sim/ucsim/sim.src/error.cc: fixed uninitialized class member variable
1081 bug, which caused Bus Errors on sparc solaris
1083 2005-11-04 Borut Razem <borut.razem AT siol.net>
1085 * sim/ucsim/error.cc, sim/ucsim/errorcl.h,
1086 sim/ucsim/sim.src/stack.cc, sim/ucsim/sim.src/stackcl.h,
1087 sim/ucsim/sim.src/uc.cc, sim/ucsim/sim.src/uccl.h,
1088 sim/ucsim/sim.src/mem.cc, sim/ucsim/sim.src/memcl.h,
1089 sim/ucsim/cmd.src/cmdconf.cc: dynamic construction of cl_error_class
1090 and derivates to resolve the initialization problem on OSX
1092 2005-11-02 Borut Razem <borut.razem AT siol.net>
1094 * sim/ucsim/cmd.src/cmdutil.cc, sim/ucsim/cmd.src/newcmd.cc:
1095 corrected typo - #include <winsock2.h>
1097 2005-11-02 Maarten Brock <sourceforge.brock AT dse.nl>
1099 * src/asm.c (printILine): always close tmpFile, thanks Beau E. Cox,
1100 (_asxxxx_mapping): added org directive for future enhancements
1102 2005-11-01 Borut Razem <borut.razem AT siol.net>
1104 * sim/ucsim/app.cc, sim/ucsim/cmd.src/cmdutil.cc, sim/ucsim/cmd.src/newcmd.cc:
1105 enabled sockets on WIN32
1106 * sim/ucsim/cmd.src/newcmd.cc: fixed bug with uninitialized variables
1108 2005-10-31 Borut Razem <borut.razem AT siol.net>
1110 * support/regression/generate-cases.py: escape backslashes in {testcase}:
1111 WIN32 backslash path delimiters should be escaped when used in C strings
1112 * support/regression/tests/bitfields.c: exclude failing assertions for
1113 __CYGWIN32__ and __MINGW32__ hosts
1115 2005-10-30 Borut Razem <borut.razem AT siol.net>
1117 * src/SDCCutil.c: corrected double comparison typo
1119 2005-10-30 Maarten Brock <sourceforge.brock AT dse.nl>
1121 * device/lib/medium/Makefile: added for new memory model medium
1122 * device/include/asm/mcs51/features.h: updated for medium/pdata
1123 * device/include/mcs51/c8051f120.h: added sfr16/sfr32 definitions,
1124 added Multiply & Accumulate sbit's and MAC0_PAGE define
1125 * device/include/mcs51/c8051f300.h: added sfr16 definitions
1126 * device/include/mcs51/c8051f310.h: added sfr16 definitions
1127 * device/lib/_mullong.c: update for medium model
1128 * device/lib/incl.mk: added medium model
1129 * doc/sdccman.lyx: documented medium model
1130 * src/SDCCast.c (isBitAndPow2): simplified using updated powof2
1131 * src/SDCCicode.c (geniCodeMultiply, geniCodeDivision): use updated powof2
1132 * src/SDCCmain.c (optionsTable, linkEdit): enabled medium model
1133 * src/SDCCmem.c (allocIntoSeg): set iaccess for pdata symbols,
1134 (allocParms): set SCLS and OCLS to pdata for medium model
1135 * src/SDCCsymt.c (processFuncArgs): use default_local_map and set iaccess
1137 (powof2): return <0 if not power of 2
1138 * src/avr/gen.c (genBitWise): use updated powof2
1139 * src/mcs51/gen.c (genMinusDec): use acc if necessary,
1140 (shiftR2Left2Result): small optimization in setup, save acc when storing,
1141 (shiftLLeftOrResult): use B if necessary
1142 * src/mcs51/main.c (_mcs51_finaliseOptions, mcs51_port): added medium model
1143 * src/mcs51/peeph.def: renamed 226 to 226.b, added 226.a
1144 * src/pic/main.c (_pic14_do_link): made void parameter list explicit
1145 * support/regression/Makefile.in: added test-mcs51-medium
1146 * support/regression/ports/mcs51-medium/spec.mk: added to test medium model
1148 2005-10-28 Bernhard Held <bernhard AT bernhardheld.de>
1150 * src/SDCCsymt.c (compStructSize): make bitfields without (un)signed
1152 * device/lib/time.c (mktime): fixed bug 1334315
1154 2005-10-28 Raphael Neider <rneider AT web.de>
1156 * device/include/pic/p16f_common.inc: added common declarations
1157 * src/pic/ralloc.c (initStack): moved regs *r to block start for Alpha
1159 2005-10-27 Maarten Brock <sourceforge.brock AT dse.nl>
1161 * src/mcs51/gen.c (getTempRegs): return 0 if not enough registers found,
1162 (aopPutUsesAcc): added to predict accumulator use,
1163 (assignResultValue): save acc if necessary,
1164 (genMinusDec): store result if indirectly addressed,
1165 (genDivOneByte): save acc if necessary,
1166 (movLeft2Result): bugfix if left already in acc,
1167 (genAnd, genOr, genXor, shiftL2Left2Result, shiftR2Left2Result): pay more
1168 attention to accumulator use (esp. pdata),
1169 (genReceive): receive pdata correctly
1170 * src/SDCCicode.c (isOperandInPagedSpace): added to detect pdata operands
1171 * src/SDCCicode.h: added isOperandInPagedSpace prototype
1173 2005-10-27 Raphael Neider <rneider AT web.de>
1175 * doc/sdccman.lyx: corrected version (should be 2.5.4 not 2.5.5)
1177 2005-10-27 Raphael Neider <rneider AT web.de>
1179 * .version: changed version to 2.5.4
1180 * doc/sdccman.lyx: changed version to 2.5.4, added some remarks to PIC14
1181 * device/lib/pic/libsdcc/{_mulint.c,_mullong.c}: use unsigned literals,
1182 (_divschar.c,divuchar.c,_mulchar.c,_modschar.c,_moduchar): NEW,
1183 arithmetics support routines
1184 * device/lib/pic/Makefile.rules: have assembler sources preprocessed
1185 * device/lib/Makefile.in: also create installdir for pic
1187 * src/SDCCopt.c (cnvToFcall): mark support routines `extern' for
1189 * src/pic/device.c (dump_sfr): rewritten to delegate register
1190 placement to the linker (use `extern sym' rather than sym EQU addr),
1191 (validAddress): fixed to check last specified address
1192 * src/pic/gen.c (aopForSym): added code to deal with array (useless?),
1193 (popGetLit): truncate literal value to 8 bit,
1194 (popGet): moved assert to more appropriate place
1195 (popGetExternal): create pCode operand from and mark the according
1196 symbol as being `extern'
1197 (popGetAddr): added sanity check on immediate's offset, provide
1198 GPOINTER tag on demand
1199 (aopPut): fixed for immediates,
1200 (mov2w_op): move operand's address or contents to WREG (depending on
1201 operand type), safer variant of mov2w,
1202 (movwf,call_libraryfunc): NEW, handy abbreviations,
1203 (get_argument_pcop,get_return_val_pcop,pass_argument,
1204 get_returnvalue): interface for accessing function parameters and
1206 (assignResultValuei,genRet): use new parameter/return value interface
1207 (pic14_getDataSize): back to old version handling generic pointers,
1208 (pic14_toBoolean,genNot,genCpl,genCmpEq,genOrOp): heavily rewritten,
1209 provided implementation and/or fixed old one,
1210 (genMultOneByte,genDivOneByte,genModOneByte): implemented as library
1211 calls, removed legacy 8051 reference code
1212 (AccLsh,AccRsh): rewritten and fixed to deal with signed operands
1213 (loadSignToC): NEW, move the operands sign bit to CARRY,
1214 (genGenericShift): NEW, replaces genLeftShift, genRightShift and
1215 genRightShiftSigned, accepts negative shift counts,
1216 (setup_fsr): load FSR and adjust IRP (indirect memory access),
1217 (emitPtrByteGet,emitPtrByteSet): rewritten, now works with
1218 generic pointers, __data pointers and __code pointers,
1219 (genUnpackBits,genPackBits): rewritten to work with generic pointers
1220 and signed bitfields, limit bitfields to 8 bit,
1221 (genDataPointerGet): fixed number of bytes read,
1222 (genGenPointerGet,genConstPointerGet): fixed bitfield access,
1223 (genPointerGet,genPointerSet): fixed handling of __code pointers,
1224 pointers to constant data are no longer assumed to point to __code
1225 space, removed invalid pointer types,
1226 (bitpatternFromVal): retrieve the PICs representation of an integer
1228 (genDataPointerSet): fixed assigning to po_immediate operands,
1229 (genGenPointerSet): implemented as library call,
1230 (genIfx): fixed incorrect condition,
1231 (genAddrOf): limit generic pointers' addresses to 2 bytes,
1232 provide GPOINTER tag according to destination's storage class,
1233 (genCast): added code to handle casting to generic pointers, added
1234 sign-/zero extension of the result
1235 (aop_isLitLike,op_isLitLike): fixed handling of immediates
1236 * src/pic/gen.h: added macros to access IRP bit in STATUS register
1237 * src/pic/genarith.c (genAddLit): use min(result's,left's) size, sign
1239 * src/pic/glue.c (is_shared_address,is_shared): check whether a given
1240 address/register resides in the shared banks
1241 (emitSymbolToFile): improved to handle global and `pinned' symbols,
1242 put all variables into separate sections (have the linker arrange
1244 (picglue): put init code and interrupt handlers in separate sections
1245 * src/pic/main.c: added port specific options table, modified to PORT
1246 structure to make GPOINTERs 3 byte, added pic14_options
1247 (_pic14_do_link): private linking routine (update paths to libraries,
1248 add libsdcc.lib by default)
1249 * src/pic/main.h: declare pic14_options
1250 * src/pic/pcode.c: fixed instructions i/o relations,
1251 (RegCond): reverted to correct version,
1252 (newpCodeOpLit): truncate literals to 8 bit,
1253 (genericPrint): added debug output,
1254 (getRegFromInstruction): fixed for various operand types, simplified
1255 (BuildFlow): fixed broken handling of isntructions with labels
1256 (LinkFlow): start at last instruction in flow (skip trailing comments),
1257 pass the flow on to the next instruction after CALL
1258 (pCodeReplace): NEW, replace a pCode and move meta data to the new one
1259 (insertPCodeInstruction): fixed inserting after a skip instruction,
1260 (DoBankSelect): fixed for labeled instructions
1261 (OptimizepBlock): honor --nopeep switch
1262 (AnalyzeFlow,ReuseReg): prevent crash on source files with no function
1263 * src/pic/pcodepeep.c (pCodePeepMatchRule): prevent NULL pointer accesses
1264 * src/pic/pcoderegs.c (regIsLocal): NEW, check visibility of a register
1265 (pCodeOptime2pCodes): allow disabling this optimization via
1266 --no-pcode-opt due seldomly occuring bugs, fixed some conditions
1267 but is still buggy), started implementation of a dataflow based
1268 pCode optimization (CSE + dead code elimination)
1269 (pCodeRegMapLiveRangesInFlow): removed bogus inCond
1270 * src/pic/ralloc.c (initStack): renamed stack registers to STK%d, the new
1271 names are independant of the stack location and therefore portable across
1274 2005-10-27 Maarten Brock <sourceforge.brock AT dse.nl>
1276 * src/mcs51/ralloc.c (bitType): added to detect bit variables,
1277 (selectSpil): fixed bug 1337835 by not spilling bit variables
1278 * support/regression/tests/bug1337835.c: added test for this bug
1279 * src/mcs51/peeph.def: restart after rule 3.c,
1280 addded rules 263.x to optimize loading constants
1282 2005-10-26 Raphael Neider <rneider AT web.de>
1284 * src/SDCCsymt.c (compStructSize): allow signed bitfields for PIC ports
1285 * src/pic16/gen.c (genUnpackBits): support signed bitfields,
1286 (genAssign): emit warning when casting literals to generic pointer
1287 type, also applies when taking the address of a fixed variable,
1288 (genCast): improved casting to generic pointers
1289 * src/pic16/glue.c (pic16emitStaticSeg): fixed(?) handling of fixed
1290 extern variables, added verbose error message
1291 * device/include/pic16/{string.h,errno.h}: added #pragma library c
1293 2005-10-26 Bernhard Held <bernhard AT bernhardheld.de>
1295 * src/mcs51/gen.c (genMinus): fixed bug 1270906: reverse subtraction,
1296 carry must be complemented too
1297 * src/mcs51/peeph.def: addded rule 262 to remove double cpl c, which
1298 could be emitted by genMinus
1299 * src/SDCCval.c (constVal): fixed bug 1305065
1301 2005-10-25 Bernhard Held <bernhard AT bernhardheld.de>
1303 * src/SDCCast.c (addCast): added promotion for bit variables
1304 (decorateType): emit W_COMPLEMENT before the problem vanishes behind
1305 promotion casts + optimisation
1306 (optimizeGetWord): fix warning 'i' might be used uninitialized
1307 * src/mcs51/gen.c (genCpl): removed W_COMPLEMENT
1308 * src/ds390/gen.c (genCpl): removed W_COMPLEMENT
1310 2005-10-24 Bernhard Held <bernhard AT bernhardheld.de>
1312 * src/SDCCicode.c (ast2iCode): reverted to 1.224 because of regression:
1313 all chars are promoted to int; promotion should be handled in SDCCast.c
1315 2005-10-15 Jesus Calvino-Fraga <jesusc AT ece.ubc.ca>
1317 * device/lib/_strcmp.c: Fixed bug 1326457
1319 2005-10-11 Raphael Neider <rneider AT web.de>
1321 * device/lib/pic16/libio/i2c.ignore: added 1320, fixes broken builds
1322 * device/lib/pic16/libdev/pic18f1320.c: added 1320's device library
1324 2005-10-05 Maarten Brock <sourceforge.brock AT dse.nl>
1326 * src/SDCC.y (AT): fixed bug with sfr32 addresses when built with GCC
1327 * support/regression/tests/sfr16.c: added test for the sfr32 bug
1329 2005-10-04 Raphael Neider <rneider AT web.de>
1331 * device/include/pic16/pic18fregs.h, src/pic16/devices.inc,
1332 device/lib/pic16/pics.all: added pic18f1320
1333 * src/pic16/pcode.c (mnem2key): fixed prototype's argument mismatch
1335 2005-09-30 Raphael Neider <rneider AT web.de>
1337 * src/pic16/device.c (Pics16[]): moved device descriptions to devices.inc
1338 * src/pic16/devices.inc: NEW, provides device descriptions
1339 * src/pic16/gen.c (genInline): fixed handling of ';'-comments
1341 2005-09-26 Maarten Brock <sourceforge.brock AT dse.nl>
1343 * src/SDCCicode.c (operandOperation): added GETABIT, GETBYTE, GETWORD and
1346 2005-09-25 Maarten Brock <sourceforge.brock AT dse.nl>
1348 * doc/sdccman.lyx: updated Highest Order Bit documentation,
1349 documented Any Order Bit, Higher Order Byte and Higher Order Word
1350 * src/SDCC.y: added tokens GETABIT, GETBYTE, GETWORD
1351 * src/SDCCast.c (optimizeGetHbit): updated to also accept bool=expr&(1<<n),
1352 (optimizeGetAbit): new, to get any bit, not only the high bit,
1353 (optimizeGetByte): new, to get a byte from a (long) int: expr>>(8*n),
1354 (optimizeGetWord): new, to get a word from a long int: expr>>(8*n),
1355 (isConformingBody): also check GETABIT, GETBYTE, GETWORD,
1356 (decorateType): '&': also try GETABIT, GETBYTE, GETWORD optimization,
1357 RIGHT_OP: also try GETBYTE, GETWORD optimization,
1358 GETABIT, GETBYTE, GETWORD: decorate them,
1359 (isShiftRightLitVal, isBitAndPowOf2): new helper functions,
1360 (ast_print): added GETABIT, GETBYTE, GETWORD
1361 * src/SDCCcse.c (isSignedOp): added GETABIT, GETBYTE, GETWORD
1362 * src/SDCCicode.c (codeTable): added GETABIT, GETBYTE, GETWORD,
1363 (geniCodeBinary): new generic binary icode,
1364 (ast2iCode): added GETABIT, GETBYTE, GETWORD
1365 * src/port.h: updated comment for PORT.hasExtBitOp
1366 * src/mcs51/gen.c (genGetAbit): new, to get any single bit,
1367 (genGetByte): new, to get a single byte,
1368 (genGetWord): new, to get a word from a long,
1369 (gen51Code): added GETABIT, GETBYTE, GETWORD
1370 * src/mcs51/main.c (hasExtBitOp): added GETABIT, GETBYTE, GETWORD
1372 2005-09-23 Raphael Neider <rneider AT web.de>
1374 * configure.in, configure: have device/lib/pic configured
1375 * device/lib/Makefile.in: added model-pic14
1376 * device/lib/clean.mk: added pic/ to clean rule
1377 * device/lib/pic: added rudimentary pic14 library providing support
1378 functions for multiplication/division/generic pointer access
1379 * src/SDCCopt.c (convilong): mark support functions as extern
1380 for pic14 port as well
1381 * src/pic/gen.c (genMult): added assertions,
1382 (genpic14Code): emit warning on unhandled iCodes
1383 * src/pic/main.c (_hasNativeMulFor): return true only for 8x8 bit
1384 * src/pic/pcode.c (pCodeOpCopy),
1385 * src/pic16/pcodepeep.c (pic16_pCodeOpCopy): fixed handling of various
1386 pCodeOpReg-subtypes (PO_{STATUS,INTCON,PCL,PCLATH,PCLATU,BSR,
1387 SFR_REGISTER}), made safe for future extensions
1388 * src/pic16/pcode.c (pic16_safepCodeUnlink): allow for removal of
1389 instructions even if preceeded by SKIP instructions (also remove
1390 them); removed unused code
1391 * src/pic16/pcode.h: added arg2 to pCodeOpLit to match pCodeOpLit2,
1392 prevents leaving parts of the structure uninitialized after copying
1394 2005-09-22 Maarten Brock <sourceforge.brock AT dse.nl>
1396 * src/mcs51/gen.c (genMinus): fix for undetected bug introduced 3 months
1398 * support/regression/tests/addsub.c: added test for the bug
1400 2005-09-21 Raphael Neider <rneider AT web.de>
1402 * device/include/pic16/pic18f1220.h,
1403 device/lib/pic16/libdev/pic18f1220.c: added ECCPAS sfr and bitfield
1404 * device/lib/pic16/Makefile.rules: added missing opening paren
1405 * src/pic16/gen.c (pic16_genNot,pic16_genCpl): removed as these
1406 are provided in genutils.c,
1407 (genUminusFloat,genUminus,genCmpEq): added asserts on different
1408 operand/result sizes,
1409 (genCmp): assert on NULL pointers first, then check deref'ed values
1410 * src/pic16/genutils.c (pic16_genCpl): fixed for different operand/
1413 2005-09-18 Raphael Neider <rneider AT web.de>
1415 * src/pic16/gen.c (genFarPointerGet,genFarPointerSet): removed
1416 as these are now unused,
1417 (genPointerGet,genPointerSet): handle FPOINTERs like POINTERs
1418 * src/pic16/pcode.c (pic16_symIsSpecial): assume REG_TMPs to be
1419 local, avoids uninitialized pointer dereference on r->name
1420 * src/pic16/ralloc.c (newReg): fixed indentation
1422 2005-09-13 Maarten Brock <sourceforge.brock AT dse.nl>
1424 * src/SDCCval.c (constVal): fixed bug 730366
1425 * support/Util/SDCCerr.c,
1426 * support/Util/SDCCerr.h: added warning W_INVALID_INT_CONST
1428 2005-09-10 Maarten Brock <sourceforge.brock AT dse.nl>
1430 * as/mcs51/lkmem.c (summary2): fixed report for absolute areas (bug 1210220)
1432 2005-09-09 Maarten Brock <sourceforge.brock AT dse.nl>
1434 * src/mcs51/peeph.def (241.x): fixed bug when comparing generic pointers
1436 2005-09-08 Maarten Brock <sourceforge.brock AT dse.nl>
1438 * as/hc08/lkaomf51.c (OutputName): made name unsigned char,
1439 (hex2dec): made hex_digit unsigned char, removed ascii dependance
1440 * as/mcs51/lkaomf51.c (OutputName): made name unsigned char,
1441 (hex2dec): made hex_digit unsigned char, removed ascii dependance
1442 * as/mcs51/lkarea.c (lnkarea2): sort absolute areas to the front
1443 * packihx/packihx.c (hexDigit): made c unsigned char
1444 * as/mcs51/lklibr.c (fndsym),
1445 * link/z80/lkgb.c (gb),
1446 * link/z80/lklibr.c (fndsym),
1447 * link/z80/lkrloc.c (relr),
1448 * sim/ucsim/libltdl/ltdl.c (load_deplibs, try_dlopen),
1449 * src/SDCC.lex (checkCurrFile, process_pragma),
1450 * src/SDCCglue.c (spacesToUnderscores),
1451 * src/SDCCmain.c (setParseWithComma, processFile),
1452 * src/asm.c (tvsprintf, printCLine),
1453 * src/avr/gen.c (emitcode, aopPut),
1454 * src/ds390/gen.c (emitcode),
1455 * src/hc08/gen.c (emitcode, emitinline),
1456 * src/mcs51/gen.c (emitcode, genInline),
1457 * src/pic/pcodepeep.c (cvt_extract_destination, cvt_extract_status,
1459 * src/pic/ralloc.c (debugLog),
1460 * src/pic16/pcodepeep.c (cvt_extract_destination, cvt_extract_status,
1462 * src/pic16/ralloc.c (debugLog),
1463 * src/z80/main.c (_process_pragma):
1464 made all ctype.h function calls safe
1465 * src/SDCCopt.c: include math.h for fabs
1466 * src/SDCCpeeph.c: added macros ISCHARDIGIT, ISCHARSPACE and ISCHARALNUM
1467 and used them throughout the code to make ctype.h function calls safe
1468 * src/ds390/main.c (asmLineNodeFromLineNode),
1469 * src/mcs51/main.c (asmLineNodeFromLineNode): made p unsigned char*
1470 * src/pic/gen.c (DEBUGpic14_emitcode, pic14_emitcode): made lbp
1472 * src/pic/pcode.c (mnem2key): made mnem unsigned char*,
1473 (newpCodeAsmDir): made ctype.h function calls safe
1474 * src/pic16/gen.c (pic16_emitpcomment, DEBUGpic16_emitcode,
1475 pic16_emitcode): made lbp unsigned char*
1476 * src/pic16/pcode.c (mnem2key): made mnem unsigned char*,
1477 (pic16_newpCodeAsmDir): made ctype.h function calls safe
1478 * src/xa51/gen.c (emitcode),
1479 * src/z80/gen.c (_emit2): made lbp unsigned char*
1480 * support/Util/MySystem.c (split_command): made cmd_line and p unsigned
1483 2005-09-05 Raphael Neider <rneider AT web.de>
1485 * src/pic16/ralloc.c (pic16_allocDirReg): use device specific
1486 access bank splitpoint
1488 2005-09-05 Raphael Neider <rneider AT web.de>
1490 * device/lib/pic16/libc/Makefile: added (missing) string to SUBDIRS
1492 2005-09-03 Maarten Brock <sourceforge.brock AT dse.nl>
1494 * .version: changed to version 2.5.3
1495 * doc/sdccman.lyx: changed version to 2.5.3,
1496 documented --codeseg and --constseg and pragma codeseg and constseg,
1497 documented bit parameters (reentrant) and bit returning
1498 * src/SDCCicode.c (geniCodeReceive): fixed (possible) bug generating
1499 currFunc->recvSize, but is this ok for all ports?
1500 (ast2iCode): result of ~ on unsigned char must be cast to int for
1502 * src/SDCCmem.c (allocGlobal, allocLocal): don't put bit returning
1503 function pointers in bit space
1504 * src/SDCCsymt.c (checkSClass): allow bit returning function pointers,
1505 (processFuncArgs): call port.reg_parm() with reentrancy info
1513 * src/z80/main.c: port.reg_parm prototype extended with
1514 "bool reentrant" parameter
1515 * src/mcs51/main.c (_mcs51_regparm): use parameter reentrant instead of
1516 options.stackAuto for allocating bit register parameters
1517 * src/mcs51/gen.c (genNot): optimized complementing direct bit,
1518 (genSend): set BitBankUsed if it is,
1519 (selectRegBank): factored out of genCall for use in genPcall,
1520 (genCall): removed redundant dtype assignmen, use selectRegBank,
1521 (genPcall): handle returning in Carry properly, save in F0 if needed,
1522 (genReceive): handle bit register parameters
1523 * src/mcs51/ralloc.c (updateRegUsage): update BitBankUsed along the way,
1524 (mcs51_assignRegisters): enable bit registers for all reentrant
1525 functions and don't set BitBankUsed unconditionally
1526 * src/mcs51/peeph.def (177.d): fixed bug if %2==%3
1527 * support/regression/tests/bitvars.c: enable tests for SDCC_STACK_AUTO
1528 * support/regression/tests/funptrs.c: added tests for BOOL and for return
1530 2005-08-27 Borut Razem <borut.razem AT siol.net>
1532 * device/lib/Makefile.in: cp on sparc-solaris (SunOS) and on
1533 ppc-osx (Darwin) does not support -u option. It seems that it is
1534 supported only on Linux - GNU cp
1536 2005-08-25 Borut Razem <borut.razem AT siol.net>
1538 * sim/ucsim/gui.src/serio.src/Makefile.in,
1539 sim/ucsim/s51.src/Makefile.in, sim/ucsim/avr.src/Makefile.in,
1540 sim/ucsim/z80.src/Makefile.in, sim/ucsim/hc08.src/Makefile.in,
1541 sim/ucsim/xa.src/Makefile.in: install -s changed to 2 steps:
1542 install and strip, since the strip at /usr/ccs/bin should be used
1545 2005-08-24 Borut Razem <borut.razem AT siol.net>
1547 * clean.mk, device/lib/clean.mk: find on sparc-solaris does not support -maxdepth option
1549 2005-08-23 Bernhard Held <bernhard AT bernhardheld.de>
1551 * src/SDCCopt.c (convertToFcall): fixed modulus with divisors 1 and
1554 2005-08-23 Maarten Brock <sourceforge.brock AT dse.nl>
1556 * as/mcs51/aslink.h: completed lkrloc.c prototypes
1557 * as/mcs51/lkmain.c (link_main): fixed warning
1558 * device/include/stdbool.h: ds390 has no advanced bit support yet
1559 * src/SDCC.y: use SPEC_SHORT and renamed _signed to b_signed
1560 * src/SDCCsymt.c: use SPEC_SHORT and renamed _signed to b_signed
1561 * src/SDCCsymt.h (struct specifier): renamed _xxx bitfields to b_xxx
1562 and updated their macros
1563 * src/SDCCval.c (constVal): updated comment for renamed b_long
1565 2005-08-22 Maarten Brock <sourceforge.brock AT dse.nl>
1567 * as/mcs51/asdata.c: changed ctype['['] to BINOP
1568 * as/mcs51/asexpr.c (expr): added case '[' for bit access in bdata,
1569 (term): abused bit 15 of s_addr to indicate bit-addressable bytes,
1570 (oprio): set priority for '['
1571 * as/mcs51/aslink.h: added define R_BIT, and prototypes for adb_bit
1573 * as/mcs51/asm.h: added defines R_BIT and S_BIT
1574 * as/mcs51/lkarea.c (lnksect2): use T for seg BIT_BANK and overlay it
1575 * as/mcs51/lkdata.c: changed ctype['['] to BINOP
1576 * as/mcs51/lkmain.c (Areas51): rel2 contains 12 (=C) areas now,
1577 added overlayable BIT_BANK area
1578 * as/mcs51/lkmem.c (summary): add BIT_BANK to BSEG_BYTES in the report,
1579 (summary2): explain 'T' in legenda
1580 * as/mcs51/lkrloc.c: replaced old K&R style,
1581 (relr): added R_BIT processing,
1582 (errmsg): added "Bit-addressable relocation error",
1583 (adb_bit): added for converting from byte- to bit-addressable space,
1584 (adb_24_bit): added for converting from byte- to bit-addressable space
1585 * device/include/stdbool.h: changed BOOL to __bit for mcs51 as it can be
1586 used in reentrant functions now even as return value
1587 * device/lib/_gptrput.c (_gptrput): removed obsolete code
1588 * src/SDCCast.c (resultTypePropagate): also propagate AND_OP and OR_OP,
1589 (decorateType): case '!', GETHBIT, AND_OP, OR_OP: result in bool or char
1590 * src/SDCCglobl.h: added indicator BitBankUsed
1591 * src/SDCCglue.c (glue): emit area BIT_BANK with byte 'bits' and equ's for
1592 the bit registers b0-b7
1593 * src/SDCCicode.c (operandFromSymbol): removed IS_BITVAR check,
1594 (geniCodeCast): fixed bug 1263853,
1595 (geniCodeLogicAndOr): put result in bool or char,
1596 (geniCodeReceive): added parameter func for accessing the return type,
1597 (geniCodeFunctionBody): pass func to geniCodeReceive
1598 * src/SDCCmain.c: added indicator BitBankUsed
1599 * src/SDCCmem.c (allocLocal): explicitly set sclass for V_BIT
1600 * src/SDCCsymt.c (newBoolLink): added for creating a bool/bit,
1601 (checkSClass): don't put automatic bool/bit on stack,
1602 (checkFunction): removed check on function cannot return bit
1603 * src/SDCCsymt.h: added newBoolLink prototype
1604 * src/mcs51/gen.c (rb1regs): added bit registers,
1605 (movc): created for assigning to carry,
1606 (pushReg, popReg): created for pushing registers,
1607 (sameRegs): check both AOP_REG and AOP_CRY types,
1608 (aopOp): handle bit registers,
1609 (aopPut): optimization no self-assign,
1610 (saveRegisters): push reg->base (bits) only once for bit registers,
1612 (unsaveRegisters): pop reg->base only once and use popReg,
1613 (assignResultValue): added parameter func and return in carry for bits,
1614 (genIpush): optimization no reload in A if not changed,
1615 (genSend): bit parameters in reentrant functions are passed in bit
1616 registers by first assigning to bits in B, then save registers and
1618 (genCall): handle returning in Carry properly, save it in F0 if needed,
1619 (genPcall): updated assignResultValue call, this is not safe yet for bit
1620 returning function !!!
1621 (genFunction): don't generate equ's for bit registers and use pushReg,
1622 (genEndFunction): take care of bit returning functions and use popReg,
1623 (genRet): return bit in Carry,
1624 (genIfx): optimize bit registers and other directly addressable bits,
1625 (genReceive): updated assignResultValue call
1626 * src/mcs51/main.c (_mcs51_reset_regparm): added regBitParmFlg,
1627 (_mcs51_regparm): allow passing of upto 8 bit parameters in bit
1628 registers when using stack-auto
1629 * src/mcs51/ralloc.c (_G): added allBitregs,
1630 (regs8051): added the bit registers,
1631 (createStackSpil): use macro IS_BIT,
1632 (getRegBit): added to allocate a bit register, else spill,
1633 (getRegBitNoSpil): added to allocate a bit register, else a gpr,
1634 (updateRegUsage): factored out to ease stepping while debugging,
1635 (serialRegAssign): use updateRegUsage, only spill bits if necessary,
1636 also allocate bit registers,
1637 (fillGaps): handle bit registers,
1638 (findAllBitregs): added to create bit vector with all bit registers,
1639 (mcs51_allBitregs): returns this bit vector,
1640 (mcs51_assignRegisters): when using stack-auto use bit registers for
1641 passing parameters and creating local variables
1642 * src/mcs51/ralloc.h: added B0_IDX..B7_IDX and prototype mcs51_allBitregs
1644 2005-08-22 Borut Razem <borut.razem AT siol.net>
1646 * device/lib/Makefile.in: replaced find option -or with -o
1647 to make it run on solaris
1649 2005-08-22 Raphael Neider <rneider AT web.de>
1651 * src/pic16/gen.c (pic16_loadFromReturn): added check for AOP_PCODE,
1652 fixes #1265442 (crash on Solaris)
1654 2005-08-20 Borut Razem <borut.razem AT siol.net>
1656 * configure, configure.in: added tests for libsocket and libnsl libraries,
1657 requred by sdcdb on sparc-solaris; generate support/regression/Makefile
1658 from support/regression/Makefile.in
1659 * support/regression/Makefile.in: added
1660 * device/lib/pic16/Makefile.common.in: force make to use bash shell
1661 * sim/ucsim/libtool: regenerated on sparc-solaris
1662 * sim/ucsim/avr.src/Makefile.in, sim/ucsim/hc08.src/Makefile.in,
1663 sim/ucsim/s51.src/Makefile.in, sim/ucsim/xa.src/Makefile.in,
1664 sim/ucsim/z80.src/Makefile.in: removed GNU ld specific linker options
1665 -Wl,--start-group and -Wl,--end-group to enable ucsim compilation on
1666 sparc-solaris, which doesn't use GNU ld linker
1667 * device/lib/Makefile.in: cp on sparc-solaris (SunOS) does not support -u option
1668 * as/Makefile: find on sparc-solaris does not support -maxdepth option
1670 2005-08-19 Maarten Brock <sourceforge.brock AT dse.nl>
1672 * src/mcs51/peeph.def: updated comments
1674 2005-08-16 Frieder Ferlemann <Frieder.Ferlemann AT web.de>
1676 * device/lib/_gptrget.c,
1677 * device/lib/_gptrput.c: slightly shorter
1678 * doc/sdccman.lyx: incremented version
1679 * src/mcs51/peeph.def: moved peephole comments to the line of first
1680 change to better keep line correlation, reanimated 186.e
1681 * src/mcs51/peeph.def: renamed similar peepholes by using suffixes
1683 2005-08-16 Slade Rich <slade_rich AT users.sourceforge.net>
1685 * src/pic/pcode.c : Pasted ".line" assembly directives patch from
1686 David Saxton with quotes around file name.
1688 2005-08-15 Borut Razem <borut.razem AT siol.net>
1690 * support/regression/tests/bitfields.c, support/regression/tests/bitvars.c,
1691 support/regression/tests/bitwise.c, support/regression/tests/literalop.c,
1692 support/regression/tests/rotate.c, support/regression/tests/zeropad.c:
1693 make tests run on x86_64 platform
1695 2005-08-13 Raphael Neider <rneider AT web.de>
1697 * device/lib/pic16/Makefile.subdir: weakened clean-intermediate rule
1698 as it might be executed DURING a build (parallel make is wonderful)
1700 2005-08-13 Raphael Neider <rneider AT web.de>
1702 * device/lib/Makefile.in (port-specific-objects-pic16):
1703 revert to cp $(PORT)/bin/*.* $(PORTDIR)
1704 * device/lib/pic16/Makefile: added .PHONY targets, removed builddir
1706 * device/lib/pic16/Makefile.rules: build subdirs before creating
1707 the library, removed builddir rule, create $(builddir) early in
1708 recurse rule, use empty recurse rule for leaf directories
1709 * device/lib/pic16/Makefile.subdir: added phony targets, ignore
1710 mkdir errors (race condition), removed duplicate suffix "hex"
1712 * device/lib/pic16/libdev/Makefile: recursive make via + and $(MAKE)
1713 * device/lib/pic16/libio/Makefile: create sub-make's builddir early,
1714 prevents mkdir -p from aborting on Alpha
1716 2005-08-12 Raphael Neider <rneider AT web.de>
1718 * src/pic16/glue.c (pic16_print(G)PointerType): do not flush
1719 db-statements in order to allow for arrays of pointers in code
1720 sections to be placed without interspersed 0-padding, fixes
1722 * (emitStatistics): fixed division by zero for pic18f1220
1723 * src/pic16/pcode.c: buffer (up to) 12 DB directives to allow for
1724 unpadded writing of 8-bit, 16-bit, 24-bit and 32-bit values
1725 * (pic16_emitDS): respect DB_ITEMS_PER_LINE
1726 * (pic16_pCodeConstString): keep track of already emitted string
1727 literals to prevent "duplicate definitions of symbol _str_NR"
1728 * src/pic16/ralloc.c (pic16_allocRegByName): removed not so helpful
1730 * device/lib/Makefile.in: ignore failing PIC16 library builds
1731 * device/lib/pic16/Makefile: do not build if gputils are missing
1732 * device/lib/pic16/Makefile.common.in: do not enforce MAKEFLAGS=-s
1734 2005-08-10 Raphael Neider <rneider AT web.de>
1736 * device/lib/Makefile.in: fixed copying pic16 libraries (broken by
1739 2005-08-10 Raphael Neider <rneider AT web.de>
1741 * src/*.c, src/pic16/{gen.c,glue.c,main.c}: applied Vangelis
1742 Rokas' patch to add the new fixed point type "__fixed16x16"
1743 * device/lib/pic16/libsdcc/fixed16x16: added Vangelis' support
1744 functions for __fixed16x16 arithmetics
1745 * device/lib/pic16: reimplemented the build system to support
1746 a separate build directory, better handling of libio (create
1747 the library in a separate subdir for each architecture) and
1748 easier configuration (centralized in Makefile.common)
1750 2005-08-07 Raphael Neider <rneider AT web.de>
1752 * src/pic16/gen.c (genrshTwo): fixed sign extension
1753 * src/pic16/device.c: added pic18f2320, 4220 and 4320
1754 * device/include/pic16/pic18f2220.h: changed some bit definitions,
1756 * device/include/pic16/pic18f4220.h: NEW, header for
1757 pic18f4220 and pic18f4320
1758 * device/include/pic16/pic18fregs.h: added new devices,
1759 embraced Nop(), ClrWdt(), Sleep() and Reset() with do {} while(0)
1760 * device/include/pic16/signal.h: resolved name clashes
1761 on bit definitions, added DEF_HANDLER2(sig1,sig2,handler)
1762 to also allow testing for interrupt enable bits, added
1763 comments on how to use the macros
1764 * device/lib/pic16/libdev/pic18f2220.c: added T0CONbits
1765 * device/lib/pic16/libdev/pic18f{2320,4220,4320}.c: NEW,
1766 register definitions for the devices
1767 * device/lib/pic16/pics.all: added new devices
1768 * device/lib/pic16/libc/stdlib/calloc.c: fixed zeroing
1770 * device/lib/pic16/libc/stdlib/memfree: do not count
1771 the block header as free memory
1772 * device/lib/pic16/libc/stdlib/memmisc.c (_initHeap):
1773 simplified and added missing end-of-blocklist-marker
1774 (reported by Peter Onion, fixes #1252814)
1775 * (_mergeHeapBlock): fixed loop condition
1776 * device/lib/pic16/libc/stdlib/realloc.c: return NULL for
1777 len==0, restructured code
1778 * device/lib/pic16/libc/stdlib/{malloc,memfreemax}.c: cleaned
1779 up a bit, reduced bitfield accesses, prevent endless loops
1780 in case of heap corruption
1781 * device/lib/pic16/libc/stdlib/x_ftoa.c: disabled
1782 "unreferenced arguments/must return a value" warnings
1783 * device/lib/pic16/libio/usart/ubaud.c (usart_baud):
1784 replaced BAUDREG with SPBRG
1785 * device/lib/pic16/libsdcc/lregs/{lrrest.c,lrst.c},
1786 device/lib/pic16/debug/gstack/gstack.c: replaced
1787 _naked, _asm, _endasm with __naked, __asm, __endasm
1789 2005-08-05 Raphael Neider <rneider AT web.de>
1791 * src/pic16/gen.c (pic16_aopGet): fixed handling of offsets in
1792 AOP_PCODE operands, fixes multibyte union-bitfield-accesses
1794 2005-08-05 Borut Razem <borut.razem AT siol.net>
1796 * device/lib/Makefile.in: added missing ';'
1797 * configure: removed ^M characters
1799 2005-08-04 Jesus Calvino-Fraga <jesusc AT ece.ubc.ca>
1801 * device/include/mcs51/at89c51ed2.h, device/include/mcs51/p89v51rd2.h,
1802 device/include/mcs51/at89s53.h: changed to GNU Lesser General Public
1805 2005-08-04 Borut Razem <borut.razem AT siol.net>
1807 * configure.in: pic16 libraries build 2nd try - enable running
1808 configure in device/lib/pic16
1809 * configure: regenerated from configure.in
1810 * device/lib/Makefile.in: create $(PORT)/bin directory
1812 2005-08-03 Raphael Neider <rneider AT web.de>
1814 * src/pic16/gen.c (pic16_derefPtr): NEW, single place
1815 to get/set values via pointers
1816 * (genUnpackBits,genPackBits): changed detection of
1817 ptr->bitfield vs. sym.bitfield, fixed access via generic
1818 pointers, removed dead (wrong) code for multibyte bitfields
1819 * (genNearPointerGet, genGenPointerGet): removed useless code,
1820 fixed bitfield detection, fixes #1250594
1821 * (genNearPointerSet): removed useless code
1822 * src/pic16/gen.h: renamed pic16_emitpcode to pic16_emitpcode_real
1823 and introduced macro pic16_emitpcode that conditionally emits
1824 the origin of the following pCode (useful for debugging SDCC)
1825 * src/pic16/pcode.c: changed (and disabled) some debug outputs
1826 * (createDefmap): fixed handling of LFSR for --optimize-df
1828 2005-08-02 Borut Razem <borut.razem AT siol.net>
1830 * device/lib/Makefile.in: pic16 libraries build enabled since
1831 gputils-0.13.2 are now localy installed at sourceforge's compile farm
1833 2005-08-02 Raphael Neider <rneider AT web.de>
1835 * src/pic16/gen.c (genPackBits): removed deprecated warning
1836 * (genGenPointerSet): fixed bitfield detection
1838 2005-08-02 Jesus Calvino-Fraga <jesusc AT ece.ubc.ca>
1840 * device/include/mcs51/msm8xc154s.h: Removed PT2 definition, now in 8052.h.
1842 2005-07-31 Raphael Neider <rneider AT web.de>
1844 * device/lib/pic16/libdev/pic18f458.c,
1845 device/include/pic16/pic18f458.h: added missing T0CONbits
1847 2005-07-29 Maarten Brock <sourceforge.brock AT dse.nl>
1849 * device/include/mcs51/msm8xc154s.h: added, thanks to Matthias Arndt
1851 2005-07-28 Maarten Brock <sourceforge.brock AT dse.nl>
1853 * src/mcs51/gen.c (operandsEqu): fixed bug 1246687
1855 2005-07-23 Jesus Calvino-Fraga <jesusc AT ece.ubc.ca>
1857 * device/include/mcs51/at89c51ed2.h: added.
1859 2005-07-23 Raphael Neider <rneider AT web.de>
1861 * src/pic/gen.h: added emitpcode macro for debugging
1862 * src/pic/gen.c (emitpcode): renamed to emitpcode_real
1863 and replace by macro adding debug information on demand
1864 * (genNot): fixed to C semantics (!0 = 1; !x = 0 iff x != 0)
1865 * (gencjne): tried to fix; replaced with correct (slower) code
1866 * (gen{Unp,P}ackBits): fixed single bit access
1867 * src/pic/pcode.c (AnalyzepCode): fixed DFPRINTF argument
1868 * src/pic/pcodepeep.c (pCodeSearchCondition): fixed finding
1869 previous instruction
1870 * src/pic/pcoderegs.c (regIsSpecial): NEW, check whether a
1871 register has to be handled with care (forbidding movement
1872 of assignments/uses, removing assignments completely, ...)
1873 * (pCodeOptime2pCodes): make use of regIsSpecial
1874 * added lots of debugging output (commented out)
1875 * src/pic/rallloc.c (deassignLRs): prevent operand registers
1876 from being reused as result UNLESS it is known to work
1878 2005-07-23 Maarten Brock <sourceforge.brock AT dse.nl>
1880 * support/Util/dbuf.h: include <stddef.h> for size_t
1881 * .version: changed to version 2.5.2
1883 2005-07-23 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
1885 * src/SDCCloop.c (loopInvariants): fixed bug #1234048
1887 2005-07-22 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
1889 * src/hc08/gen.c (genMinus): fixed bug #1241835,
1890 (genModOneByte): removed needless psha/pula
1892 2005-07-22 Raphael Neider <rneider AT web.de>
1894 * src/SDCCmain.c (linkEdit): initialized linkerScriptFileName,
1895 have PIC14 handled like PIC16, fixes broken pic14 linker calls
1896 * src/pic/gen.c (resolveIfx): do not "invent" labels
1897 * (genSkipc): changed to positive logic
1898 * (genSkipCond): removed as no longer needed
1899 * (pic14_mov2w_regOrLit,genCmp): NEW, replacement for buggy version,
1901 * (genLeftShift): check operands are in different registers
1902 * src/pic/genarith.c (genPlus): replaced INCF with ADDLW as
1903 INCF does not update CARRY...
1904 * src/pic/main.c: fixed _linkCmd
1905 * src/pic/pcode.c (unlinkpCode): added inactive code
1906 * src/pic/ralloc.c (deassignLRs): keep arguments to shift operations
1907 alive (do not assign result and operand overlapping registers)
1909 2005-07-22 Raphael Neider <rneider AT web.de>
1911 * src/pic/device.c (dump_sfr): replaced register declaration with
1912 call to emitSymbolToFile() to avoid duplicate symbols
1913 * (assignRelocatableRegisters): do not declare external symbols
1914 * src/pic/ralloc.c (allocNewDirReg): fixed to get size of arrays
1915 right (take size of type, not etype)
1916 * (allocDirReg): fixed call to allocNewDirReg() to pass OP_SYM_TYPE
1917 * (writeUsedRegs): also dump dynDirectRegs (e.g. local variables)
1918 * (packRegsForAccUse): disabled assignment of WREG as
1919 the result reg to prevent occurence of just fixed #1235003,
1921 * src/pic/glue.c (emitSymbolToFile): NEW, central place to declare
1922 symbols (avoids duplicate symbols in .asm file)
1923 * (pic14emitRegularMap): use emitSymbolToFile()
1924 * src/pic/gen.c (aopOp): fixed spillLocation handling
1925 * (gen{Unp,P}ackBits): fixed acquiring bit-operands
1926 * (genDataPointerSet): removed unneccessary variables/output
1928 2005-07-22 Maarten Brock <sourceforge.brock AT dse.nl>
1930 * as/mcs51/lkarea.c: enlarged codemap for banked memory
1931 * device/lib/mcs51/crtbank.asm: added # to 0x0F
1933 2005-07-21 Raphael Neider <rneider AT web.de>
1935 * src/pic/gen.c (aopOp): do not generate AOP_ACC operands as pic14
1936 architecture cannot handle them efficiently, fixes bug #1235003
1937 * src/pic16/device.c (pic16_dump_{u,i}section,pic16_dump_int_registers):
1938 check for empty sets before using them (fixes bug #1232190)
1940 2005-07-19 Maarten Brock <sourceforge.brock AT dse.nl>
1942 * as/mcs51/lkarea.c (lnkarea, lnkarea2): improved BSEG size calculation,
1943 (lnksect2): generate warnings for memory overlap
1944 * src/SDCC.lex (doPragma, process_pragma): added pragma's codeseg and
1945 constseg to set the name of these segments so you can instruct the linker
1946 to place them in banks
1947 * src/SDCCast.c (decorateType): use new macro IS_FUNCPTR()
1948 * src/SDCCglobl.h: added MODEL_HUGE to enum,
1949 added code_seg and const_seg to options
1950 * src/SDCCglue.c (emitMaps): use options.const_seg,
1951 (createInterruptVect): put interrupt vectors in segment HOME,
1952 (glue): put HOME before static segment and put the main glue in HOME,
1953 (glue): use options.code_seg
1954 * src/SDCCicode.c (geniCodeCall): use new macro IS_FUNCPTR()
1955 * src/SDCCmain.c: added option --codeseg and --constseg to set the name of
1956 these segments so you can instruct the linker to place them in banks
1957 (linkEdit): use code_loc for HOME segment which should be the first
1958 segment in code memory now
1959 * src/SDCCmem.c: fixed more stuff like bug 1238386
1960 * src/SDCCsymt.c (getSize): use generic pointer size for banked functions,
1961 (changePointer): don't change function pointers to code pointers for
1963 (compareType): added exceptional check for banked function pointers
1964 * src/SDCCsymt.h: changed IFFUNC_ISBANKEDCALL, added IS_FUNCPTR
1965 * src/hc08/main.c (_hc08_genAssemblerPreamble): put HOME first, put CSEG
1966 after static in code memory
1967 * src/mcs51/gen.c: added aopLiteralLong prototype,
1968 (aopForSym): use getSize for functions,
1969 (genCall): generate banked calls over one trampoline __sdcc_banked_call
1970 in HOME with lsb of address in r0, msb in r1 and bank in r2, use
1971 -Wl-bBANKSEG=0xbbaaaa option to set the address (aaaa) and bank (bb) of
1973 (genPcall): use call for literal function pointers and generate banked
1974 calls over the one trampoline so there's only one place for the user to
1975 modify according to his/hers hardware,
1976 (genEndFunction): jump to __sdcc_banked_ret in HOME for banked functions,
1977 (genPlusIncr): moved check icount>4 beyond inc dptr optimization
1978 * src/mcs51/main.c: added keyword banked,
1979 (_mcs51_genExtraAreas): put HOME first followed by GSINIT, STATIC and CSEG
1980 * support/Util/SDCCerr.c,
1981 * support/Util/SDCCerr.h: added E_BANKED_WITH_CALLEESAVES, registers are
1982 needed for passing the bank and address to the trampoline
1983 * device/lib/mcs51/crtbank.asm: added for bankswitching
1984 * device/lib/mcs51/Makefile: added crtbank
1986 2005-07-16 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
1988 * src/SDCCcse.c (algebraicOpts): fixed loss of volatility
1989 for fields at offset 0 of a struct or union as reported
1990 on 2005-07-07 in the developer mailing list.
1992 2005-07-15 Maarten Brock <sourceforge.brock AT dse.nl>
1994 * src/SDCCmem.c: fixed bug 1238386
1996 2005-07-12 Frieder Ferlemann <Frieder.Ferlemann AT web.de>
1998 * src/mcs51/peeph.def: added labelrefcounting for peepholes
1999 (patch #1144962), added peephole 300, enabled 259.x
2000 * doc/sdccman.lyx: removed screenshot and provided link instead
2002 2005-07-05 Frieder Ferlemann <Frieder.Ferlemann AT web.de>
2004 * doc/sdccman.lyx: added section about debugging with ddd
2005 * doc/figures/ddd_example.eps: screenshot of debugging session
2007 2005-07-04 Raphael Neider <rneider AT web.de>
2009 * src/pic/gen.c (genPointerGet): handle pointers to CONST values
2010 like CODE pointers, fixes #1115683
2011 * src/pic/pcode.c (DoBankSelect): forget LastRegIdx during function
2012 call, fixes bugs #1232211, #1228110,
2013 fixed wrong casts to pCodeFlow from pCodeInstructions
2015 2005-07-04 Raphael Neider <rneider AT web.de>
2017 * src/pic/gen.c (popGet): changed assert to allow for
2019 * (popGetAddr): changed signature to provide
2020 an additional index, patched all call sites
2021 * (genCmpEq): handle literal-like operands correctly
2022 * (genAddrOf): added sanity checks on __code/__data pointers
2023 * (genAssign): added handling of symbols from __code section
2024 * (gencjne): do not generate code for comparisons whose result
2025 is neither stored nor used, fixes bug #1171114
2026 * (AccLsh, AccRsh): operate on operand instead of WREG
2027 * (shift{Left,Right}_Left2ResultLit): NEW, size independant
2028 replacement for Shift{LR}{12}Left2Result; shift (byte/int/long)
2030 * rewrote complete shift-by-literal logic, commented unused
2032 * (genConstPointerGet): get multiple bytes (if result size > 1),
2033 fixed handling of non-immediate addresses
2034 * (genPointerGet): handle CODE pointers like CONST pointers
2035 * (genpic14Code): insert C-SRC lines as Cource-pCodes
2036 * ({aop,op}_isLitLike): NEW, single place to decide whether an
2037 operand is to be treated as a literal or not
2038 * (mov2w,genPcall,genCmpEq),
2039 src/pic/genarith.c: use aop_isLitLike() to decide between
2040 literal/register contents
2041 * (addSign): added missing offset
2042 * src/pic/gen.h: remove newline after FENTRY/FEXIT comments,
2043 only emit comment in debug-mode,
2044 use {aop,op}_isLitLike throughout the file
2045 * src/pic/glue.c: fix initializers for pointers (work in progress)
2046 * src/pic/pcode.c (get_op): honor index on _const symbols
2047 * ({reset,dump}pCodeStatistics): NEW, estimate code size
2048 * (dumppBlock): added pCode size estimation
2049 * src/pic/ralloc.c (deassignLRs,serialRegAssign,packRegisters):
2050 check for IS_SYMOP before OP_SYMBOL'ing
2051 * fixed indentation, compacted switch-statements
2052 * (allocReg): find free register and allocate it instead of
2053 allocating new registers all the time
2054 * (deassignLRs): prevent POINTER_GET's from being assigned the same
2055 registers as its operands (necessary only for multibyte GETs)
2057 2005-07-01 Raphael Neider <rneider AT web.de>
2059 * src/pic/gen.h: added prototypes emitpComment, popGetAddr and
2060 debugging .asm-output macros FENTRY + FEXIT
2061 * src/pic/gen.c (Safe_vsnprintf): NEW, is there a more generic
2063 * (emitpComment): NEW, printf to pCode
2064 * (popGet): added assert on too large offsets, fixed PO_IMMEDIATE's
2066 * (popGetAddr): NEW, variant of popGet to access an immediates
2067 high(er) bytes instead of the n'th byte of memory they reference,
2068 replaced popGet with popGetAddr where neccessary
2069 * (genDataPointerGet): reactivated and fixed implementation
2070 * (genNearPointerGet): enabled call to genDataPointerGet, fixes array-
2072 * (genDataPointerSet): fixed multibyte assignments
2073 * (genpic14Code): fixed --i-code-in-asm handling
2074 * src/pic/genarith.c: fixed PO_IMMEDIATE issue using popGetAddr,
2075 * (genPlus): fixed index-out-of-bounds error
2076 * src/pic/pcode.c (get_op): fixed PO_IMMEDIATE's index/offset handling
2077 * src/pic/ralloc.c: added debugging output macro FENTRY2
2078 * (spillThis): fixed indentation, enbraced for-body for clarity
2079 * (rematStr): commented out as now unused
2080 * (regTypeNum): commented out special spill case (overwrites
2082 * fixes bugs #1229346, #1216476 (both arrays) and #1115667 (SIGSEGV)
2084 2005-06-30 Maarten Brock <sourceforge.brock AT dse.nl>
2086 * doc/sdccman.lyx: documented sfr16/sfr32,
2087 added example for using storage class with function pointers
2088 * src/mcs51/gen.c (genPlusIncr): optimized small offsets from dptr
2090 2005-06-28 Maarten Brock <sourceforge.brock AT dse.nl>
2092 * device/lib/_gptrget.c: also push/pop _PSBANK, added # to 0x03
2093 * device/lib/_itoa.c,
2094 * device/lib/_ltoa.c: optimized codesize
2095 * src/SDCCsymt.c (checkSClass): added sanity check for sfr at addresses,
2096 but don't know how to suppress the double warning.
2097 * src/mcs51/gen.c (genPlusIncr): fixed bug when incrementing volatile int's
2098 * support/Util/SDCCerr.c,
2099 * support/Util/SDCCerr.h: added warning W_SFR_ABSRANGE for sanity check
2101 2005-06-27 Maarten Brock <sourceforge.brock AT dse.nl>
2103 * as/mcs51/asexpr.c (expr): disabled warning "not in .flat24 mode",
2104 fixed old K&R prototypes
2105 * as/mcs51/asout.c (outrb): always output as if generating 24bit addresses
2106 * device/lib/_gptrget.c,
2107 * device/lib/_gptrgetc.c,
2108 * device/lib/_gptrput.c: changed versions for new memory indicator values,
2109 also new versions for small generic pointers and banked generic pointers
2110 * src/port.h: added const_name
2111 * src/SDCC.lex: added keywords sfr16, __sfr16, sfr32, __sfr32
2112 * src/SDCC.y: added tokens SFR16, SFR32 and their sfr_attributes
2113 * src/SDCCcse.c (findPrevIc): check all associative operators
2114 * src/SDCCglue.c (emitMaps): use CONST_NAME if defined
2115 * src/SDCCicode.h: added macro IS_ASSOCIATIVE
2116 * src/SDCCmem.c: updated comments,
2117 set far-space to 0 for pdata, results in optimized code
2118 * src/SDCCmem.h: added macro CONST_NAME
2119 * src/SDCCsymt.h: renumerated generic pointer types GPTYPE_... thereby
2120 moving the info into the highest bits, see also gptrget/gptrput
2121 * src/src.dsp: added sdcc.ico to project files
2122 * src/avr/gen.c (genCast): fixed bug 0x%d
2123 * src/avr/main.c (avr_port): added "CONST (CODE)" for const_name
2124 * src/ds390/gen.c (aopForRemat, adjustArithmeticResult): disconnected direct
2125 relation between ptr_type and DCL_TYPE,
2126 (genCast): fixed bug 0x%d
2127 * src/ds390/main.c (ds390_port, tininative_port, ds400_port): added "CONST
2128 (CODE)" for const_name
2129 * src/hc08/gen.c (genCast): fixed bug 0x%d
2130 * src/hc08/main.c (_hc08_genAssemblerPreamble): added .area ...const_name,
2131 (hc08_port): added "CONST (CODE)" for const_name
2132 * src/mcs51/gen.c (aopForSym): optimized pushing ACC,
2133 (aopForRemat, adjustArithmeticResult): disconnected direct relation
2134 between ptr_type and DCL_TYPE,
2135 (aopGetUsesAcc, aopGet, aopPut): changed first parameter from asmop* to
2136 operand* and took AOP() inside function so sfr-ness can be checked,
2137 (all over): repaired calls to aopGetUsesAcc, aopGet, aopPut to comply with
2139 (genFunction, genEndFunction): optimized stack setup,
2140 (genMinus): optimized for literals with ending zeroes (in bytes),
2141 (genCast): fixed bug 0x%d
2142 * src/mcs51/main.c (_mcs51_keywords): added sfr16 and sfr32,
2143 (mcs51_port): added "CONST (CODE)" for const_name
2144 * src/mcs51/peeph.def: made rule 226 more generic
2145 * src/pic/main.c (pic_port): added "CONST (CODE)" for const_name
2146 * src/pic16/main.c (pic16_port): added "CONST (CODE)" for const_name
2147 * src/xa51/main.c (xa51_port): added "CONST (CODE)" for const_name
2148 * src/z80/main.c (z80_port): added NULL for const_name,
2149 (gbz80_port): added NULL for const_name
2150 * support/regression/tests/bug663539.c,
2151 * support/regression/tests/sfr16.c: new tests
2153 2005-06-25 Jesus Calvino-Fraga <jesusc AT ece.ubc.ca>
2155 * device/include/mcs51/p89v51rd2.h, device/include/mcs51/at89s53.h: added.
2157 2005-06-24 Raphael Neider <rneider AT web.de>
2159 * device/lib/pic16/libdev/pic18f[68][567]20.c:
2161 * device/include/pic16/signal.h: added USBIF
2164 2005-06-24 Raphael Neider <rneider AT web.de>
2166 * device/lib/pic16/libdev/pic18f2455.c,
2167 device/include/pic16/pic18f2455.h: NEW
2168 * device/include/pic16/pic18fregs.h,
2169 device/lib/pic16/pics.all,
2170 src/pic16/device.c: added 18f2455
2171 * device/lib/pic16/libdev/pic18f[68][567]20.c,
2172 device/include/pic16/{pic18f[68][567].h,usart.h}:
2173 replaced MULTIPLE_USARTS define with more relaible
2174 compatibility sfrs (for USART access)
2176 2005-06-20 Slade Rich <slade_rich AT users.sourceforge.net>
2178 * src/pic/pcode.c : Fixed problem when a string constant contains a "\r\n"
2179 and the output asm file line is printed on two lines.
2181 2005-06-19 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
2183 * sim/ucsim/hc08.src/inst.cc (inst_condbranch): fixed simulation of
2184 BGT, BLE, BHI, and BLS instructions
2185 * src/hc08/gen.c (outAcc, outBitC, outBitNV, genCmpLt, genCmpGt,
2187 * src/hc08/gen.c (genCmpEQorNE, genCmp, branchopCmp, nameCmp,
2188 negatedCmp, exchangedCmp, genhc08Code): rewrite of comparison handling,
2190 * src/hc08/peeph.def: added rules 2g - 2l for new conditional branches
2192 2005-06-15 Raphael Neider <rneider AT web.de>
2194 * src/pic16/NOTES: moved Vangelis from active developers to people to contact
2195 * device/include/pic16/{6520.h,8520.h}: fixed configuration bits
2196 * src/pic16/gen.c (): prevent iTemps from being considered to be in CODESPACE,
2197 fixes bug #1221120; for symbols in CODESPACE get number of bytes to read from
2198 OP_SYM_TYPE() instead of OP_SYM_ETYPE()
2200 2005-06-06 Frieder Ferlemann <Frieder.Ferlemann AT web.de>
2202 * device/include/mcs51/reg764.h: Changed PB0 to PBO as requested by
2203 Marcel Telka in bug #1215704
2205 2005-06-02 Slade Rich <slade_rich AT users.sourceforge.net>
2207 * src/pic/pcode.c : Changed pseudo stack size to 15 to allow WSAVE to be
2208 located in shared memory bank.
2210 2005-05-31 Raphael Neider <rneider AT web.de>
2212 * src/pic16/{gen.c,genarith.c}: replaced sign-extension
2213 "CLRF, BTFSC <signbit>, DECF/COMF" with side-effect-free
2214 "CLRF, BTFSC <signbit>, SETF"; fixes "long>>9"
2216 2005-05-27 Maarten Brock <sourceforge.brock AT dse.nl>
2218 * device/lib/_strncpy.c: fixed the fix
2220 2005-05-26 Raphael Neider <rneider AT web.de>
2222 * src/pic16/glue.c (pic16_printIvalChar): fixed _constant_ string
2223 initializers with \0, bug #1208187
2224 * src/pic/glue.c (printIvalChar): fixed (non- and constant) string
2225 intializers with \0, bug #1208187
2227 2005-05-26 Raphael Neider <rneider AT web.de>
2229 * src/pic16/glue.c (pic16_printIvalChar): fixed string
2230 initializers with \0, bug #1208187
2231 * src/pic16/main.c (_process_pragma): added sanity checks
2232 for stack position and size, emit warnings when appropriate
2234 2005-05-26 Maarten Brock <sourceforge.brock AT dse.nl>
2236 * device/lib/_strncpy.c: fixed not filling with \0
2238 2005-05-26 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
2240 * src/SDCCast.c (funcOfType, funcOfTypeVarg, stringToSymbol,
2242 * src/SDCC.y (external_definition, enumerator, parameter_declaration,
2243 compound_statement),
2245 * src/SDCCsymt.c (addSymChain, processFuncArgs): fixed bug #1159134
2247 2005-05-24 Raphael Neider <rneider AT web.de>
2249 * src/pic16/glue.c (pic16_printGPointerType): fixed #1207796
2251 2005-05-24 Raphael Neider <rneider AT web.de>
2253 * device/include/pic16/pic18f{442,452,458}.h: fixed wrong
2254 TRISE definitions, closes bug #1162453
2256 2005-05-22 Raphael Neider <rneider AT web.de>
2258 * src/pic16/main.c (_process_pragma): check for missing
2259 arguments to pragmas code and udata
2260 * device/include/pic16/pic18f{2550,4331,4455,4520}.h:
2261 consistency fixes to match other headers (thanks to Jim Paris)
2262 * device/lib/pic16/libio/i2c.ignore: 18f4331 provides no I2C
2264 2005-05-21 Maarten Brock <sourceforge.brock AT dse.nl>
2266 * src/SDCCicode.c (isOperandEqual): fixed missing ;
2268 2005-05-19 Maarten Brock <sourceforge.brock AT dse.nl>
2270 * support/regression/tests/bug1198642.c: new test
2271 * src/SDCCicode.c (isOperandEqual): fixed bug 1198642
2272 * src/SDCCcse.c (findPrevIc): added comment, please have a look
2273 * support/scripts/resource.h,
2274 * support/scripts/resource.rc,
2275 * src/src.dsp: added sdcc.ico to project as icon for sdcc.exe
2276 * support/scripts/sdcc.ico: added 32x32 icon
2278 2005-05-18 Raphael Neider <rneider AT web.de>
2280 * device/lib/pic16/libdev/pic18f*.c,
2281 * device/include/pic16/pic18f*.h: updated "sfr" and "at X"
2282 keywords to "__sfr" and "__at (X)"
2283 * device/include/pic16/pic18fregs.h: added pic18f4520
2284 * src/pic16/pcode.c (pic16_pCode2str): fixed (?) bug
2285 #1203088 (MPLAB compatibility)
2287 2005-05-17 Raphael Neider <rneider AT web.de>
2289 * device/include/pic16/pic18f{2550,4331,4455,4520}.h: NEW
2290 * device/lib/pic16/libdev/pic18f{2550,4331,4455,4520}.c: NEW
2291 * device/lib/pic16/pics.all: added new devices
2292 * src/pic16/device.c: added support for pic18f4520
2294 2005-05-16 Raphael Neider <rneider AT web.de>
2295 * src/pic16/gen.{c,h}: s/mov2f/pic16_mov2f made public
2296 * src/pic16/genarith.c (genAddLit): fixed bug 1202480
2297 * src/pic16/pcode.{c,h} (pic16_newpCodeOpBit_simple): NEW
2298 convenience function for bit access
2300 2005-05-15 Maarten Brock <sourceforge.brock AT dse.nl>
2302 * device/lib/printf_large.c: fixed bug 1193299
2303 * support/regression/tests/bug1057979.c: added test %3.3s
2305 2005-05-15 Frieder Ferlemann <Frieder.Ferlemann AT web.de>
2307 * device/include/mcs51/8051.h,
2308 * device/include/mcs51/8052.h: made parseable with lint
2309 * device/include/mcs51/lint.h: added include file for (sp)lint
2310 * doc/sdccman.lyx: added doc about use of splint (syntax checking tool)
2311 * doc/cdbfileformat.lyx,
2312 * doc/test_suite_spec.lyx: hardcoded date to the date of last text change
2314 2005-05-14 Raphael Neider <rneider AT web.de>
2316 * device/lib/pic16/Makefile.common.in: add --optimize-df to OPT_FLAGS
2317 * device/lib/pic16/libc/stdlib/itoa.c (new)
2318 * device/lib/pic16/libc/stdlib/Makefile: have itoa.c built
2319 * device/lib/pic16/libio/Makefile: exclude subdir according to
2320 ${subdir}.ignore for certain PICs (lacking e.g. i2c)
2321 * device/lib/pic16/libio/i2c.ignore (new): pic18f1220 has no I2C support
2322 * src/pic16/gen.c (genFunction): prevent annoying warning
2323 * src/pic16/pcode.c: renamed stack_t to dynstack_t to prevent
2325 * support/cpp2/cppmain.c (cpp_output_string): new
2326 * support/cpp2/cpplib.c (_cpp_do__Pragma): fixed _Pragma(""),
2329 2005-05-13 Borut Razem <borut.razem AT siol.net>
2331 * src/SDCCmain.c (linkEdit): fixed bug 1195202
2333 2005-05-12 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
2335 * .version: changed to version 2.5.1; back to bleeding edge development
2337 2005-05-11 Borut Razem <borut.razem AT siol.net>
2339 * doc/sdccman.lyx doc/cdbfileformat.lyx doc/test_suite_spec.lyx:
2340 generate PDF version 1.3 documents
2342 2005-05-07 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
2344 * .version: changed to version 2.5.0
2346 2005-04-27 Frieder Ferlemann <Frieder.Ferlemann AT web.de>
2348 * doc/sdccman.lyx: updated weblinks, index and smaller updates
2350 2005-04-26 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
2352 * doc/sdccman.lyx: changed version 2.5.0, documented --std-c89,
2353 --std-sdcc89, --std-c99, --std-sdcc99, and the corresponding #pragmas, as
2354 well as many smaller updates.
2355 * .version: changed to version 2.5.0-pre1
2357 2005-04-26 Jesus Calvino-Fraga <jesusc AT ece.ubc.ca>
2359 * src/SDCCmain.c (setIncludePath): added port->target to SDCC_INCLUDE_NAME
2361 2005-04-26 Maarten Brock <sourceforge.brock AT dse.nl>
2363 * support/regression/tests/bug1185672.c: added
2364 * src/mcs51/gen.c (aopGetUsesAcc, genCpl, genAnd, genOr, genXor): fixed
2366 * src/mcs51/gen.c (genCall): added comments, made it look safer
2367 * src/mcs51/gen.c (genEndFunction): simplified
2369 2005-04-25 Maarten Brock <sourceforge.brock AT dse.nl>
2371 * src/mcs51/ralloc.c (serialRegAssign): fixed bug 1189609
2373 2005-04-14 Borut Razem <borut.razem AT siol.net>
2375 * fixed bug 1045046 - SIGSEGV with really simple code?:
2376 src/pic/pcode.c (pCodeInitRegisters)- pseudo stack size increased to 16
2377 src/pic/ralloc.c (typeRegWithIdx) - error message on pseudo stack overflow
2379 2005-04-14 Borut Razem <borut.razem AT siol.net>
2381 * src/pic16/gen.c (genInline), src/pic16/main.c (_process_pragma),
2382 src/pic16/device.h: temporarily disabled experimental #inline pragma
2385 2005-04-14 Maarten Brock <sourceforge.brock AT dse.nl>
2387 * device/include/z80/stdio.h,
2388 * device/include/z80/string.h: removed these highly incomplete files so
2389 SDCC can use the default ones in device/include/
2391 2005-04-14 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
2393 * src/mcs51/gen.c (genEndFunction): removed unused variable to fix
2395 * device/lib/Makefile.in: default PORTINCDIR to the mcs51 subdir to
2398 2005-04-12 Maarten Brock <sourceforge.brock AT dse.nl>
2400 * device/include/malloc.h: removed redundant __reentrant prototypes
2401 * device/lib/_mullong.c: added working xstack variant in asm (C version
2402 doesn't pass regression tests)
2403 * device/lib/bpx.c: used __data and made bpx char for mcs51
2404 * src/SDCCast.c (decorateType): removed unused GPTYPE_IDATA,
2405 (createFunction): fixed bug with xstackPtr
2406 * src/SDCCcse.c: corrected comments
2407 * src/SDCCopt.c (convertToFcall): fixed warning in MSVC,
2408 (killDeadCode, eBBlockFromiCode): removed unused code
2409 * src/SDCCsymt.h: removed unused GPTYPE_GPTR and GPTYPE_IDATA,
2411 * src/mcs51/gen.c (aopForSym, aopPut, toBoolean, unsaveRegisters,
2412 assignResultValue, genCall, genFunction, genEndFunction, genAnd,
2413 genOr, genXor, genAddrOf): fixed several bugs concerning xstack
2414 (genModOneByte): fixed warning in MSVC
2415 * src/mcs51/main.c (): added comments
2416 * src/mcs51/peeph.def: changed 129 to 129.a, added 129.b, 129.c & 129.d
2418 2005-04-12 Maarten Brock <sourceforge.brock AT dse.nl>
2420 * src/SDCCmain.c (linkEdit): oops, changed one line too many
2422 2005-04-11 Maarten Brock <sourceforge.brock AT dse.nl>
2424 * src/SDCCmain.c (linkEdit): fixed bug with finding crt0.o for z80
2426 2005-04-10 Vangelis Rokas <vrokas AT users.sourceforge.net>
2428 * src/pic16/glue.c (printIvalChar): fixed bug when emitting
2429 characters arrays of larger size than the declared one.
2431 2005-04-10 Borut Razem <borut.razem AT siol.net>
2433 * src/pic/gen.c (genInline),
2434 src/pic/pcode.c (newpCodeAsmDir), (pCode2str),
2435 (genericPrint), (unlinkpCodeFromBranch), (compareLabel),
2436 (findNextInstruction), (findPrevInstruction),
2437 (findInstructionUsingLabel),
2438 src/pic/pcode.h: fixed bug #1164907 - Labels not being recognized
2439 * src/pic/pcode.c (findLabel): added missing '\n'
2440 * src/src.dsp: added SDCCdwarf2.c to the project
2442 2005-04-09 Borut Razem <borut.razem AT siol.net>
2444 * support/scripts/sdcc.nsi: added include/hc08/* h to NSIS setup
2446 2005-04-08 Raphael Neider <rneider AT web.de>
2448 * src/pic16/pcode.c: added helpers defmapInsertAfter (insert a new item
2449 into the chain after a given one) and mergeDefmapSymbols (combine
2450 defmap entries for each symbol per pcode)
2451 * (createDefmap): have defmap entries merged in the end
2452 * (defmapReplaceSymRef): split defmap entries covering two accesses to
2453 a symbol before replacing one access type's symbol, merge symbols in
2454 the end (replacement symbol might already have an entry)
2455 * (assignValnums): keep reference to written WREG intact
2457 2005-04-08 Raphael Neider <rneider AT web.de>
2459 * src/pic16/pcode.c (struct defmap_s): named anonymous union (for
2462 2005-04-08 Vangelis Rokas <vrokas AT users.sourceforge.net>
2464 * src/pic16/pcode.c (pic16_get_op2): enlarged size of array b to 128
2467 2005-04-07 Raphael Neider <rneider AT web.de>
2469 * device/include/pic16/usart.h: added compatibility defines for
2470 devices with more than one USART
2471 * device/include/pic16/pic18f[68][567]20.h: activated above defines
2473 2005-04-07 Maarten Brock <sourceforge.brock AT dse.nl>
2475 * device/lib/Makefile.in: updated for port specific include
2477 2005-04-07 Maarten Brock <sourceforge.brock AT dse.nl>
2479 * support/regression/ports/mcs51/spec.mk: added mcs51 include
2481 2005-04-07 Maarten Brock <sourceforge.brock AT dse.nl>
2483 * device/include/8051.h,
2484 * device/include/8052.h,
2485 * device/include/at89S8252.h,
2486 * device/include/at89c55.h,
2487 * device/include/at89x051.h,
2488 * device/include/at89x51.h,
2489 * device/include/at89x52.h,
2490 * device/include/mcs51reg.h,
2491 * device/include/reg51.h,
2492 * device/include/reg764.h,
2493 * device/include/regc515c.h,
2494 * device/include/sab80515.h: (re)moved these 12 files
2495 * device/include/mcs51/8051.h,
2496 * device/include/mcs51/8052.h,
2497 * device/include/mcs51/at89S8252.h,
2498 * device/include/mcs51/at89c55.h,
2499 * device/include/mcs51/at89x051.h,
2500 * device/include/mcs51/at89x51.h,
2501 * device/include/mcs51/at89x52.h,
2502 * device/include/mcs51/mcs51reg.h,
2503 * device/include/mcs51/reg51.h,
2504 * device/include/mcs51/reg764.h,
2505 * device/include/mcs51/regc515c.h,
2506 * device/include/mcs51/sab80515.h: and added them here
2508 2005-04-06 Maarten Brock <sourceforge.brock AT dse.nl>
2510 * device/include/stdarg.h: changed SDCC specific keywords to double
2512 * device/include/stdint.h: changed intptr_t and uintptr_t for others than
2514 * device/include/hc08/mc68hc908gp32.h,
2515 * device/include/hc08/mc68hc908jb8.h,
2516 * device/include/hc08/mc68hc908jkjl.h,
2517 * device/include/hc08/mc68hc908qy.h: fixed comments
2518 * device/include/mcs51/README: updated
2519 * device/include/mcs51/c8051f120.h: added PINRSF
2520 * device/lib/pic16/libc/stdlib/crc16.c: fixed comments
2521 * src/pic16/pcode.c: MSVC6 doesn't accept declaring new variables
2522 amidst code. Also inline is not supported.
2524 2005-04-06 Raphael Neider <rneider AT web.de>
2526 * src/pic16/pcode.c (pic16_pCodeReplace): also update pcflow->end
2527 * (createDefmap): fixed CALLs to depend on FSR1 and RETLW to restore
2528 callers stack/frame pointers
2530 2005-04-06 Vangelis Rokas <vrokas AT users.sourceforge.net>
2532 * device/include/pic16/usart.h: added, missing in previous commit,
2533 * device/include/pic16/adc.h: fixed typo,
2534 * device/lib/pic16/libc/utils/cvtdec.S: added missing in previous
2536 * device/lib/pic16/libc/stdlib/g_ftoa.S: modified to include
2538 * device/lib/pic16/libc/stdio/streams.c: leave stdin, stdout
2539 uninitialized because a bug appears with gplink
2540 * device/lib/pic16/{some makefiles}: moved $(CSTD) from CFLAGS to
2541 COMPILE_FLAGS and added CPPFLAGS with -nostdinc because sdcpp
2542 complains for unrecognised option
2544 2005-04-05 Raphael Neider <rneider AT web.de>
2546 * src/pic16/gen.c (pic16_popCopyReg): made copying work for extended
2547 structs as well (using memcpy)
2548 * (genFunction): fixed comparison, used pCodeOpLabel to reduce warning
2549 on ISRs (GOTO has no label)
2550 * src/pic16/device.h: added OF_OPTIMIZE_DF
2551 * src/pic16/main.c: added compiler switch --optimize-df to enable the
2552 new data flow analysis/optimization
2553 * src/pic16/pcode.c: added (prototypes for and implementation of)
2554 dataflow analysis functions, fixed pCodeInstructions' inCond and
2555 outCond values, made RCALL a branch instruction
2556 * (pic16_unlinkpCode): keep C line if possible
2557 * (pic16_pCodeUnlink): removed cast on left side of assignment, have
2558 C line moved if possible
2559 * (pic16_getRegFrompCodeOp): NEW, improved version of...
2560 * (pic16_getRegFromInstruction,pic16_getRegFromInstruction2): changed
2561 to use new pic16_getRegFrompCodeOp (works for more SFRs)
2562 * (pic16_BuildFlow): fixed skip instructions with label (did not start
2564 * (pic16_getJumptabpCode): NEW, needed in...
2565 * (LinkFlow): fixed handling of jumptables, calls and conditional
2567 * (pic16_InsertCommentAfter): NEW
2568 * (pic16_pCodeReplace): made verbose and flow preserving
2569 * (AnalyzeFlow): added call to data flow analysis
2570 * src/pic16/pcode.h: added defmaps to pCodeFlow struct
2571 * src/pic16/pcodeflow.h: added PCC_STATUS to mean all STATUS bits
2572 * src/pic16/ralloc.c (packRegsForAssign): added return 1 in the end
2574 2005-04-03 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
2576 * src/SDCCast.c (decorateType): fixed bug #1105626
2578 2005-04-02 Vangelis Rokas <vrokas AT users.sourceforge.net>
2580 * device/include/asm/pic16/features.h,
2581 * pic18f*.h headers,
2582 * device/include/pic16/adc.h,
2583 * device/include/pic16/delay.h,
2584 * device/include/pic16/i2c.h,
2585 * device/include/pic16/malloc.h,
2586 * device/include/pic16/stdio.h,
2587 * device/include/pic16/stdlib.h,
2588 * device/include/pic16/string.h,
2589 * device/lib/pic16/libc/stdio/printf_tiny.c,
2590 * device/lib/pic16/libc/stdio/printf_small.c,
2591 * device/lib/pic16/libc/stdio/strmgpsim.c,
2592 * device/lib/pic16/libc/stdio/strmmssp.c,
2593 * device/lib/pic16/libc/stdio/strmusart.c,
2594 * device/lib/pic16/libc/stdio/vfprintf.c,
2595 * device/lib/pic16/libc/stdlib/ltoa.c,
2596 * device/lib/pic16/libc/stdlib/putchar.c,
2597 * device/lib/pic16/libc/stdlib/x_ftoa.c,
2598 * device/lib/pic16/libc/stdlib/memchrpgm.c,
2599 * device/lib/pic16/libc/stdlib/memchrram.c,
2600 * device/lib/pic16/libc/stdlib/memcpypgm2ram.c,
2601 * device/lib/pic16/libc/stdlib/memcpyram2ram.c,
2602 * device/lib/pic16/libio/adc/adcbusy.c,
2603 * device/lib/pic16/libio/adc/adcread.c,
2604 * device/lib/pic16/libio/adc/adcsetch.c,
2605 * device/lib/pic16/libio/usart/ubaud.c,
2606 * device/lib/pic16/libio/usart/ubusy.c,
2607 * device/lib/pic16/libio/usart/udrdy.c,
2608 * device/lib/pic16/libio/usart/uopen.c,
2609 * device/lib/pic16/libio/usart/uputc.c,
2610 * device/lib/pic16/libsdcc/gptr/gptrget1.c,
2611 * device/lib/pic16/libsdcc/gptr/gptrget2.c,
2612 * device/lib/pic16/libsdcc/gptr/gptrget3.c,
2613 * device/lib/pic16/libsdcc/gptr/gptrget4.c,
2614 * device/lib/pic16/libsdcc/gptr/gptrput1.c,
2615 * device/lib/pic16/libsdcc/gptr/gptrput2.c,
2616 * device/lib/pic16/libsdcc/gptr/gptrput3.c,
2617 * device/lib/pic16/libsdcc/gptr/gptrput4.c: modified all SDCC
2618 specific keywords to double underlined form,
2619 * device/lib/pic16/libc/Makefile.rules,
2620 * device/lib/pic16/libsdcc/Makefile.rules,
2621 * device/lib/pic16/libm/Makefile,
2622 * device/lib/pic16/libio/Makefile.rules: added CSTD macro in CFLAGS
2623 to compile with C standard set in Makefile.common
2624 * device/lib/pic16/libc/stdlib/Makefile: added new C sources
2625 rand.c and crc.c in compilation process,
2626 * device/lib/pic16/libsdcc/int/divuint.c,
2627 * device/lib/pic16/libsdcc/long/divulong.c: changed declaration of
2628 `c' from signed to unsigned,
2629 * device/lib/pic16/startup/crt0.c,
2630 * device/lib/pic16/startup/crt0i.c,
2631 * device/lib/pic16/startup/crt0iz.c: adopted to all SDCC specific
2632 keywords to double underlined form, bug fixes in _do_cinit function
2633 which prevented the correct initialization of the .idata segment,
2634 * src/pic16/pcoderegs.c (insideLRBlock): fixed a bug that caused the
2635 core to enter a infinite loop
2636 * device/lib/pic16/libc/stdlib/rand.c, crc.c: new files
2638 2005-04-02 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
2640 * src/SDCCicode.c (getArraySizePtr): fixed bug #1122171
2642 2005-04-01 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
2644 * device/include/Makefile.in: add support for hc08 subdirectory
2645 * device/include/hc08/: new subdirectory
2646 * device/include/hc08/mc68hc908jkjl.h: new header contributed by
2647 Lucas Loizaga, thanks!
2648 * device/include/hc08/mc68hc908qy.h,
2649 * device/include/hc08/mc68hc908gp32.h,
2650 * device/include/hc08/mc68hc908jb8.h: moved hc08 register defs to
2651 their own directory. Changed internal macro names to use the compiler
2652 reserved namespace. Changed SDCC specific keywords to double
2654 * device/include/math.h,
2655 * device/include/malloc.h,
2656 * device/include/stdarg.h,
2657 * device/include/stdbool.h
2658 * device/include/string.h,
2659 * device/include/tinibios.h,
2660 * device/include/ds400rom.h,
2661 * device/include/8051.h,
2662 * device/include/8052.h,
2663 * device/include/80c51xa.h,
2664 * device/include/at89c55.h,
2665 * device/include/at89S8252.h,
2666 * device/include/at89x51.h,
2667 * device/include/at89x52.h,
2668 * device/include/ds80c390.h,
2669 * device/include/reg764.h,
2670 * device/include/regc515c.h,
2671 * device/include/sab80515.h,
2672 * device/include/mcs51/c8051f000.h,
2673 * device/include/mcs51/c8051f018.h,
2674 * device/include/mcs51/c8051f020.h,
2675 * device/include/mcs51/c8051f040.h,
2676 * device/include/mcs51/c8051f060.h,
2677 * device/include/mcs51/c8051f120.h,
2678 * device/include/mcs51/c8051f300.h,
2679 * device/include/mcs51/c8051f310.h,
2680 * device/include/mcs51/c8051f320.h,
2681 * device/include/mcs51/c8051f330.h,
2682 * device/include/mcs51/c8051f350.h,
2683 * device/include/z180.h: Changed SDCC specific keywords to double
2686 2005-03-31 Vangelis Rokas <vrokas AT users.sourceforge.net>
2688 * src/pic16/device.c (Pics16[]): added devices 18F2550, 18F4331,
2690 * (pic16_assignConfigWordValue): disable testing of configuration
2691 register value with config mask,
2692 * src/pic16/gen.c (pic16_testStackOverflow): prefix stack test
2693 function with port->fun_prefix,
2694 * (genFunction): when generating a naked interrupt function never
2695 create an absolute segment placed in interrupt vector address, place
2696 the actual interrupt function at IVA instead, when an interrupt
2697 function is generated with unspecified interrupt then do not create
2698 the absolute section,
2699 * (genGenPointerGet, genGenPointerSet, genPackBits): replace all
2700 code for generating a call to generic pointer get/put function with
2701 a call to function pic16_callGenericPointer(),
2702 * src/pic16/genutils.c (pic16_callGenericPointerRW): NEW, generates
2703 the call to the generic pointer get/put functions with prefixing the
2704 function name with port->fun_prefix,
2705 * src/pic16/glue.c (pic16glue): ifdef-out test of OF_LR_SUPPORT,
2706 * src/pic16/main.c (_process_pragma): prefix function with
2708 * (_pic16_finaliseOptions): define macro __18Fxxxx macro when
2709 calling assembler, old 18Fxxxx macro is deprecated,
2710 * src/pic16/pcode.c (unlinkpCodeFromBranch): added PC_INLINE and
2711 PC_ASMDIR in while condition,
2712 * (findInstruction): add PC_ASMDIR in while condition,
2713 * (buildCallTree): prefix main with port->fun_prefix,
2714 * (pic16_pCode2str): fixed bug that didn't emit the memory access
2715 identifier for variable with banked access in instructions BTFSS,
2716 BTFSC, BCF, BSF, BTG
2717 * (AnalyzeFlow): moved call to OptimizepCode to pic16_AnalyzeBanking,
2718 * src/pic16/pcodepeep.c (pCodeOpCompare): increase size of b to 1024,
2719 * src/pic16/pcoderegs.c (pic16_pCodeRegoptimizeRegUsage): don't
2720 perform optimization when enviroment variable NO_REG_OPT is set,
2721 * (insideLRBlock): NEW, return 1 if register is inside an
2722 INF_LOCALREGS block,
2723 * (RemoveRegFromLRBlock): remove a register that is completely
2724 eliminated by register optimization, but it is still left in local
2725 register store/restore in/from stack block,
2726 * (Remove2pcodes): after removing register, check to see if it
2727 should be removed from local register store/restore in/from stack
2729 * src/pic16/ralloc.c (pic16_decodeOp): added decode for
2730 DUMMY_READ_VOLATILE,
2732 * device/include/pic16/adc.h: minor prototype modifications and
2734 * device/include/pic16/malloc.h: added GPL notice various
2736 * device/include/pic16/stdint.h: NEW, standard header for ints
2737 * device/include/pic16/delay.h: NEW, header for delay functions,
2738 delay10tcy, delay100tcy, delay1ktcy, delay10ktcy, delay100ktcy,
2740 * device/include/pic16/signal.h: NEW, header providing helper macros
2741 for implementing signal handlers,
2742 * device/include/pic16/stdio.h: added prototypes for functions,
2743 printf, vprintf, sprintf, vsprintf, fprintf, vfprintf. Added
2744 prototypes for stdin and stdout, added macro PUTCHAR to
2745 automatically implement putchar function prototype,
2746 * device/include/pic16/usart.h: modified and updated USART library,
2747 * device/lib/pic16/libio/adc/,
2748 * device/lib/pic16/libio/i2c: some modifications to improve library
2750 * device/lib/pic16/libc/stdio/: modifications for the new printf*
2751 family of functions,
2752 * device/lib/pic16/libc/stdlib/: various modifications in the malloc
2753 family of functions and other sources,
2754 * device/lib/pic16/libio/usart/: NEW, c sources for the usart module
2755 of the PIC18Fxx[28] devices,
2756 * device/lib/pic16/libc/delay/: NEW, c sources for the delay functions,
2757 * device/lib/pic16/libc/utils/: minor modifications in the .S sources,
2758 * device/lib/pic16/startup/{crt0i.c, crt0iz.c}: redesign of the
2759 _do_cinit function, because the previous failed when local variables
2760 where not placed in the same memory bank,
2761 * device/lib/pic16/libsdcc/char/: various modifications to improve
2762 library performance,
2763 * doc/sdccman.lyx: some reorganization of the PIC16 part, added many
2764 information on the new functions of the c library and more...
2766 2005-03-28 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
2768 * src/SDCCBBlock.c (iCodeBreakDown): fixed bug #1170212
2770 2005-03-26 Raphael Neider <rneider AT web.de>
2772 * src/pic16/gen.c (genSkipc): fixed semantics (execute branch
2773 if condition == CARRY)
2774 * (genCmp): adapted to new genSkipc semantics
2775 * src/pic16/genutils.c (pic6_genCmp_special): removed side effect
2776 on rIfx (genCmp was broken)
2778 2005-03-26 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
2780 * src/SDCCmain.c (setDefaultOptions, optionsTable[], parseCmdLine),
2781 * src/z80/main.c (_keywords[]),
2782 * src/SDCCglobal.h (struct options),
2784 * src/SDCC.lex (isTargetKeyword, doPragma, pragma_tbl[]): new pragmas
2785 to enable/disable SDCC and C99 extensions/keywords (std_c89, std_sdcc89,
2786 std_c99, std_sdcc99). Also, equivalent command line options (--std-c89,
2787 --std-sdcc89, --std-c99, --std-sdcc99). SDCC specific keywords are
2788 always available in leading double underscore form. The C99 support is
2789 mostly missing, but it's a start.
2790 * support/regression/tests/bug-227710.c: fixed nonconforming use of
2791 reserved identifier "__data".
2793 2005-03-24 Maarten Brock <sourceforge.brock AT dse.nl>
2795 * src/mcs51/peeph.def: fixed bug 1170013
2797 2005-03-22 Maarten Brock <sourceforge.brock AT dse.nl>
2799 * device/include/mcs51reg.h: fixed bug 842007
2801 2005-03-21 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
2803 * src/SDCCcflow.c (dfNumCompare): committed the wrong version of this
2806 2005-03-20 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
2808 * src/port.h (struct PORT),
2809 * src/avr/ralloc.c (avr_assignRegisters),
2811 * src/ds390/ralloc.c (ds390_assignRegisters),
2813 * src/hc08/ralloc.c (hc08_assignRegisters),
2815 * src/mcs51/ralloc.c (mcs51_assignRegisters),
2817 * src/pic/ralloc.c (pic14_assignRegisters),
2819 * src/pic16/ralloc.c (pic16_assignRegisters),
2821 * src/xa51/ralloc.c (xa51_assignRegisters),
2823 * src/z80/ralloc.c (z80_assignRegisters),
2825 * src/SDCCopt.c (eBBlockFromiCode, replaceRegEqv, killDeadCode),
2826 * src/SDCCcse.c (ifxOptimize, cseBBlock, cseAllBlocks),
2828 * src/SDCCdflow.c (computeDataFlow),
2830 * src/SDCCloop.c (addDefInExprs, loopInvariants, loopOptimizations),
2832 * src/SDCCcflow.c (*),
2834 * src/SDCCBBlock.c (iCodeBreakDown, dumpEbbsToFileExt, eBBWithEntryLabel),
2835 * src/SDCCBBlock.h (struct ebbIndex): new struct that keeps two copies
2836 of the eBBlock list, sorted by both bbnum and dfnum. (fixes bug with
2837 immedDom() returning wrong block; probably fixes bug #1160833)
2839 2005-03-20 Borut Razem <borut.razem AT siol.net>
2841 * support/scripts/inc2h.pl: WIN32 port
2843 2005-03-19 Maarten Brock <sourceforge.brock AT dse.nl>
2845 * device/lib/makefile.in: added abs.c and labs.c
2847 2005-03-17 Maarten Brock <sourceforge.brock AT dse.nl>
2849 * device/include/stdint.h: added
2850 * device/lib/abs.c: added
2851 * device/lib/labs.c: added
2852 * device/include/stdlib.h: added abs() and labs() prototypes
2853 * device/lib/libsdcc.lib: added abs and labs
2854 * device/include/float.h,
2855 * device/lib/_fsmul.c,
2856 * device/lib/printf_fast.c,
2857 * device/lib/printf_tiny.c: updated comments
2859 2005-03-16 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
2861 * src/SDCCicode.c (geniCodeSwitch, geniCodeJumpTable): fixed
2864 2005-03-16 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
2866 * src/SDCCcse.c (cseBBlock): retain assignment to self when volatile
2867 * src/SDCCast.c (isLoopCountable): fixed bug #1161985
2869 2005-03-15 Maarten Brock <sourceforge.brock AT dse.nl>
2871 * device/lib/printf_large.c: removed inline assembly for portability and
2872 readability. Use printf_fast if speed or size are more important.
2873 * src/pic16/gen.c: removed conditions around use of DEBUGpc
2874 * src/pic16/genutils.h: added define for DEBUGpc for MSVC
2876 2005-03-15 Vangelis Rokas <vrokas AT users.sourceforge.net>
2878 * src/pic16/genutils.c (pic16_genCmp_special): initialized offs to
2879 prevent compiler warning
2881 2005-03-14 Vangelis Rokas <vrokas AT users.sourceforge.net>
2883 * device/lib/pic16/startup/crt0i.c (_cinit): local variables where
2884 moved to level 0 and declared as static. Also they are explicit
2885 placed in access bank. This was necessery because some times they
2886 might cross memory bank boundaries. crt0iz.c is *NOT* updated!!!
2887 * src/pic16/device.h: added flag OPTIMIZE_CMP to enable some compare
2888 optimizations. Currently only compare to unsigned char is implemented,
2889 * src/pic16/gen.c: added fReturnIdx array,
2890 * (struct resolvedIfx) is moved to gen.h and made public,
2891 * (struct _G): added sregsAlloc and sregsAllocSet fields,
2892 * (aopForSym): added an optimization to directly store in stack of
2893 the operand of a SEND iCode,
2894 * (pic16_aopOp): don't return return registers as strings (AOP_STR)
2895 but as registers instead (AOP_REG) using the fReturnIdx array,
2896 * (pic16_freeAsmop): remove the freed register from the
2897 _G.sregsAlloc field,
2898 * (pic16_aopGet): in case AOP_STR, the compare to 'a' is changed to
2899 a compare of 'WREG',
2900 * (pic16_popGetTempRegCond): changed function prototype, now
2901 function takes also a bitVector argument v which holds the current
2902 set of registers that are allocated for stack access by aopForSym,
2903 registers allocated in aopForSym for accessing stack symbols are not
2904 any more part of the functions usedRegs field,
2905 * (genCall): some times aopOp is called for a stack variable to be
2906 send, aopForSym might perform the push, if this is true make sure
2907 that genCall doesn't push the variable twice by testing _G.resDirect,
2908 * (genFunction): changed testing for unspecified interrupt number
2909 from 256 to INTNO_UNSPEC,
2910 * modified selection scheme of frame pointer generation. Previously
2911 if function did use local registers a frame pointer was generated,
2912 now a frame pointer is generated only if function has arguments
2913 (that need PLUSW2 register access), or has stack arguments, or the
2914 compiler is not instructed to omit the frame pointer,
2915 * (genEndFunction): before restoring local registers that were saved
2916 in the function preamble, also restore the registers that *might*
2917 have been allocated for stack access,
2918 * (genRet): removed some old comments,
2919 * (genCmp, the active (RN's) version): added a call to the
2920 pic16_genCmp_special function to perform the compare with a more
2921 robust and optimized way,
2922 * (genInline): a feature has been added in inline code generation,
2923 which allows a wildcard variable substitution when writing inline
2924 assembly. Code is incomplete and experimental therefore undocumented,
2925 * (genCast): changed order of aopOp for result and right to allow
2926 aopForSym to directly load the result if possible,
2927 * src/pic16/genutils.c (selectCompareOp, pic16_genCmp_special): NEW,
2928 perform an optimized compare on some selected special occasions,
2929 * src/pic16/genutils.h: declaration of resolvedIfx structure from gen.c,
2930 * src/pic16/glue.c (pic16createInterrupVect): make sure we never
2931 generate an IVT any more,
2932 * src/pic16/main.c (pic16_optionsTable): added command line option
2934 * (_pic16_initPaths): when calling C preprocessor define pic18fXXXX
2935 macro too, when calling assembler define pic18fXXXX *and* __18Fxxxx
2937 * src/pic16/NOTES: Raphael Neider added in list of active developers
2938 * src/pic16/pcode.c (OPT_TYPE_STR): added strings jumptable_begin and
2939 jumptable_end to prevent bug #,
2940 * (pic16_pciADDWFC, ADDFWC, COMF, CLRF): added some missing flags in
2941 inCond and outCond fields,
2942 * src/pic16/pcoderegs.c (pCodeOptime2pCodes): add a fix for bug #,
2943 * src/pic16/ralloc.c (serialRegAssign): explicit set willCS to 0 to
2944 turn off register spilling,
2945 * (packRegsForOneUse): synced with other ports' versions although it
2946 is not used currently,
2947 * (pic16_packRegisters): added an optimization while reading
2948 structure bitfields, some registers may be saved (malloc code is
2949 decreased by 80 bytes)
2951 2005-03-12 Vangelis Rokas <vrokas AT users.sourceforge.net>
2953 * src/SDCCcse.c (cseBBlock): inside 'do operand lookup' loop test if
2954 left is a bitfield, if yes, then don't optimize assignment. Perhaps
2955 this can be optimized more?
2957 2005-03-10 Raphael Neider <rneider AT web.de>
2959 * src/pic16/gen.c (pic16_loadFSR0, genPackBits, genUnpackBits,
2960 genNearPointerGet): (hopefully) fixed access to bitfields via
2961 pointers (p->bitN = x; and x = p->bitN; failed)
2963 2005-03-09 Paul Stoffregen <paul AT pjrc.com>
2965 * device/lib/printf_fast.c: fix leading zero format, eg "%02d"
2967 2005-03-09 Raphael Neider <rneider AT web.de>
2969 * src/SDCCopt.c (killDeadCode): fixed bug #1156016
2971 2005-03-06 Maarten Brock <sourceforge.brock AT dse.nl>
2973 * src/SDCCicode.h: moved CRITICAL and ENDCRITICAL from SKIP_IC2 to SKIP_IC
2974 * src/mcs51/ralloc.c (willCauseSpill): added check for REG_BIT type,
2975 (regTypeNum): set REG_BIT type if necessary
2976 * src/mcs51/ralloc.h: added define REG_BIT, used to fix bug 1144613
2977 * support/regression/tests/critical.c: check bug 1144613
2979 2005-03-02 Raphael Neider <rneider AT web.de>
2981 * src/pic16/gen.c (genRightShiftLiteral): fixed bug #1154256
2983 2005-02-26 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
2985 * src/avr/ralloc.c (serialRegAssign),
2986 * src/ds390/ralloc.c (serialRegAssign),
2987 * src/hc08/ralloc.c (serialRegAssign),
2988 * src/mcs51/ralloc.c (serialRegAssign),
2989 * src/pic/ralloc.c (serialRegAssign),
2990 * src/pic16/ralloc.c (serialRegAssign),
2991 * src/xa51/ralloc.c (serialRegAssign),
2992 * src/z80/ralloc.c (serialRegAssign): fixed bug #1105154
2994 2005-02-22 Maarten Brock <sourceforge.brock AT dse.nl>
2996 * src/SDCCast.c (decorateType): fixed bug 1124787
2998 2005-02-20 Hubert Sack <sack AT digiplan.de>
2999 committed by Frieder Ferlemann <Frieder.Ferlemann AT web.de>
3001 * src/mcs51/peeph.def: added peepholes 3.h-k and 132.a-f from
3004 2005-02-20 Frieder Ferlemann <Frieder.Ferlemann AT web.de>
3006 * src/SDCCpeeph.def: new keyword "labelRefCountChange" which allows peepholes
3007 to keep the correct label reference count when adding/removing references
3008 to labels. A peephole file using this is appended to patch #1144962.
3010 2005-02-14 Raphael Neider <rneider AT web.de>
3012 * device/lib/pic16/libc/string/memccpy.c: changed 3rd argument to char
3013 * src/SDCC.lex (process_pragma): fixed to make disable_warning work for PIC16
3014 * src/pic16/gen.c (aopForSym, calls to pic16_aopOp): prevent unneccessary
3015 retrievals of result operand's value on assignment
3017 2005-02-13 Vangelis Rokas <vrokas AT otenet.gr>
3019 * device/include/pic16/string.h: modified prototype for memccpy()
3020 to memccpy(void *, void *, char, size_t)
3021 * src/pic16/gen.c (genFunction, genEndFunction): reenable if-case to
3022 check whether to omit frame pointer or not,
3023 * (genInline): convert all occurences of "\n" to LF in inline
3024 assembler blocks, this helps formatting the inline text,
3025 * (pic16_loadFSR0): modified prototype,
3026 * (genNearPointerGet, genNearPointerSet): reorganization of code,
3027 removed some 8051 legacy code,
3028 * (genPackBits): enabled handling bitfields exceeding one byte in size,
3029 * src/pic16/ralloc.c (pic16_assignRegisters): clear dynrIdx variable
3030 before allocating temporary registers in functions,
3032 2005-02-11 Maarten Brock <sourceforge.brock AT dse.nl>
3034 * support/regression/tests/bitvars.c: corrected the "fix"
3036 2005-02-10 Maarten Brock <sourceforge.brock AT dse.nl>
3038 * support/regression/tests/bitvars.c,
3039 * support/regression/tests/bitwise.c,
3040 * support/regression/tests/rotate.c: "fixed" problems on Alpha
3042 2005-02-10 Raphael Neider <rneider AT web.de>
3044 * src/pic16/pcode.c (assignToSameBank) : fixed cast to pointer of
3045 different size for Alpha
3046 * src/pic16/gen.c (genCmpEq) : improved compare with 0
3048 2005-02-09 Raphael Neider <rneider AT web.de>
3050 * src/SDCC.lex(doPragma) : save and restore warning options as well
3051 (also added new stack plus clone- and copyAndFreeSDCCERRG())
3052 * have #pragma less_pedantic set the errorlevel to WARNING
3054 * (cloneOptimize) : fixed wrong malloc's size
3055 * support/Util/SDCCerr.[ch] : made SDCCERRG globally accessible to
3056 facilitate correct handling of #pragma (save|restore)
3058 2005-02-09 Maarten Brock <sourceforge.brock AT dse.nl>
3060 * src/mcs51/gen.c: removed non-standard C nameless struct/union
3062 2005-02-04 Slade Rich <slade_rich AT users.sourceforge.net>
3064 * src/pic/gen.c : Fix for bugs #1080519 & #1115662.
3066 2005-02-03 Maarten Brock <sourceforge.brock AT dse.nl>
3068 * device/include/mcs51/c8051f120.h: added declarations for sbit port 2,3&4
3070 2005-02-02 Raphael Neider <rneider AT web.de>
3072 * src/SDCCast.c (processParms): disabled W_NONRENT_ARGS for pic16 port
3073 * src/pic16/gen.c (aopForSym): reenabled special case for function pointers
3074 * (pic16_storeForReturn): fixed to allow returning function pointers
3075 * (genPackBits): improved accessing full bytes, implemented for GPOINTERs
3076 * device/include/pic16/{stddef.h,stdbool.h}: added
3078 2005-02-02 Maarten Brock <sourceforge.brock AT dse.nl>
3080 * device/include/mcs51/c8051f040.h: added define CPT2_PAGE
3082 2005-02-01 Slade Rich <slade_rich AT users.sourceforge.net>
3084 * src/pic16/pic16.dsp : Added file graph.c to make it compile under windows
3085 * src/pic16/Makefile.bcc : Do not use this file but added file graph.c as it
3086 appeared to be required
3088 2005-01-31 Borut Razem <borut.razem AT siol.net>
3090 * support/scripts/sdcc.nsi: added include/asm/ds390, include/asm/mcs51,
3091 include/mcs51 and include/z80 directories to the package
3093 2005-01-26 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
3095 * src/hc08/gen.c (genFunction): fixed bug #1112752
3097 2005-01-30 Frieder Ferlemann <Frieder.Ferlemann AT web.de>
3099 * src/mcs51/peeph.def: adapted peephole 258.x to changed gen.c (genAnd)
3101 2005-01-29 Frieder Ferlemann <Frieder.Ferlemann AT web.de>
3103 * src/mcs51/gen.c (genAnd): accessing LSB/MSB by rotating acc
3105 2005-01-29 Maarten Brock <sourceforge.brock AT dse.nl>
3107 * device/include/Makefile.in: create/copy mcs51 and z80 include subdirs
3109 2005-01-27 Maarten Brock <sourceforge.brock AT dse.nl>
3111 * device/include/c8051fxxx.h: removed these 6 files
3112 * device/include/mcs51/c8051fxxx.h: added these 11 new files
3114 2005-01-26 Raphael Neider <rneider AT web.de>
3116 * src/pic16/gen.c (genAssign): fixed assignment from longs
3117 in codespace (were cut to three bytes)
3118 * (genDummyRead): implemented (except for CODESPACE...),
3120 * src/pic16/glue.c (emitStatistics): beautified
3121 * device/lib/pic16/libm/Makefile: added include path
3123 2005-01-26 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
3125 * src/z80/gen.c (aopPut): fixed bug #1103902
3127 2005-01-25 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
3129 * device/lib/expf.c: fixed bug #1095792
3131 2005-01-24 Vangelis Rokas <vrokas AT otenet.gr>
3133 * device/lib/pic16/libm: added Math library sources
3135 2005-01-24 Raphael Neider <rneider AT web.de>
3137 * src/pic16/pcode.h: added second memory operand to pCodeOpReg
3138 to enable upcast to pCodeOpReg2 (there is no type tag to
3139 differenciate the two and pic16_popGet2p cast into PCOR2)
3140 * src/pic16/main.c (_process_pragma): fixed another malloc bug
3141 (sizeof(sectNames) changed to sizeof(sectName))
3142 Both patches fix segfaults under MinGW.
3144 2005-01-23 Raphael Neider <rneider AT web.de>
3146 * src/pic16/{device.c,pcode.c}: s/free/Safe_free/g for
3147 Safe_[mc]?alloc()'ed variables
3148 * src/pic16/gen.c (pic16_aopOp,pic16_popGet): added handling
3149 of (byte sized) temporaries (assign them to WREG for now)
3150 * src/pic16/main.c (_process_pragma): fixed nasty malloc bug
3151 (used sizeof(set *sectSyms) instead of sizeof(struct sectSym)),
3152 this might fix SIGSEGVs on MinGW...
3153 * src/SDCCopt.c (killDeadCode): restored original behaviour
3154 (volatile operands might get thrown away though)
3156 2005-01-23 Vangelis Rokas <vrokas AT otenet.gr>
3158 * src/pic16/gen.c: fixed bug #1106975,
3159 * src/pic16/gen.c: fixed possible bug #1102572, now during TOS
3160 pointer update, INTCON is saved, global interrupts are disabled and
3161 restored after updateing TOS.
3162 * src/SDCC.y, src/SDCC.lex, src/SDCCsymt.c, src/SDCCsymt.h:
3163 * added function attribute 'shadowregs' to take advantage of shadow
3165 * added function attribute 'wparam' as an alternative to the wparam
3167 * support/Utils/SDCCerr.[ch]: added error E_SHADOWREGS_NO_ISR when
3168 user declares a non-ISR function as 'shadowregs',
3169 * doc/sdccman.lyx: updated to reflect recent changes of pic16 port
3171 2005-01-22 Vangelis Rokas <vrokas AT otenet.gr>
3173 * .version: bumped version number to 2.4.8
3174 * device/lib/pic16/pics.all: list of PIC18F devices supported by
3176 * device/lib/pic16/libio/i2c/: I2C module support library,
3177 * device/include/pic16/i2c.h: I2C support library header,
3178 * device/lib/pic16/libc/stdio/: standard IO support sources,
3179 * (printf_small.c): printf_small() source, supports float print,
3180 * (printf_tiny.c): printf_tiny() source, does not support floats,
3181 * device/lib/pic16/Makefile.common.in: added OPT_FLAGS macro to
3182 enable global optimizations for entire library source, other
3183 Makefiles in the source tree are also modified to reflect this,
3184 * device/lib/pic16/libc/stdlib/putchar.c (putchar): dummy putchar()
3186 * doc/sdccman.lyx: updated to reflect new changes,
3187 * src/pic16/gen.c (aopForSym): don't handle sym->iaccess in
3188 sym->onStack if-case,
3189 * src/pic16/main.c (_pic16_keywords): commented out keywords bit,
3190 sbit, idata, _idata, xdata, _xdata,
3191 * added pragma library, to link an external library, (see doc),
3192 * removed command line options, --pomit-config-words, --pomit-ivt,
3193 --pleave-reset-vector,
3194 * (pic16_finaliseOptions): when define macro SDCC_MODEL_{SMALL/LARGE}
3195 when calling assembler to reflect memory model used, also define
3196 macro STACK_MODEL_{SMALL/LARGE} when compiling and assembling to
3197 reflect stack model used,
3198 * src/pic16/ralloc.c (pic16_allocDirReg): when operand is allocated
3199 on stack return NULL,
3201 2005-01-22 Daniel Winkler <post AT danielwinkler.de>
3203 * src/SDCCopt.c (killDeadCode): do not throw iCodes away if one
3204 of the operands is volatile. Fixes #1020220
3206 2005-01-22 Daniel Winkler <post AT danielwinkler.de>
3208 * src/pic16/pcoderegs.c (pCodeOptime2pCodes): reenabled optimization
3209 * (OptimizeRegUsage): make sure that there is really no other flow where
3210 the first pCode is used
3212 2005-01-22 Raphael Neider <rneider AT web.de>
3214 * src/pic16/pcoderegs.c (pCodeOptime2pCodes): disabled optimization
3215 to fix #1106967 (pCode->seq are not set up correctly)
3217 2005-01-22 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
3219 * src/SDCCglue.c (glue): make sure code area is declared before the
3220 static initialization area.
3222 2005-01-21 Raphael Neider <rneider AT web.de>
3224 * device/lib/Makefile.in: fixed test for pic16 install dir
3225 * device/lib/pic16/*/Makefile*: modified compile flags to enable
3227 * doc/sdccman.lyx: updated banksel optimization, removed --flr-support and
3228 added --optimize-goto compiler switch and pragma wparam documentation
3229 * src/pic16/pcode.c (pic16_OptimizeBanksel): removed statistics dump
3230 * src/pic16/pcodepeep.c (pic16_pCodeOpCopy): fixed copying of WREG, PRODL
3231 and PRODH closing bug #1071770 (peephole optimizer)
3233 2005-01-19 Raphael Neider <rneider AT web.de>
3235 * src/SDCCglobl.h: ensure that PATH_MAX >= 2048 to guarantee
3236 cmdLine buffers (used when calling sdcpp...) are large enough
3237 (MAX_PATH=256 truncates arguments leading to system halts when
3239 * src/pic16/gen.c (pic16_sameRegs): relaxed size criterion
3240 * (genUminus): rewritten to for efficiency
3241 * (genNearPointer[GS]et): enforce reloading of FSR0 (was still
3242 used uninitialized in some cases)
3243 * (genCast): upcasting a 16bit int to a 24bit GPOINTER may not
3244 copy the third byte from the int -- now assumes 0x80 (data memory)
3245 * src/pic16/genarith.c (pic16_genPlus): fixed bug when swapping
3246 operands (genAddLit expects the iCode's operands to swapped as
3247 well), fixed leftover bytes (crashed for short left operands)
3248 * (pic16_genMinusDec): performance improvements, removed false
3250 * (pic16_genMinus): fixed to cope with differently sized operands
3251 * src/pic16/glue.c (pic16_glue): added new banksel optimization
3253 * src/pic16/pcode.c: implemented (first phase of) banksel optimization
3254 * src/pic16/graph.[ch]: implementation of directed graphs, used by
3255 new banksel optimization