Keil Logo

Summary of changes between Arm Compiler 6.7 and Arm Compiler 6.8

6.6 Summary of changes between Arm® Compiler 6.7 and Arm® Compiler 6.8

A summary of the changes between Arm® Compiler 6.7 and Arm Compiler 6.8.

General changes

The following are general changes in Arm Compiler 6.8:

  • Added support for the optional Dot Product instructions in Armv8.2-A and Armv8.3-A. To target Armv8.2-A and Armv8.3-A with the Dot Product instructions, use the following options:

    Processor armclang options armasm, armlink, and fromelf options
    Armv8.3-A and AArch64 state --target=aarch64-arm-none-eabi -march=armv8.3-a+dotprod --cpu=8.3-A.64.dotprod
    Armv8.3-A and AArch32 state --target=arm-arm-none-eabi -march=armv8.3-a+dotprod --cpu=8.3-A.32.dotprod
    Armv8.2-A and AArch64 state --target=aarch64-arm-none-eabi -march=armv8.2-a+dotprod --cpu=8.2-A.64.dotprod
    Armv8.2-A and AArch32 state --target=arm-arm-none-eabi -march=armv8.2-a+dotprod --cpu=8.2-A.32.dotprod
  • Added support for the Cortex®‑A75 and Cortex‑A55 processors. To target Cortex‑A75 and Cortex‑A55, use the following options:

    Processor armclang options armasm, armlink, and fromelf options
    Cortex‑A75 for AArch64 state --target=aarch64-arm-none-eab -mcpu=cortex-a75 8.2-A.64
    Cortex‑A75 for AArch32 state --target=arm-arm-none-eab -mcpu=cortex-a75 8.2-A.32
    Cortex‑A55 for AArch64 state --target=aarch64-arm-none-eab -mcpu=cortex-a55 -mcpu=cortex-a55 8.2-A.64
    Cortex‑A55 for AArch32 state --target=arm-arm-none-eab -mcpu=cortex-a55 -mcpu=cortex-a55 8.2-A.32
  • When resolving the relocations of a branch instruction from a function with build attributes that include ~PRES8 to another function with build attributes that include REQ8, the linker previously reported:

    Error: L6238E: <objname>(<secname>) contains invalid call from '~PRES8 (The user did not require code to preserve 8-byte alignment of 8-byte data objects)' function to 'REQ8 (Code was permitted to depend on the 8-byte alignment of 8-byte data items)' function <sym>.

    This behavior has been changed. By default, the linker no longer reports an error in these circumstances. To restore the previous behavior, use the option --strict_preserve8_require8. For more information about this option, see --strict_preserve8_require8 in the armlink User Guide.

    To successfully link with --strict_preserve8_require8

    1. Manually inspect assembly language source files that are assembled using the integrated assembler.
    2. Ensure that all functions preserve 8-byte alignment of the stack and of 8-byte data items.
    3. Add the directive .eabi_attribute Tag_ABI_align_preserved, 1 to each such source file.

Enhancements

The following are enhancements in Arm Compiler 6.8:

Compiler and integrated assembler (armclang)
  • Previously, the inline assembler and integrated assembler provided limited support for instruction substitutions for the A32 and T32 instruction sets. Substitution occurs when a valid encoding does not exist for an instruction with a particular immediate, but an equivalent instruction that has the same result with the inverted or negated immediate is available. To disable this feature, use the option -mno-neg-immediates.

    When -mno-neg-immediatess is not specified, the range of substitutions that the inline assembler and integrated assembler perform has also been extended to cover extra valid substitutions for A64, A32, and T32.

    For more information about this option, see -mno-neg-immediates in the armclang Reference Guide.

  • Added support for:

    • #pragma clang section. This pragma enables migration of source code that previously used the legacy armcc feature #pragma arm section. See #pragma clang section in the armclang Reference Guide.
    • -nostdlib and -nostdlibinc options that enable objects to be linked with other ABI-compliant libraries. See -nostdlib and -nostdlibinc in the armclang Reference Guide.
    • __unaligned keyword. This keyword aids migration of source code that previously used the legacy armcc feature __packed. See __unaligned in the armclang Reference Guide.
General enhancements

Added support for C++14 source language modes. Use one of the following options to enable the compilation of C++14 source code:

  • -std=c++14.
  • -std=gnu++14.

See -std in the armclang Reference Guide.

Non-ConfidentialPDF file icon PDF version100068_0613_00_en
Copyright © 2014–2019 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.