aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonald Lindsay <dlindsay@cygnus.com>2000-09-27 21:08:33 +0000
committerDon Lindsay <dlindsay@gcc.gnu.org>2000-09-27 21:08:33 +0000
commite93eff9433088e058245212256b3f03f34562817 (patch)
tree891de3b07109657a8b0a284d545ddec5a5a4e28e
parent59c5d27a6960eede3585659d5c250a095c4a62d9 (diff)
downloadgcc-e93eff9433088e058245212256b3f03f34562817.zip
gcc-e93eff9433088e058245212256b3f03f34562817.tar.gz
gcc-e93eff9433088e058245212256b3f03f34562817.tar.bz2
Patch by rth to fix inline-of-an-inline return-value bug.
From-SVN: r36654
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/integrate.c7
2 files changed, 12 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f2386a0..67a022e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Wed Sep 27 14:00:07 2000 Donald Lindsay <dlindsay@cygnus.com>
+
+ * integrate.c (copy_insn_list): if an ignored return value
+ is being clobbered, skip cloning that into the inline copy.
+
2000-09-27 Joseph S. Myers <jsm28@cam.ac.uk>
* extend.texi, invoke.texi, gcc.texi, install.texi: Consistently
diff --git a/gcc/integrate.c b/gcc/integrate.c
index 79fbce6..cc3a558 100644
--- a/gcc/integrate.c
+++ b/gcc/integrate.c
@@ -1294,6 +1294,13 @@ copy_insn_list (insns, map, static_chain_value)
break;
}
+ /* Similarly if an ignored return value is clobbered. */
+ else if (map->inline_target == 0
+ && GET_CODE (pattern) == CLOBBER
+ && GET_CODE (XEXP (pattern, 0)) == REG
+ && REG_FUNCTION_VALUE_P (XEXP (pattern, 0)))
+ break;
+
/* If this is setting the static chain rtx, omit it. */
else if (static_chain_value != 0
&& set != 0