[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