LLVM创建函数类型"指令*"

时间:2014-06-25 09:42:34

标签: llvm llvm-ir llvm-c++-api

我想使用Function::Create方法创建一个输入参数类型为llvm::Instruction*的函数,但我没有在class Type中找到任何直接方法来执行此操作。谁能给我一些提示?

另外,对于具体的比较Instruction *pi,我尝试了pi->getType()->print(errs()),并将i1作为类型返回给我。但是当我在另一个cpp文件中编写函数int externalCall(Instruction *p)并编译成IR时。此IR表示类型为class.llvm::Instruction。为什么这两个是不同的,我如何从API获得后者?

1 个答案:

答案 0 :(得分:0)

只要你使用c风格的链接,指针类型就很不相关了:

  • 投射到llvm侧的i8指针
  • 在c / c ++被叫方面接收你想要的任何类型。 Instruction *没问题

(只需在llvm方面使用BitcastInst案例,如:

BitCastInst *bitcast = new BitCastInst(value, PointerType::get(IntegerType::get(context, 8), 0));

(...其中value是您的Instruction *对象)