diff options
author | Uros Bizjak <uros@gcc.gnu.org> | 2008-01-25 11:25:21 +0100 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2008-01-25 11:25:21 +0100 |
commit | d1f0728e65fe428de34d8b94da525b97259a7ff0 (patch) | |
tree | c3fc2a21f03a244f3c80d3dd22acea05c273d0d1 /gcc/simplify-rtx.c | |
parent | 80e67011e309ed891ee8a5e736311b61be446895 (diff) | |
download | gcc-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.c | 7 |
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); |