[llvm] [SPIR-V] Fix buildMemSemanticsReg to ensure type compatibility (PR #123676)
Michal Paszkowski via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 20 16:19:32 PST 2025
https://github.com/michalpaszkowski updated https://github.com/llvm/llvm-project/pull/123676
>From 8d327e67f701562665856d84a283aeb593f28ea3 Mon Sep 17 00:00:00 2001
From: Michal Paszkowski <michal at michalpaszkowski.com>
Date: Tue, 21 Jan 2025 00:33:11 +0100
Subject: [PATCH] [SPIR-V] Fix type compatibility in memory order comparisons
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
https://github.com/llvm/llvm-project/pull/123654
---
llvm/lib/Target/SPIRV/SPIRVBuiltins.cpp | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/llvm/lib/Target/SPIRV/SPIRVBuiltins.cpp b/llvm/lib/Target/SPIRV/SPIRVBuiltins.cpp
index 784bbe8e662c20..b52c793e57e968 100644
--- a/llvm/lib/Target/SPIRV/SPIRVBuiltins.cpp
+++ b/llvm/lib/Target/SPIRV/SPIRVBuiltins.cpp
@@ -611,8 +611,7 @@ static Register buildMemSemanticsReg(Register SemanticsRegister,
Semantics =
getSPIRVMemSemantics(Order) |
getMemSemanticsForStorageClass(GR->getPointerStorageClass(PtrRegister));
-
- if (Order == Semantics) {
+ if (static_cast<unsigned>(Order) == Semantics) {
MRI->setRegClass(SemanticsRegister, &SPIRV::iIDRegClass);
return SemanticsRegister;
}
@@ -757,9 +756,9 @@ static bool buildAtomicCompareExchangeInst(
static_cast<std::memory_order>(getIConstVal(Call->Arguments[4], MRI));
MemSemEqual = getSPIRVMemSemantics(MemOrdEq) | MemSemStorage;
MemSemUnequal = getSPIRVMemSemantics(MemOrdNeq) | MemSemStorage;
- if (MemOrdEq == MemSemEqual)
+ if (static_cast<unsigned>(MemOrdEq) == MemSemEqual)
MemSemEqualReg = Call->Arguments[3];
- if (MemOrdNeq == MemSemEqual)
+ if (static_cast<unsigned>(MemOrdNeq) == MemSemEqual)
MemSemUnequalReg = Call->Arguments[4];
}
if (!MemSemEqualReg.isValid())
More information about the llvm-commits
mailing list