diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2012-10-19 06:37:48 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2012-10-19 06:37:48 +0000 |
commit | 820e9a7e29a01bd4a91537a6c6d4524834da622b (patch) | |
tree | c6ad71b6029ad344ff61c1a734cc789dd9bee457 /lib/AST/Decl.cpp | |
parent | 80ddc31c5379df78a007eaf08d531efdbcd9b161 (diff) |
DR1511: A const volatile global does not implicitly get internal linkage like a
const non-volatile global does.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166269 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AST/Decl.cpp')
-rw-r--r-- | lib/AST/Decl.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/lib/AST/Decl.cpp b/lib/AST/Decl.cpp index 442deca11b..8e4ba0c5d2 100644 --- a/lib/AST/Decl.cpp +++ b/lib/AST/Decl.cpp @@ -213,12 +213,12 @@ static LinkageInfo getLVForNamespaceScopeDecl(const NamedDecl *D, if (Var->getStorageClass() == SC_Static) return LinkageInfo::internal(); - // - an object or reference that is explicitly declared const - // and neither explicitly declared extern nor previously - // declared to have external linkage; or - // (there is no equivalent in C99) + // - a non-volatile object or reference that is explicitly declared const + // or constexpr and neither explicitly declared extern nor previously + // declared to have external linkage; or (there is no equivalent in C99) if (Context.getLangOpts().CPlusPlus && - Var->getType().isConstant(Context) && + Var->getType().isConstQualified() && + !Var->getType().isVolatileQualified() && Var->getStorageClass() != SC_Extern && Var->getStorageClass() != SC_PrivateExtern) { bool FoundExtern = false; |