Oh wow. That's ... weird. Patch LGTM. ================ Comment at: test/Layout/ms-x86-bitfields-vbases.cpp:61 @@ +60,3 @@ + +struct D : virtual B0 { char a : 1; char b; }; + ---------------- What happens for: struct E : virtual B0 { char a, b, c, d : 4, e : 4, : 0; }; ? Do we get extra padding? http://llvm-reviews.chandlerc.com/D2103