- gnu_high = size_binop (MINUS_EXPR, gnu_min, size_one_node);
- gnu_low = size_binop (PLUS_EXPR, gnu_max, size_one_node);
-
- /* If gnu_high is a constant that has overflowed, the low
- bound is the smallest integer so cannot be the maximum.
- If gnu_low is a constant that has overflowed, the high
- bound is the highest integer so cannot be the minimum. */
- if ((TREE_CODE (gnu_high) == INTEGER_CST
- && TREE_OVERFLOW (gnu_high))
- || (TREE_CODE (gnu_low) == INTEGER_CST
- && TREE_OVERFLOW (gnu_low)))
- gnu_high = gnu_max;
-
- /* If the index type is a subrange and gnu_high a constant
- that hasn't overflowed, we can use the maximum. */
- else if (subrange_p && TREE_CODE (gnu_high) == INTEGER_CST)
- gnu_high = size_binop (MAX_EXPR, gnu_max, gnu_high);
-
- /* If the index type is a subrange and gnu_low a constant
- that hasn't overflowed, we can use the minimum. */
- else if (subrange_p && TREE_CODE (gnu_low) == INTEGER_CST)
- {
- gnu_high = gnu_max;
- gnu_min = size_binop (MIN_EXPR, gnu_min, gnu_low);
- }
-
- else
- gnu_high
- = build_cond_expr (sizetype,
- build_binary_op (GE_EXPR,
- boolean_type_node,
- gnu_orig_max,
- gnu_orig_min),
- gnu_max, gnu_high);
+ gnu_high = gnu_max;
+ gnu_min
+ = build_cond_expr (sizetype,
+ build_binary_op (GE_EXPR,
+ boolean_type_node,
+ gnu_orig_max,
+ gnu_orig_min),
+ gnu_min,
+ size_binop (PLUS_EXPR, gnu_max,
+ size_one_node));