diff options
Diffstat (limited to 'lib/StaticAnalyzer/Checkers/ExprInspectionChecker.cpp')
| -rw-r--r-- | lib/StaticAnalyzer/Checkers/ExprInspectionChecker.cpp | 20 | 
1 files changed, 14 insertions, 6 deletions
| diff --git a/lib/StaticAnalyzer/Checkers/ExprInspectionChecker.cpp b/lib/StaticAnalyzer/Checkers/ExprInspectionChecker.cpp index 2553f54bbcacb..f23f784016d88 100644 --- a/lib/StaticAnalyzer/Checkers/ExprInspectionChecker.cpp +++ b/lib/StaticAnalyzer/Checkers/ExprInspectionChecker.cpp @@ -1,9 +1,8 @@  //==- ExprInspectionChecker.cpp - Used for regression tests ------*- C++ -*-==//  // -//                     The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception  //  //===----------------------------------------------------------------------===// @@ -12,6 +11,7 @@  #include "clang/StaticAnalyzer/Core/BugReporter/BugType.h"  #include "clang/StaticAnalyzer/Core/Checker.h"  #include "clang/StaticAnalyzer/Core/IssueHash.h" +#include "clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h"  #include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h"  #include "llvm/ADT/StringSwitch.h"  #include "llvm/Support/ScopedPrinter.h" @@ -54,7 +54,7 @@ class ExprInspectionChecker : public Checker<eval::Call, check::DeadSymbols,                            ExplodedNode *N) const;  public: -  bool evalCall(const CallExpr *CE, CheckerContext &C) const; +  bool evalCall(const CallEvent &Call, CheckerContext &C) const;    void checkDeadSymbols(SymbolReaper &SymReaper, CheckerContext &C) const;    void checkEndAnalysis(ExplodedGraph &G, BugReporter &BR,                          ExprEngine &Eng) const; @@ -64,8 +64,12 @@ public:  REGISTER_SET_WITH_PROGRAMSTATE(MarkedSymbols, SymbolRef)  REGISTER_MAP_WITH_PROGRAMSTATE(DenotedSymbols, SymbolRef, const StringLiteral *) -bool ExprInspectionChecker::evalCall(const CallExpr *CE, +bool ExprInspectionChecker::evalCall(const CallEvent &Call,                                       CheckerContext &C) const { +  const auto *CE = dyn_cast_or_null<CallExpr>(Call.getOriginExpr()); +  if (!CE) +    return false; +    // These checks should have no effect on the surrounding environment    // (globals should not be invalidated, etc), hence the use of evalCall.    FnCheck Handler = llvm::StringSwitch<FnCheck>(C.getCalleeName(CE)) @@ -409,3 +413,7 @@ void ExprInspectionChecker::analyzerExpress(const CallExpr *CE,  void ento::registerExprInspectionChecker(CheckerManager &Mgr) {    Mgr.registerChecker<ExprInspectionChecker>();  } + +bool ento::shouldRegisterExprInspectionChecker(const LangOptions &LO) { +  return true; +} | 
