Wed Jun 17 08:38:13 1998 Jeffrey A Law (law@cygnus.com)
+ * fold-const.c (make_range): Do not widen the type of the expression.
+
* expr.c (check_max_integer_computation_mode): New function.
(expand_expr): Avoid integer computations in modes wider than
MAX_INTEGER_COMPUTATION_MODE.
{
enum tree_code code;
tree arg0, arg1, type = NULL_TREE;
+ tree orig_type = NULL_TREE;
int in_p, n_in_p;
tree low, high, n_low, n_high;
continue;
case NOP_EXPR: case NON_LVALUE_EXPR: case CONVERT_EXPR:
+ if (orig_type == NULL_TREE)
+ orig_type = type;
+ if (TYPE_PRECISION (type) > TYPE_PRECISION (orig_type))
+ break;
+
if (! INTEGRAL_TYPE_P (type)
|| (low != 0 && ! int_fits_type_p (low, type))
|| (high != 0 && ! int_fits_type_p (high, type)))