summaryrefslogtreecommitdiffstats
path: root/llvm/test/Analysis/BlockFrequencyInfo/loop_with_branch.ll
diff options
context:
space:
mode:
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>2014-04-18 17:22:25 +0000
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>2014-04-18 17:22:25 +0000
commitf8361d127a92b81126a5370b50944bef169fbcff (patch)
tree6a7a566c01292b7648d622a3ee4900b646cedc28 /llvm/test/Analysis/BlockFrequencyInfo/loop_with_branch.ll
parentc812b5b33a1d0ec9f7b6978ac1fb0112093eedf6 (diff)
downloadbcm5719-llvm-f8361d127a92b81126a5370b50944bef169fbcff.tar.gz
bcm5719-llvm-f8361d127a92b81126a5370b50944bef169fbcff.zip
Reapply "blockfreq: Rewrite BlockFrequencyInfoImpl"
This reverts commit r206556, effectively reapplying commit r206548 and its fixups in r206549 and r206550. In an intervening commit I've added target triples to the tests that were failing remotely [1] (but passing locally). I'm hoping the mystery is solved? I'll revert this again if the tests are still failing remotely. [1]: http://bb.pgr.jp/builders/ninja-x64-msvc-RA-centos6/builds/1816 llvm-svn: 206622
Diffstat (limited to 'llvm/test/Analysis/BlockFrequencyInfo/loop_with_branch.ll')
-rw-r--r--llvm/test/Analysis/BlockFrequencyInfo/loop_with_branch.ll44
1 files changed, 44 insertions, 0 deletions
diff --git a/llvm/test/Analysis/BlockFrequencyInfo/loop_with_branch.ll b/llvm/test/Analysis/BlockFrequencyInfo/loop_with_branch.ll
new file mode 100644
index 00000000000..9d27b6bf0f2
--- /dev/null
+++ b/llvm/test/Analysis/BlockFrequencyInfo/loop_with_branch.ll
@@ -0,0 +1,44 @@
+; RUN: opt < %s -analyze -block-freq | FileCheck %s
+
+; CHECK-LABEL: Printing analysis {{.*}} for function 'loop_with_branch':
+; CHECK-NEXT: block-frequency-info: loop_with_branch
+define void @loop_with_branch(i32 %a) {
+; CHECK-NEXT: entry: float = 1.0, int = [[ENTRY:[0-9]+]]
+entry:
+ %skip_loop = call i1 @foo0(i32 %a)
+ br i1 %skip_loop, label %skip, label %header, !prof !0
+
+; CHECK-NEXT: skip: float = 0.25,
+skip:
+ br label %exit
+
+; CHECK-NEXT: header: float = 4.5,
+header:
+ %i = phi i32 [ 0, %entry ], [ %i.next, %back ]
+ %i.next = add i32 %i, 1
+ %choose = call i2 @foo1(i32 %i)
+ switch i2 %choose, label %exit [ i2 0, label %left
+ i2 1, label %right ], !prof !1
+
+; CHECK-NEXT: left: float = 1.5,
+left:
+ br label %back
+
+; CHECK-NEXT: right: float = 2.25,
+right:
+ br label %back
+
+; CHECK-NEXT: back: float = 3.75,
+back:
+ br label %header
+
+; CHECK-NEXT: exit: float = 1.0, int = [[ENTRY]]
+exit:
+ ret void
+}
+
+declare i1 @foo0(i32)
+declare i2 @foo1(i32)
+
+!0 = metadata !{metadata !"branch_weights", i32 1, i32 3}
+!1 = metadata !{metadata !"branch_weights", i32 1, i32 2, i32 3}
OpenPOWER on IntegriCloud