(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
pointer-arith-4.c
       1  /* Test diagnostics for arithmetic on void and function pointers.
       2     Test with -pedantic-errors.  */
       3  /* Origin: Joseph Myers <joseph@codesourcery.com> */
       4  /* { dg-do compile } */
       5  /* { dg-options "-pedantic-errors" } */
       6  
       7  void *p;
       8  void (*f)(void);
       9  
      10  void
      11  g (void)
      12  {
      13    p + 0; /* { dg-error "pointer of type 'void \\*' used in arithmetic" } */
      14    p + 1; /* { dg-error "pointer of type 'void \\*' used in arithmetic" } */
      15    0 + p; /* { dg-error "pointer of type 'void \\*' used in arithmetic" } */
      16    1 + p; /* { dg-error "pointer of type 'void \\*' used in arithmetic" } */
      17    p - 0; /* { dg-error "pointer of type 'void \\*' used in arithmetic" } */
      18    p - 1; /* { dg-error "pointer of type 'void \\*' used in arithmetic" } */
      19    p += 0; /* { dg-error "pointer of type 'void \\*' used in arithmetic" } */
      20    p += 1; /* { dg-error "pointer of type 'void \\*' used in arithmetic" } */
      21    p -= 0; /* { dg-error "pointer of type 'void \\*' used in arithmetic" } */
      22    p -= 1; /* { dg-error "pointer of type 'void \\*' used in arithmetic" } */
      23    f + 0; /* { dg-error "pointer to a function used in arithmetic" } */
      24    f + 1; /* { dg-error "pointer to a function used in arithmetic" } */
      25    0 + f; /* { dg-error "pointer to a function used in arithmetic" } */
      26    1 + f; /* { dg-error "pointer to a function used in arithmetic" } */
      27    f - 0; /* { dg-error "pointer to a function used in arithmetic" } */
      28    f - 1; /* { dg-error "pointer to a function used in arithmetic" } */
      29    f += 0; /* { dg-error "pointer to a function used in arithmetic" } */
      30    f += 1; /* { dg-error "pointer to a function used in arithmetic" } */
      31    f -= 0; /* { dg-error "pointer to a function used in arithmetic" } */
      32    f -= 1; /* { dg-error "pointer to a function used in arithmetic" } */
      33    p[0]; /* { dg-warning "dereferencing 'void \\*' pointer" } */
      34    /* { dg-error "pointer of type 'void \\*' used in arithmetic" "array 1" { target *-*-* } .-1 } */
      35    0[p]; /* { dg-warning "dereferencing 'void \\*' pointer" } */
      36    /* { dg-error "pointer of type 'void \\*' used in arithmetic" "array 1" { target *-*-* } .-1 } */
      37    f[0]; /* { dg-error "subscripted value is pointer to function" } */
      38    0[f]; /* { dg-error "subscripted value is pointer to function" } */
      39    p - p; /* { dg-error "pointer of type 'void \\*' used in subtraction" } */
      40    f - f; /* { dg-error "pointer to a function used in subtraction" } */
      41  }