blob: 050899f84a2f26c4f9b8546ed33d0cd511c4b90d [file] [edit]
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -passes=hotcoldsplit -S < %s | FileCheck %s
define i64 @combined_bridge() {
; CHECK-LABEL: define i64 @combined_bridge() {
; CHECK-NEXT: [[ENTRY:.*:]]
; CHECK-NEXT: br i1 false, label %[[LOOP:.*]], label %[[FAILED:.*]], !prof [[PROF0:![0-9]+]]
; CHECK: [[LOOP]]:
; CHECK-NEXT: br i1 false, label %[[GUARDED:.*]], label %[[DEOPT:.*]]
; CHECK: [[DEOPT]]:
; CHECK-NEXT: [[TMP0:%.*]] = call i64 (...) @llvm.experimental.deoptimize.i64() [ "deopt"() ]
; CHECK-NEXT: ret i64 [[TMP0]]
; CHECK: [[GUARDED]]:
; CHECK-NEXT: [[I:%.*]] = add i32 0, 0
; CHECK-NEXT: [[J:%.*]] = icmp ult i32 0, 0
; CHECK-NEXT: ret i64 0
; CHECK: [[FAILED]]:
; CHECK-NEXT: ret i64 0
;
entry:
br i1 false, label %loop, label %failed, !prof !0
loop: ; preds = %entry
br i1 false, label %guarded, label %deopt
deopt: ; preds = %loop
%0 = call i64 (...) @llvm.experimental.deoptimize.i64() [ "deopt"() ]
ret i64 %0
guarded: ; preds = %loop
%i = add i32 0, 0
%j = icmp ult i32 0, 0
ret i64 0
failed: ; preds = %entry
ret i64 0
}
declare i64 @llvm.experimental.deoptimize.i64(...)
!0 = !{!"branch_weights", i32 1, i32 1000}
;.
; CHECK: [[PROF0]] = !{!"branch_weights", i32 1, i32 1000}
;.