Setting SwitchToSectionDirective properly in the MASM backend permits a bunch

of code to be unified.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28191 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2006-05-09 05:23:12 +00:00
parent c9260a1556
commit b81cb6133e

View File

@ -102,34 +102,27 @@ void AsmPrinter::SwitchToTextSection(const char *NewSection,
void AsmPrinter::SwitchToDataSection(const char *NewSection,
const GlobalValue *GV) {
std::string NS;
if (GV && GV->hasSection())
NS = SwitchToSectionDirective + GV->getSection();
else
NS = NewSection;
// If we're already in this section, we're done.
if (CurrentSection == NS) return;
// Microsoft ML/MASM has a fundamentally different approach to handling
// sections.
if (MLSections) {
if (GV && GV->hasSection())
NS = GV->getSection();
else
NS = NewSection;
if (CurrentSection != NS) {
if (!CurrentSection.empty())
O << CurrentSection << "\tends\n\n";
CurrentSection = NS;
if (!CurrentSection.empty())
O << CurrentSection << "\tsegment 'DATA'\n";
}
if (!CurrentSection.empty())
O << CurrentSection << "\tends\n\n";
CurrentSection = NS;
if (!CurrentSection.empty())
O << CurrentSection << "\tsegment 'DATA'\n";
} else {
if (GV && GV->hasSection())
NS = SwitchToSectionDirective + GV->getSection();
else
NS = NewSection;
if (CurrentSection != NS) {
CurrentSection = NS;
if (!CurrentSection.empty())
O << CurrentSection << '\n';
}
CurrentSection = NS;
if (!CurrentSection.empty())
O << CurrentSection << '\n';
}
}