1 /* { dg-do compile } */
2 /* { dg-options "-O -Wuninitialized" } */
3 extern int bar (int);
4 extern void baz (int *);
5 int
foo(int i)6 foo (int i)
7 {
8   int j; /* { dg-warning "'j' may be used uninitialized" "uninitialized" { xfail *-*-* } } */
9 
10   if (bar (i)) {
11     baz (&j);
12   } else {
13   }
14 
15   return j;
16 }
17 
18 
19 
foo2(void)20 int foo2( void ) {
21   int rc;
22   return rc;  /* { dg-warning "'rc' is used uninitialized" } */
23   *&rc = 0;
24 }
25 
26 extern int printf(const char *, ...);
27 void frob(int *pi);
28 
main(void)29 int main(void)
30 {
31   int i;
32   printf("i = %d\n", i); /* { dg-warning "'i' is used uninitialized" } */
33   frob(&i);
34 
35   return 0;
36 }
37 
38 void foo3(int*);
bar3(void)39 void bar3(void) {
40   int x;
41   if(x) /* { dg-warning "'x' is used uninitialized" "uninitialized" } */
42     foo3(&x);
43 }
44