diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/optimize.c | 4 |
2 files changed, 9 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 87a279d..3c75429 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2000-04-30 Mark Mitchell <mark@codesourcery.com> + + * optimize.c (initialize_inlined_parameters): If the parameter is + addressable, we need to make a new VAR_DECL, even if the + initializer is constant. + 2000-04-28 Cosmin Truta <cosmint@cs.ubbcluj.ro> * decl.c (grok_op_properties): Add an extra check of argtypes. diff --git a/gcc/cp/optimize.c b/gcc/cp/optimize.c index 9863d4a..e683f7e 100644 --- a/gcc/cp/optimize.c +++ b/gcc/cp/optimize.c @@ -392,7 +392,9 @@ initialize_inlined_parameters (id, args, fn) /* If the parameter is never assigned to, we may not need to create a new variable here at all. Instead, we may be able to just use the argument value. */ - if (TREE_READONLY (p) && !TREE_SIDE_EFFECTS (value)) + if (TREE_READONLY (p) + && !TREE_ADDRESSABLE (p) + && !TREE_SIDE_EFFECTS (value)) { /* Simplify the value, if possible. */ value = fold (decl_constant_value (value)); |