From b3f8558a56728c49f637ee6ad419aa4730ee8e4d Mon Sep 17 00:00:00 2001 From: Kaz Kojima Date: Thu, 16 Apr 2009 21:58:59 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 6 ++++++ gcc/config/sh/predicates.md | 1 + 2 files changed, 7 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 581689b43c20..7fba65d5db87 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2009-04-16 Kaz Kojima + + PR target/39767 + * config/sh/predicates.md (arith_operand): Check if the operand + of TRUNCATE is a REG. + 2009-04-16 Kazu Hirata * cfgrtl.c (delete_insn_chain_and_edges): Remove. diff --git a/gcc/config/sh/predicates.md b/gcc/config/sh/predicates.md index f800db7b7d17..da9962c9984c 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))