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

问题描述 投票:1回答:1

我的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*)

我在做什么错?

我申请验证通行证时。我做错了吗?

c++ llvm-ir llvm-c++-api
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.