0

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

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

4

1 回答 1

0

只要您使用 c 风格的链接,指针类型在很大程度上是无关紧要的:

  • 在 llvm 端转换为指向 i8 的指针
  • 在 c/c++ 被调用方接收任何你想要的类型。 Instruction *没问题

(只需在 llvm 端使用BitcastInstto case,例如:

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

(......value你的Instruction *对象在哪里)

于 2016-11-13T22:25:01.453 回答