predicates.md (t_reg_operand): Check REG_P for SUBREG.
authorChristian Bruel <christian.bruel@st.com>
Fri, 14 Sep 2012 13:01:56 +0000 (15:01 +0200)
committerChristian Bruel <chrbr@gcc.gnu.org>
Fri, 14 Sep 2012 13:01:56 +0000 (15:01 +0200)
2012-09-14  Christian Bruel  <christian.bruel@st.com>

       * config/sh/predicates.md (t_reg_operand): Check REG_P for SUBREG.
       * config/sh/sh.c (sequence_insn_p: Check INSNP_P for SEQUENCE.

From-SVN: r191300

gcc/ChangeLog
gcc/config/sh/predicates.md
gcc/config/sh/sh.c

index cf466ddfb0d19ce4bf59af2ffa10de9ccb945801..ad37bbe02606c25c25a27716111f2f79162c7e18 100644 (file)
@@ -1,3 +1,8 @@
+2012-09-14  Christian Bruel  <christian.bruel@st.com>
+
+       * config/sh/predicates.md (t_reg_operand): Check REG_P for SUBREG.
+       * config/sh/sh.c (sequence_insn_p: Check INSNP_P for SEQUENCE.
+
 2012-09-14  Jakub Jelinek  <jakub@redhat.com>
 
        PR target/54564
index 3936ab2953f8c9db9aef0e6667417b3440a65dde..8a4f7db044cdfb375f8f942261793ee11b5d6446 100644 (file)
        return REGNO (op) == T_REG;
 
       case SUBREG:
-       return REGNO (SUBREG_REG (op)) == T_REG;
+       return REG_P (SUBREG_REG (op)) && REGNO (SUBREG_REG (op)) == T_REG;
 
       case ZERO_EXTEND:
       case SIGN_EXTEND:
        return GET_CODE (XEXP (op, 0)) == SUBREG
+              && REG_P (SUBREG_REG (XEXP (op, 0)))
               && REGNO (SUBREG_REG (XEXP (op, 0))) == T_REG;
 
       default:
index 0abf28facc2106487d292c71ab6e93a31d00ca4c..0de17d41b7959770947e53d1fc319bdebec71ee7 100644 (file)
@@ -9876,7 +9876,7 @@ fpscr_set_from_mem (int mode, HARD_REG_SET regs_live)
 static bool
 sequence_insn_p (rtx insn)
 {
-  rtx prev, next, pat;
+  rtx prev, next;
 
   prev = PREV_INSN (insn);
   if (prev == NULL)
@@ -9886,11 +9886,7 @@ sequence_insn_p (rtx insn)
   if (next == NULL)
     return false;
 
-  pat = PATTERN (next);
-  if (pat == NULL)
-    return false;
-
-  return GET_CODE (pat) == SEQUENCE;
+  return INSN_P (next) && GET_CODE (PATTERN (next)) == SEQUENCE;
 }
 
 int