BFI: Saturate when combining edges to a successor
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>
Fri, 5 Dec 2014 19:13:42 +0000 (19:13 +0000)
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>
Fri, 5 Dec 2014 19:13:42 +0000 (19:13 +0000)
commit57cbdfc99a4f19570841ff6dc89eae5f2b9c95cd
tree465df34cc920cede0fc399ed576523e23b94640f
parent3a078aefb63d71945efe58b0627ccc25a936a154
BFI: Saturate when combining edges to a successor

When a loop gets bundled up, its outgoing edges are quite large, and can
just barely overflow 64-bits.  If one successor has multiple incoming
edges -- and that successor is getting all the incoming mass --
combining just its edges can overflow.  Handle that by saturating rather
than asserting.

This fixes PR21622.

llvm-svn: 223500
llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp
llvm/test/Analysis/BlockFrequencyInfo/extremely-likely-loop-successor.ll [new file with mode: 0644]