diff options
author | Jason Merrill <merrill@gnu.org> | 1994-07-31 21:31:00 +0000 |
---|---|---|
committer | Jason Merrill <merrill@gnu.org> | 1994-07-31 21:31:00 +0000 |
commit | 9175051cae8912e5c5a8b7b52c4f2b12fba64c5f (patch) | |
tree | 7b091d2e5d9555e8fc38c714b8cfc18d4584e47e | |
parent | 02cc38b5eeb613c6139bf03885a806270254b645 (diff) | |
download | gcc-9175051cae8912e5c5a8b7b52c4f2b12fba64c5f.zip gcc-9175051cae8912e5c5a8b7b52c4f2b12fba64c5f.tar.gz gcc-9175051cae8912e5c5a8b7b52c4f2b12fba64c5f.tar.bz2 |
(expand_inline_function): Don't fall down trying to
pass things by invisible reference.
From-SVN: r7842
-rw-r--r-- | gcc/integrate.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/integrate.c b/gcc/integrate.c index 63b150d..26d7663 100644 --- a/gcc/integrate.c +++ b/gcc/integrate.c @@ -1235,6 +1235,7 @@ expand_inline_function (fndecl, parms, target, ignore, type, structure_value_add tree arg = convert (TREE_TYPE (formal), TREE_VALUE (actual)); /* Mode of the variable used within the function. */ enum machine_mode mode = TYPE_MODE (TREE_TYPE (formal)); + int invisiref = 0; /* Make sure this formal has some correspondence in the users code * before emitting any line notes for it. */ @@ -1263,6 +1264,7 @@ expand_inline_function (fndecl, parms, target, ignore, type, structure_value_add store_expr (arg, stack_slot, 0); arg_vals[i] = XEXP (stack_slot, 0); + invisiref = 1; } else if (GET_CODE (loc) != MEM) { @@ -1288,8 +1290,11 @@ expand_inline_function (fndecl, parms, target, ignore, type, structure_value_add be two different pseudos, and `safe_from_p' will make all sorts of smart assumptions about their not conflicting. But if ARG_VALS[I] overlaps TARGET, these assumptions are - wrong, so put ARG_VALS[I] into a fresh register. */ + wrong, so put ARG_VALS[I] into a fresh register. + Don't worry about invisible references, since their stack + temps will never overlap the target. */ || (target != 0 + && ! invisiref && (GET_CODE (arg_vals[i]) == REG || GET_CODE (arg_vals[i]) == SUBREG || GET_CODE (arg_vals[i]) == MEM) |