You copied the Doc URL to your clipboard.

C and C++ implementation compatibility

ARM Compiler 6 C and C++ implementation details differ from previous compiler versions.

The following table describes the C and C++ implementation detail differences.

Table 3-2 C and C++ implementation detail differences

Feature Older versions of ARM® Compiler ARM Compiler 6
Integer operations

int shifts > 0 && < 127

int left shifts > 31 == 0

int right shifts > 31 == 0 (for unsigned or +ve), -1 (for -ve)

long long shifts > 0 && < 63

Warns when shift amount > width of type.

You can use the -Wshift-count-overflow option to suppress this warning.

Integer division Checks that the sign of the remainder matches the sign of the numerator The sign of the remainder is not necessarily the same as the sign of the numerator.
Floating-point operations
Default standard IEEE 754 standard, rounding to nearest representable value, exceptions disabled by default.

All facilities, operations, and representations guaranteed by the IEEE standard are available in single and double-precision. Modes of operation can be selected dynamically at runtime.

This is equivalent to the --fpmode=ieee_full option in older versions of ARM Compiler.

Unions, enums and structs
Enum packing Enums are implemented in the smallest integral type of the correct sign to hold the range of the enum values, unless --enum_is_int is specified in C++ mode. By default enums are implemented as int, with long long used when required.
Signedness of plain bit-fields


Plain bit-fields declared without either the signed or unsigned qualifiers default to unsigned. The --signed_bitfields option treats plain bit-fields as signed.


Plain bit-fields declared without either the signed or unsigned qualifiers default to signed. There is no equivalent to either the --signed_bitfields or --no_signed_bitfields options.

Misc C
sizeof(wchar_t) 2 bytes 4 bytes
Misc C++
Implicit inclusion If compilation requires a template definition from a template declared in a header file xyz.h, the compiler implicitly includes the file or xyz.CC. Not supported.
Alternative template lookup algorithms When performing referencing context lookups, name lookup matches against names from the instantiation context as well as from the template definition context. Not supported.
Exceptions Off by default, function unwinding on with --exceptions by default. On by default when in C++ mode, but not supported in this release.