From c3b1a220a7a8ebc67e97a3dd40584f7d6d83e6f5 Mon Sep 17 00:00:00 2001
From: Owen Anderson <resistor@mac.com>
Date: Tue, 27 Jun 2006 22:24:59 +0000
Subject: [PATCH] Testcase that Nate found where LoopUnswitch chokes on
 eliminating a dead case from a switch instruction.

llvm-svn: 28946
---
 .../LoopUnswitch/2006-06-27-DeadSwitchCase.ll | 31 +++++++++++++++++++
 1 file changed, 31 insertions(+)
 create mode 100644 llvm/test/Regression/Transforms/LoopUnswitch/2006-06-27-DeadSwitchCase.ll

diff --git a/llvm/test/Regression/Transforms/LoopUnswitch/2006-06-27-DeadSwitchCase.ll b/llvm/test/Regression/Transforms/LoopUnswitch/2006-06-27-DeadSwitchCase.ll
new file mode 100644
index 000000000000..b7c6df83a056
--- /dev/null
+++ b/llvm/test/Regression/Transforms/LoopUnswitch/2006-06-27-DeadSwitchCase.ll
@@ -0,0 +1,31 @@
+; RUN: llvm-as < %s | opt -loop-unswitch -disable-output
+implementation   ; Functions:
+
+void %init_caller_save() {
+entry:
+	br label %cond_true78
+
+cond_next20:		; preds = %cond_true64
+	br label %bb31
+
+bb31:		; preds = %cond_true64, %cond_true64, %cond_next20
+	%iftmp.29.1 = phi uint [ 0, %cond_next20 ], [ 0, %cond_true64 ], [ 0, %cond_true64 ]		; <uint> [#uses=0]
+	br label %bb54
+
+bb54:		; preds = %cond_true78, %bb31
+	br bool false, label %bb75, label %cond_true64
+
+cond_true64:		; preds = %bb54
+	switch int %i.0.0, label %cond_next20 [
+		 int 17, label %bb31
+		 int 18, label %bb31
+	]
+
+bb75:		; preds = %bb54
+	%tmp74.0 = add int %i.0.0, 1		; <int> [#uses=1]
+	br label %cond_true78
+
+cond_true78:		; preds = %bb75, %entry
+	%i.0.0 = phi int [ 0, %entry ], [ %tmp74.0, %bb75 ]		; <int> [#uses=2]
+	br label %bb54
+}