1.3 LLVM component versions and language compatibility

armclang is based on LLVM components and provides different levels of support for different source language standards.

Note:

This topic includes descriptions of [ALPHA], [BETA], and [COMMUNITY] features. See Support level definitions.

Base LLVM components

ARM® Compiler 6 is based on the following LLVM components:

Table 1-1 LLVM component versions

Component Version More information
Clang 4.0 http://clang.llvm.org

Language support levels

ARM Compiler 6 in conjunction with libc++ provides varying levels of support for different source language standards:

Table 1-2 Language support levels

Language standard Support level
C90 Supported.
C99 Supported, with the exception of complex numbers.

C11 [COMMUNITY]

The base Clang component provides C11 language functionality. However, ARM has performed no independent testing of these features and therefore these are [COMMUNITY] features. Use of C11 library features is unsupported.

Note that C11 is the default language standard for C code. However, usage of the new C11 language features is a community feature. Use the -std option to restrict the language standard if required. Use the -Wc11-extensions option to warn about any use of C11-specific features.

C++98

Supported, including the use of C++ exceptions.

Support for -fno-exceptions is limited.

See Standard C++ library implementation definition in the ARM C and C++ Libraries and Floating-Point Support User Guide for more information about support for exceptions.

C++11

Supported, with the following exceptions:

  • Concurrency constructs available through the following standard library headers are [ALPHA] supported:

    • <thread>
    • <mutex>
    • <shared_mutex>
    • <condition_variable>
    • <future>
    • <chrono>
    • <atomic>
    • For more details, contact the ARM Support team.

  • The thread_local keyword is not supported.

See Standard C++ library implementation definition in the ARM C and C++ Libraries and Floating-Point Support User Guide for more information.

C++14 [BETA]

The base Clang and libc++ components provide C++14 language functionality. ARM has performed limited testing of these features, therefore these are [BETA] features.

Concurrency constructs available through the following standard library headers are [ALPHA] supported:

  • <thread>
  • <mutex>
  • <shared_mutex>
  • <condition_variable>
  • <future>
  • <chrono>
  • <atomic>
  • For more details, contact the ARM Support team.

The thread_local keyword is not supported.

See Standard C++ library implementation definition in the ARM C and C++ Libraries and Floating-Point Support User Guide for more information.

Additional information

See the armclang Reference Guide for information about ARM-specific language extensions.

For more information about libc++ support, see Standard C++ library implementation definition, in the ARM C and C++ Libraries and Floating-Point Support User Guide.

The Clang documentation provides additional information about language compatibility:

Non-ConfidentialPDF file icon PDF versionARM 100066_0608_00_en
Copyright © 2014–2017 ARM Limited or its affiliates. All rights reserved.