give always_inline functions internal linkage. If they cannot be

inlined for some reason, then we don't want a strong or even weak
definition.

llvm-svn: 69031
This commit is contained in:
Chris Lattner 2009-04-14 06:32:05 +00:00
parent 256c9507c8
commit 169a5c963f
1 changed files with 3 additions and 1 deletions

View File

@ -325,7 +325,9 @@ void CodeGenModule::SetFunctionAttributes(const Decl *D,
static CodeGenModule::GVALinkage
GetLinkageForFunctionOrMethodDecl(const Decl *D) {
if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(D)) {
if (FD->getStorageClass() == FunctionDecl::Static)
// "static" and attr(always_inline) functions get internal linkage.
if (FD->getStorageClass() == FunctionDecl::Static ||
FD->hasAttr<AlwaysInlineAttr>())
return CodeGenModule::GVA_Internal;
if (FD->isInline()) {
if (FD->getStorageClass() == FunctionDecl::Extern)