summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/InstCombine/inline-intrinsic-assert.ll
diff options
context:
space:
mode:
authorSanjay Patel <spatel@rotateright.com>2015-03-11 15:12:32 +0000
committerSanjay Patel <spatel@rotateright.com>2015-03-11 15:12:32 +0000
commitc04b6f242ca4a16165bea8043c2cdc19407cf240 (patch)
treef62aecfd8c12354d5c6511b31b4b59db4b84d119 /llvm/test/Transforms/InstCombine/inline-intrinsic-assert.ll
parent8c68a64ec847fc7ebe2fc5ad4410f6c84b02cddc (diff)
downloadbcm5719-llvm-c04b6f242ca4a16165bea8043c2cdc19407cf240.tar.gz
bcm5719-llvm-c04b6f242ca4a16165bea8043c2cdc19407cf240.zip
Inliner should not add callgraph edges for intrinsic calls (PR22857)
The CallGraphNode function "addCalledFunction()" asserts that edges are not to intrinsics. This patch makes sure that the Inliner does not add such an edge to the callgraph. Fix for clang crash by assertion: https://llvm.org/bugs/show_bug.cgi?id=22857 Differential Revision: http://reviews.llvm.org/D8231 llvm-svn: 231927
Diffstat (limited to 'llvm/test/Transforms/InstCombine/inline-intrinsic-assert.ll')
-rw-r--r--llvm/test/Transforms/InstCombine/inline-intrinsic-assert.ll30
1 files changed, 30 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstCombine/inline-intrinsic-assert.ll b/llvm/test/Transforms/InstCombine/inline-intrinsic-assert.ll
new file mode 100644
index 00000000000..af34277563e
--- /dev/null
+++ b/llvm/test/Transforms/InstCombine/inline-intrinsic-assert.ll
@@ -0,0 +1,30 @@
+; RUN: opt < %s -inline -instcombine -S | FileCheck %s
+
+; PR22857: http://llvm.org/bugs/show_bug.cgi?id=22857
+; The inliner should not add an edge to an intrinsic and
+; then assert that it did not add an edge to an intrinsic!
+
+define float @foo(float %f1) #0 {
+ %call = call float @bar(float %f1)
+ ret float %call
+
+; CHECK-LABEL: @foo(
+; CHECK-NEXT: call float @llvm.fabs.f32
+; CHECK-NEXT: ret float
+}
+
+define float @bar(float %f1) #0 {
+ %call = call float @sqr(float %f1)
+ %call1 = call float @sqrtf(float %call) #0
+ ret float %call1
+}
+
+define float @sqr(float %f) #0 {
+ %mul = fmul fast float %f, %f
+ ret float %mul
+}
+
+declare float @sqrtf(float) #0
+
+attributes #0 = { "unsafe-fp-math"="true" }
+
OpenPOWER on IntegriCloud