-unaligned_pointer_for_ca78k0r [V1.06 or later]


Indirect references by pointers are accessed in 1-byte units.

[Specification format]

-unaligned_pointer_for_ca78k0r

 

-

Interpretation when omitted

This option generates code for indirect reference with 2-byte access for types having a 2-byte alignment condition.

[Detailed description]

-

The purpose of this option is to support the porting of code written for the CA78K0R compiler. This option is specified when the same function was used with the CA78K0R compiler. Specifying this option increases the size of the object code and decreases the speed of execution.

-

If a pointer to a type having a 2-byte alignment condition and without the volatile qualifier may indicate an odd address, this option generates code that handles indirect reference with 1-byte access. When the type is specified with the volatile qualifier, code handles indirect reference with 2-byte access even if an odd address is indicated for a type having the 2-byte alignment condition.

-

When structure packing is performed by CC-RL, only the members of the structure do not have the 2-byte alignment condition; other types such as int have the 2-byte alignment condition and pointer reference to those types also has the 2-byte alignment condition. Thus, if the pointer to a member of a packed structure is assigned to a pointer to a type which is not to be packed, normal operation is not guaranteed. When this option is specified, since indirect reference by pointers involves 1-byte access, indirect reference by pointers to the members of packed structures is possible.