[VirtRegMap] Fix for PR17825. Do not ignore noreturn definitions when setting
[oota-llvm.git] / test / CodeGen / ARM / noreturn.ll
index 3a5c39e9a8dca9fc2658dab142e4c5bed4b8bb45..4c876cec9c106376486929f6460d2ccbd4d12b36 100644 (file)
@@ -2,8 +2,7 @@
 ; Test case from PR16882.
 target triple = "thumbv7s-apple-ios"
 
-; Function Attrs: noreturn
-define i32 @test1() #0 {
+define i32 @test1() {
 ; CHECK-LABEL: @test1
 ; CHECK-NOT: push
 entry:
@@ -11,7 +10,7 @@ entry:
   unreachable
 }
 
-; Function Attrs: noreturn
+; Function Attrs: noreturn nounwind
 declare void @overflow() #0
 
 define i32 @test2(i32 %x, i32 %y) {
@@ -35,4 +34,17 @@ if.end:                                           ; preds = %entry
   ret i32 %conv2
 }
 
-attributes #0 = { noreturn }
+; Test case for PR17825.
+define i32 @test3() {
+; CHECK-LABEL: @test3
+; CHECK: push
+entry:
+  tail call void @overflow_with_unwind() #1
+  unreachable
+}
+
+; Function Attrs: noreturn
+declare void @overflow_with_unwind() #1
+
+attributes #0 = { noreturn nounwind }
+attributes #1 = { noreturn }