Allow 0-weight branches in BranchProbabilityInfo.
authorDiego Novillo <dnovillo@google.com>
Wed, 6 May 2015 17:55:11 +0000 (17:55 +0000)
committerDiego Novillo <dnovillo@google.com>
Wed, 6 May 2015 17:55:11 +0000 (17:55 +0000)
commit26e46f2283043c805e3682f3009f67fbaaf5706c
treeae16b211e1dc5996df81f41da84caab5602abbfe
parent5a6ea245b00004cc0e44ce3afee16322a0a34509
Allow 0-weight branches in BranchProbabilityInfo.

Summary:
When computing branch weights in BPI, we used to disallow branches with
weight 0. This is a minor nuisance, because a branch with weight 0 is
different to "don't have information". In the context of
instrumentation, it may mean "never executed", in the context of
sampling, it means "never or seldom executed".

In allowing 0 weight branches, I ran into issues with the switch
expansion code in selection DAG. It is currently hardwired to not handle
branches with weight 0. To maintain the current behaviour, I changed it
to use 1 when it finds 0, but perhaps the algorithm needs changes to
tolerate branches with weight zero.

Reviewers: hansw

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D9533

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236617 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Analysis/BranchProbabilityInfo.cpp
lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
test/Transforms/SampleProfile/branch.ll
test/Transforms/SampleProfile/calls.ll
test/Transforms/SampleProfile/propagate.ll