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)

Reply via email to