llvm-hs-pure

Pure Haskell LLVM functionality (no FFI).

http://github.com/llvm-hs/llvm-hs/

Version on this page:6.2.1
LTS Haskell 19.33:9.0.0
Stackage Nightly 2022-03-17:9.0.0
Latest on Hackage:9.0.0@rev:1

See all snapshots llvm-hs-pure appears in

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-pure-6.2.1@sha256:5c61a21d6f5b42bc3968727ff25347a26cb906104e6711f2c011f053725435ff,2931

Module documentation for 6.2.1

  • LLVM
    • LLVM.AST
      • LLVM.AST.AddrSpace
      • LLVM.AST.Attribute
      • LLVM.AST.COMDAT
      • LLVM.AST.CallingConvention
      • LLVM.AST.Constant
      • LLVM.AST.DLL
      • LLVM.AST.DataLayout
      • LLVM.AST.Float
      • LLVM.AST.FloatingPointPredicate
      • LLVM.AST.FunctionAttribute
      • LLVM.AST.Global
      • LLVM.AST.InlineAssembly
      • LLVM.AST.Instruction
      • LLVM.AST.IntegerPredicate
      • LLVM.AST.Linkage
      • LLVM.AST.Name
      • LLVM.AST.Operand
      • LLVM.AST.ParameterAttribute
      • LLVM.AST.RMWOperation
      • LLVM.AST.ThreadLocalStorage
      • LLVM.AST.Type
      • LLVM.AST.Typed
      • LLVM.AST.Visibility
    • LLVM.DataLayout
    • LLVM.IRBuilder
      • LLVM.IRBuilder.Constant
      • LLVM.IRBuilder.Instruction
      • LLVM.IRBuilder.Internal
        • LLVM.IRBuilder.Internal.SnocList
      • LLVM.IRBuilder.Module
      • LLVM.IRBuilder.Monad
    • LLVM.Prelude

llvm-hs-pure is a set of pure Haskell types and functions for interacting with LLVM http://llvm.org/. It includes an ADT to represent LLVM IR (http://llvm.org/docs/LangRef.html). The llvm-hs package builds on this one with FFI bindings to LLVM, but llvm-hs-pure does not require LLVM to be available.

Changes

6.2.1 (2018-06-12)

  • Fix type of shuffleVector in the IRBuilder API.

6.2.0 (2018-05-08)

  • Remove field prefixes from DIDerivedType, DIBasicType and DISubroutineType to make the API consistent with the other debug metadata types.
  • Change the type of the scope fields in DIModule and DINamespace to Maybe (MDRef DIScope) to reflect that they can be optional.

6.1.0 (2018-05-05)

  • IRBuilder: Ensure that automatically generated block labels are assigned smaller identifiers than the instructions following them. This is only important when you use llvm-hs-pretty. llvm-hs does not care about the order of identifiers assigned to unnamed values.
  • IRBuilder: add currentBlock which returns name of the currently active block.
  • Remove the MetadataNodeReference constructor. References to metadata nodes are now encoded using the polymorphic MDRef type.
  • Add debug metadata to the AST in LLVM.AST.Operand. Thanks to @xldenis who started that effort!
  • Drop support for GHC 7.10.
  • Add metadata field to GlobalVariable and Function.

6.0.0 (2018-03-06)

  • Support for LLVM 6.0
    • Add StrictFP and SanitizeHWAddress function attributes.
    • Remove UnsafeAlgebra constructor from FastMathFlags.
    • Add allowReassoc, allowContract and approxFunc fields to FastMathFlags.
    • Remove NoFastMathFlags constructor since it is equivalent to setting all fields in the FastMathFlags record to False. Existing uses of NoFastMathFlags can be replaced by the noFastMathFlags value.
  • Add AggregateZero for zero-initializing structs, arrays and vectors. Previously Null was used for null pointers as well as zero-inializing aggregates. The new behavior reflects LLVM’s internal representation and the C++-API. Existing uses of Null on non-pointer types must be changed to AggregateZero.
  • Fix recursive function calls in the IRBuilder API.

5.1.2 (2018-01-06)

  • Fixes and enhancements to the IRBuilder
    • sdiv and udiv no longer default to exact.
    • Fix type of global references.
    • Add more instructions.

5.1.1 (2017-12-16)

  • Add a completely new API for building modules in a monadic style similar to the IRBuilder provided by LLVM’s C++ API. The modules can be found in LLVM.IRBuilder. An example can be found in the readme and in the test suite.
  • Add an API for getting the type of LLVM values in LLVM.AST.Typed. This is primarily intended to be used in other libraries that build upon llvm-hs-pure such as llvm-hs-pretty.

5.1.0 (2017-10-12)

Enhancements

  • 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-pure 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.

4.1.0 (2017-05-17)

  • Switch AST to ByteString/ShortByteString reflecting LLVM’s use of C-style strings.
  • preferredAlignment is now a Word32 instead of Maybe Word32. To recover the old behavior set it to the same value as abiAlignment.
  • GlobalAlias now expects the element type of a pointer type instead of the pointer type itself. The address space is passed separately via the addrSpace field. This makes GlobalAlias consistent with GlobalVariable.
  • The FloatingPointType constructor now takes a FloatingPointType argument instead of a width and a FloatingPointFormat to more closely match the LLVM IR language reference.
  • The IsString instance of Name now throws an error on non-ASCII strings instead of silently discarding the upper bytes. There is also a new mkName function with the same behavior for easier discoverability. Non-ASCII names need to be encoded using an arbitrary encoding to to a ShortByteString which can then be used as a Name.

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.