vbcc 0.9d C compiler released

  • 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

Comments

facyw's picture

Interfaces have the codes which are better for the expressions of the local volatile of the optimization from the complier. Compiler once open there will some variables of the best essay writing service have to stop the VBCC software releasing certain assumptions.