Это потому, что демонстрация LLVMHello регистрирует передачу как
static RegisterPass<Hello> X("hello", "Hello World Pass");
Так как она действует только для OPT.
Если вы хотите загрузить ее в Clang Вы можете заменить RegisterPass
на
static void registerHelloPass(const PassManagerBuilder &, legacy::PassManagerBase &PM) {
PM.add(new Hello());
}
static RegisterStandardPasses RegisterMyPass(PassManagerBuilder::EP_EarlyAsPossible, registerHelloPass);
Тогда вы можете использовать clang -Xclang -load -Xclang XXX.so
. Таким образом, вы можете загрузить его либо в Clang или в Opt.