aboutsummaryrefslogtreecommitdiff
path: root/lib/IR/OptBisect.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/IR/OptBisect.cpp')
-rw-r--r--lib/IR/OptBisect.cpp83
1 files changed, 6 insertions, 77 deletions
diff --git a/lib/IR/OptBisect.cpp b/lib/IR/OptBisect.cpp
index c79e1fc2b0b4..3104b90f3070 100644
--- a/lib/IR/OptBisect.cpp
+++ b/lib/IR/OptBisect.cpp
@@ -1,9 +1,8 @@
//===- llvm/IR/OptBisect/Bisect.cpp - LLVM Bisect support -----------------===//
//
-// 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
//
//===----------------------------------------------------------------------===//
//
@@ -15,13 +14,6 @@
#include "llvm/IR/OptBisect.h"
#include "llvm/ADT/StringRef.h"
-#include "llvm/Analysis/CallGraph.h"
-#include "llvm/Analysis/CallGraphSCCPass.h"
-#include "llvm/Analysis/LoopInfo.h"
-#include "llvm/Analysis/RegionInfo.h"
-#include "llvm/IR/BasicBlock.h"
-#include "llvm/IR/Function.h"
-#include "llvm/IR/Module.h"
#include "llvm/Pass.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/raw_ostream.h"
@@ -47,73 +39,10 @@ static void printPassMessage(const StringRef &Name, int PassNum,
<< "(" << PassNum << ") " << Name << " on " << TargetDesc << "\n";
}
-static std::string getDescription(const Module &M) {
- return "module (" + M.getName().str() + ")";
-}
-
-static std::string getDescription(const Function &F) {
- return "function (" + F.getName().str() + ")";
-}
-
-static std::string getDescription(const BasicBlock &BB) {
- return "basic block (" + BB.getName().str() + ") in function (" +
- BB.getParent()->getName().str() + ")";
-}
-
-static std::string getDescription(const Loop &L) {
- // FIXME: Move into LoopInfo so we can get a better description
- // (and avoid a circular dependency between IR and Analysis).
- return "loop";
-}
-
-static std::string getDescription(const Region &R) {
- // FIXME: Move into RegionInfo so we can get a better description
- // (and avoid a circular dependency between IR and Analysis).
- return "region";
-}
-
-static std::string getDescription(const CallGraphSCC &SCC) {
- // FIXME: Move into CallGraphSCCPass to avoid circular dependency between
- // IR and Analysis.
- std::string Desc = "SCC (";
- bool First = true;
- for (CallGraphNode *CGN : SCC) {
- if (First)
- First = false;
- else
- Desc += ", ";
- Function *F = CGN->getFunction();
- if (F)
- Desc += F->getName();
- else
- Desc += "<<null function>>";
- }
- Desc += ")";
- return Desc;
-}
-
-bool OptBisect::shouldRunPass(const Pass *P, const Module &U) {
- return !BisectEnabled || checkPass(P->getPassName(), getDescription(U));
-}
-
-bool OptBisect::shouldRunPass(const Pass *P, const Function &U) {
- return !BisectEnabled || checkPass(P->getPassName(), getDescription(U));
-}
-
-bool OptBisect::shouldRunPass(const Pass *P, const BasicBlock &U) {
- return !BisectEnabled || checkPass(P->getPassName(), getDescription(U));
-}
-
-bool OptBisect::shouldRunPass(const Pass *P, const Region &U) {
- return !BisectEnabled || checkPass(P->getPassName(), getDescription(U));
-}
-
-bool OptBisect::shouldRunPass(const Pass *P, const Loop &U) {
- return !BisectEnabled || checkPass(P->getPassName(), getDescription(U));
-}
+bool OptBisect::shouldRunPass(const Pass *P, StringRef IRDescription) {
+ assert(BisectEnabled);
-bool OptBisect::shouldRunPass(const Pass *P, const CallGraphSCC &U) {
- return !BisectEnabled || checkPass(P->getPassName(), getDescription(U));
+ return checkPass(P->getPassName(), IRDescription);
}
bool OptBisect::checkPass(const StringRef PassName,