https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102162
--- Comment #3 from deller at gmx dot de ---
Hi Arnd,
I think the problem with your testcase is, that the compiler doesn't know the
alignment of the parameter "p" in your f_unaligned() function.
So it will generate byte-accesses.
If you modify your testcase by adding this and compiling with -O1 (or higher)
you see the problem:
int evil;
int f_unaligned2(void)
{
return get_unaligned(&evil);
}
00000000 <f_unaligned2>:
0: 2b 60 00 00 addil L%0,dp,r1
4: 34 21 00 00 ldo 0(r1),r1
8: e8 40 c0 00 bv r0(rp)
c: 0c 20 10 9c ldw 0(r1),ret0