Author: Haocong Lu Date: 2025-12-10T09:30:55-08:00 New Revision: 6cacbdbc38e793720c8c6569097c682afd545ada
URL: https://github.com/llvm/llvm-project/commit/6cacbdbc38e793720c8c6569097c682afd545ada DIFF: https://github.com/llvm/llvm-project/commit/6cacbdbc38e793720c8c6569097c682afd545ada.diff LOG: [CIR][NFC] Rename AtomicFence to AtomicFenceOp (#171248) This fixes missed suffix `Op` of `CIR_AtomicFence` defination and also improves API `makeAtomicFenceValue`. Added: Modified: clang/include/clang/CIR/Dialect/IR/CIROps.td clang/lib/CIR/CodeGen/CIRGenBuiltin.cpp clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp Removed: ################################################################################ diff --git a/clang/include/clang/CIR/Dialect/IR/CIROps.td b/clang/include/clang/CIR/Dialect/IR/CIROps.td index 461bce6c6fdb5..c4ad6a0c0732c 100644 --- a/clang/include/clang/CIR/Dialect/IR/CIROps.td +++ b/clang/include/clang/CIR/Dialect/IR/CIROps.td @@ -5568,7 +5568,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..1953f7f1d372f 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 makeAtomicFenceValue(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 makeAtomicFenceValue(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>(); @@ -80,11 +79,9 @@ 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)); - - return {}; } namespace { @@ -1010,12 +1007,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( - makeAtomicFenceValue(*this, e, cir::SyncScopeKind::System)); - case Builtin::BI__atomic_signal_fence: - return RValue::get( - makeAtomicFenceValue(*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: diff --git a/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp b/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp index 8a3b0a1448d2e..eeb886445ede4 100644 --- a/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp +++ b/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp @@ -868,8 +868,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()); _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
