You copied the Doc URL to your clipboard.

Arm Compiler armclang Reference Guide : Expressions

Expressions

Describes implementation-defined aspects of the Arm® C++ compiler and C++ library relating to expressions, as required by the ISO C++ Standard.

Passing an argument of class type in a function call through ellipsis (5.2.2).
For ellipsis arguments, passing an argument of class type having a non-trivial copy constructor, a non-trivial move constructor, or a non-trivial destructor, with no corresponding parameter, results in an abort at run time. A diagnostic is reported for this case.
Result type of typeid expression (5.2.8).
The type of a typeid expression is an expression with dynamic type std::type_info.
Incrementing a bit-field that cannot represent the incremented value (5.2.6).
The incremented value is truncated to the number of bits in the bit-field. The bit-field is updated with the bits of the truncated value.
Conversions between pointers and integers (5.2.10).

Converting a pointer to an integer type with a smaller bit width than the pointer, truncates the pointer to the number of bits of the destination type. Converting a pointer to an integer type with a greater bit width than the pointer, zero-extends the pointer. Otherwise, the bits of the representation are unchanged.

Converting an unsigned integer to a pointer type with a greater bit-width than the unsigned integer zero-extends the integer. Converting a signed integer to a pointer type with a greater bit-width than the signed integer sign-extends the integer. Otherwise, the bits of the representation are unchanged.

Conversions from function pointers to object pointers (5.2.10).
Such conversions are supported.
sizeof applied to fundamental types other than char, signed char, and unsigned char (5.3.3).
Type sizeof
bool 1
char 1
wchar_t 4
char16_t 2
char32_t 4
short 2
int 4
long (AArch32 state only) 4
long (AArch64 state only) 8
long long 8
float 4
double 8
long double (AArch32 state only) 8
long long (AArch64 state only) 16
Support for over-aligned types in new expressions (5.3.4).
Over-aligned types are not supported in new expressions. The pointer for the allocated type will not fulfill the extended alignment.
Type of ptrdiff_t (5.7).
The type of ptrdiff_t is signed int for AArch32 state and signed long for AArch64 state.
Type of size_t (5.7).
The type of size_t is unsigned int for AArch32 state and unsigned long for AArch64 state.
Result of right shift of negative value (5.8).
In a bitwise right shift operation of the form E1 >> E2, if E1 is of signed type and has a negative value, the value of the result is the integral part of the quotient of E1 / (2 ** E2), except when E1 is –1.
Assignment of a value to a bit-field that the bit-field cannot represent (5.18).
When assigning a value to a bit-field that the bit-field cannot represent, the value is truncated to the number of bits of the bit-field. A diagnostic is reported in some cases.
Was this page helpful? Yes No