|C-Compiler: vbcc 0.9|
vbcc is a C-compiler developed by Volker Barthelmann (compiler-core) and Frank Wille (Amiga specific adaptations). The compiler supports AmigaOS 3/4, MorphOS, PowerUp and WarpOS and corresponds to ISO-C in accordance with ISO/IEC 9899:1989 as well as a subset of the newer standards ISO/IEC 9899:1999 (C99). Changes in version 0.9:
- Using vasm 1.3c and vlink 0.12 with many improvements.
- New: vlink 0.12 has experimental support for dynamic linking. The frontend supports a -static option to force static linking.
- New: -unsigned-char allows a char without qualifier to be treated as unsigned char instead of signed char.
- New: Target "MiNT" (m68k-atarimint), which is a multitasking operating system for Atari computers. The linker was extended to support the MiNT-specific embedded a.out-format in a TOS exexutables, called aoutmint.
- Fixed a bug with using bitfields in operations, which occured with -O2 optimization on big-endian hosts.
- A combination of 64-bit shift and arithmetic-and operations generated illegal code on all targets.
- Fixed bug with expressions of the form (pointer_type) (non_ptr +/- non_ptr) on machines that allow shortcutting conversion from int to pointer types.
- Fixed bug with VLA (variable length array, C99) length 0.
- Fixed illegal optimization of constant indexes in VLAs.
- The volatile keyword was ignored in some situations when using -O2 optimization or higher.
- Fixed some problems with incorrect struct-definitions after parse errors.
- Error and warning messages are redirected to stderr.
- Warning 224 must not appear, when a function returns the difference between two auto-variables.
- Exit with a fatal error when an #include-recursion is detected, which means in this case that the nesting-level is > 1023.
- Fixed __AMIGADATE__, which should add parentheses around the date.
- Fixed wrong line number after an #include directive, when the line ends with CR/LF.
- M68k code generator: Shortcut was erroneously used for (int)=(floatvar)/(floatconst)-(floatconst) converting the last floatconst into integer.
- M68k code generator: __interrupt had a discrepancy between the number of saved and restored registers.
- M68k code generator: Link register A5 got overwritten by local variables when used for a VLA.
- M68k code generator: Used an address register as DBRA counter for a struct-push operation at -O1.
- M68k code generator: For compatibility the __stdargs modifier is supported now, but ignored.
- M68k code generator: Wrong adressing Mode An,<ea> for ADD occured sometimes with -O3 optimization.
- PPC code generator: variables with a natural size of 8 (double precision float) have to be aligned to a 64-bit boundary, as not all PPC CPUs support 32-bit alignment.
- PPC code generator: VLAs didn't work inside of a structure.
- PPC code generator: 64-bit arguments were sometimes unnecessarily "extended" from 32 to 64 bits under PowerOpen-ABI (WarpOS).
- i386 code generator: Fixed some 64-bit integer bugs.
- C16x code generator: Better shift code generation.
- C16x code generator: Fixed bug with save_result and r==tp.
- vclib: Made freopen() depend on fopen() to make sure that the destructor which closes all open files is called.
- vclib m68k: Returned sign of modulo operation was wrong in the cases (+)%(-) and (-)%(-).
- vclib PowerUp: Fixed libpowerup.so, which can be generated by vlink now.
(cg) (Translation: dr)
[News message: 31. Dec. 2008, 15:59] [Comments: 0]
[Send via e-mail] [Print version] [ASCII version]