brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · acceead Raw
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