Created
August 27, 2019 20:03
-
-
Save filipnavara/96f5e4b39b8f55eafbefa9fa587af39e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
*** Unoptimized LLVM IR for (wrapper runtime-invoke) <Module>:runtime_invoke_void__this___object *** | |
; Function Attrs: noinline uwtable | |
define monocc i64* @"(wrapper runtime-invoke) <Module>:runtime_invoke_void__this___object (object,intptr,intptr,intptr)"(i64* %arg_this, i64 %arg_params, i64 %arg_exc, i64 %arg_method) #0 personality i32 (...)* @mono_personality { | |
BB0: | |
%0 = alloca i64, align 8 | |
%1 = alloca i64, align 8 | |
%2 = alloca i64*, align 1 | |
%3 = alloca i64*, align 1 | |
%4 = alloca i64*, align 1 | |
%5 = alloca i64, align 8 | |
%6 = alloca i64*, align 1 | |
store i64 %arg_exc, i64* %5 | |
%exvar = alloca i64* | |
%7 = load volatile i64, i64* inttoptr (i64 4481434488 to i64*) | |
%8 = icmp eq i64 %7, 0 | |
%9 = call i1 @llvm.expect.i1(i1 %8, i1 true) | |
br i1 %9, label %CONT_BB2, label %POLL_BB1 | |
BB3_CALL_HANDLER_TARGET: ; preds = %EH_CLAUSE0_BB3 | |
%10 = load i64*, i64** %exvar | |
store i64* %10, i64** %2 | |
%11 = load volatile i64, i64* inttoptr (i64 4481434488 to i64*) | |
%12 = icmp eq i64 %11, 0 | |
%13 = call i1 @llvm.expect.i1(i1 %12, i1 true) | |
br i1 %13, label %CONT_BB7, label %POLL_BB6 | |
POLL_BB1: ; preds = %BB0 | |
%14 = load void ()*, void ()** @mono_threads_state_poll | |
call coldcc void %14() | |
br label %CONT_BB2 | |
CONT_BB2: ; preds = %POLL_BB1, %BB0 | |
br label %BB5 | |
BB5: ; preds = %CONT_BB2 | |
store i64* null, i64** %4 | |
store i64* null, i64** %3 | |
br label %BB4 | |
BB4: ; preds = %BB5 | |
%15 = load volatile i64, i64* %5 | |
%16 = icmp eq i64 %15, 0 | |
br i1 %16, label %BB6, label %BB2 | |
BB6: ; preds = %BB4 | |
%t54 = load i32, i32* inttoptr (i64 4481216016 to i32*) | |
%17 = icmp eq i32 %t54, 0 | |
%18 = call i1 @llvm.expect.i1(i1 %17, i1 true) | |
br i1 %18, label %BB12, label %BB13 | |
BB2: ; preds = %BB4 | |
%t26 = load i32, i32* inttoptr (i64 4481216016 to i32*) | |
%19 = icmp eq i32 %t26, 0 | |
%20 = call i1 @llvm.expect.i1(i1 %19, i1 true) | |
br i1 %20, label %BB7, label %BB8 | |
BB12: ; preds = %BB14, %BB6 | |
%21 = inttoptr i64 %arg_params to i64* | |
%t70 = load i64, i64* %21 | |
%22 = inttoptr i64 %arg_method to void (i64*, i64*)* | |
%23 = inttoptr i64 %t70 to i64* | |
notail call monocc void %22(i64* %arg_this, i64* %23) | |
%24 = load volatile i64*, i64** %4 | |
store i64* %24, i64** %6 | |
br label %BB1 | |
BB13: ; preds = %BB6 | |
%25 = load i64* ()*, i64* ()** @0 | |
%26 = notail call i64* %25() | |
%27 = ptrtoint i64* %26 to i64 | |
%28 = icmp eq i64 %27, 0 | |
%29 = call i1 @llvm.expect.i1(i1 %28, i1 true) | |
br i1 %29, label %BB14, label %BB15 | |
BB1: ; preds = %BB11, %BB12 | |
%30 = load volatile i64*, i64** %6 | |
ret i64* %30 | |
BB14: ; preds = %BB13 | |
br label %BB12 | |
BB15: ; preds = %BB13 | |
%31 = ptrtoint i64* %26 to i64 | |
%t65 = add i64 %31, 136 | |
%32 = inttoptr i64 %t65 to i32* | |
%33 = getelementptr i32, i32* %32, i32 0 | |
store i32 1, i32* %33 | |
%34 = load void (i64*)*, void (i64*)** @mono_arch_rethrow_exception | |
call void %34(i64* %26) | |
unreachable | |
BB7: ; preds = %BB9, %BB2 | |
%35 = inttoptr i64 %arg_params to i64* | |
%t43 = load i64, i64* %35 | |
%36 = inttoptr i64 %arg_method to void (i64*, i64*)* | |
%37 = inttoptr i64 %t43 to i64* | |
invoke monocc void %36(i64* %arg_this, i64* %37) | |
to label %NOEX_BB3 unwind label %EH_CLAUSE0_BB3 | |
BB8: ; preds = %BB2 | |
%38 = load i64* ()*, i64* ()** @1 | |
%39 = invoke i64* %38() | |
to label %NOEX_BB4 unwind label %EH_CLAUSE0_BB3 | |
BB11: ; preds = %CONT_BB7, %NOEX_BB3 | |
%40 = load volatile i64*, i64** %4 | |
store i64* %40, i64** %6 | |
br label %BB1 | |
EH_CLAUSE0_BB3: ; preds = %BB10, %BB8, %BB7 | |
%41 = landingpad { i8*, i32 } | |
catch i32* @type_info_0 | |
%ex_obj = extractvalue { i8*, i32 } %41, 0 | |
%42 = bitcast i8* %ex_obj to i64* | |
store i64* %42, i64** %exvar | |
%ex_selector = extractvalue { i8*, i32 } %41, 1 | |
switch i32 %ex_selector, label %BB3_CALL_HANDLER_TARGET [ | |
] | |
NOEX_BB3: ; preds = %BB7 | |
br label %BB11 | |
NOEX_BB4: ; preds = %BB8 | |
%43 = ptrtoint i64* %39 to i64 | |
%44 = icmp eq i64 %43, 0 | |
%45 = call i1 @llvm.expect.i1(i1 %44, i1 true) | |
br i1 %45, label %BB9, label %BB10 | |
BB9: ; preds = %NOEX_BB4 | |
br label %BB7 | |
BB10: ; preds = %NOEX_BB4 | |
%46 = ptrtoint i64* %39 to i64 | |
%t38 = add i64 %46, 136 | |
%47 = inttoptr i64 %t38 to i32* | |
%48 = getelementptr i32, i32* %47, i32 0 | |
store i32 1, i32* %48 | |
%49 = load void (i64*)*, void (i64*)** @mono_arch_rethrow_exception.1 | |
invoke void %49(i64* %39) | |
to label %NOEX_BB5 unwind label %EH_CLAUSE0_BB3 | |
NOEX_BB5: ; preds = %BB10 | |
unreachable | |
POLL_BB6: ; preds = %BB3_CALL_HANDLER_TARGET | |
%50 = load void ()*, void ()** @mono_threads_state_poll.2 | |
call coldcc void %50() | |
br label %CONT_BB7 | |
CONT_BB7: ; preds = %POLL_BB6, %BB3_CALL_HANDLER_TARGET | |
%51 = load volatile i64*, i64** %2 | |
store i64* %51, i64** %3 | |
%52 = load volatile i64, i64* %5 | |
%53 = load volatile i64*, i64** %3 | |
%54 = inttoptr i64 %52 to i64* | |
%55 = getelementptr i64, i64* %54, i32 0 | |
%56 = ptrtoint i64* %53 to i64 | |
store i64 %56, i64* %55 | |
%t50 = lshr i64 %52, 9 | |
%t79 = and i64 %t50, 8388607 | |
%t80 = add i64 %t79, 4433379328 | |
%57 = inttoptr i64 %t80 to i8* | |
%58 = getelementptr i8, i8* %57, i32 0 | |
store i8 1, i8* %58 | |
br label %BB11 | |
} | |
*** | |
Referencing function in another module! | |
%9 = call i1 @llvm.expect.i1(i1 %8, i1 true) | |
; ModuleID = 'jit-module-runtime_invoke_void__this___object' | |
i1 (i1, i1)* @llvm.expect.i1 | |
; ModuleID = 'jit-module-llvm_func_wrapper_0' | |
Referencing function in another module! | |
%13 = call i1 @llvm.expect.i1(i1 %12, i1 true) | |
; ModuleID = 'jit-module-runtime_invoke_void__this___object' | |
i1 (i1, i1)* @llvm.expect.i1 | |
; ModuleID = 'jit-module-llvm_func_wrapper_0' | |
Referencing function in another module! | |
%18 = call i1 @llvm.expect.i1(i1 %17, i1 true) | |
; ModuleID = 'jit-module-runtime_invoke_void__this___object' | |
i1 (i1, i1)* @llvm.expect.i1 | |
; ModuleID = 'jit-module-llvm_func_wrapper_0' | |
Referencing function in another module! | |
%20 = call i1 @llvm.expect.i1(i1 %19, i1 true) | |
; ModuleID = 'jit-module-runtime_invoke_void__this___object' | |
i1 (i1, i1)* @llvm.expect.i1 | |
; ModuleID = 'jit-module-llvm_func_wrapper_0' | |
Referencing function in another module! | |
%29 = call i1 @llvm.expect.i1(i1 %28, i1 true) | |
; ModuleID = 'jit-module-runtime_invoke_void__this___object' | |
i1 (i1, i1)* @llvm.expect.i1 | |
; ModuleID = 'jit-module-llvm_func_wrapper_0' | |
Referencing function in another module! | |
%45 = call i1 @llvm.expect.i1(i1 %44, i1 true) | |
; ModuleID = 'jit-module-runtime_invoke_void__this___object' | |
i1 (i1, i1)* @llvm.expect.i1 | |
; ModuleID = 'jit-module-llvm_func_wrapper_0' | |
LLVM ERROR: Broken function found, compilation aborted! |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment