summaryrefslogtreecommitdiff
path: root/gcc/cp/optimize.c
diff options
context:
space:
mode:
authormmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>2001-05-23 02:14:51 +0000
committermmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>2001-05-23 02:14:51 +0000
commit1d7d1e1876bcc41355e330659040d3c7ddc31c5a (patch)
treed69a1448fabdf6e189a8432812c574b358c3f7e5 /gcc/cp/optimize.c
parent14234b931b39bc157ca54c3d7364cc5ffb073671 (diff)
downloadgcc-1d7d1e1876bcc41355e330659040d3c7ddc31c5a.tar.gz
* optimize.c (initialize_inlined_parameters): Don't set
TREE_READONLY for a VAR_DECL taking the place of an inlined PARM_DECL. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@42480 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cp/optimize.c')
-rw-r--r--gcc/cp/optimize.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/gcc/cp/optimize.c b/gcc/cp/optimize.c
index b6b03b9423d..f81d7e38ae3 100644
--- a/gcc/cp/optimize.c
+++ b/gcc/cp/optimize.c
@@ -498,6 +498,18 @@ initialize_inlined_parameters (id, args, fn)
DECL_INITIAL (var) = value;
else
{
+ /* Even if P was TREE_READONLY, the new VAR should not be.
+ In the original code, we would have constructed a
+ temporary, and then the function body would have never
+ changed the value of P. However, now, we will be
+ constructing VAR directly. The constructor body may
+ change its value multiple times as it is being
+ constructed. Therefore, it must not be TREE_READONLY;
+ the back-end assumes that TREE_READONLY variable is
+ assigned to only once. */
+ TREE_READONLY (var) = 0;
+
+ /* Build a run-time initialization. */
init_stmt = build_stmt (EXPR_STMT,
build (INIT_EXPR, TREE_TYPE (p),
var, value));