Commit cb15d1d3 by John David Anglin

re PR target/93111 (FAIL: gfortran.fortran-torture/compile/pr32663.f, -O3 -g …

re PR target/93111 (FAIL: gfortran.fortran-torture/compile/pr32663.f,  -O3 -g   (internal compiler error))

	PR target/93111
	* config/pa/pa.md (scc): Use ordered_comparison_operator instead of
	comparison_operator in B and S integer comparisons.  Likewise, use
	ordered_comparison_operator instead of cmpib_comparison_operator in
	cmpib patterns.
	* config/pa/predicates.md (cmpib_comparison_operator): Remove.

From-SVN: r279818
parent a8497ec6
2020-01-01 John David Anglin <danglin@gcc.gnu.org>
PR target/93111
* config/pa/pa.md (scc): Use ordered_comparison_operator instead of
comparison_operator in B and S integer comparisons. Likewise, use
ordered_comparison_operator instead of cmpib_comparison_operator in
cmpib patterns.
* config/pa/predicates.md (cmpib_comparison_operator): Remove.
2020-01-01 Jakub Jelinek <jakub@redhat.com> 2020-01-01 Jakub Jelinek <jakub@redhat.com>
Update copyright years. Update copyright years.
......
...@@ -765,7 +765,7 @@ ...@@ -765,7 +765,7 @@
(define_insn "scc" (define_insn "scc"
[(set (match_operand:SI 0 "register_operand" "=r") [(set (match_operand:SI 0 "register_operand" "=r")
(match_operator:SI 3 "comparison_operator" (match_operator:SI 3 "ordered_comparison_operator"
[(match_operand:SI 1 "reg_or_0_operand" "rM") [(match_operand:SI 1 "reg_or_0_operand" "rM")
(match_operand:SI 2 "arith11_operand" "rI")]))] (match_operand:SI 2 "arith11_operand" "rI")]))]
"" ""
...@@ -775,7 +775,7 @@ ...@@ -775,7 +775,7 @@
(define_insn "" (define_insn ""
[(set (match_operand:DI 0 "register_operand" "=r") [(set (match_operand:DI 0 "register_operand" "=r")
(match_operator:DI 3 "comparison_operator" (match_operator:DI 3 "ordered_comparison_operator"
[(match_operand:DI 1 "reg_or_0_operand" "rM") [(match_operand:DI 1 "reg_or_0_operand" "rM")
(match_operand:DI 2 "arith11_operand" "rI")]))] (match_operand:DI 2 "arith11_operand" "rI")]))]
"TARGET_64BIT" "TARGET_64BIT"
...@@ -785,10 +785,10 @@ ...@@ -785,10 +785,10 @@
(define_insn "iorscc" (define_insn "iorscc"
[(set (match_operand:SI 0 "register_operand" "=r") [(set (match_operand:SI 0 "register_operand" "=r")
(ior:SI (match_operator:SI 3 "comparison_operator" (ior:SI (match_operator:SI 3 "ordered_comparison_operator"
[(match_operand:SI 1 "reg_or_0_operand" "rM") [(match_operand:SI 1 "reg_or_0_operand" "rM")
(match_operand:SI 2 "arith11_operand" "rI")]) (match_operand:SI 2 "arith11_operand" "rI")])
(match_operator:SI 6 "comparison_operator" (match_operator:SI 6 "ordered_comparison_operator"
[(match_operand:SI 4 "reg_or_0_operand" "rM") [(match_operand:SI 4 "reg_or_0_operand" "rM")
(match_operand:SI 5 "arith11_operand" "rI")])))] (match_operand:SI 5 "arith11_operand" "rI")])))]
"" ""
...@@ -798,10 +798,10 @@ ...@@ -798,10 +798,10 @@
(define_insn "" (define_insn ""
[(set (match_operand:DI 0 "register_operand" "=r") [(set (match_operand:DI 0 "register_operand" "=r")
(ior:DI (match_operator:DI 3 "comparison_operator" (ior:DI (match_operator:DI 3 "ordered_comparison_operator"
[(match_operand:DI 1 "reg_or_0_operand" "rM") [(match_operand:DI 1 "reg_or_0_operand" "rM")
(match_operand:DI 2 "arith11_operand" "rI")]) (match_operand:DI 2 "arith11_operand" "rI")])
(match_operator:DI 6 "comparison_operator" (match_operator:DI 6 "ordered_comparison_operator"
[(match_operand:DI 4 "reg_or_0_operand" "rM") [(match_operand:DI 4 "reg_or_0_operand" "rM")
(match_operand:DI 5 "arith11_operand" "rI")])))] (match_operand:DI 5 "arith11_operand" "rI")])))]
"TARGET_64BIT" "TARGET_64BIT"
...@@ -813,7 +813,7 @@ ...@@ -813,7 +813,7 @@
;; from an scc insn (negscc and incscc). ;; from an scc insn (negscc and incscc).
(define_insn "negscc" (define_insn "negscc"
[(set (match_operand:SI 0 "register_operand" "=r") [(set (match_operand:SI 0 "register_operand" "=r")
(neg:SI (match_operator:SI 3 "comparison_operator" (neg:SI (match_operator:SI 3 "ordered_comparison_operator"
[(match_operand:SI 1 "reg_or_0_operand" "rM") [(match_operand:SI 1 "reg_or_0_operand" "rM")
(match_operand:SI 2 "arith11_operand" "rI")])))] (match_operand:SI 2 "arith11_operand" "rI")])))]
"" ""
...@@ -823,7 +823,7 @@ ...@@ -823,7 +823,7 @@
(define_insn "" (define_insn ""
[(set (match_operand:DI 0 "register_operand" "=r") [(set (match_operand:DI 0 "register_operand" "=r")
(neg:DI (match_operator:DI 3 "comparison_operator" (neg:DI (match_operator:DI 3 "ordered_comparison_operator"
[(match_operand:DI 1 "reg_or_0_operand" "rM") [(match_operand:DI 1 "reg_or_0_operand" "rM")
(match_operand:DI 2 "arith11_operand" "rI")])))] (match_operand:DI 2 "arith11_operand" "rI")])))]
"TARGET_64BIT" "TARGET_64BIT"
...@@ -904,7 +904,7 @@ ...@@ -904,7 +904,7 @@
(define_insn "incscc" (define_insn "incscc"
[(set (match_operand:SI 0 "register_operand" "=r,r") [(set (match_operand:SI 0 "register_operand" "=r,r")
(plus:SI (match_operator:SI 4 "comparison_operator" (plus:SI (match_operator:SI 4 "ordered_comparison_operator"
[(match_operand:SI 2 "register_operand" "r,r") [(match_operand:SI 2 "register_operand" "r,r")
(match_operand:SI 3 "arith11_operand" "rI,rI")]) (match_operand:SI 3 "arith11_operand" "rI,rI")])
(match_operand:SI 1 "register_operand" "0,?r")))] (match_operand:SI 1 "register_operand" "0,?r")))]
...@@ -917,7 +917,7 @@ ...@@ -917,7 +917,7 @@
(define_insn "" (define_insn ""
[(set (match_operand:DI 0 "register_operand" "=r,r") [(set (match_operand:DI 0 "register_operand" "=r,r")
(plus:DI (match_operator:DI 4 "comparison_operator" (plus:DI (match_operator:DI 4 "ordered_comparison_operator"
[(match_operand:DI 2 "register_operand" "r,r") [(match_operand:DI 2 "register_operand" "r,r")
(match_operand:DI 3 "arith11_operand" "rI,rI")]) (match_operand:DI 3 "arith11_operand" "rI,rI")])
(match_operand:DI 1 "register_operand" "0,?r")))] (match_operand:DI 1 "register_operand" "0,?r")))]
...@@ -1062,7 +1062,7 @@ ...@@ -1062,7 +1062,7 @@
(define_insn "decscc" (define_insn "decscc"
[(set (match_operand:SI 0 "register_operand" "=r,r") [(set (match_operand:SI 0 "register_operand" "=r,r")
(minus:SI (match_operand:SI 1 "register_operand" "0,?r") (minus:SI (match_operand:SI 1 "register_operand" "0,?r")
(match_operator:SI 4 "comparison_operator" (match_operator:SI 4 "ordered_comparison_operator"
[(match_operand:SI 2 "register_operand" "r,r") [(match_operand:SI 2 "register_operand" "r,r")
(match_operand:SI 3 "arith11_operand" "rI,rI")])))] (match_operand:SI 3 "arith11_operand" "rI,rI")])))]
"" ""
...@@ -1075,7 +1075,7 @@ ...@@ -1075,7 +1075,7 @@
(define_insn "" (define_insn ""
[(set (match_operand:DI 0 "register_operand" "=r,r") [(set (match_operand:DI 0 "register_operand" "=r,r")
(minus:DI (match_operand:DI 1 "register_operand" "0,?r") (minus:DI (match_operand:DI 1 "register_operand" "0,?r")
(match_operator:DI 4 "comparison_operator" (match_operator:DI 4 "ordered_comparison_operator"
[(match_operand:DI 2 "register_operand" "r,r") [(match_operand:DI 2 "register_operand" "r,r")
(match_operand:DI 3 "arith11_operand" "rI,rI")])))] (match_operand:DI 3 "arith11_operand" "rI,rI")])))]
"TARGET_64BIT" "TARGET_64BIT"
...@@ -1242,7 +1242,7 @@ ...@@ -1242,7 +1242,7 @@
(define_expand "movsicc" (define_expand "movsicc"
[(set (match_operand:SI 0 "register_operand" "") [(set (match_operand:SI 0 "register_operand" "")
(if_then_else:SI (if_then_else:SI
(match_operand 1 "comparison_operator" "") (match_operand 1 "ordered_comparison_operator" "")
(match_operand:SI 2 "reg_or_cint_move_operand" "") (match_operand:SI 2 "reg_or_cint_move_operand" "")
(match_operand:SI 3 "reg_or_cint_move_operand" "")))] (match_operand:SI 3 "reg_or_cint_move_operand" "")))]
"" ""
...@@ -1264,7 +1264,7 @@ ...@@ -1264,7 +1264,7 @@
(define_insn "" (define_insn ""
[(set (match_operand:SI 0 "register_operand" "=r,r,r,r") [(set (match_operand:SI 0 "register_operand" "=r,r,r,r")
(if_then_else:SI (if_then_else:SI
(match_operator 2 "comparison_operator" (match_operator 2 "ordered_comparison_operator"
[(match_operand:SI 3 "register_operand" "r,r,r,r") [(match_operand:SI 3 "register_operand" "r,r,r,r")
(match_operand:SI 4 "arith11_operand" "rI,rI,rI,rI")]) (match_operand:SI 4 "arith11_operand" "rI,rI,rI,rI")])
(match_operand:SI 1 "reg_or_cint_move_operand" "0,J,N,K") (match_operand:SI 1 "reg_or_cint_move_operand" "0,J,N,K")
...@@ -1281,7 +1281,7 @@ ...@@ -1281,7 +1281,7 @@
(define_insn "" (define_insn ""
[(set (match_operand:SI 0 "register_operand" "=r,r,r,r,r,r,r,r") [(set (match_operand:SI 0 "register_operand" "=r,r,r,r,r,r,r,r")
(if_then_else:SI (if_then_else:SI
(match_operator 5 "comparison_operator" (match_operator 5 "ordered_comparison_operator"
[(match_operand:SI 3 "register_operand" "r,r,r,r,r,r,r,r") [(match_operand:SI 3 "register_operand" "r,r,r,r,r,r,r,r")
(match_operand:SI 4 "arith11_operand" "rI,rI,rI,rI,rI,rI,rI,rI")]) (match_operand:SI 4 "arith11_operand" "rI,rI,rI,rI,rI,rI,rI,rI")])
(match_operand:SI 1 "reg_or_cint_move_operand" "0,0,0,0,r,J,N,K") (match_operand:SI 1 "reg_or_cint_move_operand" "0,0,0,0,r,J,N,K")
...@@ -1302,7 +1302,7 @@ ...@@ -1302,7 +1302,7 @@
(define_expand "movdicc" (define_expand "movdicc"
[(set (match_operand:DI 0 "register_operand" "") [(set (match_operand:DI 0 "register_operand" "")
(if_then_else:DI (if_then_else:DI
(match_operand 1 "comparison_operator" "") (match_operand 1 "ordered_comparison_operator" "")
(match_operand:DI 2 "reg_or_cint_move_operand" "") (match_operand:DI 2 "reg_or_cint_move_operand" "")
(match_operand:DI 3 "reg_or_cint_move_operand" "")))] (match_operand:DI 3 "reg_or_cint_move_operand" "")))]
"TARGET_64BIT" "TARGET_64BIT"
...@@ -1318,7 +1318,7 @@ ...@@ -1318,7 +1318,7 @@
(define_insn "" (define_insn ""
[(set (match_operand:DI 0 "register_operand" "=r,r,r,r,r") [(set (match_operand:DI 0 "register_operand" "=r,r,r,r,r")
(if_then_else:DI (if_then_else:DI
(match_operator 2 "comparison_operator" (match_operator 2 "ordered_comparison_operator"
[(match_operand:DI 3 "register_operand" "r,r,r,r,r") [(match_operand:DI 3 "register_operand" "r,r,r,r,r")
(match_operand:DI 4 "arith11_operand" "rI,rI,rI,rI,rI")]) (match_operand:DI 4 "arith11_operand" "rI,rI,rI,rI,rI")])
(match_operand:DI 1 "reg_or_cint_move_operand" "0,r,J,N,K") (match_operand:DI 1 "reg_or_cint_move_operand" "0,r,J,N,K")
...@@ -1336,7 +1336,7 @@ ...@@ -1336,7 +1336,7 @@
(define_insn "" (define_insn ""
[(set (match_operand:DI 0 "register_operand" "=r,r,r,r,r,r,r,r") [(set (match_operand:DI 0 "register_operand" "=r,r,r,r,r,r,r,r")
(if_then_else:DI (if_then_else:DI
(match_operator 5 "comparison_operator" (match_operator 5 "ordered_comparison_operator"
[(match_operand:DI 3 "register_operand" "r,r,r,r,r,r,r,r") [(match_operand:DI 3 "register_operand" "r,r,r,r,r,r,r,r")
(match_operand:DI 4 "arith11_operand" "rI,rI,rI,rI,rI,rI,rI,rI")]) (match_operand:DI 4 "arith11_operand" "rI,rI,rI,rI,rI,rI,rI,rI")])
(match_operand:DI 1 "reg_or_cint_move_operand" "0,0,0,0,r,J,N,K") (match_operand:DI 1 "reg_or_cint_move_operand" "0,0,0,0,r,J,N,K")
...@@ -1413,7 +1413,7 @@ ...@@ -1413,7 +1413,7 @@
(define_insn "" (define_insn ""
[(set (pc) [(set (pc)
(if_then_else (if_then_else
(match_operator 3 "comparison_operator" (match_operator 3 "ordered_comparison_operator"
[(match_operand:SI 1 "reg_or_0_operand" "rM") [(match_operand:SI 1 "reg_or_0_operand" "rM")
(match_operand:SI 2 "arith5_operand" "rL")]) (match_operand:SI 2 "arith5_operand" "rL")])
(label_ref (match_operand 0 "" "")) (label_ref (match_operand 0 "" ""))
...@@ -1442,7 +1442,7 @@ ...@@ -1442,7 +1442,7 @@
(define_insn "" (define_insn ""
[(set (pc) [(set (pc)
(if_then_else (if_then_else
(match_operator 3 "comparison_operator" (match_operator 3 "ordered_comparison_operator"
[(match_operand:SI 1 "reg_or_0_operand" "rM") [(match_operand:SI 1 "reg_or_0_operand" "rM")
(match_operand:SI 2 "arith5_operand" "rL")]) (match_operand:SI 2 "arith5_operand" "rL")])
(pc) (pc)
...@@ -1469,7 +1469,7 @@ ...@@ -1469,7 +1469,7 @@
(define_insn "" (define_insn ""
[(set (pc) [(set (pc)
(if_then_else (if_then_else
(match_operator 3 "comparison_operator" (match_operator 3 "ordered_comparison_operator"
[(match_operand:DI 1 "reg_or_0_operand" "rM") [(match_operand:DI 1 "reg_or_0_operand" "rM")
(match_operand:DI 2 "reg_or_0_operand" "rM")]) (match_operand:DI 2 "reg_or_0_operand" "rM")])
(label_ref (match_operand 0 "" "")) (label_ref (match_operand 0 "" ""))
...@@ -1498,7 +1498,7 @@ ...@@ -1498,7 +1498,7 @@
(define_insn "" (define_insn ""
[(set (pc) [(set (pc)
(if_then_else (if_then_else
(match_operator 3 "comparison_operator" (match_operator 3 "ordered_comparison_operator"
[(match_operand:DI 1 "reg_or_0_operand" "rM") [(match_operand:DI 1 "reg_or_0_operand" "rM")
(match_operand:DI 2 "reg_or_0_operand" "rM")]) (match_operand:DI 2 "reg_or_0_operand" "rM")])
(pc) (pc)
...@@ -1524,7 +1524,7 @@ ...@@ -1524,7 +1524,7 @@
(define_insn "" (define_insn ""
[(set (pc) [(set (pc)
(if_then_else (if_then_else
(match_operator 3 "cmpib_comparison_operator" (match_operator 3 "ordered_comparison_operator"
[(match_operand:DI 1 "reg_or_0_operand" "rM") [(match_operand:DI 1 "reg_or_0_operand" "rM")
(match_operand:DI 2 "arith5_operand" "rL")]) (match_operand:DI 2 "arith5_operand" "rL")])
(label_ref (match_operand 0 "" "")) (label_ref (match_operand 0 "" ""))
...@@ -1553,7 +1553,7 @@ ...@@ -1553,7 +1553,7 @@
(define_insn "" (define_insn ""
[(set (pc) [(set (pc)
(if_then_else (if_then_else
(match_operator 3 "cmpib_comparison_operator" (match_operator 3 "ordered_comparison_operator"
[(match_operand:DI 1 "reg_or_0_operand" "rM") [(match_operand:DI 1 "reg_or_0_operand" "rM")
(match_operand:DI 2 "arith5_operand" "rL")]) (match_operand:DI 2 "arith5_operand" "rL")])
(pc) (pc)
...@@ -9057,7 +9057,7 @@ add,l %2,%3,%3\;bv,n %%r0(%3)" ...@@ -9057,7 +9057,7 @@ add,l %2,%3,%3\;bv,n %%r0(%3)"
(define_insn "decrement_and_branch_until_zero" (define_insn "decrement_and_branch_until_zero"
[(set (pc) [(set (pc)
(if_then_else (if_then_else
(match_operator 2 "comparison_operator" (match_operator 2 "ordered_comparison_operator"
[(plus:SI [(plus:SI
(match_operand:SI 0 "reg_before_reload_operand" "+!r,!*f,*Q") (match_operand:SI 0 "reg_before_reload_operand" "+!r,!*f,*Q")
(match_operand:SI 1 "int5_operand" "L,L,L")) (match_operand:SI 1 "int5_operand" "L,L,L"))
......
...@@ -662,12 +662,6 @@ ...@@ -662,12 +662,6 @@
(and (match_code "symbol_ref") (and (match_code "symbol_ref")
(match_test "SYMBOL_REF_TLS_MODEL (op) == TLS_MODEL_LOCAL_EXEC"))) (match_test "SYMBOL_REF_TLS_MODEL (op) == TLS_MODEL_LOCAL_EXEC")))
;; True iff this is a comparison operator. This allows the use of
;; MATCH_OPERATOR to recognize all the branch insns.
(define_predicate "cmpib_comparison_operator"
(match_code "eq,ne,lt,le,leu,gt,gtu,ge"))
;; True iff OP is an operator suitable for use in a movb instruction. ;; True iff OP is an operator suitable for use in a movb instruction.
(define_predicate "movb_comparison_operator" (define_predicate "movb_comparison_operator"
......
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