diff options
author | mmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-05-23 02:14:51 +0000 |
---|---|---|
committer | mmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-05-23 02:14:51 +0000 |
commit | 1d7d1e1876bcc41355e330659040d3c7ddc31c5a (patch) | |
tree | d69a1448fabdf6e189a8432812c574b358c3f7e5 /gcc/cp/optimize.c | |
parent | 14234b931b39bc157ca54c3d7364cc5ffb073671 (diff) | |
download | gcc-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.c | 12 |
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)); |