Fixes a regression introduced I bisected to this commit:
commit 385d9937f0e23cbf9c62f0b2553a33ff70e56ecf
Author: Jan Hubicka <[email protected]>
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
gcc/ChangeLog:
* profile.cc (branch_prob): Record seen_locations without
discriminators.
---
gcc/profile.cc | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/gcc/profile.cc b/gcc/profile.cc
index 5d581e7b5ec..dbbeee1bbfb 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,
--
2.39.5