- New libcall interface makes all backends generate much better code, when doing a library call (e.g. for 64-bit arithmetics or soft-float).
- Supports C99 __func__.
- Fixed some cases where volatile was not respected.
- Fixed compiler crash when main() does not return int in C99 mode.
- Do not perform algebraic optimizations on "pointer - pointer". Makes (char *)p - (char *)0 being treated as integer again.
- Relaxed rules for constant expressions involving conditional expressions. Fixes for example int x = 1<2?3:4 to be accepted as a constant expression.
- Added diagnosis for empty struct/array initializers.
- Fixed possible memory corruption with string constants of exactly 128 bytes length.
- Stricter propagation of constants/VARADRs.
- Do not emit unused local static variables in lower optimization levels as well.
- Fixed problems with (void)((condition) || func()).
- PPC: Fixed output of negative pointer constants on 64 bit hosts.
- 68k: -sc (small code) works again, since switching from PhxAss to vasm.
- 68k: New option -fastcall to pass function arguments in scratch registers.
- 68k: New option -fp2scratch to use fp2 as an additional scratch register.
- 68k: Fixed bug with word/long register size in indexed addressing mode.
- 68k: Conversion of signed char to int, with 16 bit integer setting, fixed.
- 68k: Fixed wrong alignment assumptions on pointer references.
- 68k: Avoid certain addressing modes for soft-float ICs. This caused an index register to be used before it had been restored from the stack.
- 68k: Fixed return register for long double.
- 68k: Fixed incorrect order of restoring pushed registers during a 16 bit to 64 bits integer conversion.
- 68k: Overwriting FP-register in float to unsigned conversion fixed.
- 68k: Fixed bug with -(An)/(An)+ and internal libcalls.
- ColdFire: 64bit add/sub with constants.
- ColdFire: Corrected stack-adjustment for pushflag in bottom of function. In some case the stack was adjusted 4 bytes too far. Crashed on return.
- ColdFire: Fixed bug with storing 64-bit values (stored0d1).
- vclib: Major rework for Atari. Most files are shared between M68k and ColdFire. Also the same headers can be used for 16- and 32-bit backends.
- vclib: libgem with all AES and VDI functions for Atari.
- vclib: Many C99 functions and features added to the 6888x, 68040 and 68060 math libraries.
- vclib: New m060.lib with math functions optimized for the 68060 FPU.
- vclib: Improved pow2() and pow10() for 68060.
- vclib: Fixed sqrt(float), sqrt(double), float to int64 and double to int64 in the softfloat library by using code from John R. Hauser's 2b release.
- vclib: Adapted all math libraries to the new libcall interface.
- vclib: sscanf() tried to read characters from a 0 filehandle in certain situations.
- vclib: Added missing ANSI-C89 functions strcoll() and strxfrm().
- vclib: m13.lib for Amiga Kickstart 1.x systems, using mathffp.library instead of mathieeesingbas.library.
- vclib: Fixed 68060 unsigned 64-bit modulo.
- AmigaOS/68k config files include -hunkdebug, so specifying -g on the commandline is sufficient now for getting line debug info.
- Frontend lowers priority under AmigaOS/MorphOS, so other user processes are no longer affected by the compiler.
Download it here