如何使用CreateAlloca在llvm中声明一个向量

时间:2018-03-29 23:48:48

标签: llvm llvm-ir

我正在尝试创建一个矢量< 8 * i8>在IR Pass中。但我失败了。我不知道我的代码有什么问题。使用'CreateAlloca'

后,代码总是崩溃
Type * new_vec = VectorType::get(IntegerType::get(Builder.getContext(),8), 8);
      errs() << "11111" << ":\n";
      AllocaInst *widen_vector = Builder.CreateAlloca(new_vec);
      errs() << "22222" << ":\n";

1 个答案:

答案 0 :(得分:0)

尝试将ArraySize的参数Builder.CreateAlloca设置为ConstantInt(8)。如果您未提供该值,则默认值为nullptr,最后它将自动设置为int32(1)。 Instructions.cpp中的源代码是
if (!Amt) Amt = ConstantInt::get(Type::getInt32Ty(Context), 1);
AmtArraySize。然后在类型和大小之间存在矛盾。