[llvm-commits] [llvm] r77834 - in /llvm/trunk: include/llvm/MC/SectionKind.h lib/CodeGen/AsmPrinter/AsmPrinter.cpp lib/CodeGen/ELFWriter.cpp lib/Target/TargetLoweringObjectFile.cpp

Chris Lattner sabre at nondot.org
Sat Aug 1 16:57:16 PDT 2009


Author: lattner
Date: Sat Aug  1 18:57:16 2009
New Revision: 77834

URL: http://llvm.org/viewvc/llvm-project?rev=77834&view=rev
Log:
(re)introduce new simpler apis for creation sectionkinds.

Modified:
    llvm/trunk/include/llvm/MC/SectionKind.h
    llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
    llvm/trunk/lib/CodeGen/ELFWriter.cpp
    llvm/trunk/lib/Target/TargetLoweringObjectFile.cpp

Modified: llvm/trunk/include/llvm/MC/SectionKind.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/SectionKind.h?rev=77834&r1=77833&r2=77834&view=diff

==============================================================================
--- llvm/trunk/include/llvm/MC/SectionKind.h (original)
+++ llvm/trunk/include/llvm/MC/SectionKind.h Sat Aug  1 18:57:16 2009
@@ -117,7 +117,6 @@
   
 protected:
   Kind K : 8;
-  
 public:
   
   bool isMetadata() const { return K == Metadata; }
@@ -177,6 +176,25 @@
     Res.K = K;
     return Res;
   }
+  
+  static SectionKind getMetadata() { return get(Metadata); }
+  static SectionKind getText() { return get(Text); }
+  static SectionKind getReadOnly() { return get(ReadOnly); }
+  static SectionKind getMergeableCString() { return get(MergeableCString); }
+  static SectionKind getMergeableConst() { return get(MergeableConst); }
+  static SectionKind getMergeableConst4() { return get(MergeableConst4); }
+  static SectionKind getMergeableConst8() { return get(MergeableConst8); }
+  static SectionKind getMergeableConst16() { return get(MergeableConst16); }
+  static SectionKind getThreadBSS() { return get(ThreadBSS); }
+  static SectionKind getThreadData() { return get(ThreadData); }
+  static SectionKind getBSS() { return get(BSS); }
+  static SectionKind getDataRel() { return get(DataRel); }
+  static SectionKind getDataRelLocal() { return get(DataRelLocal); }
+  static SectionKind getDataNoRel() { return get(DataNoRel); }
+  static SectionKind getReadOnlyWithRel() { return get(ReadOnlyWithRel); }
+  static SectionKind getReadOnlyWithRelLocal(){
+    return get(ReadOnlyWithRelLocal);
+  }
 };
   
 } // end namespace llvm

Modified: llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp?rev=77834&r1=77833&r2=77834&view=diff

==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp Sat Aug  1 18:57:16 2009
@@ -336,16 +336,16 @@
     SectionKind Kind;
     switch (CPE.getRelocationInfo()) {
     default: llvm_unreachable("Unknown section kind");
-    case 2: Kind = SectionKind::get(SectionKind::ReadOnlyWithRel); break;
+    case 2: Kind = SectionKind::getReadOnlyWithRel(); break;
     case 1:
-      Kind = SectionKind::get(SectionKind::ReadOnlyWithRelLocal);
+      Kind = SectionKind::getReadOnlyWithRelLocal();
       break;
     case 0:
     switch (TM.getTargetData()->getTypeAllocSize(CPE.getType())) {
-    case 4:  Kind = SectionKind::get(SectionKind::MergeableConst4); break;
-    case 8:  Kind = SectionKind::get(SectionKind::MergeableConst8); break;
-    case 16: Kind = SectionKind::get(SectionKind::MergeableConst16);break;
-    default: Kind = SectionKind::get(SectionKind::MergeableConst); break;
+    case 4:  Kind = SectionKind::getMergeableConst4(); break;
+    case 8:  Kind = SectionKind::getMergeableConst8(); break;
+    case 16: Kind = SectionKind::getMergeableConst16();break;
+    default: Kind = SectionKind::getMergeableConst(); break;
     }
     }
 
@@ -430,8 +430,7 @@
   } else {
     // Otherwise, drop it in the readonly section.
     const MCSection *ReadOnlySection = 
-      getObjFileLowering().getSectionForConstant(
-                                       SectionKind::get(SectionKind::ReadOnly));
+      getObjFileLowering().getSectionForConstant(SectionKind::getReadOnly());
     SwitchToSection(ReadOnlySection);
     JTInDiffSection = true;
   }

Modified: llvm/trunk/lib/CodeGen/ELFWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/ELFWriter.cpp?rev=77834&r1=77833&r2=77834&view=diff

