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) { _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits