OSDN Git Service

patch for PR rtl-optimization/25130
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / uninit-2.c
1 /* Spurious uninitialized variable warnings, case 2.
2    Taken from cpphash.c (macroexpand) */
3 /* { dg-do compile } */
4 /* { dg-options "-O -Wuninitialized" } */
5
6 struct definition
7 {
8   int nargs;
9   int rest_args;
10 };
11
12 struct cpp_reader;
13
14 enum cpp_token
15 {
16   CPP_EOF, CPP_POP, CPP_COMMA, CPP_RPAREN
17 };
18
19 extern enum cpp_token macarg (struct cpp_reader *, int);
20
21 void
22 macroexpand (struct cpp_reader *pfile, struct definition *defn)
23 {
24   int nargs = defn->nargs;
25
26   if (nargs >= 0)
27     {
28       enum cpp_token token;  /* { dg-bogus "token" "uninitialized variable warning" } */
29       int i, rest_args;
30       i = 0;
31       rest_args = 0;
32       do
33         {
34           if (rest_args)
35             continue;
36           if (i < nargs || (nargs == 0 && i == 0))
37             {
38               /* if we are working on last arg which absorbs rest of args... */
39               if (i == nargs - 1 && defn->rest_args)
40                 rest_args = 1;
41               token = macarg (pfile, rest_args);
42             }
43           else
44             token = macarg (pfile, 0);
45           if (token == CPP_EOF || token == CPP_POP)
46             return;
47
48           i++;
49         }
50       while (token == CPP_COMMA);
51     }
52 }