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;

我不知道这是否是正确的方法。那么,任何人都可以告诉如何从 Value* 获取整数内容的方法是 i32 吗?

如果有任何答案,我将非常感激。

4

1 回答 1

0

您概述的方式或多或少是正确的 - 在这个相关问题中也有一个更完整的答案。但这当然是假设值为 a ConstantInt

如果您希望某个值是常量,但事实并非如此,则应确保首先运行其中一个常量传播通道。如果该值仍然不是常量,那么您无能为力,除了可能编写自己的专用常量传播传递...

于 2013-09-06T05:05:30.500 回答