forked from OSchip/llvm-project
weak_import should not make definitions have weak linkage.
- <rdar://problem/6948703> clang treats weak_import like weak llvm-svn: 72967
This commit is contained in:
parent
50fc5a3cd7
commit
feeeda70e2
|
@ -298,7 +298,7 @@ void CodeGenModule::SetFunctionDefinitionAttributes(const FunctionDecl *D,
|
|||
GV->setLinkage(llvm::Function::InternalLinkage);
|
||||
} else if (D->hasAttr<DLLExportAttr>()) {
|
||||
GV->setLinkage(llvm::Function::DLLExportLinkage);
|
||||
} else if (D->hasAttr<WeakAttr>() || D->hasAttr<WeakImportAttr>()) {
|
||||
} else if (D->hasAttr<WeakAttr>()) {
|
||||
GV->setLinkage(llvm::Function::WeakAnyLinkage);
|
||||
} else if (Linkage == GVA_C99Inline) {
|
||||
// In C99 mode, 'inline' functions are guaranteed to have a strong
|
||||
|
@ -853,7 +853,7 @@ void CodeGenModule::EmitGlobalVarDefinition(const VarDecl *D) {
|
|||
GV->setLinkage(llvm::Function::DLLImportLinkage);
|
||||
else if (D->hasAttr<DLLExportAttr>())
|
||||
GV->setLinkage(llvm::Function::DLLExportLinkage);
|
||||
else if (D->hasAttr<WeakAttr>() || D->hasAttr<WeakImportAttr>())
|
||||
else if (D->hasAttr<WeakAttr>())
|
||||
GV->setLinkage(llvm::GlobalVariable::WeakAnyLinkage);
|
||||
else if (!CompileOpts.NoCommon &&
|
||||
(!D->hasExternalStorage() && !D->getInit()))
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
// RUN: grep '@t13 =.*section "SECT"' %t &&
|
||||
// RUN: grep '@t14.x =.*section "SECT"' %t
|
||||
// RUN: grep 'declare extern_weak i32 @t15()' %t &&
|
||||
// RUN: grep '@t16 = extern_weak global i32' %t
|
||||
// RUN: grep '@t16 = extern_weak global i32' %t &&
|
||||
|
||||
void t1() __attribute__((noreturn));
|
||||
void t1() {}
|
||||
|
@ -56,4 +56,14 @@ int t17() {
|
|||
return t15() + t16;
|
||||
}
|
||||
|
||||
// RUN: grep '@t18 = global i[0-9]* 1, align .*' %t &&
|
||||
extern int t18 __attribute__((weak_import));
|
||||
int t18 = 1;
|
||||
|
||||
// RUN: grep 'define i[0-9]* @t19() nounwind {' %t &&
|
||||
extern int t19(void) __attribute__((weak_import));
|
||||
int t19(void) {
|
||||
return 10;
|
||||
}
|
||||
|
||||
// RUN: true
|
||||
|
|
Loading…
Reference in New Issue