aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1994-05-06 17:53:31 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1994-05-06 17:53:31 -0400
commitd7e09326f25d83fde3215698ff2520e29c0828dd (patch)
tree11df0441dd9deb61f4c634d796f3bb94db6718a6
parentf88b0a82c36eefd3b89399ce2b8f8ce1968da8c5 (diff)
downloadgcc-d7e09326f25d83fde3215698ff2520e29c0828dd.zip
gcc-d7e09326f25d83fde3215698ff2520e29c0828dd.tar.gz
gcc-d7e09326f25d83fde3215698ff2520e29c0828dd.tar.bz2
(save_for_inline_copying, expand_inline_function): Copy
CALL_INSN_FUNCTION_USAGE field. From-SVN: r7248
-rw-r--r--gcc/integrate.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/gcc/integrate.c b/gcc/integrate.c
index eb31357..e0b6f7a 100644
--- a/gcc/integrate.c
+++ b/gcc/integrate.c
@@ -548,12 +548,17 @@ save_for_inline_copying (fndecl)
break;
case INSN:
- case CALL_INSN:
case JUMP_INSN:
+ case CALL_INSN:
copy = rtx_alloc (GET_CODE (insn));
+
+ if (GET_CODE (insn) == CALL_INSN)
+ CALL_INSN_FUNCTION_USAGE (copy) =
+ copy_for_inline (CALL_INSN_FUNCTION_USAGE (insn));
+
PATTERN (copy) = copy_for_inline (PATTERN (insn));
INSN_CODE (copy) = -1;
- LOG_LINKS (copy) = NULL;
+ LOG_LINKS (copy) = NULL_RTX;
RTX_INTEGRATED_P (copy) = RTX_INTEGRATED_P (insn);
break;
@@ -1758,6 +1763,11 @@ expand_inline_function (fndecl, parms, target, ignore, type, structure_value_add
pattern = copy_rtx_and_substitute (PATTERN (insn), map);
copy = emit_call_insn (pattern);
+ /* Because the USAGE information potentially contains objects other
+ than hard registers, we need to copy it. */
+ CALL_INSN_FUNCTION_USAGE (copy) =
+ copy_rtx_and_substitute (CALL_INSN_FUNCTION_USAGE (insn), map);
+
#ifdef HAVE_cc0
if (cc0_insn)
try_constants (cc0_insn, map);