2

という名前の Value* タイプがindexValueあり、タイプは i32 です。indexValueタイプがintである数値を保持する必要があると思います。indexValue が指す正確な数値を使用したいので、次のようにします。

ConstantInt* CI = llvm::cast<llvm::ConstantInt>(indexValue); //This is wrong, so is dyn_cast.

uint64_t index = indexValue->getZExtValue();

uint64_t size = index + 1;

それが正しい方法かどうかはわかりません。では、型が i32 である Value* から整数コンテンツを取得する方法を誰か教えてもらえますか?

何か答えがあれば、とても感謝します。

4

1 に答える 1

0

この関連する質問には、より完全な回答もあります。しかし、それはもちろん、値が a であると仮定していますConstantInt

ある値が定数であると予想しているのにそうでない場合は、最初に定数伝播パスの 1 つを実行していることを確認する必要があります。値がまだ定数でない場合は、独自の特殊な定数伝播パスを作成することを除いて、できることはあまりありません...

于 2013-09-06T05:05:30.500 に答える