diff mbox series

[RS6000] Bogus easy_fp_constant call

Message ID 20181125121111.GK21617@bubble.grove.modra.org
State New
Headers show
Series [RS6000] Bogus easy_fp_constant call | expand

Commit Message

Alan Modra Nov. 25, 2018, 12:11 p.m. UTC
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 for KFmode and TFmode.

Bootstrapped and regression tested powerpc64le-linux.

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

Comments

Segher Boessenkool Nov. 28, 2018, 5:05 p.m. UTC | #1
On Sun, Nov 25, 2018 at 10:41:11PM +1030, Alan Modra wrote:
> 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 for KFmode and TFmode.
> 
> Bootstrapped and regression tested powerpc64le-linux.

Okay for trunk.  Thanks!


Segher


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

Patch

diff --git a/gcc/config/rs6000/predicates.md b/gcc/config/rs6000/predicates.md
index e98b00dec5d..afe1b286833 100644
--- a/gcc/config/rs6000/predicates.md
+++ b/gcc/config/rs6000/predicates.md
@@ -644,12 +644,6 @@  (define_predicate "xxspltib_constant_nosplit"
 (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;