From: Robin Dapp <[email protected]> This is v3 of the no-wrap assumptions patch which integrates the review comments from last round, including:
- Adjusting assumption costing to count statements. - Adding an assert for unsigned types when combining bounds. - Unify naming to record_nowrap_assumptions. The series was bootstrapped and regtested on x86, power10, and aarch64. Regtested on riscv64. There still is this outstanding vectorizer issue that ADA exposes on aarch64. I have a two-line patch for it but I'm not entirely convinced it's the right thing to do, on top the test is gimple-only. I guess I'll post it separately in the coming days. The follow-up patch which removes LOOP_C_FINITE is also not fully finished yet. That's going to take a bit more time. Robin Dapp (5): niter: Add helper to compute type bound. scev: Add nowrap bound. dr: Add no-wrap bound. vect: Request no-wrap bounds from DR analysis. vect: Cost niter assumption. .../gcc.dg/tree-prof/update-loopch.c | 2 + gcc/testsuite/gcc.dg/tree-ssa/scev-12.c | 2 +- gcc/testsuite/gcc.dg/tree-ssa/scev-8.c | 2 +- .../gcc.dg/vect/vect-unsigned-assump-1.c | 22 ++ .../gcc.dg/vect/vect-unsigned-assump-2.c | 24 ++ .../gcc.dg/vect/vect-unsigned-assump-3.c | 20 + .../gcc.dg/vect/vect-unsigned-assump-4.c | 13 + .../gcc.dg/vect/vect-unsigned-assump-5.c | 14 + .../gcc.dg/vect/vect-unsigned-assump-6.c | 13 + .../gcc.dg/vect/vect-unsigned-assump-7.c | 17 + .../gcc.dg/vect/vect-unsigned-assump-8.c | 13 + .../aarch64/sve2/niter-convert-range.c | 2 +- gcc/tree-chrec.cc | 51 ++- gcc/tree-chrec.h | 7 +- gcc/tree-data-ref.cc | 99 ++++- gcc/tree-data-ref.h | 14 +- gcc/tree-scalar-evolution.cc | 365 ++++++++++++------ gcc/tree-scalar-evolution.h | 9 +- gcc/tree-ssa-loop-niter.cc | 60 ++- gcc/tree-ssa-loop-niter.h | 3 +- gcc/tree-ssa-loop.h | 4 + gcc/tree-vect-data-refs.cc | 5 +- gcc/tree-vect-loop.cc | 237 ++++++++---- gcc/tree-vectorizer.h | 4 +- 24 files changed, 733 insertions(+), 269 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/vect/vect-unsigned-assump-1.c create mode 100644 gcc/testsuite/gcc.dg/vect/vect-unsigned-assump-2.c create mode 100644 gcc/testsuite/gcc.dg/vect/vect-unsigned-assump-3.c create mode 100644 gcc/testsuite/gcc.dg/vect/vect-unsigned-assump-4.c create mode 100644 gcc/testsuite/gcc.dg/vect/vect-unsigned-assump-5.c create mode 100644 gcc/testsuite/gcc.dg/vect/vect-unsigned-assump-6.c create mode 100644 gcc/testsuite/gcc.dg/vect/vect-unsigned-assump-7.c create mode 100644 gcc/testsuite/gcc.dg/vect/vect-unsigned-assump-8.c -- 2.55.0
