Release notes for ARM Compiler Toolchain 5.02u1
Corrections in 5.02u1
Assembler (armasm)
-
The assembler incorrectly permitted ASRS instructions with an immediate shift of zero. This is now fixed, and reported with error A1482E.
[SDCOMP-19282]
-
On CPUs with architecture 6Z, such as the ARM1176JZ-S, the armasm built-in variable {ARCHITECTURE} would incorrectly expand to something other than the expected 6Z, for example as 6K. This issue is now fixed.
[SDCOMP-16050]
-
Assembling MOV.W instructions with the source register as PC in Thumb state on a CPU with 32-bit Thumb instructions will now correctly result in error A1477E.
[SDCOMP-14694]
Compiler (armcc)
-
When casting integer to float or double types, the compiler could incorrectly generate conversion instructions that produce wrong results. This is now fixed.
[SDCOMP-20008]
-
When defining a const array of a struct type containing mutable members, the compiler would incorrectly place this array in an RO section. This has now been fixed.
[SDCOMP-19851]
-
In certain circumstances when targeting 16-bit Thumb, the use of __disable_irq() or __disable_fiq() could cause internal fault 0x87ecef. This has been fixed.
[SDCOMP-19836]
-
Storing a value into an 8- or 16-bit location and then reloading it could sometimes result in the reloaded value being incorrectly truncated. For example, storing to a signed short member of a union followed by reloading from the corresponding unsigned short member could sometimes yield a value with the top 16 bits not all set to zero. This is now fixed.
[SDCOMP-19800]
-
In some cases the volatile behaviour is not respected when accessing a non-volatile variable through a volatile pointer. This is now fixed.
[SDCOMP-19713]
-
In certain circumstances, when using multiple load or store operations, the compiler could incorrectly generate code such that the wrong values get written to or read from memory. This is now fixed.
[SDCOMP-19681]
-
Previously, optimization levels -O1 and higher, the compiler was failing to preserve volatile qualifiers when performing a reinterpret_cast operation. This could result in incorrect code generation. The compiler has now been fixed and correctly preserves volatile qualifiers during reinterpret_cast.
[SDCOMP-19511]
-
In certain circumstances, when using 16-bit conditional execution in Thumb-state, the compiler could raise an internal fault 0xe4ffdb. This is now fixed.
[SDCOMP-19395]
-
In certain circumstances, at -O2 -Otime, the compiler could incorrectly optimize away the saving of registers, causing an unexpected function return and state restore from code that uses member functions. This is now fixed.
[SDCOMP-19340]