==============================================================================
--- llvm/trunk/lib/CodeGen/ELFWriter.cpp (original)
+++ llvm/trunk/lib/CodeGen/ELFWriter.cpp Sat Aug  1 18:57:16 2009
@@ -182,8 +182,7 @@
   const TargetLoweringObjectFile &TLOF =
     TM.getTargetLowering()->getObjFileLowering();
 
-  return getSection(TLOF.getSectionForConstant(
-                                      SectionKind::get(SectionKind::ReadOnly))
+  return getSection(TLOF.getSectionForConstant(SectionKind::getReadOnly())
                     ->getName(),
                     ELFSection::SHT_PROGBITS,
                     ELFSection::SHF_ALLOC, Align);
@@ -194,16 +193,16 @@
   SectionKind Kind;
   switch (CPE.getRelocationInfo()) {
   default: llvm_unreachable("Unknown section kind");
-  case 2: Kind = SectionKind::get(SectionKind::ReadOnlyWithRel); break;
+  case 2: Kind = SectionKind::getReadOnlyWithRel(); break;
   case 1:
-    Kind = SectionKind::get(SectionKind::ReadOnlyWithRelLocal);
+    Kind = SectionKind::getReadOnlyWithRelLocal();
     break;
   case 0:
     switch (TM.getTargetData()->getTypeAllocSize(CPE.getType())) {
-    case 4:  Kind = SectionKind::get(SectionKind::MergeableConst4); break;
-    case 8:  Kind = SectionKind::get(SectionKind::MergeableConst8); break;
-    case 16: Kind = SectionKind::get(SectionKind::MergeableConst16); break;
-    default: Kind = SectionKind::get(SectionKind::MergeableConst); break;
+    case 4:  Kind = SectionKind::getMergeableConst4(); break;
+    case 8:  Kind = SectionKind::getMergeableConst8(); break;
+    case 16: Kind = SectionKind::getMergeableConst16(); break;
+    default: Kind = SectionKind::getMergeableConst(); break;
     }
   }
 

Modified: llvm/trunk/lib/Target/TargetLoweringObjectFile.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/TargetLoweringObjectFile.cpp?rev=77834&r1=77833&r2=77834&view=diff

==============================================================================
--- llvm/trunk/lib/Target/TargetLoweringObjectFile.cpp (original)
+++ llvm/trunk/lib/Target/TargetLoweringObjectFile.cpp Sat Aug  1 18:57:16 2009
@@ -90,19 +90,19 @@
   // Early exit - functions should be always in text sections.
   const GlobalVariable *GVar = dyn_cast<GlobalVariable>(GV);
   if (GVar == 0)
-    return SectionKind::get(SectionKind::Text);
+    return SectionKind::getText();
 
   
   // Handle thread-local data first.
   if (GVar->isThreadLocal()) {
     if (isSuitableForBSS(GVar))
-      return SectionKind::get(SectionKind::ThreadBSS);
-    return SectionKind::get(SectionKind::ThreadData);
+      return SectionKind::getThreadBSS();
+    return SectionKind::getThreadData();
   }
 
   // Variable can be easily put to BSS section.
   if (isSuitableForBSS(GVar))
-    return SectionKind::get(SectionKind::BSS);
+    return SectionKind::getBSS();
 
   Constant *C = GVar->getInitializer();
   
@@ -118,16 +118,16 @@
       // If initializer is a null-terminated string, put it in a "cstring"
       // section if the target has it.
       if (isConstantString(C))
-        return SectionKind::get(SectionKind::MergeableCString);
+        return SectionKind::getMergeableCString();
       
       // Otherwise, just drop it into a mergable constant section.  If we have
       // a section for this size, use it, otherwise use the arbitrary sized
       // mergable section.
       switch (TM.getTargetData()->getTypeAllocSize(C->getType())) {
-      case 4:  return SectionKind::get(SectionKind::MergeableConst4);
-      case 8:  return SectionKind::get(SectionKind::MergeableConst8);
-      case 16: return SectionKind::get(SectionKind::MergeableConst16);
-      default: return SectionKind::get(SectionKind::MergeableConst);
+      case 4:  return SectionKind::getMergeableConst4();
+      case 8:  return SectionKind::getMergeableConst8();
+      case 16: return SectionKind::getMergeableConst16();
+      default: return SectionKind::getMergeableConst();
       }
       
     case Constant::LocalRelocation:
@@ -137,11 +137,11 @@
       // the linker doesn't take relocations into consideration when it tries to
       // merge entries in the section.
       if (ReloModel == Reloc::Static)
-        return SectionKind::get(SectionKind::ReadOnly);
+        return SectionKind::getReadOnly();
               
       // Otherwise, the dynamic linker needs to fix it up, put it in the
       // writable data.rel.local section.
-      return SectionKind::get(SectionKind::ReadOnlyWithRelLocal);
+      return SectionKind::getReadOnlyWithRelLocal();
               
     case Constant::GlobalRelocations:
       // In static relocation model, the linker will resolve all addresses, so
@@ -150,11 +150,11 @@
       // the linker doesn't take relocations into consideration when it tries to
       // merge entries in the section.
       if (ReloModel == Reloc::Static)
-        return SectionKind::get(SectionKind::ReadOnly);
+        return SectionKind::getReadOnly();
       
       // Otherwise, the dynamic linker needs to fix it up, put it in the
       // writable data.rel section.
-      return SectionKind::get(SectionKind::ReadOnlyWithRel);
+      return SectionKind::getReadOnlyWithRel();
     }
   }
 
