VBCC 0.9b released (05-Aug-2011)
Date 8-Sep-2011 15:35:22
Topic: Software News
|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).|
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.