diff options
author | Jiufu Guo <guojiufu@linux.ibm.com> | 2021-07-07 13:41:01 +0800 |
---|---|---|
committer | Jiufu Guo <guojiufu@linux.ibm.com> | 2021-08-25 16:38:12 +0800 |
commit | 3673dcf6d6baeb67bb70ff03d4cb3f92beed0075 (patch) | |
tree | 157286b07183d186b343dac748c54407a9e6c908 /libcpp/include/cpplib.h | |
parent | db3d4129b6f4cff685713da514b64ff7bbc401fc (diff) | |
download | gcc-3673dcf6d6baeb67bb70ff03d4cb3f92beed0075.zip gcc-3673dcf6d6baeb67bb70ff03d4cb3f92beed0075.tar.gz gcc-3673dcf6d6baeb67bb70ff03d4cb3f92beed0075.tar.bz2 |
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.
Diffstat (limited to 'libcpp/include/cpplib.h')
0 files changed, 0 insertions, 0 deletions