On Jul 13, 2012, at 7:25 AM, Rafael Espindola wrote: > Author: rafael > Date: Fri Jul 13 09:25:36 2012 > New Revision: 160174 > > URL: http://llvm.org/viewvc/llvm-project?rev=160174&view=rev > Log: > Use -fvisibility-inlines-hidden in inline functions too. This matches gcc > behavior since gcc pr30066. Thanks to Benjamin Kramer for pointing it out. > > Modified: > cfe/trunk/lib/AST/Decl.cpp > cfe/trunk/test/CodeGenCXX/visibility-inlines-hidden.cpp > > Modified: cfe/trunk/lib/AST/Decl.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/Decl.cpp?rev=160174&r1=160173&r2=160174&view=diff > ============================================================================== > --- cfe/trunk/lib/AST/Decl.cpp (original) > +++ cfe/trunk/lib/AST/Decl.cpp Fri Jul 13 09:25:36 2012 > @@ -168,6 +168,35 @@ > return !d->hasAttr<VisibilityAttr>() || d->isExplicitSpecialization(); > } > > +static bool useInlineVisibilityHidden(const NamedDecl *D) { > + // FIXME: we should warn if -fvisibility-inlines-hidden is used with c. > + ASTContext &Context = D->getASTContext(); > + if (!Context.getLangOpts().CPlusPlus) > + return false; > + > + const FunctionDecl *FD = dyn_cast<FunctionDecl>(D); > + if (!FD) > + return false; > + > + TemplateSpecializationKind TSK = TSK_Undeclared; > + if (FunctionTemplateSpecializationInfo *spec > + = FD->getTemplateSpecializationInfo()) { > + TSK = spec->getTemplateSpecializationKind(); > + } else if (MemberSpecializationInfo *MSI = > + FD->getMemberSpecializationInfo()) { > + TSK = MSI->getTemplateSpecializationKind(); > + } > + > + const FunctionDecl *Def = 0; > + // InlineVisibilityHidden only applies to definitions, and > + // isInlined() only gives meaningful answers on definitions > + // anyway. > + return TSK != TSK_ExplicitInstantiationDeclaration && > + TSK != TSK_ExplicitInstantiationDefinition && > + FD->getASTContext().getLangOpts().InlineVisibilityHidden &&
Check this *before* doing all the work above it, please. John. _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
