aboutsummaryrefslogtreecommitdiff
path: root/gcc/resource.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/resource.c')
-rw-r--r--gcc/resource.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/resource.c b/gcc/resource.c
index f8a23ed..c4bcfd7 100644
--- a/gcc/resource.c
+++ b/gcc/resource.c
@@ -987,9 +987,13 @@ mark_target_live_regs (rtx_insn *insns, rtx target_maybe_return, struct resource
{
regset regs_live = DF_LR_IN (BASIC_BLOCK_FOR_FN (cfun, b));
rtx_insn *start_insn, *stop_insn;
+ df_ref def;
/* Compute hard regs live at start of block. */
REG_SET_TO_HARD_REG_SET (current_live_regs, regs_live);
+ FOR_EACH_ARTIFICIAL_DEF (def, b)
+ if (DF_REF_FLAGS (def) & DF_REF_AT_TOP)
+ SET_HARD_REG_BIT (current_live_regs, DF_REF_REGNO (def));
/* Get starting and ending insn, handling the case where each might
be a SEQUENCE. */