[llvm] r254348 - Replace all weight-based interfaces in MBB with probability-based interfaces, and update all uses of old interfaces.

Cong Hou via llvm-commits llvm-commits at lists.llvm.org
Mon Nov 30 16:56:19 PST 2015


I have also noticed several buildbot failures. I have found the cause
and now testing the patch below:


diff --git a/lib/CodeGen/MachineBlockPlacement.cpp
b/lib/CodeGen/MachineBlockPlacement.cpp
index ddddd48..fcddf34 100644
--- a/lib/CodeGen/MachineBlockPlacement.cpp
+++ b/lib/CodeGen/MachineBlockPlacement.cpp
@@ -423,9 +423,13 @@
MachineBlockPlacement::selectBestSuccessor(MachineBasicBlock *BB,

   DEBUG(dbgs() << "Attempting merge from: " << getBlockName(BB) << "\n");
   for (MachineBasicBlock *Succ : Successors) {
-    BranchProbability SuccProb(
-        MBPI->getEdgeProbability(BB, Succ).getNumerator(),
-        AdjustedSumProb.getNumerator());
+    BranchProbability SuccProb;
+    uint32_t SuccProbN = MBPI->getEdgeProbability(BB, Succ).getNumerator();
+    uint32_t SuccProbD = AdjustedSumProb.getNumerator();
+    if (SuccProbN >= SuccProbD)
+      SuccProb = BranchProbability::getOne();
+    else
+      SuccProb = BranchProbability(SuccProbN, SuccProbD);

     // If we outline optional branches, look whether Succ is unavoidable, i.e.
     // dominates all terminators of the MachineFunction. If it does, other


Thank you for reporting this!


thanks,
Cong


On Mon, Nov 30, 2015 at 4:51 PM, Hans Wennborg <hans at chromium.org> wrote:
> On Mon, Nov 30, 2015 at 4:02 PM, Cong Hou via llvm-commits
> <llvm-commits at lists.llvm.org> wrote:
>> Author: conghou
>> Date: Mon Nov 30 18:02:51 2015
>> New Revision: 254348
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=254348&view=rev
>> Log:
>> Replace all weight-based interfaces in MBB with probability-based interfaces, and update all uses of old interfaces.
>
> [...]
>
>> @@ -43,6 +46,19 @@ BranchProbability::BranchProbability(uin
>>    }
>>  }
>>
>> +BranchProbability
>> +BranchProbability::getBranchProbability(uint64_t Numerator,
>> +                                        uint64_t Denominator) {
>> +  assert(Numerator <= Denominator && "Probability cannot be bigger than 1!");
>
> We hit this assert pretty early in a Chromium build:
>
> http://build.chromium.org/p/chromium.fyi/builders/ClangToTWin/builds/5080/steps/compile/logs/stdio
>
> I'll see if I can extract a reproducer.


More information about the llvm-commits mailing list