Author: jlebar Date: Thu Oct 13 15:52:17 2016 New Revision: 284159 URL: http://llvm.org/viewvc/llvm-project?rev=284159&view=rev Log: Add and use isDiscardableGVALinkage function.
Reviewers: rnk Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D25571 Modified: cfe/trunk/include/clang/Basic/Linkage.h cfe/trunk/lib/AST/ASTContext.cpp cfe/trunk/lib/Sema/SemaCUDA.cpp Modified: cfe/trunk/include/clang/Basic/Linkage.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Linkage.h?rev=284159&r1=284158&r2=284159&view=diff ============================================================================== --- cfe/trunk/include/clang/Basic/Linkage.h (original) +++ cfe/trunk/include/clang/Basic/Linkage.h Thu Oct 13 15:52:17 2016 @@ -69,6 +69,10 @@ enum GVALinkage { GVA_StrongODR }; +inline bool isDiscardableGVALinkage(GVALinkage L) { + return L <= GVA_DiscardableODR; +} + inline bool isExternallyVisible(Linkage L) { return L == ExternalLinkage || L == VisibleNoLinkage; } Modified: cfe/trunk/lib/AST/ASTContext.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ASTContext.cpp?rev=284159&r1=284158&r2=284159&view=diff ============================================================================== --- cfe/trunk/lib/AST/ASTContext.cpp (original) +++ cfe/trunk/lib/AST/ASTContext.cpp Thu Oct 13 15:52:17 2016 @@ -8824,15 +8824,10 @@ bool ASTContext::DeclMustBeEmitted(const } } - GVALinkage Linkage = GetGVALinkageForFunction(FD); - // static, static inline, always_inline, and extern inline functions can // always be deferred. Normal inline functions can be deferred in C99/C++. // Implicit template instantiations can also be deferred in C++. - if (Linkage == GVA_Internal || Linkage == GVA_AvailableExternally || - Linkage == GVA_DiscardableODR) - return false; - return true; + return !isDiscardableGVALinkage(GetGVALinkageForFunction(FD)); } const VarDecl *VD = cast<VarDecl>(D); @@ -8843,9 +8838,7 @@ bool ASTContext::DeclMustBeEmitted(const return false; // Variables that can be needed in other TUs are required. - GVALinkage L = GetGVALinkageForVariable(VD); - if (L != GVA_Internal && L != GVA_AvailableExternally && - L != GVA_DiscardableODR) + if (!isDiscardableGVALinkage(GetGVALinkageForVariable(VD))) return true; // Variables that have destruction with side-effects are required. Modified: cfe/trunk/lib/Sema/SemaCUDA.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaCUDA.cpp?rev=284159&r1=284158&r2=284159&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaCUDA.cpp (original) +++ cfe/trunk/lib/Sema/SemaCUDA.cpp Thu Oct 13 15:52:17 2016 @@ -546,7 +546,7 @@ static bool IsKnownEmitted(Sema &S, Func return false; // Externally-visible and similar functions are always emitted. - if (S.getASTContext().GetGVALinkageForFunction(FD) > GVA_DiscardableODR) + if (!isDiscardableGVALinkage(S.getASTContext().GetGVALinkageForFunction(FD))) return true; // Otherwise, the function is known-emitted if it's in our set of _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits