brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.6 KiB · 467e5a8 Raw
93 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 22; RUN: opt -passes=instcombine -S < %s | FileCheck %s3 4declare ptr @g()5declare ptr @use(ptr)6 7define void @call1() {8; CHECK-LABEL: define void @call1() {9; CHECK-NEXT:    [[A:%.*]] = call ptr @g()10; CHECK-NEXT:    [[B:%.*]] = getelementptr i8, ptr [[A]], i64 411; CHECK-NEXT:    call void @use(ptr [[B]])12; CHECK-NEXT:    ret void13;14  %a = call ptr @g()15  %b = getelementptr i8, ptr %a, i64 416  call void @use(ptr %b)17  ret void18}19define void @call2() {20; CHECK-LABEL: define void @call2() {21; CHECK-NEXT:    [[A:%.*]] = call dereferenceable(8) ptr @g()22; CHECK-NEXT:    [[B:%.*]] = getelementptr inbounds nuw i8, ptr [[A]], i64 423; CHECK-NEXT:    call void @use(ptr nonnull [[B]])24; CHECK-NEXT:    ret void25;26  %a = call dereferenceable(8) ptr @g()27  %b = getelementptr i8, ptr %a, i64 428  call void @use(ptr %b)29  ret void30}31 32define void @call3() {33; CHECK-LABEL: define void @call3() {34; CHECK-NEXT:    [[A:%.*]] = call dereferenceable_or_null(8) ptr @g()35; CHECK-NEXT:    [[B:%.*]] = getelementptr i8, ptr [[A]], i64 436; CHECK-NEXT:    call void @use(ptr [[B]])37; CHECK-NEXT:    ret void38;39  %a = call dereferenceable_or_null(8) ptr @g()40  %b = getelementptr i8, ptr %a, i64 441  call void @use(ptr %b)42  ret void43}44 45define void @alloca() {46; CHECK-LABEL: define void @alloca() {47; CHECK-NEXT:    [[A:%.*]] = alloca i64, align 848; CHECK-NEXT:    [[B:%.*]] = getelementptr inbounds nuw i8, ptr [[A]], i64 449; CHECK-NEXT:    call void @use(ptr nonnull [[B]])50; CHECK-NEXT:    ret void51;52  %a = alloca i6453  %b = getelementptr i8, ptr %a, i64 454  call void @use(ptr %b)55  ret void56}57 58define void @arg1(ptr %a) {59; CHECK-LABEL: define void @arg160; CHECK-SAME: (ptr [[A:%.*]]) {61; CHECK-NEXT:    [[B:%.*]] = getelementptr i8, ptr [[A]], i64 462; CHECK-NEXT:    call void @use(ptr [[B]])63; CHECK-NEXT:    ret void64;65  %b = getelementptr i8, ptr %a, i64 466  call void @use(ptr %b)67  ret void68}69 70define void @arg2(ptr dereferenceable(8) %a) {71; CHECK-LABEL: define void @arg272; CHECK-SAME: (ptr dereferenceable(8) [[A:%.*]]) {73; CHECK-NEXT:    [[B:%.*]] = getelementptr inbounds nuw i8, ptr [[A]], i64 474; CHECK-NEXT:    call void @use(ptr nonnull [[B]])75; CHECK-NEXT:    ret void76;77  %b = getelementptr i8, ptr %a, i64 478  call void @use(ptr %b)79  ret void80}81 82define void @arg3(ptr dereferenceable_or_null(8) %a) {83; CHECK-LABEL: define void @arg384; CHECK-SAME: (ptr dereferenceable_or_null(8) [[A:%.*]]) {85; CHECK-NEXT:    [[B:%.*]] = getelementptr i8, ptr [[A]], i64 486; CHECK-NEXT:    call void @use(ptr [[B]])87; CHECK-NEXT:    ret void88;89  %b = getelementptr i8, ptr %a, i64 490  call void @use(ptr %b)91  ret void92}93