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