aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/decl.c8
2 files changed, 12 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 885af4f..fe25b5d 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2007-05-31 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/31806
+ * decl.c (cp_finish_decl): Also clear was_readonly if a static var
+ needs runtime initialization.
+
2007-05-31 Paolo Carlini <pcarlini@suse.de>
PR c++/32158
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index f28ab09..b485f1f 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -5361,8 +5361,12 @@ cp_finish_decl (tree decl, tree init, bool init_const_expr_p,
/* If a TREE_READONLY variable needs initialization
at runtime, it is no longer readonly and we need to
avoid MEM_READONLY_P being set on RTL created for it. */
- if (init && TREE_READONLY (decl))
- TREE_READONLY (decl) = 0;
+ if (init)
+ {
+ if (TREE_READONLY (decl))
+ TREE_READONLY (decl) = 0;
+ was_readonly = 0;
+ }
expand_static_init (decl, init);
}
}