|  | ; RUN: llc < %s -mtriple=armv7-apple-ios | FileCheck %s | 
|  | ; This testcase makes sure we can handle invoke @llvm.donothing without | 
|  | ; assertion failure. | 
|  | ; <rdar://problem/13228754> & <rdar://problem/13316637> | 
|  |  | 
|  | ; CHECK: .globl  _foo | 
|  | define void @foo() personality i8* bitcast (i32 (...)* @__gxx_personality_sj0 to i8*) { | 
|  | invoke.cont: | 
|  | invoke void @callA() | 
|  | to label %invoke.cont25 unwind label %lpad2 | 
|  | invoke.cont25: | 
|  | invoke void @llvm.donothing() | 
|  | to label %invoke.cont27 unwind label %lpad15 | 
|  |  | 
|  | invoke.cont27: | 
|  | invoke void @callB() | 
|  | to label %invoke.cont75 unwind label %lpad15 | 
|  |  | 
|  | invoke.cont75: | 
|  | ret void | 
|  |  | 
|  | lpad2: | 
|  | %0 = landingpad { i8*, i32 } | 
|  | cleanup | 
|  | br label %eh.resume | 
|  |  | 
|  | lpad15: | 
|  | %1 = landingpad { i8*, i32 } | 
|  | cleanup | 
|  | br label %eh.resume | 
|  |  | 
|  | eh.resume: | 
|  | resume { i8*, i32 } zeroinitializer | 
|  | } | 
|  |  | 
|  | ; CHECK: .globl _bar | 
|  | define linkonce_odr void @bar(i32* %a) personality i8* bitcast (i32 (...)* @__gxx_personality_sj0 to i8*) { | 
|  | if.end.i.i.i: | 
|  | invoke void @llvm.donothing() | 
|  | to label %call.i.i.i.noexc unwind label %eh.resume | 
|  |  | 
|  | call.i.i.i.noexc: | 
|  | br i1 false, label %cleanup, label %new.notnull.i.i | 
|  |  | 
|  | new.notnull.i.i: | 
|  | br label %cleanup | 
|  |  | 
|  | cleanup: | 
|  | %0 = load i32, i32* %a, align 4 | 
|  | %inc294 = add nsw i32 %0, 4 | 
|  | store i32 %inc294, i32* %a, align 4 | 
|  | br i1 false, label %_ZN3lol5ArrayIivvvvvvvED1Ev.exit, label %delete.notnull.i.i.i1409 | 
|  |  | 
|  | delete.notnull.i.i.i1409: | 
|  | br label %_ZN3lol5ArrayIivvvvvvvED1Ev.exit | 
|  |  | 
|  | _ZN3lol5ArrayIivvvvvvvED1Ev.exit: | 
|  | ret void | 
|  |  | 
|  | eh.resume: | 
|  | %1 = landingpad { i8*, i32 } | 
|  | cleanup | 
|  | %2 = extractvalue { i8*, i32 } %1, 0 | 
|  | %3 = extractvalue { i8*, i32 } %1, 1 | 
|  | %lpad.val = insertvalue { i8*, i32 } undef, i8* %2, 0 | 
|  | %lpad.val395 = insertvalue { i8*, i32 } %lpad.val, i32 %3, 1 | 
|  | resume { i8*, i32 } %lpad.val395 | 
|  | } | 
|  |  | 
|  | declare void @callA() | 
|  | declare void @callB() | 
|  | declare void @llvm.donothing() nounwind readnone | 
|  | declare i32 @__gxx_personality_sj0(...) |