[Bug tree-optimization/105739] [9/10 Regression] Miscompilation of Linux kernel update.c

jakub at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu May 26 11:28:32 GMT 2022


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105739

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
The call is added at:
#0  gimple_set_code (g=<gimple_call 0x7fffea08a2a0>, code=GIMPLE_CALL) at
../../gcc/gimple.c:108
#1  0x0000000000bceae1 in gimple_alloc (code=GIMPLE_CALL, num_ops=7) at
../../gcc/gimple.c:140
#2  0x0000000000bd189a in gimple_copy (stmt=<gimple_call 0x7fffea09fe70>) at
../../gcc/gimple.c:1806
#3  0x000000000109ed79 in remap_gimple_stmt (stmt=<gimple_call 0x7fffea09fe70>,
id=0x7fffffffd620) at ../../gcc/tree-inline.c:1796
#4  0x000000000109f39a in copy_bb (id=0x7fffffffd620, bb=<basic_block
0x7fffe797f548 (4)>, num=..., den=...) at ../../gcc/tree-inline.c:1950
#5  0x00000000010a223c in copy_cfg_body (id=0x7fffffffd620,
entry_block_map=<basic_block 0x7fffe70b1dd0 (8)>, exit_block_map=<basic_block
0x7fffe70b1ea0 (10)>, 
    new_entry=<basic_block 0x0>) at ../../gcc/tree-inline.c:2884
#6  0x00000000010a2d21 in copy_body (id=0x7fffffffd620,
entry_block_map=<basic_block 0x7fffe70b1dd0 (8)>, exit_block_map=<basic_block
0x7fffe70b1ea0 (10)>, 
    new_entry=<basic_block 0x0>) at ../../gcc/tree-inline.c:3126
#7  0x00000000010a6aa2 in expand_call_inline (bb=<basic_block 0x7fffe70b1dd0
(8)>, stmt=<gimple_call 0x7fffe70c4090>, id=0x7fffffffd620,
to_purge=0x7fffffffd600)
    at ../../gcc/tree-inline.c:4867
#8  0x00000000010a76e7 in gimple_expand_calls_inline (bb=<basic_block
0x7fffe70b1dd0 (8)>, id=0x7fffffffd620, to_purge=0x7fffffffd600) at
../../gcc/tree-inline.c:5060
#9  0x00000000010a7da5 in optimize_inline_calls (fn=<function_decl
0x7fffe81d2100 rcu_tasks_trace_pertask>) at ../../gcc/tree-inline.c:5202
#10 0x0000000001cc06ec in inline_transform (node=<cgraph_node * 0x7fffe81d1438
"rcu_tasks_trace_pertask"/5350>) at ../../gcc/ipa-inline-transform.c:682

during inlining of trc_wait_for_one_reader into rcu_tasks_trace_pertask, when
copying
_printk ("\x016%s(P%d/%d) IPI to task still in flight.\n", &__func__, _1, _8);
and later changed to __builtin_unreachable in:
#0  gimple_call_set_fndecl (gs=0x7fffea08a2a0, decl=<function_decl
0x7fffea2b6700 __builtin_unreachable>) at ../../gcc/gimple.h:3058
#1  0x00000000009f8bb2 in cgraph_edge::redirect_call_stmt_to_callee (
    this=<cgraph_edge* 0x7fffea0e5680 (<cgraph_node * 0x7fffe81d1438
"rcu_tasks_trace_pertask"/5350> -> <cgraph_node * 0x7fffea3c8b40
"__builtin_unreachable"/5848>)>)
    at ../../gcc/cgraph.c:1489
#2  0x00000000010a1f10 in redirect_all_calls (id=0x7fffffffd620,
bb=<basic_block 0x7fffe70c6000 (13)>) at ../../gcc/tree-inline.c:2814
#3  0x00000000010a262b in copy_cfg_body (id=0x7fffffffd620,
entry_block_map=<basic_block 0x7fffe70b1dd0 (8)>, exit_block_map=<basic_block
0x7fffe70b1ea0 (10)>, 
    new_entry=<basic_block 0x0>) at ../../gcc/tree-inline.c:2950
#4  0x00000000010a2d21 in copy_body (id=0x7fffffffd620,
entry_block_map=<basic_block 0x7fffe70b1dd0 (8)>, exit_block_map=<basic_block
0x7fffe70b1ea0 (10)>, 
    new_entry=<basic_block 0x0>) at ../../gcc/tree-inline.c:3126
#5  0x00000000010a6aa2 in expand_call_inline (bb=<basic_block 0x7fffe70b1dd0
(8)>, stmt=<gimple_call 0x7fffe70c4090>, id=0x7fffffffd620,
to_purge=0x7fffffffd600)
    at ../../gcc/tree-inline.c:4867
#6  0x00000000010a76e7 in gimple_expand_calls_inline (bb=<basic_block
0x7fffe70b1dd0 (8)>, id=0x7fffffffd620, to_purge=0x7fffffffd600) at
../../gcc/tree-inline.c:5060
#7  0x00000000010a7da5 in optimize_inline_calls (fn=<function_decl
0x7fffe81d2100 rcu_tasks_trace_pertask>) at ../../gcc/tree-inline.c:5202


More information about the Gcc-bugs mailing list