mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-05 10:27:02 +00:00
Kill off SwitchToDataSection and SwitchToTextSection, woo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78015 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7b59e2493d
commit
c6fdced3db
@ -143,34 +143,6 @@ namespace llvm {
|
|||||||
///
|
///
|
||||||
bool isVerbose() const { return VerboseAsm; }
|
bool isVerbose() const { return VerboseAsm; }
|
||||||
|
|
||||||
/// SwitchToTextSection - Switch to the specified section of the executable
|
|
||||||
/// if we are not already in it! If GV is non-null and if the global has an
|
|
||||||
/// explicitly requested section, we switch to the section indicated for the
|
|
||||||
/// global instead of NewSection.
|
|
||||||
///
|
|
||||||
/// If the new section is an empty string, this method forgets what the
|
|
||||||
/// current section is, but does not emit a .section directive.
|
|
||||||
///
|
|
||||||
/// This method is used when about to emit executable code.
|
|
||||||
///
|
|
||||||
void SwitchToTextSection(const char *NewSection,
|
|
||||||
const GlobalValue *GV = NULL);
|
|
||||||
|
|
||||||
/// SwitchToDataSection - Switch to the specified section of the executable
|
|
||||||
/// if we are not already in it! If GV is non-null and if the global has an
|
|
||||||
/// explicitly requested section, we switch to the section indicated for the
|
|
||||||
/// global instead of NewSection.
|
|
||||||
///
|
|
||||||
/// If the new section is an empty string, this method forgets what the
|
|
||||||
/// current section is, but does not emit a .section directive.
|
|
||||||
///
|
|
||||||
/// This method is used when about to emit data. For most assemblers, this
|
|
||||||
/// is the same as the SwitchToTextSection method, but not all assemblers
|
|
||||||
/// are the same.
|
|
||||||
///
|
|
||||||
void SwitchToDataSection(const char *NewSection,
|
|
||||||
const GlobalValue *GV = NULL);
|
|
||||||
|
|
||||||
/// SwitchToSection - Switch to the specified section of the executable if
|
/// SwitchToSection - Switch to the specified section of the executable if
|
||||||
/// we are not already in it!
|
/// we are not already in it!
|
||||||
void SwitchToSection(const MCSection *NS);
|
void SwitchToSection(const MCSection *NS);
|
||||||
|
@ -78,59 +78,6 @@ TargetLoweringObjectFile &AsmPrinter::getObjFileLowering() const {
|
|||||||
return TM.getTargetLowering()->getObjFileLowering();
|
return TM.getTargetLowering()->getObjFileLowering();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// SwitchToTextSection - Switch to the specified text section of the executable
|
|
||||||
/// if we are not already in it!
|
|
||||||
///
|
|
||||||
void AsmPrinter::SwitchToTextSection(const char *NewSection,
|
|
||||||
const GlobalValue *GV) {
|
|
||||||
std::string NS;
|
|
||||||
if (GV && GV->hasSection())
|
|
||||||
NS = TAI->getSwitchToSectionDirective() + GV->getSection();
|
|
||||||
else
|
|
||||||
NS = NewSection;
|
|
||||||
|
|
||||||
// If we're already in this section, we're done.
|
|
||||||
if (CurrentSection == NS) return;
|
|
||||||
|
|
||||||
// Close the current section, if applicable.
|
|
||||||
if (TAI->getSectionEndDirectiveSuffix() && !CurrentSection.empty())
|
|
||||||
O << CurrentSection << TAI->getSectionEndDirectiveSuffix() << '\n';
|
|
||||||
|
|
||||||
CurrentSection = NS;
|
|
||||||
|
|
||||||
if (!CurrentSection.empty())
|
|
||||||
O << CurrentSection << TAI->getTextSectionStartSuffix() << '\n';
|
|
||||||
|
|
||||||
IsInTextSection = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// SwitchToDataSection - Switch to the specified data section of the executable
|
|
||||||
/// if we are not already in it!
|
|
||||||
///
|
|
||||||
void AsmPrinter::SwitchToDataSection(const char *NewSection,
|
|
||||||
const GlobalValue *GV) {
|
|
||||||
std::string NS;
|
|
||||||
if (GV && GV->hasSection())
|
|
||||||
NS = TAI->getSwitchToSectionDirective() + GV->getSection();
|
|
||||||
else
|
|
||||||
NS = NewSection;
|
|
||||||
|
|
||||||
// If we're already in this section, we're done.
|
|
||||||
if (CurrentSection == NS) return;
|
|
||||||
|
|
||||||
// Close the current section, if applicable.
|
|
||||||
if (TAI->getSectionEndDirectiveSuffix() && !CurrentSection.empty())
|
|
||||||
O << CurrentSection << TAI->getSectionEndDirectiveSuffix() << '\n';
|
|
||||||
|
|
||||||
CurrentSection = NS;
|
|
||||||
|
|
||||||
if (!CurrentSection.empty())
|
|
||||||
O << CurrentSection << TAI->getDataSectionStartSuffix() << '\n';
|
|
||||||
|
|
||||||
IsInTextSection = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// SwitchToSection - Switch to the specified section of the executable if we
|
/// SwitchToSection - Switch to the specified section of the executable if we
|
||||||
/// are not already in it! If "NS" is null, then this causes us to exit the
|
/// are not already in it! If "NS" is null, then this causes us to exit the
|
||||||
/// current section and not reenter another one. This is generally used for
|
/// current section and not reenter another one. This is generally used for
|
||||||
@ -210,7 +157,7 @@ bool AsmPrinter::doInitialization(Module &M) {
|
|||||||
<< '\n' << TAI->getCommentString()
|
<< '\n' << TAI->getCommentString()
|
||||||
<< " End of file scope inline assembly\n";
|
<< " End of file scope inline assembly\n";
|
||||||
|
|
||||||
SwitchToDataSection(""); // Reset back to no section.
|
SwitchToSection(0); // Reset back to no section to close off sections.
|
||||||
|
|
||||||
if (TAI->doesSupportDebugInformation() ||
|
if (TAI->doesSupportDebugInformation() ||
|
||||||
TAI->doesSupportExceptionHandling()) {
|
TAI->doesSupportExceptionHandling()) {
|
||||||
@ -241,7 +188,7 @@ bool AsmPrinter::doFinalization(Module &M) {
|
|||||||
// to stuff that is actually used. Note that doing so would require targets
|
// to stuff that is actually used. Note that doing so would require targets
|
||||||
// to notice uses in operands (due to constant exprs etc). This should
|
// to notice uses in operands (due to constant exprs etc). This should
|
||||||
// happen with the MC stuff eventually.
|
// happen with the MC stuff eventually.
|
||||||
SwitchToDataSection("");
|
SwitchToSection(0);
|
||||||
|
|
||||||
// Print out module-level global variables here.
|
// Print out module-level global variables here.
|
||||||
for (Module::const_global_iterator I = M.global_begin(), E = M.global_end();
|
for (Module::const_global_iterator I = M.global_begin(), E = M.global_end();
|
||||||
@ -250,8 +197,7 @@ bool AsmPrinter::doFinalization(Module &M) {
|
|||||||
O << TAI->getWeakRefDirective() << Mang->getMangledName(I) << '\n';
|
O << TAI->getWeakRefDirective() << Mang->getMangledName(I) << '\n';
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Module::const_iterator I = M.begin(), E = M.end();
|
for (Module::const_iterator I = M.begin(), E = M.end(); I != E; ++I) {
|
||||||
I != E; ++I) {
|
|
||||||
if (I->hasExternalWeakLinkage())
|
if (I->hasExternalWeakLinkage())
|
||||||
O << TAI->getWeakRefDirective() << Mang->getMangledName(I) << '\n';
|
O << TAI->getWeakRefDirective() << Mang->getMangledName(I) << '\n';
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user