blob: 3a9d16ebbcf6c6dd7fcb99bf89e0e8c97898685e [file] [log] [blame] [edit]
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -S -passes=gvn-sink < %s | FileCheck %s
define i64 @test(i1 %c, ptr %p, ptr %p2) {
; CHECK-LABEL: define i64 @test(
; CHECK-SAME: i1 [[C:%.*]], ptr [[P:%.*]], ptr [[P2:%.*]]) {
; CHECK-NEXT: br i1 [[C]], label %[[IF:.*]], label %[[ELSE:.*]]
; CHECK: [[IF]]:
; CHECK-NEXT: br label %[[JOIN:.*]]
; CHECK: [[ELSE]]:
; CHECK-NEXT: br label %[[JOIN]]
; CHECK: [[JOIN]]:
; CHECK-NEXT: [[P2_SINK:%.*]] = phi ptr [ [[P2]], %[[ELSE]] ], [ [[P]], %[[IF]] ]
; CHECK-NEXT: [[PHI:%.*]] = ptrtoaddr ptr [[P2_SINK]] to i64
; CHECK-NEXT: ret i64 [[PHI]]
;
br i1 %c, label %if, label %else
if:
%p.addr = ptrtoaddr ptr %p to i64
br label %join
else:
%p2.addr = ptrtoaddr ptr %p2 to i64
br label %join
join:
%phi = phi i64 [ %p.addr, %if ], [ %p2.addr, %else ]
ret i64 %phi
}