aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/reorg.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/reorg.c b/gcc/reorg.c
index e237b07..b750528 100644
--- a/gcc/reorg.c
+++ b/gcc/reorg.c
@@ -2081,6 +2081,12 @@ mark_target_live_regs (target, res)
#endif
)
CLEAR_HARD_REG_BIT (current_live_regs, i);
+
+ /* A CALL_INSN sets any global register live, since it may
+ have been modified by the call. */
+ for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
+ if (global_regs[i])
+ SET_HARD_REG_BIT (current_live_regs, i);
}
/* Mark anything killed in an insn to be deadened at the next