------- Comment #4 from paolo dot bonzini at lu dot unisi dot ch  2006-04-12 
14:09 -------
Subject: Re:  [4.2 Regression] gcc fails to build on sh64-elf
 targets


> I think the best solution is to have an INDEX_REG_CLASS_FOR_MODE macro,
> which defaults to INDEX_REG_CLASS.  Then this macro can be defined for the
> SH to return GENERAL_REGS for DImode when compiling SHmedia code.
>   
Thanks for the analysis.  I quickly tested that your approach works for 
Kaz's testcase.  However I don't feel confident enough to write this 
patch though -- and even less to document it.

Are you going to do it,  or should I go on and revert the regclass.c change?

This is what I tested BTW:

Index: reload.c
===================================================================
--- reload.c    (revision 112658)
+++ reload.c    (working copy)
@@ -5316,7 +5316,7 @@ find_reloads_address_1 (enum machine_mod
   RTX_CODE code = GET_CODE (x);

   if (context == 1)
-    context_reg_class = INDEX_REG_CLASS;
+    context_reg_class = GET_MODE (x) == DImode ? GENERAL_REGS : 
INDEX_REG_CLASS;
   else
     context_reg_class = base_reg_class (mode, outer_code, index_code);


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27117

Reply via email to