This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH, committed] SH: Fix PR58314 (unsatisfied constraints)

Hi Kaz, Oleg,

On 09/19/2013 01:15 AM, Kaz Kojima wrote:
> Christian Bruel <> wrote:
>> && (!can_create_pseudo_p () && REG_P (operands[0]) && REG_P (operands[1]))"
>> is necessary ?
> It looks an another hack to allow the 2nd and 3rd alternatives only
> when reloading.  If so, it might be a bit cleaner to use a special
> predicate like
This still looks complicated to me. I have tested for sh-superh-elf and
sh-linux the attached patch that just "fixes" the issue reported by
Richard with no regression and absolutely no differences in code
generation for CSIBe and a few other benches (eembc, coremark, ...). 
The spill alternatives are correctly selected and the original PR still

If OK I'd like to apply it to trunk/4.8. If there is the need for an
additional hack, How about sending it separately ?

Many thanks,

2013-09-13  Christian Bruel  <>

	* config/sh/ (mov<mode>_reg_reg): Use general_movd*_operand predicate and guard insn with reg only operand.

Index: gcc/config/sh/
--- gcc/config/sh/	(revision 202699)
+++ gcc/config/sh/	(working copy)
@@ -6894,9 +6894,11 @@ label:
 ;; reloading MAC subregs otherwise.  For that probably special patterns
 ;; would be required.
 (define_insn "*mov<mode>_reg_reg"
-  [(set (match_operand:QIHI 0 "arith_reg_dest" "=r,m,*z")
-	(match_operand:QIHI 1 "register_operand" "r,*z,m"))]
-  "TARGET_SH1 && !t_reg_operand (operands[1], VOIDmode)"
+  [(set (match_operand:QIHI 0 "general_movdst_operand" "=r,m,*z")
+	(match_operand:QIHI 1 "general_movsrc_operand" "r,*z,m"))]
+  "TARGET_SH1 && !t_reg_operand (operands[1], VOIDmode)
+   && arith_reg_dest (operands[0], <MODE>mode)
+   && register_operand (operands[1], <MODE>mode)"
     mov		%1,%0
     mov.<bw>	%1,%0

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]