From 7d12cee1f19f361979d95de783cd939472c61c99 Mon Sep 17 00:00:00 2001 From: Jeffrey A Law Date: Wed, 17 Jun 1998 17:54:27 +0000 Subject: [PATCH] * fold-const.c (make_range): Do not widen the type of the expression. From-SVN: r20545 --- gcc/ChangeLog | 2 ++ gcc/fold-const.c | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d8b9febc64b..e271a4752c6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -65,6 +65,8 @@ Wed Jun 17 15:57:48 EDT 1998 Andrew MacLeod (amacleod@cygnus.com) 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. diff --git a/gcc/fold-const.c b/gcc/fold-const.c index b75da2e77fd..73b01892465 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -2821,6 +2821,7 @@ make_range (exp, pin_p, plow, phigh) { 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; @@ -2958,6 +2959,11 @@ make_range (exp, pin_p, plow, phigh) 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))) -- 2.30.2