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)

Reply via email to