Skip to content

Commit

Permalink
Revert "[clang][modules] Add support for merging lifetime-extended te…
Browse files Browse the repository at this point in the history
…mporaries"

This reverts commit 85c7438.
  • Loading branch information
Ralender committed Dec 1, 2019
1 parent 85c7438 commit 486d1a5
Show file tree
Hide file tree
Showing 10 changed files with 1 addition and 84 deletions.
4 changes: 1 addition & 3 deletions clang/include/clang/AST/DeclCXX.h
Expand Up @@ -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;

Expand Down
2 changes: 0 additions & 2 deletions clang/include/clang/AST/TextNodeDumper.h
Expand Up @@ -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
Expand Down
8 changes: 0 additions & 8 deletions clang/include/clang/Serialization/ASTReader.h
Expand Up @@ -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;
Expand Down
11 changes: 0 additions & 11 deletions clang/lib/AST/TextNodeDumper.cpp
Expand Up @@ -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());
Expand Down
22 changes: 0 additions & 22 deletions clang/lib/Serialization/ASTReaderDecl.cpp
Expand Up @@ -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);
Expand Down Expand Up @@ -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>
Expand Down Expand Up @@ -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
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

14 changes: 0 additions & 14 deletions clang/test/Modules/merge-lifetime-extended-temporary.cpp

This file was deleted.

0 comments on commit 486d1a5

Please sign in to comment.