aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2002-03-20 23:02:06 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2002-03-20 23:02:06 +0100
commit71a833733ef29741deca3c90a5e9bae622a815e4 (patch)
tree35f5c03d04379479108b5696b185dcc1b2472a12
parenta29b099d7aa8f3819b5791f69b1d5e346e2a1018 (diff)
downloadgcc-71a833733ef29741deca3c90a5e9bae622a815e4.zip
gcc-71a833733ef29741deca3c90a5e9bae622a815e4.tar.gz
gcc-71a833733ef29741deca3c90a5e9bae622a815e4.tar.bz2
re PR target/4792 (Internal compiler error building libgcc2 for arc-elf target)
PR target/4792 * config/arc/arc.md (movsicc, movdicc, movsfcc, movdfcc): Add mode to if_then_else. (movsicc_insn, movdicc_insn, movsfcc_insn, movdfcc_insn): Likewise. * config/arc/arc.c (arc_final_prescan_insn): Use extract_insn_cached instead of insn_extract. From-SVN: r51090
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/config/arc/arc.c7
-rw-r--r--gcc/config/arc/arc.md50
3 files changed, 38 insertions, 30 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 131cd9e..b38eaca 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,7 +1,16 @@
2002-03-20 Jakub Jelinek <jakub@redhat.com>
+ PR target/4792
+ * config/arc/arc.md (movsicc, movdicc, movsfcc, movdfcc): Add mode
+ to if_then_else.
+ (movsicc_insn, movdicc_insn, movsfcc_insn, movdfcc_insn): Likewise.
+ * config/arc/arc.c (arc_final_prescan_insn): Use extract_insn_cached
+ instead of insn_extract.
+
+2002-03-20 Jakub Jelinek <jakub@redhat.com>
+
PR bootstrap/4192
- * config/fr30/fr30.md (jump): Comment out clobber of fixed register.
+ * config/fr30/fr30.md (jump): Remove clobber of fixed register.
* genemit.c (output_added_clobbers_hard_reg_p): Only output return
stmt if some case has been output.
diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c
index d3adb74..663f50b 100644
--- a/gcc/config/arc/arc.c
+++ b/gcc/config/arc/arc.c
@@ -2190,7 +2190,7 @@ arc_final_prescan_insn (insn, opvec, noperands)
if (!this_insn)
{
/* Oh dear! we ran off the end, give up. */
- insn_extract (insn);
+ extract_insn_cached (insn);
arc_ccfsm_state = 0;
arc_ccfsm_target_insn = NULL;
return;
@@ -2212,9 +2212,8 @@ arc_final_prescan_insn (insn, opvec, noperands)
/* Restore recog_data. Getting the attributes of other insns can
destroy this array, but final.c assumes that it remains intact
- across this call; since the insn has been recognized already we
- call insn_extract direct. */
- insn_extract (insn);
+ across this call. */
+ extract_insn_cached (insn);
}
}
diff --git a/gcc/config/arc/arc.md b/gcc/config/arc/arc.md
index d10abe6..4df42cc 100644
--- a/gcc/config/arc/arc.md
+++ b/gcc/config/arc/arc.md
@@ -583,9 +583,9 @@
(define_expand "movsicc"
[(set (match_operand:SI 0 "register_operand" "")
- (if_then_else (match_operand 1 "comparison_operator" "")
- (match_operand:SI 2 "nonmemory_operand" "")
- (match_operand:SI 3 "register_operand" "")))]
+ (if_then_else:SI (match_operand 1 "comparison_operator" "")
+ (match_operand:SI 2 "nonmemory_operand" "")
+ (match_operand:SI 3 "register_operand" "")))]
""
"
{
@@ -599,9 +599,9 @@
;(define_expand "movdicc"
; [(set (match_operand:DI 0 "register_operand" "")
-; (if_then_else (match_operand 1 "comparison_operator" "")
-; (match_operand:DI 2 "nonmemory_operand" "")
-; (match_operand:DI 3 "register_operand" "")))]
+; (if_then_else:DI (match_operand 1 "comparison_operator" "")
+; (match_operand:DI 2 "nonmemory_operand" "")
+; (match_operand:DI 3 "register_operand" "")))]
; "0 /* ??? this would work better if we had cmpdi */"
; "
;{
@@ -612,12 +612,12 @@
;
; operands[1] = gen_rtx (code, VOIDmode, ccreg, const0_rtx);
;}")
-(define_expand "movsfcc"
+(define_expand "movsfcc"
[(set (match_operand:SF 0 "register_operand" "")
- (if_then_else (match_operand 1 "comparison_operator" "")
- (match_operand:SF 2 "nonmemory_operand" "")
- (match_operand:SF 3 "register_operand" "")))]
+ (if_then_else:SF (match_operand 1 "comparison_operator" "")
+ (match_operand:SF 2 "nonmemory_operand" "")
+ (match_operand:SF 3 "register_operand" "")))]
""
"
{
@@ -631,9 +631,9 @@
;(define_expand "movdfcc"
; [(set (match_operand:DF 0 "register_operand" "")
-; (if_then_else (match_operand 1 "comparison_operator" "")
-; (match_operand:DF 2 "nonmemory_operand" "")
-; (match_operand:DF 3 "register_operand" "")))]
+; (if_then_else:DF (match_operand 1 "comparison_operator" "")
+; (match_operand:DF 2 "nonmemory_operand" "")
+; (match_operand:DF 3 "register_operand" "")))]
; "0 /* ??? can generate less efficient code if constants involved */"
; "
;{
@@ -647,9 +647,9 @@
(define_insn "*movsicc_insn"
[(set (match_operand:SI 0 "register_operand" "=r")
- (if_then_else (match_operand 1 "comparison_operator" "")
- (match_operand:SI 2 "nonmemory_operand" "rJi")
- (match_operand:SI 3 "register_operand" "0")))]
+ (if_then_else:SI (match_operand 1 "comparison_operator" "")
+ (match_operand:SI 2 "nonmemory_operand" "rJi")
+ (match_operand:SI 3 "register_operand" "0")))]
""
"mov.%d1 %0,%S2"
[(set_attr "type" "cmove")])
@@ -657,9 +657,9 @@
; ??? This doesn't properly handle constants.
;(define_insn "*movdicc_insn"
; [(set (match_operand:DI 0 "register_operand" "=r,r")
-; (if_then_else (match_operand 1 "comparison_operator" "")
-; (match_operand:DI 2 "nonmemory_operand" "r,Ji")
-; (match_operand:DI 3 "register_operand" "0,0")))]
+; (if_then_else:DI (match_operand 1 "comparison_operator" "")
+; (match_operand:DI 2 "nonmemory_operand" "r,Ji")
+; (match_operand:DI 3 "register_operand" "0,0")))]
; "0"
; "*
;{
@@ -682,9 +682,9 @@
(define_insn "*movsfcc_insn"
[(set (match_operand:SF 0 "register_operand" "=r,r")
- (if_then_else (match_operand 1 "comparison_operator" "")
- (match_operand:SF 2 "nonmemory_operand" "r,E")
- (match_operand:SF 3 "register_operand" "0,0")))]
+ (if_then_else:SF (match_operand 1 "comparison_operator" "")
+ (match_operand:SF 2 "nonmemory_operand" "r,E")
+ (match_operand:SF 3 "register_operand" "0,0")))]
""
"@
mov.%d1 %0,%2
@@ -693,9 +693,9 @@
;(define_insn "*movdfcc_insn"
; [(set (match_operand:DF 0 "register_operand" "=r,r")
-; (if_then_else (match_operand 1 "comparison_operator" "")
-; (match_operand:DF 2 "nonmemory_operand" "r,E")
-; (match_operand:DF 3 "register_operand" "0,0")))]
+; (if_then_else:DF (match_operand 1 "comparison_operator" "")
+; (match_operand:DF 2 "nonmemory_operand" "r,E")
+; (match_operand:DF 3 "register_operand" "0,0")))]
; "0"
; "*
;{