mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-01-09 06:34:28 +08:00
expr.c (highest_pow2_factor, [...]): Return BIGGEST_ALIGNMENT for 0.
* expr.c (highest_pow2_factor, case INTEGER_CST): Return BIGGEST_ALIGNMENT for 0. From-SVN: r48042
This commit is contained in:
parent
dcfcd43658
commit
3a531a8b4e
@ -1,7 +1,13 @@
|
||||
Sat Dec 15 08:29:45 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
|
||||
|
||||
* expr.c (highest_pow2_factor, case INTEGER_CST): Return
|
||||
BIGGEST_ALIGNMENT for 0.
|
||||
|
||||
Sat Dec 15 14:13:03 CET 2001 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* predict.def (PRED_NORETURN, PRED_OPCODE_POSITIVE, PRED_OPCODE_NONEQUAL,
|
||||
PRED_ERROR_RETURN): Make probabilities match reality.
|
||||
* predict.def (PRED_NORETURN): Make probabilities match reality.
|
||||
(PRED_OPCODE_POSITIVE, PRED_OPCODE_NONEQUAL, PRED_ERROR_RETURN):
|
||||
Likewise.
|
||||
|
||||
2001-12-15 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
|
16
gcc/expr.c
16
gcc/expr.c
@ -5793,18 +5793,18 @@ highest_pow2_factor (exp)
|
||||
{
|
||||
case INTEGER_CST:
|
||||
/* If the integer is expressable in a HOST_WIDE_INT, we can find the
|
||||
lowest bit that's a one. If the result is zero, pessimize by
|
||||
returning 1. This is overly-conservative, but such things should not
|
||||
happen in the offset expressions that we are called with. If
|
||||
the constant overlows, we some erroneous program, so return
|
||||
BIGGEST_ALIGNMENT to avoid any later ICE. */
|
||||
if (TREE_CONSTANT_OVERFLOW (exp))
|
||||
lowest bit that's a one. If the result is zero, return
|
||||
BIGGEST_ALIGNMENT. We need to handle this case since we can find it
|
||||
in a COND_EXPR, a MIN_EXPR, or a MAX_EXPR. If the constant overlows,
|
||||
we have an erroneous program, so return BIGGEST_ALIGNMENT to avoid any
|
||||
later ICE. */
|
||||
if (TREE_CONSTANT_OVERFLOW (exp)
|
||||
|| integer_zerop (exp))
|
||||
return BIGGEST_ALIGNMENT;
|
||||
else if (host_integerp (exp, 0))
|
||||
{
|
||||
c0 = tree_low_cst (exp, 0);
|
||||
c0 = c0 < 0 ? - c0 : c0;
|
||||
return c0 != 0 ? c0 & -c0 : 1;
|
||||
return c0 < 0 ? - c0 : c0;
|
||||
}
|
||||
break;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user