In test we have class A 0 | class A 0 | class B (primary base) 0 | (B vftable pointer) 4 | int b_field 8 | int a_field 12 | char one sizeof=16, dsize=16, align=4 nvsize=16, nvalign=4 %class.A = type { %class.B, i32, i8 } Can I expect that LLVM add 3 bytes padding at the end?