From ae02b723bf2c47f0dede9452c5053776920801ff Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Thu, 17 Feb 2005 19:27:44 +0000 Subject: [PATCH] New files, testing for a crash in ADCE compiling QT and a missed optimization. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20226 91177308-0d34-0410-b5e6-96231b3b80d8 --- .../ADCE/2005-02-17-PHI-Invoke-Crash.ll | 49 +++++++++++++++++++ test/Transforms/ADCE/dead-phi-edge.ll | 15 ++++++ 2 files changed, 64 insertions(+) create mode 100644 test/Transforms/ADCE/2005-02-17-PHI-Invoke-Crash.ll create mode 100644 test/Transforms/ADCE/dead-phi-edge.ll diff --git a/test/Transforms/ADCE/2005-02-17-PHI-Invoke-Crash.ll b/test/Transforms/ADCE/2005-02-17-PHI-Invoke-Crash.ll new file mode 100644 index 00000000000..6e439a7b208 --- /dev/null +++ b/test/Transforms/ADCE/2005-02-17-PHI-Invoke-Crash.ll @@ -0,0 +1,49 @@ +; RUN: llvm-as < %s | opt -adce -disable-output + +implementation ; Functions: + +declare { }* %llvm.dbg.region.end({ }*) + +declare void %strlen() + +declare void %_ZN10QByteArray6resizeEi() + +declare void %q_atomic_decrement() + +void %_ZNK10QByteArray13leftJustifiedEicb() { +entry: + invoke void %strlen( ) + to label %tmp.3.i.noexc unwind label %invoke_catch.0 + +tmp.3.i.noexc: ; preds = %entry + br bool false, label %then.0, label %else.0 + +invoke_catch.0: ; preds = %entry + invoke void %q_atomic_decrement( ) + to label %tmp.1.i.i183.noexc unwind label %terminate + +tmp.1.i.i183.noexc: ; preds = %invoke_catch.0 + unwind + +then.0: ; preds = %tmp.3.i.noexc + invoke void %_ZN10QByteArray6resizeEi( ) + to label %invoke_cont.1 unwind label %invoke_catch.1 + +invoke_catch.1: ; preds = %then.0 + invoke void %q_atomic_decrement( ) + to label %tmp.1.i.i162.noexc unwind label %terminate + +tmp.1.i.i162.noexc: ; preds = %invoke_catch.1 + ret void + +invoke_cont.1: ; preds = %then.0 + ret void + +else.0: ; preds = %tmp.3.i.noexc + ret void + +terminate: ; preds = %invoke_catch.1, %invoke_catch.0 + %dbg.0.1 = phi { }* [ null, %invoke_catch.1 ], [ null, %invoke_catch.0 ] ; <{ }*> [#uses=1] + %dbg.tmp.43 = call { }* %llvm.dbg.region.end( { }* %dbg.0.1 ) ; <{ }*> [#uses=0] + unreachable +} diff --git a/test/Transforms/ADCE/dead-phi-edge.ll b/test/Transforms/ADCE/dead-phi-edge.ll new file mode 100644 index 00000000000..b4a10b2699f --- /dev/null +++ b/test/Transforms/ADCE/dead-phi-edge.ll @@ -0,0 +1,15 @@ +; RUN: llvm-as < %s | opt -adce | llvm-dis | not grep call + +; The call is not live just because the PHI uses the call retval! + +int %test(int %X) { + br label %Done + +DeadBlock: + %Y = call int %test(int 0) + br label %Done + +Done: + %Z = phi int [%X, %0], [%Y, %DeadBlock] + ret int %Z +}