[gcc(refs/users/meissner/heads/work078)] Revert patch.

Michael Meissner meissner@gcc.gnu.org
Thu Feb 17 15:27:47 GMT 2022


https://gcc.gnu.org/g:51212c3e384634cdf534394c78268f1d2b313027

commit 51212c3e384634cdf534394c78268f1d2b313027
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Thu Feb 17 10:27:06 2022 -0500

    Revert patch.
    
    2022-02-17  Michael Meissner  <meissner@the-meissners.org>
    
    gcc/
            Revert patch.
            PR target/104256
            * config/rs6000/rs6000.cc (rs6000_emit_int_cmove): Don't do
            integer conditional moves if the test involves IEEE comparisons.
    
    gcc/testsuite/
            Revert patch.
            PR target/104256
            * gcc.target/powerpc/ppc-fortran/pr104254.f90: New test.

Diff:
---
 gcc/config/rs6000/rs6000.cc                        |  9 --------
 .../gcc.target/powerpc/ppc-fortran/pr104254.f90    | 25 ----------------------
 2 files changed, 34 deletions(-)

diff --git a/gcc/config/rs6000/rs6000.cc b/gcc/config/rs6000/rs6000.cc
index 10af34fca69..f56cf66313a 100644
--- a/gcc/config/rs6000/rs6000.cc
+++ b/gcc/config/rs6000/rs6000.cc
@@ -16181,15 +16181,6 @@ rs6000_emit_int_cmove (rtx dest, rtx op, rtx true_cond, rtx false_cond)
   if (mode != SImode && (!TARGET_POWERPC64 || mode != DImode))
     return false;
 
-  /* Don't do int cmoves for IEEE comparisons.  The rs6000_generate_compare
-     function will eventually raise an exception because the mode used is
-     CCmode (due to this being an int cmove), but you can only do these
-     comparsions with CCFP mode.  */
-  enum rtx_code op_code = GET_CODE (op);
-  if (op_code == ORDERED || op_code == UNORDERED || op_code == UNEQ || op_code == LTGT
-      || op_code == UNGT || op_code == UNLT || op_code == UNGE || op_code == UNLE)
-    return false;
-					
   /* We still have to do the compare, because isel doesn't do a
      compare, it just looks at the CRx bits set by a previous compare
      instruction.  */
diff --git a/gcc/testsuite/gcc.target/powerpc/ppc-fortran/pr104254.f90 b/gcc/testsuite/gcc.target/powerpc/ppc-fortran/pr104254.f90
deleted file mode 100644
index d1bfab23482..00000000000
--- a/gcc/testsuite/gcc.target/powerpc/ppc-fortran/pr104254.f90
+++ /dev/null
@@ -1,25 +0,0 @@
-! { dg-do compile }
-! { dg-require-effective-target powerpc_p9vector_ok }
-! { dg-options "-mdejagnu-cpu=power9 -O1 -fnon-call-exceptions" }
-
-! PR target/104254.  GCC would raise an assertion error if this program was
-! compiled with -O1 and -fnon-call-exceptions on a power9 or higher.  The issue
-! occurs because at this optimization level, the compiler is trying to make
-! a conditional move to store integers using a 32-bit floating point compare.
-! It wants to use UNLE, which is not supported for integer modes.
-  
-  real :: a(2), nan
-  real, allocatable :: c(:)
-  integer :: ia(1)
-
-  nan = 0.0
-  nan = 0.0/nan
-
-  a(:) = nan
-  ia = maxloc (a)
-  if (ia(1).ne.1) STOP 1
-
-  allocate (c(1))
-  c(:) = nan
-  deallocate (c)
-end


More information about the Gcc-cvs mailing list