[clang] [llvm] [AMDGPU][GFX12.5] Reimplement monitor load as an atomic operation (PR #177343)

Joseph Huber via cfe-commits cfe-commits at lists.llvm.org
Sat Jan 24 11:53:56 PST 2026


================
@@ -366,22 +360,55 @@ bool SemaAMDGPU::checkCoopAtomicFunctionCall(CallExpr *TheCall, bool IsStore) {
   // Atomic ordering cannot be acq_rel in any case, acquire for stores or
   // release for loads.
   if (!llvm::isValidAtomicOrderingCABI((unsigned)Ord) ||
-      (Ord == llvm::AtomicOrderingCABI::acq_rel) ||
-      Ord == (IsStore ? llvm::AtomicOrderingCABI::acquire
-                      : llvm::AtomicOrderingCABI::release)) {
+      (!(MayLoad && MayStore) && (Ord == llvm::AtomicOrderingCABI::acq_rel)) ||
+      (!MayLoad && Ord == llvm::AtomicOrderingCABI::acquire) ||
+      (!MayStore && Ord == llvm::AtomicOrderingCABI::release)) {
     return Diag(AtomicOrdArg->getBeginLoc(),
                 diag::warn_atomic_op_has_invalid_memory_order)
            << 0 << AtomicOrdArg->getSourceRange();
   }
 
-  // Last argument is a string literal
+  return false;
+}
+
+bool SemaAMDGPU::checkStringLiteralArg(CallExpr *TheCall, unsigned ArgIdx) {
----------------
jhuber6 wrote:

I'm guessing `_Constant` doesn't mix well with `const char *`s so we can't rely on the autogenerated sema handling?

https://github.com/llvm/llvm-project/pull/177343


More information about the cfe-commits mailing list