aboutsummaryrefslogtreecommitdiff
path: root/gcc/fold-const.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/fold-const.c')
-rw-r--r--gcc/fold-const.c59
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