[clang] ae54845 - Revert "[clang][modules] Add support for merging lifetime-extended temporaries"
via cfe-commits
cfe-commits at lists.llvm.org
Sun Dec 1 13:39:18 PST 2019
Author: Tyker
Date: 2019-12-01T22:38:31+01:00
New Revision: ae5484540f15bcbcb0de9558e66b0217ab8473ed
URL: https://github.com/llvm/llvm-project/commit/ae5484540f15bcbcb0de9558e66b0217ab8473ed
DIFF: https://github.com/llvm/llvm-project/commit/ae5484540f15bcbcb0de9558e66b0217ab8473ed.diff
LOG: Revert "[clang][modules] Add support for merging lifetime-extended temporaries"
This reverts commit a3cbe1a202df6ec8e23bd55e14db254e4bc33021.
Added:
Modified:
clang/include/clang/AST/DeclCXX.h
clang/include/clang/AST/TextNodeDumper.h
clang/include/clang/Serialization/ASTReader.h
clang/lib/AST/TextNodeDumper.cpp
clang/lib/Serialization/ASTReaderDecl.cpp
Removed:
clang/test/Modules/Inputs/merge-lifetime-extended-temporary/a.h
clang/test/Modules/Inputs/merge-lifetime-extended-temporary/b.h
clang/test/Modules/Inputs/merge-lifetime-extended-temporary/c.h
clang/test/Modules/Inputs/merge-lifetime-extended-temporary/module.modulemap
clang/test/Modules/merge-lifetime-extended-temporary.cpp
################################################################################
diff --git a/clang/include/clang/AST/DeclCXX.h b/clang/include/clang/AST/DeclCXX.h
index 0f2018fb9e8c..63d67bd3f55b 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<LifetimeExtendedTemporaryDecl> {
+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 d293ea190aa4..0ff5a614a864 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 b6dae68b3413..f0b5e9933823 100644
--- a/clang/include/clang/Serialization/ASTReader.h
+++ b/clang/include/clang/Serialization/ASTReader.h
@@ -551,14 +551,6 @@ class ASTReader
llvm::DenseMap<Decl*, llvm::SmallVector<NamedDecl*, 2>>
AnonymousDeclarationsForMerging;
- /// Key used to identify LifetimeExtendedTemporaryDecl for merging,
- /// containing the lifetime-extending declaration and the mangling number.
- using LETemporaryKey = std::pair<Decl *, unsigned>;
-
- /// Map of already deserialiazed temporaries.
- llvm::DenseMap<LETemporaryKey, LifetimeExtendedTemporaryDecl *>
- LETemporaryForMerging;
-
struct FileDeclsInfo {
ModuleFile *Mod = nullptr;
ArrayRef<serialization::LocalDeclID> Decls;
diff --git a/clang/lib/AST/TextNodeDumper.cpp b/clang/lib/AST/TextNodeDumper.cpp
index 561c76a45cbc..0ff95213118f 100644
--- a/clang/lib/AST/TextNodeDumper.cpp
+++ b/clang/lib/AST/TextNodeDumper.cpp
@@ -1338,17 +1338,6 @@ void TextNodeDumper::VisitFunctionDecl(const FunctionDecl *D) {
OS << " <<<NULL params x " << D->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 3f7a1ed7fd5c..8991a39a7067 100644
--- a/clang/lib/Serialization/ASTReaderDecl.cpp
+++ b/clang/lib/Serialization/ASTReaderDecl.cpp
@@ -424,8 +424,6 @@ namespace clang {
template<typename T>
void mergeMergeable(Mergeable<T> *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<uint64_t, uint64_t>
@@ -2558,25 +2555,6 @@ static bool allowODRLikeMergeInC(NamedDecl *ND) {
return false;
}
-/// Attempts to merge LifetimeExtendedTemporaryDecl with
-/// identical class definitions from two
diff erent 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 8adab29eafc7..000000000000
--- 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 2bd1b096d607..000000000000
--- 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 b023eebca49c..000000000000
--- 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 1339d627a44a..000000000000
--- 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 36db948b2c4e..000000000000
--- 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, "");
More information about the cfe-commits
mailing list