From 312f9b9de78c8074663a6450d49bd5113dea3509 Mon Sep 17 00:00:00 2001 From: Christian Bruel Date: Fri, 14 Sep 2012 15:01:56 +0200 Subject: [PATCH] predicates.md (t_reg_operand): Check REG_P for SUBREG. 2012-09-14 Christian Bruel * 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 | 5 +++++ gcc/config/sh/predicates.md | 3 ++- gcc/config/sh/sh.c | 8 ++------ 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index cf466ddfb0d..ad37bbe0260 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2012-09-14 Christian Bruel + + * 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 PR target/54564 diff --git a/gcc/config/sh/predicates.md b/gcc/config/sh/predicates.md index 3936ab2953f..8a4f7db044c 100644 --- a/gcc/config/sh/predicates.md +++ b/gcc/config/sh/predicates.md @@ -998,11 +998,12 @@ 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: diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index 0abf28facc2..0de17d41b79 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -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 -- 2.30.2