(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
alias-16.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-Wstrict-aliasing=1 -fstrict-aliasing" } */
       3  
       4  struct incomplete;
       5  struct s1 { int i; };
       6  struct s2 { double d; };
       7  
       8  void
       9  f (int *i, double *d, struct s1 *s1, struct s2 *s2, char *c)
      10  {
      11    (char *) i;
      12    (char *) d;
      13    (char *) s1;
      14    (char *) s2;
      15    (char *) c;
      16  
      17    (int *) i;
      18    (int *) d; /* { dg-warning "dereferencing type-punned pointer might break strict-aliasing rules" } */
      19    (int *) s1; /* { dg-warning "dereferencing type-punned pointer might break strict-aliasing rules" } */
      20    (int *) s2; /* { dg-warning "dereferencing type-punned pointer might break strict-aliasing rules" } */
      21    (int *) c;
      22  
      23    (double *) i; /* { dg-warning "dereferencing type-punned pointer might break strict-aliasing rules" } */
      24    (double *) d;
      25    (double *) s1; /* { dg-warning "dereferencing type-punned pointer might break strict-aliasing rules" } */
      26    (double *) s2; /* { dg-warning "dereferencing type-punned pointer might break strict-aliasing rules" } */
      27    (double *) c;
      28  
      29    (struct incomplete *) i; /* { dg-warning "dereferencing type-punned pointer might break strict-aliasing rules" } */
      30    (struct incomplete *) d; /* { dg-warning "dereferencing type-punned pointer might break strict-aliasing rules" } */
      31    (struct incomplete *) s1; /* { dg-warning "dereferencing type-punned pointer might break strict-aliasing rules" } */
      32    (struct incomplete *) s2; /* { dg-warning "dereferencing type-punned pointer might break strict-aliasing rules" } */
      33    (struct incomplete *) c; /* { dg-warning "dereferencing type-punned pointer might break strict-aliasing rules" } */
      34  
      35    (struct s1 *) i; /* { dg-warning "dereferencing type-punned pointer might break strict-aliasing rules" } */
      36    (struct s1 *) d; /* { dg-warning "dereferencing type-punned pointer might break strict-aliasing rules" } */
      37    (struct s1 *) s1;
      38    (struct s1 *) s2; /* { dg-warning "dereferencing type-punned pointer might break strict-aliasing rules" } */
      39    (struct s1 *) c;
      40  
      41    (struct s2 *) i; /* { dg-warning "dereferencing type-punned pointer might break strict-aliasing rules" } */
      42    (struct s2 *) d; /* { dg-warning "dereferencing type-punned pointer might break strict-aliasing rules" } */
      43    (struct s2 *) s1; /* { dg-warning "dereferencing type-punned pointer might break strict-aliasing rules" } */
      44    (struct s2 *) s2;
      45    (struct s2 *) c;
      46  }