aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>1999-09-04 00:15:15 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>1999-09-04 00:15:15 +0000
commit951525d2edc7ed122a31cb3869db15394dc3148e (patch)
tree7835f84bf69e4ddc4517a25fcde51ad4acc5298e /gcc
parent483dd5bec16a1a1acc2bc65f4f5fda522e67277d (diff)
downloadgcc-951525d2edc7ed122a31cb3869db15394dc3148e.zip
gcc-951525d2edc7ed122a31cb3869db15394dc3148e.tar.gz
gcc-951525d2edc7ed122a31cb3869db15394dc3148e.tar.bz2
decl.c (expand_static_init): Tweak handling of static initializations for objects without constructors.
* decl.c (expand_static_init): Tweak handling of static initializations for objects without constructors. From-SVN: r29093
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/decl.c4
-rw-r--r--gcc/testsuite/g++.old-deja/g++.other/static6.C7
3 files changed, 15 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index c3904bf..ebde894 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+1999-09-03 Mark Mitchell <mark@codesourcery.com>
+
+ * decl.c (expand_static_init): Tweak handling of static
+ initializations for objects without constructors.
+
1999-09-03 Nathan Sidwell <nathan@acm.org>
* typeck.c (build_indirect_ref): Reject dereference of pointer to
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 82b3124..ec187df 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -8181,7 +8181,9 @@ expand_static_init (decl, init)
|| (init && TREE_CODE (init) == TREE_LIST))
assignment = build_aggr_init (decl, init, 0);
else if (init)
- assignment = build_modify_expr (decl, NOP_EXPR, init);
+ /* The initialization we're doing here is just a bitwise
+ copy. */
+ assignment = build (INIT_EXPR, TREE_TYPE (decl), decl, init);
else
assignment = NULL_TREE;
diff --git a/gcc/testsuite/g++.old-deja/g++.other/static6.C b/gcc/testsuite/g++.old-deja/g++.other/static6.C
new file mode 100644
index 0000000..e660d80
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.other/static6.C
@@ -0,0 +1,7 @@
+// Build don't link:
+// Origin: Jason Merrill <jason@cygnus.com>
+
+void f (int i)
+{
+ static int a[] = { i };
+}