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

Reply via email to