// #target: macos-x64 module demo; define Callback = fn int(char* text, int value); fn int my_callback(char* text, int value) { return 0; } Callback cb = &my_callback; fn void main() { int result = cb("demo", 123); // .. } // #expect: demo.ll define i32 @demo.my_callback(i8* %0, i32 %1) #0 { entry: ret i32 0 } define void @demo.main() #0 { entry: %result = alloca i32, align 4 %0 = load i32 (i8*, i32)*, i32 (i8*, i32)** @demo.cb, align 8 %1 = call i32 %0(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i32 0, i32 0), i32 123) store i32 %1, i32* %result, align 4 ret void }