Skip to content

Commit 594d447

Browse files
[SPIR-V] Refactor buildMemSemanticsReg to ensure type compatibility
Fixed a type mismatch issue in the comparison of std::memory_order with unsigned. This fixes an issue reported by clang-debian-cpp20 buildbot for #123654
1 parent 3f0ac46 commit 594d447

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

llvm/lib/Target/SPIRV/SPIRVBuiltins.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -606,13 +606,13 @@ static Register buildMemSemanticsReg(Register SemanticsRegister,
606606
SPIRVGlobalRegistry *GR) {
607607
if (SemanticsRegister.isValid()) {
608608
MachineRegisterInfo *MRI = MIRBuilder.getMRI();
609-
std::memory_order Order =
610-
static_cast<std::memory_order>(getIConstVal(SemanticsRegister, MRI));
611-
Semantics =
612-
getSPIRVMemSemantics(Order) |
609+
int MemoryOrderValue = getIConstVal(SemanticsRegister, MRI);
610+
std::memory_order Order = static_cast<std::memory_order>(MemoryOrderValue);
611+
unsigned OrderSemantics = getSPIRVMemSemantics(Order);
612+
unsigned StorageClassSemantics =
613613
getMemSemanticsForStorageClass(GR->getPointerStorageClass(PtrRegister));
614-
615-
if (Order == Semantics) {
614+
Semantics = OrderSemantics | StorageClassSemantics;
615+
if (OrderSemantics == Semantics) {
616616
MRI->setRegClass(SemanticsRegister, &SPIRV::iIDRegClass);
617617
return SemanticsRegister;
618618
}

0 commit comments

Comments
 (0)