re PR target/21283 (ICE with doubles)
authorRoger Sayle <roger@eyesopen.com>
Sun, 23 Apr 2006 17:44:46 +0000 (17:44 +0000)
committerRoger Sayle <sayle@gcc.gnu.org>
Sun, 23 Apr 2006 17:44:46 +0000 (17:44 +0000)
PR target/21283
* config/fr30/fr30.md (define_split): Avoid calling gen_lowpart on
a SImode SUBREG of a floating point register after no_new_pseudos.

From-SVN: r113198

gcc/ChangeLog
gcc/config/fr30/fr30.md

index 91293c1dfbbacd15e9325463ebee38e1becfbcaa..ea6d17b2b236eead66c14ca58c41f7a42c1f6bc1 100644 (file)
@@ -1,3 +1,9 @@
+2006-04-23  Roger Sayle  <roger@eyesopen.com>
+
+       PR target/21283
+       * config/fr30/fr30.md (define_split): Avoid calling gen_lowpart on
+       a SImode SUBREG of a floating point register after no_new_pseudos.
+
 2006-04-23  Roger Sayle  <roger@eyesopen.com>
 
        * config/fr30/fr30.md (addsi_small_int): Use REGNO_PTR_FRAME_P to
index 0398eccc005a8d1687e3970d4bdd20f3f9bf70fd..0deda961e85688353dbc12db57cba7dc06fd7625 100644 (file)
 (define_split
   [(set (match_operand:SI 0 "register_operand"  "")
        (match_operand:SI 1 "const_int_operand" ""))]
-   "INTVAL (operands[1]) <= -1 && INTVAL (operands[1]) >= -128"
+   "INTVAL (operands[1]) <= -1 && INTVAL (operands[1]) >= -128
+    && (GET_CODE (operands[0]) != SUBREG
+       || SCALAR_INT_MODE_P (GET_MODE (XEXP (operands[0], 0))))"
    [(set:SI (match_dup 0) (match_dup 1))
     (set:SI (match_dup 0) (sign_extend:SI (match_dup 2)))]
    "{