1 | // RUN: %clang_cc1 -fsyntax-only -Wconditional-uninitialized -fsyntax-only %s -verify |
2 | |
3 | class Foo { |
4 | public: |
5 | Foo(); |
6 | ~Foo(); |
7 | operator bool(); |
8 | }; |
9 | |
10 | int bar(); |
11 | int baz(); |
12 | int init(double *); |
13 | |
14 | // This case flags a false positive under -Wconditional-uninitialized because |
15 | // the destructor in Foo fouls about the minor bit of path-sensitivity in |
16 | // -Wuninitialized. |
17 | double test() { |
18 | double x; // expected-note{{initialize the variable 'x' to silence this warning}} |
19 | if (bar() || baz() || Foo() || init(&x)) |
20 | return 1.0; |
21 | |
22 | return x; // expected-warning {{variable 'x' may be uninitialized when used here}} |
23 | } |
24 | |