-
Notifications
You must be signed in to change notification settings - Fork 13.5k
Revert "[C++20][Modules][Serialization] Delay marking pending incompl… #127136
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
…ete decl chains until the end of `finishPendingActions`. (llvm#121245)" This reverts commit a9e249f. Reverting this change because of issue llvm#126973.
@llvm/pr-subscribers-clang-modules Author: Zixu Wang (zixu-w) Changes…ete decl chains until the end of This reverts commit a9e249f. Reverting this change because of issue #126973. Full diff: https://github.com/llvm/llvm-project/pull/127136.diff 2 Files Affected:
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp
index 3c64b67503195..4a40df6399f64 100644
--- a/clang/lib/Serialization/ASTReader.cpp
+++ b/clang/lib/Serialization/ASTReader.cpp
@@ -10188,12 +10188,12 @@ void ASTReader::visitTopLevelModuleMaps(
}
void ASTReader::finishPendingActions() {
- while (!PendingIdentifierInfos.empty() ||
- !PendingDeducedFunctionTypes.empty() ||
- !PendingDeducedVarTypes.empty() || !PendingDeclChains.empty() ||
- !PendingMacroIDs.empty() || !PendingDeclContextInfos.empty() ||
- !PendingUpdateRecords.empty() ||
- !PendingObjCExtensionIvarRedeclarations.empty()) {
+ while (
+ !PendingIdentifierInfos.empty() || !PendingDeducedFunctionTypes.empty() ||
+ !PendingDeducedVarTypes.empty() || !PendingIncompleteDeclChains.empty() ||
+ !PendingDeclChains.empty() || !PendingMacroIDs.empty() ||
+ !PendingDeclContextInfos.empty() || !PendingUpdateRecords.empty() ||
+ !PendingObjCExtensionIvarRedeclarations.empty()) {
// If any identifiers with corresponding top-level declarations have
// been loaded, load those declarations now.
using TopLevelDeclsMap =
@@ -10241,6 +10241,13 @@ void ASTReader::finishPendingActions() {
}
PendingDeducedVarTypes.clear();
+ // For each decl chain that we wanted to complete while deserializing, mark
+ // it as "still needs to be completed".
+ for (unsigned I = 0; I != PendingIncompleteDeclChains.size(); ++I) {
+ markIncompleteDeclChain(PendingIncompleteDeclChains[I]);
+ }
+ PendingIncompleteDeclChains.clear();
+
// Load pending declaration chains.
for (unsigned I = 0; I != PendingDeclChains.size(); ++I)
loadPendingDeclChain(PendingDeclChains[I].first,
@@ -10478,12 +10485,6 @@ void ASTReader::finishPendingActions() {
for (auto *ND : PendingMergedDefinitionsToDeduplicate)
getContext().deduplicateMergedDefinitonsFor(ND);
PendingMergedDefinitionsToDeduplicate.clear();
-
- // For each decl chain that we wanted to complete while deserializing, mark
- // it as "still needs to be completed".
- for (Decl *D : PendingIncompleteDeclChains)
- markIncompleteDeclChain(D);
- PendingIncompleteDeclChains.clear();
}
void ASTReader::diagnoseOdrViolations() {
diff --git a/clang/test/Modules/pr121245.cpp b/clang/test/Modules/pr121245.cpp
deleted file mode 100644
index 0e276ad0e435d..0000000000000
--- a/clang/test/Modules/pr121245.cpp
+++ /dev/null
@@ -1,93 +0,0 @@
-// If this test fails, it should be investigated under Debug builds.
-// Before the PR, this test was encountering an `llvm_unreachable()`.
-
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
-// RUN: split-file %s %t
-// RUN: cd %t
-
-// RUN: %clang_cc1 -std=c++20 -emit-header-unit -xc++-user-header %t/hu-01.h \
-// RUN: -fcxx-exceptions -o %t/hu-01.pcm
-
-// RUN: %clang_cc1 -std=c++20 -emit-header-unit -xc++-user-header %t/hu-02.h \
-// RUN: -Wno-experimental-header-units -fcxx-exceptions \
-// RUN: -fmodule-file=%t/hu-01.pcm -o %t/hu-02.pcm
-
-// RUN: %clang_cc1 -std=c++20 -emit-header-unit -xc++-user-header %t/hu-03.h \
-// RUN: -Wno-experimental-header-units -fcxx-exceptions \
-// RUN: -fmodule-file=%t/hu-01.pcm -o %t/hu-03.pcm
-
-// RUN: %clang_cc1 -std=c++20 -emit-header-unit -xc++-user-header %t/hu-04.h \
-// RUN: -Wno-experimental-header-units -fcxx-exceptions \
-// RUN: -fmodule-file=%t/hu-01.pcm -o %t/hu-04.pcm
-
-// RUN: %clang_cc1 -std=c++20 -emit-header-unit -xc++-user-header %t/hu-05.h \
-// RUN: -Wno-experimental-header-units -fcxx-exceptions \
-// RUN: -fmodule-file=%t/hu-03.pcm -fmodule-file=%t/hu-04.pcm \
-// RUN: -fmodule-file=%t/hu-01.pcm -o %t/hu-05.pcm
-
-// RUN: %clang_cc1 -std=c++20 -emit-obj %t/main.cpp \
-// RUN: -Wno-experimental-header-units -fcxx-exceptions \
-// RUN: -fmodule-file=%t/hu-02.pcm -fmodule-file=%t/hu-05.pcm \
-// RUN: -fmodule-file=%t/hu-04.pcm -fmodule-file=%t/hu-03.pcm \
-// RUN: -fmodule-file=%t/hu-01.pcm
-
-//--- hu-01.h
-template <typename T>
-struct A {
- A() {}
- ~A() {}
-};
-
-template <typename T>
-struct EBO : T {
- EBO() = default;
-};
-
-template <typename T>
-struct HT : EBO<A<T>> {};
-
-//--- hu-02.h
-import "hu-01.h";
-
-inline void f() {
- HT<int>();
-}
-
-//--- hu-03.h
-import "hu-01.h";
-
-struct C {
- C();
-
- HT<long> _;
-};
-
-//--- hu-04.h
-import "hu-01.h";
-
-void g(HT<long> = {});
-
-//--- hu-05.h
-import "hu-03.h";
-import "hu-04.h";
-import "hu-01.h";
-
-struct B {
- virtual ~B() = default;
-
- virtual void f() {
- HT<long>();
- }
-};
-
-//--- main.cpp
-import "hu-02.h";
-import "hu-05.h";
-import "hu-03.h";
-
-int main() {
- f();
- C();
- B();
-}
|
@llvm/pr-subscribers-clang Author: Zixu Wang (zixu-w) Changes…ete decl chains until the end of This reverts commit a9e249f. Reverting this change because of issue #126973. Full diff: https://github.com/llvm/llvm-project/pull/127136.diff 2 Files Affected:
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp
index 3c64b67503195..4a40df6399f64 100644
--- a/clang/lib/Serialization/ASTReader.cpp
+++ b/clang/lib/Serialization/ASTReader.cpp
@@ -10188,12 +10188,12 @@ void ASTReader::visitTopLevelModuleMaps(
}
void ASTReader::finishPendingActions() {
- while (!PendingIdentifierInfos.empty() ||
- !PendingDeducedFunctionTypes.empty() ||
- !PendingDeducedVarTypes.empty() || !PendingDeclChains.empty() ||
- !PendingMacroIDs.empty() || !PendingDeclContextInfos.empty() ||
- !PendingUpdateRecords.empty() ||
- !PendingObjCExtensionIvarRedeclarations.empty()) {
+ while (
+ !PendingIdentifierInfos.empty() || !PendingDeducedFunctionTypes.empty() ||
+ !PendingDeducedVarTypes.empty() || !PendingIncompleteDeclChains.empty() ||
+ !PendingDeclChains.empty() || !PendingMacroIDs.empty() ||
+ !PendingDeclContextInfos.empty() || !PendingUpdateRecords.empty() ||
+ !PendingObjCExtensionIvarRedeclarations.empty()) {
// If any identifiers with corresponding top-level declarations have
// been loaded, load those declarations now.
using TopLevelDeclsMap =
@@ -10241,6 +10241,13 @@ void ASTReader::finishPendingActions() {
}
PendingDeducedVarTypes.clear();
+ // For each decl chain that we wanted to complete while deserializing, mark
+ // it as "still needs to be completed".
+ for (unsigned I = 0; I != PendingIncompleteDeclChains.size(); ++I) {
+ markIncompleteDeclChain(PendingIncompleteDeclChains[I]);
+ }
+ PendingIncompleteDeclChains.clear();
+
// Load pending declaration chains.
for (unsigned I = 0; I != PendingDeclChains.size(); ++I)
loadPendingDeclChain(PendingDeclChains[I].first,
@@ -10478,12 +10485,6 @@ void ASTReader::finishPendingActions() {
for (auto *ND : PendingMergedDefinitionsToDeduplicate)
getContext().deduplicateMergedDefinitonsFor(ND);
PendingMergedDefinitionsToDeduplicate.clear();
-
- // For each decl chain that we wanted to complete while deserializing, mark
- // it as "still needs to be completed".
- for (Decl *D : PendingIncompleteDeclChains)
- markIncompleteDeclChain(D);
- PendingIncompleteDeclChains.clear();
}
void ASTReader::diagnoseOdrViolations() {
diff --git a/clang/test/Modules/pr121245.cpp b/clang/test/Modules/pr121245.cpp
deleted file mode 100644
index 0e276ad0e435d..0000000000000
--- a/clang/test/Modules/pr121245.cpp
+++ /dev/null
@@ -1,93 +0,0 @@
-// If this test fails, it should be investigated under Debug builds.
-// Before the PR, this test was encountering an `llvm_unreachable()`.
-
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
-// RUN: split-file %s %t
-// RUN: cd %t
-
-// RUN: %clang_cc1 -std=c++20 -emit-header-unit -xc++-user-header %t/hu-01.h \
-// RUN: -fcxx-exceptions -o %t/hu-01.pcm
-
-// RUN: %clang_cc1 -std=c++20 -emit-header-unit -xc++-user-header %t/hu-02.h \
-// RUN: -Wno-experimental-header-units -fcxx-exceptions \
-// RUN: -fmodule-file=%t/hu-01.pcm -o %t/hu-02.pcm
-
-// RUN: %clang_cc1 -std=c++20 -emit-header-unit -xc++-user-header %t/hu-03.h \
-// RUN: -Wno-experimental-header-units -fcxx-exceptions \
-// RUN: -fmodule-file=%t/hu-01.pcm -o %t/hu-03.pcm
-
-// RUN: %clang_cc1 -std=c++20 -emit-header-unit -xc++-user-header %t/hu-04.h \
-// RUN: -Wno-experimental-header-units -fcxx-exceptions \
-// RUN: -fmodule-file=%t/hu-01.pcm -o %t/hu-04.pcm
-
-// RUN: %clang_cc1 -std=c++20 -emit-header-unit -xc++-user-header %t/hu-05.h \
-// RUN: -Wno-experimental-header-units -fcxx-exceptions \
-// RUN: -fmodule-file=%t/hu-03.pcm -fmodule-file=%t/hu-04.pcm \
-// RUN: -fmodule-file=%t/hu-01.pcm -o %t/hu-05.pcm
-
-// RUN: %clang_cc1 -std=c++20 -emit-obj %t/main.cpp \
-// RUN: -Wno-experimental-header-units -fcxx-exceptions \
-// RUN: -fmodule-file=%t/hu-02.pcm -fmodule-file=%t/hu-05.pcm \
-// RUN: -fmodule-file=%t/hu-04.pcm -fmodule-file=%t/hu-03.pcm \
-// RUN: -fmodule-file=%t/hu-01.pcm
-
-//--- hu-01.h
-template <typename T>
-struct A {
- A() {}
- ~A() {}
-};
-
-template <typename T>
-struct EBO : T {
- EBO() = default;
-};
-
-template <typename T>
-struct HT : EBO<A<T>> {};
-
-//--- hu-02.h
-import "hu-01.h";
-
-inline void f() {
- HT<int>();
-}
-
-//--- hu-03.h
-import "hu-01.h";
-
-struct C {
- C();
-
- HT<long> _;
-};
-
-//--- hu-04.h
-import "hu-01.h";
-
-void g(HT<long> = {});
-
-//--- hu-05.h
-import "hu-03.h";
-import "hu-04.h";
-import "hu-01.h";
-
-struct B {
- virtual ~B() = default;
-
- virtual void f() {
- HT<long>();
- }
-};
-
-//--- main.cpp
-import "hu-02.h";
-import "hu-05.h";
-import "hu-03.h";
-
-int main() {
- f();
- C();
- B();
-}
|
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/52/builds/5987 Here is the relevant piece of the build log for the reference
|
/cherry-pick 912b154 |
/cherry-pick 912b154 |
/pull-request #127252 |
llvm#127136) …ete decl chains until the end of `finishPendingActions`. (llvm#121245)" This reverts commit a9e249f. Reverting this change because of issue llvm#126973.
llvm#127136) …ete decl chains until the end of `finishPendingActions`. (llvm#121245)" This reverts commit a9e249f. Reverting this change because of issue llvm#126973.
…l… (llvm#127136) This reverts commit 912b154.
…l… (llvm#127136) This reverts commit 912b154.
…l… (llvm#127136) This reverts commit 912b154.
…l… (llvm#127136) This reverts commit 912b154.
…l… (llvm#127136) This reverts commit 912b154.
…ete decl chains until the end of
finishPendingActions
. (#121245)"This reverts commit a9e249f.
Reverting this change because of issue #126973.