diff options
author | Evan Cheng <evan.cheng@apple.com> | 2011-07-13 19:08:16 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2011-07-13 19:08:16 +0000 |
commit | b94674b325143837f6941196f95525dee8482d2c (patch) | |
tree | 3c83a68edc83c68284481499ec08f22b1db7dfb9 /llvm/test/Transforms/InstCombine | |
parent | 9a881019a597d218f838fb1e2b92fba19258a5bd (diff) | |
download | bcm5719-llvm-b94674b325143837f6941196f95525dee8482d2c.tar.gz bcm5719-llvm-b94674b325143837f6941196f95525dee8482d2c.zip |
It's not safe to fold (fptrunc (sqrt (fpext x))) to (sqrtf x) if there is another use of sqrt. rdar://9763193
llvm-svn: 135058
Diffstat (limited to 'llvm/test/Transforms/InstCombine')
-rw-r--r-- | llvm/test/Transforms/InstCombine/sqrt.ll | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/llvm/test/Transforms/InstCombine/sqrt.ll b/llvm/test/Transforms/InstCombine/sqrt.ll index 69e511bfb3b..6ee7a53ae7e 100644 --- a/llvm/test/Transforms/InstCombine/sqrt.ll +++ b/llvm/test/Transforms/InstCombine/sqrt.ll @@ -14,8 +14,6 @@ entry: ret float %conv1 } -declare double @sqrt(double) - ; PR8096 define float @test2(float %x) nounwind readnone ssp { entry: @@ -30,3 +28,22 @@ entry: ; CHECK: ret float ret float %conv1 } + +; rdar://9763193 +; Can't fold (fptrunc (sqrt (fpext x))) -> (sqrtf x) since there is another +; use of sqrt result. +define float @test3(float* %v) nounwind uwtable ssp { +entry: +; CHECK: @test3 +; CHECK: sqrt( +; CHECK-NOT: sqrtf( +; CHECK: fptrunc + %call34 = call double @sqrt(double undef) nounwind readnone + %call36 = call i32 (double)* @foo(double %call34) nounwind + %conv38 = fptrunc double %call34 to float + ret float %conv38 +} + +declare i32 @foo(double) + +declare double @sqrt(double) readnone |