167c588c4SRaphael Isemann struct Empty {}; 267c588c4SRaphael Isemann class EmptyClass {}; 3*2ce889faSRaphael Isemann class alignas(4) EmptyClassAligned {}; 4*2ce889faSRaphael Isemann class ClassEmptyMember { 5*2ce889faSRaphael Isemann int i[0]; 6*2ce889faSRaphael Isemann }; 767c588c4SRaphael Isemann 867c588c4SRaphael Isemann struct SingleMember { 967c588c4SRaphael Isemann int i; 1067c588c4SRaphael Isemann }; 1167c588c4SRaphael Isemann class SingleMemberClass { 1267c588c4SRaphael Isemann int i; 1367c588c4SRaphael Isemann }; 1467c588c4SRaphael Isemann 1567c588c4SRaphael Isemann struct PaddingMember { 1667c588c4SRaphael Isemann int i; 1767c588c4SRaphael Isemann char c; 1867c588c4SRaphael Isemann }; 1967c588c4SRaphael Isemann class PaddingMemberClass { 2067c588c4SRaphael Isemann int i; 2167c588c4SRaphael Isemann char c; 2267c588c4SRaphael Isemann }; 2367c588c4SRaphael Isemann 2467c588c4SRaphael Isemann const unsigned sizeof_empty = sizeof(Empty); 2567c588c4SRaphael Isemann const unsigned sizeof_empty_class = sizeof(EmptyClass); 26*2ce889faSRaphael Isemann const unsigned sizeof_empty_class_aligned = sizeof(EmptyClassAligned); 27*2ce889faSRaphael Isemann const unsigned sizeof_class_empty_member = sizeof(ClassEmptyMember); 2867c588c4SRaphael Isemann const unsigned sizeof_single = sizeof(SingleMember); 2967c588c4SRaphael Isemann const unsigned sizeof_single_class = sizeof(SingleMemberClass); 3067c588c4SRaphael Isemann const unsigned sizeof_padding = sizeof(PaddingMember); 3167c588c4SRaphael Isemann const unsigned sizeof_padding_class = sizeof(PaddingMemberClass); 3267c588c4SRaphael Isemann main()3367c588c4SRaphael Isemannint main() { 3467c588c4SRaphael Isemann Empty empty; 3567c588c4SRaphael Isemann EmptyClass empty_class; 36*2ce889faSRaphael Isemann EmptyClassAligned empty_class_aligned; 37*2ce889faSRaphael Isemann ClassEmptyMember class_empty_member; 3867c588c4SRaphael Isemann SingleMember single; 3967c588c4SRaphael Isemann SingleMemberClass single_class; 4067c588c4SRaphael Isemann PaddingMember padding; 4167c588c4SRaphael Isemann PaddingMemberClass padding_class; 4267c588c4SRaphael Isemann // Make sure globals are used. 43*2ce889faSRaphael Isemann return sizeof_empty + sizeof_empty_class + sizeof_class_empty_member + 44*2ce889faSRaphael Isemann sizeof_single + +sizeof_empty_class_aligned + sizeof_single_class + 45*2ce889faSRaphael Isemann sizeof_padding + sizeof_padding_class; 4667c588c4SRaphael Isemann } 47