[clang] d639a16 - [CIR] Stop making CIRGen's ExprScalar be a friend of CIRGenFunction (#234951)
via cfe-commits
cfe-commits at lists.llvm.org
Fri Oct 23 07:47:57 PDT 2026
Author: Erich Keane
Date: 2026-10-23T14:47:52Z
New Revision: d639a16cd99e19d4285bc22d4fce7626c124d5d0
URL: https://github.com/llvm/llvm-project/commit/d639a16cd99e19d4285bc22d4fce7626c124d5d0
DIFF: https://github.com/llvm/llvm-project/commit/d639a16cd99e19d4285bc22d4fce7626c124d5d0.diff
LOG: [CIR] Stop making CIRGen's ExprScalar be a friend of CIRGenFunction (#234951)
Since the former is in an anonymous namespace, this ends "creating" one
of these namespaces per TU. It doesn't actually get created/used
anywhere else, but this did get caught by a newer version of MSVC.
The only thing the friendship did was save us from having to do
getBuilder instead of builder, so this just fixes that.
Added:
Modified:
clang/lib/CIR/CodeGen/CIRGenExprScalar.cpp
clang/lib/CIR/CodeGen/CIRGenFunction.h
Removed:
################################################################################
diff --git a/clang/lib/CIR/CodeGen/CIRGenExprScalar.cpp b/clang/lib/CIR/CodeGen/CIRGenExprScalar.cpp
index eef3a4e479ba8..5d2b946c9bf42 100644
--- a/clang/lib/CIR/CodeGen/CIRGenExprScalar.cpp
+++ b/clang/lib/CIR/CodeGen/CIRGenExprScalar.cpp
@@ -360,7 +360,8 @@ class ScalarExprEmitter : public StmtVisitor<ScalarExprEmitter, mlir::Value> {
const mlir::Location loc = cgf.getLoc(e->getSourceRange());
const mlir::Value vecValue = Visit(e->getBase());
const mlir::Value indexValue = Visit(e->getIdx());
- return cir::VecExtractOp::create(cgf.builder, loc, vecValue, indexValue);
+ return cir::VecExtractOp::create(cgf.getBuilder(), loc, vecValue,
+ indexValue);
}
// Just load the lvalue formed by the subscript expression.
return emitLoadOfLValue(e);
@@ -371,8 +372,9 @@ class ScalarExprEmitter : public StmtVisitor<ScalarExprEmitter, mlir::Value> {
// The undocumented form of __builtin_shufflevector.
mlir::Value inputVec = Visit(e->getExpr(0));
mlir::Value indexVec = Visit(e->getExpr(1));
- return cir::VecShuffleDynamicOp::create(
- cgf.builder, cgf.getLoc(e->getSourceRange()), inputVec, indexVec);
+ return cir::VecShuffleDynamicOp::create(cgf.getBuilder(),
+ cgf.getLoc(e->getSourceRange()),
+ inputVec, indexVec);
}
mlir::Value vec1 = Visit(e->getExpr(0));
@@ -384,16 +386,16 @@ class ScalarExprEmitter : public StmtVisitor<ScalarExprEmitter, mlir::Value> {
SmallVector<mlir::Attribute, 8> indices;
for (unsigned i = 2; i < e->getNumSubExprs(); ++i) {
indices.push_back(
- cir::IntAttr::get(cgf.builder.getSInt64Ty(),
+ cir::IntAttr::get(cgf.getBuilder().getSInt64Ty(),
e->getExpr(i)
->EvaluateKnownConstInt(cgf.getContext())
.getSExtValue()));
}
- return cir::VecShuffleOp::create(cgf.builder,
+ return cir::VecShuffleOp::create(cgf.getBuilder(),
cgf.getLoc(e->getSourceRange()),
cgf.convertType(e->getType()), vec1, vec2,
- cgf.builder.getArrayAttr(indices));
+ cgf.getBuilder().getArrayAttr(indices));
}
mlir::Value VisitConvertVectorExpr(ConvertVectorExpr *e) {
diff --git a/clang/lib/CIR/CodeGen/CIRGenFunction.h b/clang/lib/CIR/CodeGen/CIRGenFunction.h
index b97b0fe1f700c..218b97ecb4035 100644
--- a/clang/lib/CIR/CodeGen/CIRGenFunction.h
+++ b/clang/lib/CIR/CodeGen/CIRGenFunction.h
@@ -42,10 +42,6 @@
#include "llvm/IR/Instructions.h"
#include "llvm/IR/Intrinsics.h"
-namespace {
-class ScalarExprEmitter;
-} // namespace
-
namespace mlir {
namespace acc {
class LoopOp;
@@ -66,7 +62,6 @@ class CIRGenFunction : public CIRGenTypeCache {
CIRGenModule &cgm;
private:
- friend class ::ScalarExprEmitter;
/// The builder is a helper class to create IR inside a function. The
/// builder is stateful, in particular it keeps an "insertion point": this
/// is where the next operations will be introduced.
More information about the cfe-commits
mailing list