aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2005-01-11 00:37:00 -0800
committerRichard Henderson <rth@gcc.gnu.org>2005-01-11 00:37:00 -0800
commit201dd46b9827597fdc60534fd9de31f36f998be3 (patch)
tree026fb0157df09611a19dccbb67c7d5495c7b283f /gcc
parent35c0104b03b990b8fb2db82dfcf732ae3aad753d (diff)
downloadgcc-201dd46b9827597fdc60534fd9de31f36f998be3.zip
gcc-201dd46b9827597fdc60534fd9de31f36f998be3.tar.gz
gcc-201dd46b9827597fdc60534fd9de31f36f998be3.tar.bz2
expr.c (store_constructor): Use rtvec_alloc instead of alloca+gen_rtvec_v...
* expr.c (store_constructor): Use rtvec_alloc instead of alloca+gen_rtvec_v, and an incorrect number passed to alloca. From-SVN: r93177
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/expr.c12
2 files changed, 11 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index dbc0995..a9d0155 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2005-01-11 Richard Henderson <rth@redhat.com>
+
+ * expr.c (store_constructor): Use rtvec_alloc instead of
+ alloca+gen_rtvec_v, and an incorrect number passed to alloca.
+
2005-01-11 Kazu Hirata <kazu@cs.umass.edu>
* config/alpha/alpha.c, config/i386/mmx.md: Fix comment typos.
diff --git a/gcc/expr.c b/gcc/expr.c
index de34675..2e1320e 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -4970,7 +4970,7 @@ store_constructor (tree exp, rtx target, int cleared, HOST_WIDE_INT size)
enum machine_mode eltmode = TYPE_MODE (elttype);
HOST_WIDE_INT bitsize;
HOST_WIDE_INT bitpos;
- rtx *vector = NULL;
+ rtvec vector = NULL;
unsigned n_elts;
gcc_assert (eltmode != BLKmode);
@@ -4985,9 +4985,9 @@ store_constructor (tree exp, rtx target, int cleared, HOST_WIDE_INT size)
{
unsigned int i;
- vector = alloca (n_elts);
+ vector = rtvec_alloc (n_elts);
for (i = 0; i < n_elts; i++)
- vector [i] = CONST0_RTX (GET_MODE_INNER (mode));
+ RTVEC_ELT (vector, i) = CONST0_RTX (GET_MODE_INNER (mode));
}
}
@@ -5058,7 +5058,8 @@ store_constructor (tree exp, rtx target, int cleared, HOST_WIDE_INT size)
/* Vector CONSTRUCTORs should only be built from smaller
vectors in the case of BLKmode vectors. */
gcc_assert (TREE_CODE (TREE_TYPE (value)) != VECTOR_TYPE);
- vector[eltpos] = expand_expr (value, NULL_RTX, VOIDmode, 0);
+ RTVEC_ELT (vector, eltpos)
+ = expand_expr (value, NULL_RTX, VOIDmode, 0);
}
else
{
@@ -5076,8 +5077,7 @@ store_constructor (tree exp, rtx target, int cleared, HOST_WIDE_INT size)
if (vector)
emit_insn (GEN_FCN (icode)
(target,
- gen_rtx_PARALLEL (GET_MODE (target),
- gen_rtvec_v (n_elts, vector))));
+ gen_rtx_PARALLEL (GET_MODE (target), vector)));
break;
}