http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45722
--- Comment #15 from John David Anglin <danglin at gcc dot gnu.org> 2010-10-11 18:08:22 UTC --- (In reply to comment #14) Sorry, wrong expansion: ;; D.1972_24 = sB.l; (insn 135 134 136 (set (reg/f:SI 194) (high:SI (symbol_ref:SI ("sB") [flags 0x200] <var_decl 0x4028f420 sB>)) ) pr45722-2.c:53 -1 (nil)) (insn 136 135 137 (set (reg/f:SI 193) (lo_sum:SI (reg/f:SI 194) (symbol_ref:SI ("sB") [flags 0x200] <var_decl 0x4028f420 sB>))) pr4 5722-2.c:53 -1 (expr_list:REG_EQUAL (symbol_ref:SI ("sB") [flags 0x200] <var_decl 0x4028f 420 sB>) (nil))) (insn 137 136 138 (set (reg:QI 196) (mem/s/c:QI (plus:SI (reg/f:SI 193) (const_int 2 [0x2])) [0+2 S1 A8])) pr45722-2.c:53 -1 (nil)) (insn 138 137 139 (set (reg:SI 195) (zero_extend:SI (reg:QI 196))) pr45722-2.c:53 -1 (nil)) (insn 139 138 140 (set (reg:SI 197) (ashift:SI (reg:SI 195) (const_int 24 [0x18]))) pr45722-2.c:53 -1 (nil)) (insn 140 139 141 (set (reg:QI 199) (mem/s/c:QI (plus:SI (reg/f:SI 193) (const_int 3 [0x3])) [0+3 S1 A8])) pr45722-2.c:53 -1 (nil)) (insn 141 140 142 (set (reg:SI 198) (zero_extend:SI (reg:QI 199))) pr45722-2.c:53 -1 (nil)) (insn 142 141 143 (set (reg:SI 200) (ashift:SI (reg:SI 198) (const_int 16 [0x10]))) pr45722-2.c:53 -1 (nil)) (insn 143 142 144 (set (reg:SI 201) (ior:SI (reg:SI 200) (reg:SI 197))) pr45722-2.c:53 -1 (nil)) (insn 144 143 145 (set (reg:QI 203) (mem/s/c:QI (plus:SI (reg/f:SI 193) (const_int 4 [0x4])) [0+4 S1 A8])) pr45722-2.c:53 -1 (nil)) (insn 145 144 146 (set (reg:SI 202) (zero_extend:SI (reg:QI 203))) pr45722-2.c:53 -1 (nil)) (insn 146 145 147 (set (reg:SI 204) (ashift:SI (reg:SI 202) (const_int 8 [0x8]))) pr45722-2.c:53 -1 (nil)) (insn 147 146 148 (set (reg:SI 205) (ior:SI (reg:SI 204) (reg:SI 201))) pr45722-2.c:53 -1 (nil)) (insn 148 147 149 (set (reg:QI 207) (mem/s/c:QI (plus:SI (reg/f:SI 193) (const_int 5 [0x5])) [0+5 S1 A8])) pr45722-2.c:53 -1 (nil)) (insn 149 148 150 (set (reg:SI 206) (zero_extend:SI (reg:QI 207))) pr45722-2.c:53 -1 (nil)) (insn 150 149 151 (set (reg:SI 208) (ior:SI (reg:SI 206) (reg:SI 205))) pr45722-2.c:53 -1 (nil)) (insn 151 150 0 (set (reg:SI 109 [ D.1972 ]) (reg:SI 208)) pr45722-2.c:53 -1 (nil)) ;; if (D.1971_23 != D.1972_24) At the moment, it appears to me that store_expr doesn't know how to handle unaligned mem_ref's.