diff options
Diffstat (limited to 'test/CodeGen/ARM/invoke-donothing-assert.ll')
-rw-r--r-- | test/CodeGen/ARM/invoke-donothing-assert.ll | 45 |
1 files changed, 39 insertions, 6 deletions
diff --git a/test/CodeGen/ARM/invoke-donothing-assert.ll b/test/CodeGen/ARM/invoke-donothing-assert.ll index d0c98f8028..0b607f7edf 100644 --- a/test/CodeGen/ARM/invoke-donothing-assert.ll +++ b/test/CodeGen/ARM/invoke-donothing-assert.ll @@ -1,13 +1,10 @@ ; 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 -; CHECK: .globl _main +; <rdar://problem/13228754> & <rdar://problem/13316637> -declare void @callA() -declare i32 @__gxx_personality_sj0(...) - -define void @main() { +; CHECK: .globl _foo +define void @foo() { invoke.cont: invoke void @callA() to label %invoke.cont25 unwind label %lpad2 @@ -36,5 +33,41 @@ eh.resume: resume { i8*, i32 } zeroinitializer } +; CHECK: .globl _bar +define linkonce_odr void @bar(i32* %a) { +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* %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 } personality i8* bitcast (i32 (...)* @__gxx_personality_sj0 to i8*) + 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(...) |