https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83084
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |aoliva at gcc dot gnu.org, | |jakub at gcc dot gnu.org, | |vmakarov at gcc dot gnu.org --- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Seems this breaks during sched1, which given: (insn 10031 10029 8 5 (set (mem/v:BLK (scratch:DI) [0 A8]) (unspec:BLK [ (mem/v:BLK (scratch:DI) [0 A8]) ] UNSPEC_LWSYNC)) "pr83084.C":11 683 {*lwsync} (nil)) (debug_insn 8 10031 10032 5 (var_location:SI D#2 (unspec_volatile:SI [ (mem/v:SI (reg/f:DI 131 [ this ]) [-1 S4 A32]) ] UNSPECV_LL)) -1 (nil)) (insn 10032 8 10033 5 (set (reg:SI 138) (unspec_volatile:SI [ (mem/v:SI (reg/f:DI 131 [ this ]) [-1 S4 A32]) ] UNSPECV_LL)) "pr83084.C":11 694 {load_lockedsi} (nil)) with the debug_insn of course missing for -g0 reorders them if the debug_insn is in there to: (insn 10032 10029 10031 5 (set (reg:SI 138) (unspec_volatile:SI [ (mem/v:SI (reg/f:DI 131 [ this ]) [-1 S4 A32]) ] UNSPECV_LL)) "pr83084.C":11 694 {load_lockedsi} (nil)) (insn 10031 10032 8 5 (set (mem/v:BLK (scratch:DI) [0 A8]) (unspec:BLK [ (mem/v:BLK (scratch:DI) [0 A8]) ] UNSPEC_LWSYNC)) "pr83084.C":11 683 {*lwsync} (nil)) (debug_insn 8 10031 10033 5 (var_location:SI D#2 (clobber (const_int 0 [0]))) -1 (nil)) but without the debug_insn keeps them as is.