re PR target/93111 (FAIL: gfortran.fortran-torture/compile/pr32663.f, -O3 -g ...
authorJohn David Anglin <danglin@gcc.gnu.org>
Wed, 1 Jan 2020 20:54:58 +0000 (20:54 +0000)
committerJohn David Anglin <danglin@gcc.gnu.org>
Wed, 1 Jan 2020 20:54:58 +0000 (20:54 +0000)
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
gcc/config/pa/pa.md
gcc/config/pa/predicates.md

index 4cf7ab5..305b778 100644 (file)
@@ -1,3 +1,12 @@
+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>
 
        Update copyright years.
index 547a450..c2fa44c 100644 (file)
 
 (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")]))]
   ""
 
 (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"
 
 (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")])))]
   ""
 
 (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"
 ;; 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")])))]
   ""
 
 (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"
 
 (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")))]
 
 (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")))]
 (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")])))]
   ""
 (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"
 (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" "")))]
   ""
 (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")
 (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")
 (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"
 (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")
 (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")
 (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 "" ""))
 (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)
 (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 "" ""))
 (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)
 (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 "" ""))
 (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"))
index 131ccbe..424a3b9 100644 (file)
   (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"