Atari Stuff‎ > ‎Atari News‎ > ‎

vbcc 0.9a released

posted Oct 21, 2009, 11:11 AM by Troy Cheek   [ updated Oct 21, 2009, 2:27 PM ]
vbcc is a highly optimizing portable and retargetable ISO C compiler. It supports ISO C according to ISO/IEC 9899:1989 and a subset of the new standard ISO/IEC 9899:1999 (C99).  vbcc is both native (TOS and FreeMiNT) and cross (nearly any host) C compiler emerged from Amiga world and successfully tested on some Atari projects as well (most notably my Starstruck demo port :)

Changes since last release:
  • Using vasm 1.4b and vlink 0.12f with many improvements and bug fixes.
  • The compiler itself is for the first time compiled with optimization enabled. So it is a little bit faster and smaller.
  • Included vbccm68ks (16 bit integer) in distribution, which is required for the Atari TOS target.
  • Fixed alignment bug on incomplete structure initialization.
  • Problem with incorrect constant folding during optimization fixed.
  • Fixed bug with conversion into a non-scalar at -O1.
  • -stack-check referenced the obsolete symbol __exit.
  • A problem with a misplaced return-label during flowgraph optimization (-O1 and up) was fixed. The bug showed up in a forever-loop, which was left with return-instructions only, and could result in an infinite loop or a corrupted stack frame.
  • Prevent infinite recursion during program cleanup.
  • The 68k config files aos68k, tos and mint do no longer have to set optimization options. The OPT directive is completely supported by vasmm68k_mot since 1.3d.
  • M68k code generator: Fixed many ColdFire bugs. But the ColdFire support is still far from being perfect.
  • M68k code generator: Fixed "target error: illegal use of registers", which could be caused by case statements, since V0.9, and during jumptable generation.
  • M68k code generator: Generated illegal data constants when -const-in-data and -sd were specified together.
  • M68k code generator: Fixed a crash, which could occur with constant pointers (e.g. *(int *)0x1234=x) in certain situations.
  • M68k code generator: Calling a constant address no longer leads to an internal error.
  • M68k code generator: Fixed a wrong condition code test when converting to smaller integral types.
  • PPC code generator: Using a wrong IC pointer in ALLOCREG/FREEREG caused illegal memory accesses.
  • vclib: strtod() fixed: the endptr (when given) was incorrect.
  • vclib: ctype.h was wrong for all 68k targets (toupper()/tolower() inlines didn't work).
  • vasmm68k: Got a noticeable performance improvement on parsing the input source by a factor between 3 and 30.
  • vasmm68k: M68k cpu settings were lost when assembling a source vbcc generated with -g option.
  • vasmm68k: Wrong M68k optimization of move.w #0,An into suba.w An,An left garbage in the MSW.
  • vlink: Erroneously prefered a symbol from a library over a symbol with the same name from the referencing object module.
  • vlink: Fixed problem with merging common symbols from serveral modules.
  • vlink: Fixed an error when the resulting ELF executable (OS4) only requires a single segment.