aboutsummaryrefslogtreecommitdiff
path: root/src/checker/type.cpp
diff options
context:
space:
mode:
authorGinger Bill <bill@gingerbill.org>2016-09-10 11:24:50 +0100
committerGinger Bill <bill@gingerbill.org>2016-09-10 11:24:50 +0100
commit7509cdceb83dbbeb69b1b85b956cf45a62959b26 (patch)
treeebed5cfd541b87f06db0f46fb1cc68c8e93ea4dd /src/checker/type.cpp
parent6979678ff947cecc8e6e0d0e8ceea7e0304d3f4e (diff)
Default struct member reordering for minimal size
Rule: largest members to smallest; if same size, order in source order
Diffstat (limited to 'src/checker/type.cpp')
-rw-r--r--src/checker/type.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/checker/type.cpp b/src/checker/type.cpp
index ea7bb9873..7c046fd53 100644
--- a/src/checker/type.cpp
+++ b/src/checker/type.cpp
@@ -133,6 +133,8 @@ struct Type {
b32 struct_are_offsets_set;
b32 struct_is_packed;
b32 struct_is_ordered;
+ Entity **fields_in_src_order; // Entity_Variable
+
// Entity_Constant or Entity_TypeName
Entity **other_fields;
@@ -732,12 +734,12 @@ Selection lookup_field(Type *type_, String field_name, b32 is_type, Selection se
if (entity__any_type_info == NULL) {
Token token = {Token_Identifier};
token.string = type_info_str;
- entity__any_type_info = make_entity_field(gb_heap_allocator(), NULL, token, t_type_info_ptr, false);
+ entity__any_type_info = make_entity_field(gb_heap_allocator(), NULL, token, t_type_info_ptr, false, 0);
}
if (entity__any_data == NULL) {
Token token = {Token_Identifier};
token.string = data_str;
- entity__any_data = make_entity_field(gb_heap_allocator(), NULL, token, t_rawptr, false);
+ entity__any_data = make_entity_field(gb_heap_allocator(), NULL, token, t_rawptr, false, 1);
}
if (are_strings_equal(field_name, type_info_str)) {