summaryrefslogtreecommitdiffstats
path: root/gnu/llvm/tools/clang/lib/StaticAnalyzer/Checkers/TraversalChecker.cpp
diff options
context:
space:
mode:
authorpatrick <patrick@openbsd.org>2020-08-03 15:06:44 +0000
committerpatrick <patrick@openbsd.org>2020-08-03 15:06:44 +0000
commitb64793999546ed8adebaeebd9d8345d18db8927d (patch)
tree4357c27b561d73b0e089727c6ed659f2ceff5f47 /gnu/llvm/tools/clang/lib/StaticAnalyzer/Checkers/TraversalChecker.cpp
parentAdd support for UTF-8 DISPLAY-HINTs with octet length. For now only (diff)
downloadwireguard-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.cpp114
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>();
-}