@@ -164,16 +164,16 @@
   // globals together onto fewer pages, improving the locality of the dynamic
   // linker.
   if (ReloModel == Reloc::Static)
-    return SectionKind::get(SectionKind::DataNoRel);
+    return SectionKind::getDataNoRel();
 
   switch (C->getRelocationInfo()) {
   default: llvm_unreachable("unknown relocation info kind");
   case Constant::NoRelocation:
-    return SectionKind::get(SectionKind::DataNoRel);
+    return SectionKind::getDataNoRel();
   case Constant::LocalRelocation:
-    return SectionKind::get(SectionKind::DataRelLocal);
+    return SectionKind::getDataRelLocal();
   case Constant::GlobalRelocations:
-    return SectionKind::get(SectionKind::DataRel);
+    return SectionKind::getDataRel();
   }
 }
 
@@ -257,50 +257,44 @@
                                              const TargetMachine &TM) {
   TargetLoweringObjectFile::Initialize(Ctx, TM);
   if (!HasCrazyBSS)
-    BSSSection = getOrCreateSection("\t.bss", true,
-                                    SectionKind::get(SectionKind::BSS));
+    BSSSection = getOrCreateSection("\t.bss", true, SectionKind::getBSS());
   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::getBSS());
 
     
-  TextSection = getOrCreateSection("\t.text", true,
-                                   SectionKind::get(SectionKind::Text));
-  DataSection = getOrCreateSection("\t.data", true,
-                                   SectionKind::get(SectionKind::DataRel));
+  TextSection = getOrCreateSection("\t.text", true, SectionKind::getText());
+  DataSection = getOrCreateSection("\t.data", true, SectionKind::getDataRel());
   ReadOnlySection =
-    getOrCreateSection("\t.rodata", false,
-                       SectionKind::get(SectionKind::ReadOnly));
+    getOrCreateSection("\t.rodata", false, SectionKind::getReadOnly());
   TLSDataSection =
-    getOrCreateSection("\t.tdata", false,
-                       SectionKind::get(SectionKind::ThreadData));
+    getOrCreateSection("\t.tdata", false, SectionKind::getThreadData());
   CStringSection = getOrCreateSection("\t.rodata.str", true,
-                               SectionKind::get(SectionKind::MergeableCString));
+                               SectionKind::getMergeableCString());
 
   TLSBSSSection = getOrCreateSection("\t.tbss", false, 
-                                     SectionKind::get(SectionKind::ThreadBSS));
+                                     SectionKind::getThreadBSS());
 
   DataRelSection = getOrCreateSection("\t.data.rel", false,
-                                      SectionKind::get(SectionKind::DataRel));
+                                      SectionKind::getDataRel());
   DataRelLocalSection = getOrCreateSection("\t.data.rel.local", false,
-                                   SectionKind::get(SectionKind::DataRelLocal));
+                                   SectionKind::getDataRelLocal());
   DataRelROSection = getOrCreateSection("\t.data.rel.ro", false,
-                                SectionKind::get(SectionKind::ReadOnlyWithRel));
+                                SectionKind::getReadOnlyWithRel());
   DataRelROLocalSection =
     getOrCreateSection("\t.data.rel.ro.local", false,
-                       SectionKind::get(SectionKind::ReadOnlyWithRelLocal));
+                       SectionKind::getReadOnlyWithRelLocal());
     
   MergeableConst4Section = getOrCreateSection(".rodata.cst4", false,
-                                SectionKind::get(SectionKind::MergeableConst4));
+                                SectionKind::getMergeableConst4());
   MergeableConst8Section = getOrCreateSection(".rodata.cst8", false,
-                                SectionKind::get(SectionKind::MergeableConst8));
+                                SectionKind::getMergeableConst8());
   MergeableConst16Section = getOrCreateSection(".rodata.cst16", false,
-                               SectionKind::get(SectionKind::MergeableConst16));
+                               SectionKind::getMergeableConst16());
 }
 
 
@@ -313,19 +307,19 @@
       strncmp(Name, ".llvm.linkonce.b.", 17) == 0 ||
       strncmp(Name, ".gnu.linkonce.sb.", 17) == 0 ||
       strncmp(Name, ".llvm.linkonce.sb.", 18) == 0)
