[llvm-commits] CVS: llvm/lib/Target/TargetData.cpp
Owen Anderson
resistor at mac.com
Sat Jan 20 15:07:30 PST 2007
Changes in directory llvm/lib/Target:
TargetData.cpp updated: 1.78 -> 1.79
---
Log message:
TargetData assumes (and some regression tests depend on it) that the size of
an unspecified datatype in the datalayout is capped by the size of a pointer.
---
Diffs of the changes: (+11 -4)
TargetData.cpp | 15 +++++++++++----
1 files changed, 11 insertions(+), 4 deletions(-)
Index: llvm/lib/Target/TargetData.cpp
diff -u llvm/lib/Target/TargetData.cpp:1.78 llvm/lib/Target/TargetData.cpp:1.79
--- llvm/lib/Target/TargetData.cpp:1.78 Sat Jan 20 16:39:15 2007
+++ llvm/lib/Target/TargetData.cpp Sat Jan 20 17:07:13 2007
@@ -103,9 +103,9 @@
LittleEndian = false;
PointerMemSize = 8;
PointerABIAlignment = 8;
- DoubleABIAlignment = 8;
+ DoubleABIAlignment = 0;
FloatABIAlignment = 4;
- LongABIAlignment = 8;
+ LongABIAlignment = 0;
IntABIAlignment = 4;
ShortABIAlignment = 2;
ByteABIAlignment = 1;
@@ -114,9 +114,9 @@
BytePrefAlignment = ByteABIAlignment;
ShortPrefAlignment = ShortABIAlignment;
IntPrefAlignment = IntABIAlignment;
- LongPrefAlignment = LongABIAlignment;
+ LongPrefAlignment = 8;
FloatPrefAlignment = FloatABIAlignment;
- DoublePrefAlignment = DoubleABIAlignment;
+ DoublePrefAlignment = 8;
PointerPrefAlignment = PointerABIAlignment;
AggMinPrefAlignment = 0;
@@ -188,6 +188,13 @@
break;
}
}
+
+ // Unless explicitly specified, the alignments for longs and doubles is capped by
+ // pointer size.
+ if (LongABIAlignment == 0)
+ LongABIAlignment = LongPrefAlignment = PointerMemSize;
+ if (DoubleABIAlignment == 0)
+ DoubleABIAlignment = DoublePrefAlignment = PointerMemSize;
}
TargetData::TargetData(const Module *M) {
More information about the llvm-commits
mailing list