This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH, i386]: Rewrite x87 sqrt patterns, take 2a (macroized)


Roger Sayle wrote:

internal compiler error: RTL check: expected elt 0 type 'e' or 'u',
have 'E' (rtx unspec) in get_true_reg, at reg-stack.c:452



Grr, it looks like Uros meant to write:


+      case UNSPEC:
+       if (XINT (*pat, 1) == UNSPEC_TRUNC_NOOP)
+         pat = & XVECEXP (*pat, 0, 0);
+       break;

Or else we fall through to the FLOAT_TRUNCATE case for UNSPECs other
than UNSPEC_TRUNC_NOOP.


I'm digging through my brown paper bag collection to find appropriate bag, but I _did_ make a full bootstrap & regression test, and there was no RTL check message!

I'll pre-approve that correction (as obvious?), if it bootstraps and
regression tests without problems. My apologies for missing this
during review.


Please accept my apologies...

Attached to this message is an emergency patch that passed bootstrap and my collection of quick tests on x86_64-pc-linux-gnu (-m32) and is in regression test right now...

Uros.


Index: reg-stack.c
===================================================================
--- reg-stack.c	(revision 119198)
+++ reg-stack.c	(working copy)
@@ -441,10 +441,8 @@
 
       case UNSPEC:
 	if (XINT (*pat, 1) == UNSPEC_TRUNC_NOOP)
-	  {
-	    pat = & XVECEXP (*pat, 0, 0);
-	    break;
-	  }
+	  pat = & XVECEXP (*pat, 0, 0);
+	return pat;
 
       case FLOAT_TRUNCATE:
 	if (!flag_unsafe_math_optimizations)

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]