BasicBlock *EntryBlock =
&Builder.GetInsertBlock()->getParent()->getEntryBlock();
+ auto AddressSpace = F->getParent()->getDataLayout().getAllocaAddrSpace();
std::string Launch = "polly_launch_" + std::to_string(Kernel->id);
- Instruction *Parameters =
- new AllocaInst(ArrayTy, Launch + "_params", EntryBlock->getTerminator());
+ Instruction *Parameters = new AllocaInst(
+ ArrayTy, AddressSpace, Launch + "_params", EntryBlock->getTerminator());
int Index = 0;
for (long i = 0; i < Prog->n_array; i++) {
Builder.CreatePointerCast(ValPtr, Builder.getInt8PtrTy());
Builder.CreateStore(ValPtrCast, Slot);
} else {
- Instruction *Param = new AllocaInst(
- Builder.getInt8PtrTy(), Launch + "_param_" + std::to_string(Index),
- EntryBlock->getTerminator());
+ Instruction *Param =
+ new AllocaInst(Builder.getInt8PtrTy(), AddressSpace,
+ Launch + "_param_" + std::to_string(Index),
+ EntryBlock->getTerminator());
Builder.CreateStore(DevArray, Param);
Value *ParamTyped =
Builder.CreatePointerCast(Param, Builder.getInt8PtrTy());
isl_id *Id = isl_space_get_dim_id(Kernel->space, isl_dim_set, i);
Value *Val = IDToValue[Id];
isl_id_free(Id);
- Instruction *Param = new AllocaInst(
- Val->getType(), Launch + "_param_" + std::to_string(Index),
- EntryBlock->getTerminator());
+ Instruction *Param =
+ new AllocaInst(Val->getType(), AddressSpace,
+ Launch + "_param_" + std::to_string(Index),
+ EntryBlock->getTerminator());
Builder.CreateStore(Val, Param);
Value *Slot = Builder.CreateGEP(
Parameters, {Builder.getInt64(0), Builder.getInt64(Index)});
isl_id *Id = isl_space_get_dim_id(Kernel->space, isl_dim_param, i);
Value *Val = IDToValue[Id];
isl_id_free(Id);
- Instruction *Param = new AllocaInst(
- Val->getType(), Launch + "_param_" + std::to_string(Index),
- EntryBlock->getTerminator());
+ Instruction *Param =
+ new AllocaInst(Val->getType(), AddressSpace,
+ Launch + "_param_" + std::to_string(Index),
+ EntryBlock->getTerminator());
Builder.CreateStore(Val, Param);
Value *Slot = Builder.CreateGEP(
Parameters, {Builder.getInt64(0), Builder.getInt64(Index)});
}
for (auto Val : SubtreeValues) {
- Instruction *Param = new AllocaInst(
- Val->getType(), Launch + "_param_" + std::to_string(Index),
- EntryBlock->getTerminator());
+ Instruction *Param =
+ new AllocaInst(Val->getType(), AddressSpace,
+ Launch + "_param_" + std::to_string(Index),
+ EntryBlock->getTerminator());
Builder.CreateStore(Val, Param);
Value *Slot = Builder.CreateGEP(
Parameters, {Builder.getInt64(0), Builder.getInt64(Index)});