1 /* { dg-do compile } */
2 /* { dg-options "-Wshadow=compatible-local" } */
3 
4 struct Bar {
5 };
6 
7 struct Bar bar;       /* { dg-bogus "shadowed declaration" } */
8 
9 int val;              /* { dg-bogus "shadowed declaration" } */
10 
func1(int x)11 int func1(int x) {    /* { dg-bogus "shadowed declaration" } */
12   int val;            /* { dg-bogus "shadows a global" } */
13   val = x;
14   return val;
15 }
16 
func2(int i)17 int func2(int i) {
18   int a = 3;          /* { dg-message "shadowed declaration" } */
19   int j;              /* { dg-message "shadowed declaration" } */
20 
21   for (j = 0; j < i; ++j) {
22     int a = j;        /* { dg-warning "shadows a previous local" } */
23     int j = a + 1;    /* { dg-warning "shadows a previous local" } */
24     func1(j);
25   }
26 
27   return a;
28 }
29 
func4()30 void func4() {
31   struct Bar bar;     /* { dg-bogus "shadowed declaration" } */
32   if (val) {
33     int bar;          /* { dg-bogus "shadows a previous local" } */
34     func1(bar);
35   }
36 }
37