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.