Do you handle stuff like the following correctly? struct S { int Array[1]; // This field is actually variable length. }; I would recommend that you do not put padding after the last field if it has one or zero as the array bound. http://reviews.llvm.org/D5924