45 lines · plain
1; RUN: opt -S < %s -passes=jump-threading | FileCheck %s2 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 %bb110 11; CHECK: bb1:12; CHECK-NEXT: and13; CHECK-NEXT: br i1 %c, label %bb2, label %bb714bb1:15 %c = and i1 %v1, %v216 br i1 %c, label %bb2, label %bb517 18; CHECK: bb2:19; CHECK-NEXT: select20; CHECK-NEXT: indirectbr ptr %ba, [label %bb3, label %bb5]21bb2:22 %ba = select i1 %v3, ptr blockaddress(@jtbr, %bb3), ptr blockaddress(@jtbr, %bb4)23 indirectbr ptr %ba, [label %bb3, label %bb4]24 25; CHECK: bb3:26bb3:27 br label %bb128 29; CHECK-NOT: bb4:30bb4:31 br label %bb532 33; CHECK: bb5:34bb5:35 br i1 %c, label %bb6, label %bb736 37; CHECK: bb6:38bb6:39 ret i32 040 41; CHECK: bb7:42bb7:43 ret i32 144}45