Commit 4dbebf6f by Alexandre Oliva Committed by Alexandre Oliva

[-fcompare-debug] find jump before debug insns in expand

A debug insn after the final jump of a basic block may cause the
expander to emit a dummy move where the non-debug compile won't
because it finds the jump insn at the end of the insn stream.

Fix the condition so that, instead of requiring the jump as the last
insn, it also matches a jump followed by debug insns.

This fixes the compilation of libgcc/libgcov-profiler.c with
-fcompare-debug on i686-linux-gnu.

for  gcc/ChangeLog

	* cfgexpand.c (expand_gimple_basic_block): Disregard debug
	insns after final jump in test to emit dummy move.

From-SVN: r244089
parent 55665504
2017-01-04 Alexandre Oliva <aoliva@redhat.com>
* cfgexpand.c (expand_gimple_basic_block): Disregard debug
insns after final jump in test to emit dummy move.
2017-01-04 Alexandre Oliva <aoliva@redhat.com>
* gimple-iterator.h (gsi_one_nondebug_before_end_p): New.
* tree-eh.c (cleanup_empty_eh): Skip more debug stmts.
......
......@@ -5767,7 +5767,9 @@ expand_gimple_basic_block (basic_block bb, bool disable_tail_calls)
if (single_succ_p (bb)
&& (single_succ_edge (bb)->flags & EDGE_FALLTHRU)
&& (last = get_last_insn ())
&& JUMP_P (last))
&& (JUMP_P (last)
|| (DEBUG_INSN_P (last)
&& JUMP_P (prev_nondebug_insn (last)))))
{
rtx dummy = gen_reg_rtx (SImode);
emit_insn_after_noloc (gen_move_insn (dummy, dummy), last, NULL);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment