aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Schwinge <thomas@codesourcery.com>2021-08-13 21:17:55 +0200
committerThomas Schwinge <thomas@codesourcery.com>2022-02-22 17:43:39 +0100
commit0fe9176f410accc767e0abab010aec843b2e7ea6 (patch)
tree707c49cffaf031a259adc2b33eea71fec158d104
parentf8187b5c0d22723c8e0a3d13d0ea5dd7ecfeff75 (diff)
downloadgcc-0fe9176f410accc767e0abab010aec843b2e7ea6.zip
gcc-0fe9176f410accc767e0abab010aec843b2e7ea6.tar.gz
gcc-0fe9176f410accc767e0abab010aec843b2e7ea6.tar.bz2
Further simplify 'gcc/omp-oacc-neuter-broadcast.cc:record_field_map_t'
Now that I've resolved GCC 'hash_map' issues (a while ago already), we may further simplify this after commit 049eda8274b7394523238b17ab12c3e2889f253e "Avoid 'GTY' use for 'gcc/omp-oacc-neuter-broadcast.cc:field_map'": as 'hash_map' Value, directly store 'field_map_t' objects, not pointers to manually allocated 'field_map_t' objects. gcc/ * omp-oacc-neuter-broadcast.cc (record_field_map_t): Further simplify. Adjust all users.
-rw-r--r--gcc/omp-oacc-neuter-broadcast.cc12
1 files changed, 4 insertions, 8 deletions
diff --git a/gcc/omp-oacc-neuter-broadcast.cc b/gcc/omp-oacc-neuter-broadcast.cc
index 7fb691d..314161e 100644
--- a/gcc/omp-oacc-neuter-broadcast.cc
+++ b/gcc/omp-oacc-neuter-broadcast.cc
@@ -538,7 +538,7 @@ typedef hash_map<tree, tree> field_map_t;
to propagate, to the field in the record type that should be used for
transmission and reception. */
-typedef hash_map<tree, field_map_t *> record_field_map_t;
+typedef hash_map<tree, field_map_t> record_field_map_t;
static void
install_var_field (tree var, tree record_type, field_map_t *fields)
@@ -1168,8 +1168,7 @@ worker_single_copy (basic_block from, basic_block to,
gcc_assert (TREE_CODE (var) == VAR_DECL);
/* If we had no record type, we will have no fields map. */
- field_map_t **fields_p = record_field_map->get (record_type);
- field_map_t *fields = fields_p ? *fields_p : NULL;
+ field_map_t *fields = record_field_map->get (record_type);
if (worker_partitioned_uses->contains (var)
&& fields
@@ -1684,10 +1683,9 @@ oacc_do_neutering (unsigned HOST_WIDE_INT bounds_lo,
field_vec.qsort (sort_by_size_then_ssa_version_or_uid);
- field_map_t *fields = new field_map_t;
-
bool existed;
- existed = record_field_map.put (record_type, fields);
+ field_map_t *fields
+ = &record_field_map.get_or_insert (record_type, &existed);
gcc_checking_assert (!existed);
/* Insert var fields in reverse order, so the last inserted element
@@ -1818,8 +1816,6 @@ oacc_do_neutering (unsigned HOST_WIDE_INT bounds_lo,
&partitioned_var_uses, &record_field_map,
&blk_offset_map, writes_gang_private);
- for (auto it : record_field_map)
- delete it.second;
record_field_map.empty ();
/* These are supposed to have been 'delete'd by 'neuter_worker_single'. */