---
source: crates/mun_codegen/src/test.rs
expression: "\n // resources/script.mun\n extern fn thing(n: i32);\n extern fn print(n: i32) -> i32;\n\n pub fn main() {\n // 1st\n print(1);\n thing(5);\n\n // 2nd\n print(2);\n thing(78);\n }\n "
---
; == FILE IR (mod) =====================================
; ModuleID = 'mod'
source_filename = "mod"
%DispatchTable = type { i32 (i32)*, void (i32)* }
@dispatchTable = external global %DispatchTable
@global_type_lookup_table = external global [1 x i64*]
define void @main() {
body:
%print_ptr = load i32 (i32)*, i32 (i32)** getelementptr inbounds (%DispatchTable, %DispatchTable* @dispatchTable, i32 0, i32 0), align 8
%print = call i32 %print_ptr(i32 1)
%thing_ptr = load void (i32)*, void (i32)** getelementptr inbounds (%DispatchTable, %DispatchTable* @dispatchTable, i32 0, i32 1), align 8
call void %thing_ptr(i32 5)
%print_ptr1 = load i32 (i32)*, i32 (i32)** getelementptr inbounds (%DispatchTable, %DispatchTable* @dispatchTable, i32 0, i32 0), align 8
%print2 = call i32 %print_ptr1(i32 2)
%thing_ptr3 = load void (i32)*, void (i32)** getelementptr inbounds (%DispatchTable, %DispatchTable* @dispatchTable, i32 0, i32 1), align 8
call void %thing_ptr3(i32 78)
ret void
}
; == GROUP IR (mod) ====================================
; ModuleID = 'group_name'
source_filename = "group_name"
%DispatchTable = type { i32 (i32)*, void (i32)* }
@dispatchTable = global %DispatchTable zeroinitializer
@global_type_lookup_table = global [1 x i64*] zeroinitializer