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