0

変数インデックスで配列の値を取得したい。インデックスはプログラムによって計算され、解析時にはわかりません。したがって、値に格納され、次のように Int に変換されます。

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

インデックスがわかっている場合は、次を使用できます。

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

これにより、配列の最初の要素が得られます。そして正しく動作します。しかし、どうすればIntVインデックスとして使用できますか? CreateExtractValueArrayRefのみを受け取り、ArrayRefにキャストする方法はありませんIntVか、それとも間違っていますか? どうやってそのようなことをするでしょうか?

ありがとう!

4

1 に答える 1

2

まず第一に、 ArrayRef が予期されるときはいつでも、 anyとの間に暗黙的な変換があるため、いつでも 1 つのアイテムだけを渡すことができます。TArrayRef<T>

特にここでは、ただし、extractvalueは定数インデックスを必要とし、一般的な値を受け入れることができないため、値が必要になりunsignedます。配列内の不明なインデックスの要素にアクセスする場合は、代わりにgetelementptr命令を使用します。インデックス 0 および の配列のアドレスで呼び出すとIntV、場所 で配列へのポインターを取得する必要がありますIntV

于 2013-04-12T07:48:53.053 に答える