1 USING: accessors alien compiler.units kernel
2 llvm tools.test words llvm.core ;
6 : add-abi ( x y -- x+y ) ! to be filled in by llvm
9 : llvm-add ( x y -- x+y )
12 { [ 32 LLVMIntType ] "add" }
13 { [ 32 LLVMIntType ] "x" }
14 { [ 32 LLVMIntType ] "y" }
17 builder value>> "x" get-param "y" get-param "sum" LLVMBuildAdd
18 builder value>> swap LLVMBuildRet drop
26 "add" find-function global>pointer
27 [ "int" { "int" "int" } "cdecl" alien-indirect ] curry \ add-abi swap
28 (( x y -- x+y )) [ define-declared ] with-compilation-unit
29 add-abi ! call our new word
30 ] with-engine ; inline
32 [ 7 ] [ 3 4 llvm-add ] unit-test