70 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 52; RUN: opt -passes=instcombine -S %s | FileCheck %s3 4define i64 @inttoptr_used_by_phi_with_ptrtoint(i1 %c, ptr %src, ptr %p2) {5; CHECK-LABEL: define i64 @inttoptr_used_by_phi_with_ptrtoint(6; CHECK-SAME: i1 [[C:%.*]], ptr [[SRC:%.*]], ptr [[P2:%.*]]) {7; CHECK-NEXT: br i1 [[C]], label %[[THEN:.*]], label %[[ELSE:.*]]8; CHECK: [[THEN]]:9; CHECK-NEXT: [[P:%.*]] = getelementptr i8, ptr [[SRC]], i64 1010; CHECK-NEXT: [[TMP1:%.*]] = ptrtoint ptr [[P]] to i6411; CHECK-NEXT: br label %[[EXIT:.*]]12; CHECK: [[ELSE]]:13; CHECK-NEXT: br label %[[EXIT]]14; CHECK: [[EXIT]]:15; CHECK-NEXT: [[PHI:%.*]] = phi i64 [ [[TMP1]], %[[THEN]] ], [ 0, %[[ELSE]] ]16; CHECK-NEXT: ret i64 [[PHI]]17;18 %i = ptrtoint ptr %src to i6419 %a = add i64 %i, 1020 %p = inttoptr i64 %a to ptr21 br i1 %c, label %then, label %else22 23then:24 br label %exit25 26else:27 br label %exit28 29exit:30 %phi = phi ptr [ %p, %then ], [ null, %else ]31 %i.2 = ptrtoint ptr %phi to i6432 ret i64 %i.233}34 35declare void @foo(ptr)36 37define i64 @inttoptr_used_by_phi_with_other_users(i1 %c, ptr %src, ptr %p2) {38; CHECK-LABEL: define i64 @inttoptr_used_by_phi_with_other_users(39; CHECK-SAME: i1 [[C:%.*]], ptr [[SRC:%.*]], ptr [[P2:%.*]]) {40; CHECK-NEXT: [[I:%.*]] = ptrtoint ptr [[SRC]] to i6441; CHECK-NEXT: [[A:%.*]] = add i64 [[I]], 1042; CHECK-NEXT: br i1 [[C]], label %[[THEN:.*]], label %[[ELSE:.*]]43; CHECK: [[THEN]]:44; CHECK-NEXT: br label %[[EXIT:.*]]45; CHECK: [[ELSE]]:46; CHECK-NEXT: br label %[[EXIT]]47; CHECK: [[EXIT]]:48; CHECK-NEXT: [[PHI:%.*]] = phi i64 [ [[A]], %[[THEN]] ], [ 0, %[[ELSE]] ]49; CHECK-NEXT: [[P:%.*]] = inttoptr i64 [[A]] to ptr50; CHECK-NEXT: call void @foo(ptr [[P]])51; CHECK-NEXT: ret i64 [[PHI]]52;53 %i = ptrtoint ptr %src to i6454 %a = add i64 %i, 1055 %p = inttoptr i64 %a to ptr56 br i1 %c, label %then, label %else57 58then:59 br label %exit60 61else:62 br label %exit63 64exit:65 %phi = phi ptr [ %p, %then ], [ null, %else ]66 call void @foo(ptr %p)67 %i.2 = ptrtoint ptr %phi to i6468 ret i64 %i.269}70