[llvm-commits] [llvm] r76941 - in /llvm/trunk/lib/Target: ARM/AsmPrinter/ARMAsmPrinter.cpp PowerPC/AsmPrinter/PPCAsmPrinter.cpp TargetAsmInfo.cpp X86/AsmPrinter/X86ATTAsmPrinter.cpp
Chris Lattner
sabre at nondot.org
Thu Jul 23 20:49:21 PDT 2009
Author: lattner
Date: Thu Jul 23 22:49:17 2009
New Revision: 76941
URL: http://llvm.org/viewvc/llvm-project?rev=76941&view=rev
Log:
reduce api exposure: clients shouldn't call SectionKindForGlobal directly.
Modified:
llvm/trunk/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
llvm/trunk/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp
llvm/trunk/lib/Target/TargetAsmInfo.cpp
llvm/trunk/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp
Modified: llvm/trunk/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp?rev=76941&r1=76940&r2=76941&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp (original)
+++ llvm/trunk/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp Thu Jul 23 22:49:17 2009
@@ -1077,9 +1077,9 @@
if (EmitSpecialLLVMGlobal(GVar)) {
if (Subtarget->isTargetDarwin() &&
TM.getRelocationModel() == Reloc::Static) {
- if (GVar->getName() == "llvm.global_ctors")
+ if (GVar->isName("llvm.global_ctors"))
O << ".reference .constructors_used\n";
- else if (GVar->getName() == "llvm.global_dtors")
+ else if (GVar->isName("llvm.global_dtors"))
O << ".reference .destructors_used\n";
}
return;
@@ -1098,14 +1098,15 @@
if (Subtarget->isTargetELF())
O << "\t.type " << name << ",%object\n";
+
+ const Section *TheSection = TAI->SectionForGlobal(GVar);
+ SwitchToSection(TheSection);
if (C->isNullValue() && !GVar->hasSection() && !GVar->isThreadLocal() &&
- !(isDarwin &&
- TAI->SectionKindForGlobal(GVar) == SectionKind::RODataMergeStr)) {
+ !(isDarwin && TheSection->getFlags() == SectionKind::RODataMergeStr)) {
// FIXME: This seems to be pretty darwin-specific
if (GVar->hasExternalLinkage()) {
- SwitchToSection(TAI->SectionForGlobal(GVar));
if (const char *Directive = TAI->getZeroFillDirective()) {
O << "\t.globl\t" << name << "\n";
O << Directive << "__DATA, __common, " << name << ", "
@@ -1147,7 +1148,6 @@
O << ',' << (TAI->getAlignmentIsInBytes() ? (1 << Align) : Align);
}
} else {
- SwitchToSection(TAI->SectionForGlobal(GVar));
if (GVar->hasLocalLinkage())
O << "\t.local\t" << name << "\n";
O << TAI->getCOMMDirective() << name << "," << Size;
@@ -1162,14 +1162,13 @@
return;
}
}
-
- SwitchToSection(TAI->SectionForGlobal(GVar));
+
switch (GVar->getLinkage()) {
- case GlobalValue::CommonLinkage:
- case GlobalValue::LinkOnceAnyLinkage:
- case GlobalValue::LinkOnceODRLinkage:
- case GlobalValue::WeakAnyLinkage:
- case GlobalValue::WeakODRLinkage:
+ case GlobalValue::CommonLinkage:
+ case GlobalValue::LinkOnceAnyLinkage:
+ case GlobalValue::LinkOnceODRLinkage:
+ case GlobalValue::WeakAnyLinkage:
+ case GlobalValue::WeakODRLinkage:
if (isDarwin) {
O << "\t.globl " << name << "\n"
<< "\t.weak_definition " << name << "\n";
@@ -1177,17 +1176,17 @@
O << "\t.weak " << name << "\n";
}
break;
- case GlobalValue::AppendingLinkage:
- // FIXME: appending linkage variables should go into a section of
- // their name or something. For now, just emit them as external.
- case GlobalValue::ExternalLinkage:
+ case GlobalValue::AppendingLinkage:
+ // FIXME: appending linkage variables should go into a section of
+ // their name or something. For now, just emit them as external.
+ case GlobalValue::ExternalLinkage:
O << "\t.globl " << name << "\n";
- // FALL THROUGH
- case GlobalValue::PrivateLinkage:
- case GlobalValue::LinkerPrivateLinkage:
- case GlobalValue::InternalLinkage:
break;
- default:
+ case GlobalValue::PrivateLinkage:
+ case GlobalValue::LinkerPrivateLinkage:
+ case GlobalValue::InternalLinkage:
+ break;
+ default:
llvm_unreachable("Unknown linkage type!");
}
Modified: llvm/trunk/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp?rev=76941&r1=76940&r2=76941&view=diff
==============================================================================
--- llvm/trunk/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp (original)
+++ llvm/trunk/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp Thu Jul 23 22:49:17 2009
@@ -874,9 +874,9 @@
// Check to see if this is a special global used by LLVM, if so, emit it.
if (EmitSpecialLLVMGlobal(GVar)) {
if (TM.getRelocationModel() == Reloc::Static) {
- if (GVar->getName() == "llvm.global_ctors")
+ if (GVar->isName("llvm.global_ctors"))
O << ".reference .constructors_used\n";
- else if (GVar->getName() == "llvm.global_dtors")
+ else if (GVar->isName("llvm.global_dtors"))
O << ".reference .destructors_used\n";
}
return;
@@ -890,13 +890,14 @@
unsigned Size = TD->getTypeAllocSize(Type);
unsigned Align = TD->getPreferredAlignmentLog(GVar);
- SwitchToSection(TAI->SectionForGlobal(GVar));
+ const Section *TheSection = TAI->SectionForGlobal(GVar);
+ SwitchToSection(TheSection);
if (C->isNullValue() && /* FIXME: Verify correct */
!GVar->hasSection() &&
(GVar->hasLocalLinkage() || GVar->hasExternalLinkage() ||
GVar->isWeakForLinker()) &&
- TAI->SectionKindForGlobal(GVar) != SectionKind::RODataMergeStr) {
+ TheSection->getFlags() != SectionKind::RODataMergeStr) {
if (Size == 0) Size = 1; // .comm Foo, 0 is undefined, avoid it.
if (GVar->hasExternalLinkage()) {
Modified: llvm/trunk/lib/Target/TargetAsmInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/TargetAsmInfo.cpp?rev=76941&r1=76940&r2=76941&view=diff
==============================================================================
--- llvm/trunk/lib/Target/TargetAsmInfo.cpp (original)
+++ llvm/trunk/lib/Target/TargetAsmInfo.cpp Thu Jul 23 22:49:17 2009
@@ -222,7 +222,7 @@
}
// Variable either is not constant or thread-local - output to data section.
- return (isThreadLocal ? SectionKind::ThreadData : SectionKind::Data);
+ return isThreadLocal ? SectionKind::ThreadData : SectionKind::Data;
}
unsigned
Modified: llvm/trunk/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp?rev=76941&r1=76940&r2=76941&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp (original)
+++ llvm/trunk/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp Thu Jul 23 22:49:17 2009
@@ -773,9 +773,9 @@
if (EmitSpecialLLVMGlobal(GVar)) {
if (Subtarget->isTargetDarwin() &&
TM.getRelocationModel() == Reloc::Static) {
- if (GVar->getName() == "llvm.global_ctors")
+ if (GVar->isName("llvm.global_ctors"))
O << ".reference .constructors_used\n";
- else if (GVar->getName() == "llvm.global_dtors")
+ else if (GVar->isName("llvm.global_dtors"))
O << ".reference .destructors_used\n";
}
return;
@@ -794,11 +794,12 @@
if (Subtarget->isTargetELF())
O << "\t.type\t" << name << ", at object\n";
- SwitchToSection(TAI->SectionForGlobal(GVar));
+ const Section *TheSection = TAI->SectionForGlobal(GVar);
+ SwitchToSection(TheSection);
if (C->isNullValue() && !GVar->hasSection() &&
!(Subtarget->isTargetDarwin() &&
- TAI->SectionKindForGlobal(GVar) == SectionKind::RODataMergeStr)) {
+ TheSection->getFlags() == SectionKind::RODataMergeStr)) {
// FIXME: This seems to be pretty darwin-specific
if (GVar->hasExternalLinkage()) {
if (const char *Directive = TAI->getZeroFillDirective()) {
More information about the llvm-commits
mailing list