summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorAndrew Lenharth <andrewl@lenharth.org>2006-02-04 19:13:09 +0000
committerAndrew Lenharth <andrewl@lenharth.org>2006-02-04 19:13:09 +0000
commit1fcff15f86577fd49cac03c7584c5517ff338836 (patch)
treeaf08336dc6df42993e1e1f71e4b35e6941e48b19 /llvm/lib/Target
parent95ae171d5b0e4a5a8d36ccd17dbebfd0b4e983f7 (diff)
downloadbcm5719-llvm-1fcff15f86577fd49cac03c7584c5517ff338836.tar.gz
bcm5719-llvm-1fcff15f86577fd49cac03c7584c5517ff338836.zip
linkage fix for weak functions
llvm-svn: 25976
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/Alpha/AlphaAsmPrinter.cpp19
1 files changed, 16 insertions, 3 deletions
diff --git a/llvm/lib/Target/Alpha/AlphaAsmPrinter.cpp b/llvm/lib/Target/Alpha/AlphaAsmPrinter.cpp
index 133f6c60393..3d88bc4fb61 100644
--- a/llvm/lib/Target/Alpha/AlphaAsmPrinter.cpp
+++ b/llvm/lib/Target/Alpha/AlphaAsmPrinter.cpp
@@ -173,9 +173,22 @@ bool AlphaAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
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";
OpenPOWER on IntegriCloud