From f01516db8de1b7f7599b3e21f687adc6f2d71df2 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Tue, 10 Oct 2017 13:09:40 +0000 Subject: Revert "[Modules TS] Module ownership semantics for redeclarations." This reverts commit r315251. See the original commit thread for reason. llvm-svn: 315309 --- clang/lib/AST/Decl.cpp | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) (limited to 'clang/lib/AST/Decl.cpp') diff --git a/clang/lib/AST/Decl.cpp b/clang/lib/AST/Decl.cpp index cdd89d20e6b..6e5f638bd55 100644 --- a/clang/lib/AST/Decl.cpp +++ b/clang/lib/AST/Decl.cpp @@ -515,7 +515,6 @@ static bool isSingleLineLanguageLinkage(const Decl &D) { } static bool isExportedFromModuleIntefaceUnit(const NamedDecl *D) { - // FIXME: Handle isModulePrivate. switch (D->getModuleOwnershipKind()) { case Decl::ModuleOwnershipKind::Unowned: case Decl::ModuleOwnershipKind::ModulePrivate: @@ -547,8 +546,7 @@ static LinkageInfo getExternalLinkageFor(const NamedDecl *D) { // declaration has module linkage. if (auto *M = D->getOwningModule()) if (M->Kind == Module::ModuleInterfaceUnit) - if (!isExportedFromModuleIntefaceUnit( - cast(D->getCanonicalDecl()))) + if (!isExportedFromModuleIntefaceUnit(D)) return LinkageInfo(ModuleLinkage, DefaultVisibility, false); return LinkageInfo::external(); @@ -1395,7 +1393,7 @@ LinkageInfo LinkageComputer::getDeclLinkageAndVisibility(const NamedDecl *D) { : NamedDecl::VisibilityForValue)); } -Module *Decl::getOwningModuleForLinkage() const { +Module *NamedDecl::getOwningModuleForLinkage() const { Module *M = getOwningModule(); if (!M) return nullptr; @@ -1413,15 +1411,7 @@ Module *Decl::getOwningModuleForLinkage() const { // for linkage purposes. But internal linkage declarations in the global // module fragment of a particular module are owned by that module for // linkage purposes. - bool InternalLinkage; - if (auto *ND = dyn_cast(this)) - InternalLinkage = !ND->hasExternalFormalLinkage(); - else { - auto *NSD = dyn_cast(this); - InternalLinkage = (NSD && NSD->isAnonymousNamespace()) || - isInAnonymousNamespace(); - } - return InternalLinkage ? M->Parent : nullptr; + return hasExternalFormalLinkage() ? nullptr : M->Parent; } llvm_unreachable("unknown module kind"); -- cgit v1.2.3