Я написал свой пропуск в llvm/lib/Transforms
, и он называется createABCDPass
.В свой пропуск я добавил следующий код:
namespace llvm { FunctionPass *createABCDPass(); }
FunctionPass *llvm::createABCDPass() { return new AbcRemoval(); }
, где AbcRemoval
- класс пропуска.
После этого я сделал предварительное объявление в lib/CodeGen/LLVMTargetMachine.cpp
для распознавания моего прохода:
namespace llvm { FunctionPass *createABCDPass(); }
PM.add(createABCDPass());
Однако, когда я запускаю make на llvm, я получаю следующую ошибку:
llvm[2]: Linking Release executable llc (without symbols)
Undefined symbols:
"llvm::createABCDPass()", referenced from:
llvm::LLVMTargetMachine::addCommonCodeGenPasses(llvm::PassManagerBase&, llvm::CodeGenOpt::Level, bool, llvm::MCContext*&)in libLLVMCodeGen.a(LLVMTargetMachine.o)
ld: symbol(s) not found
collect2: ld returned 1 exit status
make[2]: *** [/Users/.../llvm/Release/bin/llc] Error 1
make[1]: *** [llc/.makeall] Error 2
make: *** [all] Error 1
Кто-нибудь знает, почему я получаю эту ошибку?Спасибо!