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