Cray Standard C/C++ Reference Manual
10.1.2.8 Registers
Use of the register storage class in the declaration of an object has no effect
on whether the object is placed in a register. The compiler performs register
assignment aggressively; that is, it automatically attempts to place as many
variables as possible into registers.
10.1.2.9 Classes, Structures, Unions, Enumerations, and Bit Fields
Accessing a member of a union by using a member of a different type results in
an attempt to interpret, without conversion, the representationof the value of the
member as the representation of a value in the different type.
Members of a class or structure are packed into UNICOS or UNICOS/mk
words from left to right. Padding is appended to a member to correctly align
the following member, if necessary. Member alignment is based on the size
of the member:
• For a member bit field of any size, alignment is any bit position that allows
the member to fit entirely within a 64–bit word.
• For a member with a size less than 64 bits, alignment is the same as the size.
For example, a char has a size and alignment of 8 bits; a float or short on
UNICOS/mk systems has a size and alignment of 32 bits.
• For a member with a size equal to or greater than 64 bits, alignment is 64 bits.
• For a member with array type, alignment is equal to the alignment of the
element type.
A plain int type bit field is treated as an unsigned int bit field.
The values of an enumeration type are represented in the type signed int in
C; they are a separate type in C++.
10.1.2.10 Qualifiers
When an object that has volatile-qualified type is accessed, it is simply a
referenceto the value of the object. If the value is not used, the reference need not
result in a load of the value from memory.
10.1.2.11 Declarators
A maximum of 12 pointer, array, and/or function declarators are allowed to
modify an arithmetic, structure, or union type.
150 S–2179–36
Comments to this Manuals