Revision: 125851
Author:   dpatel
Date:     2007-04-06 20:05:09 -0700 (Fri, 06 Apr 2007)

Log Message:
-----------
Fix bit field regression. One llvm field, array of bytes,
can be  used by two struct bitfields. In this situation
while iniitalizing smaller bitfield add empty elements
in extra bytes.

Modified Paths:
--------------
    apple-local/branches/llvm/gcc/llvm-convert.cpp

Modified: apple-local/branches/llvm/gcc/llvm-convert.cpp
===================================================================
--- apple-local/branches/llvm/gcc/llvm-convert.cpp      2007-04-07 02:43:09 UTC 
(rev 125850)
+++ apple-local/branches/llvm/gcc/llvm-convert.cpp      2007-04-07 03:05:09 UTC 
(rev 125851)
@@ -5362,7 +5362,13 @@
       OffsetToBitFieldStart = 0;
       NumBitsToInsert -= NumEltBitsToInsert;
     }
-    
+
+    // Pad extra array elements. This may happens when one llvm field
+    // is used to access two struct fields and llvm field is represented
+    // as an array of bytes.
+    for (; i < Elts.size(); ++i)
+      Elts[i] = ConstantInt::get((cast<ArrayType>(FieldTy))->getElementType(), 
0);
+
     return ConstantArray::get(cast<ArrayType>(FieldTy), Elts);
   }
 }


_______________________________________________
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

Reply via email to