================ @@ -5133,6 +5133,135 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID, Builder.SetInsertPoint(ContBB); return RValue::get(nullptr); } + case Builtin::BI__scoped_atomic_thread_fence: { + auto ScopeModel = AtomicScopeModel::create(AtomicScopeModelKind::Generic); + + Value *Order = EmitScalarExpr(E->getArg(0)); + Value *Scope = EmitScalarExpr(E->getArg(1)); + if (isa<llvm::ConstantInt>(Order) && isa<llvm::ConstantInt>(Scope)) { + int Ord = cast<llvm::ConstantInt>(Order)->getZExtValue(); + int Scp = cast<llvm::ConstantInt>(Scope)->getZExtValue(); ---------------- jhuber6 wrote:
All the atomic builtins do case expansion when the argument is not a constant, it can't be an error to have non-constant arguments because that's how `std::atomic` works AFAIK. https://github.com/llvm/llvm-project/pull/115545 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits