pass the mangler down into the various SectionForGlobal methods.
authorChris Lattner <sabre@nondot.org>
Wed, 29 Jul 2009 05:09:30 +0000 (05:09 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 29 Jul 2009 05:09:30 +0000 (05:09 +0000)
No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77432 91177308-0d34-0410-b5e6-96231b3b80d8

17 files changed:
include/llvm/Target/TargetLoweringObjectFile.h
lib/CodeGen/AsmPrinter/AsmPrinter.cpp
lib/CodeGen/ELFWriter.cpp
lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
lib/Target/Alpha/AsmPrinter/AlphaAsmPrinter.cpp
lib/Target/CellSPU/AsmPrinter/SPUAsmPrinter.cpp
lib/Target/MSP430/MSP430AsmPrinter.cpp
lib/Target/Mips/AsmPrinter/MipsAsmPrinter.cpp
lib/Target/PIC16/PIC16AsmPrinter.cpp
lib/Target/PIC16/PIC16TargetObjectFile.cpp
lib/Target/PIC16/PIC16TargetObjectFile.h
lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp
lib/Target/Sparc/AsmPrinter/SparcAsmPrinter.cpp
lib/Target/SystemZ/AsmPrinter/SystemZAsmPrinter.cpp
lib/Target/TargetLoweringObjectFile.cpp
lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp
lib/Target/XCore/XCoreAsmPrinter.cpp

index 03bc5a09328853fb3c786ba39ce7af3d0a359b24..433a4f9ae36f434d5b05745c16e4c43be71f717d 100644 (file)
@@ -88,6 +88,7 @@ public:
   /// the specified global variable or function definition.  This should not
   /// be passed external (or available externally) globals.
   const Section *SectionForGlobal(const GlobalValue *GV,
+                                  Mangler *Mang,
                                   const TargetMachine &TM) const;
   
   /// getSpecialCasedSectionGlobals - Allow the target to completely override
@@ -95,7 +96,7 @@ public:
   /// FIXME: ELIMINATE this by making PIC16 implement ADDRESS with
   /// getFlagsForNamedSection.
   virtual const Section *
-  getSpecialCasedSectionGlobals(const GlobalValue *GV,
+  getSpecialCasedSectionGlobals(const GlobalValue *GV, Mangler *Mang,
                                 SectionKind Kind) const {
     return 0;
   }
@@ -108,9 +109,9 @@ public:
   }
   
 protected:
-  virtual const Section *SelectSectionForGlobal(const GlobalValue *GV,
-                                                SectionKind Kind,
-                                                const TargetMachine &TM) const;
+  virtual const Section *
+  SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind,
+                         Mangler *Mang, const TargetMachine &TM) const;
 };
   
   
@@ -136,9 +137,9 @@ public:
   void getSectionFlagsAsString(SectionKind Kind,
                                SmallVectorImpl<char> &Str) const;
   
-  virtual const Section* SelectSectionForGlobal(const GlobalValue *GV,
-                                                SectionKind Kind,
-                                                const TargetMachine &TM) const;
+  virtual const Section *
+  SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind,
+                         Mangler *Mang, const TargetMachine &TM) const;
 protected:
   const Section *DataRelSection;
   const Section *DataRelLocalSection;
@@ -161,9 +162,9 @@ class TargetLoweringObjectFileMachO : public TargetLoweringObjectFile {
   const Section *SixteenByteConstantSection;
 public:
   TargetLoweringObjectFileMachO(const TargetMachine &TM);
-  virtual const Section *SelectSectionForGlobal(const GlobalValue *GV,
-                                                SectionKind Kind,
-                                                const TargetMachine &TM) const;
+  virtual const Section *
+  SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind,
+                         Mangler *Mang, const TargetMachine &TM) const;
   
   virtual const Section *
   getSectionForMergeableConstant(SectionKind Kind) const;
