[all-commits] [llvm/llvm-project] 2c391a: [LICM] Make Loop ICM profile aware again

WenleiHe via All-commits all-commits at lists.llvm.org
Tue Sep 15 17:26:01 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 2c391a5a14aeb34e970aba85c5aa540656fe47ca
      https://github.com/llvm/llvm-project/commit/2c391a5a14aeb34e970aba85c5aa540656fe47ca
  Author: Wenlei He <aktoon at gmail.com>
  Date:   2020-09-15 (Tue, 15 Sep 2020)

  Changed paths:
    M llvm/include/llvm/Transforms/Utils/LoopUtils.h
    M llvm/lib/Passes/PassBuilder.cpp
    M llvm/lib/Transforms/Scalar/LICM.cpp
    A llvm/test/Transforms/LICM/Inputs/no-hoist-prof.prof
    A llvm/test/Transforms/LICM/no-hoist-prof.ll
    M llvm/test/Transforms/LICM/sink.ll

  Log Message:
  -----------
  [LICM] Make Loop ICM profile aware again

D65060 was reverted because it introduced non-determinism by using BFI counts from already freed blocks. The parent of this revision fixes that by using a VH callback on blocks to prevent this from happening and makes sure BFI data is passed correctly in LoopStandardAnalysisResults.

This re-introduces the previous optimization of using BFI data to prevent LICM from hoisting/sinking if the instruction will end up moving to a colder block.

Internally at Facebook this change results in a ~7% win in a CPU related metric in one of our big services by preventing hoisting cold code into a hot pre-header like the added test case demonstrates.

Testing:
ninja check

Reviewed By: asbirlea

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




More information about the All-commits mailing list