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).
http://sun.hasenbraten.de/vbcc/
Changes since last release:
* New: C99 designated struct initializers. * New: C99 initialization of auto variables with non-constant data. * New: Common Atari M68k target for TOS and MiNT, supporting 32 and 16 bit integer. * New: Atari ColdFire support. * New: The compiler for AmigaOS2.x, AmigaOS3.x and MorphOS does automatic stack extension to 64k now. * New: Amiga version string $VER: in binaries. * In a function using VLA variables with multiple exit points the return code could be trashed. * Fixed bug in jump-optimization: threading jumps to jumps could produce a temporarily slightly damaged flowgraph that interferes with other jump optimizations. * Uninitialized variable in for-statement made the for-loop disappear in some environments. * Fixed missing check when moving common ICs to predecessor. For example the optimizer didn't see that a variable, whose address is passed into a subroutine, is modified. * Restoring of registers across function calls was sometimes done too early. * Fixed a bug with function declarations that contain closing parentheses after the parameter list. * Sometimes, mainly under MorphOS 2.x, a duplicate case label warning was erroneously generated, causing bad switch-code. * Changed an internal error to a normal one if jumps to non-existent labels are discovered during optimizing. * Fixed bug with recursive exiting on errors during some cleanup. * Disallow a shortcut between int and float. * Fixed problem with 64-bit library functions and adressing modes. * Fixed internal error with bitfield type checking. * Fixed compiler crash with unsupported gcc attributes. * C99: Fixed warning with union initializers in C99 mode. * C99: Fixed wrong stack calculation for variables declared in a for-statement. * M68k codegen: Fixed bug with missing offset-labels for Coldfire. * M68k codegen: Fixed bug with float constants pushed on stack for Coldfire. * M68k codegen: Fixed lots of illegal ISA-A Coldfire instructions. * M68k codegen: Fixed floating point to unsigned integer conversion. * M68k codegen: Fixed missing saving of FPU regs around long long to float conversion calls. * M68k codegen: Optimize size of floating points constants. * M68k codegen: Sometimes generated FBcc instead of Bcc for 64-bit comparisons, when the function contained FPU code. * M68k 16bit codegen: Fixed internal error when pushing small structs. * M68k 16bit codegen: Do not crash after shift operations. * PPC codegen: Support bitfields with non-standard types (M68k already did that). * i386 codegen: Fixed float-integer conversion. * vprof: Updated our profiler to work with the new (6 years old) mon.out files. * config: Made the default library search path last in the list to allow overriding. * config: The OS4 vclib and newlib config files automatically search for shared objects in SObjs: to link with. * config: OS4 linker script accepts .ctors.* and .dtors.* sections. * Frontend: Fixed -static option, which had no effect on user libraries. * vclib: -stack-check caused a linking error, because vclib was calling the wrong exit function for most targets. * vclib: Moved errno into the startup code for warpos to be compatible to aos68k and improve linking of mixed executables. vlink also got a new option -da to support that. * vclib: setlocale() accepts setting the default "C" locale. All Amiga targets will import the current locale settings from the locale.library when setlocale() is called with locale="". (Patch submitted by Stefan A. Haubenthal.) * vclib: vsnprintf() only used size-1 bytes of the buffer. * vclib: getenv() crashed under Kickstart 1.x. * vclib: Kickstart 1.x compatibility (still uses OS2.x/OS3.x functions when available). Comes with a 1.x compatible startup code and a new config file called kick13. * vclib: Make sure the softfloat versions of log() and log10() divide by zero at runtime to generate a proper infinity or NaN. * vclib: Added missing isnan() and isinf() prototypes in math.h. * vclib: Harry Sintonen fixed a problem with exp() and pow() in the FPSP060 code of m040.lib, which produced wrong results unter MorphOS' FPU emulation. libauto/libraauto (OS4): Included much more libraries and classes to open automatically. * TinyGL support (libGL.a) for MorphOS. * Comes with vasm 1.5b and vlink 0.14 with many more bug fixes and improvements. Refer to the appropriate change list for details.
|