Release notes for ARM Compiler Toolchain 5.02
Enhancements in 5.02
Compiler (armcc)
-
Performance improvements have been added for code built with the CMSIS-DSP libraries for Cortex-M0.
[SDCOMP-17979]
-
Support for execute-only memory regions when building for ARMv7-M has been added to ARM Compiler 5.02 as a beta-quality feature. For more information on using this functionality, please contact support-sw@arm.com
[SDCOMP-14917]
-
Improvements have been made to the performance of code generated when compiling for Cortex-M3 or Cortex-M4.
[SDCOMP-14910]
-
Improvements have been made to the register allocator to enhance its robustness.
[SDCOMP-12140]
Other enhancements
-
Support for the Cortex-M0+ CPU has been added. To target the Cortex-M0+ use --cpu=Cortex-M0plus.
[SDCOMP-19489]
-
ARM Compiler 5 is now supported on both 32-bit and 64-bit variants of Windows 7 SP1.
[SDCOMP-17072]
Corrections in 5.02
Assembler (armasm)
-
The assembler did not permit unsigned data types for VMOV, VMVN, VORR and VBIC instructions, e.g., VMOV.U32 d1,#0xffffffff. This is now fixed.
[SDCOMP-18607]
Compiler (armcc)
-
A throw out of a inner try block that is lexically contained within an outer catch block could be caught by the outer catch block. This has been fixed.
[SDCOMP-19394]
-
When using a return statement in the catch of a nested try/catch block, the compiler could incorrectly generate code that triggers a runtime abort. This has been fixed.
[SDCOMP-19369]
-
At -O3 -Otime, an expression that contains a function call that changes an argument value could be incorrectly moved by the compiler to after the use of that argument. This has been fixed.
[SDCOMP-19346]
-
A cause of internal fault 0x0bdd2f has been fixed.
[SDCOMP-19163]
-
A cause of internal fault 0x7c87ef has been fixed.
[SDCOMP-19110]
-
The compiler incorrectly reported Error #137: "expression must be a modifiable lvalue" on const lvalue expressions used in inline assembly operands, even if they were not written to. This has now been fixed.
[SDCOMP-18601]
-
Compiling functions containing sequences of expressions each depending on the value of all previous expressions could in some cases cause the compiler to take excessive amounts of time. This has been fixed.
[SDCOMP-18511]
-
In certain circumstances, the compiler would fail to remove dead code resulting in larger than necessary code size. This has been fixed.
[SDCOMP-18039]
-
There was a code size regression due to the compiler not removing unused code while the conditional flags were in use. This has been fixed.
[SDCOMP-17887]
-
The compiler's code generation for some inlined template class methods has been improved.
[SDCOMP-17865]
-
Under certain circumstances when writing code that will generate multiple loads from the same value, the compiler would fail to remove these extra loads, hence increasing code size.
[SDCOMP-17717]
-
Warning 2969-D could sometimes be incorrectly generated when using --locale=Japanese. This has been fixed.
[SDCOMP-16424]
-
Some incorrect compilation warnings produced by use of #pragma arm and #pragma thumb in class definitions have been fixed.
[SDCOMP-16079]
-
A cause of internal fault 0x86934f has been fixed.
[SDCOMP-15203]
-
A cause of internal fault 0x925a06 has been fixed.
[SDCOMP-14829]
Linker (armlink)
-
A problem where the linker could generate mismatching file offsets in the program header and section header when using --base_platform has been fixed.
[SDCOMP-19335]
-
The linker could incorrectly convert references to bitband alias symbols into direct references to symbols during partial linking. In particular, this issue could occur when using embedded assembler and bitbanded accesses in the same translation unit. This has now been fixed.
[SDCOMP-18585]
Libraries
-
When a __use_*_ctype symbol was imported but ctype was not made use of this would cause the C library startup code to write to an invalid memory address. This has been fixed.
[SDCOMP-19333]