diff options
Diffstat (limited to 'clang/Analysis/UninitializedValues.cpp')
| -rw-r--r-- | clang/Analysis/UninitializedValues.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/clang/Analysis/UninitializedValues.cpp b/clang/Analysis/UninitializedValues.cpp index 8a27b71b8fd..35d6124e621 100644 --- a/clang/Analysis/UninitializedValues.cpp +++ b/clang/Analysis/UninitializedValues.cpp @@ -145,7 +145,13 @@ bool TransferFuncs::VisitUnaryOperator(UnaryOperator* U) { bool TransferFuncs::VisitConditionalOperator(ConditionalOperator* C) { Visit(C->getCond()); - return Visit(C->getLHS()) & Visit(C->getRHS()); // Yes: we want &, not &&. + + bool rhsResult = Visit(C->getRHS()); + // Handle the GNU extension for missing LHS. + if (Expr *lhs = C->getLHS()) + return Visit(lhs) & rhsResult; // Yes: we want &, not &&. + else + return rhsResult; } bool TransferFuncs::VisitStmt(Stmt* S) { |

