brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.4 KiB · 43fa08c Raw
55 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 62; RUN: opt -passes='drop-unnecessary-assumes' -S %s | FileCheck %s3; RUN: opt -passes='drop-unnecessary-assumes<drop-deref>' -S %s | FileCheck --check-prefix=DROP-DEREF %s4 5declare void @use(ptr)6 7define i8 @test_dereferenceable_assume_ptr_not_used(ptr %p, i64 %size) {8; CHECK-LABEL: define i8 @test_dereferenceable_assume_ptr_not_used(9; CHECK-SAME: ptr [[P:%.*]], i64 [[SIZE:%.*]]) {10; CHECK-NEXT:    call void @llvm.assume(i1 true) [ "dereferenceable"(ptr [[P]], i64 [[SIZE]]) ]11; CHECK-NEXT:    ret i8 012;13; DROP-DEREF-LABEL: define i8 @test_dereferenceable_assume_ptr_not_used(14; DROP-DEREF-SAME: ptr [[P:%.*]], i64 [[SIZE:%.*]]) {15; DROP-DEREF-NEXT:    ret i8 016;17  call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %p, i64 %size) ]18  ret i8 019}20 21define i8 @test_dereferenceable_assume_ptr_used_variable_size(ptr %p, i64 %size) {22; CHECK-LABEL: define i8 @test_dereferenceable_assume_ptr_used_variable_size(23; CHECK-SAME: ptr [[P:%.*]], i64 [[SIZE:%.*]]) {24; CHECK-NEXT:    call void @llvm.assume(i1 true) [ "dereferenceable"(ptr [[P]], i64 [[SIZE]]) ]25; CHECK-NEXT:    [[VAL:%.*]] = load i8, ptr [[P]], align 126; CHECK-NEXT:    ret i8 [[VAL]]27;28; DROP-DEREF-LABEL: define i8 @test_dereferenceable_assume_ptr_used_variable_size(29; DROP-DEREF-SAME: ptr [[P:%.*]], i64 [[SIZE:%.*]]) {30; DROP-DEREF-NEXT:    [[VAL:%.*]] = load i8, ptr [[P]], align 131; DROP-DEREF-NEXT:    ret i8 [[VAL]]32;33  call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %p, i64 %size) ]34  %val = load i8, ptr %p35  ret i8 %val36}37 38define i8 @test_dereferenceable_with_align_ptr_used(ptr %p, i64 %size) {39; CHECK-LABEL: define i8 @test_dereferenceable_with_align_ptr_used(40; CHECK-SAME: ptr [[P:%.*]], i64 [[SIZE:%.*]]) {41; CHECK-NEXT:    call void @llvm.assume(i1 true) [ "dereferenceable"(ptr [[P]], i64 [[SIZE]]), "align"(ptr [[P]], i64 8) ]42; CHECK-NEXT:    [[VAL:%.*]] = load i8, ptr [[P]], align 143; CHECK-NEXT:    ret i8 [[VAL]]44;45; DROP-DEREF-LABEL: define i8 @test_dereferenceable_with_align_ptr_used(46; DROP-DEREF-SAME: ptr [[P:%.*]], i64 [[SIZE:%.*]]) {47; DROP-DEREF-NEXT:    call void @llvm.assume(i1 true) [ "align"(ptr [[P]], i64 8) ]48; DROP-DEREF-NEXT:    [[VAL:%.*]] = load i8, ptr [[P]], align 149; DROP-DEREF-NEXT:    ret i8 [[VAL]]50;51  call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %p, i64 %size), "align"(ptr %p, i64 8) ]52  %val = load i8, ptr %p53  ret i8 %val54}55