ModulePass *llvm::createMyAnaPass() { return new MyAna(); }
I also included createMyAnaPass() in Passes.h and LinkAllPasses.h
But when I do make I get the following error :
/home/ambika/llvm/llvm-obj/tools/opt/Release/opt.o: In function `global
constructors keyed to opt.cpp':
opt.cpp:(.text+0x1e89): undefined reference to `llvm::createMyAnaPass()'
ModulePass *llvm::createMyAnaPass() { return new MyAna(); }
I also included createMyAnaPass() in Passes.h and LinkAllPasses.h
But when I do make I get the following error :
/home/ambika/llvm/llvm-obj/tools/opt/Release/opt.o: In function `global
constructors keyed to opt.cpp':
opt.cpp:(.text+0x1e89): undefined reference to `llvm::createMyAnaPass()'
Am I missing out something.
Have you modified the Makefile in tools/opt to link in the library containing your pass? Your pass doesn't appear to be placed in libAnalysis or libTransform, so you'll need to modify the opt Makefile to link in whatever your library's name is.
Thanks that helped me out.
But now I am facing one more problem. It says :
‘llvm::ModulePass* llvm::createMyAnaPass()’ should have been declared
inside ‘llvm’
but I can find no place to declare it.
Where should I do it.
We can do what scalar optimizations do.
All scalar passes are declared in include/llvm/Transforms/Scalar.h and
include/llvm-c/Transforms/Scalar.h,
defined in lib/Transforms/Scalar.cpp, and used in include/llvm/LinkAllPasses.h.
I have done that. I have defined createMyAnaPass() in Passes.h and it is defined in MyAna.cpp and used in LinkAllPasses.h
But still the error :
/home/ambika/llvm/llvm-obj/tools/opt/Release/opt.o: In function `global constructors keyed to opt.cpp':
opt.cpp:(.text+0x1e89): undefined reference to `llvm::createMyAnaPass()'