brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · b80218e Raw
62 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt < %s -passes=instcombine -S | FileCheck %s3 4@hello = constant [6 x i8] c"hello\00"5@null = constant [1 x i8] zeroinitializer6 7declare ptr @strndup(ptr, i64)8 9define ptr @test1() {10; CHECK-LABEL: @test1(11; CHECK-NEXT:    [[STRDUP:%.*]] = call dereferenceable_or_null(1) ptr @strdup(ptr nonnull @null)12; CHECK-NEXT:    ret ptr [[STRDUP]]13;14  %ret = call ptr @strndup(ptr @null, i64 0)15  ret ptr %ret16}17 18define ptr @test2() {19; CHECK-LABEL: @test2(20; CHECK-NEXT:    [[RET:%.*]] = call dereferenceable_or_null(5) ptr @strndup(ptr nonnull dereferenceable(6) @hello, i64 4)21; CHECK-NEXT:    ret ptr [[RET]]22;23  %ret = call ptr @strndup(ptr @hello, i64 4)24  ret ptr %ret25}26 27define ptr @test3() {28; CHECK-LABEL: @test3(29; CHECK-NEXT:    [[STRDUP:%.*]] = call dereferenceable_or_null(6) ptr @strdup(ptr nonnull @hello)30; CHECK-NEXT:    ret ptr [[STRDUP]]31;32  %ret = call ptr @strndup(ptr @hello, i64 5)33  ret ptr %ret34}35 36define ptr @test4() {37; CHECK-LABEL: @test4(38; CHECK-NEXT:    [[STRDUP:%.*]] = call dereferenceable_or_null(6) ptr @strdup(ptr nonnull @hello)39; CHECK-NEXT:    ret ptr [[STRDUP]]40;41  %ret = call ptr @strndup(ptr @hello, i64 6)42  ret ptr %ret43}44 45define ptr @test5() {46; CHECK-LABEL: @test5(47; CHECK-NEXT:    [[STRDUP:%.*]] = call dereferenceable_or_null(6) ptr @strdup(ptr nonnull @hello)48; CHECK-NEXT:    ret ptr [[STRDUP]]49;50  %ret = call ptr @strndup(ptr @hello, i64 7)51  ret ptr %ret52}53 54define ptr @test6(i64 %n) {55; CHECK-LABEL: @test6(56; CHECK-NEXT:    [[RET:%.*]] = call ptr @strndup(ptr nonnull @hello, i64 [[N:%.*]])57; CHECK-NEXT:    ret ptr [[RET]]58;59  %ret = call ptr @strndup(ptr @hello, i64 %n)60  ret ptr %ret61}62