change simplifycfg to not duplicate 'unwind' instructions. Hopefully
[oota-llvm.git] / test / Transforms / SimplifyCFG / invoke_unwind.ll
index da6e3db2f8acf4b5370263798e011e575a22fa56..bbd779beb489d3f55b0f052e29608a8ef4c6d61e 100644 (file)
@@ -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
+}