0

我想在变量索引处获取数组的值。索引由程序计算,在解析时未知。所以它存储在一个 Value 中并转换为一个 Int ,如下所示:

Value *IndexV = Index->Codegen();
Value *IntV = Builder.CreateFPToUI( IndexV, Type::getInt32Ty( getGlobalContext() ) );

如果我知道索引,我可以使用:

Value *VV = Builder.CreateExtractValue( Builder.CreateLoad( V ), 0 );

这给了我数组的第一个元素。并且工作正常。但是我怎样才能IntV用作索引呢?CreateExtractValue只需要一个 ArrayRef 并且无法将 ArrayRef 转换IntV为 ArrayRef,还是我错了?怎么会做这样的事情?

谢谢!

4

1 回答 1

2

首先,每当需要 ArrayRef 时,您始终可以只传递一个项目,因为any和之间存在隐式转换TArrayRef<T>

但是,特别在这里,extractvalue需要常量索引,并且不能接受一般值,这就是它想要unsigned值的原因。如果要访问数组中未知索引中的元素,请改用getelementptr指令:在索引为 0 和 的数组地址上调用它IntV,您应该在 location 处获得指向数组的指针IntV

于 2013-04-12T07:48:53.053 回答