-    return SectionKind::get(SectionKind::BSS);
+    return SectionKind::getBSS();
   
   if (strcmp(Name, ".tdata") == 0 ||
       strncmp(Name, ".tdata.", 7) == 0 ||
       strncmp(Name, ".gnu.linkonce.td.", 17) == 0 ||
       strncmp(Name, ".llvm.linkonce.td.", 18) == 0)
-    return SectionKind::get(SectionKind::ThreadData);
+    return SectionKind::getThreadData();
   
   if (strcmp(Name, ".tbss") == 0 ||
       strncmp(Name, ".tbss.", 6) == 0 ||
       strncmp(Name, ".gnu.linkonce.tb.", 17) == 0 ||
       strncmp(Name, ".llvm.linkonce.tb.", 18) == 0)
-    return SectionKind::get(SectionKind::ThreadBSS);
+    return SectionKind::getThreadBSS();
   
   return K;
 }
@@ -429,7 +423,7 @@
     
     std::string Name = CStringSection->getName() + "1." + utostr(Align);
     return getOrCreateSection(Name.c_str(), false,
-                              SectionKind::get(SectionKind::MergeableCString));
+                              SectionKind::getMergeableCString());
   }
   
   if (Kind.isMergeableConst()) {
@@ -485,16 +479,16 @@
                                                const TargetMachine &TM) {
   TargetLoweringObjectFile::Initialize(Ctx, TM);
   TextSection = getOrCreateSection("\t.text", true,
-                                   SectionKind::get(SectionKind::Text));
+                                   SectionKind::getText());
   DataSection = getOrCreateSection("\t.data", true, 
-                                   SectionKind::get(SectionKind::DataRel));
+                                   SectionKind::getDataRel());
   
   CStringSection = getOrCreateSection("\t.cstring", true,
-                               SectionKind::get(SectionKind::MergeableCString));
+                               SectionKind::getMergeableCString());
   FourByteConstantSection = getOrCreateSection("\t.literal4\n", true,
-                                SectionKind::get(SectionKind::MergeableConst4));
+                                SectionKind::getMergeableConst4());
   EightByteConstantSection = getOrCreateSection("\t.literal8\n", true,
-                                SectionKind::get(SectionKind::MergeableConst8));
+                                SectionKind::getMergeableConst8());
   
   // ld_classic doesn't support .literal16 in 32-bit mode, and ld64 falls back
   // to using it in -static mode.
@@ -502,27 +496,27 @@
       TM.getTargetData()->getPointerSize() == 32)
     SixteenByteConstantSection = 
       getOrCreateSection("\t.literal16\n", true, 
-                         SectionKind::get(SectionKind::MergeableConst16));
+                         SectionKind::getMergeableConst16());
   else
     SixteenByteConstantSection = 0;
   
   ReadOnlySection = getOrCreateSection("\t.const", true, 
-                                       SectionKind::get(SectionKind::ReadOnly));
+                                       SectionKind::getReadOnly());
   
   TextCoalSection =
   getOrCreateSection("\t__TEXT,__textcoal_nt,coalesced,pure_instructions",
-                     false, SectionKind::get(SectionKind::Text));
+                     false, SectionKind::getText());
   ConstTextCoalSection = getOrCreateSection("\t__TEXT,__const_coal,coalesced",
                                             false,
-                                           SectionKind::get(SectionKind::Text));
+                                           SectionKind::getText());
   ConstDataCoalSection = getOrCreateSection("\t__DATA,__const_coal,coalesced",
                                             false, 
-                                          SectionKind::get(SectionKind::Text));
+                                          SectionKind::getText());
   ConstDataSection = getOrCreateSection("\t.const_data", true,
-                                SectionKind::get(SectionKind::ReadOnlyWithRel));
+                                SectionKind::getReadOnlyWithRel());
   DataCoalSection = getOrCreateSection("\t__DATA,__datacoal_nt,coalesced",
                                        false,
-                                       SectionKind::get(SectionKind::DataRel));
+                                       SectionKind::getDataRel());
 }
 
 const MCSection *TargetLoweringObjectFileMachO::
@@ -627,9 +621,9 @@
                                               const TargetMachine &TM) {
   TargetLoweringObjectFile::Initialize(Ctx, TM);
   TextSection = getOrCreateSection("\t.text", true,
-                                   SectionKind::get(SectionKind::Text));
+                                   SectionKind::getText());
   DataSection = getOrCreateSection("\t.data", true,
-                                   SectionKind::get(SectionKind::DataRel));
+                                   SectionKind::getDataRel());
 }
 
 void TargetLoweringObjectFileCOFF::





More information about the llvm-commits mailing list