aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.c
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1994-05-11 16:23:11 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1994-05-11 16:23:11 -0400
commit6d100794d0665f1b78d81faadbd967e6a45e9a49 (patch)
tree0f41ff986aaf9d88c4a665b347b9bc54e9a0ce01 /gcc/expr.c
parente59e60a78f6e12dabf8b71a44465e9b91422ce3b (diff)
downloadgcc-6d100794d0665f1b78d81faadbd967e6a45e9a49.zip
gcc-6d100794d0665f1b78d81faadbd967e6a45e9a49.tar.gz
gcc-6d100794d0665f1b78d81faadbd967e6a45e9a49.tar.bz2
(expand_builtin_apply): Put new function usage data at end of any data
already there. From-SVN: r7274
Diffstat (limited to 'gcc/expr.c')
-rw-r--r--gcc/expr.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index 2d31f9e..244a84c 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -7817,8 +7817,20 @@ expand_builtin_apply (function, arguments, argsize)
if (! call_insn)
abort ();
- /* Put the register usage information on the CALL. */
- CALL_INSN_FUNCTION_USAGE (call_insn) = call_fusage;
+ /* Put the register usage information on the CALL. If there is already
+ some usage information, put ours at the end. */
+ if (CALL_INSN_FUNCTION_USAGE (call_insn))
+ {
+ rtx link;
+
+ for (link = CALL_INSN_FUNCTION_USAGE (call_insn); XEXP (link, 1) != 0;
+ link = XEXP (link, 1))
+ ;
+
+ XEXP (link, 1) = call_fusage;
+ }
+ else
+ CALL_INSN_FUNCTION_USAGE (call_insn) = call_fusage;
/* Restore the stack. */
emit_stack_restore (SAVE_BLOCK, old_stack_level, NULL_RTX);