[PATCH] Improvement on computing edge probabilities when choosing the best successor in machine block placement.

Cong Hou congh at google.com
Mon Jun 29 16:53:07 PDT 2015


Hi chandlerc,

When looking for the best successor from the outer loop for a block belonging to an inner loop, the edge probability computation can be improved so that edges in the inner loop are ignored. For example, suppose we are building chains for the non-loop part of the following code, and looking for B1's best successor. Assume the true body is very hot, then B3 should be the best candidate. However, because of the existence of the back edge from B1 to B0, the probability from B1 to B3 can be very small, preventing B3 to be its successor. In this patch, when computing the probability of the edge from B1 to B3, the weight on the back edge B1->B0 is ignored, so that B1->B3 will have 100% probability.

if (...)
  do {
    B0;
    ... // some branches
    B1;
  } while(...);
else
  B2;
B3;

http://reviews.llvm.org/D10825

Files:
  lib/CodeGen/MachineBlockPlacement.cpp
  test/CodeGen/X86/code_placement_ignore_succ_in_inner_loop.ll

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D10825.28732.patch
Type: text/x-patch
Size: 4712 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150629/64977544/attachment.bin>


More information about the llvm-commits mailing list