libcpp, c, middle-end: Optimize initializers using #embed in C
[official-gcc.git] / gcc / testsuite / gcc.dg / alias-16.c
blob8f5aa35281b5c8dfa6f99cfade42032b47fa5f3a
1 /* { dg-do compile } */
2 /* { dg-options "-Wstrict-aliasing=1 -fstrict-aliasing" } */
4 struct incomplete;
5 struct s1 { int i; };
6 struct s2 { double d; };
8 void
9 f (int *i, double *d, struct s1 *s1, struct s2 *s2, char *c)
11 (char *) i;
12 (char *) d;
13 (char *) s1;
14 (char *) s2;
15 (char *) c;
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;
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;
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" } */
37 (struct s1 *) s1;
38 (struct s1 *) s2; /* { dg-warning "dereferencing type-punned pointer might break strict-aliasing rules" } */
39 (struct s1 *) c;
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;