Summary of changes between Arm® Compiler 6.9 and Arm® Compiler 6.10
summary of the changes between Arm® Compiler 6.9 and Arm Compiler 6.10.
The following are general changes in Arm Compiler 6.10:
- When using the legacy assembler,
armasm, to assemble for AArch32 targets that support A32 and T32 instruction sets, the
apcsinterworking default has changed from
/interwork. If you must use the non-interworking
apcs, then you must specify
--apcs=/nointerworkon the command-line of the legacy assembler,
armasm. However, from Arm Compiler 6.10, the compiler does not include pure A32 libraries for non-interworking
apcs. Therefore, if you use the non-interworking
apcsfor A32 code and require library support, then
armlinkgenerates an error unless you provide your own supporting libraries.
- In certain circumstances, when a legacy assembler or linker process invoked the compiler as a subprocess to preprocess a file but all suitable licenses were already in use, the processes could deadlock. This issue has been fixed.
The default C++ source language mode has changed from gnu++98 to gnu++14.
gnu++14 language and library features are a [BETA] product feature. Arm recommends compiling with
-std=c++11to restrict Arm Compiler to using only C++11 language and library features, which are fully supported.
See -std in the armclang Reference Guide.
The following are enhancements in Arm Compiler 6.10:
- Compiler and integrated assembler (armclang)
Added support for the
-fno-builtinoption that can prevent the compiler from optimizing calls to certain standard C library functions, such as
printf(). When compiling without
-fno-builtin, the compiler can replace such calls with inline code or with calls to other library functions.
See -fno-builtin in the armclang Reference Guide.