summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/InstCombine
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2011-07-13 19:08:16 +0000
committerEvan Cheng <evan.cheng@apple.com>2011-07-13 19:08:16 +0000
commitb94674b325143837f6941196f95525dee8482d2c (patch)
tree3c83a68edc83c68284481499ec08f22b1db7dfb9 /llvm/test/Transforms/InstCombine
parent9a881019a597d218f838fb1e2b92fba19258a5bd (diff)
downloadbcm5719-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.ll21
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
OpenPOWER on IntegriCloud