aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2003-06-26 13:46:47 -0700
committerRichard Henderson <rth@gcc.gnu.org>2003-06-26 13:46:47 -0700
commitf6a1f3f6caf8c89ce689b2cc3882edddfee9ea3a (patch)
tree4c7f7fcade725078185a688569b6cd43d0e5d4b5
parent99af0d26bd5e46ec40030ff2d3c68029d7129aa9 (diff)
downloadgcc-f6a1f3f6caf8c89ce689b2cc3882edddfee9ea3a.zip
gcc-f6a1f3f6caf8c89ce689b2cc3882edddfee9ea3a.tar.gz
gcc-f6a1f3f6caf8c89ce689b2cc3882edddfee9ea3a.tar.bz2
emit-rtl.c (try_split): Append to new CALL_INSN_FUNCTION_USAGE instead of replacing it.
* emit-rtl.c (try_split): Append to new CALL_INSN_FUNCTION_USAGE instead of replacing it. From-SVN: r68547
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/emit-rtl.c6
2 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 31b9815..8c89ca0 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,4 +1,9 @@
2003-06-26 Richard Henderson <rth@redhat.com>
+
+ * emit-rtl.c (try_split): Append to new CALL_INSN_FUNCTION_USAGE
+ instead of replacing it.
+
+2003-06-26 Richard Henderson <rth@redhat.com>
* flow.c (propagate_one_insn): Kill function return value
registers across tail calls.
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index 3f444a9..908b12d 100644
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -3510,8 +3510,10 @@ try_split (pat, trial, last)
for (insn = insn_last; insn ; insn = PREV_INSN (insn))
if (GET_CODE (insn) == CALL_INSN)
{
- CALL_INSN_FUNCTION_USAGE (insn)
- = CALL_INSN_FUNCTION_USAGE (trial);
+ rtx *p = &CALL_INSN_FUNCTION_USAGE (insn);
+ while (*p)
+ p = &XEXP (*p, 1);
+ *p = CALL_INSN_FUNCTION_USAGE (trial);
SIBLING_CALL_P (insn) = SIBLING_CALL_P (trial);
}
}