From ea55fa7ab15a88d60f3156c4ee22151da15cc8aa Mon Sep 17 00:00:00 2001 From: "J\"orn Rennecke" Date: Sat, 6 Jan 2001 09:06:13 +0000 Subject: [PATCH] integrate.c (copy_rtx_and_substitute): When copying an ignored return value, strip REG_FUNCTION_VALUE_P. * integrate.c (copy_rtx_and_substitute): When copying an ignored return value, strip REG_FUNCTION_VALUE_P. From-SVN: r38747 --- gcc/ChangeLog | 5 +++++ 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 + + * integrate.c (copy_rtx_and_substitute): When copying + an ignored return value, strip REG_FUNCTION_VALUE_P. + 2001-01-06 Michael Hayes * 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); -- 2.30.2