From bcebd05720540e257b520737de6e087a328c1f8b Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Tue, 31 Aug 2021 23:34:23 +0200 Subject: [PATCH] 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 ', 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 "" -----------+-------------------------------+------------------------------- 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'. --- gcc/profile.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 > seen_locations; + hash_set 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, -- 2.7.4