| ; 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 |
| } |