From f0638c5f710996d355f91866179bd49fa991750f Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 13 Jan 2006 19:35:05 +0000 Subject: [PATCH] New testcase that functions with dynamic allocas can be inlined, and are inlined correctly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25287 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/Transforms/Inline/dynamic_alloca_test.ll | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 test/Transforms/Inline/dynamic_alloca_test.ll diff --git a/test/Transforms/Inline/dynamic_alloca_test.ll b/test/Transforms/Inline/dynamic_alloca_test.ll new file mode 100644 index 00000000000..27c7d717a11 --- /dev/null +++ b/test/Transforms/Inline/dynamic_alloca_test.ll @@ -0,0 +1,28 @@ +; Test that functions with dynamic allocas get inlined in a case where +; naively inlining it would result in a miscompilation. + +; RUN: llvm-as < %s | opt -inline && +; RUN: llvm-as < %s | opt -inline | llvm-dis | grep llvm.stacksave && +; RUN: llvm-as < %s | opt -inline | llvm-dis | not grep callee + +declare void %ext(int*) +implementation + +internal void %callee(uint %N) { + %P = alloca int, uint %N ;; dynamic alloca + call void %ext(int* %P) + ret void +} + +void %foo(uint %N) { + br label %Loop +Loop: + %count = phi uint [0, %0], [%next, %Loop] + %next = add uint %count, 1 + call void %callee(uint %N) + %cond = seteq uint %count, 100000 + br bool %cond, label %out, label %Loop +out: + ret void +} +