mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-04 18:06:49 +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; }
|
||||
|
||||
/// 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
|
||||
/// we are not already in it!
|
||||
void SwitchToSection(const MCSection *NS);
|
||||
|
@ -78,59 +78,6 @@ TargetLoweringObjectFile &AsmPrinter::getObjFileLowering() const {
|
||||
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
|
||||
/// 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
|
||||
@ -210,7 +157,7 @@ bool AsmPrinter::doInitialization(Module &M) {
|
||||
<< '\n' << TAI->getCommentString()
|
||||
<< " 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() ||
|
||||
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 notice uses in operands (due to constant exprs etc). This should
|
||||
// happen with the MC stuff eventually.
|
||||
SwitchToDataSection("");
|
||||
SwitchToSection(0);
|
||||
|
||||
// Print out module-level global variables here.
|
||||
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';
|
||||
}
|
||||
|
||||
for (Module::const_iterator I = M.begin(), E = M.end();
|
||||
I != E; ++I) {
|
||||
for (Module::const_iterator I = M.begin(), E = M.end(); I != E; ++I) {
|
||||
if (I->hasExternalWeakLinkage())
|
||||
O << TAI->getWeakRefDirective() << Mang->getMangledName(I) << '\n';
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user