aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Schwinge <thomas@codesourcery.com>2021-08-31 23:34:23 +0200
committerThomas Schwinge <thomas@codesourcery.com>2021-11-15 17:56:49 +0100
commitbcebd05720540e257b520737de6e087a328c1f8b (patch)
tree17b24ac57fd7afb6cb428cb9ebce09a341a46703
parent6c29c9d6a7d80ece7e08eb546ca4a1ba1430a9b3 (diff)
downloadgcc-bcebd05720540e257b520737de6e087a328c1f8b.zip
gcc-bcebd05720540e257b520737de6e087a328c1f8b.tar.gz
gcc-bcebd05720540e257b520737de6e087a328c1f8b.tar.bz2
Use 'location_hash' for 'seen_locations' in 'gcc/profile.c:branch_prob'
Follow-up to commit 102fcf94e625a2016a65829c73a42bd6c2420376 "Fix GCOV CFG related issues": considering the current 'int_hash <location_t, 0, 2>', per 'libcpp/include/line-map.h': Actual | Value | Meaning -----------+-------------------------------+------------------------------- 0x00000000 | UNKNOWN_LOCATION (gcc/input.h)| Unknown/invalid location. -----------+-------------------------------+------------------------------- 0x00000001 | BUILTINS_LOCATION | The location for declarations | (gcc/input.h) | in "<built-in>" -----------+-------------------------------+------------------------------- 0x00000002 | RESERVED_LOCATION_COUNT | The first location to be | (also | handed out, and the | ordmap[0]->start_location) | first line in ordmap 0 ... this currently uses value '0' ('UNKNOWN_LOCATION') as spare values for 'Empty', and value '2' ('RESERVED_LOCATION_COUNT') as spare values for 'Deleted', which is questionable? What actually does get put into 'seen_locations' is (mostly...) restricted/gated by '!RESERVED_LOCATION_P' (which is true unless 'UNKNOWN_LOCATION' or 'BUILTINS_LOCATION'), thus we may simply use 'location_hash'. gcc/ * profile.c (branch_prob): Use 'location_hash' for 'seen_locations'.
-rw-r--r--gcc/profile.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/profile.c b/gcc/profile.c
index c33c833..d07002d 100644
--- a/gcc/profile.c
+++ b/gcc/profile.c
@@ -1375,7 +1375,7 @@ branch_prob (bool thunk)
/* Initialize the output. */
output_location (&streamed_locations, NULL, 0, NULL, NULL);
- hash_set<int_hash <location_t, 0, 2> > seen_locations;
+ hash_set<location_hash> seen_locations;
FOR_EACH_BB_FN (bb, cfun)
{
@@ -1385,6 +1385,7 @@ branch_prob (bool thunk)
if (bb == ENTRY_BLOCK_PTR_FOR_FN (cfun)->next_bb)
{
location_t loc = DECL_SOURCE_LOCATION (current_function_decl);
+ gcc_checking_assert (!RESERVED_LOCATION_P (loc));
seen_locations.add (loc);
expanded_location curr_location = expand_location (loc);
output_location (&streamed_locations, curr_location.file,