[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