在 LLVM IR 中,将整数存储到向量的第二个元素中

In LLVM IR, store an integer into the second element of a vector

我现在想将一个整数存储到向量的第二个元素中。向量是<2 x i64>,现在我只有它的指针<2 x i64>*。 我尝试了几种方法来获取指向其第二个元素的指针,但都失败了。 我尝试使用 getelementptr 但我无法将 Ty 参数设置为 i64i64* 否则它会报告一个错误“assert (PointeeType == cast<PointerType>(Ptr->getType()->getScalarType())->getElementType());失败的”。如果我将它设置为 NULL,我只能得到一个 <2 x i64>*。 然后我尝试使用 IRBuilder.CreateExtractElement 先提取向量的第二个元素。但是在我得到 i64 之后,我不知道如何得到它的指针,因为我必须将商店的第二个参数设置为 i64.

嗯,你不能 "store" 通常向量的第二个元素(如果它在寄存器中怎么办——地址是什么?)。

使用 insertelement 指令 (https://llvm.org/docs/LangRef.html#insertelement-instruction) 将标量元素放入向量中。