OSDN Git Service

Move getSectionForFunction to AsmPrinter, change it to return a string.
authorChris Lattner <sabre@nondot.org>
Thu, 5 Oct 2006 02:42:20 +0000 (02:42 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 5 Oct 2006 02:42:20 +0000 (02:42 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30735 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/PowerPC/PPCAsmPrinter.cpp
lib/Target/PowerPC/PPCTargetAsmInfo.cpp
lib/Target/PowerPC/PPCTargetAsmInfo.h

index 252109a..b7e7f28 100644 (file)
@@ -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!");
index f767a44..02ba912 100644 (file)
@@ -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";
-  }
-}
index 6188862..ed8574c 100644 (file)
@@ -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