https://github.com/zixu-w created https://github.com/llvm/llvm-project/pull/127136
…ete decl chains until the end of `finishPendingActions`. (#121245)" This reverts commit a9e249f64e800fbb20a3b26c0cfb68c1a1aee5e1. Reverting this change because of issue #126973. >From 63db52efccafa7716cb6b6f07bfc482cbe172388 Mon Sep 17 00:00:00 2001 From: Zixu Wang <zixu_w...@apple.com> Date: Thu, 13 Feb 2025 14:13:19 -0800 Subject: [PATCH] Revert "[C++20][Modules][Serialization] Delay marking pending incomplete decl chains until the end of `finishPendingActions`. (#121245)" This reverts commit a9e249f64e800fbb20a3b26c0cfb68c1a1aee5e1. Reverting this change because of issue #126973. --- clang/lib/Serialization/ASTReader.cpp | 25 +++---- clang/test/Modules/pr121245.cpp | 93 --------------------------- 2 files changed, 13 insertions(+), 105 deletions(-) delete mode 100644 clang/test/Modules/pr121245.cpp 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(); -} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits