|  | // RUN: clang-cc -fsyntax-only -verify %s | 
|  | // rdar://6425550 | 
|  | int bar(); | 
|  | void do_something(int); | 
|  |  | 
|  | int foo() { | 
|  | if (int X = bar()) { | 
|  | return X; | 
|  | } else { | 
|  | do_something(X); // expected-warning{{'X' is always zero in this context}} | 
|  | } | 
|  | } | 
|  |  | 
|  | bool foo2() { | 
|  | if (bool B = bar()) { | 
|  | if (int Y = bar()) { | 
|  | return B; | 
|  | } else { | 
|  | do_something(Y); // expected-warning{{'Y' is always zero in this context}} | 
|  | return B; | 
|  | } | 
|  | } else { | 
|  | if (bool B2 = B) { // expected-warning{{'B' is always false in this context}} | 
|  | do_something(B); // expected-warning{{'B' is always false in this context}} | 
|  | } else if (B2) {  // expected-warning{{'B2' is always false in this context}} | 
|  | do_something(B); // expected-warning{{'B' is always false in this context}} | 
|  | } | 
|  | return B; // expected-warning{{'B' is always false in this context}} | 
|  | } | 
|  | } |