aboutsummaryrefslogtreecommitdiff
path: root/gcc/simplify-rtx.c
diff options
context:
space:
mode:
authorUros Bizjak <uros@gcc.gnu.org>2008-01-25 11:25:21 +0100
committerUros Bizjak <uros@gcc.gnu.org>2008-01-25 11:25:21 +0100
commitd1f0728e65fe428de34d8b94da525b97259a7ff0 (patch)
treec3fc2a21f03a244f3c80d3dd22acea05c273d0d1 /gcc/simplify-rtx.c
parent80e67011e309ed891ee8a5e736311b61be446895 (diff)
downloadgcc-d1f0728e65fe428de34d8b94da525b97259a7ff0.zip
gcc-d1f0728e65fe428de34d8b94da525b97259a7ff0.tar.gz
gcc-d1f0728e65fe428de34d8b94da525b97259a7ff0.tar.bz2
re PR target/34856 (ICE with some constant vectors)
PR target/34856 * simplifx-rtx.c (simplify_const_binary_operation) [VEC_CONCAT]: Consider only CONST_INT, CONST_DOUBLE and CONST_FIXED as constant vector elements. testsuite/ChangeLog: PR target/34856 * gcc.dg/pr34856.c: Use pointer mode for "pin". From-SVN: r131821
Diffstat (limited to 'gcc/simplify-rtx.c')
-rw-r--r--gcc/simplify-rtx.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c
index fd14e40..f875604 100644
--- a/gcc/simplify-rtx.c
+++ b/gcc/simplify-rtx.c
@@ -2916,7 +2916,12 @@ simplify_const_binary_operation (enum rtx_code code, enum machine_mode mode,
if (VECTOR_MODE_P (mode)
&& code == VEC_CONCAT
- && CONSTANT_P (op0) && CONSTANT_P (op1))
+ && (CONST_INT_P (op0)
+ || GET_CODE (op0) == CONST_DOUBLE
+ || GET_CODE (op0) == CONST_FIXED)
+ && (CONST_INT_P (op1)
+ || GET_CODE (op1) == CONST_DOUBLE
+ || GET_CODE (op1) == CONST_FIXED))
{
unsigned n_elts = GET_MODE_NUNITS (mode);
rtvec v = rtvec_alloc (n_elts);