Commit 71a83373 by Jakub Jelinek Committed by Jakub Jelinek

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
parent a29b099d
2002-03-20 Jakub Jelinek <jakub@redhat.com> 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 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 * genemit.c (output_added_clobbers_hard_reg_p): Only output return
stmt if some case has been output. stmt if some case has been output.
......
...@@ -2190,7 +2190,7 @@ arc_final_prescan_insn (insn, opvec, noperands) ...@@ -2190,7 +2190,7 @@ arc_final_prescan_insn (insn, opvec, noperands)
if (!this_insn) if (!this_insn)
{ {
/* Oh dear! we ran off the end, give up. */ /* Oh dear! we ran off the end, give up. */
insn_extract (insn); extract_insn_cached (insn);
arc_ccfsm_state = 0; arc_ccfsm_state = 0;
arc_ccfsm_target_insn = NULL; arc_ccfsm_target_insn = NULL;
return; return;
...@@ -2212,9 +2212,8 @@ arc_final_prescan_insn (insn, opvec, noperands) ...@@ -2212,9 +2212,8 @@ arc_final_prescan_insn (insn, opvec, noperands)
/* Restore recog_data. Getting the attributes of other insns can /* Restore recog_data. Getting the attributes of other insns can
destroy this array, but final.c assumes that it remains intact destroy this array, but final.c assumes that it remains intact
across this call; since the insn has been recognized already we across this call. */
call insn_extract direct. */ extract_insn_cached (insn);
insn_extract (insn);
} }
} }
......
...@@ -583,9 +583,9 @@ ...@@ -583,9 +583,9 @@
(define_expand "movsicc" (define_expand "movsicc"
[(set (match_operand:SI 0 "register_operand" "") [(set (match_operand:SI 0 "register_operand" "")
(if_then_else (match_operand 1 "comparison_operator" "") (if_then_else:SI (match_operand 1 "comparison_operator" "")
(match_operand:SI 2 "nonmemory_operand" "") (match_operand:SI 2 "nonmemory_operand" "")
(match_operand:SI 3 "register_operand" "")))] (match_operand:SI 3 "register_operand" "")))]
"" ""
" "
{ {
...@@ -599,9 +599,9 @@ ...@@ -599,9 +599,9 @@
;(define_expand "movdicc" ;(define_expand "movdicc"
; [(set (match_operand:DI 0 "register_operand" "") ; [(set (match_operand:DI 0 "register_operand" "")
; (if_then_else (match_operand 1 "comparison_operator" "") ; (if_then_else:DI (match_operand 1 "comparison_operator" "")
; (match_operand:DI 2 "nonmemory_operand" "") ; (match_operand:DI 2 "nonmemory_operand" "")
; (match_operand:DI 3 "register_operand" "")))] ; (match_operand:DI 3 "register_operand" "")))]
; "0 /* ??? this would work better if we had cmpdi */" ; "0 /* ??? this would work better if we had cmpdi */"
; " ; "
;{ ;{
...@@ -612,12 +612,12 @@ ...@@ -612,12 +612,12 @@
; ;
; operands[1] = gen_rtx (code, VOIDmode, ccreg, const0_rtx); ; operands[1] = gen_rtx (code, VOIDmode, ccreg, const0_rtx);
;}") ;}")
(define_expand "movsfcc"
(define_expand "movsfcc"
[(set (match_operand:SF 0 "register_operand" "") [(set (match_operand:SF 0 "register_operand" "")
(if_then_else (match_operand 1 "comparison_operator" "") (if_then_else:SF (match_operand 1 "comparison_operator" "")
(match_operand:SF 2 "nonmemory_operand" "") (match_operand:SF 2 "nonmemory_operand" "")
(match_operand:SF 3 "register_operand" "")))] (match_operand:SF 3 "register_operand" "")))]
"" ""
" "
{ {
...@@ -631,9 +631,9 @@ ...@@ -631,9 +631,9 @@
;(define_expand "movdfcc" ;(define_expand "movdfcc"
; [(set (match_operand:DF 0 "register_operand" "") ; [(set (match_operand:DF 0 "register_operand" "")
; (if_then_else (match_operand 1 "comparison_operator" "") ; (if_then_else:DF (match_operand 1 "comparison_operator" "")
; (match_operand:DF 2 "nonmemory_operand" "") ; (match_operand:DF 2 "nonmemory_operand" "")
; (match_operand:DF 3 "register_operand" "")))] ; (match_operand:DF 3 "register_operand" "")))]
; "0 /* ??? can generate less efficient code if constants involved */" ; "0 /* ??? can generate less efficient code if constants involved */"
; " ; "
;{ ;{
...@@ -647,9 +647,9 @@ ...@@ -647,9 +647,9 @@
(define_insn "*movsicc_insn" (define_insn "*movsicc_insn"
[(set (match_operand:SI 0 "register_operand" "=r") [(set (match_operand:SI 0 "register_operand" "=r")
(if_then_else (match_operand 1 "comparison_operator" "") (if_then_else:SI (match_operand 1 "comparison_operator" "")
(match_operand:SI 2 "nonmemory_operand" "rJi") (match_operand:SI 2 "nonmemory_operand" "rJi")
(match_operand:SI 3 "register_operand" "0")))] (match_operand:SI 3 "register_operand" "0")))]
"" ""
"mov.%d1 %0,%S2" "mov.%d1 %0,%S2"
[(set_attr "type" "cmove")]) [(set_attr "type" "cmove")])
...@@ -657,9 +657,9 @@ ...@@ -657,9 +657,9 @@
; ??? This doesn't properly handle constants. ; ??? This doesn't properly handle constants.
;(define_insn "*movdicc_insn" ;(define_insn "*movdicc_insn"
; [(set (match_operand:DI 0 "register_operand" "=r,r") ; [(set (match_operand:DI 0 "register_operand" "=r,r")
; (if_then_else (match_operand 1 "comparison_operator" "") ; (if_then_else:DI (match_operand 1 "comparison_operator" "")
; (match_operand:DI 2 "nonmemory_operand" "r,Ji") ; (match_operand:DI 2 "nonmemory_operand" "r,Ji")
; (match_operand:DI 3 "register_operand" "0,0")))] ; (match_operand:DI 3 "register_operand" "0,0")))]
; "0" ; "0"
; "* ; "*
;{ ;{
...@@ -682,9 +682,9 @@ ...@@ -682,9 +682,9 @@
(define_insn "*movsfcc_insn" (define_insn "*movsfcc_insn"
[(set (match_operand:SF 0 "register_operand" "=r,r") [(set (match_operand:SF 0 "register_operand" "=r,r")
(if_then_else (match_operand 1 "comparison_operator" "") (if_then_else:SF (match_operand 1 "comparison_operator" "")
(match_operand:SF 2 "nonmemory_operand" "r,E") (match_operand:SF 2 "nonmemory_operand" "r,E")
(match_operand:SF 3 "register_operand" "0,0")))] (match_operand:SF 3 "register_operand" "0,0")))]
"" ""
"@ "@
mov.%d1 %0,%2 mov.%d1 %0,%2
...@@ -693,9 +693,9 @@ ...@@ -693,9 +693,9 @@
;(define_insn "*movdfcc_insn" ;(define_insn "*movdfcc_insn"
; [(set (match_operand:DF 0 "register_operand" "=r,r") ; [(set (match_operand:DF 0 "register_operand" "=r,r")
; (if_then_else (match_operand 1 "comparison_operator" "") ; (if_then_else:DF (match_operand 1 "comparison_operator" "")
; (match_operand:DF 2 "nonmemory_operand" "r,E") ; (match_operand:DF 2 "nonmemory_operand" "r,E")
; (match_operand:DF 3 "register_operand" "0,0")))] ; (match_operand:DF 3 "register_operand" "0,0")))]
; "0" ; "0"
; "* ; "*
;{ ;{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment