【问题标题】:llvm get called function name using llvm instructionllvm 使用 llvm 指令获取调用函数名
【发布时间】:2016-02-10 14:42:04
【问题描述】:

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

还有一种方法可以从 llvm::Instruction 获取 llvm::CallInst 吗?

【问题讨论】:

    标签: llvm


    【解决方案1】:
    Instruction* I = ...
    if (isa<CallInst>(I)) {
      StringRef name = cast<CallInst>(I).getCalledFunction().getName();
      ...
    }
    

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

    【讨论】:

      【解决方案2】:

      Instruction 是所有 LLVM 指令的通用基类。

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

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

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

      【讨论】:

      • 谢谢。现在我看到 Instruction.h 是 CallInst 的基类。
      • 我收到一条错误消息:错误:初始化时无法将‘const llvm::CallInst’转换为‘llvm::CallInst*’
      猜你喜欢
      • 1970-01-01
      • 2017-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多