如何更改llvm中的值

时间:2018-03-28 05:10:37

标签: llvm llvm-ir

%a =添加< 6 x i3> ,

我想写一个类型合法化的传递。

for (auto &block : function) {
    std::vector<BinaryOperator *> binInstsToErase;
    for (auto &inst : block) {
      BinaryOperator * binaryOpInst = dyn_cast<BinaryOperator>(&inst);
    Value * vector1 = inst.getOperand(0);
    Value * vector2 = inst.getOperand(1);

目前,vector1和vector2的长度为18位(numofElem(6)* elementsize(3))。首先,我想从&lt; 6 x i3&gt;扩展vector1和vector2。到&lt; 8 x i3&gt;,这意味着元素的数量是合法的。但是,我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

首先使用ConstantDataVector::get(LLVMContext &Context, ArrayRef< uint8_t > Elts)创建新的向量。您可以使用std::vector作为Elts。然后你可以push_back将值导入向量或提取并将元素插入到新向量中 见http://llvm.org/doxygen/classllvm_1_1ConstantDataVector.html