[PATCH] D54175: [PGO] context sensitive PGO

Rong Xu via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Jan 14 10:38:33 PST 2019


xur updated this revision to Diff 181595.
xur added a comment.
Herald added a subscriber: mgorny.

Fixed the issue with lld (where lld is not happy with the COMDAT variables created
after LTO/ThinLTO)

Add the support of clang bootstrap for CSPGO.

Update the patch.

Tested this patch with google internal benchmarks (mostly for distributed ThinLTO).

Tested this patch with clang bootstrap for CSPGO.
(1) plain CSPGO (new and legacy pass manager).
(2) Thinlto CSPGO with plugin-opt to lld (new-experimental and legacy pass manager).
(3) Fulllto CSPGO with plugin-opt to lld (new-experimental and legacy pass manager).
CSPGO improves 1%-4% (wall time of `ninja clang`) upon regular PGO in clang bootstrap.
Thinlto and Fulllto is ~4% (wall time of `ninja clang`) in the new-experimental pass manager.
Compiling of individual files can improve up to 20%.

I'm working to add tests to this patch

Clang patch:
https://reviews.llvm.org/D54176

Compiler-rt patch:
https://reviews.llvm.org/D54177

lld patch:
https://reviews.llvm.org/D56675


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D54175/new/

https://reviews.llvm.org/D54175

Files:
  CMakeLists.txt
  cmake/modules/HandleLLVMOptions.cmake
  include/llvm/Analysis/ProfileSummaryInfo.h
  include/llvm/IR/Module.h
  include/llvm/IR/ProfileSummary.h
  include/llvm/InitializePasses.h
  include/llvm/LTO/Config.h
  include/llvm/LinkAllPasses.h
  include/llvm/Passes/PassBuilder.h
  include/llvm/ProfileData/InstrProf.h
  include/llvm/ProfileData/InstrProfData.inc
  include/llvm/ProfileData/InstrProfReader.h
  include/llvm/ProfileData/InstrProfWriter.h
  include/llvm/Transforms/IPO/PassManagerBuilder.h
  include/llvm/Transforms/Instrumentation.h
  include/llvm/Transforms/Instrumentation/InstrProfiling.h
  include/llvm/Transforms/Instrumentation/PGOInstrumentation.h
  lib/Analysis/ProfileSummaryInfo.cpp
  lib/IR/Module.cpp
  lib/IR/ProfileSummary.cpp
  lib/LTO/LTOBackend.cpp
  lib/Passes/PassBuilder.cpp
  lib/ProfileData/InstrProf.cpp
  lib/ProfileData/InstrProfReader.cpp
  lib/ProfileData/InstrProfWriter.cpp
  lib/Transforms/IPO/PassManagerBuilder.cpp
  lib/Transforms/IPO/SampleProfile.cpp
  lib/Transforms/Instrumentation/InstrProfiling.cpp
  lib/Transforms/Instrumentation/PGOInstrumentation.cpp
  tools/gold/gold-plugin.cpp
  tools/llvm-profdata/llvm-profdata.cpp
  tools/opt/NewPMDriver.cpp
  unittests/ProfileData/InstrProfTest.cpp
  unittests/ProfileData/SampleProfTest.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D54175.181595.patch
Type: text/x-patch
Size: 86663 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190114/c24d24d8/attachment.bin>


More information about the llvm-commits mailing list