https://github.com/tbaederr created https://github.com/llvm/llvm-project/pull/190313
Almost every caller passes `false` for `ForRef`, or rather, doesn't care what the value is. Use a default value instead. >From d2bcd9f5d5a27ec07c941a174439f68f249ec11a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timm=20B=C3=A4der?= <[email protected]> Date: Fri, 3 Apr 2026 08:14:33 +0200 Subject: [PATCH] asdf --- clang/include/clang/AST/Expr.h | 4 ++-- clang/lib/CIR/CodeGen/CIRGenDecl.cpp | 2 +- clang/lib/CodeGen/CGDecl.cpp | 2 +- clang/lib/CodeGen/CodeGenModule.cpp | 3 +-- clang/lib/Sema/SemaDecl.cpp | 8 ++++---- clang/lib/Sema/SemaExpr.cpp | 2 +- clang/lib/Sema/SemaExprObjC.cpp | 6 +++--- clang/lib/Sema/SemaInit.cpp | 2 +- clang/lib/Sema/SemaModule.cpp | 2 +- clang/lib/Sema/SemaTemplateInstantiateDecl.cpp | 3 +-- 10 files changed, 16 insertions(+), 18 deletions(-) diff --git a/clang/include/clang/AST/Expr.h b/clang/include/clang/AST/Expr.h index 37a1af584716a..a0ab599fa82d2 100644 --- a/clang/include/clang/AST/Expr.h +++ b/clang/include/clang/AST/Expr.h @@ -595,11 +595,11 @@ class Expr : public ValueStmt { SmallVectorImpl< PartialDiagnosticAt> &Diags); - /// isConstantInitializer - Returns true if this expression can be emitted to + /// Returns true if this expression can be emitted to /// IR as a constant, and thus can be used as a constant initializer in C. /// If this expression is not constant and Culprit is non-null, /// it is used to store the address of first non constant expr. - bool isConstantInitializer(ASTContext &Ctx, bool ForRef, + bool isConstantInitializer(ASTContext &Ctx, bool ForRef = false, const Expr **Culprit = nullptr) const; /// If this expression is an unambiguous reference to a single declaration, diff --git a/clang/lib/CIR/CodeGen/CIRGenDecl.cpp b/clang/lib/CIR/CodeGen/CIRGenDecl.cpp index 94d8632a48437..6f9fa157901db 100644 --- a/clang/lib/CIR/CodeGen/CIRGenDecl.cpp +++ b/clang/lib/CIR/CodeGen/CIRGenDecl.cpp @@ -66,7 +66,7 @@ CIRGenFunction::emitAutoVarAlloca(const VarDecl &d, (d.isConstexpr() || ((ty.isPODType(getContext()) || getContext().getBaseElementType(ty)->isObjCObjectPointerType()) && - d.getInit()->isConstantInitializer(getContext(), false)))) { + d.getInit()->isConstantInitializer(getContext())))) { // If the variable's a const type, and it's neither an NRVO // candidate nor a __block variable and has no mutable members, diff --git a/clang/lib/CodeGen/CGDecl.cpp b/clang/lib/CodeGen/CGDecl.cpp index 3f32fecc50998..748362105cb02 100644 --- a/clang/lib/CodeGen/CGDecl.cpp +++ b/clang/lib/CodeGen/CGDecl.cpp @@ -1528,7 +1528,7 @@ CodeGenFunction::EmitAutoVarAlloca(const VarDecl &D) { (D.isConstexpr() || ((Ty.isPODType(getContext()) || getContext().getBaseElementType(Ty)->isObjCObjectPointerType()) && - D.getInit()->isConstantInitializer(getContext(), false)))) { + D.getInit()->isConstantInitializer(getContext())))) { // If the variable's a const type, and it's neither an NRVO // candidate nor a __block variable and has no mutable members, diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp index 94a52f51118a7..68a403e02968d 100644 --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/lib/CodeGen/CodeGenModule.cpp @@ -8315,8 +8315,7 @@ void CodeGenModule::EmitOMPThreadPrivateDecl(const OMPThreadPrivateDecl *D) { auto *VD = cast<VarDecl>(cast<DeclRefExpr>(RefExpr)->getDecl()); bool PerformInit = VD->getAnyInitializer() && - !VD->getAnyInitializer()->isConstantInitializer(getContext(), - /*ForRef=*/false); + !VD->getAnyInitializer()->isConstantInitializer(getContext()); Address Addr(GetAddrOfGlobalVar(VD), getTypes().ConvertTypeForMem(VD->getType()), diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index a479ff68c35c5..fe89460314b26 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -12890,7 +12890,7 @@ bool Sema::CheckForConstantInitializer(Expr *Init, unsigned DiagID) { return true; } const Expr *Culprit; - if (Init->isConstantInitializer(Context, false, &Culprit)) + if (Init->isConstantInitializer(Context, /*ForRef=*/false, &Culprit)) return false; // Emit ObjC-specific diagnostics for non-constant literals at file scope. @@ -12900,7 +12900,7 @@ bool Sema::CheckForConstantInitializer(Expr *Init, unsigned DiagID) { // the offender. if (auto ALE = dyn_cast<ObjCArrayLiteral>(Init)) { for (auto *Elm : ALE->elements()) { - if (!Elm->isConstantInitializer(Context, false, nullptr)) { + if (!Elm->isConstantInitializer(Context)) { Diag(Elm->getExprLoc(), diag::err_objc_literal_nonconstant_at_file_scope) << ObjC().CheckLiteralKind(Init) << Elm->getSourceRange(); @@ -12915,14 +12915,14 @@ bool Sema::CheckForConstantInitializer(Expr *Init, unsigned DiagID) { // Check that the key is a string literal and is constant. if (!isa<ObjCStringLiteral>(Elm.Key) || - !Elm.Key->isConstantInitializer(Context, false, nullptr)) { + !Elm.Key->isConstantInitializer(Context)) { Diag(Elm.Key->getExprLoc(), diag::err_objc_literal_nonconstant_at_file_scope) << ObjC().CheckLiteralKind(Init) << Elm.Key->getSourceRange(); return true; } - if (!Elm.Value->isConstantInitializer(Context, false, nullptr)) { + if (!Elm.Value->isConstantInitializer(Context)) { Diag(Elm.Value->getExprLoc(), diag::err_objc_literal_nonconstant_at_file_scope) << ObjC().CheckLiteralKind(Init) << Elm.Value->getSourceRange(); diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index c9642ed298bf3..9fd8c6a0a5451 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -7475,7 +7475,7 @@ Sema::BuildCompoundLiteralExpr(SourceLocation LParenLoc, TypeSourceInfo *TInfo, for (unsigned i = 0, j = ILE->getNumInits(); i != j; i++) { Expr *Init = ILE->getInit(i); if (!Init->isTypeDependent() && !Init->isValueDependent() && - !Init->isConstantInitializer(Context, /*IsForRef=*/false)) { + !Init->isConstantInitializer(Context)) { Diag(Init->getExprLoc(), diag::err_init_element_not_constant) << Init->getSourceBitField(); return ExprError(); diff --git a/clang/lib/Sema/SemaExprObjC.cpp b/clang/lib/Sema/SemaExprObjC.cpp index 50766449401ea..36be822c817d2 100644 --- a/clang/lib/Sema/SemaExprObjC.cpp +++ b/clang/lib/Sema/SemaExprObjC.cpp @@ -982,7 +982,7 @@ ExprResult SemaObjC::BuildObjCArrayLiteral(SourceRange SR, // to be in constant collections since they *could* be modified / reassigned if (ExpressibleAsConstantInitLiteral && (!isa<ObjCObjectLiteral>(ElementsBuffer[I]->IgnoreImpCasts()) || - !ElementsBuffer[I]->isConstantInitializer(Context, false))) + !ElementsBuffer[I]->isConstantInitializer(Context))) ExpressibleAsConstantInitLiteral = false; } @@ -1226,7 +1226,7 @@ ExprResult SemaObjC::BuildObjCDictionaryLiteral( Element.Value = Value.get(); if (ExpressibleAsConstantInitLiteral && - !Element.Key->isConstantInitializer(Context, false)) + !Element.Key->isConstantInitializer(Context)) ExpressibleAsConstantInitLiteral = false; // Only support string keys like plists @@ -1238,7 +1238,7 @@ ExprResult SemaObjC::BuildObjCDictionaryLiteral( // to be in constant collections since they *could* be modified / reassigned if (ExpressibleAsConstantInitLiteral && (!isa<ObjCObjectLiteral>(Element.Value->IgnoreImpCasts()) || - !Element.Value->isConstantInitializer(Context, false))) + !Element.Value->isConstantInitializer(Context))) ExpressibleAsConstantInitLiteral = false; if (Element.EllipsisLoc.isInvalid()) diff --git a/clang/lib/Sema/SemaInit.cpp b/clang/lib/Sema/SemaInit.cpp index 6c929de9418ed..5c845bc446345 100644 --- a/clang/lib/Sema/SemaInit.cpp +++ b/clang/lib/Sema/SemaInit.cpp @@ -8784,7 +8784,7 @@ ExprResult InitializationSequence::Perform(Sema &S, // Check initializer is 32 bit integer constant. // If the initializer is taken from global variable, do not diagnose since // this has already been done when parsing the variable declaration. - if (!Init->isConstantInitializer(S.Context, false)) + if (!Init->isConstantInitializer(S.Context)) break; if (!SourceType->isIntegerType() || diff --git a/clang/lib/Sema/SemaModule.cpp b/clang/lib/Sema/SemaModule.cpp index ab6419a5abef9..7618c795d9d4c 100644 --- a/clang/lib/Sema/SemaModule.cpp +++ b/clang/lib/Sema/SemaModule.cpp @@ -1474,7 +1474,7 @@ class ReferenceTULocalChecker : public DynamicRecursiveASTVisitor { if (DRE->isNonOdrUse() && (L == Linkage::Internal || L == Linkage::None)) if (auto *VD = dyn_cast<VarDecl>(Referenced); VD && VD->getInit() && !VD->getInit()->isValueDependent() && - VD->getInit()->isConstantInitializer(Context, /*IsForRef=*/false)) + VD->getInit()->isConstantInitializer(Context)) return true; Callback(DRE, Referenced); diff --git a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp index cc24e03e77c07..61878cba32235 100644 --- a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp +++ b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp @@ -6249,8 +6249,7 @@ void Sema::InstantiateVariableInitializer( Expr *InitExpr = Init.get(); if (Var->hasAttr<DLLImportAttr>() && - (!InitExpr || - !InitExpr->isConstantInitializer(getASTContext(), false))) { + (!InitExpr || !InitExpr->isConstantInitializer(getASTContext()))) { // Do not dynamically initialize dllimport variables. } else if (InitExpr) { bool DirectInit = OldVar->isDirectInit(); _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
