【问题标题】:How to get the exact integer from a Value如何从值中获取确切的整数
【发布时间】:2013-09-06 02:42:54
【问题描述】:

我有一个名为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 吗?

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

【问题讨论】:

标签: c++ llvm


【解决方案1】:

您概述的方式或多或少是正确的 - this related question 中也有更完整的答案。但这当然是假设值为ConstantInt

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

【讨论】:

  • 你说得对,我不确定 Value 是否为 Constant,所以我认为我的处理方式是不正确的。我会考虑另一种方式。非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-01
  • 1970-01-01
  • 2013-06-02
相关资源
最近更新 更多