Print entity size for mergeable sections

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53303 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/llvm/Target/TargetAsmInfo.h b/include/llvm/Target/TargetAsmInfo.h
index 0cd7f8d..4e7d23d 100644
--- a/include/llvm/Target/TargetAsmInfo.h
+++ b/include/llvm/Target/TargetAsmInfo.h
@@ -45,15 +45,25 @@
   namespace SectionFlags {
     enum Flags {
       None       = 0,
-      Code       = 1 << 0, ///< Section contains code
-      Writeable  = 1 << 1, ///< Section is writeable
-      BSS        = 1 << 2, ///< Section contains only zeroes
-      Mergeable  = 1 << 3, ///< Section contains mergeable data
-      Strings    = 1 << 4, ///< Section contains null-terminated strings
-      TLS        = 1 << 5, ///< Section contains thread-local data
-      Debug      = 1 << 6, ///< Section contains debug data
-      Linkonce   = 1 << 7  ///< Section is linkonce
+      Code       = 1 << 0,    ///< Section contains code
+      Writeable  = 1 << 1,    ///< Section is writeable
+      BSS        = 1 << 2,    ///< Section contains only zeroes
+      Mergeable  = 1 << 3,    ///< Section contains mergeable data
+      Strings    = 1 << 4,    ///< Section contains null-terminated strings
+      TLS        = 1 << 5,    ///< Section contains thread-local data
+      Debug      = 1 << 6,    ///< Section contains debug data
+      Linkonce   = 1 << 7,    ///< Section is linkonce
+      // Some gap for future flags
+      EntitySize = 0xFF << 24 ///< Entity size for mergeable sections
     };
+
+    static inline unsigned getEntitySize(unsigned flags) {
+      return (flags >> 24) & 0xFF;
+    }
+
+    static inline unsigned setEntitySize(unsigned flags, unsigned size) {
+      return ((flags & ~EntitySize) | ((size & 0xFF) << 24));
+    }
   }
 
   class TargetMachine;
diff --git a/lib/Target/X86/X86TargetAsmInfo.cpp b/lib/Target/X86/X86TargetAsmInfo.cpp
index c900ac9..b0c6f1c 100644
--- a/lib/Target/X86/X86TargetAsmInfo.cpp
+++ b/lib/Target/X86/X86TargetAsmInfo.cpp
@@ -337,7 +337,8 @@
   else
     Flags += ",@progbits";
 
-  // FIXME: entity size for mergeable sections
+  if (unsigned entitySize = SectionFlags::getEntitySize(flags))
+    Flags += "," + utostr(entitySize);
 
   return Flags;
 }