combine.c (known_cond): Check mode of each operand to determine if COND is comparing floating point values.

* combine.c (known_cond): Check mode of each operand to determine
        if COND is comparing floating point values.

From-SVN: r47855
This commit is contained in:
Jeffrey A Law 2001-12-10 22:52:26 +00:00 committed by Jeff Law
parent 9aaceb4b3e
commit 805f169411
2 changed files with 12 additions and 1 deletions

View File

@ -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.

View File

@ -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;