diff options
author | Thomas Schwinge <thomas@codesourcery.com> | 2021-08-13 21:17:55 +0200 |
---|---|---|
committer | Thomas Schwinge <thomas@codesourcery.com> | 2022-02-22 17:43:39 +0100 |
commit | 0fe9176f410accc767e0abab010aec843b2e7ea6 (patch) | |
tree | 707c49cffaf031a259adc2b33eea71fec158d104 /gcc | |
parent | f8187b5c0d22723c8e0a3d13d0ea5dd7ecfeff75 (diff) | |
download | gcc-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.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/omp-oacc-neuter-broadcast.cc | 12 |
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'. */ |