diff options
Diffstat (limited to 'llvm/test/Transforms/GVNHoist/hoist-call.ll')
| -rw-r--r-- | llvm/test/Transforms/GVNHoist/hoist-call.ll | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/llvm/test/Transforms/GVNHoist/hoist-call.ll b/llvm/test/Transforms/GVNHoist/hoist-call.ll new file mode 100644 index 00000000000..50378f7d822 --- /dev/null +++ b/llvm/test/Transforms/GVNHoist/hoist-call.ll @@ -0,0 +1,28 @@ +; RUN: opt -S -gvn-hoist < %s | FileCheck %s + +; Check that the call and fcmp are hoisted. +; CHECK-LABEL: define void @fun( +; CHECK: call float +; CHECK: fcmp oeq +; CHECK-NOT: call float +; CHECK-NOT: fcmp oeq + +define void @fun(float %__b) minsize { +entry: + br label %if.then + +if.then: ; preds = %entry + br i1 undef, label %if.then8, label %lor.lhs.false + +lor.lhs.false: ; preds = %if.then + %0 = call float @llvm.fabs.f32(float %__b) #2 + %cmpinf7 = fcmp oeq float %0, 0x7FF0000000000000 + unreachable + +if.then8: ; preds = %if.then + %1 = call float @llvm.fabs.f32(float %__b) #2 + %cmpinf10 = fcmp oeq float %1, 0x7FF0000000000000 + ret void +} + +declare float @llvm.fabs.f32(float) |

