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

; Test for PR39772

%struct.Node = type { %struct.Node*, %struct.Node*, i32 }

define i32 @check(%struct.Node* %node) {
; CHECK-LABEL: define i32 @check(
; CHECK-NEXT:  entry:
; CHECK-NEXT:    [[CMP:%.*]] = icmp eq %struct.Node* [[NODE:%.*]], null
; CHECK-NEXT:    br i1 [[CMP]], label [[IF_THEN:%.*]], label [[IF_END:%.*]]
; CHECK:       if.then:
; CHECK-NEXT:    br label [[CLEANUP:%.*]]
; CHECK:       if.end:
; CHECK-NEXT:    [[LEFT:%.*]] = getelementptr inbounds [[STRUCT_NODE:%.*]], %struct.Node* [[NODE]], i32 0, i32 0
; CHECK-NEXT:    [[TMP0:%.*]] = load %struct.Node*, %struct.Node** [[LEFT]]
; CHECK-NEXT:    [[CALL:%.*]] = call i32 @check(%struct.Node* [[TMP0]])
; CHECK-NEXT:    [[RIGHT:%.*]] = getelementptr inbounds [[STRUCT_NODE]], %struct.Node* [[NODE]], i32 0, i32 1
; CHECK-NEXT:    [[TMP1:%.*]] = load %struct.Node*, %struct.Node** [[RIGHT]]
; CHECK-NEXT:    [[CALL1:%.*]] = call i32 @check(%struct.Node* [[TMP1]])
; CHECK-NEXT:    [[TMP2:%.*]] = load %struct.Node*, %struct.Node** [[RIGHT]]
; CHECK-NEXT:    [[HEIGHT:%.*]] = getelementptr inbounds [[STRUCT_NODE]], %struct.Node* [[TMP2]], i32 0, i32 2
; CHECK-NEXT:    [[TMP3:%.*]] = load i32, i32* [[HEIGHT]]
; CHECK-NEXT:    [[CMP3:%.*]] = icmp ne i32 [[TMP3]], [[CALL1]]
; CHECK-NEXT:    br i1 [[CMP3]], label [[IF_THEN4:%.*]], label [[IF_END5:%.*]]
; CHECK:       if.then4:
; CHECK-NEXT:    unreachable
; CHECK:       if.end5:
; CHECK-NEXT:    [[CMP6:%.*]] = icmp sgt i32 [[CALL]], [[CALL1]]
; CHECK-NEXT:    br i1 [[CMP6]], label [[IF_THEN7:%.*]], label [[IF_ELSE:%.*]]
; CHECK:       if.then7:
; CHECK-NEXT:    [[ADD:%.*]] = add nsw i32 [[CALL]], 1
; CHECK-NEXT:    br label [[CLEANUP]]
; CHECK:       if.else:
; CHECK-NEXT:    [[ADD8:%.*]] = add nsw i32 [[CALL1]], 1
; CHECK-NEXT:    br label [[CLEANUP]]
; CHECK:       cleanup:
; CHECK-NEXT:    [[RETVAL_0:%.*]] = phi i32 [ 0, [[IF_THEN]] ], [ [[ADD]], [[IF_THEN7]] ], [ [[ADD8]], [[IF_ELSE]] ]
; CHECK-NEXT:    ret i32 [[RETVAL_0]]
;
entry:
  %cmp = icmp eq %struct.Node* %node, null
  br i1 %cmp, label %if.then, label %if.end

if.then:                                          ; preds = %entry
  br label %cleanup

if.end:                                           ; preds = %entry
  %left = getelementptr inbounds %struct.Node, %struct.Node* %node, i32 0, i32 0
  %0 = load %struct.Node*, %struct.Node** %left
  %call = call i32 @check(%struct.Node* %0)
  %right = getelementptr inbounds %struct.Node, %struct.Node* %node, i32 0, i32 1
  %1 = load %struct.Node*, %struct.Node** %right
  %call1 = call i32 @check(%struct.Node* %1)
  %2 = load %struct.Node*, %struct.Node** %right
  %height = getelementptr inbounds %struct.Node, %struct.Node* %2, i32 0, i32 2
  %3 = load i32, i32* %height
  %cmp3 = icmp ne i32 %3, %call1
  br i1 %cmp3, label %if.then4, label %if.end5

if.then4:                                         ; preds = %if.end
  unreachable

if.end5:                                          ; preds = %if.end
  %cmp6 = icmp sgt i32 %call, %call1
  br i1 %cmp6, label %if.then7, label %if.else

if.then7:                                         ; preds = %if.end5
  %add = add nsw i32 %call, 1
  br label %cleanup

if.else:                                          ; preds = %if.end5
  %add8 = add nsw i32 %call1, 1
  br label %cleanup

cleanup:                                          ; preds = %if.else, %if.then7, %if.then
  %retval.0 = phi i32 [ 0, %if.then ], [ %add, %if.then7 ], [ %add8, %if.else ]
  ret i32 %retval.0
}

declare i8* @test2_callee(i32, i32)

define void @test2() {
; CHECK-LABEL: @test2(
; CHECK-NEXT:  entry:
; CHECK-NEXT:    br label [[FOR_COND:%.*]]
; CHECK:       for.cond:
; CHECK-NEXT:    br label [[FOR_BODY:%.*]]
; CHECK:       for.body:
; CHECK-NEXT:    br label [[IF_ELSE33:%.*]]
; CHECK:       if.else33:
; CHECK-NEXT:    br label [[IF_THEN38:%.*]]
; CHECK:       if.then38:
; CHECK-NEXT:    [[CALL42:%.*]] = call i8* @test2_callee(i32 0, i32 0)
; CHECK-NEXT:    unreachable
;
entry:
  br label %for.cond

for.cond:                                         ; preds = %for.inc46, %entry
  %op.0 = phi i32 [ 0, %entry ], [ 0, %for.inc46 ]
  br label %for.body

for.body:                                         ; preds = %for.cond
  %cmp24 = icmp eq i32 %op.0, 38
  br i1 %cmp24, label %if.then26, label %if.else33

if.then26:                                        ; preds = %for.body
  unreachable

if.else33:                                        ; preds = %for.body
  %cmp34 = icmp ne i32 %op.0, 80
  %cmp36 = icmp ne i32 %op.0, 81
  %or.cond = and i1 %cmp34, %cmp36
  br i1 %or.cond, label %if.then38, label %for.inc46

if.then38:                                        ; preds = %if.else33
  %call42 = call i8* @test2_callee(i32 %op.0, i32 0)
  unreachable

for.inc46:                                        ; preds = %if.else33
  br label %for.cond
}
