我有一个名为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;
我不知道这是不是正确的方法。 那么,任何人都可以告诉从Value *获取整数内容的方式,类型是i32吗?
如果有任何答案,我将非常感激。
答案 0 :(得分:0)
您勾画的方式或多或少是正确的 - this related question中也有更完整的答案。但这当然是假设值为ConstantInt
。
如果您希望某个值为常量但不是,则应确保首先运行其中一个constant propagation passes。如果值仍然不是常数,那么除了可能编写自己专门的常量传播通道外,你无能为力......