forked from OSchip/llvm-project
parent
b6219a9f0e
commit
afddaa4719
|
@ -476,13 +476,6 @@ template <typename T> static bool isInExternCContext(T *D) {
|
|||
return First->getDeclContext()->isExternCContext();
|
||||
}
|
||||
|
||||
static bool isSingleLineExternC(const Decl &D) {
|
||||
if (const LinkageSpecDecl *SD = dyn_cast<LinkageSpecDecl>(D.getDeclContext()))
|
||||
if (SD->getLanguage() == LinkageSpecDecl::lang_c && !SD->hasBraces())
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
static LinkageInfo getLVForNamespaceScopeDecl(const NamedDecl *D,
|
||||
LVComputationKind computation) {
|
||||
assert(D->getDeclContext()->getRedeclContext()->isFileContext() &&
|
||||
|
@ -511,8 +504,7 @@ static LinkageInfo getLVForNamespaceScopeDecl(const NamedDecl *D,
|
|||
return PrevVar->getLinkageAndVisibility();
|
||||
|
||||
if (Var->getStorageClass() != SC_Extern &&
|
||||
Var->getStorageClass() != SC_PrivateExtern &&
|
||||
!isSingleLineExternC(*Var))
|
||||
Var->getStorageClass() != SC_PrivateExtern)
|
||||
return LinkageInfo::internal();
|
||||
}
|
||||
|
||||
|
@ -1588,8 +1580,11 @@ VarDecl::DefinitionKind VarDecl::isThisDeclarationADefinition(
|
|||
// A declaration directly contained in a linkage-specification is treated
|
||||
// as if it contains the extern specifier for the purpose of determining
|
||||
// the linkage of the declared name and whether it is a definition.
|
||||
if (isSingleLineExternC(*this))
|
||||
return DeclarationOnly;
|
||||
const DeclContext *DC = getDeclContext();
|
||||
if (const LinkageSpecDecl *SD = dyn_cast<LinkageSpecDecl>(DC)) {
|
||||
if (SD->getLanguage() == LinkageSpecDecl::lang_c && !SD->hasBraces())
|
||||
return DeclarationOnly;
|
||||
}
|
||||
|
||||
// C99 6.9.2p2:
|
||||
// A declaration of an object that has file scope without an initializer,
|
||||
|
|
|
@ -323,10 +323,3 @@ namespace test13 {
|
|||
}
|
||||
}
|
||||
|
||||
namespace test14 {
|
||||
extern "C" const int foo;
|
||||
|
||||
int f() {
|
||||
return foo;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue