Patch from David Mosberger to fix 32 host cross 64 target bug.

* combine.c (simplify_logical, case AND): Only call
        simplify_and_const_int if the mode is no wider than HOST_WIDE_INT
	or the constant is positive.

From-SVN: r27517
This commit is contained in:
David Mosberger 1999-06-14 13:10:29 +00:00 committed by Jim Wilson
parent 69c9f0fbbc
commit 2e8f9abf17
2 changed files with 12 additions and 1 deletions

View File

@ -1,3 +1,9 @@
Mon Jun 14 12:57:38 1999 David Mosberger <davidm@hpl.hp.com>
* combine.c (simplify_logical, case AND): Only call
simplify_and_const_int if the mode is no wider than HOST_WIDE_INT
or the constant is positive.
Mon Jun 14 11:43:41 1999 Nick Clifton <nickc@cygnus.com>
* configure.in: Fix typo in rs6000-ibm-aix4 case.

View File

@ -4902,7 +4902,12 @@ simplify_logical (x, last)
&& ! side_effects_p (op1))
x = gen_binary (AND, mode, XEXP (XEXP (op0, 0), 0), op1);
if (GET_CODE (op1) == CONST_INT)
/* We can call simplify_and_const_int only if we don't lose
any (sign) bits when converting INTVAL (op1) to
"unsigned HOST_WIDE_INT". */
if (GET_CODE (op1) == CONST_INT
&& (GET_MODE_BITSIZE (mode) <= HOST_BITS_PER_WIDE_INT
|| INTVAL (op1) > 0))
{
x = simplify_and_const_int (x, mode, op0, INTVAL (op1));