| # 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 |
| |