xref: /llvm-project/lldb/test/API/lang/cpp/sizeof/main.cpp (revision 2ce889fa4e5cab75fc65d03a4dfae52784d57db9)
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 Isemann int 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