aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2018-11-29 15:26:33 +1030
committerAlan Modra <amodra@gcc.gnu.org>2018-11-29 15:26:33 +1030
commitabf07e52b2f16ad1234bdb89b9c8b3d704b67b11 (patch)
tree0da3af213c56add11115c8d1f52f3f04044e2074
parent3f79c0ad268bc64d0cc231ba6d51098983bdb67b (diff)
downloadgcc-abf07e52b2f16ad1234bdb89b9c8b3d704b67b11.zip
gcc-abf07e52b2f16ad1234bdb89b9c8b3d704b67b11.tar.gz
gcc-abf07e52b2f16ad1234bdb89b9c8b3d704b67b11.tar.bz2
[RS6000] Bogus easy_fp_constant call
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
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/rs6000/predicates.md6
2 files changed, 5 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 56dd30f..b1ea399 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
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.
* config/rs6000/predicates.md (indirect_call_operand): New.
* config/rs6000/rs6000-protos.h (rs6000_pltseq_template),
diff --git a/gcc/config/rs6000/predicates.md b/gcc/config/rs6000/predicates.md
index e98b00d..afe1b28 100644
--- a/gcc/config/rs6000/predicates.md
+++ b/gcc/config/rs6000/predicates.md
@@ -644,12 +644,6 @@
(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;