diff options
author | Sam McCall <sam.mccall@gmail.com> | 2023-09-27 18:41:11 +0200 |
---|---|---|
committer | Sam McCall <sam.mccall@gmail.com> | 2023-09-27 18:58:01 +0200 |
commit | 880fa7faa97bad63e403c924263b01fb81783227 (patch) | |
tree | 70461a46a2b16bb67041cb5509029672dfc2317a /clang/lib/Parse/ParseDecl.cpp | |
parent | 6a34b12727280cfdd75be66c34a1235136c62e43 (diff) | |
download | llvm-880fa7faa97bad63e403c924263b01fb81783227.zip llvm-880fa7faa97bad63e403c924263b01fb81783227.tar.gz llvm-880fa7faa97bad63e403c924263b01fb81783227.tar.bz2 |
Revert "[clang][SemaCXX] Diagnose tautological uses of consteval if and is_constant_evaluated"
This reverts commit 491b2810fb7fe5f080fa9c4f5945ed0a6909dc92.
This change broke valid code and generated incorrect diagnostics, see
https://reviews.llvm.org/D155064
Diffstat (limited to 'clang/lib/Parse/ParseDecl.cpp')
-rw-r--r-- | clang/lib/Parse/ParseDecl.cpp | 42 |
1 files changed, 0 insertions, 42 deletions
diff --git a/clang/lib/Parse/ParseDecl.cpp b/clang/lib/Parse/ParseDecl.cpp index f5b4107..748b9d5 100644 --- a/clang/lib/Parse/ParseDecl.cpp +++ b/clang/lib/Parse/ParseDecl.cpp @@ -2461,15 +2461,6 @@ Decl *Parser::ParseDeclarationAfterDeclarator( return ParseDeclarationAfterDeclaratorAndAttributes(D, TemplateInfo); } -/// Determine whether the given declaration is a global variable or -/// static data member. -static bool isNonlocalVariable(const Decl *D) { - if (const VarDecl *Var = dyn_cast_or_null<VarDecl>(D)) - return Var->hasGlobalStorage(); - - return false; -} - Decl *Parser::ParseDeclarationAfterDeclaratorAndAttributes( Declarator &D, const ParsedTemplateInfo &TemplateInfo, ForRangeInit *FRI) { // RAII type used to track whether we're inside an initializer. @@ -2502,36 +2493,6 @@ Decl *Parser::ParseDeclarationAfterDeclaratorAndAttributes( ThisDecl = nullptr; } }; - struct EnterInitializerExpressionEvaluationContext { - Sema &S; - bool Entered; - - EnterInitializerExpressionEvaluationContext(Sema &S, Declarator &D, - Decl *ThisDecl) - : S(S), Entered(false) { - if (ThisDecl && S.getLangOpts().CPlusPlus && !ThisDecl->isInvalidDecl()) { - Entered = true; - bool RuntimeEvaluated = S.ExprEvalContexts.back().IsRuntimeEvaluated; - Sema::ExpressionEvaluationContext NewEEC = - S.ExprEvalContexts.back().Context; - if ((D.getDeclSpec().getTypeQualifiers() == DeclSpec::TQ_const || - isNonlocalVariable(ThisDecl)) && - S.ExprEvalContexts.back().IsRuntimeEvaluated) { - RuntimeEvaluated = false; - } - if (D.getDeclSpec().hasConstexprSpecifier()) { - NewEEC = Sema::ExpressionEvaluationContext::ConstantEvaluated; - RuntimeEvaluated = false; - } - S.PushExpressionEvaluationContext(NewEEC, ThisDecl); - S.ExprEvalContexts.back().IsRuntimeEvaluated = RuntimeEvaluated; - } - } - ~EnterInitializerExpressionEvaluationContext() { - if (Entered) - S.PopExpressionEvaluationContext(); - } - }; enum class InitKind { Uninitialized, Equal, CXXDirect, CXXBraced }; InitKind TheInitKind; @@ -2631,7 +2592,6 @@ Decl *Parser::ParseDeclarationAfterDeclaratorAndAttributes( << getLangOpts().CPlusPlus20; } else { InitializerScopeRAII InitScope(*this, D, ThisDecl); - EnterInitializerExpressionEvaluationContext InitEC(Actions, D, ThisDecl); if (Tok.is(tok::code_completion)) { cutOffParsing(); @@ -2679,7 +2639,6 @@ Decl *Parser::ParseDeclarationAfterDeclaratorAndAttributes( ExprVector Exprs; InitializerScopeRAII InitScope(*this, D, ThisDecl); - EnterInitializerExpressionEvaluationContext InitEC(Actions, D, ThisDecl); auto ThisVarDecl = dyn_cast_or_null<VarDecl>(ThisDecl); auto RunSignatureHelp = [&]() { @@ -2730,7 +2689,6 @@ Decl *Parser::ParseDeclarationAfterDeclaratorAndAttributes( Diag(Tok, diag::warn_cxx98_compat_generalized_initializer_lists); InitializerScopeRAII InitScope(*this, D, ThisDecl); - EnterInitializerExpressionEvaluationContext InitEC(Actions, D, ThisDecl); PreferredType.enterVariableInit(Tok.getLocation(), ThisDecl); ExprResult Init(ParseBraceInitializer()); |