aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Parse/ParseDecl.cpp
diff options
context:
space:
mode:
authorSam McCall <sam.mccall@gmail.com>2023-09-27 18:41:11 +0200
committerSam McCall <sam.mccall@gmail.com>2023-09-27 18:58:01 +0200
commit880fa7faa97bad63e403c924263b01fb81783227 (patch)
tree70461a46a2b16bb67041cb5509029672dfc2317a /clang/lib/Parse/ParseDecl.cpp
parent6a34b12727280cfdd75be66c34a1235136c62e43 (diff)
downloadllvm-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.cpp42
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());