# Empty structs are not allowed in C, but Clang/GCC allow them and
# give them a size of 0.
self.expect_expr("sizeof(Empty) == sizeof_empty", result_value="true")
+ self.expect_expr("sizeof(EmptyMember) == sizeof_empty_member", result_value="true")
self.expect_expr("sizeof(SingleMember) == sizeof_single", result_value="true")
self.expect_expr("sizeof(PaddingMember) == sizeof_padding", result_value="true")
struct Empty {};
+struct EmptyMember {
+ char i[0];
+};
struct SingleMember {
int i;
};
};
const unsigned sizeof_empty = sizeof(struct Empty);
+const unsigned sizeof_empty_member = sizeof(struct EmptyMember);
const unsigned sizeof_single = sizeof(struct SingleMember);
const unsigned sizeof_padding = sizeof(struct PaddingMember);
int main() {
struct Empty empty;
+ struct EmptyMember empty_member;
struct SingleMember single;
struct PaddingMember padding;
// Make sure globals are used.
- return sizeof_empty + sizeof_single + sizeof_padding;
+ return sizeof_empty + sizeof_empty_member + sizeof_single + sizeof_padding;
}
# Empty structs/classes have size 1 in C++.
self.expect_expr("sizeof(Empty) == sizeof_empty", result_value="true")
self.expect_expr("sizeof(EmptyClass) == sizeof_empty_class", result_value="true")
+ self.expect_expr("sizeof(EmptyClassAligned) == sizeof_empty_class_aligned",
+ result_value="true")
+ self.expect_expr("sizeof(ClassEmptyMember) == sizeof_class_empty_member",
+ result_value="true")
self.expect_expr("sizeof(SingleMember) == sizeof_single", result_value="true")
self.expect_expr("sizeof(SingleMemberClass) == sizeof_single_class", result_value="true")
self.expect_expr("sizeof(PaddingMember) == sizeof_padding", result_value="true")
struct Empty {};
class EmptyClass {};
+class alignas(4) EmptyClassAligned {};
+class ClassEmptyMember {
+ int i[0];
+};
struct SingleMember {
int i;
const unsigned sizeof_empty = sizeof(Empty);
const unsigned sizeof_empty_class = sizeof(EmptyClass);
+const unsigned sizeof_empty_class_aligned = sizeof(EmptyClassAligned);
+const unsigned sizeof_class_empty_member = sizeof(ClassEmptyMember);
const unsigned sizeof_single = sizeof(SingleMember);
const unsigned sizeof_single_class = sizeof(SingleMemberClass);
const unsigned sizeof_padding = sizeof(PaddingMember);
int main() {
Empty empty;
EmptyClass empty_class;
+ EmptyClassAligned empty_class_aligned;
+ ClassEmptyMember class_empty_member;
SingleMember single;
SingleMemberClass single_class;
PaddingMember padding;
PaddingMemberClass padding_class;
// Make sure globals are used.
- return sizeof_empty + sizeof_empty_class + sizeof_single +
- sizeof_single_class + sizeof_padding + sizeof_padding_class;
+ return sizeof_empty + sizeof_empty_class + sizeof_class_empty_member +
+ sizeof_single + +sizeof_empty_class_aligned + sizeof_single_class +
+ sizeof_padding + sizeof_padding_class;
}