[clang] 2dda8a2 - Revert "[clang][Interp] Fix init chain in local initializers"
Timm Bäder via cfe-commits
cfe-commits at lists.llvm.org
Wed Jul 3 23:50:23 PDT 2024
Author: Timm Bäder
Date: 2024-07-04T08:50:14+02:00
New Revision: 2dda8a2650927e4b0fbb459507684455e196d9a9
URL: https://github.com/llvm/llvm-project/commit/2dda8a2650927e4b0fbb459507684455e196d9a9
DIFF: https://github.com/llvm/llvm-project/commit/2dda8a2650927e4b0fbb459507684455e196d9a9.diff
LOG: Revert "[clang][Interp] Fix init chain in local initializers"
This reverts commit 86187ed2998e43be62176c2c4a7b204cc52f6ce6.
Seems like this breaks buildbots:
https://lab.llvm.org/buildbot/#/builders/56/builds/1638
Added:
Modified:
clang/lib/AST/Interp/Compiler.cpp
clang/test/AST/Interp/records.cpp
Removed:
################################################################################
diff --git a/clang/lib/AST/Interp/Compiler.cpp b/clang/lib/AST/Interp/Compiler.cpp
index 2af4c38c5ac3d..775cabf7f8c59 100644
--- a/clang/lib/AST/Interp/Compiler.cpp
+++ b/clang/lib/AST/Interp/Compiler.cpp
@@ -3577,7 +3577,6 @@ VarCreationState Compiler<Emitter>::visitVarDecl(const VarDecl *VD, bool Topleve
return !Init || (checkDecl() && initGlobal(*GlobalIndex));
} else {
VariableScope<Emitter> LocalScope(this, VD);
- InitLinkScope<Emitter> ILS(this, InitLink::Decl(VD));
if (VarT) {
unsigned Offset = this->allocateLocalPrimitive(
@@ -3912,8 +3911,7 @@ bool Compiler<Emitter>::VisitCXXDefaultInitExpr(const CXXDefaultInitExpr *E) {
SourceLocScope<Emitter> SLS(this, E);
bool Old = InitStackActive;
- InitStackActive =
- !(E->getUsedContext()->getDeclKind() == Decl::CXXConstructor);
+ InitStackActive = !isa<FunctionDecl>(E->getUsedContext());
bool Result = this->delegate(E->getExpr());
InitStackActive = Old;
return Result;
diff --git a/clang/test/AST/Interp/records.cpp b/clang/test/AST/Interp/records.cpp
index 1554e54275598..9f341f5bc6d1d 100644
--- a/clang/test/AST/Interp/records.cpp
+++ b/clang/test/AST/Interp/records.cpp
@@ -1482,15 +1482,3 @@ namespace FloatAPValue {
ClassTemplateArgRefTemplate<ClassTemplateArgObj.Arg> ClassTemplateArgRefObj;
}
#endif
-
-namespace LocalWithThisPtrInit {
- struct S {
- int i;
- int *p = &i;
- };
- constexpr int foo() {
- S s{2};
- return *s.p;
- }
- static_assert(foo() == 2, "");
-}
More information about the cfe-commits
mailing list