summaryrefslogtreecommitdiffstats
path: root/test/Transforms/SimplifyCFG/invoke_unwind.ll
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-10-13 18:13:05 +0000
committerChris Lattner <sabre@nondot.org>2009-10-13 18:13:05 +0000
commit11f15dbb287b5d9aa63913f84ce931569a5ebdf3 (patch)
tree0815e2d46bc510117a3be44213454991e3e83222 /test/Transforms/SimplifyCFG/invoke_unwind.ll
parentbf07da0e2710e9d4b4ae292aaac9446617d4c485 (diff)
downloadexternal_llvm-11f15dbb287b5d9aa63913f84ce931569a5ebdf3.zip
external_llvm-11f15dbb287b5d9aa63913f84ce931569a5ebdf3.tar.gz
external_llvm-11f15dbb287b5d9aa63913f84ce931569a5ebdf3.tar.bz2
change simplifycfg to not duplicate 'unwind' instructions. Hopefully
this will increase the likelihood of common code getting sunk towards the unwind. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83996 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Transforms/SimplifyCFG/invoke_unwind.ll')
-rw-r--r--test/Transforms/SimplifyCFG/invoke_unwind.ll21
1 files changed, 18 insertions, 3 deletions
diff --git a/test/Transforms/SimplifyCFG/invoke_unwind.ll b/test/Transforms/SimplifyCFG/invoke_unwind.ll
index da6e3db..bbd779b 100644
--- a/test/Transforms/SimplifyCFG/invoke_unwind.ll
+++ b/test/Transforms/SimplifyCFG/invoke_unwind.ll
@@ -1,10 +1,9 @@
-; This testcase checks to see if the simplifycfg pass is converting invoke
-; instructions to call instructions if the handler just rethrows the exception.
-
; RUN: opt < %s -simplifycfg -S | FileCheck %s
declare void @bar()
+; This testcase checks to see if the simplifycfg pass is converting invoke
+; instructions to call instructions if the handler just rethrows the exception.
define i32 @test1() {
; CHECK: @test1
; CHECK-NEXT: call void @bar()
@@ -16,3 +15,19 @@ Ok: ; preds = %0
Rethrow: ; preds = %0
unwind
}
+
+
+; Verify that simplifycfg isn't duplicating 'unwind' instructions. Doing this
+; is bad because it discourages commoning.
+define i32 @test2(i1 %c) {
+; CHECK: @test2
+; CHECK: T:
+; CHECK-NEXT: call void @bar()
+; CHECK-NEXT: br label %F
+ br i1 %c, label %T, label %F
+T:
+ call void @bar()
+ br label %F
+F:
+ unwind
+}