Index: cfe/trunk/lib/Sema/SemaChecking.cpp =================================================================== --- cfe/trunk/lib/Sema/SemaChecking.cpp +++ cfe/trunk/lib/Sema/SemaChecking.cpp @@ -11384,7 +11384,7 @@ (RHS->getValue() == 0 || RHS->getValue() == 1)) // Do not diagnose common idioms. return; - if (LHS->getValue() != 0 && LHS->getValue() != 0) + if (LHS->getValue() != 0 && RHS->getValue() != 0) S.Diag(ExprLoc, diag::warn_integer_constants_in_conditional_always_true); } } Index: cfe/trunk/test/Sema/warn-integer-constants-in-ternary.c =================================================================== --- cfe/trunk/test/Sema/warn-integer-constants-in-ternary.c +++ cfe/trunk/test/Sema/warn-integer-constants-in-ternary.c @@ -18,7 +18,7 @@ boolean r; r = a ? (1) : TWO; r = a ? 3 : TWO; // expected-warning {{converting the result of '?:' with integer constants to a boolean always evaluates to 'true'}} - r = a ? -2 : 0; // expected-warning {{converting the result of '?:' with integer constants to a boolean always evaluates to 'true'}} + r = a ? -2 : 0; r = a ? 3 : -2; // expected-warning {{converting the result of '?:' with integer constants to a boolean always evaluates to 'true'}} r = a ? 0 : TWO; r = a ? 3 : ONE; // expected-warning {{converting the result of '?:' with integer constants to a boolean always evaluates to 'true'}}