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).

Reply via email to