diff options
Diffstat (limited to 'test/Transforms/DebugIR/exception.ll.check')
-rw-r--r-- | test/Transforms/DebugIR/exception.ll.check | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/test/Transforms/DebugIR/exception.ll.check b/test/Transforms/DebugIR/exception.ll.check new file mode 100644 index 0000000000..3d3659393a --- /dev/null +++ b/test/Transforms/DebugIR/exception.ll.check @@ -0,0 +1,95 @@ +; CHECK: store i32 0, i32* %retval, !dbg ! +; CHECK: store i32 %argc, i32* %argc.addr, align 4, !dbg ! +; CHECK: store i8** %argv, i8*** %argv.addr, align 8, !dbg ! +; CHECK: %exception = call i8* @__cxa_allocate_exception(i64 4) #2, !dbg ! +; CHECK: %0 = bitcast i8* %exception to i32*, !dbg ! +; CHECK: %1 = load i32* %argc.addr, align 4, !dbg ! +; CHECK: store i32 %1, i32* %0, !dbg ! +; CHECK: invoke void @__cxa_throw(i8* %exception, i8* bitcast (i8** @_ZTIi to i8*), i8* null) #3 +; CHECK: to label %unreachable unwind label %lpad, !dbg ! + +lpad: ; preds = %entry +; CHECK: %2 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) +; CHECK: catch i8* bitcast (i8** @_ZTIi to i8*), !dbg ! +; CHECK: %3 = extractvalue { i8*, i32 } %2, 0, !dbg ! +; CHECK: store i8* %3, i8** %exn.slot, !dbg ! +; CHECK: %4 = extractvalue { i8*, i32 } %2, 1, !dbg ! +; CHECK: store i32 %4, i32* %ehselector.slot, !dbg ! +; CHECK: br label %catch.dispatch, !dbg ! + +catch.dispatch: ; preds = %lpad +; CHECK: %sel = load i32* %ehselector.slot, !dbg ! +; CHECK: %5 = call i32 @llvm.eh.typeid.for(i8* bitcast (i8** @_ZTIi to i8*)) #2, !dbg ! +; CHECK: %matches = icmp eq i32 %sel, %5, !dbg ! +; CHECK: br i1 %matches, label %catch, label %eh.resume, !dbg ! + +catch: ; preds = %catch.dispatch +; CHECK: %exn = load i8** %exn.slot, !dbg ! +; CHECK: %6 = call i8* @__cxa_begin_catch(i8* %exn) #2, !dbg ! +; CHECK: %7 = bitcast i8* %6 to i32*, !dbg ! +; CHECK: %8 = load i32* %7, align 4, !dbg ! +; CHECK: store i32 %8, i32* %e, align 4, !dbg ! +; CHECK: %9 = load i32* %e, align 4, !dbg ! +; CHECK: store i32 %9, i32* %retval, !dbg ! +; CHECK: store i32 1, i32* %cleanup.dest.slot +; CHECK: call void @__cxa_end_catch() #2, !dbg ! +; CHECK: br label %try.cont, !dbg ! + +try.cont: ; preds = %catch +; CHECK: %10 = load i32* %retval, !dbg ! +; CHECK: ret i32 %10, !dbg ! + +eh.resume: ; preds = %catch.dispatch +; CHECK: %exn1 = load i8** %exn.slot, !dbg ! +; CHECK: %sel2 = load i32* %ehselector.slot, !dbg ! +; CHECK: %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn1, 0, !dbg ! +; CHECK: %lpad.val3 = insertvalue { i8*, i32 } %lpad.val, i32 %sel2, 1, !dbg ! +; CHECK: resume { i8*, i32 } %lpad.val3, !dbg ! + +; CHECK: = metadata !{metadata !"exception-debug.ll", metadata !""} + +; CHECK: = metadata !{i32 16, i32 0, metadata ! +; CHECK: = metadata !{i32 17, i32 0, metadata ! +; CHECK: = metadata !{i32 18, i32 0, metadata ! +; CHECK: = metadata !{i32 19, i32 0, metadata ! +; CHECK: = metadata !{i32 20, i32 0, metadata ! +; CHECK: = metadata !{i32 21, i32 0, metadata ! +; CHECK: = metadata !{i32 22, i32 0, metadata ! +; CHECK: = metadata !{i32 25, i32 0, metadata ! + +lpad +; CHECK: = metadata !{i32 29, i32 0, metadata ! +; CHECK: = metadata !{i32 30, i32 0, metadata ! +; CHECK: = metadata !{i32 31, i32 0, metadata ! +; CHECK: = metadata !{i32 32, i32 0, metadata ! +; CHECK: = metadata !{i32 33, i32 0, metadata ! +; CHECK: = metadata !{i32 34, i32 0, metadata ! + +catch.dispatch +; CHECK: = metadata !{i32 37, i32 0, metadata ! +; CHECK: = metadata !{i32 38, i32 0, metadata ! +; CHECK: = metadata !{i32 39, i32 0, metadata ! +; CHECK: = metadata !{i32 40, i32 0, metadata ! + +catch +; CHECK: = metadata !{i32 43, i32 0, metadata ! +; CHECK: = metadata !{i32 44, i32 0, metadata ! +; CHECK: = metadata !{i32 45, i32 0, metadata ! +; CHECK: = metadata !{i32 46, i32 0, metadata ! +; CHECK: = metadata !{i32 47, i32 0, metadata ! +; CHECK: = metadata !{i32 48, i32 0, metadata ! +; CHECK: = metadata !{i32 49, i32 0, metadata ! +; CHECK: = metadata !{i32 50, i32 0, metadata ! +; CHECK: = metadata !{i32 51, i32 0, metadata ! +; CHECK: = metadata !{i32 52, i32 0, metadata ! + +try.cont +; CHECK: = metadata !{i32 55, i32 0, metadata ! +; CHECK: = metadata !{i32 56, i32 0, metadata ! + +eh.resume +; CHECK: = metadata !{i32 59, i32 0, metadata ! +; CHECK: = metadata !{i32 60, i32 0, metadata ! +; CHECK: = metadata !{i32 61, i32 0, metadata ! +; CHECK: = metadata !{i32 62, i32 0, metadata ! +; CHECK: = metadata !{i32 63, i32 0, metadata ! |