From cb15d1d34c699ce5de039c8782945ba4cf494428 Mon Sep 17 00:00:00 2001 From: John David Anglin Date: Wed, 1 Jan 2020 20:54:58 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 9 +++++++ gcc/config/pa/pa.md | 50 ++++++++++++++++++------------------- gcc/config/pa/predicates.md | 6 ----- 3 files changed, 34 insertions(+), 31 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4cf7ab57c7a..305b7785bb5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2020-01-01 John David Anglin + + 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 Update copyright years. diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md index 547a450b20e..c2fa44c2595 100644 --- a/gcc/config/pa/pa.md +++ b/gcc/config/pa/pa.md @@ -765,7 +765,7 @@ (define_insn "scc" [(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 2 "arith11_operand" "rI")]))] "" @@ -775,7 +775,7 @@ (define_insn "" [(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 2 "arith11_operand" "rI")]))] "TARGET_64BIT" @@ -785,10 +785,10 @@ (define_insn "iorscc" [(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 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 5 "arith11_operand" "rI")])))] "" @@ -798,10 +798,10 @@ (define_insn "" [(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 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 5 "arith11_operand" "rI")])))] "TARGET_64BIT" @@ -813,7 +813,7 @@ ;; from an scc insn (negscc and incscc). (define_insn "negscc" [(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 2 "arith11_operand" "rI")])))] "" @@ -823,7 +823,7 @@ (define_insn "" [(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 2 "arith11_operand" "rI")])))] "TARGET_64BIT" @@ -904,7 +904,7 @@ (define_insn "incscc" [(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 3 "arith11_operand" "rI,rI")]) (match_operand:SI 1 "register_operand" "0,?r")))] @@ -917,7 +917,7 @@ (define_insn "" [(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 3 "arith11_operand" "rI,rI")]) (match_operand:DI 1 "register_operand" "0,?r")))] @@ -1062,7 +1062,7 @@ (define_insn "decscc" [(set (match_operand:SI 0 "register_operand" "=r,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 3 "arith11_operand" "rI,rI")])))] "" @@ -1075,7 +1075,7 @@ (define_insn "" [(set (match_operand:DI 0 "register_operand" "=r,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 3 "arith11_operand" "rI,rI")])))] "TARGET_64BIT" @@ -1242,7 +1242,7 @@ (define_expand "movsicc" [(set (match_operand:SI 0 "register_operand" "") (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 3 "reg_or_cint_move_operand" "")))] "" @@ -1264,7 +1264,7 @@ (define_insn "" [(set (match_operand:SI 0 "register_operand" "=r,r,r,r") (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 4 "arith11_operand" "rI,rI,rI,rI")]) (match_operand:SI 1 "reg_or_cint_move_operand" "0,J,N,K") @@ -1281,7 +1281,7 @@ (define_insn "" [(set (match_operand:SI 0 "register_operand" "=r,r,r,r,r,r,r,r") (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 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") @@ -1302,7 +1302,7 @@ (define_expand "movdicc" [(set (match_operand:DI 0 "register_operand" "") (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 3 "reg_or_cint_move_operand" "")))] "TARGET_64BIT" @@ -1318,7 +1318,7 @@ (define_insn "" [(set (match_operand:DI 0 "register_operand" "=r,r,r,r,r") (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 4 "arith11_operand" "rI,rI,rI,rI,rI")]) (match_operand:DI 1 "reg_or_cint_move_operand" "0,r,J,N,K") @@ -1336,7 +1336,7 @@ (define_insn "" [(set (match_operand:DI 0 "register_operand" "=r,r,r,r,r,r,r,r") (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 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") @@ -1413,7 +1413,7 @@ (define_insn "" [(set (pc) (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 2 "arith5_operand" "rL")]) (label_ref (match_operand 0 "" "")) @@ -1442,7 +1442,7 @@ (define_insn "" [(set (pc) (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 2 "arith5_operand" "rL")]) (pc) @@ -1469,7 +1469,7 @@ (define_insn "" [(set (pc) (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 2 "reg_or_0_operand" "rM")]) (label_ref (match_operand 0 "" "")) @@ -1498,7 +1498,7 @@ (define_insn "" [(set (pc) (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 2 "reg_or_0_operand" "rM")]) (pc) @@ -1524,7 +1524,7 @@ (define_insn "" [(set (pc) (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 2 "arith5_operand" "rL")]) (label_ref (match_operand 0 "" "")) @@ -1553,7 +1553,7 @@ (define_insn "" [(set (pc) (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 2 "arith5_operand" "rL")]) (pc) @@ -9057,7 +9057,7 @@ add,l %2,%3,%3\;bv,n %%r0(%3)" (define_insn "decrement_and_branch_until_zero" [(set (pc) (if_then_else - (match_operator 2 "comparison_operator" + (match_operator 2 "ordered_comparison_operator" [(plus:SI (match_operand:SI 0 "reg_before_reload_operand" "+!r,!*f,*Q") (match_operand:SI 1 "int5_operand" "L,L,L")) diff --git a/gcc/config/pa/predicates.md b/gcc/config/pa/predicates.md index 131ccbee2cd..424a3b9e9b2 100644 --- a/gcc/config/pa/predicates.md +++ b/gcc/config/pa/predicates.md @@ -662,12 +662,6 @@ (and (match_code "symbol_ref") (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. (define_predicate "movb_comparison_operator" -- 2.30.2