inline a method.
authorChris Lattner <sabre@nondot.org>
Mon, 27 Jul 2009 16:27:32 +0000 (16:27 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 27 Jul 2009 16:27:32 +0000 (16:27 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77198 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Target/ELFTargetAsmInfo.h
lib/Target/ELFTargetAsmInfo.cpp

index 8d25d5b6e593c578d4a5e1e3ecb2a67165bd19a1..1f7a21e30fe9dc6610f0a9a510a653786548bf26 100644 (file)
 
 namespace llvm {
   class GlobalValue;
-  class GlobalVariable;
-  class Type;
 
-  struct ELFTargetAsmInfo: public TargetAsmInfo {
+  struct ELFTargetAsmInfo : public TargetAsmInfo {
     ELFTargetAsmInfo(const TargetMachine &TM);
 
     /// getSectionForMergeableConstant - Given a mergeable constant with the
@@ -49,9 +47,6 @@ namespace llvm {
     const Section *MergeableConst4Section;
     const Section *MergeableConst8Section;
     const Section *MergeableConst16Section;
-
-  private:
-    const Section *MergeableStringSection(const GlobalVariable *GV) const;
   };
 }
 
index 391e348ba21a6a3e6c06520dcaaad8285de2cf48..dbb2ce30ca0ee69a3101c24a2018fb53ac42c17b 100644 (file)
@@ -58,8 +58,30 @@ const Section*
 ELFTargetAsmInfo::SelectSectionForGlobal(const GlobalValue *GV,
                                          SectionKind Kind) const {
   if (Kind.isText()) return TextSection;
-  if (Kind.isMergeableCString())
-    return MergeableStringSection(cast<GlobalVariable>(GV));
+  if (Kind.isMergeableCString()) {
+    const TargetData *TD = TM.getTargetData();
+    Constant *C = cast<GlobalVariable>(GV)->getInitializer();
+    const Type *Ty = cast<ArrayType>(C->getType())->getElementType();
+    
+    unsigned Size = TD->getTypeAllocSize(Ty);
+    if (Size <= 16) {
+      assert(getCStringSection() && "Should have string section prefix");
+      
+      // We also need alignment here.
+      // FIXME: this is getting the alignment of the character, not the
+      // alignment of the string!!
+      unsigned Align = TD->getPrefTypeAlignment(Ty);
+      if (Align < Size)
+        Align = Size;
+      
+      std::string Name = getCStringSection() + utostr(Size) + '.' +
+                         utostr(Align);
+      return getOrCreateSection(Name.c_str(), false,
+                                SectionKind::MergeableCString);
+    }
+    
+    return getReadOnlySection();
+  }
   
   if (Kind.isMergeableConst()) {
     if (Kind.isMergeableConst4())
@@ -145,32 +167,6 @@ ELFTargetAsmInfo::getSectionPrefixForUniqueGlobal(SectionKind Kind) const{
 }
 
 
-
-const Section*
-ELFTargetAsmInfo::MergeableStringSection(const GlobalVariable *GV) const {
-  const TargetData *TD = TM.getTargetData();
-  Constant *C = cast<GlobalVariable>(GV)->getInitializer();
-  const Type *Ty = cast<ArrayType>(C->getType())->getElementType();
-
-  unsigned Size = TD->getTypeAllocSize(Ty);
-  if (Size <= 16) {
-    assert(getCStringSection() && "Should have string section prefix");
-
-    // We also need alignment here.
-    // FIXME: this is getting the alignment of the character, not the alignment
-    // of the string!!
-    unsigned Align = TD->getPrefTypeAlignment(Ty);
-    if (Align < Size)
-      Align = Size;
-
-    std::string Name = getCStringSection() + utostr(Size) + '.' + utostr(Align);
-    return getOrCreateSection(Name.c_str(), false,
-                              SectionKind::MergeableCString);
-  }
-
-  return getReadOnlySection();
-}
-
 void ELFTargetAsmInfo::getSectionFlagsAsString(SectionKind Kind,
                                              SmallVectorImpl<char> &Str) const {
   Str.push_back(',');