aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@bigpond.net.au>2005-11-22 13:00:06 +0000
committerAlan Modra <amodra@gcc.gnu.org>2005-11-22 23:30:06 +1030
commite168899134dba8d8895fc9e003193fc16563797b (patch)
tree2fd6c16cfc1c1ce5c063e13b091c7197793ed842
parentcddfb1c7ac9cb2f69cc82839a0163af3e771a68d (diff)
downloadgcc-e168899134dba8d8895fc9e003193fc16563797b.zip
gcc-e168899134dba8d8895fc9e003193fc16563797b.tar.gz
gcc-e168899134dba8d8895fc9e003193fc16563797b.tar.bz2
re PR target/24954 (ICE: could not split insn)
PR target/24954 * config/rs6000/predicated.md (easy_vector_constant_add_self): Use explicit sign extension, not a (char) cast. From-SVN: r107352
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/rs6000/predicates.md2
2 files changed, 7 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fa6a35c..5bc604e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2005-11-22 Alan Modra <amodra@bigpond.net.au>
+
+ PR target/24954
+ * config/rs6000/predicated.md (easy_vector_constant_add_self): Use
+ explicit sign extension, not a (char) cast.
+
2005-11-22 Ben Elliston <bje@au.ibm.com>
* optabs.c: Use SCALAR_FLOAT_MODE_P instead of explicitly testing
diff --git a/gcc/config/rs6000/predicates.md b/gcc/config/rs6000/predicates.md
index 885ac2c..b940261 100644
--- a/gcc/config/rs6000/predicates.md
+++ b/gcc/config/rs6000/predicates.md
@@ -317,7 +317,7 @@
(match_test "easy_altivec_constant (op, mode)")))
{
rtx last = CONST_VECTOR_ELT (op, GET_MODE_NUNITS (mode) - 1);
- HOST_WIDE_INT val = (char) (INTVAL (last) & 255);
+ HOST_WIDE_INT val = ((INTVAL (last) & 0xff) ^ 0x7f) - 0x7f;
return EASY_VECTOR_15_ADD_SELF (val);
})