diff options
author | Eugene Rozenfeld <erozen@microsoft.com> | 2022-04-25 11:45:43 -0700 |
---|---|---|
committer | Eugene Rozenfeld <erozen@microsoft.com> | 2022-10-25 14:02:48 -0700 |
commit | 65f5fa23844b55e3c6359e1612e6fdd4d10950d0 (patch) | |
tree | 1879da71c05e147c439d113b5b189bdc818522e3 /gcc | |
parent | 43e654afeba484d75fbee080262a038c1da00ad5 (diff) | |
download | gcc-65f5fa23844b55e3c6359e1612e6fdd4d10950d0.zip gcc-65f5fa23844b55e3c6359e1612e6fdd4d10950d0.tar.gz gcc-65f5fa23844b55e3c6359e1612e6fdd4d10950d0.tar.bz2 |
Start using discriminators in AutoFDO.
Tested on x86_64-pc-linux-gnu.
gcc/ChangeLog:
* auto-profile.cc (get_combined_location): Include discriminator in the
returned combined location.
(read_function_instance): Read discriminators from profiles.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/auto-profile.cc | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/auto-profile.cc b/gcc/auto-profile.cc index ca48404..9730732 100644 --- a/gcc/auto-profile.cc +++ b/gcc/auto-profile.cc @@ -363,7 +363,8 @@ get_combined_location (location_t loc, tree decl) /* TODO: allow more bits for line and less bits for discriminator. */ if (LOCATION_LINE (loc) - DECL_SOURCE_LINE (decl) >= (1<<16)) warning_at (loc, OPT_Woverflow, "offset exceeds 16 bytes"); - return ((LOCATION_LINE (loc) - DECL_SOURCE_LINE (decl)) << 16); + return ((LOCATION_LINE (loc) - DECL_SOURCE_LINE (decl)) << 16) + | get_discriminator_from_loc (loc); } /* Return the function decl of a given lexical BLOCK. */ @@ -652,7 +653,7 @@ function_instance::read_function_instance (function_instance_stack *stack, for (unsigned i = 0; i < num_pos_counts; i++) { - unsigned offset = gcov_read_unsigned () & 0xffff0000; + unsigned offset = gcov_read_unsigned (); unsigned num_targets = gcov_read_unsigned (); gcov_type count = gcov_read_counter (); s->pos_counts[offset].count = count; |