https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67246
Thomas Martitz <kugel at rockbox dot org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|RESOLVED |UNCONFIRMED
Resolution|INVALID |---
--- Comment #6 from Thomas Martitz <kugel at rockbox dot org> ---
Sorry to annoy you with re-open it's not fully resolved for me.
You proposed solution of specifying a different alignment has no effect.
struct iphdr {
#if defined(__LITTLE_ENDIAN_BITFIELD)
__u8 ihl:4,
version:4;
#elif defined (__BIG_ENDIAN_BITFIELD)
__u8 version:4,
ihl:4;
#else
#error "Please fix <asm/byteorder.h>"
#endif
__u8 tos;
__be16 tot_len;
__be16 id;
__be16 frag_off;
__u8 ttl;
__u8 protocol;
__sum16 check;
__be32 saddr;
__be32 daddr;
/*The options start here. */
} __attribute((aligned(2)));
Generated code:
nhoff += iph->ihl * 4;
248: 8e220000 lw v0,0(s1)
24c: 8fa40044 lw a0,68(sp)
250: 7c421e00 ext v0,v0,0x18,0x4
254: 00021080 sll v0,v0,0x2
258: 00821021 addu v0,a0,v0
I understand you that this should work?