diff options
| author | Dale Johannesen <dalej@apple.com> | 2008-05-14 20:12:51 +0000 |
|---|---|---|
| committer | Dale Johannesen <dalej@apple.com> | 2008-05-14 20:12:51 +0000 |
| commit | ce4396bc92640e84cb8aa55e424f11341a3f1e3b (patch) | |
| tree | e49fb307951b1f7cfdf182eee611d01333dc00df /llvm/lib/Target/X86 | |
| parent | e94e0f66cdd503e02936f0705ddf74ed9bf44e0c (diff) | |
| download | bcm5719-llvm-ce4396bc92640e84cb8aa55e424f11341a3f1e3b.tar.gz bcm5719-llvm-ce4396bc92640e84cb8aa55e424f11341a3f1e3b.zip | |
Add CommonLinkage; currently tentative definitions
are represented as "weak", but there are subtle differences
in some cases on Darwin, so we need both. The intent
is that "common" will behave identically to "weak" unless
somebody changes their target to do something else.
No functional change as yet.
llvm-svn: 51118
Diffstat (limited to 'llvm/lib/Target/X86')
| -rw-r--r-- | llvm/lib/Target/X86/X86ATTAsmPrinter.cpp | 3 | ||||
| -rw-r--r-- | llvm/lib/Target/X86/X86AsmPrinter.cpp | 3 | ||||
| -rw-r--r-- | llvm/lib/Target/X86/X86IntelAsmPrinter.cpp | 1 | ||||
| -rw-r--r-- | llvm/lib/Target/X86/X86Subtarget.cpp | 1 |
4 files changed, 6 insertions, 2 deletions
diff --git a/llvm/lib/Target/X86/X86ATTAsmPrinter.cpp b/llvm/lib/Target/X86/X86ATTAsmPrinter.cpp index 6909da1b245..4659deb1467 100644 --- a/llvm/lib/Target/X86/X86ATTAsmPrinter.cpp +++ b/llvm/lib/Target/X86/X86ATTAsmPrinter.cpp @@ -309,7 +309,8 @@ void X86ATTAsmPrinter::printOperand(const MachineInstr *MI, unsigned OpNo, // non-lazily-resolved stubs if (GV->isDeclaration() || GV->hasWeakLinkage() || - GV->hasLinkOnceLinkage()) { + GV->hasLinkOnceLinkage() || + GV->hasCommonLinkage()) { // Dynamically-resolved functions need a stub for the function. if (isCallOp && isa<Function>(GV)) { FnStubs.insert(Name); diff --git a/llvm/lib/Target/X86/X86AsmPrinter.cpp b/llvm/lib/Target/X86/X86AsmPrinter.cpp index e1bc65fc5d6..3898a9ee465 100644 --- a/llvm/lib/Target/X86/X86AsmPrinter.cpp +++ b/llvm/lib/Target/X86/X86AsmPrinter.cpp @@ -200,7 +200,7 @@ bool X86SharedAsmPrinter::doFinalization(Module &M) { if (!I->isThreadLocal() && (I->hasInternalLinkage() || I->hasWeakLinkage() || - I->hasLinkOnceLinkage())) { + I->hasLinkOnceLinkage() || I->hasCommonLinkage())) { if (Size == 0) Size = 1; // .comm Foo, 0 is undefined, avoid it. if (!NoZerosInBSS && TAI->getBSSSection()) SwitchToDataSection(TAI->getBSSSection(), I); @@ -235,6 +235,7 @@ bool X86SharedAsmPrinter::doFinalization(Module &M) { } switch (I->getLinkage()) { + case GlobalValue::CommonLinkage: case GlobalValue::LinkOnceLinkage: case GlobalValue::WeakLinkage: if (Subtarget->isTargetDarwin()) { diff --git a/llvm/lib/Target/X86/X86IntelAsmPrinter.cpp b/llvm/lib/Target/X86/X86IntelAsmPrinter.cpp index ddd90cd40a8..a1031bd8eaf 100644 --- a/llvm/lib/Target/X86/X86IntelAsmPrinter.cpp +++ b/llvm/lib/Target/X86/X86IntelAsmPrinter.cpp @@ -373,6 +373,7 @@ bool X86IntelAsmPrinter::doFinalization(Module &M) { bool bCustomSegment = false; switch (I->getLinkage()) { + case GlobalValue::CommonLinkage: case GlobalValue::LinkOnceLinkage: case GlobalValue::WeakLinkage: SwitchToDataSection(""); diff --git a/llvm/lib/Target/X86/X86Subtarget.cpp b/llvm/lib/Target/X86/X86Subtarget.cpp index 98d80c84a0a..23ceb9ba966 100644 --- a/llvm/lib/Target/X86/X86Subtarget.cpp +++ b/llvm/lib/Target/X86/X86Subtarget.cpp @@ -41,6 +41,7 @@ bool X86Subtarget::GVRequiresExtraLoad(const GlobalValue* GV, if (isTargetDarwin()) { return (!isDirectCall && (GV->hasWeakLinkage() || GV->hasLinkOnceLinkage() || + GV->hasCommonLinkage() || (GV->isDeclaration() && !GV->hasNotBeenReadFromBitcode()))); } else if (isTargetELF()) { // Extra load is needed for all non-statics. |

