https://github.com/Luhaocong updated 
https://github.com/llvm/llvm-project/pull/171248

>From 2c2f10bdab7798532e1b52ab0e6c18e5726932e9 Mon Sep 17 00:00:00 2001
From: Haocong Lu <[email protected]>
Date: Tue, 9 Dec 2025 11:23:51 +0800
Subject: [PATCH 1/3] [CIR][NFC] Rename AtomicFence to AtomicFenceOp

This fixes missed suffix `Op` of `CIR_AtomicFence` defination
---
 clang/include/clang/CIR/Dialect/IR/CIROps.td        |  2 +-
 clang/lib/CIR/CodeGen/CIRGenBuiltin.cpp             | 12 ++++++------
 clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp |  4 ++--
 3 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/clang/include/clang/CIR/Dialect/IR/CIROps.td 
b/clang/include/clang/CIR/Dialect/IR/CIROps.td
index fcc7585cf81a5..e39bc31c3eafa 100644
--- a/clang/include/clang/CIR/Dialect/IR/CIROps.td
+++ b/clang/include/clang/CIR/Dialect/IR/CIROps.td
@@ -5493,7 +5493,7 @@ def CIR_AtomicClearOp : CIR_Op<"atomic.clear"> {
   }];
 }
 
-def CIR_AtomicFence : CIR_Op<"atomic.fence"> {
+def CIR_AtomicFenceOp : CIR_Op<"atomic.fence"> {
   let summary = "Atomic thread fence";
   let description = [{
     C/C++ Atomic thread fence synchronization primitive. Implements the builtin
diff --git a/clang/lib/CIR/CodeGen/CIRGenBuiltin.cpp 
b/clang/lib/CIR/CodeGen/CIRGenBuiltin.cpp
index 16c006df6853e..c7040b14f5ef1 100644
--- a/clang/lib/CIR/CodeGen/CIRGenBuiltin.cpp
+++ b/clang/lib/CIR/CodeGen/CIRGenBuiltin.cpp
@@ -60,9 +60,9 @@ static RValue emitBuiltinBitOp(CIRGenFunction &cgf, const 
CallExpr *e,
   return RValue::get(result);
 }
 
-static mlir::Value makeAtomicFenceValue(CIRGenFunction &cgf,
-                                        const CallExpr *expr,
-                                        cir::SyncScopeKind syncScope) {
+static mlir::Value makeAtomicFenceOpValue(CIRGenFunction &cgf,
+                                          const CallExpr *expr,
+                                          cir::SyncScopeKind syncScope) {
   CIRGenBuilderTy &builder = cgf.getBuilder();
   mlir::Value orderingVal = cgf.emitScalarExpr(expr->getArg(0));
 
@@ -80,7 +80,7 @@ static mlir::Value makeAtomicFenceValue(CIRGenFunction &cgf,
 
   auto ordering = static_cast<cir::MemOrder>(constOrderingAttr.getUInt());
 
-  cir::AtomicFence::create(
+  cir::AtomicFenceOp::create(
       builder, cgf.getLoc(expr->getSourceRange()), ordering,
       cir::SyncScopeKindAttr::get(&cgf.getMLIRContext(), syncScope));
 
@@ -1012,10 +1012,10 @@ RValue CIRGenFunction::emitBuiltinExpr(const GlobalDecl 
&gd, unsigned builtinID,
     return errorBuiltinNYI(*this, e, builtinID);
   case Builtin::BI__atomic_thread_fence:
     return RValue::get(
-        makeAtomicFenceValue(*this, e, cir::SyncScopeKind::System));
+        makeAtomicFenceOpValue(*this, e, cir::SyncScopeKind::System));
   case Builtin::BI__atomic_signal_fence:
     return RValue::get(
-        makeAtomicFenceValue(*this, e, cir::SyncScopeKind::SingleThread));
+        makeAtomicFenceOpValue(*this, e, cir::SyncScopeKind::SingleThread));
   case Builtin::BI__c11_atomic_thread_fence:
   case Builtin::BI__c11_atomic_signal_fence:
   case Builtin::BI__scoped_atomic_thread_fence:
diff --git a/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp 
b/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
index 97bd3cf850daa..c8b395b1feb93 100644
--- a/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+++ b/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
@@ -860,8 +860,8 @@ mlir::LogicalResult 
CIRToLLVMAtomicClearOpLowering::matchAndRewrite(
   return mlir::success();
 }
 
-mlir::LogicalResult CIRToLLVMAtomicFenceLowering::matchAndRewrite(
-    cir::AtomicFence op, OpAdaptor adaptor,
+mlir::LogicalResult CIRToLLVMAtomicFenceOpLowering::matchAndRewrite(
+    cir::AtomicFenceOp op, OpAdaptor adaptor,
     mlir::ConversionPatternRewriter &rewriter) const {
   mlir::LLVM::AtomicOrdering llvmOrder = 
getLLVMMemOrder(adaptor.getOrdering());
 

>From 8a7d85827d116aff8a80f111040211415a1a8d47 Mon Sep 17 00:00:00 2001
From: Haocong Lu <[email protected]>
Date: Wed, 10 Dec 2025 10:12:43 +0800
Subject: [PATCH 2/3] [CIR][NFC] Refactor makeAtomicFenceValue

---
 clang/lib/CIR/CodeGen/CIRGenBuiltin.cpp | 23 ++++++++++++-----------
 1 file changed, 12 insertions(+), 11 deletions(-)

diff --git a/clang/lib/CIR/CodeGen/CIRGenBuiltin.cpp 
b/clang/lib/CIR/CodeGen/CIRGenBuiltin.cpp
index c7040b14f5ef1..bc7f2e59edadd 100644
--- a/clang/lib/CIR/CodeGen/CIRGenBuiltin.cpp
+++ b/clang/lib/CIR/CodeGen/CIRGenBuiltin.cpp
@@ -60,9 +60,8 @@ static RValue emitBuiltinBitOp(CIRGenFunction &cgf, const 
CallExpr *e,
   return RValue::get(result);
 }
 
-static mlir::Value makeAtomicFenceOpValue(CIRGenFunction &cgf,
-                                          const CallExpr *expr,
-                                          cir::SyncScopeKind syncScope) {
+static void emitAtomicFenceOp(CIRGenFunction &cgf, const CallExpr *expr,
+                              cir::SyncScopeKind syncScope) {
   CIRGenBuilderTy &builder = cgf.getBuilder();
   mlir::Value orderingVal = cgf.emitScalarExpr(expr->getArg(0));
 
@@ -72,7 +71,7 @@ static mlir::Value makeAtomicFenceOpValue(CIRGenFunction &cgf,
     // TODO(cir): Emit code to switch on `orderingVal`,
     //            and creating the fence op for valid values.
     cgf.cgm.errorNYI("Variable atomic fence ordering");
-    return {};
+    return;
   }
 
   auto constOrderingAttr = constOrdering.getValueAttr<cir::IntAttr>();
@@ -84,7 +83,7 @@ static mlir::Value makeAtomicFenceOpValue(CIRGenFunction &cgf,
       builder, cgf.getLoc(expr->getSourceRange()), ordering,
       cir::SyncScopeKindAttr::get(&cgf.getMLIRContext(), syncScope));
 
-  return {};
+  return;
 }
 
 namespace {
@@ -1010,12 +1009,14 @@ RValue CIRGenFunction::emitBuiltinExpr(const GlobalDecl 
&gd, unsigned builtinID,
   case Builtin::BI__atomic_test_and_set:
   case Builtin::BI__atomic_clear:
     return errorBuiltinNYI(*this, e, builtinID);
-  case Builtin::BI__atomic_thread_fence:
-    return RValue::get(
-        makeAtomicFenceOpValue(*this, e, cir::SyncScopeKind::System));
-  case Builtin::BI__atomic_signal_fence:
-    return RValue::get(
-        makeAtomicFenceOpValue(*this, e, cir::SyncScopeKind::SingleThread));
+  case Builtin::BI__atomic_thread_fence: {
+    emitAtomicFenceOp(*this, e, cir::SyncScopeKind::System);
+    return RValue::get(nullptr);
+  }
+  case Builtin::BI__atomic_signal_fence: {
+    emitAtomicFenceOp(*this, e, cir::SyncScopeKind::SingleThread);
+    return RValue::get(nullptr);
+  }
   case Builtin::BI__c11_atomic_thread_fence:
   case Builtin::BI__c11_atomic_signal_fence:
   case Builtin::BI__scoped_atomic_thread_fence:

>From d5c9f0e0091acee10561926d98b49315941bafe3 Mon Sep 17 00:00:00 2001
From: Haocong Lu <[email protected]>
Date: Wed, 10 Dec 2025 20:53:30 +0800
Subject: [PATCH 3/3] [CIR][X86] Remove unneccessary return

---
 clang/lib/CIR/CodeGen/CIRGenBuiltin.cpp | 2 --
 1 file changed, 2 deletions(-)

diff --git a/clang/lib/CIR/CodeGen/CIRGenBuiltin.cpp 
b/clang/lib/CIR/CodeGen/CIRGenBuiltin.cpp
index bc7f2e59edadd..1953f7f1d372f 100644
--- a/clang/lib/CIR/CodeGen/CIRGenBuiltin.cpp
+++ b/clang/lib/CIR/CodeGen/CIRGenBuiltin.cpp
@@ -82,8 +82,6 @@ static void emitAtomicFenceOp(CIRGenFunction &cgf, const 
CallExpr *expr,
   cir::AtomicFenceOp::create(
       builder, cgf.getLoc(expr->getSourceRange()), ordering,
       cir::SyncScopeKindAttr::get(&cgf.getMLIRContext(), syncScope));
-
-  return;
 }
 
 namespace {

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to