[all-commits] [llvm/llvm-project] 365b22: [PGO] Fix two issues in PGOMemOPSizeOpt.

hjyamauchi via All-commits all-commits at lists.llvm.org
Thu Mar 11 09:53:36 PST 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 365b225d461899abc437f4a291181de5c80d03d4
      https://github.com/llvm/llvm-project/commit/365b225d461899abc437f4a291181de5c80d03d4
  Author: Hiroshi Yamauchi <yamauchi at google.com>
  Date:   2021-03-11 (Thu, 11 Mar 2021)

  Changed paths:
    M compiler-rt/include/profile/InstrProfData.inc
    M llvm/include/llvm/ProfileData/InstrProfData.inc
    M llvm/lib/Transforms/Instrumentation/PGOMemOPSizeOpt.cpp
    M llvm/test/Transforms/PGOProfile/memop_size_opt.ll
    A llvm/test/Transforms/PGOProfile/memop_size_opt_skip_ranges_promote_three.ll

  Log Message:
  -----------
  [PGO] Fix two issues in PGOMemOPSizeOpt.

1. PGOMemOPSizeOpt grabs only the first, up to five (by default) entries from
the value profile metadata and preserves the remaining entries for the fallback
memop call site. If there are more than five entries, the rest of the entries
would get dropped. This is fine for PGOMemOPSizeOpt itself as it only promotes
up to 3 (by default) values, but potentially not for other downstream passes
that may use the value profile metadata.

2. PGOMemOPSizeOpt originally assumed that only values 0 through 8 are kept
track of. When the range buckets were introduced, it was changed to skip the
range buckets, but since it does not grab all entries (only five), if some range
buckets exist in the first five entries, it could potentially cause fewer
promotion opportunities (eg. if 4 out of 5 were range buckets, it may be able to
promote up to one non-range bucket, as opposed to 3.) Also, combined with 1, it
means that wrong entries may be preserved, as it didn't correctly keep track of
which were entries were skipped.

To fix this, PGOMemOPSizeOpt now grabs all the entries (up to the maximum number
of value profile buckets), keeps track of which entries were skipped, and
preserves all the remaining entries.

Differential Revision: https://reviews.llvm.org/D97592




More information about the All-commits mailing list