diff options
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/combine.c | 8 |
2 files changed, 12 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a862ed7..c519c15 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Mon Dec 10 15:54:27 2001 Jeffrey A Law (law@cygnus.com) + + * combine.c (known_cond): Check mode of each operand to determine + if COND is comparing floating point values. + 2001-12-10 David Edelsohn <edelsohn@gnu.org> * rs6000.h (processor_type): Add PPC405. diff --git a/gcc/combine.c b/gcc/combine.c index ee27919..0e15def 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -7351,8 +7351,14 @@ known_cond (x, cond, reg, val) if (side_effects_p (x)) return x; - if (cond == EQ && rtx_equal_p (x, reg) && !FLOAT_MODE_P (cond)) + /* If either operand of the condition is a floating point value, + then we have to avoid collapsing an EQ comparison. */ + if (cond == EQ + && rtx_equal_p (x, reg) + && ! FLOAT_MODE_P (GET_MODE (x)) + && ! FLOAT_MODE_P (GET_MODE (val))) return val; + if (cond == UNEQ && rtx_equal_p (x, reg)) return val; |