testsuite: Add -Wno-psabi to pr104505.c
[official-gcc.git] / gcc / testsuite / c-c++-common / Wdangling-pointer-4.c
bloba747aabd28881c2b1dcf03d8e238f98e4de988b7
1 /* PR middle-end/63272 - GCC should warn when using pointer to dead scoped
2 variable within the same function
3 Exercise -Wdangling-pointer for VLAs.
4 { dg-do compile }
5 { dg-options "-O0 -Wall -ftrack-macro-expansion=0" }
6 { dg-require-effective-target alloca } */
8 void sink (void*, ...);
10 void nowarn_vla (int n)
13 int vla1[n];
14 int *p1 = vla1;
15 sink (p1);
18 int vla2[n];
19 int *p2 = vla2;
20 sink (p1, p2);
23 int vla3[n];
24 int *p3 = vla3;
25 sink (p1, p2, p3);
27 sink (p1, p2);
29 sink (p1);
33 void warn_one_vla (int n)
35 int *p;
37 int vla[n]; // { dg-message "'vla' declared" "pr??????" { xfail *-*-* } }
38 p = vla;
40 sink (p); // { dg-warning "using a dangling pointer to 'vla'" "vla" { xfail *-*-* } }
44 void warn_two_vlas_same_block (int n)
46 int *p, *q;
48 int vla1[n]; // { dg-message "'vla1' declared" "pr??????" { xfail *-*-* } }
49 int vla2[n]; // { dg-message "'vla2' declared" "pr??????" { xfail *-*-* } }
50 p = vla1;
51 q = vla2;
54 sink (p); // { dg-warning "using a dangling pointer to 'vla1'" "vla" { xfail *-*-* } }
55 sink (q); // { dg-warning "using a dangling pointer to 'vla2'" "vla" { xfail *-*-* } }
59 void warn_two_vlas_in_series (int n)
61 int *p;
63 int vla1[n]; // { dg-message "'vla1' declared" "pr??????" { xfail *-*-* } }
64 p = vla1;
66 sink (p); // { dg-warning "using a dangling pointer to 'vla1'" "vla" { xfail *-*-* } }
68 int *q;
70 int vla2[n]; // { dg-message "'vla2' declared" "pr??????" { xfail *-*-* } }
71 q = vla2;
73 sink (q); // { dg-warning "using a dangling pointer to 'vla2'" "vla" { xfail *-*-* } }