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 [COMMUNITY] features.

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

[COMMUNITY] C11

The base Clang component provides C11 language functionality. However, ARM has performed no independent testing of these features so they are a community feature. 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:

  • The Atomic operations library is not supported.
  • The Thread support library is not supported. C++11 can only be used for creating single-threaded operations.

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

[COMMUNITY] C++14

The base Clang and libc++ components provide C++14 language functionality. However, ARM has performed no independent testing of these features so they are a community feature.

C++ library variants

ARM Compiler 6 provides two different C++ library variants:

  • libc++, based on the LLVM C++ Standard Library. This is the default library.
  • Rogue Wave Standard C++ Library.

Note

The Rogue Wave C++ libraries are deprecated.

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:

Related information