; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -S -passes=jump-threading -verify-dom-info < %s | FileCheck %s
@global = external global i64, align 8
define void @f() {
; CHECK-LABEL: @f(
; CHECK-NEXT: bb:
; CHECK-NEXT: br label [[BB1:%.*]]
; CHECK: bb1:
; CHECK-NEXT: [[TMP:%.*]] = load i64, ptr @global, align 8
; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i64 [[TMP]], 0
; CHECK-NEXT: br i1 [[TMP2]], label [[BB27:%.*]], label [[BB3:%.*]]
; CHECK: bb3:
; CHECK-NEXT: [[TMP4:%.*]] = load i64, ptr @global, align 8
; CHECK-NEXT: [[TMP5:%.*]] = icmp eq i64 [[TMP4]], 0
; CHECK-NEXT: br i1 [[TMP5]], label [[BB23:%.*]], label [[BB23]]
; CHECK: bb23:
; CHECK-NEXT: br label [[BB26:%.*]]
; CHECK: bb26:
; CHECK-NEXT: br label [[BB1]]
; CHECK: bb27:
; CHECK-NEXT: br label [[BB26]]
;
bb:
br label %bb1
bb1:
%tmp = load i64, ptr @global, align 8
%tmp2 = icmp eq i64 %tmp, 0
br i1 %tmp2, label %bb27, label %bb3
bb3:
%tmp4 = load i64, ptr @global, align 8
%tmp5 = icmp eq i64 %tmp4, 0
br i1 %tmp5, label %bb6, label %bb7
bb6:
br label %bb7
bb7:
%tmp8 = phi i1 [ true, %bb3 ], [ undef, %bb6 ]
%tmp9 = select i1 %tmp8, i64 %tmp4, i64 0
br i1 false, label %bb10, label %bb23
bb10:
%tmp11 = load i64, ptr @global, align 8
%tmp12 = icmp slt i64 %tmp11, 5
br i1 %tmp12, label %bb13, label %bb17
bb13:
br label %bb14
bb14:
br i1 undef, label %bb15, label %bb16
bb15:
unreachable
bb16:
br label %bb10
bb17:
br label %bb18
bb18:
br i1 undef, label %bb22, label %bb13
bb19:
br i1 undef, label %bb20, label %bb21
bb20:
unreachable
bb21:
br label %bb18
bb22:
br label %bb23
bb23:
br i1 undef, label %bb24, label %bb13
bb24:
br i1 undef, label %bb26, label %bb25
bb25:
br label %bb19
bb26:
br label %bb1
bb27:
br label %bb24
}