Skip to content

Commit 6556c61

Browse files
committed
Reland "[AMDGPU] Fix data race on RegisterBank initialization."
1 parent 7476e56 commit 6556c61

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -197,15 +197,15 @@ AMDGPURegisterBankInfo::AMDGPURegisterBankInfo(const GCNSubtarget &ST)
197197
TII(Subtarget.getInstrInfo()) {
198198

199199
// HACK: Until this is fully tablegen'd.
200-
static bool AlreadyInit = false;
201-
if (AlreadyInit)
202-
return;
200+
static llvm::once_flag InitializeRegisterBankFlag;
203201

204-
AlreadyInit = true;
202+
static auto InitializeRegisterBankOnce = [this]() {
203+
assert(&getRegBank(AMDGPU::SGPRRegBankID) == &AMDGPU::SGPRRegBank &&
204+
&getRegBank(AMDGPU::VGPRRegBankID) == &AMDGPU::VGPRRegBank &&
205+
&getRegBank(AMDGPU::AGPRRegBankID) == &AMDGPU::AGPRRegBank);
206+
};
205207

206-
assert(&getRegBank(AMDGPU::SGPRRegBankID) == &AMDGPU::SGPRRegBank &&
207-
&getRegBank(AMDGPU::VGPRRegBankID) == &AMDGPU::VGPRRegBank &&
208-
&getRegBank(AMDGPU::AGPRRegBankID) == &AMDGPU::AGPRRegBank);
208+
llvm::call_once(InitializeRegisterBankFlag, InitializeRegisterBankOnce);
209209
}
210210

211211
static bool isVectorRegisterBank(const RegisterBank &Bank) {

0 commit comments

Comments
 (0)