On 16/06/25 22:31, Jan Hubicka wrote:
External email: Use caution opening links or attachments


gcc/ChangeLog:
       * auto-profile.cc (AUTO_PROFILE_VERSION): Bump from 2 to 3.
       (string_table::get_real_name): Define new member function.
       (string_table::get_file_name): Likewise.
       (string_table::get_file_name_idx): Likewise.
       (string_table::real_names_): Define new class member.
       (string_table::file_names_): Likewise.
       (string_table::file_map_): Likewise.
       (string_table::name_instance_map): Update to be a 2-dimensional
       map from function name to file name to function_instance *.
       (string_table::~string_table): Deallocate from real_names_ and
       file_names_ as well.
       (string_table::read): Read file name header from GCOV file.
       (autofdo_source_profile::~autofdo_source_profile): Deallocate
       from nested map.
       (autofdo_source_profile::read): Use file name when storing entry
       into map_.
       (autofdo_source_profile::get_function_instance_by_decl): Use
       DECL_SOURCE_FILE for function_instance lookup.
       (autofdo_source_profile::get_function_instance_by_inline_stack):
       Likewise.

@@ -457,7 +471,12 @@ has_indirect_call (basic_block bb)
  string_table::~string_table ()
  {
    for (unsigned i = 0; i < vector_.length (); i++)
-    free (vector_[i]);
+    {
+      free (vector_[i]);
+      free (real_names_[i]);
+    }
+  for (unsigned i = 0; i < file_names_.length (); i++)
+    free (file_names_[i]);

I see those are auto_vec<char *>

The choice between std::, gcc-spefic C++ containers and plain C
data-structures in this file bit escapes me.  But I guess we can handle
this separately.
  /* Read the string table. Return TRUE if reading is successful.  */

I believe there is a comment describing the file format.  Be sure to
update it.
diff --git a/gcc/testsuite/lib/profopt.exp b/gcc/testsuite/lib/profopt.exp
index b4d244b3132..8f0d0c5c554 100644
--- a/gcc/testsuite/lib/profopt.exp
+++ b/gcc/testsuite/lib/profopt.exp
@@ -451,7 +451,7 @@ proc profopt-execute { src } {
           # convert profile
           if { $run_autofdo == 1 } {
                  set bprefix "afdo."
-             set cmd "create_gcov --binary $execname1 
--profile=$tmpdir/$base.perf.data -gcov_version=2 --gcov=$tmpdir/$bprefix$base.$ext"
+             set cmd "create_gcov --binary $execname1 
--profile=$tmpdir/$base.perf.data --gcov_version=3 --gcov=$tmpdir/$bprefix$base.$ext"

Is this change necessary? Does the create_gcov simply ignore
-gcov-version=2 without error or something like that?

Patch is OK, but please also post the create_gcov changes and wait
with comitting so we can synchronize it with the lnt tester.  I
pushed the change to profile merging and it would be nice to have it
benchmarked tonight.  I will discuss with Petr patching create_gcov
for version 3.

Hi,

Update on this: the create_gcov changes have been posted at
https://github.com/google/autofdo/pull/244.


Honza

--
Regards,
Dhruv

Reply via email to