我正在尝试创建一个矢量< 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";
答案 0 :(得分:0)
尝试将ArraySize
的参数Builder.CreateAlloca
设置为ConstantInt(8)
。如果您未提供该值,则默认值为nullptr
,最后它将自动设置为int32(1)
。 Instructions.cpp中的源代码是
if (!Amt) Amt = ConstantInt::get(Type::getInt32Ty(Context), 1);
Amt
是ArraySize
。然后在类型和大小之间存在矛盾。