diff options
author | amylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-01-06 09:06:13 +0000 |
---|---|---|
committer | amylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-01-06 09:06:13 +0000 |
commit | 99e4c1757c4c8c65f47f1e6e3ebc1dc9e52fe090 (patch) | |
tree | e37f7c301b8f45e7141c78fb72e53cdc1971b17a | |
parent | 77c13f26d3e662f30c1315b5a117eca1f8ca884a (diff) | |
download | gcc-99e4c1757c4c8c65f47f1e6e3ebc1dc9e52fe090.tar.gz |
* integrate.c (copy_rtx_and_substitute): When copying
an ignored return value, strip REG_FUNCTION_VALUE_P.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@38747 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/integrate.c | 15 |
2 files changed, 17 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8b075d3deb7..d28f9b8f313 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Sat Jan 6 00:09:34 2001 J"orn Rennecke <amylaar@redhat.com> + + * integrate.c (copy_rtx_and_substitute): When copying + an ignored return value, strip REG_FUNCTION_VALUE_P. + 2001-01-06 Michael Hayes <mhayes@redhat.com> * loop.c (debug_biv, debug_giv): New. diff --git a/gcc/integrate.c b/gcc/integrate.c index f6e43027580..9859a02c9eb 100644 --- a/gcc/integrate.c +++ b/gcc/integrate.c @@ -1844,9 +1844,18 @@ copy_rtx_and_substitute (orig, map, for_lhs) the function doesn't have a return value, error. If the mode doesn't agree, and it ain't BLKmode, make a SUBREG. */ if (map->inline_target == 0) - /* Must be unrolling loops or replicating code if we - reach here, so return the register unchanged. */ - return orig; + { + if (rtx_equal_function_value_matters) + /* This is an ignored return value. We must not + leave it in with REG_FUNCTION_VALUE_P set, since + that would confuse subsequent inlining of the + current function into a later function. */ + return gen_rtx_REG (GET_MODE (orig), regno); + else + /* Must be unrolling loops or replicating code if we + reach here, so return the register unchanged. */ + return orig; + } else if (GET_MODE (map->inline_target) != BLKmode && mode != GET_MODE (map->inline_target)) return gen_lowpart (mode, map->inline_target); |