| ; 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(i1 %arg) { | |
| ; 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: bb10: | |
| ; CHECK-NEXT: [[TMP11:%.*]] = load i64, ptr @global, align 8 | |
| ; CHECK-NEXT: [[TMP12:%.*]] = icmp slt i64 [[TMP11]], 5 | |
| ; CHECK-NEXT: br i1 [[TMP12]], label [[BB14:%.*]], label [[BB17:%.*]] | |
| ; CHECK: bb14: | |
| ; CHECK-NEXT: br i1 [[ARG:%.*]], label [[BB15:%.*]], label [[BB10:%.*]] | |
| ; CHECK: bb15: | |
| ; CHECK-NEXT: unreachable | |
| ; CHECK: bb17: | |
| ; CHECK-NEXT: br label [[BB26:%.*]] | |
| ; CHECK: bb18: | |
| ; CHECK-NEXT: br i1 [[ARG]], label [[BB23]], label [[BB14]] | |
| ; CHECK: bb21: | |
| ; CHECK-NEXT: br label [[BB26]] | |
| ; CHECK: bb23: | |
| ; CHECK-NEXT: br i1 [[ARG]], label [[BB24:%.*]], label [[BB14]] | |
| ; CHECK: bb24: | |
| ; CHECK-NEXT: br i1 [[ARG]], label [[BB28:%.*]], label [[BB21:%.*]] | |
| ; CHECK: bb26: | |
| ; CHECK-NEXT: br label [[BB1]] | |
| ; CHECK: bb27: | |
| ; CHECK-NEXT: br label [[BB24]] | |
| ; | |
| 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 %arg, label %bb15, label %bb16 | |
| bb15: | |
| unreachable | |
| bb16: | |
| br label %bb10 | |
| bb17: | |
| br label %bb18 | |
| bb18: | |
| br i1 %arg, label %bb22, label %bb13 | |
| bb19: | |
| br i1 %arg, label %bb20, label %bb21 | |
| bb20: | |
| unreachable | |
| bb21: | |
| br label %bb18 | |
| bb22: | |
| br label %bb23 | |
| bb23: | |
| br i1 %arg, label %bb24, label %bb13 | |
| bb24: | |
| br i1 %arg, label %bb26, label %bb25 | |
| bb25: | |
| br label %bb19 | |
| bb26: | |
| br label %bb1 | |
| bb27: | |
| br label %bb24 | |
| } |