1; RUN: opt -S < %s -jump-threading | FileCheck %s 2 3; PR40992: Do not incorrectly fold %bb5 into an unconditional br to %bb7. 4; Also verify we correctly thread %bb1 -> %bb7 when %c is false. 5 6define i32 @jtbr(i1 %v1, i1 %v2, i1 %v3) { 7; CHECK: bb0: 8bb0: 9 br label %bb1 10 11; CHECK: bb1: 12; CHECK-NEXT: and 13; CHECK-NEXT: br i1 %c, label %bb2, label %bb7 14bb1: 15 %c = and i1 %v1, %v2 16 br i1 %c, label %bb2, label %bb5 17 18; CHECK: bb2: 19; CHECK-NEXT: select 20; CHECK-NEXT: indirectbr i8* %ba, [label %bb3, label %bb5] 21bb2: 22 %ba = select i1 %v3, i8* blockaddress(@jtbr, %bb3), i8* blockaddress(@jtbr, %bb4) 23 indirectbr i8* %ba, [label %bb3, label %bb4] 24 25; CHECK: bb3: 26bb3: 27 br label %bb1 28 29; CHECK-NOT: bb4: 30bb4: 31 br label %bb5 32 33; CHECK: bb5: 34bb5: 35 br i1 %c, label %bb6, label %bb7 36 37; CHECK: bb6: 38bb6: 39 ret i32 0 40 41; CHECK: bb7: 42bb7: 43 ret i32 1 44} 45