(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
pr81281-2.c
       1  /* PR sanitizer/81281 */
       2  /* { dg-do compile } */
       3  /* { dg-options "-O2 -fdump-tree-optimized" } */
       4  /* { dg-final { scan-tree-dump-not "p_\[0-9]*\\(D\\)" "optimized" } } */
       5  
       6  typedef __SIZE_TYPE__ size_t;
       7  typedef __INTPTR_TYPE__ T;
       8  
       9  T
      10  f1 (char *p, size_t a, size_t b)
      11  {
      12    char *c = p + 1;
      13    size_t d = a + 2;
      14    size_t e = b + 3;
      15    T f = (T) (p + a);
      16    T g = (T) (p + b);
      17    return f - g;
      18  }
      19  
      20  T
      21  f2 (char *p, size_t a, size_t b)
      22  {
      23    size_t c = a + 1;
      24    char *d = p + 2;
      25    size_t e = b + 3;
      26    T f = (T) (p + a);
      27    T g = (T) (p + b);
      28    return f - g;
      29  }
      30  
      31  T
      32  f3 (char *p, size_t a, size_t b)
      33  {
      34    size_t c = b + 1;
      35    char *d = p + 2;
      36    size_t e = a + 3;
      37    T f = (T) (p + a);
      38    T g = (T) (p + b);
      39    return f - g;
      40  }
      41  
      42  T
      43  f4 (char *p, size_t a)
      44  {
      45    char *c = p + 1;
      46    size_t d = a + 2;
      47    T f = (T) (p + a);
      48    T g = (T) p;
      49    return f - g;
      50  }
      51  
      52  T
      53  f5 (char *p, size_t a)
      54  {
      55    size_t c = a + 1;
      56    char *d = p + 2;
      57    T f = (T) (p + a);
      58    T g = (T) p;
      59    return f - g;
      60  }
      61  
      62  T
      63  f6 (char *p, size_t a)
      64  {
      65    char *c = p + 1;
      66    size_t d = a + 2;
      67    T f = (T) p;
      68    T g = (T) (p + a);
      69    return f - g;
      70  }
      71  
      72  T
      73  f7 (char *p, size_t a)
      74  {
      75    size_t c = a + 1;
      76    char *d = p + 2;
      77    T f = (T) p;
      78    T g = (T) (p + a);
      79    return f - g;
      80  }