integrate.c (expand_inline_function): Ensure non-const actuals don't end up const in the caller's flow after...

* integrate.c (expand_inline_function): Ensure non-const actuals
        don't end up const in the caller's flow after conversion to possibly
        const formal type.

From-SVN: r65794
This commit is contained in:
Olivier Hainque 2003-04-19 00:11:57 +02:00 committed by Richard Kenner
parent 8dcea3f35a
commit e59baa1f83
2 changed files with 14 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2003-04-18 Olivier Hainque <hainque@act-europe.fr>
* integrate.c (expand_inline_function): Ensure non-const actuals
don't end up const in the caller's flow after conversion to possibly
const formal type.
2003-04-18 Vincent Celier <celier@gnat.com>
* dwarf2out.c (loc_descriptor_from_tree): Treat all *_MOD_EXPR

View File

@ -810,6 +810,14 @@ expand_inline_function (fndecl, parms, target, ignore, type,
else
arg_vals[i] = 0;
/* If the formal type was const but the actual was not, we might
end up here with an rtx wrongly tagged unchanging in the caller's
context. Fix that. */
if (arg_vals[i] != 0
&& (GET_CODE (arg_vals[i]) == REG || GET_CODE (arg_vals[i]) == MEM)
&& ! TREE_READONLY (TREE_VALUE (actual)))
RTX_UNCHANGING_P (arg_vals[i]) = 0;
if (arg_vals[i] != 0
&& (! TREE_READONLY (formal)
/* If the parameter is not read-only, copy our argument through