{-# LINE 1 "LLVM/FFI/Support.hsc" #-}
{-# LANGUAGE CPP, ForeignFunctionInterface #-}
{-# LINE 2 "LLVM/FFI/Support.hsc" #-}

module LLVM.FFI.Support
    (
      createStandardModulePasses
    , createStandardFunctionPasses

{-# LINE 8 "LLVM/FFI/Support.hsc" #-}
    , addEmitObjectPass

{-# LINE 10 "LLVM/FFI/Support.hsc" #-}
    , disablePrettyStackTrace
    ) where


{-# LINE 14 "LLVM/FFI/Support.hsc" #-}
import Foreign.C.Types (CInt(..), CUInt(..))

{-# LINE 18 "LLVM/FFI/Support.hsc" #-}
import Foreign.C.String (CString)
import LLVM.FFI.Core (PassManagerRef, ModuleRef)

foreign import ccall unsafe "LLVMCreateStandardFunctionPasses" createStandardFunctionPasses
    :: PassManagerRef -> CUInt -> IO ()

foreign import ccall unsafe "LLVMCreateStandardModulePasses" createStandardModulePasses
    :: PassManagerRef -> CUInt -> CInt -> CInt -> CInt -> CInt -> CInt -> CInt -> IO ()


{-# LINE 28 "LLVM/FFI/Support.hsc" #-}
foreign import ccall unsafe "LLVMAddEmitObjectPass" addEmitObjectPass
    :: ModuleRef -> CString -> IO CUInt

{-# LINE 31 "LLVM/FFI/Support.hsc" #-}

foreign import ccall unsafe "LLVMDisablePrettyStackTrace" disablePrettyStackTrace
    :: IO ()