From: Richard Biener Date: Wed, 21 Jun 2023 09:38:19 +0000 (+0200) Subject: Less strip_offset in IVOPTs X-Git-Tag: basepoints/gcc-15~8125 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5d88932657de239a941ad84ef0996a906ecd8fe9;p=thirdparty%2Fgcc.git Less strip_offset in IVOPTs This avoids a strip_offset use in record_group_use where we know it operates on addresses. * tree-ssa-loop-ivopts.cc (record_group_use): Use split_constant_offset. --- diff --git a/gcc/tree-ssa-loop-ivopts.cc b/gcc/tree-ssa-loop-ivopts.cc index 82531f97b932..957a3001e164 100644 --- a/gcc/tree-ssa-loop-ivopts.cc +++ b/gcc/tree-ssa-loop-ivopts.cc @@ -1175,9 +1175,6 @@ contain_complex_addr_expr (tree expr) return res; } -static tree -strip_offset (tree expr, poly_uint64_pod *offset); - /* Allocates an induction variable with given initial value BASE and step STEP for loop LOOP. NO_OVERFLOW implies the iv doesn't overflow. */ @@ -1609,7 +1606,10 @@ record_group_use (struct ivopts_data *data, tree *use_p, { unsigned int i; - addr_base = strip_offset (iv->base, &addr_offset); + gcc_assert (POINTER_TYPE_P (TREE_TYPE (iv->base))); + tree addr_toffset; + split_constant_offset (iv->base, &addr_base, &addr_toffset); + addr_offset = int_cst_value (addr_toffset); for (i = 0; i < data->vgroups.length (); i++) { struct iv_use *use;