@@ -77,23 +77,22 @@ static void createInitOrFiniCalls(Function &F, bool IsCtor) {
77
77
auto *LoopBB = BasicBlock::Create (C, " while.entry" , &F);
78
78
auto *ExitBB = BasicBlock::Create (C, " while.end" , &F);
79
79
Type *PtrTy = IRB.getPtrTy (AMDGPUAS::GLOBAL_ADDRESS);
80
+ ArrayType *PtrArrayTy = ArrayType::get (PtrTy, 0 );
80
81
81
82
auto *Begin = M.getOrInsertGlobal (
82
- IsCtor ? " __init_array_start" : " __fini_array_start" ,
83
- ArrayType::get (PtrTy, 0 ), [&]() {
83
+ IsCtor ? " __init_array_start" : " __fini_array_start" , PtrArrayTy, [&]() {
84
84
return new GlobalVariable (
85
- M, ArrayType::get (PtrTy, 0 ) ,
85
+ M, PtrArrayTy ,
86
86
/* isConstant=*/ true , GlobalValue::ExternalLinkage,
87
87
/* Initializer=*/ nullptr ,
88
88
IsCtor ? " __init_array_start" : " __fini_array_start" ,
89
89
/* InsertBefore=*/ nullptr , GlobalVariable::NotThreadLocal,
90
90
/* AddressSpace=*/ AMDGPUAS::GLOBAL_ADDRESS);
91
91
});
92
92
auto *End = M.getOrInsertGlobal (
93
- IsCtor ? " __init_array_end" : " __fini_array_end" ,
94
- ArrayType::get (PtrTy, 0 ), [&]() {
93
+ IsCtor ? " __init_array_end" : " __fini_array_end" , PtrArrayTy, [&]() {
95
94
return new GlobalVariable (
96
- M, ArrayType::get (PtrTy, 0 ) ,
95
+ M, PtrArrayTy ,
97
96
/* isConstant=*/ true , GlobalValue::ExternalLinkage,
98
97
/* Initializer=*/ nullptr ,
99
98
IsCtor ? " __init_array_end" : " __fini_array_end" ,
@@ -117,7 +116,7 @@ static void createInitOrFiniCalls(Function &F, bool IsCtor) {
117
116
auto *Size = IRB.CreateAShr (ByteSize, ConstantInt::get (Int64Ty, 3 ));
118
117
auto *Offset = IRB.CreateSub (Size, ConstantInt::get (Int64Ty, 1 ));
119
118
Start = IRB.CreateInBoundsGEP (
120
- ArrayType::get (IRB. getPtrTy (), 0 ) , Begin,
119
+ PtrArrayTy , Begin,
121
120
ArrayRef<Value *>({ConstantInt::get (Int64Ty, 0 ), Offset}));
122
121
Stop = Begin;
123
122
}
@@ -128,8 +127,7 @@ static void createInitOrFiniCalls(Function &F, bool IsCtor) {
128
127
LoopBB, ExitBB);
129
128
IRB.SetInsertPoint (LoopBB);
130
129
auto *CallBackPHI = IRB.CreatePHI (PtrTy, 2 , " ptr" );
131
- auto *CallBack = IRB.CreateLoad (IRB.getPtrTy (F.getAddressSpace ()),
132
- CallBackPHI, " callback" );
130
+ auto *CallBack = IRB.CreateLoad (F.getType (), CallBackPHI, " callback" );
133
131
IRB.CreateCall (CallBackTy, CallBack);
134
132
auto *NewCallBack =
135
133
IRB.CreateConstGEP1_64 (PtrTy, CallBackPHI, IsCtor ? 1 : -1 , " next" );
0 commit comments