BSD-3-Clause licensed by Anthony Cowley, Stephen Diehl, Moritz Kiefer, Benjamin S. Scarlet
Maintained by Anthony Cowley, Stephen Diehl, Moritz Kiefer
This version can be pinned in stack with:llvm-hs-5.1.3@sha256:a77132180598d9e529ee2ca7d360126bf7d8566eae1d01df097e33b571c61f61,8591

Module documentation for 5.1.3

  • LLVM
    • LLVM.Analysis
    • LLVM.CodeGenOpt
    • LLVM.CodeModel
    • LLVM.CommandLine
    • LLVM.Context
    • LLVM.Diagnostic
    • LLVM.Exception
    • LLVM.ExecutionEngine
    • LLVM.Internal
      • LLVM.Internal.Analysis
      • LLVM.Internal.Atomicity
      • LLVM.Internal.Attribute
      • LLVM.Internal.BasicBlock
      • LLVM.Internal.CallingConvention
      • LLVM.Internal.Coding
      • LLVM.Internal.CommandLine
      • LLVM.Internal.Constant
      • LLVM.Internal.Context
      • LLVM.Internal.DataLayout
      • LLVM.Internal.DecodeAST
      • LLVM.Internal.Diagnostic
      • LLVM.Internal.EncodeAST
      • LLVM.Internal.ExecutionEngine
      • LLVM.Internal.FFI
        • LLVM.Internal.FFI.Analysis
        • LLVM.Internal.FFI.Assembly
        • LLVM.Internal.FFI.Attribute
        • LLVM.Internal.FFI.BasicBlock
        • LLVM.Internal.FFI.BinaryOperator
        • LLVM.Internal.FFI.Bitcode
        • LLVM.Internal.FFI.Builder
        • LLVM.Internal.FFI.ByteRangeCallback
        • LLVM.Internal.FFI.Cleanup
        • LLVM.Internal.FFI.CommandLine
        • LLVM.Internal.FFI.Constant
        • LLVM.Internal.FFI.Context
        • LLVM.Internal.FFI.DataLayout
        • LLVM.Internal.FFI.DynamicLibrary
        • LLVM.Internal.FFI.ExecutionEngine
        • LLVM.Internal.FFI.Function
        • LLVM.Internal.FFI.GlobalAlias
        • LLVM.Internal.FFI.GlobalValue
        • LLVM.Internal.FFI.GlobalVariable
        • LLVM.Internal.FFI.InlineAssembly
        • LLVM.Internal.FFI.Instruction
        • LLVM.Internal.FFI.InstructionDefs
        • LLVM.Internal.FFI.Iterate
        • LLVM.Internal.FFI.LLVMCTypes
        • LLVM.Internal.FFI.MemoryBuffer
        • LLVM.Internal.FFI.Metadata
        • LLVM.Internal.FFI.Module
        • LLVM.Internal.FFI.OrcJIT
          • LLVM.Internal.FFI.OrcJIT.CompileLayer
          • LLVM.Internal.FFI.OrcJIT.CompileOnDemandLayer
          • LLVM.Internal.FFI.OrcJIT.IRCompileLayer
          • LLVM.Internal.FFI.OrcJIT.IRTransformLayer
        • LLVM.Internal.FFI.PassManager
        • LLVM.Internal.FFI.PtrHierarchy
        • LLVM.Internal.FFI.RTDyldMemoryManager
        • LLVM.Internal.FFI.RawOStream
        • LLVM.Internal.FFI.SMDiagnostic
        • LLVM.Internal.FFI.ShortByteString
        • LLVM.Internal.FFI.Target
        • LLVM.Internal.FFI.Threading
        • LLVM.Internal.FFI.Transforms
        • LLVM.Internal.FFI.Type
        • LLVM.Internal.FFI.User
        • LLVM.Internal.FFI.Value
      • LLVM.Internal.FastMathFlags
      • LLVM.Internal.FloatingPointPredicate
      • LLVM.Internal.Function
      • LLVM.Internal.Global
      • LLVM.Internal.InlineAssembly
      • LLVM.Internal.Instruction
      • LLVM.Internal.InstructionDefs
      • LLVM.Internal.IntegerPredicate
      • LLVM.Internal.LibraryFunction
      • LLVM.Internal.Linking
      • LLVM.Internal.MemoryBuffer
      • LLVM.Internal.Metadata
      • LLVM.Internal.Module
      • LLVM.Internal.Operand
      • LLVM.Internal.OrcJIT
        • LLVM.Internal.OrcJIT.CompileLayer
        • LLVM.Internal.OrcJIT.CompileOnDemandLayer
        • LLVM.Internal.OrcJIT.IRCompileLayer
        • LLVM.Internal.OrcJIT.IRTransformLayer
      • LLVM.Internal.PassManager
      • LLVM.Internal.RMWOperation
      • LLVM.Internal.RawOStream
      • LLVM.Internal.String
      • LLVM.Internal.TailCallKind
      • LLVM.Internal.Target
      • LLVM.Internal.Threading
      • LLVM.Internal.Type
      • LLVM.Internal.Value
    • LLVM.Linking
    • LLVM.Module
    • LLVM.OrcJIT
    • LLVM.PassManager
    • LLVM.Relocation
    • LLVM.Target
      • LLVM.Target.LibraryFunction
      • LLVM.Target.Options
    • LLVM.Threading
    • LLVM.Transforms

