[llvm-commits] [llvm-gcc-4.2] r46726 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp

Devang Patel dpatel at apple.com
Mon Feb 4 15:24:44 PST 2008


Author: dpatel
Date: Mon Feb  4 17:24:43 2008
New Revision: 46726

URL: http://llvm.org/viewvc/llvm-project?rev=46726&view=rev
Log:
Use appropriate alignment while handling  packed struct member.

Modified:
    llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp

Modified: llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp?rev=46726&r1=46725&r2=46726&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Mon Feb  4 17:24:43 2008
@@ -2148,6 +2148,13 @@
   bool isVolatile = TREE_THIS_VOLATILE(exp);
   const Type *Ty = ConvertType(TREE_TYPE(exp));
   unsigned Alignment = expr_align(exp) / 8;
+  if (TREE_CODE(exp) == COMPONENT_REF) 
+    if (const StructType *STy = 
+        dyn_cast<StructType>(ConvertType(TREE_TYPE(TREE_OPERAND(exp, 0)))))
+      if (STy->isPacked())
+        // Packed struct members use 1 byte alignment
+        Alignment = 1;
+    
   
   if (!LV.isBitfield()) {
     if (!DestLoc) {
@@ -2680,6 +2687,12 @@
   LValue LV = EmitLV(lhs);
   bool isVolatile = TREE_THIS_VOLATILE(lhs);
   unsigned Alignment = expr_align(lhs) / 8;
+  if (TREE_CODE(lhs) == COMPONENT_REF) 
+    if (const StructType *STy = 
+        dyn_cast<StructType>(ConvertType(TREE_TYPE(TREE_OPERAND(lhs, 0)))))
+      if (STy->isPacked())
+        // Packed struct members use 1 byte alignment
+        Alignment = 1;
 
   if (!LV.isBitfield()) {
     const Type *ValTy = ConvertType(TREE_TYPE(rhs));





More information about the llvm-commits mailing list