(mark_target_live_regs): Fix bug in last change.
authorRichard Kenner <kenner@gcc.gnu.org>
Fri, 9 Oct 1992 18:13:13 +0000 (14:13 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Fri, 9 Oct 1992 18:13:13 +0000 (14:13 -0400)
From-SVN: r2385

gcc/reorg.c

index 869c79af7d40426a9f25dbccb0571d884bad4f66..4a87e40b8eb9166e58856a90362679718f44c20a 100644 (file)
@@ -2171,20 +2171,10 @@ mark_target_live_regs (target, res)
          if (GET_CODE (PATTERN (insn)) == USE)
            {
              /* If INSN is a USE made by update_block, we care about the
-                underlying insn.  Any registers set or referenced by the
-                underlying insn should be treated as if the insn were
-                located here without the USE.  */
+                underlying insn.  Any registers set by the underlying insn
+                are live since the insn is being done somewhere else.  */
              if (GET_RTX_CLASS (GET_CODE (XEXP (PATTERN (insn), 0))) == 'i')
-               {
-                 rtx inner = XEXP (PATTERN (insn), 0);
-
-                 mark_referenced_resources (inner, &needed, 1);
-                 mark_set_resources (inner, &set, 0, 1);
-
-                 COPY_HARD_REG_SET (scratch, set.regs);
-                 AND_COMPL_HARD_REG_SET (scratch, needed.regs);
-                 AND_COMPL_HARD_REG_SET (res->regs, scratch);
-               }
+               mark_set_resources (XEXP (PATTERN (insn), 0), res, 0, 1);
 
              /* All other USE insns are to be ignored.  */
              continue;