| |
|
Summary of changes from 5.54 to 5.57
Summary of changes from 5.54 to 5.55
- Added support for __packed structures and pointers.
- Inline assembler (as per ARM ADS).
- Added Thumb interworking (-APCS /inter).
- int f() { } is now correctly treated as an old-style function - use
int f(void) { } instead.
- Improved error reporting for function arguments.
- C99 pragmas added
- C99 concatenation of wide and normal string literals supported.
- Support for LDRH etc added.
- -Otime and -Ospace now have more effect.
- CSE optimises long long expressions.
- Optimisation of static integer and floating const variables.
- long long shifts by constant much improved.
- All long long multiplies will now be inlined (if -cpu 3M or later
and -Otime). Can also generate SMLAL and UMLAL.
- ARMv5 BLX instruction used for faster function pointer calls.
- Other more complex function pointer forms (such as MOV lr,pc; LDR pc,xxx)
reinstated; these had been disabled at some point between 5.02 and 5.54
as a bug workaround.
- Very slow CSE analysis of complex functions (eg various cyphers) fixed.
- Header file guard #defines interpreted and handled internally (a speed
optimisation which saves having to reload header files).
- Improved compile-time evaluation of floating arithmetic.
- Able to inline more functions. Now knows the CNF instruction.
- FPA float->double conversions no longer eliminated (for correct
behaviour with signalling NaNs and underflow traps).
- Fixes to inline functions with difficult return types.
- Many general code generation improvements and bug fixes.
- Constant data placed in read-only area.
- Mapping symbols ($d/$a) now placed in object file to aid DecAOF and DDT.
- long long variables now output correctly in debugging information,
(requires latest version of DDT).
- Changes to warning control options (see below).
- -zz and -zt options to control data allocation.
- APCS-A and APCS-M support removed.
|