aboutsummaryrefslogtreecommitdiff
path: root/libcpp/include/cpplib.h
diff options
context:
space:
mode:
authorJiufu Guo <guojiufu@linux.ibm.com>2021-07-07 13:41:01 +0800
committerJiufu Guo <guojiufu@linux.ibm.com>2021-08-25 16:38:12 +0800
commit3673dcf6d6baeb67bb70ff03d4cb3f92beed0075 (patch)
tree157286b07183d186b343dac748c54407a9e6c908 /libcpp/include/cpplib.h
parentdb3d4129b6f4cff685713da514b64ff7bbc401fc (diff)
downloadgcc-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