Skip to content

Commit b45072d

Browse files
[SPIR-V] Fix type compatibility in memory order comparisons (llvm#123676)
Fixed a type mismatch issue in the comparison of std::memory_order with integers. This fixes an issue reported by clang-debian-cpp20 buildbot for llvm#123654
1 parent 72c560d commit b45072d

File tree

1 file changed

+3
-4
lines changed

1 file changed

+3
-4
lines changed

llvm/lib/Target/SPIRV/SPIRVBuiltins.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -611,8 +611,7 @@ static Register buildMemSemanticsReg(Register SemanticsRegister,
611611
Semantics =
612612
getSPIRVMemSemantics(Order) |
613613
getMemSemanticsForStorageClass(GR->getPointerStorageClass(PtrRegister));
614-
615-
if (Order == Semantics) {
614+
if (static_cast<unsigned>(Order) == Semantics) {
616615
MRI->setRegClass(SemanticsRegister, &SPIRV::iIDRegClass);
617616
return SemanticsRegister;
618617
}
@@ -757,9 +756,9 @@ static bool buildAtomicCompareExchangeInst(
757756
static_cast<std::memory_order>(getIConstVal(Call->Arguments[4], MRI));
758757
MemSemEqual = getSPIRVMemSemantics(MemOrdEq) | MemSemStorage;
759758
MemSemUnequal = getSPIRVMemSemantics(MemOrdNeq) | MemSemStorage;
760-
if (MemOrdEq == MemSemEqual)
759+
if (static_cast<unsigned>(MemOrdEq) == MemSemEqual)
761760
MemSemEqualReg = Call->Arguments[3];
762-
if (MemOrdNeq == MemSemEqual)
761+
if (static_cast<unsigned>(MemOrdNeq) == MemSemEqual)
763762
MemSemUnequalReg = Call->Arguments[4];
764763
}
765764
if (!MemSemEqualReg.isValid())

0 commit comments

Comments
 (0)