Int array[100]
, я вижу, что IR этого кода:
%array = alloca [100 x i32] align 16,
%0 = bitcast [100 x i32]* %array to i8*
call void @llvm.memset.p0i8.i64(i8* %0, i8 0, i64 400, i32 16, i1 false)`
Я сгенерировал первые два IR, но я не знаю, как написать последний.
Мой код:
void Insert(Function * Func)
{
for (Instruction &I : Func->getEntryBlock())
{
if (BranchInst *TI = dyn_cast<BranchInst>(&I))
{
LLVMContext& context = getGlobalContext();
Instruction *pi = TI;
IRBuilder<> Builder(pi);
//alloca array
Type* I = IntegerType::getInt32Ty(context );
ArrayType* arrayType = ArrayType::get(I, 100);
AllocaInst* alloc = Builder.CreateAlloca(arrayType,0, "array");
alloc->setAlignment(16);
//bitcast
llvm::PointerType *destType = Type::getInt8PtrTy(context);
Builder.CreateBitCast(alloc,destType);
}
}