llvm-tf-9.2: example/HelloJIT.hs
module Main (main) where
import qualified LLVM.ExecutionEngine as EE
import LLVM.Core
import Data.Word (Word8, Word32)
bldGreet :: CodeGenModule (Function (IO ()))
bldGreet = withStringNul "Hello, JIT!" (\greetz -> do
puts <- newNamedFunction ExternalLinkage "puts" :: TFunction (Ptr Word8 -> IO Word32)
func <- createFunction ExternalLinkage $ do
_ <- call puts =<< getElementPtr0 greetz (0::Word32, ())
ret ()
return func)
main :: IO ()
main = do
initializeNativeTarget
greet <- EE.simpleFunction bldGreet
greet
greet
greet