OSDN Git Service

PR target/16974
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 26 Aug 2004 10:03:38 +0000 (10:03 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 26 Aug 2004 10:03:38 +0000 (10:03 +0000)
        * config/alpha/alpha.md (adddi_fp_hack): Don't rely on splitting
        if the constant satisfies add_operand.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@86613 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/alpha/alpha.md

index b50cccb..a91c1a8 100644 (file)
@@ -1,4 +1,10 @@
 2004-08-25  Richard Henderson  <rth@redhat.com>
+
+        PR target/16974
+        * config/alpha/alpha.md (adddi_fp_hack): Don't rely on splitting
+        if the constant satisfies add_operand.
+
+2004-08-25  Richard Henderson  <rth@redhat.com>
  
         PR debug/10695
         * config/alpha/alpha.c (emit_frame_store_1, emit_frame_store): New.
index 4efff7c..1890c95 100644 (file)
 ;; and if we split before reload, we will require additional instructions.
 
 (define_insn "*adddi_fp_hack"
-  [(set (match_operand:DI 0 "register_operand" "=r")
-        (plus:DI (match_operand:DI 1 "reg_no_subreg_operand" "r")
-                (match_operand:DI 2 "const_int_operand" "n")))]
+  [(set (match_operand:DI 0 "register_operand" "=r,r,r")
+        (plus:DI (match_operand:DI 1 "reg_no_subreg_operand" "r,r,r")
+                (match_operand:DI 2 "const_int_operand" "K,L,n")))]
   "NONSTRICT_REG_OK_FP_BASE_P (operands[1])
    && INTVAL (operands[2]) >= 0
    /* This is the largest constant an lda+ldah pair can add, minus
                           + max_reg_num () * UNITS_PER_WORD
                           + current_function_pretend_args_size)
              - current_function_pretend_args_size))"
-  "#")
+  "@
+   lda %0,%2(%1)
+   ldah %0,%h2(%1)
+   #")
 
 ;; Don't do this if we are adjusting SP since we don't want to do it
 ;; in two steps.  Don't split FP sources for the reason listed above.