diff options
-rw-r--r-- | llvm/test/Transforms/PartiallyInlineLibCalls/good-prototype.ll | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/llvm/test/Transforms/PartiallyInlineLibCalls/good-prototype.ll b/llvm/test/Transforms/PartiallyInlineLibCalls/good-prototype.ll new file mode 100644 index 00000000000..ed975052732 --- /dev/null +++ b/llvm/test/Transforms/PartiallyInlineLibCalls/good-prototype.ll @@ -0,0 +1,23 @@ +; RUN: opt -S -partially-inline-libcalls < %s | FileCheck %s +; RUN: opt -S -passes=partially-inline-libcalls < %s | FileCheck %s + +target triple = "x86_64-unknown-linux-gnu" + +define float @f(float %val) { +; CHECK: @f +; CHECK: entry: +; CHECK-NEXT: %[[RES:.+]] = tail call float @sqrtf(float %val) #0 +; CHECK-NEXT: %[[CMP:.+]] = fcmp oeq float %[[RES]], %[[RES]] +; CHECK-NEXT: br i1 %[[CMP]], label %[[EXIT:.+]], label %[[CALL:.+]] +; CHECK: [[CALL]]: +; CHECK-NEXT: %[[RES2:.+]] = tail call float @sqrtf(float %val){{$}} +; CHECK-NEXT: br label %[[EXIT]] +; CHECK: [[EXIT]]: +; CHECK-NEXT: %[[RET:.+]] = phi float [ %[[RES]], %entry ], [ %[[RES2]], %[[CALL]] ] +; CHECK-NEXT: ret float %[[RET]] +entry: + %res = tail call float @sqrtf(float %val) + ret float %res +} + +declare float @sqrtf(float) |