diff --git a/clang/include/clang/AST/DeclCXX.h b/clang/include/clang/AST/DeclCXX.h index 0f2018fb9e8cba..63d67bd3f55b21 100644 --- a/clang/include/clang/AST/DeclCXX.h +++ b/clang/include/clang/AST/DeclCXX.h @@ -3041,9 +3041,7 @@ class NamespaceAliasDecl : public NamedDecl, /// Implicit declaration of a temporary that was materialized by /// a MaterializeTemporaryExpr and lifetime-extended by a declaration -class LifetimeExtendedTemporaryDecl final - : public Decl, - public Mergeable { +class LifetimeExtendedTemporaryDecl final : public Decl { friend class MaterializeTemporaryExpr; friend class ASTDeclReader; diff --git a/clang/include/clang/AST/TextNodeDumper.h b/clang/include/clang/AST/TextNodeDumper.h index d293ea190aa43c..0ff5a614a864d7 100644 --- a/clang/include/clang/AST/TextNodeDumper.h +++ b/clang/include/clang/AST/TextNodeDumper.h @@ -346,8 +346,6 @@ class TextNodeDumper void VisitObjCPropertyImplDecl(const ObjCPropertyImplDecl *D); void VisitBlockDecl(const BlockDecl *D); void VisitConceptDecl(const ConceptDecl *D); - void - VisitLifetimeExtendedTemporaryDecl(const LifetimeExtendedTemporaryDecl *D); }; } // namespace clang diff --git a/clang/include/clang/Serialization/ASTReader.h b/clang/include/clang/Serialization/ASTReader.h index b6dae68b3413b3..f0b5e99338232c 100644 --- a/clang/include/clang/Serialization/ASTReader.h +++ b/clang/include/clang/Serialization/ASTReader.h @@ -551,14 +551,6 @@ class ASTReader llvm::DenseMap> AnonymousDeclarationsForMerging; - /// Key used to identify LifetimeExtendedTemporaryDecl for merging, - /// containing the lifetime-extending declaration and the mangling number. - using LETemporaryKey = std::pair; - - /// Map of already deserialiazed temporaries. - llvm::DenseMap - LETemporaryForMerging; - struct FileDeclsInfo { ModuleFile *Mod = nullptr; ArrayRef Decls; diff --git a/clang/lib/AST/TextNodeDumper.cpp b/clang/lib/AST/TextNodeDumper.cpp index 561c76a45cbc27..0ff95213118fd7 100644 --- a/clang/lib/AST/TextNodeDumper.cpp +++ b/clang/lib/AST/TextNodeDumper.cpp @@ -1338,17 +1338,6 @@ void TextNodeDumper::VisitFunctionDecl(const FunctionDecl *D) { OS << " <<getNumParams() << ">>>"; } -void TextNodeDumper::VisitLifetimeExtendedTemporaryDecl( - const LifetimeExtendedTemporaryDecl *D) { - OS << " extended by "; - dumpBareDeclRef(D->getExtendingDecl()); - OS << " mangling "; - { - ColorScope Color(OS, ShowColors, ValueColor); - OS << D->getManglingNumber(); - } -} - void TextNodeDumper::VisitFieldDecl(const FieldDecl *D) { dumpName(D); dumpType(D->getType()); diff --git a/clang/lib/Serialization/ASTReaderDecl.cpp b/clang/lib/Serialization/ASTReaderDecl.cpp index 3f7a1ed7fd5c2b..8991a39a706795 100644 --- a/clang/lib/Serialization/ASTReaderDecl.cpp +++ b/clang/lib/Serialization/ASTReaderDecl.cpp @@ -424,8 +424,6 @@ namespace clang { template void mergeMergeable(Mergeable *D); - void mergeMergeable(LifetimeExtendedTemporaryDecl *D); - void mergeTemplatePattern(RedeclarableTemplateDecl *D, RedeclarableTemplateDecl *Existing, DeclID DsID, bool IsKeyDecl); @@ -2360,7 +2358,6 @@ void ASTDeclReader::VisitLifetimeExtendedTemporaryDecl( if (Record.readInt()) D->Value = new (D->getASTContext()) APValue(Record.readAPValue()); D->ManglingNumber = Record.readInt(); - mergeMergeable(D); } std::pair @@ -2558,25 +2555,6 @@ static bool allowODRLikeMergeInC(NamedDecl *ND) { return false; } -/// Attempts to merge LifetimeExtendedTemporaryDecl with -/// identical class definitions from two different modules. -void ASTDeclReader::mergeMergeable(LifetimeExtendedTemporaryDecl *D) { - // If modules are not available, there is no reason to perform this merge. - if (!Reader.getContext().getLangOpts().Modules) - return; - - LifetimeExtendedTemporaryDecl *LETDecl = D; - - LifetimeExtendedTemporaryDecl *&LookupResult = - Reader.LETemporaryForMerging[std::make_pair( - LETDecl->getExtendingDecl(), LETDecl->getManglingNumber())]; - if (LookupResult) - Reader.getContext().setPrimaryMergedDecl(LETDecl, - LookupResult->getCanonicalDecl()); - else - LookupResult = LETDecl; -} - /// Attempts to merge the given declaration (D) with another declaration /// of the same entity, for the case where the entity is not actually /// redeclarable. This happens, for instance, when merging the fields of diff --git a/clang/test/Modules/Inputs/merge-lifetime-extended-temporary/a.h b/clang/test/Modules/Inputs/merge-lifetime-extended-temporary/a.h deleted file mode 100644 index 8adab29eafc76e..00000000000000 --- a/clang/test/Modules/Inputs/merge-lifetime-extended-temporary/a.h +++ /dev/null @@ -1,2 +0,0 @@ - -constexpr const int& LETemp = 0; diff --git a/clang/test/Modules/Inputs/merge-lifetime-extended-temporary/b.h b/clang/test/Modules/Inputs/merge-lifetime-extended-temporary/b.h deleted file mode 100644 index 2bd1b096d60732..00000000000000 --- a/clang/test/Modules/Inputs/merge-lifetime-extended-temporary/b.h +++ /dev/null @@ -1,4 +0,0 @@ - -#include "a.h" - -constexpr const int* PtrTemp1 = &LETemp; diff --git a/clang/test/Modules/Inputs/merge-lifetime-extended-temporary/c.h b/clang/test/Modules/Inputs/merge-lifetime-extended-temporary/c.h deleted file mode 100644 index b023eebca49c2d..00000000000000 --- a/clang/test/Modules/Inputs/merge-lifetime-extended-temporary/c.h +++ /dev/null @@ -1,4 +0,0 @@ - -#include "a.h" - -constexpr const int* PtrTemp2 = &LETemp; diff --git a/clang/test/Modules/Inputs/merge-lifetime-extended-temporary/module.modulemap b/clang/test/Modules/Inputs/merge-lifetime-extended-temporary/module.modulemap deleted file mode 100644 index 1339d627a44afa..00000000000000 --- a/clang/test/Modules/Inputs/merge-lifetime-extended-temporary/module.modulemap +++ /dev/null @@ -1,14 +0,0 @@ -module "a" { - export * - header "a.h" -} - -module "b" { - export * - header "b.h" -} - -module "c" { - export * - header "c.h" -} diff --git a/clang/test/Modules/merge-lifetime-extended-temporary.cpp b/clang/test/Modules/merge-lifetime-extended-temporary.cpp deleted file mode 100644 index 36db948b2c4efd..00000000000000 --- a/clang/test/Modules/merge-lifetime-extended-temporary.cpp +++ /dev/null @@ -1,14 +0,0 @@ -// RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -x c++ -I%S/Inputs/merge-lifetime-extended-temporary -verify -std=c++11 %s -DORDER=1 -// RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -x c++ -I%S/Inputs/merge-lifetime-extended-temporary -verify -std=c++11 %s -DORDER=2 - -// expected-no-diagnostics -#if ORDER == 1 -#include "c.h" -#include "b.h" -#else -#include "b.h" -#include "c.h" -#endif - -static_assert(PtrTemp1 == &LETemp, ""); -static_assert(PtrTemp1 == PtrTemp2, "");