aboutsummaryrefslogtreecommitdiff
path: root/gcc/loop.c
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1994-06-18 13:44:41 -0700
committerJim Wilson <wilson@gcc.gnu.org>1994-06-18 13:44:41 -0700
commitf97d29ce9ccf582aca6ecbe1780a53b3e760aa8b (patch)
treea8675eebd5b6dab1c25313dba2592d73e419ad22 /gcc/loop.c
parent0eb111c2d9247d79c880474c8573a145fb06ac69 (diff)
downloadgcc-f97d29ce9ccf582aca6ecbe1780a53b3e760aa8b.zip
gcc-f97d29ce9ccf582aca6ecbe1780a53b3e760aa8b.tar.gz
gcc-f97d29ce9ccf582aca6ecbe1780a53b3e760aa8b.tar.bz2
(move_movables): Copy CALL_INSN_FUNCTION_USAGE field.
From-SVN: r7517
Diffstat (limited to 'gcc/loop.c')
-rw-r--r--gcc/loop.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/gcc/loop.c b/gcc/loop.c
index 6469707..dc39fdf 100644
--- a/gcc/loop.c
+++ b/gcc/loop.c
@@ -1786,7 +1786,14 @@ move_movables (movables, threshold, insn_count, loop_start, end, nregs)
fn_address_insn);
if (GET_CODE (temp) == CALL_INSN)
- i1 = emit_call_insn_before (body, loop_start);
+ {
+ i1 = emit_call_insn_before (body, loop_start);
+ /* Because the USAGE information potentially
+ contains objects other than hard registers
+ we need to copy it. */
+ CALL_INSN_FUNCTION_USAGE (i1) =
+ copy_rtx (CALL_INSN_FUNCTION_USAGE (temp));
+ }
else
i1 = emit_insn_before (body, loop_start);
if (first == 0)
@@ -1822,7 +1829,14 @@ move_movables (movables, threshold, insn_count, loop_start, end, nregs)
i1 = emit_insn_before (sequence, loop_start);
}
else if (GET_CODE (p) == CALL_INSN)
- i1 = emit_call_insn_before (PATTERN (p), loop_start);
+ {
+ i1 = emit_call_insn_before (PATTERN (p), loop_start);
+ /* Because the USAGE information potentially
+ contains objects other than hard registers
+ we need to copy it. */
+ CALL_INSN_FUNCTION_USAGE (i1) =
+ copy_rtx (CALL_INSN_FUNCTION_USAGE (p));
+ }
else
i1 = emit_insn_before (PATTERN (p), loop_start);