|
@@ -28,6 +28,7 @@
|
|
|
#include "llvm/Support/raw_ostream.h"
|
|
|
#include <algorithm>
|
|
|
#include <map>
|
|
|
+#include <unordered_set>
|
|
|
using namespace llvm;
|
|
|
using namespace llvm::legacy;
|
|
|
|
|
@@ -83,6 +84,13 @@ PrintAfterAll("print-after-all",
|
|
|
llvm::cl::desc("Print IR after each pass"),
|
|
|
cl::init(false));
|
|
|
|
|
|
+static cl::list<std::string>
|
|
|
+ PrintFuncsList("filter-print-funcs", cl::value_desc("function names"),
|
|
|
+ cl::desc("Only print IR for functions whose name "
|
|
|
+ "match this for all print-[before|after][-all] "
|
|
|
+ "options"),
|
|
|
+ cl::CommaSeparated);
|
|
|
+
|
|
|
/// This is a helper to determine whether to print IR before or
|
|
|
/// after a pass.
|
|
|
|
|
@@ -109,6 +117,11 @@ static bool ShouldPrintAfterPass(const PassInfo *PI) {
|
|
|
return PrintAfterAll || ShouldPrintBeforeOrAfterPass(PI, PrintAfter);
|
|
|
}
|
|
|
|
|
|
+bool llvm::isFunctionInPrintList(StringRef FunctionName) {
|
|
|
+ static std::unordered_set<std::string> PrintFuncNames(PrintFuncsList.begin(),
|
|
|
+ PrintFuncsList.end());
|
|
|
+ return PrintFuncNames.empty() || PrintFuncNames.count(FunctionName);
|
|
|
+}
|
|
|
/// isPassDebuggingExecutionsOrMore - Return true if -debug-pass=Executions
|
|
|
/// or higher is specified.
|
|
|
bool PMDataManager::isPassDebuggingExecutionsOrMore() const {
|