http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52080
Richard Guenther <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target|ia64-*-linux |ia64-*-linux,
| |sparc64-*-linux
CC| |ebotcazou at gcc dot
| |gnu.org
--- Comment #1 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-02-01
10:22:51 UTC ---
SPARC64 is also affected.
;; ptr_1(D)->full = 1;
(insn 6 5 7 (set (reg:DI 110)
(mem/j:DI (plus:DI (reg/v/f:DI 109 [ ptr ])
(const_int 8 [0x8])) [0+8 S8 A64])) t.c:10 -1
(nil))
(insn 7 6 8 (set (reg:DI 112)
(const_int 2147483648 [0x80000000])) t.c:10 -1
(nil))
(insn 8 7 9 (set (reg:DI 111)
(ior:DI (reg:DI 110)
(reg:DI 112))) t.c:10 -1
(nil))
(insn 9 8 0 (set (mem/j:DI (plus:DI (reg/v/f:DI 109 [ ptr ])
(const_int 8 [0x8])) [0+8 S8 A64])
(reg:DI 111)) t.c:10 -1
(nil))
wrong:
ldx [%o0+8], %g2
sethi %hi(2147483648), %g1
or %g2, %g1, %g1
jmp %o7+8
stx %g1, [%o0+8]
At least IA64 also can do 4-byte loads/stores (but not sure the HW
wouldn't re-introduce the data race).