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  <jcon...@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  <echri...@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;
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to