]> gcc.gnu.org Git - gcc.git/commitdiff
re PR rtl-optimization/91136 (incorrect move of instruction to delay slot causes...
authorEric Botcazou <ebotcazou@adacore.com>
Fri, 12 Jul 2019 10:17:42 +0000 (10:17 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Fri, 12 Jul 2019 10:17:42 +0000 (10:17 +0000)
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: r273439

gcc/ChangeLog
gcc/df-core.c
gcc/resource.c

index 05cef9b2be1f4e1af57f914d4f9240b16abef6ca..0c98e8b7d44203611c053c3da3df3ee32c9c104a 100644 (file)
@@ -1,3 +1,10 @@
+2019-07-12  Eric Botcazou  <ebotcazou@adacore.com>
+
+       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.
+
 2019-06-28  Jeff Law  <law@redhat.com>
 
        Backport from mainline
index 19f4d3dae8ccc2be37b3ce79423eae5feccf7313..835200dd65158b46b818dc90fe563e8fd41781a6 100644 (file)
@@ -298,12 +298,12 @@ There are 4 ways to obtain access to refs:
 
    Artificial defs and uses occur both at the beginning and ends of blocks.
 
-     For blocks that area at the destination of eh edges, the
+     For blocks that are at the destination of eh edges, the
      artificial uses and defs occur at the beginning.  The defs relate
      to the registers specified in EH_RETURN_DATA_REGNO and the uses
-     relate to the registers specified in ED_USES.  Logically these
+     relate to the registers specified in EH_USES.  Logically these
      defs and uses should really occur along the eh edge, but there is
-     no convenient way to do this.  Artificial edges that occur at the
+     no convenient way to do this.  Artificial defs that occur at the
      beginning of the block have the DF_REF_AT_TOP flag set.
 
      Artificial uses occur at the end of all blocks.  These arise from
index 95911c5c718f8ae79a401c782624ec8a01a9e8ab..72e38ba2813ff4512363824cf9a29c15a805eb26 100644 (file)
@@ -966,9 +966,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.  */
This page took 0.076593 seconds and 5 git commands to generate.