diff options
author | Christian Bruel <christian.bruel@st.com> | 2012-09-14 15:01:56 +0200 |
---|---|---|
committer | Christian Bruel <chrbr@gcc.gnu.org> | 2012-09-14 15:01:56 +0200 |
commit | 312f9b9de78c8074663a6450d49bd5113dea3509 (patch) | |
tree | 0251b245e6c8c92974ef525cc31ff5dfca381a8f | |
parent | 5f08ae1eb5eeb4c6f0c44df030e3de77f7da2125 (diff) | |
download | gcc-312f9b9de78c8074663a6450d49bd5113dea3509.zip gcc-312f9b9de78c8074663a6450d49bd5113dea3509.tar.gz gcc-312f9b9de78c8074663a6450d49bd5113dea3509.tar.bz2 |
predicates.md (t_reg_operand): Check REG_P for SUBREG.
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
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/sh/predicates.md | 3 | ||||
-rw-r--r-- | gcc/config/sh/sh.c | 8 |
3 files changed, 9 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index cf466dd..ad37bbe 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/config/sh/predicates.md b/gcc/config/sh/predicates.md index 3936ab2..8a4f7db 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 0abf28f..0de17d4 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 |