aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKaz Kojima <kkojima@gcc.gnu.org>2009-04-16 21:58:59 +0000
committerKaz Kojima <kkojima@gcc.gnu.org>2009-04-16 21:58:59 +0000
commitb3f8558a56728c49f637ee6ad419aa4730ee8e4d (patch)
tree68eec846fd1427387251261ed77e3654bfacec06
parentf57597d9d09c55356b77b73bc6fe3f950d50ad7f (diff)
downloadgcc-b3f8558a56728c49f637ee6ad419aa4730ee8e4d.zip
gcc-b3f8558a56728c49f637ee6ad419aa4730ee8e4d.tar.gz
gcc-b3f8558a56728c49f637ee6ad419aa4730ee8e4d.tar.bz2
re PR target/39767 (libgcc2.c:562: internal compiler error: RTL check: expected code 'reg', have 'ashiftrt' in rhs_regno, at rtl.h:1005)
PR target/39767 * config/sh/predicates.md (arith_operand): Check if the operand of TRUNCATE is a REG. From-SVN: r146216
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/sh/predicates.md1
2 files changed, 7 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 581689b..7fba65d5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2009-04-16 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ PR target/39767
+ * config/sh/predicates.md (arith_operand): Check if the operand
+ of TRUNCATE is a REG.
+
2009-04-16 Kazu Hirata <kazu@codesourcery.com>
* cfgrtl.c (delete_insn_chain_and_edges): Remove.
diff --git a/gcc/config/sh/predicates.md b/gcc/config/sh/predicates.md
index f800db7..da9962c 100644
--- a/gcc/config/sh/predicates.md
+++ b/gcc/config/sh/predicates.md
@@ -112,6 +112,7 @@
|| satisfies_constraint_Css (op))
return 1;
else if (GET_CODE (op) == TRUNCATE
+ && GET_CODE (XEXP (op, 0)) == REG
&& ! system_reg_operand (XEXP (op, 0), VOIDmode)
&& (mode == VOIDmode || mode == GET_MODE (op))
&& (GET_MODE_SIZE (GET_MODE (op))