https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78603
--- Comment #2 from jcmvbkbc at gcc dot gnu.org --- Similar bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=48214 And looks like the same problem here: first instruction of zero overhead loop got inserted between the call and its NOTE_INSN_CALL_ARG_LOCATION: (call_insn 145 144 574 11 (set (reg:SI 10 a10) (call (mem:SI (reg/f:SI 8 a8 [135]) [0 pj_thread_sleep S4 A32]) (const_int 0 [0]))) ../src/pjlib-test/thread.c:221 56 {call_value_internal} (expr_list:REG_DEAD (reg/f:SI 8 a8 [135]) (expr_list:REG_UNUSED (reg:SI 10 a10) (expr_list:REG_CALL_DECL (symbol_ref:SI ("pj_thread_sleep") [flags 0x41] <function_decl 0x7f23f0ecc5e8 pj_thread_sleep>) (nil)))) (expr_list:SI (use (reg:SI 10 a10)) (nil))) (insn 574 145 493 11 (parallel [ (set (pc) (if_then_else (ne (reg:SI 2 a2 [198]) (const_int 1 [0x1])) (label_ref 175) (pc))) (set (reg:SI 2 a2 [198]) (plus (reg:SI 2 a2 [198]) (const_int -1 [0xffffffffffffffff]))) (unspec [ (const_int 0 [0]) ] 12) ]) ../src/pjlib-test/thread.c:221 -1 (nil)) (note 493 574 494 11 (expr_list:REG_DEP_TRUE (concat:SI (pc) (const (unspec [ (symbol_ref:SI ("pj_thread_sleep") [flags 0x41] <function_decl 0x7f23f0ecc5e8 pj_thread_sleep>) ] 3))) (expr_list:REG_DEP_TRUE (concat:SI (reg:SI 10 a10) (const_int 1000 [0x3e8])) (nil))) NOTE_INSN_CALL_ARG_LOCATION)