diff options
Diffstat (limited to 'gcc/fold-const.c')
-rw-r--r-- | gcc/fold-const.c | 59 |
1 files changed, 29 insertions, 30 deletions
diff --git a/gcc/fold-const.c b/gcc/fold-const.c index ed6ae0f..1c8c401 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -268,7 +268,7 @@ force_fit_type (tree t, int overflowable, if (overflowed || overflowed_const || low != TREE_INT_CST_LOW (t) || high != TREE_INT_CST_HIGH (t)) { - t = build_int_cst (TREE_TYPE (t), low, high); + t = build_int_cst_wide (TREE_TYPE (t), low, high); if (overflowed || overflowable < 0 @@ -1430,7 +1430,7 @@ int_const_binop (enum tree_code code, tree arg1, tree arg2, int notrunc) abort (); } - t = build_int_cst (TREE_TYPE (arg1), low, hi); + t = build_int_cst_wide (TREE_TYPE (arg1), low, hi); if (notrunc) { @@ -1793,8 +1793,8 @@ fold_convert_const (enum tree_code code, tree type, tree arg1) /* Given an integer constant, make new constant with new type, appropriately sign-extended or truncated. */ - t = build_int_cst (type, TREE_INT_CST_LOW (arg1), - TREE_INT_CST_HIGH (arg1)); + t = build_int_cst_wide (type, TREE_INT_CST_LOW (arg1), + TREE_INT_CST_HIGH (arg1)); t = force_fit_type (t, /* Don't set the overflow when @@ -1885,7 +1885,7 @@ fold_convert_const (enum tree_code code, tree type, tree arg1) if (! overflow) REAL_VALUE_TO_INT (&low, &high, r); - t = build_int_cst (type, low, high); + t = build_int_cst_wide (type, low, high); t = force_fit_type (t, -1, overflow | TREE_OVERFLOW (arg1), TREE_CONSTANT_OVERFLOW (arg1)); @@ -2960,7 +2960,7 @@ invert_truthvalue (tree arg) { case INTEGER_CST: return fold_convert (type, - build_int_cst (NULL_TREE, integer_zerop (arg), 0)); + build_int_cst (NULL_TREE, integer_zerop (arg))); case TRUTH_AND_EXPR: return build2 (TRUTH_OR_EXPR, type, @@ -3195,7 +3195,7 @@ optimize_bit_field_compare (enum tree_code code, tree compare_type, lbitpos = nbitsize - lbitsize - lbitpos; /* Make the mask to be used against the extracted field. */ - mask = build_int_cst (unsigned_type, ~0, ~0); + mask = build_int_cst (unsigned_type, -1); mask = force_fit_type (mask, 0, false, false); mask = fold_convert (unsigned_type, mask); mask = const_binop (LSHIFT_EXPR, mask, size_int (nbitsize - lbitsize), 0); @@ -3351,7 +3351,7 @@ decode_field_reference (tree exp, HOST_WIDE_INT *pbitsize, unsigned_type = lang_hooks.types.type_for_size (*pbitsize, 1); precision = TYPE_PRECISION (unsigned_type); - mask = build_int_cst (unsigned_type, ~0, ~0); + mask = build_int_cst (unsigned_type, -1); mask = force_fit_type (mask, 0, false, false); mask = const_binop (LSHIFT_EXPR, mask, size_int (precision - *pbitsize), 0); @@ -3377,7 +3377,7 @@ all_ones_mask_p (tree mask, int size) unsigned int precision = TYPE_PRECISION (type); tree tmask; - tmask = build_int_cst (lang_hooks.types.signed_type (type), ~0, ~0); + tmask = build_int_cst (lang_hooks.types.signed_type (type), -1); tmask = force_fit_type (tmask, 0, false, false); return @@ -5365,7 +5365,7 @@ constant_boolean_node (int value, tree type) return lang_hooks.truthvalue_conversion (value ? integer_one_node : integer_zero_node); else - return build_int_cst (type, value, 0); + return build_int_cst (type, value); } /* Transform `a + (b ? x : y)' into `b ? (a + x) : (a + y)'. @@ -5698,7 +5698,7 @@ fold_div_compare (enum tree_code code, tree type, tree arg0, tree arg1) TREE_INT_CST_HIGH (arg01), TREE_INT_CST_LOW (arg1), TREE_INT_CST_HIGH (arg1), &lpart, &hpart); - prod = build_int_cst (TREE_TYPE (arg00), lpart, hpart); + prod = build_int_cst_wide (TREE_TYPE (arg00), lpart, hpart); prod = force_fit_type (prod, -1, overflow, false); if (TYPE_UNSIGNED (TREE_TYPE (arg0))) @@ -5712,7 +5712,7 @@ fold_div_compare (enum tree_code code, tree type, tree arg0, tree arg1) TREE_INT_CST_LOW (tmp), TREE_INT_CST_HIGH (tmp), &lpart, &hpart); - hi = build_int_cst (TREE_TYPE (arg00), lpart, hpart); + hi = build_int_cst_wide (TREE_TYPE (arg00), lpart, hpart); hi = force_fit_type (hi, -1, overflow | TREE_OVERFLOW (prod), TREE_CONSTANT_OVERFLOW (prod)); } @@ -6620,7 +6620,7 @@ fold (tree expr) { alt0 = fold (build2 (MULT_EXPR, type, arg00, build_int_cst (NULL_TREE, - int01 / int11, 0))); + int01 / int11))); alt1 = arg10; same = arg11; } @@ -7254,7 +7254,7 @@ fold (tree expr) if (TREE_CODE (arg0) == BIT_NOT_EXPR && operand_equal_p (TREE_OPERAND (arg0, 0), arg1, 0)) { - t1 = build_int_cst (type, -1, -1); + t1 = build_int_cst (type, -1); t1 = force_fit_type (t1, 0, false, false); return omit_one_operand (type, t1, arg1); } @@ -7263,7 +7263,7 @@ fold (tree expr) if (TREE_CODE (arg1) == BIT_NOT_EXPR && operand_equal_p (arg0, TREE_OPERAND (arg1, 0), 0)) { - t1 = build_int_cst (type, -1, -1); + t1 = build_int_cst (type, -1); t1 = force_fit_type (t1, 0, false, false); return omit_one_operand (type, t1, arg0); } @@ -7303,7 +7303,7 @@ fold (tree expr) if (TREE_CODE (arg0) == BIT_NOT_EXPR && operand_equal_p (TREE_OPERAND (arg0, 0), arg1, 0)) { - t1 = build_int_cst (type, -1, -1); + t1 = build_int_cst (type, -1); t1 = force_fit_type (t1, 0, false, false); return omit_one_operand (type, t1, arg1); } @@ -7312,7 +7312,7 @@ fold (tree expr) if (TREE_CODE (arg1) == BIT_NOT_EXPR && operand_equal_p (arg0, TREE_OPERAND (arg1, 0), 0)) { - t1 = build_int_cst (type, -1, -1); + t1 = build_int_cst (type, -1); t1 = force_fit_type (t1, 0, false, false); return omit_one_operand (type, t1, arg0); } @@ -7632,7 +7632,7 @@ fold (tree expr) low = ((unsigned HOST_WIDE_INT) 1 << l) - 1; } - mask = build_int_cst (type, low, high); + mask = build_int_cst_wide (type, low, high); return fold (build2 (BIT_AND_EXPR, type, fold_convert (type, arg0), mask)); } @@ -7691,7 +7691,7 @@ fold (tree expr) if (code == LROTATE_EXPR && TREE_CODE (arg1) == INTEGER_CST) { tree tem = build_int_cst (NULL_TREE, - GET_MODE_BITSIZE (TYPE_MODE (type)), 0); + GET_MODE_BITSIZE (TYPE_MODE (type))); tem = fold_convert (TREE_TYPE (arg1), tem); tem = const_binop (MINUS_EXPR, tem, arg1, 0); return fold (build2 (RROTATE_EXPR, type, arg0, tem)); @@ -8109,8 +8109,7 @@ fold (tree expr) return omit_one_operand (type, folded_compare, varop); shift = build_int_cst (NULL_TREE, - TYPE_PRECISION (TREE_TYPE (varop)) - size, - 0); + TYPE_PRECISION (TREE_TYPE (varop)) - size); shift = fold_convert (TREE_TYPE (varop), shift); newconst = fold (build2 (LSHIFT_EXPR, TREE_TYPE (varop), newconst, shift)); @@ -10292,7 +10291,7 @@ fold_read_from_constant_string (tree exp) return fold_convert (TREE_TYPE (exp), build_int_cst (NULL_TREE, (TREE_STRING_POINTER (string) - [TREE_INT_CST_LOW (index)]), 0)); + [TREE_INT_CST_LOW (index)]))); } return NULL; } @@ -10314,7 +10313,7 @@ fold_negate_const (tree arg0, tree type) int overflow = neg_double (TREE_INT_CST_LOW (arg0), TREE_INT_CST_HIGH (arg0), &low, &high); - t = build_int_cst (type, low, high); + t = build_int_cst_wide (type, low, high); t = force_fit_type (t, 1, (overflow | TREE_OVERFLOW (arg0)) && !TYPE_UNSIGNED (type), @@ -10358,7 +10357,7 @@ fold_abs_const (tree arg0, tree type) int overflow = neg_double (TREE_INT_CST_LOW (arg0), TREE_INT_CST_HIGH (arg0), &low, &high); - t = build_int_cst (type, low, high); + t = build_int_cst_wide (type, low, high); t = force_fit_type (t, -1, overflow | TREE_OVERFLOW (arg0), TREE_CONSTANT_OVERFLOW (arg0)); return t; @@ -10389,9 +10388,9 @@ fold_not_const (tree arg0, tree type) if (TREE_CODE (arg0) == INTEGER_CST) { - t = build_int_cst (type, - ~ TREE_INT_CST_LOW (arg0), - ~ TREE_INT_CST_HIGH (arg0)); + t = build_int_cst_wide (type, + ~ TREE_INT_CST_LOW (arg0), + ~ TREE_INT_CST_HIGH (arg0)); t = force_fit_type (t, 0, TREE_OVERFLOW (arg0), TREE_CONSTANT_OVERFLOW (arg0)); } @@ -10661,9 +10660,9 @@ round_up (tree value, int divisor) { tree t; - t = build_int_cst (TREE_TYPE (value), divisor - 1, 0); + t = build_int_cst (TREE_TYPE (value), divisor - 1); value = size_binop (PLUS_EXPR, value, t); - t = build_int_cst (TREE_TYPE (value), -divisor, -1); + t = build_int_cst (TREE_TYPE (value), -divisor); value = size_binop (BIT_AND_EXPR, value, t); } else @@ -10708,7 +10707,7 @@ round_down (tree value, int divisor) { tree t; - t = build_int_cst (TREE_TYPE (value), -divisor, -1); + t = build_int_cst (TREE_TYPE (value), -divisor); value = size_binop (BIT_AND_EXPR, value, t); } else |