Line 4735... |
Line 4735... |
build_int_cst (exp_type, 0),
|
build_int_cst (exp_type, 0),
|
0, high, 1);
|
0, high, 1);
|
n_high = range_binop (MINUS_EXPR, exp_type,
|
n_high = range_binop (MINUS_EXPR, exp_type,
|
build_int_cst (exp_type, 0),
|
build_int_cst (exp_type, 0),
|
0, low, 0);
|
0, low, 0);
|
low = n_low, high = n_high;
|
if (n_high != 0 && TREE_OVERFLOW (n_high))
|
exp = arg0;
|
break;
|
continue;
|
goto normalize;
|
|
|
case BIT_NOT_EXPR:
|
case BIT_NOT_EXPR:
|
/* ~ X -> -X - 1 */
|
/* ~ X -> -X - 1 */
|
exp = build2 (MINUS_EXPR, exp_type, negate_expr (arg0),
|
exp = build2 (MINUS_EXPR, exp_type, negate_expr (arg0),
|
build_int_cst (exp_type, 1));
|
build_int_cst (exp_type, 1));
|
Line 4771... |
Line 4771... |
break;
|
break;
|
|
|
if (TYPE_OVERFLOW_UNDEFINED (arg0_type))
|
if (TYPE_OVERFLOW_UNDEFINED (arg0_type))
|
*strict_overflow_p = true;
|
*strict_overflow_p = true;
|
|
|
|
normalize:
|
/* Check for an unsigned range which has wrapped around the maximum
|
/* Check for an unsigned range which has wrapped around the maximum
|
value thus making n_high < n_low, and normalize it. */
|
value thus making n_high < n_low, and normalize it. */
|
if (n_low && n_high && tree_int_cst_lt (n_high, n_low))
|
if (n_low && n_high && tree_int_cst_lt (n_high, n_low))
|
{
|
{
|
low = range_binop (PLUS_EXPR, arg0_type, n_high, 0,
|
low = range_binop (PLUS_EXPR, arg0_type, n_high, 0,
|