CS153/hw3/llprograms/callback1.ll

21 lines
412 B
LLVM
Raw Normal View History

%fty = type i64 (i64, i64)
declare i64 @ll_callback(%fty*)
declare i8* @ll_ltoa(i64)
declare void @ll_puts(i8*)
define i64 @foo(i64 %x, i64 %y) {
%1 = alloca i64
%2 = add i64 %x, %y
store i64 %2, i64* %1
%3 = load i64, i64* %1
ret i64 %3
}
define i64 @main(i64 %argc, i8** %argv) {
%1 = call i64 @ll_callback(%fty* @foo)
%2 = call i8* @ll_ltoa(i64 %1)
call void @ll_puts(i8* %2)
ret i64 0
}