From: J"orn Rennecke Date: Sat, 6 Jan 2001 09:06:13 +0000 (+0000) Subject: integrate.c (copy_rtx_and_substitute): When copying an ignored return value, strip... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ea55fa7ab15a88d60f3156c4ee22151da15cc8aa;p=gcc.git 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 --- 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);