@@ -179,7 +180,7 @@ public:
   
   virtual const Section *
   SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind,
-                         const TargetMachine &TM) const;
+                         Mangler *Mang, const TargetMachine &TM) const;
 };
 
 } // end namespace llvm
index c9b500df08a4dd991bc50578e30111c437f1dcf6..441f8057c8b82141974cf016eb074861cfec2cd2 100644 (file)
@@ -412,10 +412,11 @@ void AsmPrinter::EmitJumpTableInfo(MachineJumpTableInfo *MJTI,
   // the appropriate section.
   TargetLowering *LoweringInfo = TM.getTargetLowering();
 
-  const charJumpTableDataSection = TAI->getJumpTableDataSection();
+  const char *JumpTableDataSection = TAI->getJumpTableDataSection();
   const Function *F = MF.getFunction();
   
-  const Section *FuncSection = getObjFileLowering().SectionForGlobal(F, TM);
+  const Section *FuncSection =
+    getObjFileLowering().SectionForGlobal(F, Mang, TM);
 
   bool JTInDiffSection = false;
   if ((IsPic && !(LoweringInfo && LoweringInfo->usesGlobalOffsetTable())) ||
index 5587b52023789f4865aa1027bacf451fc0324a2b..bf2d0bd94cf662cff793d85e3370d45755f2baf8 100644 (file)
@@ -326,7 +326,7 @@ void ELFWriter::EmitGlobal(const GlobalValue *GV) {
       TM.getTargetLowering()->getObjFileLowering();
 
     // Get the ELF section where this global belongs from TLOF
-    const Section *S = TLOF.SectionForGlobal(GV, TM);
+    const Section *S = TLOF.SectionForGlobal(GV, Mang, TM);
     unsigned SectionFlags = getElfSectionFlags(S->getKind());
 
     // The symbol align should update the section alignment if needed
index f82cee35aff01c5c8b8552610e17f19e83156926..a64c5453385878320f861a8e0bbae103962160a3 100644 (file)
@@ -1153,7 +1153,8 @@ void ARMAsmPrinter::PrintGlobalVariable(const GlobalVariable* GVar) {
   if (Subtarget->isTargetELF())
     O << "\t.type " << name << ",%object\n";
   
-  const Section *TheSection = getObjFileLowering().SectionForGlobal(GVar, TM);
+  const Section *TheSection =
+    getObjFileLowering().SectionForGlobal(GVar, Mang, TM);
   SwitchToSection(TheSection);
 
   // FIXME: get this stuff from section kind flags.
@@ -1180,7 +1181,7 @@ void ARMAsmPrinter::PrintGlobalVariable(const GlobalVariable* GVar) {
           O << TAI->getCOMMDirective()  << name << "," << Size
             << ',' << Align;
         } else {
-          SwitchToSection(getObjFileLowering().SectionForGlobal(GVar, TM));
+          SwitchToSection(getObjFileLowering().SectionForGlobal(GVar, Mang,TM));
           O << "\t.globl " << name << '\n'
             << TAI->getWeakDefDirective() << name << '\n';
           EmitAlignment(Align, GVar);
index a88396c425efd58d93f57d639fb0d3808bafdb74..7cc6a1e9b9e4c750a19de229f34e31c7c76e8e8c 100644 (file)
@@ -139,7 +139,7 @@ bool AlphaAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
 
   // Print out labels for the function.
   const Function *F = MF.getFunction();
-  SwitchToSection(getObjFileLowering().SectionForGlobal(F, TM));
+  SwitchToSection(getObjFileLowering().SectionForGlobal(F, Mang, TM));
 
   EmitAlignment(MF.getAlignment(), F);
   switch (F->getLinkage()) {
@@ -215,7 +215,7 @@ void AlphaAsmPrinter::PrintGlobalVariable(const GlobalVariable *GVar) {
   unsigned Align = TD->getPreferredAlignmentLog(GVar);
 
   // 0: Switch to section
-  SwitchToSection(getObjFileLowering().SectionForGlobal(GVar, TM));
+  SwitchToSection(getObjFileLowering().SectionForGlobal(GVar, Mang, TM));
 
   // 1: Check visibility
   printVisibility(name, GVar->getVisibility());
index bdf0808d8cd9b00f8e05d8457614da335c2341fc..a6ed466fedf0ee632997c14751539d1724a8bc37 100644 (file)
@@ -428,7 +428,7 @@ LinuxAsmPrinter::runOnMachineFunction(MachineFunction &MF)
   // Print out labels for the function.
   const Function *F = MF.getFunction();
 
-  SwitchToSection(getObjFileLowering().SectionForGlobal(F, TM));
+  SwitchToSection(getObjFileLowering().SectionForGlobal(F, Mang, TM));
   EmitAlignment(MF.getAlignment(), F);
 
   switch (F->getLinkage()) {
@@ -526,7 +526,7 @@ void LinuxAsmPrinter::PrintGlobalVariable(const GlobalVariable *GVar) {
   unsigned Size = TD->getTypeAllocSize(Type);
   unsigned Align = TD->getPreferredAlignmentLog(GVar);
 
-  SwitchToSection(getObjFileLowering().SectionForGlobal(GVar, TM));
+  SwitchToSection(getObjFileLowering().SectionForGlobal(GVar, Mang, TM));
 
   if (C->isNullValue() && /* FIXME: Verify correct */
       !GVar->hasSection() &&
index 81bc81b52de81d80d3f891365da42176b17f4b14..e357761705ac4b59dba0666a94cbb1b631ff0f64 100644 (file)
@@ -78,7 +78,7 @@ namespace {
 void MSP430AsmPrinter::emitFunctionHeader(const MachineFunction &MF) {
   const Function *F = MF.getFunction();
 
-  SwitchToSection(getObjFileLowering().SectionForGlobal(F, TM));
+  SwitchToSection(getObjFileLowering().SectionForGlobal(F, Mang, TM));
 
   unsigned FnAlign = MF.getAlignment();
   EmitAlignment(FnAlign, F);
index d1fec14bc00123abb3434e34906adb5669a5ecc5..2c5724e68a52866a6e1459e10cabf02006981800 100644 (file)
@@ -178,9 +178,7 @@ printHex32(unsigned int Value)
 //===----------------------------------------------------------------------===//
 
 /// Frame Directive
-void MipsAsmPrinter::
-emitFrameDirective(MachineFunction &MF)
-{
+void MipsAsmPrinter::emitFrameDirective(MachineFunction &MF) {
   const TargetRegisterInfo &RI = *TM.getRegisterInfo();
 
   unsigned stackReg  = RI.getFrameRegister(MF);
@@ -195,9 +193,7 @@ emitFrameDirective(MachineFunction &MF)
 }
 
 /// Emit Set directives.
-const char * MipsAsmPrinter::
-emitCurrentABIString(void) 
-{  
+const char *MipsAsmPrinter::emitCurrentABIString() {  
   switch(Subtarget->getTargetABI()) {
     case MipsSubtarget::O32:  return "abi32";  
     case MipsSubtarget::O64:  return "abiO64";
@@ -215,7 +211,7 @@ emitCurrentABIString(void)
 void MipsAsmPrinter::emitFunctionStart(MachineFunction &MF) {
   // Print out the label for the function.
   const Function *F = MF.getFunction();
-  SwitchToSection(getObjFileLowering().SectionForGlobal(F, TM));
+  SwitchToSection(getObjFileLowering().SectionForGlobal(F, Mang, TM));
 
   // 2 bits aligned
   EmitAlignment(MF.getAlignment(), F);
@@ -237,9 +233,7 @@ void MipsAsmPrinter::emitFunctionStart(MachineFunction &MF) {
 }
 
 /// Emit the directives used by GAS on the end of functions
-void MipsAsmPrinter::
-emitFunctionEnd(MachineFunction &MF) 
-{
+void MipsAsmPrinter::emitFunctionEnd(MachineFunction &MF) {
   // There are instruction for this macros, but they must
   // always be at the function end, and we can't emit and
   // break with BB logic. 
@@ -253,9 +247,7 @@ emitFunctionEnd(MachineFunction &MF)
 
 /// runOnMachineFunction - This uses the printMachineInstruction()
 /// method to print assembly for each instruction.
-bool MipsAsmPrinter::
-runOnMachineFunction(MachineFunction &MF) 
-{
+bool MipsAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
   this->MF = &MF;
 
   SetupMachineFunction(MF);
@@ -300,10 +292,8 @@ runOnMachineFunction(MachineFunction &MF)
 }
 
 // Print out an operand for an inline asm expression.
-bool MipsAsmPrinter::
-PrintAsmOperand(const MachineInstr *MI, unsigned OpNo, 
-                unsigned AsmVariant, const char *ExtraCode) 
-{
+bool MipsAsmPrinter::PrintAsmOperand(const MachineInstr *MI, unsigned OpNo, 
+                                     unsigned AsmVariant,const char *ExtraCode){
   // Does this asm operand have a single letter operand modifier?
   if (ExtraCode && ExtraCode[0]) 
     return true; // Unknown modifier.
@@ -312,9 +302,7 @@ PrintAsmOperand(const MachineInstr *MI, unsigned OpNo,
   return false;
 }
 
-void MipsAsmPrinter::
-printOperand(const MachineInstr *MI, int opNum) 
-{
+void MipsAsmPrinter::printOperand(const MachineInstr *MI, int opNum) {
   const MachineOperand &MO = MI->getOperand(opNum);
   const TargetRegisterInfo  &RI = *TM.getRegisterInfo();
   bool closeP = false;
@@ -398,8 +386,7 @@ printOperand(const MachineInstr *MI, int opNum)
   if (closeP) O << ")";
 }
 
-void MipsAsmPrinter::
-printUnsignedImm(const MachineInstr *MI, int opNum) {
+void MipsAsmPrinter::printUnsignedImm(const MachineInstr *MI, int opNum) {
   const MachineOperand &MO = MI->getOperand(opNum);
   if (MO.getType() == MachineOperand::MO_Immediate)
     O << (unsigned short int)MO.getImm();
@@ -484,7 +471,7 @@ void MipsAsmPrinter::PrintGlobalVariable(const GlobalVariable *GVar) {
 
   printVisibility(name, GVar->getVisibility());
 
-  SwitchToSection(getObjFileLowering().SectionForGlobal(GVar, TM));
+  SwitchToSection(getObjFileLowering().SectionForGlobal(GVar, Mang, TM));
 
   if (C->isNullValue() && !GVar->hasSection()) {
     if (!GVar->isThreadLocal() &&
index 453dd27c925c3273b28022b6f7d7ceb5e0f4edf0..4a35a1e28792002f4b0d1037a98af4d7264982e7 100644 (file)
@@ -223,7 +223,7 @@ bool PIC16AsmPrinter::doInitialization(Module &M) {
   // Set the section names for all globals.
   for (Module::global_iterator I = M.global_begin(), E = M.global_end();
        I != E; ++I)
-    I->setSection(getObjFileLowering().SectionForGlobal(I, TM)->getName());
+    I->setSection(getObjFileLowering().SectionForGlobal(I, Mang,TM)->getName());
 
   DbgInfo.BeginModule(M);
   EmitFunctionDecls(M);
index efc03acce93849585a5c08059e8daf862ba07a23..feec2fd6866cedadb77d60512a5fcacdd14f55e9 100644 (file)
@@ -165,12 +165,13 @@ PIC16TargetObjectFile::getSectionForAuto(const GlobalVariable *GV) const {
 const Section*
 PIC16TargetObjectFile::SelectSectionForGlobal(const GlobalValue *GV1,
                                               SectionKind Kind,
+                                              Mangler *Mang,
                                               const TargetMachine &TM) const {
   // We select the section based on the initializer here, so it really
   // has to be a GlobalVariable.
   const GlobalVariable *GV = dyn_cast<GlobalVariable>(GV1); 
   if (!GV)
-    return TargetLoweringObjectFile::SelectSectionForGlobal(GV1, Kind, TM);
+    return TargetLoweringObjectFile::SelectSectionForGlobal(GV1, Kind, Mang,TM);
 
   // Record External Var Decls.
   if (GV->isDeclaration()) {
@@ -204,7 +205,7 @@ PIC16TargetObjectFile::SelectSectionForGlobal(const GlobalValue *GV1,
     return getROSectionForGlobal(GV);
 
   // Else let the default implementation take care of it.
-  return TargetLoweringObjectFile::SelectSectionForGlobal(GV, Kind, TM);
+  return TargetLoweringObjectFile::SelectSectionForGlobal(GV, Kind, Mang,TM);
 }
 
 PIC16TargetObjectFile::~PIC16TargetObjectFile() {
@@ -225,6 +226,7 @@ PIC16TargetObjectFile::~PIC16TargetObjectFile() {
 /// section assignment of a global.
 const Section *
 PIC16TargetObjectFile::getSpecialCasedSectionGlobals(const GlobalValue *GV,
+                                                     Mangler *Mang,
                                                      SectionKind Kind) const {
   // If GV has a sectin name or section address create that section now.
   if (GV->hasSection()) {
@@ -235,11 +237,11 @@ PIC16TargetObjectFile::getSpecialCasedSectionGlobals(const GlobalValue *GV,
       std::string AddrStr = "Address=";
       if (SectName.compare(0, AddrStr.length(), AddrStr) == 0) {
         std::string SectAddr = SectName.substr(AddrStr.length());
-        return CreateSectionForGlobal(GVar, SectAddr);
+        return CreateSectionForGlobal(GVar, Mang, SectAddr);
       }
        
       // Create the section specified with section attribute. 
-      return CreateSectionForGlobal(GVar);
+      return CreateSectionForGlobal(GVar, Mang);
     }
   }
 
@@ -250,6 +252,7 @@ PIC16TargetObjectFile::getSpecialCasedSectionGlobals(const GlobalValue *GV,
 // section at that address else create by name.
 const Section *
 PIC16TargetObjectFile::CreateSectionForGlobal(const GlobalVariable *GV,
+                                              Mangler *Mang,
                                               const std::string &Addr) const {
   // See if this is an uninitialized global.
   const Constant *C = GV->getInitializer();
@@ -265,7 +268,7 @@ PIC16TargetObjectFile::CreateSectionForGlobal(const GlobalVariable *GV,
     return CreateROSectionForGlobal(GV, Addr);
 
   // Else let the default implementation take care of it.
-  return TargetLoweringObjectFile::SectionForGlobal(GV, TM);
+  return TargetLoweringObjectFile::SectionForGlobal(GV, Mang, TM);
 }
 
 // Create uninitialized section for a variable.
index 77aea7804b34f2587d6db7552e54b35df9f4a3ba..336730d2e62b855cd438307885160da945263eff 100644 (file)
@@ -59,10 +59,11 @@ namespace llvm {
     /// getSpecialCasedSectionGlobals - Allow the target to completely override
     /// section assignment of a global.
     virtual const Section *
-    getSpecialCasedSectionGlobals(const GlobalValue *GV,
+    getSpecialCasedSectionGlobals(const GlobalValue *GV, Mangler *Mang,
                                   SectionKind Kind) const;
     virtual const Section *SelectSectionForGlobal(const GlobalValue *GV,
                                                   SectionKind Kind,
+                                                  Mangler *Mang,
                                                   const TargetMachine&) const;
   private:
     std::string getSectionNameForSym(const std::string &Sym) const;
@@ -78,6 +79,7 @@ namespace llvm {
     const Section *CreateROSectionForGlobal(const GlobalVariable *GV,
                                             std::string Addr = "") const;
     const Section *CreateSectionForGlobal(const GlobalVariable *GV,
+                                          Mangler *Mang,
                                           const std::string &Addr = "") const;
   public:
     void SetSectionForGVs(Module &M);
index 97d4f7a1a629b70432cf2695d45a9df437f2270b..d01afb6732bc67565bb4869d221eaf4bca7d6977 100644 (file)
@@ -591,7 +591,7 @@ bool PPCLinuxAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
 
   // Print out labels for the function.
   const Function *F = MF.getFunction();
-  SwitchToSection(getObjFileLowering().SectionForGlobal(F, TM));
+  SwitchToSection(getObjFileLowering().SectionForGlobal(F, Mang, TM));
 
   switch (F->getLinkage()) {
   default: llvm_unreachable("Unknown linkage type!");
@@ -640,7 +640,7 @@ bool PPCLinuxAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
   // Print out jump tables referenced by the function.
   EmitJumpTableInfo(MF.getJumpTableInfo(), MF);
 
-  SwitchToSection(getObjFileLowering().SectionForGlobal(F, TM));
+  SwitchToSection(getObjFileLowering().SectionForGlobal(F, Mang, TM));
 
   // Emit post-function debug information.
   DW->EndFunction(&MF);
@@ -682,7 +682,7 @@ void PPCLinuxAsmPrinter::PrintGlobalVariable(const GlobalVariable *GVar) {
   unsigned Size = TD->getTypeAllocSize(Type);
   unsigned Align = TD->getPreferredAlignmentLog(GVar);
 
-  SwitchToSection(getObjFileLowering().SectionForGlobal(GVar, TM));
+  SwitchToSection(getObjFileLowering().SectionForGlobal(GVar, Mang, TM));
 
   if (C->isNullValue() && /* FIXME: Verify correct */
       !GVar->hasSection() &&
@@ -763,7 +763,7 @@ bool PPCDarwinAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
 
   // Print out labels for the function.
   const Function *F = MF.getFunction();
-  SwitchToSection(getObjFileLowering().SectionForGlobal(F, TM));
+  SwitchToSection(getObjFileLowering().SectionForGlobal(F, Mang, TM));
 
   switch (F->getLinkage()) {
   default: llvm_unreachable("Unknown linkage type!");
@@ -892,7 +892,8 @@ void PPCDarwinAsmPrinter::PrintGlobalVariable(const GlobalVariable *GVar) {
   unsigned Size = TD->getTypeAllocSize(Type);
   unsigned Align = TD->getPreferredAlignmentLog(GVar);
 
-  const Section *TheSection = getObjFileLowering().SectionForGlobal(GVar, TM);
+  const Section *TheSection =
+    getObjFileLowering().SectionForGlobal(GVar, Mang, TM);
   SwitchToSection(TheSection);
 
   if (C->isNullValue() && /* FIXME: Verify correct */
index a4eba87fed1ef88a3d8bb64af13d5579bed00f14..1e31487a938d661274b9633f17d9d53a3bd8d717 100644 (file)
@@ -96,7 +96,7 @@ bool SparcAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
 
   // Print out the label for the function.
   const Function *F = MF.getFunction();
-  SwitchToSection(getObjFileLowering().SectionForGlobal(F, TM));
+  SwitchToSection(getObjFileLowering().SectionForGlobal(F, Mang, TM));
   EmitAlignment(MF.getAlignment(), F);
   O << "\t.globl\t" << CurrentFnName << '\n';
 
@@ -230,7 +230,7 @@ void SparcAsmPrinter::PrintGlobalVariable(const GlobalVariable* GVar) {
 
   printVisibility(name, GVar->getVisibility());
 
-  SwitchToSection(getObjFileLowering().SectionForGlobal(GVar, TM));
+  SwitchToSection(getObjFileLowering().SectionForGlobal(GVar, Mang, TM));
 
   if (C->isNullValue() && !GVar->hasSection()) {
     if (!GVar->isThreadLocal() &&
index 9a9a4b75083e236eea235943a93480d818d17feb..ef64eb87cae5a2c7eefbd5e3b202e10c8857a42c 100644 (file)
@@ -83,7 +83,7 @@ void SystemZAsmPrinter::emitFunctionHeader(const MachineFunction &MF) {
   unsigned FnAlign = MF.getAlignment();
   const Function *F = MF.getFunction();
 
-  SwitchToSection(getObjFileLowering().SectionForGlobal(F, TM));
+  SwitchToSection(getObjFileLowering().SectionForGlobal(F, Mang, TM));
 
   EmitAlignment(FnAlign, F);
 
@@ -331,7 +331,7 @@ void SystemZAsmPrinter::PrintGlobalVariable(const GlobalVariable* GVar) {
 
   O << "\t.type\t" << name << ",@object\n";
 
-  SwitchToSection(getObjFileLowering().SectionForGlobal(GVar, TM));
+  SwitchToSection(getObjFileLowering().SectionForGlobal(GVar, Mang, TM));
 
   if (C->isNullValue() && !GVar->hasSection() &&
       !GVar->isThreadLocal() &&
index bbcf53df980366a62e8beae68e2891214a7b2372..4f07f9036a8ed5fdfd2889386c13540d649fa0bc 100644 (file)
@@ -176,7 +176,8 @@ static SectionKind::Kind SectionKindForGlobal(const GlobalValue *GV,
 /// the specified global variable or function definition.  This should not
 /// be passed external (or available externally) globals.
 const Section *TargetLoweringObjectFile::
-SectionForGlobal(const GlobalValue *GV, const TargetMachine &TM) const {
+SectionForGlobal(const GlobalValue *GV, Mangler *Mang,
+                 const TargetMachine &TM) const {
   assert(!GV->isDeclaration() && !GV->hasAvailableExternallyLinkage() &&
          "Can only be used for global definitions");
   
@@ -190,7 +191,7 @@ SectionForGlobal(const GlobalValue *GV, const TargetMachine &TM) const {
   if (GV->hasSection()) {
     // If the target has special section hacks for specifically named globals,
     // return them now.
-    if (const Section *TS = getSpecialCasedSectionGlobals(GV, Kind))
+    if (const Section *TS = getSpecialCasedSectionGlobals(GV, Mang, Kind))
       return TS;
     
     // If the target has magic semantics for certain section names, make sure to
@@ -203,13 +204,14 @@ SectionForGlobal(const GlobalValue *GV, const TargetMachine &TM) const {
 
   
   // Use default section depending on the 'type' of global
-  return SelectSectionForGlobal(GV, Kind, TM);
+  return SelectSectionForGlobal(GV, Kind, Mang, TM);
 }
 
 // Lame default implementation. Calculate the section name for global.
 const Section*
 TargetLoweringObjectFile::SelectSectionForGlobal(const GlobalValue *GV,
                                                  SectionKind Kind,
+                                                 Mangler *Mang,
                                                  const TargetMachine &TM) const{
   assert(!Kind.isThreadLocal() && "Doesn't support TLS");
   
@@ -399,7 +401,7 @@ static const char *getSectionPrefixForUniqueGlobal(SectionKind Kind) {
 
 const Section *TargetLoweringObjectFileELF::
 SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind,
-                       const TargetMachine &TM) const {
+                       Mangler *Mang, const TargetMachine &TM) const {
   
   // If this global is linkonce/weak and the target handles this by emitting it
   // into a 'uniqued' section name, create and return the section now.
@@ -411,6 +413,7 @@ SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind,
   }
   
   if (Kind.isText()) return TextSection;
+  
   if (Kind.isMergeableCString()) {
    assert(CStringSection_ && "Should have string section prefix");
     
@@ -510,10 +513,9 @@ TargetLoweringObjectFileMachO(const TargetMachine &TM) {
                                        false, SectionKind::DataRel);
 }
 
-const Section *
-TargetLoweringObjectFileMachO::SelectSectionForGlobal(const GlobalValue *GV,
-                                                      SectionKind Kind,
-                                                const TargetMachine &TM) const {
+const Section *TargetLoweringObjectFileMachO::
+SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind,
+                       Mangler *Mang, const TargetMachine &TM) const {
   assert(!Kind.isThreadLocal() && "Darwin doesn't support TLS");
   
   if (Kind.isText())
@@ -616,7 +618,7 @@ static const char *getCOFFSectionPrefixForUniqueGlobal(SectionKind Kind) {
 
 const Section *TargetLoweringObjectFileCOFF::
 SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind,
-                       const TargetMachine &TM) const {
+                       Mangler *Mang, const TargetMachine &TM) const {
   assert(!Kind.isThreadLocal() && "Doesn't support TLS");
   
   // If this global is linkonce/weak and the target handles this by emitting it
index 4b6fe36d93ee97986749fd07b8f5d0d2b8beb9e5..c7b0e27df46c090d9dbb1131522badd34977589e 100644 (file)
@@ -167,7 +167,7 @@ void X86ATTAsmPrinter::emitFunctionHeader(const MachineFunction &MF) {
   if (Subtarget->isTargetCygMing())
     DecorateCygMingName(CurrentFnName, F);
 
-  SwitchToSection(getObjFileLowering().SectionForGlobal(F, TM));
+  SwitchToSection(getObjFileLowering().SectionForGlobal(F, Mang, TM));
   switch (F->getLinkage()) {
   default: llvm_unreachable("Unknown linkage type!");
   case Function::InternalLinkage:  // Symbols default to internal.
@@ -783,7 +783,8 @@ void X86ATTAsmPrinter::PrintGlobalVariable(const GlobalVariable* GVar) {
   if (Subtarget->isTargetELF())
     O << "\t.type\t" << name << ",@object\n";
 
-  const Section *TheSection = getObjFileLowering().SectionForGlobal(GVar, TM);
+  const Section *TheSection =
+    getObjFileLowering().SectionForGlobal(GVar, Mang, TM);
   SwitchToSection(TheSection);
 
   if (C->isNullValue() && !GVar->hasSection() &&
index d57151c0264584d07313d9edc659a5fb899b5d48..dc312129d2362e8d3bbbdea2dc94d164c5ff84c4 100644 (file)
@@ -134,7 +134,7 @@ void XCoreAsmPrinter::PrintGlobalVariable(const GlobalVariable *GV) {
 
   const TargetData *TD = TM.getTargetData();
   
-  SwitchToSection(getObjFileLowering().SectionForGlobal(GV, TM));
+  SwitchToSection(getObjFileLowering().SectionForGlobal(GV, Mang, TM));
   
   std::string name = Mang->getMangledName(GV);
   Constant *C = GV->getInitializer();
@@ -205,7 +205,7 @@ void XCoreAsmPrinter::emitFunctionStart(MachineFunction &MF) {
   // Print out the label for the function.
   const Function *F = MF.getFunction();
 
-  SwitchToSection(getObjFileLowering().SectionForGlobal(F, TM));
+  SwitchToSection(getObjFileLowering().SectionForGlobal(F, Mang, TM));
   
   // Mark the start of the function
   O << "\t.cc_top " << CurrentFnName << ".function," << CurrentFnName << "\n";