You copied the Doc URL to your clipboard.

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 3.9 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

C11 is the default language standard for C code. 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>
  • 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. However, Arm has not thoroughly tested these features and therefore they are [BETA] features.

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: