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