VBCC 0.9b released (05-Aug-2011)

Date 2011/9/8 19:14:19 | 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.

This article comes from The Amigans website

The URL for this story is: