This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Alignment Guarantees?


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]