https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112774

--- Comment #2 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Hao Liu <h...@gcc.gnu.org>:

https://gcc.gnu.org/g:2efe3a7de0107618397264017fb045f237764cc7

commit r14-6299-g2efe3a7de0107618397264017fb045f237764cc7
Author: Hao Liu <h...@os.amperecomputing.com>
Date:   Wed Dec 6 14:52:19 2023 +0800

    tree-optimization/112774: extend the SCEV CHREC tree with a nonwrapping
flag

    The flag is defined as CHREC_NOWRAP(tree), and will be dumped from
    "{offset, +, 1}_1" to "{offset, +, 1}<nw>_1" (nw is short for nonwrapping).
    Two SCEV interfaces record_nonwrapping_chrec and nonwrapping_chrec_p are
    added to set and check the flag respectively.

    As resetting the SCEV cache (i.e., the chrec trees) may not reset the
    loop->estimate_state, free_numbers_of_iterations_estimates is called
    explicitly in loop vectorization to make sure the flag can be
    calculated propriately by niter.

    gcc/ChangeLog:

            PR tree-optimization/112774
            * tree-pretty-print.cc: if nonwrapping flag is set, chrec will be
            printed with additional <nw> info.
            * tree-scalar-evolution.cc: add record_nonwrapping_chrec and
            nonwrapping_chrec_p to set and check the new flag respectively.
            * tree-scalar-evolution.h: Likewise.
            * tree-ssa-loop-niter.cc (idx_infer_loop_bounds,
            infer_loop_bounds_from_pointer_arith,
infer_loop_bounds_from_signedness,
            scev_probably_wraps_p): call record_nonwrapping_chrec before
            record_nonwrapping_iv, call nonwrapping_chrec_p to check the flag
is
            set and return false from scev_probably_wraps_p.
            * tree-vect-loop.cc (vect_analyze_loop): call
            free_numbers_of_iterations_estimates explicitly.
            * tree-core.h: document the nothrow_flag usage in CHREC_NOWRAP
            * tree.h: add CHREC_NOWRAP(NODE), base.nothrow_flag is used to
            represent the nonwrapping info.

    gcc/testsuite/ChangeLog:

            * gcc.dg/tree-ssa/scev-16.c: New test.

Reply via email to