You copied the Doc URL to your clipboard.

Arm Compiler Migration and Compatibility Guide : Summary of changes between Arm Compiler 6.5 and Arm Compiler 6.6

Summary of changes between Arm® Compiler 6.5 and Arm® Compiler 6.6

summary of the changes between Arm® Compiler 6.5 and Arm Compiler 6.6.

General changes

The following are general changes in Arm Compiler 6.6:

  • Added support for the Armv8.3-A architecture. To target Armv8.3-A, use the following options:

    State armclang options armasm, armlink, and fromelf options
    AArch64 --target=aarch64-arm-none-eabi -march=armv8.3-a --cpu=8.3-A.64
    AArch32 --target=arm-arm-none-eabi -march=armv8.3-a --cpu=8.3-A.32
  • Added support for the Armv8‑A AArch64 state Scalable Vector Extension (SVE) to the compiler. To target bare-metal systems with SVE, use the option -march=armv8-a+sve. See the ARM Compiler Scalable Vector Extension User Guide for more information.

    To disassemble objects that have been built for SVE, llvm-objdump is provided as an interim solution. fromelf is to be enhanced to support SVE in a future release of Arm Compiler.

    SVE features are available under a separate license. Contact Arm for more information.

  • Added support for the Cortex®-R52 processor. To target Cortex-R52, use the following options:

    Processor variant armclang options armasm, armlink, and fromelf options
    and Advanced SIMD --target=arm-arm-none-eab -mcpu=cortex-r52 --cpu=Cortex-R52
    D16 and single-precision only --target=arm-arm-none-eab -mcpu=cortex-r52 -mfpu=fpv5-d16 --cpu=Cortex-R52 --fpu=FPv5-SP
  • Added support for the Cortex‑M23 processor. To target Cortex‑M23, use the following options:

    --target=arm-arm-none-eabi -mcpu=cortex-m23
    armasm, armlink, and fromelf
  • Added support for the Cortex-M33 processor. To target Cortex-M33, use the following options:

    Processor variant armclang options armasm, armlink, and fromelf options
    With both DSP and FP --target=arm-arm-none-eab -mcpu=cortex-m33 --cpu=Cortex-M33
    Without DSP but with FP --target=arm-arm-none-eab -mcpu=cortex-m33+nodsp --cpu=Cortex-M33.no_dsp
    With DSP but without FP --target=arm-arm-none-eab -mcpu=cortex-m33 -mfloat-abi=soft --cpu=Cortex-M33 --fpu=SoftVFP
    Without both DSP and FP --target=arm-arm-none-eab -mcpu=cortex-m33+nodsp -mfloat-abi=soft --cpu=Cortex-M33.no_dsp --fpu=SoftVFP
  • The default compiler behavior has changed. The following options are selected by default:

    • -fdata-sections.
    • -ffunction-sections.
    • -fomit-frame-pointer.
    • -fvisibility=hidden.
    • Configuration options that select a smaller, less IEEE 754 compliant floating-point math library.

    To restore the previous behavior, select from the following options:

    • -fno-data-sections.
    • -fno-function-sections.
    • -fno-omit-frame-pointer.
    • -fvisibility=default [COMMUNITY].


      Arm recommends not using this option to restore the previous behavior.
    • -fno-fast-math.

    For more information about support level definitions and a subset of these options, see the armclang Reference Guide.

  • The --cpu=name option in armasm, armlink, and fromelf has changed to improve compatibility with the -mcpu compiler option.

    Replace this option name With this option name
    Cortex-A5.neon Cortex-A5
    Cortex-A5.vfp Cortex-A5.no_neon
    Cortex-A5 Cortex-A5.no_neon.no_vfp
    Cortex-R5F-rev1 Cortex-R5
    Cortex-R5F Cortex-R5-rev0
    Cortex-R5 Cortex-R5-rev0.no_vfp
    Cortex-R5F-rev1.sp Cortex-R5.sp
    Cortex-R5-rev1 Cortex-R5.no_vfp
    Cortex-M4F or Cortex-M4.fp Cortex-M4
    Cortex-M4 Cortex-M4.no_fp
    Cortex-M7.fp.dp Cortex-M7
    Cortex-M7 Cortex-M7.no_fp
  • The following linker options are deprecated and are to be removed in a future release:

    • --compress_debug.
    • --gnu_linker_defined_syms.
    • --legacyalign.
    • --match=crossmangled.
    • --strict_enum_size.
    • --strict_wchar_size.


The following are enhancements in Arm Compiler 6.6:

Compiler and integrated assembler (armclang)

Added support for:

  • __attribute__((naked)) function attribute. This function attribute enables migration of Arm Compiler 5 and earlier embedded assembler functions to Arm Compiler 6.
  • Use of floating-point code in secure functions when compiling with -mcmse -mfloat-abi=hard.
Added full support for link-time optimization (LTO). To use LTO, specify the -flto option to the compiler and the --lto option to the linker.
Libraries and system headers
  • Added [ALPHA] support for multithreading features in the C++11 standard library, for example std::atomic and std::thread. The API for these features is in the arm-tpl.h header file, but you must implement the low-level interface to the underlying operating system. The specification of this thread porting API is available through a separate document. Contact Arm Support for more information.
  • Added support to the Arm C library to implement semihosting calls using the HLT instruction for Armv8‑A and Armv8‑R targets in AArch32 state.
  • Added support for use of the C++ library without exceptions. To target C++ without exceptions, compile with the option -fno-exceptions.

    When linking objects compiled without exceptions, a specialized C++ library variant is selected that does not have the code-size overhead of exceptions. This C++ library variant has undefined behavior at points where the normal library variant results in an exception being thrown.

Was this page helpful? Yes No