diff options
author | Bjorn Steinbrink <bsteinbr@gmail.com> | 2015-02-12 21:04:22 +0000 |
---|---|---|
committer | Bjorn Steinbrink <bsteinbr@gmail.com> | 2015-02-12 21:04:22 +0000 |
commit | 6f972a13f6e55668f811e71690ad33f728caf61e (patch) | |
tree | 2851859da366d7645fa4c29cb131a27ed6a5a84e /llvm/test/Transforms | |
parent | e8cb17f2824537e30bc536ba354f16d622d6e60b (diff) | |
download | bcm5719-llvm-6f972a13f6e55668f811e71690ad33f728caf61e.tar.gz bcm5719-llvm-6f972a13f6e55668f811e71690ad33f728caf61e.zip |
Fix a crash in the assumption cache when inlining indirect function calls
Summary:
Instances of the AssumptionCache are per function, so we can't re-use
the same AssumptionCache instance when recursing in the CallAnalyzer to
analyze a different function. Instead we have to pass the
AssumptionCacheTracker to the CallAnalyzer so it can get the right
AssumptionCache on demand.
Reviewers: hfinkel
Subscribers: llvm-commits, hans
Differential Revision: http://reviews.llvm.org/D7533
llvm-svn: 228957
Diffstat (limited to 'llvm/test/Transforms')
-rw-r--r-- | llvm/test/Transforms/Inline/inline-indirect.ll | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/llvm/test/Transforms/Inline/inline-indirect.ll b/llvm/test/Transforms/Inline/inline-indirect.ll new file mode 100644 index 00000000000..f6eb528e065 --- /dev/null +++ b/llvm/test/Transforms/Inline/inline-indirect.ll @@ -0,0 +1,19 @@ +; RUN: opt < %s -inline -disable-output 2>/dev/null +; This test used to trigger an assertion in the assumption cache when +; inlining the indirect call +declare void @llvm.assume(i1) + +define void @foo() { + ret void +} + +define void @bar(void ()*) { + call void @llvm.assume(i1 true) + call void %0(); + ret void +} + +define void @baz() { + call void @bar(void ()* @foo) + ret void +} |