1  
       2  /* { dg-do compile { target {{ i?86-*-* x86_64-*-* } && lp64 } } } */
       3  /* { dg-options "-O2 -m64 -fdump-tree-optimized" } */
       4  
       5  /* iv i's step 16 so its period is smaller than the max iterations
       6   * i.e. replacing if (p2 > p_limit2) with testing of i may result in
       7   * overflow.  */
       8  long foo(long* p, long* p2, int N1, int N2)
       9  {
      10    unsigned long  i = 0;
      11    long* p_limit2 = p2 + N2;
      12    long s = 0;
      13    while (i < N1)
      14      {
      15        p2++;
      16        i += 16;
      17        if (p2 > p_limit2)
      18          break;
      19       s += p[i];
      20    }
      21    return s;
      22  }
      23  
      24  /* { dg-final { scan-tree-dump "if \\(.*p_limit2.*\\)" "optimized"} } */