aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2016-10-16 19:36:47 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2016-10-16 19:36:47 +0000
commit855db69891d4f2a61a16f219d78daf8cd56e3058 (patch)
treed8b583c2e4c566727880fbc69eb8b506809e03b2 /gcc
parent6c0347f607f3bdc49498df45a2fbace20bfa5a92 (diff)
downloadgcc-855db69891d4f2a61a16f219d78daf8cd56e3058.zip
gcc-855db69891d4f2a61a16f219d78daf8cd56e3058.tar.gz
gcc-855db69891d4f2a61a16f219d78daf8cd56e3058.tar.bz2
sparc.c (sparc_expand_vector_init): Only accept literal constants in CONST_VECTORs.
* config/sparc/sparc.c (sparc_expand_vector_init): Only accept literal constants in CONST_VECTORs. From-SVN: r241218
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/sparc/sparc.c5
2 files changed, 7 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e616910..e4b462c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2016-10-16 Eric Botcazou <ebotcazou@adacore.com>
+
+ * config/sparc/sparc.c (sparc_expand_vector_init): Only accept literal
+ constants in CONST_VECTORs.
+
2016-10-15 Eric Botcazou <ebotcazou@adacore.com>
* config/sparc/sparc.c (sparc_expand_vec_perm_bmask): Use a scratch
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
index f737061..74435a5 100644
--- a/gcc/config/sparc/sparc.c
+++ b/gcc/config/sparc/sparc.c
@@ -12366,14 +12366,13 @@ sparc_expand_vector_init (rtx target, rtx vals)
const machine_mode inner_mode = GET_MODE_INNER (mode);
const int n_elts = GET_MODE_NUNITS (mode);
int i, n_var = 0;
- bool all_same;
+ bool all_same = true;
rtx mem;
- all_same = true;
for (i = 0; i < n_elts; i++)
{
rtx x = XVECEXP (vals, 0, i);
- if (!CONSTANT_P (x))
+ if (!(CONST_SCALAR_INT_P (x) || CONST_DOUBLE_P (x) || CONST_FIXED_P (x)))
n_var++;
if (i > 0 && !rtx_equal_p (x, XVECEXP (vals, 0, 0)))