Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 17 Dec 2013 20:53:23 +0000 (UTC)
From:      "Pedro F. Giffuni" <pfg@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r259525 - in head/contrib/gcc: . config/rs6000
Message-ID:  <201312172053.rBHKrNWB041760@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: pfg
Date: Tue Dec 17 20:53:22 2013
New Revision: 259525
URL: http://svnweb.freebsd.org/changeset/base/259525

Log:
  gcc: fix ICE in rs600 when using -fno-trapping-math.
  
  Solves GCC-PR target/30485
  
  Obtained from:	gcc 4.3 (rev. 120902; GPLv2)
  MFC after:	2 weeks

Modified:
  head/contrib/gcc/ChangeLog.gcc43
  head/contrib/gcc/config/rs6000/rs6000.c

Modified: head/contrib/gcc/ChangeLog.gcc43
==============================================================================
--- head/contrib/gcc/ChangeLog.gcc43	Tue Dec 17 18:44:46 2013	(r259524)
+++ head/contrib/gcc/ChangeLog.gcc43	Tue Dec 17 20:53:22 2013	(r259525)
@@ -399,6 +399,12 @@
 	(override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
 	for CPUs that have PTA_CX16 set.
 
+2007-01-18  Josh Conner  <jconner@apple.com> (r120902)
+
+	PR target/30485
+	* config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
+	support for UNLE, UNLT, UNGE, and UNGT.
+
 2007-01-17  Eric Christopher  <echristo@apple.com> (r120846)
 
 	* config.gcc: Support core2 processor.

Modified: head/contrib/gcc/config/rs6000/rs6000.c
==============================================================================
--- head/contrib/gcc/config/rs6000/rs6000.c	Tue Dec 17 18:44:46 2013	(r259524)
+++ head/contrib/gcc/config/rs6000/rs6000.c	Tue Dec 17 20:53:22 2013	(r259525)
@@ -11738,10 +11738,18 @@ rs6000_emit_vector_compare (enum rtx_cod
 	  try_again = true;
 	  break;
 	case NE:
-	  /* Treat A != B as ~(A==B).  */
+	case UNLE:
+	case UNLT:
+	case UNGE:
+	case UNGT:
+	  /* Invert condition and try again.
+	     e.g., A != B becomes ~(A==B).  */
 	  {
+	    enum rtx_code rev_code;
 	    enum insn_code nor_code;
-	    rtx eq_rtx = rs6000_emit_vector_compare (EQ, op0, op1,
+
+	    rev_code = reverse_condition_maybe_unordered (rcode);
+	    rtx eq_rtx = rs6000_emit_vector_compare (rev_code, op0, op1,
 						     dest_mode);
 
 	    nor_code = one_cmpl_optab->handlers[(int)dest_mode].insn_code;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201312172053.rBHKrNWB041760>