我是 llvm 的新手,我正在编写一个小的 llvm IR Builder。我使用 IRBuilder 和所有这些 Create* 函数来生成我的 IR。我要做的是创建一个加载指令,该指令创建一个新的 SSA 局部变量,其值为先前分配的llvm::Value。
我期望拥有的:
%2 = load i32* %1
使用%2的加载指令结果和%1我之前分配的值 (CreateAlloca)
这是我尝试过的:
// Get Ptr from Val
Value* ptr = ConstantExpr::getIntToPtr((Constant*)loc[n],PointerType::getUnqual(builder->getInt32Ty()));
// Générate load instruction with the new Ptr
builder->CreateLoad(ptr);
这就是我所拥有的:
%2 = load i32* null
loc是一个数组,其中包含我所有的 llvm::Value*
你能告诉我我做错了什么吗?或者,如果我走得不好?谢谢。