Alignment Guarantees?

Ian Lance Taylor iant@google.com
Mon Mar 5 20:38:00 GMT 2012


Jeffrey Walton <noloader@gmail.com> writes:

> Does C/C++ or GCC offer any alignment guarantees? I'm looking at some
> code for ARM that does not look quite right.
>
> void foo(__u8 my_arr[64])
> {
>     ...
>
>     for(int i = 0; i < 16; i++)
>         (__u32*)my_arr[i] = ...
> }
>
> Casting a u8[] to something else has caused a lot of intermittent
> problems on Windows Mobile (ARM) in the past.

To address the code, there is no guarantee that a __u8 is aligned
correctly for a __u32 (assuming those types have their implied meaning).

And note that if __u8 is not "char", "signed char", or "unsigned char",
then this would be an aliasing violation.

Ian



More information about the Gcc-help mailing list