diff options
author | Chris Lattner <sabre@nondot.org> | 2004-01-12 01:17:42 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2004-01-12 01:17:42 +0000 |
commit | 33a79d73bd39d3ed6c0859b023446c2e94899f7f (patch) | |
tree | e1d7edee3de3ed25640818d59ca0c62e4db9b05d /test | |
parent | 952454dbffed89dacc85b9d6253bc8203a415f14 (diff) | |
download | llvm-33a79d73bd39d3ed6c0859b023446c2e94899f7f.tar.gz llvm-33a79d73bd39d3ed6c0859b023446c2e94899f7f.tar.bz2 llvm-33a79d73bd39d3ed6c0859b023446c2e94899f7f.tar.xz |
New testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10760 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r-- | test/Transforms/ScalarRepl/phinodepromote.ll | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/test/Transforms/ScalarRepl/phinodepromote.ll b/test/Transforms/ScalarRepl/phinodepromote.ll new file mode 100644 index 0000000000..b0a3990f5e --- /dev/null +++ b/test/Transforms/ScalarRepl/phinodepromote.ll @@ -0,0 +1,35 @@ +; RUN: llvm-as < %s | opt -mem2reg | llvm-dis | not grep alloca +; +; This tests to see if mem2reg can promote alloca instructions whose addresses +; are used by PHI nodes that are immediately loaded. The LLVM C++ front-end +; often generates code that looks like this (when it codegen's ?: exprs as +; lvalues), so handling this simple extension is quite useful. +; +; This testcase is what the following program looks like when it reaches +; mem2reg: +; +; template<typename T> +; const T& max(const T& a1, const T& a2) { return a1 < a2 ? a1 : a2; } +; int main() { return max(0, 1); } +; + +int %main() { +entry: + %mem_tmp.0 = alloca int + %mem_tmp.1 = alloca int + store int 0, int* %mem_tmp.0 + store int 1, int* %mem_tmp.1 + %tmp.1.i = load int* %mem_tmp.1 + %tmp.3.i = load int* %mem_tmp.0 + %tmp.4.i = setle int %tmp.1.i, %tmp.3.i + br bool %tmp.4.i, label %cond_true.i, label %cond_continue.i + +cond_true.i: + br label %cond_continue.i + +cond_continue.i: + %mem_tmp.i.0 = phi int* [ %mem_tmp.1, %cond_true.i ], [ %mem_tmp.0, %entry ] + %tmp.3 = load int* %mem_tmp.i.0 + ret int %tmp.3 +} + |