Keil Logo

Summary of changes between Arm Compiler 6.5 and Arm Compiler 6.6

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

A 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.

    To disassemble objects that have been built for SVE, llvm-objdump is provided as an interim solution.

    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
    D32 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 Arm Compiler 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.

Non-ConfidentialPDF file icon PDF version100068_0614_00_en
Copyright © 2014–2020 Arm Limited or its affiliates. All rights reserved. 
  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.