Commit 7f423031 by Richard Kenner

(make_range, comparison cases): When making range for unsigned to

merge in, use full range.

From-SVN: r13027
parent 70e7fabe
...@@ -2757,15 +2757,20 @@ make_range (exp, pin_p, plow, phigh) ...@@ -2757,15 +2757,20 @@ make_range (exp, pin_p, plow, phigh)
exp = arg0; exp = arg0;
/* If this is an unsigned comparison, we also know that EXP /* If this is an unsigned comparison, we also know that EXP is
is greater than or equal to zero. We base the range tests greater than or equal to zero and less than the maximum value of
we make on that fact, so we record it here so we can parse the unsigned type. We base the range tests we make on that fact,
existing range tests. */ so we record it here so we can parse existing range tests. */
if (TREE_UNSIGNED (type)) if (TREE_UNSIGNED (type) && (low == 0 || high == 0))
{ {
if (! merge_ranges (&n_in_p, &n_low, &n_high, in_p, low, high, if (! merge_ranges (&n_in_p, &n_low, &n_high, in_p, low, high,
1, convert (type, integer_zero_node), 1, convert (type, integer_zero_node),
NULL_TREE)) const_binop (MINUS_EXPR,
convert (type,
integer_zero_node),
convert (type,
integer_one_node),
0)))
break; break;
in_p = n_in_p, low = n_low, high = n_high; in_p = n_in_p, low = n_low, high = n_high;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment