私はllvmが初めてで、小さなllvm IRビルダーを書いています。IRBuilder とこれらすべての Create* 関数を使用して IR を生成します。私がやろうとしているのは、以前に割り当てられたllvm::Valueの値を持つ新しい SSA ローカル変数を作成するロード命令を作成することです。
私が期待していたもの:
%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* を含む配列です
私が間違っていることを教えてください。それとも、私が悪い道を進んでいるのですか?ありがとう。