编译器似乎没有找到类 llvm::Instruction 的成员函数

Posted

技术标签:

【中文标题】编译器似乎没有找到类 llvm::Instruction 的成员函数【英文标题】:compiler doesn't seem to find a member function of class llvm::Instruction 【发布时间】:2019-05-10 14:28:03 【问题描述】:

我对 llvm 代码非常陌生,如果指令满足某些条件,我会尝试转义它。我试图为转义做的是使用Instruction::getNextNonDebugInstruction() 函数,它在我编译时给了我这个错误:

‘class llvm::Instruction’没有名为的成员 ‘getNextNonDebugInstruction’;

这没有任何意义,因为我们可以看到 getNextNonDebugInstruction() 是 Instruction 类中的一个公开且存在的成员:

https://llvm.org/doxygen/classllvm_1_1Instruction.html#ae7b05782d5230743f5dda7825f0ebd88

这是我的代码:

llvm::Instruction* inst_ = ki->inst;

if(isa<CallInst>(inst_) && str.find("bpf")!= std::string::npos)
      
        llvm::Instruction* next_inst = inst_->getNextNonDebugInstruction();

      

【问题讨论】:

【参考方案1】:

该函数大约在一年前被添加到 LLVM 代码库中(参见 https://github.com/llvm/llvm-project/commit/f01827f2d1bdaff14cf1cf176e8a69e308d5371e )。听起来您的版本不包含该更改。

【讨论】:

以上是关于编译器似乎没有找到类 llvm::Instruction 的成员函数的主要内容,如果未能解决你的问题,请参考以下文章

编译器找不到在基类中实现的虚函数

默认构造函数,为啥我的类似乎有三个?当编译器将类视为结构时?

Spring Boot 似乎没有找到 Repository

编译器似乎不接受代理类

包含命名空间的类模板的转发声明会导致编译错误

与 MSVC++ 2010 编译器一起使用的调试器