fix a fixme by sinking various target-specific directives down into
authorChris Lattner <sabre@nondot.org>
Sat, 1 Aug 2009 21:56:13 +0000 (21:56 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 1 Aug 2009 21:56:13 +0000 (21:56 +0000)
the appropriate subclasses.

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

include/llvm/Target/TargetLoweringObjectFile.h
lib/Target/PIC16/PIC16TargetObjectFile.cpp
lib/Target/TargetLoweringObjectFile.cpp

index 2b2d52fc6ed753499d0988d69035f396e03309d7..55d9cd297bf7f8cded50549df0dff99ab8cbd363 100644 (file)
@@ -35,32 +35,18 @@ protected:
   
   /// TextSection - Section directive for standard text.
   ///
-  const MCSection *TextSection;           // Defaults to ".text".
+  const MCSection *TextSection;
   
   /// DataSection - Section directive for standard data.
   ///
-  const MCSection *DataSection;           // Defaults to ".data".
+  const MCSection *DataSection;
   
+  /// BSSSection - Section that is default initialized to zero.
+  const MCSection *BSSSection;
   
-  
-  // FIXME: SINK THESE.
-  const MCSection *BSSSection_;
-
-  /// ReadOnlySection - This is the directive that is emitted to switch to a
-  /// read-only section for constant data (e.g. data declared const,
-  /// jump tables).
-  const MCSection *ReadOnlySection;       // Defaults to NULL
-  
-  /// TLSDataSection - Section directive for Thread Local data.
-  ///
-  const MCSection *TLSDataSection;        // Defaults to ".tdata".
-  
-  /// TLSBSSSection - Section directive for Thread Local uninitialized data.
-  /// Null if this target doesn't support a BSS section.
-  ///
-  const MCSection *TLSBSSSection;         // Defaults to ".tbss".
-  
-  const MCSection *CStringSection_;
+  /// ReadOnlySection - Section that is readonly and can contain arbitrary
+  /// initialized data.
+  const MCSection *ReadOnlySection;
   
 public:
   // FIXME: NONPUB.
@@ -87,7 +73,7 @@ public:
   /// FIXME: REMOVE this (rdar://7071300)
   virtual bool shouldEmitUsedDirectiveFor(const GlobalValue *GV,
                                           Mangler *) const {
-    return (GV!=0);
+    return GV != 0;
   }
   
   /// getSectionForMergeableConstant - Given a mergeable constant with the
@@ -141,6 +127,26 @@ protected:
 class TargetLoweringObjectFileELF : public TargetLoweringObjectFile {
   bool AtIsCommentChar;  // True if @ is the comment character on this target.
   bool HasCrazyBSS;
+protected:
+  /// TLSDataSection - Section directive for Thread Local data.
+  ///
+  const MCSection *TLSDataSection;        // Defaults to ".tdata".
+  
+  /// TLSBSSSection - Section directive for Thread Local uninitialized data.
+  /// Null if this target doesn't support a BSS section.
+  ///
+  const MCSection *TLSBSSSection;         // Defaults to ".tbss".
+  
+  const MCSection *CStringSection;
+  
+  const MCSection *DataRelSection;
+  const MCSection *DataRelLocalSection;
+  const MCSection *DataRelROSection;
+  const MCSection *DataRelROLocalSection;
+  
+  const MCSection *MergeableConst4Section;
+  const MCSection *MergeableConst8Section;
+  const MCSection *MergeableConst16Section;
 public:
   /// ELF Constructor - AtIsCommentChar is true if the CommentCharacter from TAI
   /// is "@".
@@ -166,20 +172,12 @@ public:
   virtual const MCSection *
   SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind,
                          Mangler *Mang, const TargetMachine &TM) const;
-protected:
-  const MCSection *DataRelSection;
-  const MCSection *DataRelLocalSection;
-  const MCSection *DataRelROSection;
-  const MCSection *DataRelROLocalSection;
-  
-  const MCSection *MergeableConst4Section;
-  const MCSection *MergeableConst8Section;
-  const MCSection *MergeableConst16Section;
 };
 
   
   
 class TargetLoweringObjectFileMachO : public TargetLoweringObjectFile {
+  const MCSection *CStringSection;
   const MCSection *TextCoalSection;
   const MCSection *ConstTextCoalSection;
   const MCSection *ConstDataCoalSection;
index 78e88ca935cdb32b179c07449945b8b5be930d76..04f2ebf1133bc4d64575da93ceb4e3d5ef09df5a 100644 (file)
@@ -19,8 +19,8 @@ void PIC16TargetObjectFile::Initialize(MCContext &Ctx, const TargetMachine &tm){
   TargetLoweringObjectFile::Initialize(Ctx, tm);
   TM = &tm;
   
-  BSSSection = getOrCreateSection("udata.# UDATA", false, 
-                                    SectionKind::get(SectionKind::BSS));
+  BSSSection = getOrCreateSection("udata.# UDATA", false, 
+                                  SectionKind::get(SectionKind::BSS));
   ReadOnlySection = getOrCreateSection("romdata.# ROMDATA", false,
                                        SectionKind::get(SectionKind::ReadOnly));
   DataSection = getOrCreateSection("idata.# IDATA", false,
index a26bec2bdf7c6749724306ce7f1dfe80613fe99e..84247790f453b8beb819c79a9e2b740bed0fa64e 100644 (file)
@@ -32,11 +32,8 @@ using namespace llvm;
 TargetLoweringObjectFile::TargetLoweringObjectFile() : Ctx(0) {
   TextSection = 0;
   DataSection = 0;
-  BSSSection_ = 0;
+  BSSSection = 0;
   ReadOnlySection = 0;
-  TLSDataSection = 0;
-  TLSBSSSection = 0;
-  CStringSection_ = 0;
 }
 
 TargetLoweringObjectFile::~TargetLoweringObjectFile() {
@@ -222,8 +219,8 @@ TargetLoweringObjectFile::SelectSectionForGlobal(const GlobalValue *GV,
   if (Kind.isText())
     return getTextSection();
   
-  if (Kind.isBSS() && BSSSection_ != 0)
-    return BSSSection_;
+  if (Kind.isBSS() && BSSSection != 0)
+    return BSSSection;
   
   if (Kind.isReadOnly() && ReadOnlySection != 0)
     return ReadOnlySection;
@@ -261,16 +258,16 @@ void TargetLoweringObjectFileELF::Initialize(MCContext &Ctx,
                                              const TargetMachine &TM) {
   TargetLoweringObjectFile::Initialize(Ctx, TM);
   if (!HasCrazyBSS)
-    BSSSection_ = getOrCreateSection("\t.bss", true,
-                                     SectionKind::get(SectionKind::BSS));
+    BSSSection = getOrCreateSection("\t.bss", true,
+                                    SectionKind::get(SectionKind::BSS));
   else
     // PPC/Linux doesn't support the .bss directive, it needs .section .bss.
     // FIXME: Does .section .bss work everywhere??
     // FIXME2: this should just be handle by the section printer.  We should get
     // away from syntactic view of the sections and MCSection should just be a
     // semantic view.
-    BSSSection_ = getOrCreateSection("\t.bss", false,
-                                     SectionKind::get(SectionKind::BSS));
+    BSSSection = getOrCreateSection("\t.bss", false,
+                                    SectionKind::get(SectionKind::BSS));
 
     
   TextSection = getOrCreateSection("\t.text", true,
@@ -283,7 +280,7 @@ void TargetLoweringObjectFileELF::Initialize(MCContext &Ctx,
   TLSDataSection =
     getOrCreateSection("\t.tdata", false,
                        SectionKind::get(SectionKind::ThreadData));
-  CStringSection_ = getOrCreateSection("\t.rodata.str", true,
+  CStringSection = getOrCreateSection("\t.rodata.str", true,
                                SectionKind::get(SectionKind::MergeableCString));
 
   TLSBSSSection = getOrCreateSection("\t.tbss", false, 
@@ -423,7 +420,7 @@ SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind,
   if (Kind.isText()) return TextSection;
   
   if (Kind.isMergeableCString()) {
-   assert(CStringSection_ && "Should have string section prefix");
+   assert(CStringSection && "Should have string section prefix");
     
     // We also need alignment here.
     // FIXME: this is getting the alignment of the character, not the
@@ -431,7 +428,7 @@ SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind,
     unsigned Align = 
       TM.getTargetData()->getPreferredAlignment(cast<GlobalVariable>(GV));
     
-    std::string Name = CStringSection_->getName() + "1." + utostr(Align);
+    std::string Name = CStringSection->getName() + "1." + utostr(Align);
     return getOrCreateSection(Name.c_str(), false,
                               SectionKind::get(SectionKind::MergeableCString));
   }
@@ -451,7 +448,7 @@ SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind,
   if (Kind.isThreadData())           return TLSDataSection;
   if (Kind.isThreadBSS())            return TLSBSSSection;
   
-  if (Kind.isBSS())                  return BSSSection_;
+  if (Kind.isBSS())                  return BSSSection;
   
   if (Kind.isDataNoRel())            return DataSection;
   if (Kind.isDataRelLocal())         return DataRelLocalSection;
@@ -493,7 +490,7 @@ void TargetLoweringObjectFileMachO::Initialize(MCContext &Ctx,
   DataSection = getOrCreateSection("\t.data", true, 
                                    SectionKind::get(SectionKind::DataRel));
   
-  CStringSection_ = getOrCreateSection("\t.cstring", true,
+  CStringSection = getOrCreateSection("\t.cstring", true,
                                SectionKind::get(SectionKind::MergeableCString));
   FourByteConstantSection = getOrCreateSection("\t.literal4\n", true,
                                 SectionKind::get(SectionKind::MergeableConst4));
@@ -554,7 +551,7 @@ SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind,
     if (Size) {
       unsigned Align = TD.getPreferredAlignment(cast<GlobalVariable>(GV));
       if (Align <= 32)
-        return CStringSection_;
+        return CStringSection;
     }
     
     return ReadOnlySection;