diff options
author | Erick Ochoa <erick.ochoa@theobroma-systems.com> | 2020-12-03 13:22:31 +0100 |
---|---|---|
committer | Erick Ochoa <erick.ochoa@theobroma-systems.com> | 2020-12-03 13:22:31 +0100 |
commit | c0659656008ae3541fb711a04fd72f041f836c44 (patch) | |
tree | 2074e8016a9776cf9383f4bebe9c6ebb38f3344c | |
parent | 4d0db073fc59bcf7d7171278662610b2596ad3e5 (diff) |
records
-rw-r--r-- | gcc/ipa-dfe.c | 10 | ||||
-rw-r--r-- | gcc/ipa-dfe.h | 18 | ||||
-rw-r--r-- | gcc/ipa-field-reorder.c | 10 |
3 files changed, 13 insertions, 25 deletions
diff --git a/gcc/ipa-dfe.c b/gcc/ipa-dfe.c index 93c3c40d202..f2a49c49bb8 100644 --- a/gcc/ipa-dfe.c +++ b/gcc/ipa-dfe.c @@ -198,16 +198,16 @@ get_types_replacement (record_field_offset_map_t record_field_offset_map, { type_stringifier stringifier; - record_field_offset_map3_t record_field_offset_map2; + record_field_offset_map4_t record_field_offset_map2; for (auto i = record_field_offset_map.begin(), e = record_field_offset_map.end(); i != e; ++i) { - field_offsets2_t _second2; + field_offsets2_t *_second2 = new field_offsets2_t; std::set<unsigned> _second1 = i->second; for (auto j = _second1.begin(), f = _second1.end(); j != f; ++j) { - _second2.add (*j); + _second2->add (*j); } - record_field_offset_map2.insert({i->first, _second2}); + record_field_offset_map2.put(i->first, _second2); } type_reconstructor reconstructor (record_field_offset_map2, "reorg"); @@ -730,7 +730,7 @@ type_reconstructor::_walk_field_post (tree t) // What record does this field belongs to? tree record = for_reference2.last (); - field_offsets2_t **field_offsets_ptr = _records2->get(record); + field_offsets2_t **field_offsets_ptr = _records2.get(record); if (!field_offsets_ptr) return; field_offsets2_t *field_offsets = *field_offsets_ptr; // What's the field offset? diff --git a/gcc/ipa-dfe.h b/gcc/ipa-dfe.h index 26630713f40..e60a99e6ab6 100644 --- a/gcc/ipa-dfe.h +++ b/gcc/ipa-dfe.h @@ -70,30 +70,18 @@ typedef hash_map<tree, std::pair<tree, bool> > reorg_field_map2_t; class type_reconstructor : public type_walker { public: - type_reconstructor (record_field_offset_map3_t records, const char *suffix) - : _suffix (suffix), in_progress2(vNULL), for_reference2(vNULL), field_list2_stack2 (vNULL) + type_reconstructor (record_field_offset_map4_t &records, const char *suffix) + : _records2(records), _suffix (suffix), in_progress2(vNULL), for_reference2(vNULL), field_list2_stack2 (vNULL) { _reorg_map2 = new reorg_record_map2_t; _reorg_fields2 = new reorg_field_map2_t; modified_map2 = new is_modified_map2_t; - _records2 = new record_field_offset_map4_t; - - for (auto i = records.begin(), e = records.end(); i != e; ++i) - { - field_offsets2_t *new_second = new field_offsets2_t; - for (auto j = i->second.begin(), f = i->second.end(); j != f; ++j) - { - new_second->add (*j); - } - _records2->put(i->first, new_second); - } }; ~type_reconstructor() { delete _reorg_map2; delete _reorg_fields2; delete modified_map2; - delete _records2; } /* Whether a type has already been modified. */ @@ -129,7 +117,7 @@ protected: typedef vec<field_tuple_list2_t> field_tuple_list2_stack2_t; // Which records can be modified. - record_field_offset_map4_t* _records2; + record_field_offset_map4_t& _records2; const char *get_new_suffix (); diff --git a/gcc/ipa-field-reorder.c b/gcc/ipa-field-reorder.c index 04eea5fb90e..936fd735224 100644 --- a/gcc/ipa-field-reorder.c +++ b/gcc/ipa-field-reorder.c @@ -170,7 +170,7 @@ private: class TypeReconstructorFieldReordering : public type_reconstructor { public: - TypeReconstructorFieldReordering (record_field_offset_map3_t records, + TypeReconstructorFieldReordering (record_field_offset_map4_t &records, const char *suffix) : type_reconstructor (records, suffix) {}; @@ -524,16 +524,16 @@ get_reordered_field_maps (record_field_offset_map_t record_field_offset_map, { type_stringifier stringifier; - record_field_offset_map3_t record_field_offset_map2; + record_field_offset_map4_t record_field_offset_map2; for (auto i = record_field_offset_map.begin(), e = record_field_offset_map.end(); i != e; ++i) { - field_offsets2_t _second2; + field_offsets2_t *_second2 = new field_offsets2_t; std::set<unsigned> _second1 = i->second; for (auto j = _second1.begin(), f = _second1.end(); j != f; ++j) { - _second2.add (*j); + _second2->add (*j); } - record_field_offset_map2.insert({i->first, _second2}); + record_field_offset_map2.put(i->first, _second2); } TypeReconstructorFieldReordering reconstructor (record_field_offset_map2, |