link error for analysis pass

Hi all,

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?

Thanks,
Alex

Can you provide the link command that fails and the output?

Mehdi

Hi Mehdi,

I meant when I build the LLVM and it will give the following errors:

make[2]: Entering directory /home/alex/new/llvm-obj/tools/llc' llvm[2]: 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[2]: *** [/home/alex/new/llvm-obj/Debug+Asserts/bin/llc] Error 1 make[2]: Leaving directory /home/alex/new/llvm-obj/tools/llc’
make[1]: *** [llc/.makeall] Error 2
make[1]: Leaving directory `/home/alex/new/llvm-obj/tools’
make: *** [all] Error 1

Thanks,
Alex

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.

Thanks again,
Alex