aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@yorick.cygnus.com>1998-05-05 23:54:18 +0000
committerJason Merrill <jason@gcc.gnu.org>1998-05-05 19:54:18 -0400
commit0fac6b0b32f12da03f8443883fa6434db14b55a6 (patch)
treee2cf380d5c76f06511c24bbb377d937c75317669 /gcc
parent25cf40e29d42a562eeaad8d6015d9d7cd14b46f6 (diff)
downloadgcc-0fac6b0b32f12da03f8443883fa6434db14b55a6.zip
gcc-0fac6b0b32f12da03f8443883fa6434db14b55a6.tar.gz
gcc-0fac6b0b32f12da03f8443883fa6434db14b55a6.tar.bz2
init.c (expand_vec_init): The initialization of each array element is a full-expression.
* init.c (expand_vec_init): The initialization of each array element is a full-expression. From-SVN: r19557
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/init.c7
2 files changed, 12 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index eb5c261..6b34102 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+Tue May 5 23:54:04 1998 Jason Merrill <jason@yorick.cygnus.com>
+
+ * init.c (expand_vec_init): The initialization of each array
+ element is a full-expression.
+
Tue May 5 18:24:13 EDT 1998 Andrew MacLeod <amacleod@cygnus.com>
* method.c: Add a call to build_type_variant to get the right type.
diff --git a/gcc/cp/init.c b/gcc/cp/init.c
index a783fe5..d95de78 100644
--- a/gcc/cp/init.c
+++ b/gcc/cp/init.c
@@ -2860,6 +2860,9 @@ expand_vec_init (decl, base, maxindex, init, from_array)
expand_eh_region_start ();
expand_start_loop_continue_elsewhere (1);
+ /* The initialization of each array element is a full-expression. */
+ expand_start_target_temps ();
+
if (from_array)
{
tree to = build1 (INDIRECT_REF, type, base);
@@ -2895,6 +2898,10 @@ expand_vec_init (decl, base, maxindex, init, from_array)
if (base2)
expand_assignment (base2,
build (PLUS_EXPR, build_pointer_type (type), base2, size), 0, 0);
+
+ /* Cleanup any temporaries needed for the initial value. */
+ expand_end_target_temps ();
+
expand_loop_continue_here ();
expand_exit_loop_if_false (0, build (NE_EXPR, boolean_type_node,
build (PREDECREMENT_EXPR, ptrdiff_type_node, iterator, integer_one_node), minus_one));