[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