linkage fix for weak functions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25976 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/Alpha/AlphaAsmPrinter.cpp b/lib/Target/Alpha/AlphaAsmPrinter.cpp
index 133f6c6..3d88bc4 100644
--- a/lib/Target/Alpha/AlphaAsmPrinter.cpp
+++ b/lib/Target/Alpha/AlphaAsmPrinter.cpp
@@ -173,9 +173,22 @@
EmitConstantPool(MF.getConstantPool());
// Print out labels for the function.
- SwitchSection("\t.section .text", MF.getFunction());
- EmitAlignment(4);
- O << "\t.globl " << CurrentFnName << "\n";
+ const Function *F = MF.getFunction();
+ SwitchSection(".text", F);
+ EmitAlignment(4, F);
+ switch (F->getLinkage()) {
+ default: assert(0 && "Unknown linkage type!");
+ case Function::InternalLinkage: // Symbols default to internal.
+ break;
+ case Function::ExternalLinkage:
+ O << "\t.globl " << CurrentFnName << "\n";
+ break;
+ case Function::WeakLinkage:
+ case Function::LinkOnceLinkage:
+ O << "\t.weak " << CurrentFnName << "\n";
+ break;
+ }
+
O << "\t.ent " << CurrentFnName << "\n";
O << CurrentFnName << ":\n";