From: Mark Mitchell Date: Wed, 23 May 2001 02:14:51 +0000 (+0000) Subject: optimize.c (initialize_inlined_parameters): Don't set TREE_READONLY for a VAR_DECL... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=39e0656d10bbd3bc0db396c8c177a1d32ef85d36;p=gcc.git optimize.c (initialize_inlined_parameters): Don't set TREE_READONLY for a VAR_DECL taking the place of an inlined PARM_DECL. * optimize.c (initialize_inlined_parameters): Don't set TREE_READONLY for a VAR_DECL taking the place of an inlined PARM_DECL. From-SVN: r42480 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 956d01708c3..4f3391eca8a 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2001-05-22 Mark Mitchell + + * optimize.c (initialize_inlined_parameters): Don't set + TREE_READONLY for a VAR_DECL taking the place of an inlined + PARM_DECL. + 2001-05-22 Jason Merrill * class.c, cp-tree.h, rtti.c: Remove com_interface attribute support. 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));