aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorChristian Bruel <christian.bruel@st.com>2012-09-14 15:01:56 +0200
committerChristian Bruel <chrbr@gcc.gnu.org>2012-09-14 15:01:56 +0200
commit312f9b9de78c8074663a6450d49bd5113dea3509 (patch)
tree0251b245e6c8c92974ef525cc31ff5dfca381a8f /gcc
parent5f08ae1eb5eeb4c6f0c44df030e3de77f7da2125 (diff)
downloadgcc-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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/sh/predicates.md3
-rw-r--r--gcc/config/sh/sh.c8
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