forked from OSchip/llvm-project
Move getSectionForFunction to AsmPrinter, change it to return a string.
llvm-svn: 30735
This commit is contained in:
parent
0dca927148
commit
028d663ee6
|
@ -238,7 +238,6 @@ namespace {
|
|||
|
||||
virtual bool runOnMachineFunction(MachineFunction &F) = 0;
|
||||
virtual bool doFinalization(Module &M) = 0;
|
||||
|
||||
};
|
||||
|
||||
/// DarwinAsmPrinter - PowerPC assembly printer, customized for Darwin/Mac OS
|
||||
|
@ -267,6 +266,9 @@ namespace {
|
|||
PPCAsmPrinter::getAnalysisUsage(AU);
|
||||
}
|
||||
|
||||
/// getSectionForFunction - Return the section that we should emit the
|
||||
/// specified function body into.
|
||||
virtual std::string getSectionForFunction(const Function &F) const;
|
||||
};
|
||||
} // end of anonymous namespace
|
||||
|
||||
|
@ -408,6 +410,19 @@ void PPCAsmPrinter::printMachineInstruction(const MachineInstr *MI) {
|
|||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
std::string DarwinAsmPrinter::getSectionForFunction(const Function &F) const {
|
||||
switch (F.getLinkage()) {
|
||||
default: assert(0 && "Unknown linkage type!");
|
||||
case Function::ExternalLinkage:
|
||||
case Function::InternalLinkage: return TAI->getTextSection();
|
||||
case Function::WeakLinkage:
|
||||
case Function::LinkOnceLinkage:
|
||||
return ".section __TEXT,__textcoal_nt,coalesced,pure_instructions";
|
||||
}
|
||||
}
|
||||
|
||||
/// runOnMachineFunction - This uses the printMachineInstruction()
|
||||
/// method to print assembly for each instruction.
|
||||
///
|
||||
|
@ -422,7 +437,7 @@ bool DarwinAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
|
|||
|
||||
// Print out labels for the function.
|
||||
const Function *F = MF.getFunction();
|
||||
SwitchToTextSection(TAI->getSectionForFunction(*F), F);
|
||||
SwitchToTextSection(getSectionForFunction(*F).c_str(), F);
|
||||
|
||||
switch (F->getLinkage()) {
|
||||
default: assert(0 && "Unknown linkage type!");
|
||||
|
|
|
@ -51,14 +51,3 @@ DarwinTargetAsmInfo::DarwinTargetAsmInfo(const PPCTargetMachine &TM) {
|
|||
DwarfMacInfoSection = ".section __DWARF,__debug_macinfo";
|
||||
}
|
||||
|
||||
|
||||
const char *DarwinTargetAsmInfo::getSectionForFunction(const Function &F) const{
|
||||
switch (F.getLinkage()) {
|
||||
default: assert(0 && "Unknown linkage type!");
|
||||
case Function::ExternalLinkage:
|
||||
case Function::InternalLinkage: return TextSection;
|
||||
case Function::WeakLinkage:
|
||||
case Function::LinkOnceLinkage:
|
||||
return ".section __TEXT,__textcoal_nt,coalesced,pure_instructions";
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,12 +23,6 @@ namespace llvm {
|
|||
|
||||
struct DarwinTargetAsmInfo : public TargetAsmInfo {
|
||||
DarwinTargetAsmInfo(const PPCTargetMachine &TM);
|
||||
|
||||
/// getSectionForFunction - Return the section that we should emit the
|
||||
/// specified function body into. This defaults to 'TextSection'. This
|
||||
/// should most likely be overridden by the target to put linkonce/weak
|
||||
/// functions into special sections.
|
||||
virtual const char *getSectionForFunction(const Function &F) const;
|
||||
};
|
||||
|
||||
} // namespace llvm
|
||||
|
|
Loading…
Reference in New Issue