Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/gnu/dist/toolchain/gcc/config/arm Disable the following patt...



details:   https://anonhg.NetBSD.org/src/rev/9465cd757286
branches:  trunk
changeset: 526464:9465cd757286
user:      rearnsha <rearnsha%NetBSD.org@localhost>
date:      Fri May 03 20:32:22 2002 +0000

description:
Disable the following patterns:  addsi3_compare_op1, addsi3_compare_op2,
compare_addsi2_op0 & compare_addsi2_op1.  From the comment I've just
inserted:
;; XXX RWE: The reload pass of GCC-2.95 makes a mess of these if one of the
;; arguments is, or is directly derived from, an eliminable register.  In
;; that case reload will substitue into the PLUS and then canonicalize it
;; without regard to the the match_dup parts.  Since these are rare, I've
;; disabled them for now, but they should be OK in 3.x (which manages the
;; substitution without canonicalization.
Fixes PRs port-arm/16424 and toolchain/16304.

diffstat:

 gnu/dist/toolchain/gcc/config/arm/arm.md |  14 ++++++++++----
 1 files changed, 10 insertions(+), 4 deletions(-)

diffs (52 lines):

diff -r 7c5a730532eb -r 9465cd757286 gnu/dist/toolchain/gcc/config/arm/arm.md
--- a/gnu/dist/toolchain/gcc/config/arm/arm.md  Fri May 03 19:52:36 2002 +0000
+++ b/gnu/dist/toolchain/gcc/config/arm/arm.md  Fri May 03 20:32:22 2002 +0000
@@ -384,6 +384,12 @@
 ;; the operands, and we know that the use of the condition code is
 ;; either GEU or LTU, so we can use the carry flag from the addition
 ;; instead of doing the compare a second time.
+;; XXX RWE: The reload pass of GCC-2.95 makes a mess of these if one of the
+;; arguments is, or is directly derived from, an eliminable register.  In
+;; that case reload will substitue into the PLUS and then canonicalize it
+;; without regard to the the match_dup parts.  Since these are rare, I've
+;; disabled them for now, but they should be OK in 3.x (which manages the
+;; substitution without canonicalization.
 (define_insn "*addsi3_compare_op1"
   [(set (reg:CC_C 24)
        (compare:CC_C
@@ -392,7 +398,7 @@
         (match_dup 1)))
    (set (match_operand:SI 0 "s_register_operand" "=r,r")
        (plus:SI (match_dup 1) (match_dup 2)))]
-  ""
+  "0"
   "@
    add%?s\\t%0, %1, %2
    sub%?s\\t%0, %1, #%n2"
@@ -406,7 +412,7 @@
         (match_dup 2)))
    (set (match_operand:SI 0 "s_register_operand" "=r,r")
        (plus:SI (match_dup 1) (match_dup 2)))]
-  ""
+  "0"
   "@
    add%?s\\t%0, %1, %2
    sub%?s\\t%0, %1, #%n2"
@@ -418,7 +424,7 @@
         (plus:SI (match_operand:SI 0 "s_register_operand" "r,r")
                  (match_operand:SI 1 "arm_add_operand" "rI,L"))
         (match_dup 0)))]
-  ""
+  "0"
   "@
    cmn%?\\t%0, %1
    cmp%?\\t%0, #%n1"
@@ -430,7 +436,7 @@
         (plus:SI (match_operand:SI 0 "s_register_operand" "r,r")
                  (match_operand:SI 1 "arm_add_operand" "rI,L"))
         (match_dup 1)))]
-  ""
+  "0"
   "@
    cmn%?\\t%0, %1
    cmp%?\\t%0, #%n1"



Home | Main Index | Thread Index | Old Index