combine.c (combinable_i3pat): Do not make REG_DEAD notes for the stack pointer, frame...
authorJeff Law <law@gcc.gnu.org>
Wed, 5 May 1993 23:34:48 +0000 (17:34 -0600)
committerJeff Law <law@gcc.gnu.org>
Wed, 5 May 1993 23:34:48 +0000 (17:34 -0600)
* combine.c (combinable_i3pat): Do not make REG_DEAD notes for
the stack pointer, frame pointer or arg pointer.

From-SVN: r4345

gcc/combine.c

index cd5936d1e9b500a3bee0ef1824b5039692a5b309..66375ff68e5a86e419fff2d4e9ac861415870cf3 100644 (file)
@@ -1043,9 +1043,18 @@ combinable_i3pat (i3, loc, i2dest, i1dest, i1_not_in_src, pi3dest_killed)
        return 0;
 
       /* If DEST is used in I3, it is being killed in this insn,
-        so record that for later.  */
+        so record that for later. 
+        Never add REG_DEAD notes for the FRAME_POINTER_REGNUM or the
+        STACK_POINTER_REGNUM, since these are always considered to be
+        live.  Similarly for ARG_POINTER_REGNUM if it is fixed.  */
       if (pi3dest_killed && GET_CODE (dest) == REG
-         && reg_referenced_p (dest, PATTERN (i3)))
+         && reg_referenced_p (dest, PATTERN (i3))
+         && REGNO (dest) != FRAME_POINTER_REGNUM
+#if ARG_POINTER_REGNUM != FRAME_POINTER_REGNUM
+         && (REGNO (dest) != ARG_POINTER_REGNUM
+             || ! fixed_regs [REGNO (dest)])
+#endif
+         && REGNO (dest) != STACK_POINTER_REGNUM)
        {
          if (*pi3dest_killed)
            return 0;