aboutsummaryrefslogtreecommitdiff
path: root/test/Transforms/DebugIR/exception.ll.check
diff options
context:
space:
mode:
Diffstat (limited to 'test/Transforms/DebugIR/exception.ll.check')
-rw-r--r--test/Transforms/DebugIR/exception.ll.check95
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 !