mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-21 21:29:41 +00:00
This reverts commit r206677, reapplying my BlockFrequencyInfo rewrite. I've done a careful audit, added some asserts, and fixed a couple of bugs (unfortunately, they were in unlikely code paths). There's a small chance that this will appease the failing bots [1][2]. (If so, great!) If not, I have a follow-up commit ready that will temporarily add -debug-only=block-freq to the two failing tests, allowing me to compare the code path between what the failing bots and what my machines (and the rest of the bots) are doing. Once I've triggered those builds, I'll revert both commits so the bots go green again. [1]: http://bb.pgr.jp/builders/ninja-x64-msvc-RA-centos6/builds/1816 [2]: http://llvm-amd64.freebsd.your.org/b/builders/clang-i386-freebsd/builds/18445 <rdar://problem/14292693> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206704 91177308-0d34-0410-b5e6-96231b3b80d8
45 lines
1.1 KiB
LLVM
45 lines
1.1 KiB
LLVM
; 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}
|