2
我想找到所有函數調用llvm.pow.f64函數在llvm IR.Please建議我做一個方法來做到這一點。在llvm中找到llvm.pow.f64 IR
我想找到所有函數調用llvm.pow.f64函數在llvm IR.Please建議我做一個方法來做到這一點。在llvm中找到llvm.pow.f64 IR
嗯,這裏是一個基本的FunctionPass
是找到對函數的調用:
class MyPass : public FunctionPass {
public:
static char ID;
MyPass()
: FunctionPass(ID)
{}
virtual bool runOnFunction(Function &F) {
for (Function::iterator bb = F.begin(), bb_e = F.end(); bb != bb_e; ++bb) {
for (BasicBlock::iterator ii = bb->begin(), ii_e = bb->end(); ii != ii_e; ++ii) {
if (CallInst *callInst = dyn_cast<CallInst>(&*ii)) {
Function *calledFunc = callInst->getCalledFunction();
errs() << "Calling function " << calledFunc->getName() << "\n";
}
}
}
}
};
它打印出的由它的工作在函數調用的所有函數的名稱。 getName
給你一個StringRef
,所以隨時與任何你想要的值進行比較。