https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88311
--- Comment #7 from Alan Modra <amodra at gmail dot com> ---
Hmm, it looks like combine is removing the long call.
hello2.c.262r.ud_dce:
(insn 10 9 11 2 (set (reg/f:SI 127)
(high:SI (symbol_ref:SI ("printf") [flags 0x41] <function_decl
0x7f18d32a5e00 printf>))) "hello2.c":5:3 651 {elf_high}
(nil))
(insn 11 10 12 2 (set (reg/f:SI 126)
(lo_sum:SI (reg/f:SI 127)
(symbol_ref:SI ("printf") [flags 0x41] <function_decl
0x7f18d32a5e00 printf>))) "hello2.c":5:3 652 {elf_low}
(expr_list:REG_DEAD (reg/f:SI 127)
(expr_list:REG_EQUAL (symbol_ref:SI ("printf") [flags 0x41]
<function_decl 0x7f18d32a5e00 printf>)
(nil))))
(insn 12 11 13 2 (set (reg:SI 66 ctr)
(reg/f:SI 126)) "hello2.c":5:3 491 {*movsi_internal1}
(expr_list:REG_DEAD (reg/f:SI 126)
(expr_list:REG_EQUAL (symbol_ref:SI ("printf") [flags 0x41]
<function_decl 0x7f18d32a5e00 printf>)
(nil))))
(call_insn 13 12 18 2 (parallel [
(set (reg:SI 3 3)
(call (mem:SI (reg:SI 66 ctr) [0 __builtin_printf S4 A8])
(const_int 0 [0])))
(use (const_int 4 [0x4]))
(clobber (reg:SI 65 lr))
]) "hello2.c":5:3 658 {*call_value_indirect_nonlocal_sysvsi}
(expr_list:REG_DEAD (reg:SI 66 ctr)
(expr_list:REG_UNUSED (reg:SI 3 3)
(expr_list:REG_CALL_DECL (symbol_ref:SI ("printf") [flags 0x41]
<function_decl 0x7f18d32a5e00 printf>)
(nil))))
(expr_list:SI (use (reg:SI 3 3))
(nil)))
hello2.c.263r.combine:
(note 10 9 11 2 NOTE_INSN_DELETED)
(note 11 10 12 2 NOTE_INSN_DELETED)
(note 12 11 13 2 NOTE_INSN_DELETED)
(call_insn 13 12 18 2 (parallel [
(set (reg:SI 3 3)
(call (mem:SI (symbol_ref:SI ("printf") [flags 0x41]
<function_decl 0x7f18d32a5e00 printf>) [0 __builtin_printf S4 A8])
(const_int 0 [0])))
(use (const_int 4 [0x4]))
(clobber (reg:SI 65 lr))
]) "hello2.c":5:3 659 {*call_value_nonlocal_sysvsi}
(expr_list:REG_CALL_DECL (symbol_ref:SI ("printf") [flags 0x41]
<function_decl 0x7f18d32a5e00 printf>)
(expr_list:REG_UNUSED (reg:SI 3 3)
(nil)))
(expr_list:SI (use (reg:SI 3 3))
(nil)))