(root)/
gcc-13.2.0/
gcc/
testsuite/
c-c++-common/
Wpointer-compare-1.c
       1  /* PR c++/64767 */
       2  /* { dg-do compile } */
       3  /* { dg-options "-Wpointer-compare" } */
       4  /* { dg-additional-options "-std=c++03" { target c++ } } */
       5  
       6  int
       7  f1 (int *p, int **q)
       8  {
       9    int r = 0;
      10  
      11    r += p == '\0'; /* { dg-warning "10:comparison between pointer and zero character" } */
      12    r += p == L'\0'; /* { dg-warning "10:comparison between pointer and zero character" } */
      13    r += p != '\0'; /* { dg-warning "10:comparison between pointer and zero character" } */
      14    r += p != L'\0'; /* { dg-warning "10:comparison between pointer and zero character" } */
      15  
      16    r += '\0' == p; /* { dg-warning "13:comparison between pointer and zero character" } */
      17    r += L'\0' == p; /* { dg-warning "14:comparison between pointer and zero character" } */
      18    r += '\0' != p; /* { dg-warning "13:comparison between pointer and zero character" } */
      19    r += L'\0' != p; /* { dg-warning "14:comparison between pointer and zero character" } */
      20  
      21    r += q == '\0'; /* { dg-warning "10:comparison between pointer and zero character" } */
      22    r += q == L'\0'; /* { dg-warning "10:comparison between pointer and zero character" } */
      23    r += q != '\0'; /* { dg-warning "10:comparison between pointer and zero character" } */
      24    r += q != L'\0'; /* { dg-warning "10:comparison between pointer and zero character" } */
      25  
      26    r += '\0' == q; /* { dg-warning "13:comparison between pointer and zero character" } */
      27    r += L'\0' == q; /* { dg-warning "14:comparison between pointer and zero character" } */
      28    r += '\0' != q; /* { dg-warning "13:comparison between pointer and zero character" } */
      29    r += L'\0' != q; /* { dg-warning "14:comparison between pointer and zero character" } */
      30  
      31    return r;
      32  }
      33  
      34  int
      35  f2 (int *p)
      36  {
      37    int r = 0;
      38  
      39    /* Keep quiet.  */
      40    r += p == (void *) 0;
      41    r += p != (void *) 0;
      42    r += (void *) 0 == p;
      43    r += (void *) 0 != p;
      44  
      45    r += p == 0;
      46    r += p != 0;
      47    r += 0 == p;
      48    r += 0 != p;
      49  
      50    return r;
      51  }
      52  
      53  int
      54  f3 (int *p)
      55  {
      56    int r = 0;
      57  
      58    r += p == (char) 0; /* { dg-warning "10:comparison between pointer and zero character" } */
      59    r += p != (char) 0; /* { dg-warning "10:comparison between pointer and zero character" } */
      60  
      61    r += (char) 0 == p; /* { dg-warning "17:comparison between pointer and zero character" } */
      62    r += (char) 0 != p; /* { dg-warning "17:comparison between pointer and zero character" } */
      63  
      64    return r;
      65  }