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

; Make sure that we apply trunc to the edge value of %x.
@g = external global i8

define i16 @pr161367(i64 %x) {
; CHECK-LABEL: define i16 @pr161367(
; CHECK-SAME: i64 [[X:%.*]]) {
; CHECK-NEXT:  [[ENTRY:.*]]:
; CHECK-NEXT:    [[TRUNC:%.*]] = trunc i64 [[X]] to i16
; CHECK-NEXT:    [[EXITCOND:%.*]] = icmp eq i64 [[X]], sub (i64 0, i64 ptrtoint (ptr @g to i64))
; CHECK-NEXT:    br i1 [[EXITCOND]], label %[[EXIT:.*]], label %[[ELSE:.*]]
; CHECK:       [[ELSE]]:
; CHECK-NEXT:    br label %[[EXIT]]
; CHECK:       [[EXIT]]:
; CHECK-NEXT:    [[RET:%.*]] = phi i16 [ trunc (i64 sub (i64 0, i64 ptrtoint (ptr @g to i64)) to i16), %[[ENTRY]] ], [ 0, %[[ELSE]] ]
; CHECK-NEXT:    ret i16 [[RET]]
;
entry:
  %trunc = trunc i64 %x to i16
  %exitcond = icmp eq i64 %x, sub (i64 0, i64 ptrtoint (ptr @g to i64))
  br i1 %exitcond, label %exit, label %else

else:
  br label %exit

exit:
  %ret = phi i16 [ %trunc, %entry ], [ 0, %else ]
  ret i16 %ret
}
