[PR,47994] skip debug insns in combine m_split tests

Submitted by Alexandre Oliva on April 29, 2011, 5:27 a.m.

Details

Message ID ory62tocdo.fsf@livre.localdomain
State New
Headers show

Commit Message

Alexandre Oliva April 29, 2011, 5:27 a.m.
The testcase in PR 47994, as well as one of the tests in 47919, exposed
our failure to skip debug insns when testing whether it is safe to split
the unrecognizable insn resulting from combining 3 insns.
Unfortunately, both testcases are far too sensitive to other changes in
the compiler, to the point of being unusable as regression tests IMHO.

Regstrapped on x86_64-linux-gnu and i686-pc-linux-gnu.  Ok to install?

Comments

Eric Botcazou April 30, 2011, 9:23 p.m.
> The testcase in PR 47994, as well as one of the tests in 47919, exposed
> our failure to skip debug insns when testing whether it is safe to split
> the unrecognizable insn resulting from combining 3 insns.
> Unfortunately, both testcases are far too sensitive to other changes in
> the compiler, to the point of being unusable as regression tests IMHO.
>
> Regstrapped on x86_64-linux-gnu and i686-pc-linux-gnu.  Ok to install?

OK, thanks.

Patch hide | download patch | download mbox

for  gcc/ChangeLog
from  Alexandre Oliva  <aoliva@redhat.com>

	PR debug/47994
	PR debug/47919
	* combine.c (try_combine): Skip debug insns at m_split tests.

Index: gcc/combine.c
===================================================================
--- gcc/combine.c.orig	2011-04-29 02:16:34.718995124 -0300
+++ gcc/combine.c	2011-04-29 02:16:54.454998871 -0300
@@ -3457,7 +3457,7 @@  try_combine (rtx i3, rtx i2, rtx i1, rtx
 	    newpat = m_split;
 	}
       else if (m_split && NEXT_INSN (NEXT_INSN (m_split)) == NULL_RTX
-	       && (next_real_insn (i2) == i3
+	       && (next_nonnote_nondebug_insn (i2) == i3
 		   || ! use_crosses_set_p (PATTERN (m_split), DF_INSN_LUID (i2))))
 	{
 	  rtx i2set, i3set;
@@ -3474,7 +3474,7 @@  try_combine (rtx i3, rtx i2, rtx i1, rtx
 	     is used between I2 and I3, we also can't use these insns.  */
 
 	  if (i2_code_number >= 0 && i2set && i3set
-	      && (next_real_insn (i2) == i3
+	      && (next_nonnote_nondebug_insn (i2) == i3
 		  || ! reg_used_between_p (SET_DEST (i2set), i2, i3)))
 	    insn_code_number = recog_for_combine (&newi3pat, i3,
 						  &new_i3_notes);
@@ -3522,7 +3522,7 @@  try_combine (rtx i3, rtx i2, rtx i1, rtx
 	      || GET_MODE (*split) == VOIDmode
 	      || can_change_dest_mode (i2dest, added_sets_2,
 				       GET_MODE (*split)))
-	  && (next_real_insn (i2) == i3
+	  && (next_nonnote_nondebug_insn (i2) == i3
 	      || ! use_crosses_set_p (*split, DF_INSN_LUID (i2)))
 	  /* We can't overwrite I2DEST if its value is still used by
 	     NEWPAT.  */