Skip to content

Instantly share code, notes, and snippets.

@paniq
Created September 8, 2016 00:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save paniq/cba1d412ac68d413dec63d35d6b60a5c to your computer and use it in GitHub Desktop.
Save paniq/cba1d412ac68d413dec63d35d6b60a5c to your computer and use it in GitHub Desktop.
# input
let puts
external "puts"
cdecl int (rawstring)
puts "hello world!\n"
# generated IL module
main_entry:
%0 = const_type_pointer void : (pointer Type)
%1 = const_type_pointer null : (pointer Type)
%2 = const_type_pointer real16 : (pointer Type)
%3 = const_type_pointer real32 : (pointer Type)
%4 = const_type_pointer real64 : (pointer Type)
%5 = const_type_pointer uint1 : (pointer Type)
%6 = const_type_pointer int8 : (pointer Type)
%7 = const_type_pointer int16 : (pointer Type)
%8 = const_type_pointer int32 : (pointer Type)
%9 = const_type_pointer int64 : (pointer Type)
%10 = const_type_pointer uint8 : (pointer Type)
%11 = const_type_pointer uint16 : (pointer Type)
%12 = const_type_pointer uint32 : (pointer Type)
%13 = const_type_pointer uint64 : (pointer Type)
%14 = const_type_pointer uint64 : (pointer Type)
%15 = const_type_pointer (pointer int8) : (pointer Type)
%16 = const_integer 0 : uint1
%17 = const_integer 1 : uint1
%18 = const_string "puts" : (array int8 5)
%19 = cdecl %8 (%15) : (pointer Type)
%20 = external %18 -> %19 : any
%21 = const_string "hello world!\n" : (array int8 14)
%22 = call %20 %21 : any
# after solver pass
main_entry:
%0 = const_type_pointer void : (pointer Type)
%1 = const_type_pointer null : (pointer Type)
%2 = const_type_pointer real16 : (pointer Type)
%3 = const_type_pointer real32 : (pointer Type)
%4 = const_type_pointer real64 : (pointer Type)
%5 = const_type_pointer uint1 : (pointer Type)
%6 = const_type_pointer int8 : (pointer Type)
%7 = const_type_pointer int16 : (pointer Type)
%8 = const_type_pointer int32 : (pointer Type)
%9 = const_type_pointer int64 : (pointer Type)
%10 = const_type_pointer uint8 : (pointer Type)
%11 = const_type_pointer uint16 : (pointer Type)
%12 = const_type_pointer uint32 : (pointer Type)
%13 = const_type_pointer uint64 : (pointer Type)
%14 = const_type_pointer uint64 : (pointer Type)
%15 = const_type_pointer (pointer int8) : (pointer Type)
%16 = const_integer 0 : uint1
%17 = const_integer 1 : uint1
%18 = const_string "puts" : (array int8 5)
%19 = const_type_pointer (cdecl int32 ((pointer int8))) : (pointer Type)
%20 = external %18 -> %19 : (pointer (cdecl int32 ((pointer int8))))
%21 = const_string "hello world!\n" : (array int8 14)
%22 = call %20 %21 : int32
# generated LLVM module
; ModuleID = 'main'
declare i32 @puts(i8*)
define void @main() {
%1 = call i32 @puts([14 x i8] c"hello world!\0A\00")
ret void
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment