diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1995-08-21 13:29:41 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1995-08-21 13:29:41 -0400 |
commit | 63835b875518278bd9329fbc2c0da6ed26992173 (patch) | |
tree | 0c5f066f325827df3cf6d813a27f06b030aff881 /gcc/config | |
parent | d784886d82b27fd421bb26d227d103c6dc9240f8 (diff) | |
download | gcc-63835b875518278bd9329fbc2c0da6ed26992173.zip gcc-63835b875518278bd9329fbc2c0da6ed26992173.tar.gz gcc-63835b875518278bd9329fbc2c0da6ed26992173.tar.bz2 |
(decrement_and_branch_until_zero): Use arithmetic_comparison_operator to decide...
(decrement_and_branch_until_zero): Use arithmetic_comparison_operator
to decide if there is comparison suitable to be expressed by condition
code from an arithmetic op.
From-SVN: r10269
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/i386/i386.md | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 8d50e89..ff01196 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -4910,6 +4910,9 @@ return AS1 (jmp,%*%0); }") +;; ??? could transform while(--i > 0) S; to if (--i > 0) do S; while(--i); +;; if S does not change i + (define_expand "decrement_and_branch_until_zero" [(parallel [(set (pc) (if_then_else (ge (plus:SI (match_operand:SI 0 "general_operand" "") @@ -4925,7 +4928,7 @@ (define_insn "" [(set (pc) - (if_then_else (match_operator 0 "comparison_operator" + (if_then_else (match_operator 0 "arithmetic_comparison_operator" [(plus:SI (match_operand:SI 1 "general_operand" "+r,m") (match_operand:SI 2 "general_operand" "rmi,ri")) (const_int 0)]) @@ -4952,7 +4955,7 @@ (define_insn "" [(set (pc) - (if_then_else (match_operator 0 "comparison_operator" + (if_then_else (match_operator 0 "arithmetic_comparison_operator" [(minus:SI (match_operand:SI 1 "general_operand" "+r,m") (match_operand:SI 2 "general_operand" "rmi,ri")) (const_int 0)]) |