1*28a93274SXinliang David Li; RUN: opt < %s -passes='print<block-freq>' -disable-output 2>&1 | FileCheck %s 210be9a88SDuncan P. N. Exon Smith 310be9a88SDuncan P. N. Exon Smith; CHECK-LABEL: Printing analysis {{.*}} for function 'nested_loop_with_branches' 410be9a88SDuncan P. N. Exon Smith; CHECK-NEXT: block-frequency-info: nested_loop_with_branches 510be9a88SDuncan P. N. Exon Smithdefine void @nested_loop_with_branches(i32 %a) { 610be9a88SDuncan P. N. Exon Smith; CHECK-NEXT: entry: float = 1.0, int = [[ENTRY:[0-9]+]] 710be9a88SDuncan P. N. Exon Smithentry: 810be9a88SDuncan P. N. Exon Smith %v0 = call i1 @foo0(i32 %a) 910be9a88SDuncan P. N. Exon Smith br i1 %v0, label %exit, label %outer, !prof !0 1010be9a88SDuncan P. N. Exon Smith 1110be9a88SDuncan P. N. Exon Smith; CHECK-NEXT: outer: float = 12.0, 1210be9a88SDuncan P. N. Exon Smithouter: 1310be9a88SDuncan P. N. Exon Smith %i = phi i32 [ 0, %entry ], [ %i.next, %inner.end ], [ %i.next, %no_inner ] 1410be9a88SDuncan P. N. Exon Smith %i.next = add i32 %i, 1 1510be9a88SDuncan P. N. Exon Smith %do_inner = call i1 @foo1(i32 %i) 1610be9a88SDuncan P. N. Exon Smith br i1 %do_inner, label %no_inner, label %inner, !prof !0 1710be9a88SDuncan P. N. Exon Smith 1810be9a88SDuncan P. N. Exon Smith; CHECK-NEXT: inner: float = 36.0, 1910be9a88SDuncan P. N. Exon Smithinner: 2010be9a88SDuncan P. N. Exon Smith %j = phi i32 [ 0, %outer ], [ %j.next, %inner.end ] 2110be9a88SDuncan P. N. Exon Smith %side = call i1 @foo3(i32 %j) 2210be9a88SDuncan P. N. Exon Smith br i1 %side, label %left, label %right, !prof !0 2310be9a88SDuncan P. N. Exon Smith 2410be9a88SDuncan P. N. Exon Smith; CHECK-NEXT: left: float = 9.0, 2510be9a88SDuncan P. N. Exon Smithleft: 2610be9a88SDuncan P. N. Exon Smith %v4 = call i1 @foo4(i32 %j) 2710be9a88SDuncan P. N. Exon Smith br label %inner.end 2810be9a88SDuncan P. N. Exon Smith 2910be9a88SDuncan P. N. Exon Smith; CHECK-NEXT: right: float = 27.0, 3010be9a88SDuncan P. N. Exon Smithright: 3110be9a88SDuncan P. N. Exon Smith %v5 = call i1 @foo5(i32 %j) 3210be9a88SDuncan P. N. Exon Smith br label %inner.end 3310be9a88SDuncan P. N. Exon Smith 3410be9a88SDuncan P. N. Exon Smith; CHECK-NEXT: inner.end: float = 36.0, 3510be9a88SDuncan P. N. Exon Smithinner.end: 3610be9a88SDuncan P. N. Exon Smith %stay_inner = phi i1 [ %v4, %left ], [ %v5, %right ] 3710be9a88SDuncan P. N. Exon Smith %j.next = add i32 %j, 1 3810be9a88SDuncan P. N. Exon Smith br i1 %stay_inner, label %inner, label %outer, !prof !1 3910be9a88SDuncan P. N. Exon Smith 4010be9a88SDuncan P. N. Exon Smith; CHECK-NEXT: no_inner: float = 3.0, 4110be9a88SDuncan P. N. Exon Smithno_inner: 4210be9a88SDuncan P. N. Exon Smith %continue = call i1 @foo6(i32 %i) 4310be9a88SDuncan P. N. Exon Smith br i1 %continue, label %outer, label %exit, !prof !1 4410be9a88SDuncan P. N. Exon Smith 4510be9a88SDuncan P. N. Exon Smith; CHECK-NEXT: exit: float = 1.0, int = [[ENTRY]] 4610be9a88SDuncan P. N. Exon Smithexit: 4710be9a88SDuncan P. N. Exon Smith ret void 4810be9a88SDuncan P. N. Exon Smith} 4910be9a88SDuncan P. N. Exon Smith 5010be9a88SDuncan P. N. Exon Smithdeclare i1 @foo0(i32) 5110be9a88SDuncan P. N. Exon Smithdeclare i1 @foo1(i32) 5210be9a88SDuncan P. N. Exon Smithdeclare i1 @foo2(i32) 5310be9a88SDuncan P. N. Exon Smithdeclare i1 @foo3(i32) 5410be9a88SDuncan P. N. Exon Smithdeclare i1 @foo4(i32) 5510be9a88SDuncan P. N. Exon Smithdeclare i1 @foo5(i32) 5610be9a88SDuncan P. N. Exon Smithdeclare i1 @foo6(i32) 5710be9a88SDuncan P. N. Exon Smith 58be7ea19bSDuncan P. N. Exon Smith!0 = !{!"branch_weights", i32 1, i32 3} 59be7ea19bSDuncan P. N. Exon Smith!1 = !{!"branch_weights", i32 3, i32 1} 60