aaron.ballman added inline comments.
================ Comment at: clang/include/clang/AST/DeclBase.h:1695 /// Number of non-inherited bits in FunctionDeclBitfields. enum { NumFunctionDeclBits = 29 }; ---------------- Need to update this as well. ================ Comment at: clang/include/clang/Sema/ScopeInfo.h:239 + /// Whether we found an immediate-escalating expression + Expr *ImmediateEscalatingExpression = nullptr; ---------------- ================ Comment at: clang/lib/AST/Decl.cpp:3180 + // consteval specifier, + if (isDefaulted() && !isConsteval()) + return true; ---------------- Should this be looking at `isExplicitlyDefaulted()` instead? ================ Comment at: clang/lib/AST/Decl.cpp:3184 + // defined with the constexpr specifier. + auto TK = getTemplatedKind(); + if ((TK != TK_NonTemplate && TK != TK_DependentNonTemplate) && ---------------- Spell out the type. ================ Comment at: clang/lib/AST/Decl.cpp:3185 + auto TK = getTemplatedKind(); + if ((TK != TK_NonTemplate && TK != TK_DependentNonTemplate) && + isConstexprSpecified()) ---------------- ================ Comment at: clang/lib/AST/Decl.cpp:3199 + // immediate-escalating expression + if (auto *MD = dyn_cast<CXXMethodDecl>(this); + MD && MD->isLambdaStaticInvoker()) ---------------- This code doesn't seem to match the comment (it matches the code below though). ================ Comment at: clang/lib/AST/Decl.cpp:3203-3205 + if (isImmediateEscalating() && BodyContainsImmediateEscalatingExpressions()) + return true; + return false; ---------------- ================ Comment at: clang/lib/Sema/SemaDeclCXX.cpp:2453 + Diag(FD->getLocation(), diag::note_defined_here) << FD; + if (auto *CE = llvm::dyn_cast<CallExpr>( + ImmediateEscalatingExpression->IgnoreImplicit())) { ---------------- ================ Comment at: clang/lib/Sema/SemaExpr.cpp:17983 + if (!E.get()->isValueDependent() && + !E.get()->isCXX11ConstantExpr(getASTContext()) && + ExprEvalContexts.back().InImmediateEscalatingFunctionContext && ---------------- Ouch, this is pretty expensive because it actually evaluates the constant expression (and promptly forgets what it evaluated). ================ Comment at: clang/lib/Sema/SemaTemplateDeduction.cpp:5027-5029 + if (CallOp->isInvalidDecl()) + return true; + return false; ---------------- Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D151094/new/ https://reviews.llvm.org/D151094 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits