diff options
| author | Ginger Bill <bill@gingerbill.org> | 2016-09-10 11:24:50 +0100 |
|---|---|---|
| committer | Ginger Bill <bill@gingerbill.org> | 2016-09-10 11:24:50 +0100 |
| commit | 7509cdceb83dbbeb69b1b85b956cf45a62959b26 (patch) | |
| tree | ebed5cfd541b87f06db0f46fb1cc68c8e93ea4dd /src/checker/type.cpp | |
| parent | 6979678ff947cecc8e6e0d0e8ceea7e0304d3f4e (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.cpp | 6 |
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)) { |