This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
patch to fix a testsuite failure in LRA
- From: Vladimir Makarov <vmakarov at redhat dot com>
- To: gcc-patches <gcc-patches at gcc dot gnu dot org>
- Date: Tue, 23 Oct 2012 16:07:28 -0400
- Subject: patch to fix a testsuite failure in LRA
Uros reported that GCC after LRA submitting has a new test failure on
x86. The reason was in wrong update live info in EBB containing empty
BB as the last EBB block. For such case live_out of the last EBB was
undefined and actually a garbage. It resulted in triggering a code
which checks that pseudo assigned to call clobbered hard register does
not live through calls.
The following patch fixes the problem.
The patch was successfully tested and bootstrapped on x86.
Committed as rev. 192743.
2012-10-23 Vladimir Makarov <vmakarov@redhat.com>
* lra-constraints.c (update_ebb_live_info): Process empty blocks.
Index: lra-constraints.c
===================================================================
--- lra-constraints.c (revision 192719)
+++ lra-constraints.c (working copy)
@@ -4300,8 +4300,6 @@ update_ebb_live_info (rtx head, rtx tail
curr_insn = prev_insn)
{
prev_insn = PREV_INSN (curr_insn);
- if (! INSN_P (curr_insn))
- continue;
curr_bb = BLOCK_FOR_INSN (curr_insn);
if (curr_bb != prev_bb)
{
@@ -4336,7 +4334,7 @@ update_ebb_live_info (rtx head, rtx tail
prev_bb = curr_bb;
bitmap_and (&live_regs, &check_only_regs, df_get_live_out (curr_bb));
}
- if (DEBUG_INSN_P (curr_insn))
+ if (! NONDEBUG_INSN_P (curr_insn))
continue;
curr_id = lra_get_insn_recog_data (curr_insn);
remove_p = false;