// RUN: %clang_cc1 -fsyntax-only -Wconditional-uninitialized -fsyntax-only %s -verify | |
class Foo { | |
public: | |
Foo(); | |
~Foo(); | |
operator bool(); | |
}; | |
int bar(); | |
int baz(); | |
int init(double *); | |
// This case flags a false positive under -Wconditional-uninitialized because | |
// the destructor in Foo fouls about the minor bit of path-sensitivity in | |
// -Wuninitialized. | |
double test() { | |
double x; // expected-note{{initialize the variable 'x' to silence this warning}} | |
if (bar() || baz() || Foo() || init(&x)) | |
return 1.0; | |
return x; // expected-warning {{variable 'x' may be uninitialized when used here}} | |
} |