Created
August 27, 2021 11:45
-
-
Save vext01/301ff503a2abeb0c67740856a5a46c46 to your computer and use it in GitHub Desktop.
Linkage error adding a new pass
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
usr/bin/ld: ../../../../lib/libLLVMPasses.a(PassBuilder.cpp.o): in function `llvm::detail::PassModel<llvm::Function, llvm::YkTraceInputsPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&)': | |
PassBuilder.cpp:(.text._ZN4llvm6detail9PassModelINS_8FunctionENS_17YkTraceInputsPassENS_17PreservedAnalysesENS_15AnalysisManagerIS2_JEEEJEE3runERS2_RS6_[_ZN4llvm6detail9PassModelINS_8FunctionENS_17YkTraceInputsPassENS_17PreservedAnalysesENS_15AnalysisManagerIS2_JEEEJEE3runERS2_RS6_]+0xa): undefined reference to `llvm::YkTraceInputsPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&)' | |
collect2: error: ld returned 1 exit status |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/llvm/include/llvm/Transforms/YkTraceInputs/YkTraceInputs.h b/llvm/include/llvm/Transforms/YkTraceInputs/YkTraceInputs.h | |
new file mode 100644 | |
index 000000000000..9a0e8d59df65 | |
--- /dev/null | |
+++ b/llvm/include/llvm/Transforms/YkTraceInputs/YkTraceInputs.h | |
@@ -0,0 +1,13 @@ | |
+#ifndef LLVM_TRANSFORMS_YKTRACEINPUTS_YKTRACEINPUTS_H | |
+#define LLVM_TRANSFORMS_YKTRACEINPUTS_YKTRACEINPUTS_H | |
+ | |
+#include "llvm/IR/PassManager.h" | |
+ | |
+namespace llvm { | |
+ class YkTraceInputsPass : public PassInfoMixin<YkTraceInputsPass> { | |
+ public: | |
+ PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM); | |
+ }; | |
+} | |
+ | |
+#endif | |
diff --git a/llvm/lib/Passes/CMakeLists.txt b/llvm/lib/Passes/CMakeLists.txt | |
index d834c0db4b45..69099e2d79f3 100644 | |
--- a/llvm/lib/Passes/CMakeLists.txt | |
+++ b/llvm/lib/Passes/CMakeLists.txt | |
@@ -25,4 +25,7 @@ add_llvm_component_library(LLVMPasses | |
TransformUtils | |
Vectorize | |
Instrumentation | |
+ | |
+ # FIXME: gets rid of linker error, but pass is unusable from opt tool. | |
+ #YkTraceInputs | |
) | |
diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp | |
index 6c1a7c75d30a..dca2b0a4692f 100644 | |
--- a/llvm/lib/Passes/PassBuilder.cpp | |
+++ b/llvm/lib/Passes/PassBuilder.cpp | |
@@ -236,6 +236,7 @@ | |
#include "llvm/Transforms/Vectorize/LoopVectorize.h" | |
#include "llvm/Transforms/Vectorize/SLPVectorizer.h" | |
#include "llvm/Transforms/Vectorize/VectorCombine.h" | |
+#include "llvm/Transforms/YkTraceInputs/YkTraceInputs.h" | |
using namespace llvm; | |
diff --git a/llvm/lib/Passes/PassRegistry.def b/llvm/lib/Passes/PassRegistry.def | |
index 877cb9ed13b3..e040c3ae74c7 100644 | |
--- a/llvm/lib/Passes/PassRegistry.def | |
+++ b/llvm/lib/Passes/PassRegistry.def | |
@@ -328,6 +328,7 @@ FUNCTION_PASS("msan", MemorySanitizerPass({})) | |
FUNCTION_PASS("kmsan", MemorySanitizerPass({0, false, /*Kernel=*/true})) | |
FUNCTION_PASS("tsan", ThreadSanitizerPass()) | |
FUNCTION_PASS("memprof", MemProfilerPass()) | |
+FUNCTION_PASS("yktraceinputs", YkTraceInputsPass()) | |
#undef FUNCTION_PASS | |
#ifndef FUNCTION_PASS_WITH_PARAMS | |
diff --git a/llvm/lib/Transforms/CMakeLists.txt b/llvm/lib/Transforms/CMakeLists.txt | |
index 2a0abebdf19b..572d35d74ef4 100644 | |
--- a/llvm/lib/Transforms/CMakeLists.txt | |
+++ b/llvm/lib/Transforms/CMakeLists.txt | |
@@ -10,3 +10,4 @@ add_subdirectory(HelloNew) | |
add_subdirectory(ObjCARC) | |
add_subdirectory(Coroutines) | |
add_subdirectory(CFGuard) | |
+add_subdirectory(YkTraceInputs) | |
diff --git a/llvm/lib/Transforms/YkTraceInputs/CMakeLists.txt b/llvm/lib/Transforms/YkTraceInputs/CMakeLists.txt | |
new file mode 100644 | |
index 000000000000..2d03e0d1481f | |
--- /dev/null | |
+++ b/llvm/lib/Transforms/YkTraceInputs/CMakeLists.txt | |
@@ -0,0 +1,10 @@ | |
+add_llvm_component_library(LLVMYkTraceInputs | |
+ YkTraceInputs.cpp | |
+ | |
+ DEPENDS | |
+ intrinsics_gen | |
+ | |
+ LINK_COMPONENTS | |
+ Core | |
+ Support | |
+) | |
diff --git a/llvm/lib/Transforms/YkTraceInputs/YkTraceInputs.cpp b/llvm/lib/Transforms/YkTraceInputs/YkTraceInputs.cpp | |
new file mode 100644 | |
index 000000000000..9a116d7d595b | |
--- /dev/null | |
+++ b/llvm/lib/Transforms/YkTraceInputs/YkTraceInputs.cpp | |
@@ -0,0 +1,11 @@ | |
+#include "llvm/Transforms/YkTraceInputs/YkTraceInputs.h" | |
+#include "llvm/Support/Debug.h" | |
+ | |
+#define DEBUG_TYPE "yktraceinputs" | |
+ | |
+using namespace llvm; | |
+ | |
+PreservedAnalyses YkTraceInputsPass::run(Function &F, FunctionAnalysisManager &AM) { | |
+ errs() << "YkTraceInputsPass::run(): " << F.getName() << "\n"; | |
+ return PreservedAnalyses::all(); | |
+} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment