https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127492

Uroš Bizjak <ubizjak at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #2 from Uroš Bizjak <ubizjak at gmail dot com> ---
Same issue as PR127336:

(insn 5 2 6 2 (set (reg/f:DI 108)
        (symbol_ref:DI ("v") [flags 0x2]  <var_decl 0x7fca37000720 v>))
"pr127492.c":9:16 99 {*movdi_internal}
     (nil))
(insn 6 5 7 2 (set (reg:DI 107)
        (mem/c:DI (reg/f:DI 108) [1 v+0 S8 A128])) "pr127492.c":9:16 99
{*movdi_internal}
     (nil))
(insn 7 6 8 2 (set (reg/f:DI 110)
        (const:DI (plus:DI (symbol_ref:DI ("v") [flags 0x2]  <var_decl
0x7fca37000720 v>)
                (const_int 8 [0x8])))) "pr127492.c":9:16 99 {*movdi_internal}
     (nil))

...
(call_insn 13 12 14 2 (set (reg:TI 0 ax)
        (call (mem:QI (symbol_ref:DI ("__atomic_fetch_add_16") [flags 0x41] 
<function_decl 0x7fca3738dd00 __atomic_fetch_add_16>) [0 __atomic_fetch_add_16
S1 A8])
            (const_int 0 [0]))) "pr127492.c":9:16 1508 {*call_value}
     (expr_list:REG_CALL_DECL (symbol_ref:DI ("__atomic_fetch_add_16") [flags
0x41]  <function_decl 0x7fca3738dd00 __atomic_fetch_add_16>)
        (expr_list:REG_EH_REGION (const_int 0 [0])
            (nil)))
    (expr_list:DI (use (reg:DI 5 di))
        (expr_list (use (reg:DI 1 dx))
            (expr_list (use (reg:DI 4 si))
                (expr_list:SI (use (reg:SI 2 cx))
                    (nil))))) 0)
(insn 14 13 17 2 (set (reg:TI 102 [ _3 ])
        (reg:TI 0 ax)) "pr127492.c":9:16 98 {*movti_internal}
     (nil))
(insn 17 14 18 2 (set (reg:TI 113)
        (mem/c:TI (symbol_ref:DI ("v") [flags 0x2]  <var_decl 0x7fca37000720
v>) [1 v+0 S16 A128])) "pr127492.c":9:16 98 {*movti_internal}
     (nil))
(insn 18 17 19 2 (parallel [
            (set (reg:TI 112)
                (plus:TI (reg:TI 102 [ _3 ])
                    (reg:TI 113)))
            (clobber (reg:CC 17 flags))
        ]) "pr127492.c":9:16 271 {*addti3_doubleword}
     (expr_list:REG_EQUAL (plus:TI (reg:TI 102 [ _3 ])
            (mem/c:TI (symbol_ref:DI ("v") [flags 0x2]  <var_decl
0x7fca37000720 v>) [1 v+0 S16 A128]))
        (nil)))

where (insn 17) reads memory that was already atomically updated. (insn 18)
should add previous "v" value, not (reg 113).

Reply via email to