void aff_combination_mult (aff_tree *c1, aff_tree *c2, aff_tree *r) { unsigned i; gcc_assert (TYPE_PRECISION (c1->type) == TYPE_PRECISION (c2->type)); aff_combination_zero (r, c1->type); for (i = 0; i < c2->n; i++) aff_combination_add_product (c1, c2->elts[i].coef, c2->elts[i].val, r); if (c2->rest) aff_combination_add_product (c1, double_int_one, c2->rest, r); aff_combination_add_product (c1, c2->offset, NULL, r); }
void aff_combination_mult (aff_tree *c1, aff_tree *c2, aff_tree *r) { unsigned i; gcc_assert (TYPE_PRECISION (c1->type) == TYPE_PRECISION (c2->type)); aff_combination_zero (r, c1->type); for (i = 0; i < c2->n; i++) aff_combination_add_product (c1, c2->elts[i].coef, c2->elts[i].val, r); if (c2->rest) aff_combination_add_product (c1, 1, c2->rest, r); if (c2->offset.is_constant ()) /* Access coeffs[0] directly, for efficiency. */ aff_combination_add_product (c1, c2->offset.coeffs[0], NULL, r); else { /* c2->offset is polynomial, so do the multiplication in tree form. */ tree offset = wide_int_to_tree (c2->type, c2->offset); aff_combination_add_product (c1, 1, offset, r); } }