(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
tree-ssa/
pr19210-1.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -fno-tree-vectorize -fopt-info-loop-missed" } */
       3  extern void g(void);
       4  
       5  void
       6  f (unsigned n)
       7  {
       8    unsigned k;
       9    for(k = 0;k <= n;k++) /* { dg-missed "missed loop optimization: niters analysis .*" } */
      10      g();
      11  
      12    for(k = 0;k <= n;k += 4) /* { dg-missed "missed loop optimization: niters analysis .*" } */
      13      g();
      14  
      15    /* We used to get warning for this loop.  However, since then # of iterations
      16       analysis improved, and we can now prove that this loop does not verflow.
      17       This is because the only case when it would overflow is if n = ~0 (since
      18       ~0 is divisible by 5), and this cannot be the case, since when we got
      19       here, the previous loop exited, thus there exists k > n.  */
      20    for(k = 5;k <= n;k += 5)
      21      g();
      22  
      23    /* So we need the following loop, instead.  */
      24    for(k = 4;k <= n;k += 5) /* { dg-missed "missed loop optimization: niters analysis .*" } */
      25      g();
      26    
      27    for(k = 15;k >= n;k--) /* { dg-missed "missed loop optimization: niters analysis .*" } */
      28      g();
      29  }