1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2; RUN: opt -S -passes=jump-threading -verify-dom-info < %s | FileCheck %s 3 4@global = external global i64, align 8 5 6define void @f(i1 %arg) { 7; CHECK-LABEL: @f( 8; CHECK-NEXT: bb: 9; CHECK-NEXT: br label [[BB1:%.*]] 10; CHECK: bb1: 11; CHECK-NEXT: [[TMP:%.*]] = load i64, ptr @global, align 8 12; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i64 [[TMP]], 0 13; CHECK-NEXT: br i1 [[TMP2]], label [[BB27:%.*]], label [[BB3:%.*]] 14; CHECK: bb3: 15; CHECK-NEXT: [[TMP4:%.*]] = load i64, ptr @global, align 8 16; CHECK-NEXT: [[TMP5:%.*]] = icmp eq i64 [[TMP4]], 0 17; CHECK-NEXT: br i1 [[TMP5]], label [[BB23:%.*]], label [[BB23]] 18; CHECK: bb10: 19; CHECK-NEXT: [[TMP11:%.*]] = load i64, ptr @global, align 8 20; CHECK-NEXT: [[TMP12:%.*]] = icmp slt i64 [[TMP11]], 5 21; CHECK-NEXT: br i1 [[TMP12]], label [[BB14:%.*]], label [[BB17:%.*]] 22; CHECK: bb14: 23; CHECK-NEXT: br i1 [[ARG:%.*]], label [[BB15:%.*]], label [[BB10:%.*]] 24; CHECK: bb15: 25; CHECK-NEXT: unreachable 26; CHECK: bb17: 27; CHECK-NEXT: br label [[BB26:%.*]] 28; CHECK: bb18: 29; CHECK-NEXT: br i1 [[ARG]], label [[BB23]], label [[BB14]] 30; CHECK: bb21: 31; CHECK-NEXT: br label [[BB26]] 32; CHECK: bb23: 33; CHECK-NEXT: br i1 [[ARG]], label [[BB24:%.*]], label [[BB14]] 34; CHECK: bb24: 35; CHECK-NEXT: br i1 [[ARG]], label [[BB28:%.*]], label [[BB21:%.*]] 36; CHECK: bb26: 37; CHECK-NEXT: br label [[BB1]] 38; CHECK: bb27: 39; CHECK-NEXT: br label [[BB24]] 40; 41bb: 42 br label %bb1 43 44bb1: 45 %tmp = load i64, ptr @global, align 8 46 %tmp2 = icmp eq i64 %tmp, 0 47 br i1 %tmp2, label %bb27, label %bb3 48 49bb3: 50 %tmp4 = load i64, ptr @global, align 8 51 %tmp5 = icmp eq i64 %tmp4, 0 52 br i1 %tmp5, label %bb6, label %bb7 53 54bb6: 55 br label %bb7 56 57bb7: 58 %tmp8 = phi i1 [ true, %bb3 ], [ undef, %bb6 ] 59 %tmp9 = select i1 %tmp8, i64 %tmp4, i64 0 60 br i1 false, label %bb10, label %bb23 61 62bb10: 63 %tmp11 = load i64, ptr @global, align 8 64 %tmp12 = icmp slt i64 %tmp11, 5 65 br i1 %tmp12, label %bb13, label %bb17 66 67bb13: 68 br label %bb14 69 70bb14: 71 br i1 %arg, label %bb15, label %bb16 72 73bb15: 74 unreachable 75 76bb16: 77 br label %bb10 78 79bb17: 80 br label %bb18 81 82bb18: 83 br i1 %arg, label %bb22, label %bb13 84 85bb19: 86 br i1 %arg, label %bb20, label %bb21 87 88bb20: 89 unreachable 90 91bb21: 92 br label %bb18 93 94bb22: 95 br label %bb23 96 97bb23: 98 br i1 %arg, label %bb24, label %bb13 99 100bb24: 101 br i1 %arg, label %bb26, label %bb25 102 103bb25: 104 br label %bb19 105 106bb26: 107 br label %bb1 108 109bb27: 110 br label %bb24 111} 112