[all-commits] [llvm/llvm-project] 813848: [BrachProbablityInfo] Set edge probabilities at on...

Yevgeny Rouban via All-commits all-commits at lists.llvm.org
Wed May 20 23:04:48 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 8138487468e22cf8fa1a86816a1e3247b8010760
      https://github.com/llvm/llvm-project/commit/8138487468e22cf8fa1a86816a1e3247b8010760
  Author: Yevgeny Rouban <yrouban at azul.com>
  Date:   2020-05-21 (Thu, 21 May 2020)

  Changed paths:
    M llvm/include/llvm/Analysis/BranchProbabilityInfo.h
    M llvm/lib/Analysis/BranchProbabilityInfo.cpp
    M llvm/lib/Transforms/Scalar/JumpThreading.cpp
    M llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp
    M llvm/lib/Transforms/Utils/CodeExtractor.cpp
    M llvm/test/Analysis/BranchProbabilityInfo/basic.ll
    M llvm/unittests/Transforms/Utils/BasicBlockUtilsTest.cpp

  Log Message:
  -----------
  [BrachProbablityInfo] Set edge probabilities at once and fix calcMetadataWeights()

Hide the method that allows setting probability for particular edge
and introduce a public method that sets probabilities for all
outgoing edges at once.
Setting individual edge probability is error prone. More over it is
difficult to check that the total probability is 1.0 because there is
no easy way to know when the user finished setting all
the probabilities.

Related bug is fixed in BranchProbabilityInfo::calcMetadataWeights().
Changing unreachable branch probabilities to raw(1) and distributing
the rest (oldProbability - raw(1)) over the reachable branches could
introduce total probability inaccuracy bigger than 1/numOfBranches.

Reviewers: yamauchi, ebrevnov
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D79396




More information about the All-commits mailing list