]>
Commit | Line | Data |
---|---|---|
85eb94a0 ZW |
1 | /* Spurious uninit variable warnings, case 4. |
2 | Simplified version of cppexp.c (cpp_parse_expr). | |
3 | ||
4 | This one is really fragile, it gets it right if you take out case | |
5 | 1, or if the structure is replaced by an int, or if the structure | |
6 | has fewer members (!) */ | |
7 | ||
8 | /* { dg-do compile } */ | |
9 | /* { dg-options "-O -Wuninitialized" } */ | |
10 | ||
7b844298 ZW |
11 | extern void abort (void); |
12 | ||
85eb94a0 ZW |
13 | struct operation { |
14 | short op; | |
15 | char rprio; | |
16 | char flags; | |
17 | char unsignedp; | |
18 | long value; | |
19 | }; | |
20 | ||
21 | extern struct operation cpp_lex (void); | |
22 | ||
23 | void | |
24 | cpp_parse_expr (void) | |
25 | { | |
150de506 | 26 | int rprio; /* { dg-bogus "rprio" "uninitialized variable warning PR19833" } */ |
85eb94a0 ZW |
27 | struct operation op; |
28 | ||
29 | for (;;) | |
30 | { | |
31 | op = cpp_lex (); | |
32 | ||
33 | switch (op.op) | |
34 | { | |
35 | case 0: | |
36 | break; | |
37 | case 1: | |
38 | return; | |
39 | case 2: | |
40 | rprio = 1; | |
41 | break; | |
42 | default: | |
43 | return; | |
44 | } | |
45 | ||
46 | if (op.op == 0) | |
47 | return; | |
48 | ||
49 | if (rprio != 1) | |
50 | abort(); | |
51 | } | |
52 | } |