3
関数呼び出しの引数を抽出するLLVMパスを記述したいと思います。引数が定数の場合、私の目的はその定数が何であるかを回復することです。LLVMで関数呼び出しの引数を取得する方法は?
IRはLLVMのパスは、私がopt
パススルーを実行した場合、それは0x3df3f40
が何を表しているん以下
malloc : 0x3df3f40
i64 %0
を生成
bool runOnFunction(Function &F) override {
for (auto& B : F) {
for (auto& I : B) {
if(CallInst* call_inst = dyn_cast<CallInst>(&I)) {
Function* fn = call_inst->getCalledFunction();
StringRef fn_name = fn->getName();
errs() << fn_name << " : " << call_inst->getArgOperand(0) << "\n";
for(auto arg = fn->arg_begin(); arg != fn->arg_end(); ++arg) {
errs() << *arg << "\n";
}
}
}
}
return false;
}
のように見えます
%2 = call noalias i8* @malloc(i64 512) #3
のように見えます? i64
と512
の代わりに、なぜi64
と%0
が生成されますか?