https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116856
Robert Hölzl <robert.hoelzl at posteo dot de> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|RESOLVED |WAITING
Resolution|INVALID |---
--- Comment #9 from Robert Hölzl <robert.hoelzl at posteo dot de> ---
I know that this solves the problem (as I wrote in my last comment).
But why does GCC handle an inline typecast (uint32_t __attribute__
((__aligned__(1)))*) different from a typecast to an typedef (u32_u*) when the
typedef is identical to the inline typecast?
In other words:
typedef uint32_t __attribute__((aligned(1))) u32_u;
uint32_t x = *(u32_u *) y;
should be identical to
uint32_t x = *(uint32_t __attribute__ ((__aligned__(1)) *) y;
right?
But the latter one is generating wrong code (which contains LDRD)