// RUN: %clang_cc1 -fsyntax-only -Wuninitialized -verify %s void use_val(int); void use_const_ref(const int &); // Test that the warning about self initialization is generated only once. void test_self_init_1warning(bool a) { int v = v; // expected-warning {{variable 'v' is uninitialized when used within its own initialization}} if (a) use_val(v); else use_const_ref(v); } // Test that the diagnostic for using an uninitialized variable directly has a // higher priority than using the same variable via a const reference. void test_prioritize_use_over_const_ref(bool a) { int v; // expected-note {{initialize the variable 'v' to silence this warning}} if (a) // expected-warning {{variable 'v' is used uninitialized whenever 'if' condition is false}} // expected-note@-1 {{remove the 'if' if its condition is always true}} v = 2; else use_const_ref(v); use_val(v); // expected-note {{uninitialized use occurs here}} }