Hi, all,

In nds32 port, there is a wrong design in "casesi_internal" pattern.
Since clobber always discards the previous value, it should have
constraint modifier '=' so that LRA is able to correctly handle the
register live info.

So we have this patch to fix the issue.  Committed as Rev.218774.


Index: gcc/ChangeLog
===================================================================
--- gcc/ChangeLog       (revision 218773)
+++ gcc/ChangeLog       (working copy)
@@ -1,3 +1,9 @@
+2014-12-16  Chung-Ju Wu  <jasonw...@gmail.com>
+
+       PR target/64217
+       * config/nds32/nds32.md (casesi_internal): Add '=r' for clobber
+       register constraint.
+
 2014-12-15  DJ Delorie  <d...@redhat.com>

        * config/rl78/rl78.h: Remove SHORT_IMMEDIATES_SIGN_EXTEND.
Index: gcc/config/nds32/nds32.md
===================================================================
--- gcc/config/nds32/nds32.md   (revision 218773)
+++ gcc/config/nds32/nds32.md   (working copy)
@@ -2178,7 +2178,7 @@
                                             (const_int 4))
                                    (label_ref (match_operand 1 "" "")))))
              (use (label_ref (match_dup 1)))
-             (clobber (match_operand:SI 2 "register_operand" ""))
+             (clobber (match_operand:SI 2 "register_operand" "=r"))
              (clobber (reg:SI TA_REGNUM))])]
   ""
 {



Best regards,
jasonwucj

Reply via email to