1 /* { dg-do compile } */
2 /* { dg-options "-Wstrict-aliasing=1 -fstrict-aliasing" } */
6 struct s2
{ double d
; };
9 f (int *i
, double *d
, struct s1
*s1
, struct s2
*s2
, char *c
)
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" } */
23 (double *) i
; /* { dg-warning "dereferencing type-punned pointer might break strict-aliasing rules" } */
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" } */
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" } */
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" } */
38 (struct s1
*) s2
; /* { dg-warning "dereferencing type-punned pointer might break strict-aliasing rules" } */
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" } */