; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
;RUN: opt < %s -jump-threading -S | FileCheck %s


declare void @bar(...)
declare void @baz(...)

; Make sure we thread the end of the bar block to the end of the function.
define void @test1(i32 %x) {
; CHECK-LABEL: @test1(
; CHECK-NEXT:  entry:
; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i32 [[X:%.*]], 9
; CHECK-NEXT:    br i1 [[CMP]], label [[IF_END_THREAD:%.*]], label [[IF_END:%.*]]
; CHECK:       if.end.thread:
; CHECK-NEXT:    call void (...) @bar()
; CHECK-NEXT:    br label [[IF_END4:%.*]]
; CHECK:       if.end:
; CHECK-NEXT:    [[X_OFF:%.*]] = add i32 [[X]], -3
; CHECK-NEXT:    [[TMP0:%.*]] = icmp ult i32 [[X_OFF]], 5
; CHECK-NEXT:    br i1 [[TMP0]], label [[IF_THEN3:%.*]], label [[IF_END4]]
; CHECK:       if.then3:
; CHECK-NEXT:    call void (...) @baz()
; CHECK-NEXT:    br label [[IF_END4]]
; CHECK:       if.end4:
; CHECK-NEXT:    ret void
;
entry:
  %cmp = icmp sgt i32 %x, 9
  br i1 %cmp, label %if.then, label %if.end

if.then:                                          ; preds = %entry
  call void (...) @bar()
  br label %if.end

if.end:                                           ; preds = %if.then, %entry
  %x.off = add i32 %x, -3
  %0 = icmp ult i32 %x.off, 5
  br i1 %0, label %if.then3, label %if.end4

if.then3:                                         ; preds = %if.end
  call void (...) @baz()
  br label %if.end4

if.end4:                                          ; preds = %if.then3, %if.end
  ret void
}

; Make sure we thread the false side of the first if to the end of the function.
define void @test2(i32 %x) {
; CHECK-LABEL: @test2(
; CHECK-NEXT:  entry:
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i32 [[X:%.*]], 9
; CHECK-NEXT:    br i1 [[CMP]], label [[IF_END:%.*]], label [[IF_END4:%.*]]
; CHECK:       if.end:
; CHECK-NEXT:    call void (...) @bar()
; CHECK-NEXT:    [[X_OFF:%.*]] = add i32 [[X]], -3
; CHECK-NEXT:    [[TMP0:%.*]] = icmp ult i32 [[X_OFF]], 5
; CHECK-NEXT:    br i1 [[TMP0]], label [[IF_THEN3:%.*]], label [[IF_END4]]
; CHECK:       if.then3:
; CHECK-NEXT:    call void (...) @baz()
; CHECK-NEXT:    br label [[IF_END4]]
; CHECK:       if.end4:
; CHECK-NEXT:    ret void
;
entry:
  %cmp = icmp slt i32 %x, 9
  br i1 %cmp, label %if.then, label %if.end

if.then:                                          ; preds = %entry
  call void (...) @bar()
  br label %if.end

if.end:                                           ; preds = %if.then, %entry
  %x.off = add i32 %x, -3
  %0 = icmp ult i32 %x.off, 5
  br i1 %0, label %if.then3, label %if.end4

if.then3:                                         ; preds = %if.end
  call void (...) @baz()
  br label %if.end4

if.end4:                                          ; preds = %if.then3, %if.end
  ret void
}

; Negative test to make sure we don't thread when the ranges overlap.
define void @test3(i32 %x) {
; CHECK-LABEL: @test3(
; CHECK-NEXT:  entry:
; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i32 [[X:%.*]], 6
; CHECK-NEXT:    br i1 [[CMP]], label [[IF_THEN:%.*]], label [[IF_END:%.*]]
; CHECK:       if.then:
; CHECK-NEXT:    call void (...) @bar()
; CHECK-NEXT:    br label [[IF_END]]
; CHECK:       if.end:
; CHECK-NEXT:    [[X_OFF:%.*]] = add i32 [[X]], -3
; CHECK-NEXT:    [[TMP0:%.*]] = icmp ult i32 [[X_OFF]], 5
; CHECK-NEXT:    br i1 [[TMP0]], label [[IF_THEN3:%.*]], label [[IF_END4:%.*]]
; CHECK:       if.then3:
; CHECK-NEXT:    call void (...) @baz()
; CHECK-NEXT:    br label [[IF_END4]]
; CHECK:       if.end4:
; CHECK-NEXT:    ret void
;
entry:
  %cmp = icmp sgt i32 %x, 6
  br i1 %cmp, label %if.then, label %if.end

if.then:                                          ; preds = %entry
  call void (...) @bar()
  br label %if.end

if.end:                                           ; preds = %if.then, %entry
  %x.off = add i32 %x, -3
  %0 = icmp ult i32 %x.off, 5
  br i1 %0, label %if.then3, label %if.end4

if.then3:                                         ; preds = %if.end
  call void (...) @baz()
  br label %if.end4

if.end4:                                          ; preds = %if.then3, %if.end
  ret void
}

