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

target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

declare void @maybe_throws()
declare void @use1(i1)

define void @is_not_null(i8* %baseptr) local_unnamed_addr align 2 personality i8* undef {
; CHECK-LABEL: @is_not_null(
; CHECK-NEXT:  preheader:
; CHECK-NEXT:    [[BASEPTR1:%.*]] = ptrtoint i8* [[BASEPTR:%.*]] to i64
; CHECK-NEXT:    [[TMP0:%.*]] = sub i64 0, [[BASEPTR1]]
; CHECK-NEXT:    [[SCEVGEP:%.*]] = getelementptr i8, i8* null, i64 [[TMP0]]
; CHECK-NEXT:    br label [[HEADER:%.*]]
; CHECK:       header:
; CHECK-NEXT:    [[LSR_IV:%.*]] = phi i8* [ [[SCEVGEP2:%.*]], [[LATCH:%.*]] ], [ [[SCEVGEP]], [[PREHEADER:%.*]] ]
; CHECK-NEXT:    invoke void @maybe_throws()
; CHECK-NEXT:    to label [[LATCH]] unwind label [[LPAD:%.*]]
; CHECK:       lpad:
; CHECK-NEXT:    [[TMP1:%.*]] = landingpad { i8*, i32 }
; CHECK-NEXT:    catch i8* null
; CHECK-NEXT:    [[PTR_IS_NOT_NULL:%.*]] = icmp ne i8* [[LSR_IV]], null
; CHECK-NEXT:    call void @use1(i1 [[PTR_IS_NOT_NULL]])
; CHECK-NEXT:    ret void
; CHECK:       latch:
; CHECK-NEXT:    [[SCEVGEP2]] = getelementptr i8, i8* [[LSR_IV]], i64 -1
; CHECK-NEXT:    br label [[HEADER]]
;
preheader:
  br label %header

header:
  %ptr = phi i8* [ %incptr, %latch ], [ %baseptr, %preheader ]
  invoke void @maybe_throws() to label %latch unwind label %lpad

lpad:
  landingpad { i8*, i32 } catch i8* null
  %ptr_is_not_null = icmp ne i8* %ptr, null
  call void @use1(i1 %ptr_is_not_null)
  ret void

latch:
  %incptr = getelementptr inbounds i8, i8* %ptr, i64 1
  br label %header
}
