summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorAnton Korobeynikov <asl@math.spbu.ru>2008-09-24 22:15:21 +0000
committerAnton Korobeynikov <asl@math.spbu.ru>2008-09-24 22:15:21 +0000
commitf8dc8aac3c8d19cc5edb2081bb729eb4f6e1dfc5 (patch)
treef18eb03162b62b761eda672940b7035d9b6908c1 /llvm
parent076e905b9480a75a33f5bbf56f26ecd2d8e88dc2 (diff)
downloadbcm5719-llvm-f8dc8aac3c8d19cc5edb2081bb729eb4f6e1dfc5.tar.gz
bcm5719-llvm-f8dc8aac3c8d19cc5edb2081bb729eb4f6e1dfc5.zip
Get rid of duplicate char*/Section* TextSection
llvm-svn: 56574
Diffstat (limited to 'llvm')
-rw-r--r--llvm/include/llvm/CodeGen/AsmPrinter.h1
-rw-r--r--llvm/include/llvm/Target/TargetAsmInfo.h8
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp3
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/DwarfWriter.cpp17
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/OcamlGCPrinter.cpp4
-rw-r--r--llvm/lib/Target/DarwinTargetAsmInfo.cpp2
-rw-r--r--llvm/lib/Target/ELFTargetAsmInfo.cpp3
-rw-r--r--llvm/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp4
-rw-r--r--llvm/lib/Target/TargetAsmInfo.cpp7
-rw-r--r--llvm/lib/Target/X86/X86TargetAsmInfo.cpp2
10 files changed, 24 insertions, 27 deletions
diff --git a/llvm/include/llvm/CodeGen/AsmPrinter.h b/llvm/include/llvm/CodeGen/AsmPrinter.h
index 931e31a63c6..077f5b1e774 100644
--- a/llvm/include/llvm/CodeGen/AsmPrinter.h
+++ b/llvm/include/llvm/CodeGen/AsmPrinter.h
@@ -92,6 +92,7 @@ namespace llvm {
/// CurrentSection - The current section we are emitting to. This is
/// controlled and used by the SwitchSection method.
std::string CurrentSection;
+ const Section* CurrentSection_;
/// IsInTextSection - True if the current section we are emitting to is a
/// text section.
diff --git a/llvm/include/llvm/Target/TargetAsmInfo.h b/llvm/include/llvm/Target/TargetAsmInfo.h
index 49a99c509e6..6e019fd73b7 100644
--- a/llvm/include/llvm/Target/TargetAsmInfo.h
+++ b/llvm/include/llvm/Target/TargetAsmInfo.h
@@ -131,8 +131,7 @@ namespace llvm {
/// TextSection - Section directive for standard text.
///
- const char *TextSection; // Defaults to ".text".
- const Section *TextSection_;
+ const Section *TextSection; // Defaults to ".text".
/// DataSection - Section directive for standard data.
///
@@ -599,12 +598,9 @@ namespace llvm {
// Accessors.
//
- const char *getTextSection() const {
+ const Section *getTextSection() const {
return TextSection;
}
- const Section *getTextSection_() const {
- return TextSection_;
- }
const char *getDataSection() const {
return DataSection;
}
diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
index 9fc57a9545c..3c25ab73b21 100644
--- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
@@ -114,6 +114,7 @@ void AsmPrinter::SwitchToSection(const Section* NS) {
// FIXME: Make CurrentSection a Section* in the future
CurrentSection = NewSection;
+ CurrentSection_ = NS;
if (!CurrentSection.empty()) {
// If section is named we need to switch into it via special '.section'
@@ -174,7 +175,7 @@ bool AsmPrinter::doFinalization(Module &M) {
if (TAI->getSetDirective()) {
if (!M.alias_empty())
- SwitchToTextSection(TAI->getTextSection());
+ SwitchToSection(TAI->getTextSection());
O << '\n';
for (Module::const_alias_iterator I = M.alias_begin(), E = M.alias_end();
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfWriter.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
index 99e94e2ac04..5d2581f5f3b 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
@@ -1152,7 +1152,7 @@ private:
/// SectionMap - Provides a unique id per text section.
///
- UniqueVector<std::string> SectionMap;
+ UniqueVector<const Section*> SectionMap;
/// SectionSourceLines - Tracks line numbers per text section.
///
@@ -2062,7 +2062,7 @@ private:
Asm->SwitchToDataSection(TAI->getDwarfRangesSection());
EmitLabel("section_ranges", 0);
- Asm->SwitchToTextSection(TAI->getTextSection());
+ Asm->SwitchToSection(TAI->getTextSection());
EmitLabel("text_begin", 0);
Asm->SwitchToDataSection(TAI->getDataSection());
EmitLabel("data_begin", 0);
@@ -2353,9 +2353,10 @@ private:
// Isolate current sections line info.
const std::vector<SourceLineInfo> &LineInfos = SectionSourceLines[j];
- if (VerboseAsm)
- Asm->EOL(std::string("Section ") + SectionMap[j + 1]);
- else
+ if (VerboseAsm) {
+ const Section* S = SectionMap[j + 1];
+ Asm->EOL(std::string("Section ") + S->getName());
+ } else
Asm->EOL();
// Dwarf assumes we start with first line of first source file.
@@ -2747,14 +2748,14 @@ public:
if (!ShouldEmitDwarf()) return;
// Standard sections final addresses.
- Asm->SwitchToTextSection(TAI->getTextSection());
+ Asm->SwitchToSection(TAI->getTextSection());
EmitLabel("text_end", 0);
Asm->SwitchToDataSection(TAI->getDataSection());
EmitLabel("data_end", 0);
// End text sections.
for (unsigned i = 1, N = SectionMap.size(); i <= N; ++i) {
- Asm->SwitchToTextSection(SectionMap[i].c_str());
+ Asm->SwitchToSection(SectionMap[i]);
EmitLabel("section_end", i);
}
@@ -2832,7 +2833,7 @@ public:
if (!LineInfos.empty()) {
// Get section line info.
- unsigned ID = SectionMap.insert(Asm->CurrentSection);
+ unsigned ID = SectionMap.insert(Asm->CurrentSection_);
if (SectionSourceLines.size() < ID) SectionSourceLines.resize(ID);
std::vector<SourceLineInfo> &SectionLineInfos = SectionSourceLines[ID-1];
// Append the function info to section info.
diff --git a/llvm/lib/CodeGen/AsmPrinter/OcamlGCPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter/OcamlGCPrinter.cpp
index 16abca22e11..7f069f699a2 100644
--- a/llvm/lib/CodeGen/AsmPrinter/OcamlGCPrinter.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/OcamlGCPrinter.cpp
@@ -62,7 +62,7 @@ static void EmitCamlGlobal(const Module &M, raw_ostream &OS, AsmPrinter &AP,
void OcamlGCMetadataPrinter::beginAssembly(raw_ostream &OS, AsmPrinter &AP,
const TargetAsmInfo &TAI) {
- AP.SwitchToTextSection(TAI.getTextSection());
+ AP.SwitchToSection(TAI.getTextSection());
EmitCamlGlobal(getModule(), OS, AP, TAI, "code_begin");
AP.SwitchToDataSection(TAI.getDataSection());
@@ -97,7 +97,7 @@ void OcamlGCMetadataPrinter::finishAssembly(raw_ostream &OS, AsmPrinter &AP,
AddressAlignLog = 3;
}
- AP.SwitchToTextSection(TAI.getTextSection());
+ AP.SwitchToSection(TAI.getTextSection());
EmitCamlGlobal(getModule(), OS, AP, TAI, "code_end");
AP.SwitchToDataSection(TAI.getDataSection());
diff --git a/llvm/lib/Target/DarwinTargetAsmInfo.cpp b/llvm/lib/Target/DarwinTargetAsmInfo.cpp
index 2fc1d28d2b6..a5b72e3edd3 100644
--- a/llvm/lib/Target/DarwinTargetAsmInfo.cpp
+++ b/llvm/lib/Target/DarwinTargetAsmInfo.cpp
@@ -82,7 +82,7 @@ DarwinTargetAsmInfo::SelectSectionForGlobal(const GlobalValue *GV) const {
if (isWeak)
return TextCoalSection;
else
- return getTextSection_();
+ return getTextSection();
case SectionKind::Data:
case SectionKind::ThreadData:
case SectionKind::BSS:
diff --git a/llvm/lib/Target/ELFTargetAsmInfo.cpp b/llvm/lib/Target/ELFTargetAsmInfo.cpp
index 9ffc72d2340..4529d0158d9 100644
--- a/llvm/lib/Target/ELFTargetAsmInfo.cpp
+++ b/llvm/lib/Target/ELFTargetAsmInfo.cpp
@@ -27,7 +27,6 @@ using namespace llvm;
ELFTargetAsmInfo::ELFTargetAsmInfo(const TargetMachine &TM) {
ETM = &TM;
- TextSection_ = getUnnamedSection("\t.text", SectionFlags::Code);
DataSection_ = getUnnamedSection("\t.data", SectionFlags::Writeable);
BSSSection_ = getUnnamedSection("\t.bss",
SectionFlags::Writeable | SectionFlags::BSS);
@@ -49,7 +48,7 @@ ELFTargetAsmInfo::SelectSectionForGlobal(const GlobalValue *GV) const {
case Function::InternalLinkage:
case Function::DLLExportLinkage:
case Function::ExternalLinkage:
- return getTextSection_();
+ return getTextSection();
case Function::WeakLinkage:
case Function::LinkOnceLinkage:
std::string Name = UniqueSectionForGlobal(GV, Kind);
diff --git a/llvm/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp b/llvm/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp
index 2d9ecbd71e3..f21cb4e710f 100644
--- a/llvm/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp
+++ b/llvm/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp
@@ -637,7 +637,7 @@ bool PPCLinuxAsmPrinter::doInitialization(Module &M) {
// GNU as handles section names wrapped in quotes
Mang->setUseQuotes(true);
- SwitchToTextSection(TAI->getTextSection());
+ SwitchToSection(TAI->getTextSection());
return Result;
}
@@ -864,7 +864,7 @@ bool PPCDarwinAsmPrinter::doInitialization(Module &M) {
SwitchToTextSection("\t.section __TEXT,__symbol_stub1,symbol_stubs,"
"pure_instructions,16");
}
- SwitchToTextSection(TAI->getTextSection());
+ SwitchToSection(TAI->getTextSection());
return Result;
}
diff --git a/llvm/lib/Target/TargetAsmInfo.cpp b/llvm/lib/Target/TargetAsmInfo.cpp
index 536f16d6578..df540393d5c 100644
--- a/llvm/lib/Target/TargetAsmInfo.cpp
+++ b/llvm/lib/Target/TargetAsmInfo.cpp
@@ -26,8 +26,7 @@
using namespace llvm;
TargetAsmInfo::TargetAsmInfo() :
- TextSection("\t.text"),
- TextSection_(0),
+ TextSection(0),
DataSection("\t.data"),
DataSection_(0),
BSSSection("\t.bss"),
@@ -126,7 +125,7 @@ TargetAsmInfo::TargetAsmInfo() :
DwarfEHFrameSection(".eh_frame"),
DwarfExceptionSection(".gcc_except_table"),
AsmTransCBE(0) {
- TextSection_ = getUnnamedSection(TextSection);
+ TextSection = getUnnamedSection("\t.text", SectionFlags::Code);
DataSection_ = getUnnamedSection(DataSection);
}
@@ -300,7 +299,7 @@ TargetAsmInfo::SelectSectionForGlobal(const GlobalValue *GV) const {
return getNamedSection(Name.c_str(), Flags);
} else {
if (Kind == SectionKind::Text)
- return getTextSection_();
+ return getTextSection();
else if (isBSS(Kind) && getBSSSection_())
return getBSSSection_();
else if (getReadOnlySection_() && SectionKind::isReadOnly(Kind))
diff --git a/llvm/lib/Target/X86/X86TargetAsmInfo.cpp b/llvm/lib/Target/X86/X86TargetAsmInfo.cpp
index 64858f89bd5..9f9e2ed7d68 100644
--- a/llvm/lib/Target/X86/X86TargetAsmInfo.cpp
+++ b/llvm/lib/Target/X86/X86TargetAsmInfo.cpp
@@ -433,7 +433,7 @@ X86WinTargetAsmInfo::X86WinTargetAsmInfo(const X86TargetMachine &TM):
Data64bitsDirective = "\tdq\t";
HasDotTypeDotSizeDirective = false;
- TextSection = "_text";
+ TextSection = getUnnamedSection("_text", SectionFlags::Code);
DataSection = "_data";
JumpTableDataSection = NULL;
SwitchToSectionDirective = "";
OpenPOWER on IntegriCloud