You copied the Doc URL to your clipboard.

Default differences

Some compiler and assembler options are different between Arm® Compiler 5 and Arm Compiler 6, or have different default values.

The following table lists these differences.

Table 2-2 Differences in defaults

Arm Compiler 5 Arm Compiler 6 Notes Further information
‑‑hide_all ‑fvisibility=hidden These defaults are similar but ‑fvisibility=hidden does not affect extern declarations or symbol references. In Arm Compiler 6, symbols in the final image are hidden if the reference or the definition is hidden. Therefore the visibility of the reference alone does not determine the visibility of the symbol, as it does in Arm Compiler 5.

‑‑hide_all for Arm® Compiler 5.

‑fvisibility for Arm® Compiler 6.

‑‑apcs=/hardfp or ‑‑apcs=/softfp ‑mfloat‑abi=softfp

The default floating-point linkage in Arm Compiler 5 depends on the specified processor. If the processor has floating-point hardware, then Arm Compiler 5 uses hardware floating-point linkage. If the processor does not have floating-point hardware, then Arm Compiler 5 uses software floating-point linkage. In Arm Compiler 6, the default is always software floating-point linkage.

The ‑mfloat‑abi option also controls the type of floating-point instructions that the compiler uses. ‑mfloat‑abi=softfp uses hardware floating-point instructions. Use ‑mfloat‑abi=soft to use software floating-point linkage and software library functions for floating-point operations.

‑‑apcs for Arm® Compiler 5.

‑mfloat‑abi for Arm® Compiler 6.

__image.axf a.out Default name for the executable image if none of ‑o, ‑c, ‑E, or ‑S are specified on the command-line.

‑o for Arm® Compiler 5.

‑o for Arm® Compiler 6.

‑‑enum_is_int is off by default ‑fno‑short‑enums ‑‑enum_is_int is off by default in Arm Compiler 5, so the smallest data type that can hold the enumerator values is used. ‑fno‑short‑enums is the default in Arm Compiler 6, so the size of the enumeration type is at least 32 bits.

‑‑enum_is_int for Arm® Compiler 5.

‑fno‑short‑enums for Arm® Compiler 6.

‑O2 ‑O0 Arm Compiler 5 uses high optimization by default. Arm Compiler 6 uses minimum optimization by default.

‑O for Arm® Compiler 5.

‑O for Arm® Compiler 6.

Optimization differences.

‑‑apcs=/nointerwork ‑‑apcs=/interwork In Arm Compiler 5, armasm does not specify by default that code in the input file can safely interwork between A32 and T32. In Arm Compiler 6, armasm specifies interworking by default for AArch32 targets that support A32 and T32 instruction sets.

‑‑apcs for Arm® Compiler 5.

‑‑apcs for Arm® Compiler 6.

C++03 C++14 You can override the default source language with ‑‑cpp11 in Arm Compiler 5, or ‑std in Arm Compiler 6.

‑‑cpp for Arm® Compiler 5.

‑‑cpp11 for Arm® Compiler 5.

‑std for Arm® Compiler 6.

C90 C11 You can override the default source language with ‑‑c99 in Arm Compiler 5, or ‑std in Arm Compiler 6.

‑‑c90 for Arm® Compiler 5.

‑‑c99 for Arm® Compiler 5.

‑std for Arm® Compiler 6.