blob: f04fa1ad37c08c66bee78fe0eca98bd5d031be33 [file]
# RUN: llc -mtriple=x86_64-unknown-linux-gnu -run-pass=block-placement -profile-likely-prob=80 %s -o - | FileCheck %s
#
# Test for profiled triangular CFG handling in MachineBlockPlacement
# Verify that a large ProfileLikelyProb value does not fail compilation
--- |
define i32 @main(i32 %argc, ptr %argv) #0 !prof !0 {
entry:
%cmp = icmp sgt i32 %argc, 1
br i1 %cmp, label %pred, label %succ, !prof !1
succ:
ret i32 0
pred:
br label %succ
}
attributes #0 = { nounwind "use-sample-profile" }
!0 = !{!"function_entry_count", i64 1}
!1 = !{!"branch_weights", i32 0, i32 1}
...
---
name: main
alignment: 1
tracksRegLiveness: true
noPhis: true
isSSA: false
noVRegs: true
liveins:
- { reg: '$edi', virtual-reg: '' }
body: |
bb.0.entry:
successors: %bb.1(0x00000000), %bb.2(0x80000000)
liveins: $edi
CMP32ri killed renamable $edi, 1, implicit-def $eflags
JCC_1 %bb.2, 15, implicit killed $eflags
bb.1.succ:
$eax = MOV32ri 0
RET64 $eax
bb.2.pred:
successors: %bb.1(0x80000000)
JMP_1 %bb.1
...
# CHECK: name: main
# CHECK: bb.0.entry:
# CHECK: successors: %bb.1
# CHECK-SAME: %bb.2
# CHECK: JCC_1 %bb.1
# CHECK: bb.2.pred:
# CHECK: successors: %bb.1
# CHECK: bb.1.succ:
# CHECK: RET64