Я хочу использовать IRbuilder для объявления инициализированного локального массива в конце записи BB - PullRequest
0 голосов
/ 09 января 2020

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);



          }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...