llvm使用llvm指令调用函数名

时间:2016-02-10 14:42:05

标签: llvm

我想知道llvm :: intruction是否是一个函数调用,如果是,那么它调用的函数的名称是什么。

还有办法从llvm :: Instruction获取llvm :: CallInst吗?

2 个答案:

答案 0 :(得分:4)

Instruction* I = ...
if (isa<CallInst>(I)) {
  StringRef name = cast<CallInst>(I).getCalledFunction().getName();
  ...
}

有关详细信息,请参阅the relevant section in LLVM Programmer's Manual。总的来说,我全心全意地为初学者推荐这本指南。

答案 1 :(得分:2)

Instruction是所有LLVM指令的公共基类。

CallInstInstruction的子类,用于调用指令。

如果您有Instruction *inst,则可以通过

获得CallInst
CallInst *ci = cast<CallInst>(inst);