[RS6000] Bogus easy_fp_constant call
authorAlan Modra <amodra@gmail.com>
Thu, 29 Nov 2018 04:56:33 +0000 (15:26 +1030)
committerAlan Modra <amodra@gcc.gnu.org>
Thu, 29 Nov 2018 04:56:33 +0000 (15:26 +1030)
easy_fp_constant accepts const_double, easy_vector_constant accepts
const_vector.  Calling one from the other therefore will always return
false.  I believe the zero_constant call in easy_vector_constant will
cover the 0.0 case of easy_fp_constant.

* config/rs6000/predicates.md (easy_vector_constant): Don't call
easy_fp_constant.

From-SVN: r266606

gcc/ChangeLog
gcc/config/rs6000/predicates.md

index 56dd30f9b3eb61eb658e7653e8799c4951f65977..b1ea39997520f68c6bbb4b4749ab172b4c745114 100644 (file)
@@ -1,3 +1,8 @@
+2018-11-29  Alan Modra  <amodra@gmail.com>
+
+       * config/rs6000/predicates.md (easy_vector_constant): Don't call
+       easy_fp_constant.
+
 2018-11-29  Alan Modra  <amodra@gmail.com>
 
        * config.in (HAVE_AS_PLTSEQ): Add.
index e98b00dec5db8f6e9119b15d769d2a9d65437b7e..afe1b286833bbc1a4db3b2aeee3e9292251fef19 100644 (file)
 (define_predicate "easy_vector_constant"
   (match_code "const_vector")
 {
-  /* Because IEEE 128-bit floating point is considered a vector type
-     in order to pass it in VSX registers, it might use this function
-     instead of easy_fp_constant.  */
-  if (FLOAT128_VECTOR_P (mode))
-    return easy_fp_constant (op, mode);
-
   if (VECTOR_MEM_ALTIVEC_OR_VSX_P (mode))
     {
       int value = 256;