[PATCH] D17830: [MBP] Avoid placing random blocks between loop preheader and header
Philip Reames via llvm-commits
llvm-commits at lists.llvm.org
Wed Mar 2 16:06:33 PST 2016
This revision was automatically updated to reflect the committed changes.
Closed by commit rL262547: [MBP] Avoid placing random blocks between loop preheader and header (authored by reames).
Changed prior to commit:
http://reviews.llvm.org/D17830?vs=49673&id=49686#toc
Repository:
rL LLVM
http://reviews.llvm.org/D17830
Files:
llvm/trunk/lib/CodeGen/MachineBlockPlacement.cpp
llvm/trunk/test/CodeGen/X86/mbp-false-cfg-break.ll
Index: llvm/trunk/test/CodeGen/X86/mbp-false-cfg-break.ll
===================================================================
--- llvm/trunk/test/CodeGen/X86/mbp-false-cfg-break.ll
+++ llvm/trunk/test/CodeGen/X86/mbp-false-cfg-break.ll
@@ -0,0 +1,39 @@
+; RUN: llc < %s -march=x86-64 | FileCheck %s
+
+define void @test(i1 %cnd) !prof !{!"function_entry_count", i64 1024} {
+; CHECK-LABEL: @test
+; Using the assembly comments to indicate block order..
+; CHECK: # %loop
+; CHECK: # %backedge
+; CHECK: # %exit
+; CHECK: # %rare
+; CHECK: # %rare.1
+
+ br i1 undef, label %rare.1, label %preheader, !prof !{!"branch_weights", i32 0, i32 1000}
+rare.1:
+ call void @foo()
+ br label %preheader
+
+preheader:
+ br label %loop
+
+loop:
+ %iv = phi i32 [0, %preheader], [%iv.next, %backedge]
+ call void @foo()
+ br i1 %cnd, label %backedge, label %rare, !prof !{!"branch_weights", i32 1000000, i32 1}
+rare:
+ call void @foo()
+ br label %backedge
+backedge:
+ call void @foo()
+ %iv.next = add i32 %iv, 1
+ %cmp = icmp eq i32 %iv.next, 200
+ br i1 %cmp, label %loop, label %exit, !prof !{!"branch_weights", i32 1000, i32 1}
+
+exit:
+ ret void
+
+}
+
+
+declare void @foo()
Index: llvm/trunk/lib/CodeGen/MachineBlockPlacement.cpp
===================================================================
--- llvm/trunk/lib/CodeGen/MachineBlockPlacement.cpp
+++ llvm/trunk/lib/CodeGen/MachineBlockPlacement.cpp
@@ -466,7 +466,8 @@
MBFI->getBlockFreq(BB) * RealSuccProb * HotProb.getCompl();
bool BadCFGConflict = false;
for (MachineBasicBlock *Pred : Succ->predecessors()) {
- if (Pred == Succ || (BlockFilter && !BlockFilter->count(Pred)) ||
+ if (Pred == Succ || BlockToChain[Pred] == &SuccChain ||
+ (BlockFilter && !BlockFilter->count(Pred)) ||
BlockToChain[Pred] == &Chain)
continue;
BlockFrequency PredEdgeFreq =
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D17830.49686.patch
Type: text/x-patch
Size: 1907 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160303/6497eba4/attachment.bin>
More information about the llvm-commits
mailing list