]> git.ipfire.org Git - thirdparty/gcc.git/commit
Analyze niter for until-wrap condition [PR101145]
authorJiufu Guo <guojiufu@linux.ibm.com>
Wed, 7 Jul 2021 05:41:01 +0000 (13:41 +0800)
committerJiufu Guo <guojiufu@linux.ibm.com>
Wed, 25 Aug 2021 08:38:12 +0000 (16:38 +0800)
commit3673dcf6d6baeb67bb70ff03d4cb3f92beed0075
tree157286b07183d186b343dac748c54407a9e6c908
parentdb3d4129b6f4cff685713da514b64ff7bbc401fc
Analyze niter for until-wrap condition [PR101145]

For code like:
unsigned foo(unsigned val, unsigned start)
{
  unsigned cnt = 0;
  for (unsigned i = start; i > val; ++i)
    cnt++;
  return cnt;
}

The number of iterations should be about UINT_MAX - start.

There is function adjust_cond_for_loop_until_wrap which
handles similar work for const bases.
Like adjust_cond_for_loop_until_wrap, this patch enhance
function number_of_iterations_cond/number_of_iterations_lt
to analyze number of iterations for this kind of loop.

gcc/ChangeLog:

2021-08-25  Jiufu Guo  <guojiufu@linux.ibm.com>

PR tree-optimization/101145
* tree-ssa-loop-niter.c (number_of_iterations_until_wrap):
New function.
(number_of_iterations_lt): Invoke above function.
(adjust_cond_for_loop_until_wrap):
Merge to number_of_iterations_until_wrap.
(number_of_iterations_cond): Update invokes for
adjust_cond_for_loop_until_wrap and number_of_iterations_lt.

gcc/testsuite/ChangeLog:

2021-08-25  Jiufu Guo  <guojiufu@linux.ibm.com>

PR tree-optimization/101145
* gcc.dg/vect/pr101145.c: New test.
* gcc.dg/vect/pr101145.inc: New test.
* gcc.dg/vect/pr101145_1.c: New test.
* gcc.dg/vect/pr101145_2.c: New test.
* gcc.dg/vect/pr101145_3.c: New test.
* gcc.dg/vect/pr101145inf.c: New test.
* gcc.dg/vect/pr101145inf.inc: New test.
* gcc.dg/vect/pr101145inf_1.c: New test.
gcc/testsuite/gcc.dg/vect/pr101145.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/pr101145.inc [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/pr101145_1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/pr101145_2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/pr101145_3.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/pr101145inf.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/pr101145inf.inc [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/pr101145inf_1.c [new file with mode: 0644]
gcc/tree-ssa-loop-niter.c