我有一个名为indexValue
的Value *类型,类型是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;
我不知道这是不是正确的方法。
因此,有人可以告诉从i *类型的Value *中获取整数内容的方法吗?
如果有任何答案,我将非常感谢。
最佳答案
您概述的方式或多或少是正确的-this related question中还有一个更完整的答案。但这当然是假设值是ConstantInt
。
如果您希望某个值是一个常数,但不是恒定值,则应确保首先运行constant propagation passes之一。如果该值仍然不是常数,那么除了可以编写自己的专用常数传播通道之外,您无能为力。
关于c++ - 如何从值获取确切的整数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18649045/