packages feed

llvm-hs-pure-6.2.0: CHANGELOG.md

## 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](http://releases.llvm.org/5.0.0/docs/ReleaseNotes.html)
    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.