aboutsummaryrefslogtreecommitdiff
path: root/gcc/resource.c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2019-07-12 10:15:39 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2019-07-12 10:15:39 +0000
commit49dbd6a0325f510af43b05bc0b91426779b4ed59 (patch)
tree219431365adbc550268ee861300f0c8b2fa5556b /gcc/resource.c
parent831e688af50c5f77a2daa3cd3bfd0f27d54d5d72 (diff)
downloadgcc-49dbd6a0325f510af43b05bc0b91426779b4ed59.zip
gcc-49dbd6a0325f510af43b05bc0b91426779b4ed59.tar.gz
gcc-49dbd6a0325f510af43b05bc0b91426779b4ed59.tar.bz2
re PR rtl-optimization/91136 (incorrect move of instruction to delay slot causes application crash in exception handling)
PR rtl-optimization/91136 * df-core.c (ACCESSING REFS): Fix typos in comment. * resource.c (mark_target_live_reg): Add artificial defs that occur at the beginning of the block to the initial set of live registers. From-SVN: r273436
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. */