llvm-hs is a set of Haskell bindings for LLVM http://llvm.org/. Unlike other current Haskell bindings, it uses an ADT to represent LLVM IR (http://llvm.org/docs/LangRef.html), and so offers two advantages: it handles almost all of the stateful complexities of using the LLVM API to build IR; and it supports moving IR not only from Haskell into LLVM C++ objects, but the other direction - from LLVM C++ into Haskell.

Changes

5.1.3 (2018-01-06)

  • Add bindings to loadLibraryPermamently and getSymbolAddressInProcess.

5.1.2 (2017-12-19)

  • Reupload of 5.1.1 since Hackage broke during the original upload.

5.1.1 (2017-12-16)

  • Fix argument order in LLVM_Hs_CreateTargetMachine. This affects withTargetMachine and withHostTargetMachine.
  • Add support for MCTargetOptions.

5.1.0 (2017-10-12)

Bugfixes

  • Set target options in withTargetMachine. Previously the options passed there were simply ignored.
  • Fix decoding of constant vectors.
  • Fix decoding of function attributes in calls.

Enhancements

  • Support for more target options.
  • Suport string attributes as parameter attributes.
  • Support more calling conventions.
  • Support NoTail TailCallKind.

5.0.0 (2017-09-07)

  • Support for LLVM 5.0

    We only give a summary of the changes affecting the public API of llvm-hs here. Please refer to the official release notes for LLVM 5.0 for an overview of all changes in LLVM 5.0.

    • The X86_64_Win64 calling convention is now called Win64.
    • There is a new Speculatable function attribute.
    • The CrossThread synchronization scope has been removed. There is now a new System synchronization scope.
    • The OrcJIT-API now operates on individual modules instead of sets of modules.
    • The lessPreciseFloatingPointMultiplyAddOption field has been removed from the target options.
    • The compressDebugSections option field is now of type DebugCompressionType instead of Bool.
    • The BasicBlockVectorize pass has been removed. You should use SuperwordLevelParallelismVectorize instead.
  • Throw ‘EncodeException’ when the type supplied in a ‘GlobalReference’ does not match the type of the expression.

  • Throw ‘EncodeException’ when the result of instructions returning void is named using ‘:=’.

4.2.0 (2017-06-20)

  • Revamp OrcJIT API
    • The user facing API is now exposed using LLVM.OrcJIT.
    • All user facing functions have been documented.
    • In addition the bracket-style API, there are now new* and dispose* functions making it easier to ingegrate OrcJIT in custom monad transformer stacks.
    • There is a new CompileLayer typeclass which abstracts over the various compile layers in OrcJIT.
  • Support QuickCheck 2.10

4.1.0 (2017-05-17)

  • Switch most of the API from String to ByteString.
  • Switch from ExceptT to using exceptions. See LLVM.Exception for an overview of the exceptions potentially thrown.

4.0.1

  • Fix linking of system libraries

4.0.0 (initial release, changes in comparison to llvm-general)

  • Move modules from LLVM.General* to LLVM.*
  • Support for LLVM 4.0
  • Improved support for LLVM’s exception handling instructions
  • -fshared-llvm is now supported on windows (thanks to @RyanGLScott)
  • Default to -fshared-llvm
  • Expose LLVM.Internal.* modules.