I've applied the attached patch to fix PR target/62111 which
is a sh64 specific 4.9/5 regression.
It seems that *zero_extendhisi2_media makes reload unhappy
with permitting (truncate (pseudo_reg)) when pseudo_reg can
be substituted by mem.  See

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62111

for details.  Tested on sh64-elf and sh4-unknown-linux-gnu with
no new failures.  I'll backport this to 4.9 in a week or so.

Regards,
        kaz
--
2014-08-25  Kaz Kojima  <kkoj...@gcc.gnu.org>

        PR target/62111
        * config/sh/predicates.md (general_extend_operand): Disable
        TRUNCATE before reload completes.

--- gcc/config/sh/predicates.md.orig    2014-08-02 11:55:29.228875715 +0900
+++ gcc/config/sh/predicates.md 2014-08-17 08:30:20.439326569 +0900
@@ -398,7 +398,7 @@
 (define_predicate "general_extend_operand"
   (match_code "subreg,reg,mem,truncate")
 {
-  if (GET_CODE (op) == TRUNCATE)
+  if (reload_completed && GET_CODE (op) == TRUNCATE)
     return arith_operand (op, mode);
 
   if (MEM_P (op) || (GET_CODE (op) == SUBREG && MEM_P (SUBREG_REG (op))))

Reply via email to