LLvm Jit:如何从jited代码中取消引用运行时指针?

时间:2019-10-12 21:23:02

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

我的c ++代码中有一个指向浮点数变量的指针。我想发出一个取消引用此指针的llvm IR指令,以便从jited代码访问此变量。我该如何发出这样的指令?

我试图将指针转换为64位整数常量,然后转换为浮点指针。但是当我收到格式错误的IR代码时。

auto *pointer_as_integer = ConstantInt::get(
    context, APInt(64, reinterpret_cast<uint64_t>(&variable)));

auto *pointer = builder.CreateIntToPtr(
    pointer_as_integer, Type::getFloatTy(context));

return builder.CreateLoad(
    Type::getFloatTy(context), pointer);

当我尝试应用验证通行证时,我得到了:

Instruction does not dominate all uses!
%PTR = load float, float* inttoptr (i64 140724356577004 to float*)

我在做什么错了?

当我申请验证通行证时。我在做什么错了?

1 个答案:

答案 0 :(得分:0)

问题出在其他地方:我没有将生成器插入点设置到我的功能块,导致IR代码格式错误。