[llvm-commits] CVS: llvm/include/llvm/Target/TargetData.h

Chris Lattner sabre at nondot.org
Sat Feb 10 12:15:59 PST 2007



Changes in directory llvm/include/llvm/Target:

TargetData.h updated: 1.51 -> 1.52
---
Log message:

eliminate the std::vector from StructLayout, allocating the elements immediately
after the StructLayout object in memory.  This marginally improves locality,
speeding up -load-vn -gcse by ~0.8%.



---
Diffs of the changes:  (+4 -3)

 TargetData.h |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)


Index: llvm/include/llvm/Target/TargetData.h
diff -u llvm/include/llvm/Target/TargetData.h:1.51 llvm/include/llvm/Target/TargetData.h:1.52
--- llvm/include/llvm/Target/TargetData.h:1.51	Sat Feb 10 13:59:22 2007
+++ llvm/include/llvm/Target/TargetData.h	Sat Feb 10 14:15:41 2007
@@ -275,9 +275,10 @@
 /// target machine, based on the TargetData structure.
 ///
 class StructLayout {
-  std::vector<uint64_t> MemberOffsets;
-  unsigned StructAlignment;
   uint64_t StructSize;
+  unsigned StructAlignment;
+  unsigned NumElements;
+  uint64_t MemberOffsets[1];  // variable sized array!
 public:
 
   uint64_t getSizeInBytes() const {
@@ -294,7 +295,7 @@
   unsigned getElementContainingOffset(uint64_t Offset) const;
 
   uint64_t getElementOffset(unsigned Idx) const {
-    assert(Idx < MemberOffsets.size() && "Invalid element idx!");
+    assert(Idx < NumElements && "Invalid element idx!");
     return MemberOffsets[Idx];
   }
   






More information about the llvm-commits mailing list