summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErick Ochoa <erick.ochoa@theobroma-systems.com>2020-12-03 13:22:31 +0100
committerErick Ochoa <erick.ochoa@theobroma-systems.com>2020-12-03 13:22:31 +0100
commitc0659656008ae3541fb711a04fd72f041f836c44 (patch)
tree2074e8016a9776cf9383f4bebe9c6ebb38f3344c
parent4d0db073fc59bcf7d7171278662610b2596ad3e5 (diff)
records
-rw-r--r--gcc/ipa-dfe.c10
-rw-r--r--gcc/ipa-dfe.h18
-rw-r--r--gcc/ipa-field-reorder.c10
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,