[llvm] [SPIR-V] Refactor buildMemSemanticsReg to ensure type compatibility (PR #123676)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 20 15:45:23 PST 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-spir-v
Author: Michal Paszkowski (michalpaszkowski)
<details>
<summary>Changes</summary>
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 https://github.com/llvm/llvm-project/pull/123654
---
Full diff: https://github.com/llvm/llvm-project/pull/123676.diff
1 Files Affected:
- (modified) llvm/lib/Target/SPIRV/SPIRVBuiltins.cpp (+6-6)
``````````diff
diff --git a/llvm/lib/Target/SPIRV/SPIRVBuiltins.cpp b/llvm/lib/Target/SPIRV/SPIRVBuiltins.cpp
index 784bbe8e662c20..d3976f645e6832 100644
--- a/llvm/lib/Target/SPIRV/SPIRVBuiltins.cpp
+++ b/llvm/lib/Target/SPIRV/SPIRVBuiltins.cpp
@@ -606,13 +606,13 @@ static Register buildMemSemanticsReg(Register SemanticsRegister,
SPIRVGlobalRegistry *GR) {
if (SemanticsRegister.isValid()) {
MachineRegisterInfo *MRI = MIRBuilder.getMRI();
- std::memory_order Order =
- static_cast<std::memory_order>(getIConstVal(SemanticsRegister, MRI));
- Semantics =
- getSPIRVMemSemantics(Order) |
+ int MemoryOrderValue = getIConstVal(SemanticsRegister, MRI);
+ std::memory_order Order = static_cast<std::memory_order>(MemoryOrderValue);
+ unsigned OrderSemantics = getSPIRVMemSemantics(Order);
+ unsigned StorageClassSemantics =
getMemSemanticsForStorageClass(GR->getPointerStorageClass(PtrRegister));
-
- if (Order == Semantics) {
+ Semantics = OrderSemantics | StorageClassSemantics;
+ if (OrderSemantics == Semantics) {
MRI->setRegClass(SemanticsRegister, &SPIRV::iIDRegClass);
return SemanticsRegister;
}
``````````
</details>
https://github.com/llvm/llvm-project/pull/123676
More information about the llvm-commits
mailing list