diff options
| author | 2020-08-03 15:06:44 +0000 | |
|---|---|---|
| committer | 2020-08-03 15:06:44 +0000 | |
| commit | b64793999546ed8adebaeebd9d8345d18db8927d (patch) | |
| tree | 4357c27b561d73b0e089727c6ed659f2ceff5f47 /gnu/llvm/tools/clang/lib/StaticAnalyzer/Checkers/TraversalChecker.cpp | |
| parent | Add support for UTF-8 DISPLAY-HINTs with octet length. For now only (diff) | |
| download | wireguard-openbsd-b64793999546ed8adebaeebd9d8345d18db8927d.tar.xz wireguard-openbsd-b64793999546ed8adebaeebd9d8345d18db8927d.zip | |
Remove LLVM 8.0.1 files.
Diffstat (limited to 'gnu/llvm/tools/clang/lib/StaticAnalyzer/Checkers/TraversalChecker.cpp')
| -rw-r--r-- | gnu/llvm/tools/clang/lib/StaticAnalyzer/Checkers/TraversalChecker.cpp | 114 |
1 files changed, 0 insertions, 114 deletions
diff --git a/gnu/llvm/tools/clang/lib/StaticAnalyzer/Checkers/TraversalChecker.cpp b/gnu/llvm/tools/clang/lib/StaticAnalyzer/Checkers/TraversalChecker.cpp deleted file mode 100644 index 2f06469bb20..00000000000 --- a/gnu/llvm/tools/clang/lib/StaticAnalyzer/Checkers/TraversalChecker.cpp +++ /dev/null @@ -1,114 +0,0 @@ -//== TraversalChecker.cpp -------------------------------------- -*- C++ -*--=// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// These checkers print various aspects of the ExprEngine's traversal of the CFG -// as it builds the ExplodedGraph. -// -//===----------------------------------------------------------------------===// -#include "clang/StaticAnalyzer/Checkers/BuiltinCheckerRegistration.h" -#include "clang/AST/ParentMap.h" -#include "clang/AST/StmtObjC.h" -#include "clang/StaticAnalyzer/Core/Checker.h" -#include "clang/StaticAnalyzer/Core/CheckerManager.h" -#include "clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h" -#include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h" -#include "llvm/Support/raw_ostream.h" - -using namespace clang; -using namespace ento; - -namespace { -class TraversalDumper : public Checker< check::BranchCondition, - check::BeginFunction, - check::EndFunction > { -public: - void checkBranchCondition(const Stmt *Condition, CheckerContext &C) const; - void checkBeginFunction(CheckerContext &C) const; - void checkEndFunction(const ReturnStmt *RS, CheckerContext &C) const; -}; -} - -void TraversalDumper::checkBranchCondition(const Stmt *Condition, - CheckerContext &C) const { - // Special-case Objective-C's for-in loop, which uses the entire loop as its - // condition. We just print the collection expression. - const Stmt *Parent = dyn_cast<ObjCForCollectionStmt>(Condition); - if (!Parent) { - const ParentMap &Parents = C.getLocationContext()->getParentMap(); - Parent = Parents.getParent(Condition); - } - - // It is mildly evil to print directly to llvm::outs() rather than emitting - // warnings, but this ensures things do not get filtered out by the rest of - // the static analyzer machinery. - SourceLocation Loc = Parent->getBeginLoc(); - llvm::outs() << C.getSourceManager().getSpellingLineNumber(Loc) << " " - << Parent->getStmtClassName() << "\n"; -} - -void TraversalDumper::checkBeginFunction(CheckerContext &C) const { - llvm::outs() << "--BEGIN FUNCTION--\n"; -} - -void TraversalDumper::checkEndFunction(const ReturnStmt *RS, - CheckerContext &C) const { - llvm::outs() << "--END FUNCTION--\n"; -} - -void ento::registerTraversalDumper(CheckerManager &mgr) { - mgr.registerChecker<TraversalDumper>(); -} - -//------------------------------------------------------------------------------ - -namespace { -class CallDumper : public Checker< check::PreCall, - check::PostCall > { -public: - void checkPreCall(const CallEvent &Call, CheckerContext &C) const; - void checkPostCall(const CallEvent &Call, CheckerContext &C) const; -}; -} - -void CallDumper::checkPreCall(const CallEvent &Call, CheckerContext &C) const { - unsigned Indentation = 0; - for (const LocationContext *LC = C.getLocationContext()->getParent(); - LC != nullptr; LC = LC->getParent()) - ++Indentation; - - // It is mildly evil to print directly to llvm::outs() rather than emitting - // warnings, but this ensures things do not get filtered out by the rest of - // the static analyzer machinery. - llvm::outs().indent(Indentation); - Call.dump(llvm::outs()); -} - -void CallDumper::checkPostCall(const CallEvent &Call, CheckerContext &C) const { - const Expr *CallE = Call.getOriginExpr(); - if (!CallE) - return; - - unsigned Indentation = 0; - for (const LocationContext *LC = C.getLocationContext()->getParent(); - LC != nullptr; LC = LC->getParent()) - ++Indentation; - - // It is mildly evil to print directly to llvm::outs() rather than emitting - // warnings, but this ensures things do not get filtered out by the rest of - // the static analyzer machinery. - llvm::outs().indent(Indentation); - if (Call.getResultType()->isVoidType()) - llvm::outs() << "Returning void\n"; - else - llvm::outs() << "Returning " << C.getSVal(CallE) << "\n"; -} - -void ento::registerCallDumper(CheckerManager &mgr) { - mgr.registerChecker<CallDumper>(); -} |
