union unaligned { void *ptr; } __attribute__((__packed__)); void *foo(union unaligned *p) { return (p->ptr); }
-------------------- sh-elf-gcc -V4.1.1 -S -O2 -m4a test2.c combine optimize change movua.l to mov.l instruction. .file "test2.c" .text .text .align 1 .align 5 .global _foo .type _foo, @function _foo: mov.l @r4,r0 mov.l r14,@-r15 mov r15,r14 mov r14,r15 mov.l @r15+,r14 rts nop .size _foo, .-_foo .ident "GCC: (GNU) 4.1.1" -- Summary: wrong movua.l instruction combine for sh4a Product: gcc Version: 4.1.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: tyokota at k2 dot dion dot ne dot jp GCC target triplet: sh-elf http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28232