Move these functions out of line. A DenseMap lookup is not a simple operation.
authorRafael Espindola <rafael.espindola@gmail.com>
Wed, 26 Feb 2014 16:49:40 +0000 (16:49 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Wed, 26 Feb 2014 16:49:40 +0000 (16:49 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@202274 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/IR/DataLayout.h
lib/IR/DataLayout.cpp

index 5bdfc4987514df545948ddf0069567bfa084bf32..8a162430f78cdfbcc76ddd774102812e91b80f50 100644 (file)
@@ -281,34 +281,18 @@ public:
   /// Layout pointer alignment
   /// FIXME: The defaults need to be removed once all of
   /// the backends/clients are updated.
-  unsigned getPointerABIAlignment(unsigned AS = 0) const {
-    DenseMap<unsigned, PointerAlignElem>::const_iterator val = Pointers.find(AS);
-    if (val == Pointers.end()) {
-      val = Pointers.find(0);
-    }
-    return val->second.ABIAlign;
-  }
+  unsigned getPointerABIAlignment(unsigned AS = 0) const;
 
   /// Return target's alignment for stack-based pointers
   /// FIXME: The defaults need to be removed once all of
   /// the backends/clients are updated.
-  unsigned getPointerPrefAlignment(unsigned AS = 0) const {
-    DenseMap<unsigned, PointerAlignElem>::const_iterator val = Pointers.find(AS);
-    if (val == Pointers.end()) {
-      val = Pointers.find(0);
-    }
-    return val->second.PrefAlign;
-  }
+  unsigned getPointerPrefAlignment(unsigned AS = 0) const;
+
   /// Layout pointer size
   /// FIXME: The defaults need to be removed once all of
   /// the backends/clients are updated.
-  unsigned getPointerSize(unsigned AS = 0) const {
-    DenseMap<unsigned, PointerAlignElem>::const_iterator val = Pointers.find(AS);
-    if (val == Pointers.end()) {
-      val = Pointers.find(0);
-    }
-    return val->second.TypeByteWidth;
-  }
+  unsigned getPointerSize(unsigned AS = 0) const;
+
   /// Layout pointer size, in bits
   /// FIXME: The defaults need to be removed once all of
   /// the backends/clients are updated.
index bddb6807512b84dcfc745129d07c912b4e4b5218..ed7c12fc9df52447862536010118a95e9dee40a1 100644 (file)
@@ -585,6 +585,30 @@ std::string DataLayout::getStringRepresentation() const {
   return OS.str();
 }
 
+unsigned DataLayout::getPointerABIAlignment(unsigned AS) const {
+  DenseMap<unsigned, PointerAlignElem>::const_iterator val = Pointers.find(AS);
+  if (val == Pointers.end()) {
+    val = Pointers.find(0);
+  }
+  return val->second.ABIAlign;
+}
+
+unsigned DataLayout::getPointerPrefAlignment(unsigned AS) const {
+  DenseMap<unsigned, PointerAlignElem>::const_iterator val = Pointers.find(AS);
+  if (val == Pointers.end()) {
+    val = Pointers.find(0);
+  }
+  return val->second.PrefAlign;
+}
+
+unsigned DataLayout::getPointerSize(unsigned AS) const {
+  DenseMap<unsigned, PointerAlignElem>::const_iterator val = Pointers.find(AS);
+  if (val == Pointers.end()) {
+    val = Pointers.find(0);
+  }
+  return val->second.TypeByteWidth;
+}
+
 unsigned DataLayout::getPointerTypeSizeInBits(Type *Ty) const {
   assert(Ty->isPtrOrPtrVectorTy() &&
          "This should only be called with a pointer or pointer vector type");