On 6/16/23 06:34, Richard Biener via Gcc-patches wrote:
IVOPTs has strip_offset which suffers from the same issues regarding
integer overflow that split_constant_offset did but the latter was
fixed quite some time ago.  The following implements strip_offset
in terms of split_constant_offset, removing the redundant and
incorrect implementation.

The implementations are not exactly the same, strip_offset relies
on ptrdiff_tree_p to fend off too large offsets while split_constant_offset
simply assumes those do not happen and truncates them.  By
the same means strip_offset also handles POLY_INT_CSTs but
split_constant_offset does not.  Massaging the latter to
behave like strip_offset in those cases might be the way to go?

Bootstrapped and tested on x86_64-unknown-linux-gnu.

Comments?

Thanks,
Richard.

        PR tree-optimization/110243
        * tree-ssa-loop-ivopts.cc (strip_offset_1): Remove.
        (strip_offset): Make it a wrapper around split_constant_offset.

        * gcc.dg/torture/pr110243.c: New testcase.
Your call -- IMHO you know this code far better than I.

jeff

Reply via email to