diff options
Diffstat (limited to 'clang/lib/Checker/DereferenceChecker.cpp')
-rw-r--r-- | clang/lib/Checker/DereferenceChecker.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/clang/lib/Checker/DereferenceChecker.cpp b/clang/lib/Checker/DereferenceChecker.cpp index af929a7af72..f1d77204cbc 100644 --- a/clang/lib/Checker/DereferenceChecker.cpp +++ b/clang/lib/Checker/DereferenceChecker.cpp @@ -125,6 +125,11 @@ void DereferenceChecker::VisitLocation(CheckerContext &C, const Stmt *S, llvm::SmallString<100> buf; llvm::SmallVector<SourceRange, 2> Ranges; + + // Walk through lvalue casts to get the original expression + // that syntactically caused the load. + if (const Expr *expr = dyn_cast<Expr>(S)) + S = expr->IgnoreParenLValueCasts(); switch (S->getStmtClass()) { case Stmt::ArraySubscriptExprClass: { |