summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2004-08-26 03:02:22 -0700
committerRichard Henderson <rth@gcc.gnu.org>2004-08-26 03:02:22 -0700
commit294c96a6338d8e65e5b83e1d3d17ec3c240b6e3b (patch)
tree70eecae0811773fa936e2b3124d299abdae7a123
parent746650b59eaae70de2a6e4daadeabbb40dec2f55 (diff)
downloadgcc-294c96a6338d8e65e5b83e1d3d17ec3c240b6e3b.tar.gz
re PR target/16974 (could not split insn (ice in final_scan_insn, final.c))
PR target/16974 * config/alpha/alpha.md (adddi_fp_hack): Don't rely on splitting if the constant satisfies add_operand. From-SVN: r86612
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/alpha/alpha.md11
2 files changed, 13 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2f76c2f5cda..24825c36138 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
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.
(alpha_expand_prologue): Handle >32-bit frames. Generate proper
diff --git a/gcc/config/alpha/alpha.md b/gcc/config/alpha/alpha.md
index 998e30055ae..d2b41fb0e53 100644
--- a/gcc/config/alpha/alpha.md
+++ b/gcc/config/alpha/alpha.md
@@ -438,9 +438,9 @@
;; 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
@@ -454,7 +454,10 @@
+ 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.