https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118551

            Bug ID: 118551
           Summary: Autofdo regressed 538.imagick_r by ~10% with
                    -march=x86-64-v3 -O2
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: gcov-profile
          Assignee: unassigned at gcc dot gnu.org
          Reporter: liuhongt at gcc dot gnu.org
  Target Milestone: ---

Similar like PR116743, it's related to ipa scaling, but in different
place(estimate_bb_frequencies).

         /* If we have profile feedback in which this function was never
            executed, then preserve this info.  */
         if (!(bb->count == profile_count::zero ()))
           bb->count = count.guessed_local ().combine_with_ipa_count
(ipa_count);

ipa_count is the count of the entry block and it's zero, but the whole function
is hot. estimate_bb_frequencies scale every non-zero bb count to zero since
ipa_count is zero, and GCC optimized those BB for size since it thought the bb
is cold.


part to gcov_dump from the hot function:
MeanShiftImage total:17008941 head:0
  2: 0
  25: 0
  26: 0
  29: 0
  30: 0
  31: 0
  32: 0
  32.1: 0
  34: 0
  35: 0
  39: 0
  40: 0
  41: 0
  42: 0
  47.1: 0
  47.2: 0
  61: 0
  63: 0
  64: 1
  66: 1
  71: 1  GetCacheViewVirtualIndexQueue:1
  72.1: 2189
  72.2: 2189
  85: 2197  GetMagickPixelPacket:2268
  87: 2171
  88: 2171
  89.1: 2171
  105: 3788
  106: 3788
  107: 3811  GetMagickPixelPacket:3931
  109: 3788
  110: 3788
  111: 0
  111.1: 72754
  111.2: 72754
  116: 72731
  116.1: 816545
  116.2: 816545
  118: 1381111
  123: 967682  GetOneCacheViewVirtualPixel:998671

Reply via email to