aboutsummaryrefslogtreecommitdiff
path: root/gcc/varasm.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/varasm.c')
-rw-r--r--gcc/varasm.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/gcc/varasm.c b/gcc/varasm.c
index b380a47..d476b8a 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -4649,14 +4649,13 @@ array_size_for_constructor (tree val)
/* Compute the total number of array elements. */
tmp = TYPE_MIN_VALUE (TYPE_DOMAIN (TREE_TYPE (val)));
- i = double_int_sub (tree_to_double_int (max_index), tree_to_double_int (tmp));
- i = double_int_add (i, double_int_one);
+ i = tree_to_double_int (max_index) - tree_to_double_int (tmp);
+ i += double_int_one;
/* Multiply by the array element unit size to find number of bytes. */
- i = double_int_mul (i, tree_to_double_int
- (TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (val)))));
+ i *= tree_to_double_int (TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (val))));
- gcc_assert (double_int_fits_in_uhwi_p (i));
+ gcc_assert (i.fits_uhwi ());
return i.low;
}
@@ -4740,9 +4739,9 @@ output_constructor_regular_field (oc_local_state *local)
sign-extend the result because Ada has negative DECL_FIELD_OFFSETs
but we are using an unsigned sizetype. */
unsigned prec = TYPE_PRECISION (sizetype);
- double_int idx = double_int_sub (tree_to_double_int (local->index),
- tree_to_double_int (local->min_index));
- idx = double_int_sext (idx, prec);
+ double_int idx = tree_to_double_int (local->index)
+ - tree_to_double_int (local->min_index);
+ idx = idx.sext (prec);
fieldpos = (tree_low_cst (TYPE_SIZE_UNIT (TREE_TYPE (local->val)), 1)
* idx.low);
}