From 1f9124e42e485a2afe439fbd6966a5263783186c Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 25 Aug 2000 14:40:18 +0200 Subject: [PATCH] i386.c (ix86_expand_branch): Treat GE and GEU the same way as LT and LTU when... * config/i386/i386.c (ix86_expand_branch): Treat GE and GEU the same way as LT and LTU when the second operand has 0 in low word. From-SVN: r35982 --- gcc/ChangeLog | 5 +++++ gcc/config/i386/i386.c | 24 ++++++++++++++---------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e4b4d6e92f6..e07ca1c5e75 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2000-08-25 Jakub Jelinek + + * config/i386/i386.c (ix86_expand_branch): Treat GE and GEU the same + way as LT and LTU when the second operand has 0 in low word. + 2000-08-26 Michael Hayes * basic-block.h (struct loop): Rename `exits' field to diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 4c21a88a4d9..9fa6fabb85b 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -4977,17 +4977,21 @@ ix86_expand_branch (code, label) return; } - /* Otherwise, if we are doing less-than, op1 is a constant and the - low word is zero, then we can just examine the high word. */ + /* Otherwise, if we are doing less-than or greater-or-equal-than, + op1 is a constant and the low word is zero, then we can just + examine the high word. */ - if (GET_CODE (hi[1]) == CONST_INT && lo[1] == const0_rtx - && (code == LT || code == LTU)) - { - ix86_compare_op0 = hi[0]; - ix86_compare_op1 = hi[1]; - ix86_expand_branch (code, label); - return; - } + if (GET_CODE (hi[1]) == CONST_INT && lo[1] == const0_rtx) + switch (code) + { + case LT: case LTU: case GE: case GEU: + ix86_compare_op0 = hi[0]; + ix86_compare_op1 = hi[1]; + ix86_expand_branch (code, label); + return; + default: + break; + } /* Otherwise, we need two or three jumps. */ -- 2.30.2