56 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt < %s -passes=instcombine -S | FileCheck %s3 4 5declare ptr @memrchr(ptr, i32, i32)6 7define ptr @test1(ptr %str, i32 %c, i32 %n) {8; CHECK-LABEL: @test1(9; CHECK-NEXT: [[RET:%.*]] = call ptr @memrchr(ptr [[STR:%.*]], i32 [[C:%.*]], i32 [[N:%.*]])10; CHECK-NEXT: ret ptr [[RET]]11;12 13 %ret = call ptr @memrchr(ptr %str, i32 %c, i32 %n)14 ret ptr %ret15}16 17define ptr @test2(ptr %str, i32 %c, i32 %n) {18; CHECK-LABEL: @test2(19; CHECK-NEXT: [[RET:%.*]] = call ptr @memrchr(ptr nonnull [[STR:%.*]], i32 [[C:%.*]], i32 [[N:%.*]])20; CHECK-NEXT: ret ptr [[RET]]21;22 23 %ret = call ptr @memrchr(ptr nonnull %str, i32 %c, i32 %n)24 ret ptr %ret25}26 27define ptr @test3(ptr %str, i32 %c) {28; CHECK-LABEL: @test3(29; CHECK-NEXT: [[RET:%.*]] = call ptr @memrchr(ptr [[STR:%.*]], i32 [[C:%.*]], i32 5)30; CHECK-NEXT: ret ptr [[RET]]31;32 33 %ret = call ptr @memrchr(ptr %str, i32 %c, i32 5)34 ret ptr %ret35}36 37define ptr @test4(ptr %str, i32 %c) null_pointer_is_valid {38; CHECK-LABEL: @test4(39; CHECK-NEXT: [[RET:%.*]] = call ptr @memrchr(ptr [[STR:%.*]], i32 [[C:%.*]], i32 5)40; CHECK-NEXT: ret ptr [[RET]]41;42 43 %ret = call ptr @memrchr(ptr %str, i32 %c, i32 5)44 ret ptr %ret45}46 47define ptr @test5(ptr %str, i32 %c) {48; CHECK-LABEL: @test5(49; CHECK-NEXT: [[RET:%.*]] = call ptr @memrchr(ptr [[STR:%.*]], i32 [[C:%.*]], i32 0)50; CHECK-NEXT: ret ptr [[RET]]51;52 53 %ret = call ptr @memrchr(ptr %str, i32 %c, i32 0)54 ret ptr %ret55}56