From: Jørgen Kvalsvik Date: Wed, 5 Nov 2025 19:15:50 +0000 (+0100) Subject: gcov: Only consider pure locations in line mapping X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2df6b3b9e870618295ffbe7111520b7901c45df9;p=thirdparty%2Fgcc.git gcov: Only consider pure locations in line mapping Fixes a regression introduced I bisected to this commit: commit 385d9937f0e23cbf9c62f0b2553a33ff70e56ecf Author: Jan Hubicka Date: Fri Jul 11 13:01:13 2025 +0200 Rewrite assign_discriminators That patch adds discriminators to edge->goto_locus which will map to the right source location, but breaks the equality comparison used in the hash set. Fixes these tests: gcc/testsuite/gcc.misc-tests/gcov-pr83813.c gcc/testsuite/gcc.misc-tests/gcov-pr84758.c gcc/testsuite/gcc.misc-tests/gcov-pr85332.c gcc/testsuite/gcc.misc-tests/gcov-pr85372.c PR gcov-profile/121084 PR gcov-profile/121123 PR gcov-profile/121409 gcc/ChangeLog: * profile.cc (branch_prob): Record seen_locations without discriminators. --- diff --git a/gcc/profile.cc b/gcc/profile.cc index 21e33b985dc..17841fc723a 100644 --- a/gcc/profile.cc +++ b/gcc/profile.cc @@ -1554,7 +1554,7 @@ branch_prob (bool thunk) location_t loc = DECL_SOURCE_LOCATION (current_function_decl); if (!RESERVED_LOCATION_P (loc)) { - seen_locations.add (loc); + seen_locations.add (get_pure_location (loc)); expanded_location curr_location = expand_location (loc); output_location (&streamed_locations, curr_location.file, MAX (1, curr_location.line), &offset, bb); @@ -1567,7 +1567,7 @@ branch_prob (bool thunk) location_t loc = gimple_location (stmt); if (!RESERVED_LOCATION_P (loc)) { - seen_locations.add (loc); + seen_locations.add (get_pure_location (loc)); output_location (&streamed_locations, gimple_filename (stmt), MAX (1, gimple_lineno (stmt)), &offset, bb); } @@ -1580,7 +1580,7 @@ branch_prob (bool thunk) if (single_succ_p (bb) && (loc = single_succ_edge (bb)->goto_locus) && !RESERVED_LOCATION_P (loc) - && !seen_locations.contains (loc)) + && !seen_locations.contains (get_pure_location (loc))) { expanded_location curr_location = expand_location (loc); output_location (&streamed_locations, curr_location.file,