I create a folder containing my new alias analysis pass in the lib/Analysis folder of the source tree.
I mimic the way IPA did to create a LLVMipa.a library. That is, I write a Makefile to create my library
and I change the Makefile correspondingly in the Analysis folder.
However, when I want to use my new alias analysis in the Codegen. The compiler will complain
“undefined error” during the link phase. Could anyone point me out where I need to change in order
to use my new alias analysis pass in the Codegen?
Can you provide the link command that fails and the output?
I meant when I build the LLVM and it will give the following errors:
make: Entering directory
/home/alex/new/llvm-obj/tools/llc' llvm: Linking Debug+Asserts executable llc /home/alex/new/llvm-obj/Debug+Asserts/lib/libLLVMCodeGen.a(Passes.o): In function llvm::TargetPassConfig::addIRPasses()‘:
/home/alex/new/llvm-3.1.src/lib/CodeGen/Passes.cpp:295: undefined reference to
llvm::createMyAliasAnalysisPass()' collect2: ld returned 1 exit status make: *** [/home/alex/new/llvm-obj/Debug+Asserts/bin/llc] Error 1 make: Leaving directory /home/alex/new/llvm-obj/tools/llc’
make: *** [llc/.makeall] Error 2
make: Leaving directory `/home/alex/new/llvm-obj/tools’
make: *** [all] Error 1
Since you created a new library, you need to add it as a dependency wherever you’re calling into it: see lib/CodeGen/LLVMBuild.txt
Also, on a side note, the Makefile/autotools build is deprecated, you may want to look at cmake.
Thanks a lot! Mehdi. I tried to change the LLVMBuild.txt. However, it doesn’t help under Makefile/autotools.
I will try cmake to rebuild the system again.