Я хочу создать LLVM ArrayType в стеке, поэтому я хотел использовать AllocaInst (Type *Ty, Value *ArraySize=nullptr, const Twine &Name="", Instruction *InsertBefore=nullptr)
. Проблема в том, что я не понимаю этот интерфейс. Я догадался, что Ty
будет чем-то вроде ArrayType::get(I.getType(), 4)
, но что мне давать за ArraySize
. Кроме того, для этого требуется Value*
, так что это меня сильно смутило.
Либо я неправильно понял llvm alloc, либо мне нужно указать константу llvm в качестве значения размера массива. Если мне нужно указать константу, разве это не избыточно, поскольку ArrayType
содержит numElement в качестве информации.
В качестве примера строки кода, как я пытаюсь:
AllocaInst* arr_alloc = new AllocaInst(ArrayType::get(I.getType(), num)
/*, What is this parameter for?*/,
"",
funcEntry.getFirstInsertionPt());