packages feed

llvm-pretty-0.14.0.0: CHANGELOG.md

# Revision history for llvm-pretty

## 0.14.0.0 -- 2026-01-22

* Changes to support LLVM 19 (some of these changes are not backward-compatible):
  * Changes to `LayoutSpec` for DataLayout:
    * Size specification fields use a common sub-structure `Storage` which itself
      contains an `Alignment` common sub-structure: `IntegerSize`, `VectorSize`,
      `FloatSize`, and `StackObjSize`.
    * The pointer size specification field uses a `PointerSize` sub-structure
      that itself contains a `Storage` sub-structure.
    * Updated `AggregateSize` to make first field optional (it was dropped in
      LLVM 4) and the remaining fields are now provided via the `Alignment`
      sub-structure.
    * Added `ProgramAddrSpace`, `GlobalAddrSpace`, and `AllocaAddrSpace`
      constructors, each defined via an `AddressSpace` sub-structure.
    * Added `NonIntegralPointerSpaces` to record address spaces with an
      unspecified bitwise representation.
    * Added `GoffMangling`, `WindowsX86CoffMangling`, and `XCoffMangling` forms
      of Mangling.
  * Added `GEPAttr` flags for `GEP` instruction and constant expression, with
    `RangeSpec` for the latter.
  * Added `numExtraInhabitants` to `DIBasicType`.
  * Added support for `DebugRecord` parsing, specifically for:

    * `FUNC_CODE_DEBUG_RECORD_VALUE`
    * `FUNC_CODE_DEBUG_RECORD_DECLARE`
    * `FUNC_CODE_DEBUG_RECORD_ASSIGN`
    * `FUNC_CODE_DEBUG_RECORD_VALUE_SIMPLE`
    * `FUNC_CODE_DEBUG_RECORD_LABEL`

    This adds a new field to both the `Result` and `Effect` constructors of the `Stmt` type.
  * Pretty-printing with an LLVM version >= 19 now generates an error for `icmp`,
    `fcmp`, and `shl` constant expressions that are no longer supported as of
    LLVM 19.
* Changes to cast-related instructions:
  * Add a `Bool` field to `ZExt` which, if `True`, indicates that the
    argument must be non-negative. This is used by LLVM 18 and up.
  * Add a `Bool` field to `UiToFp` which, if `True`, indicates that the
    argument must be non-negative. This is used by LLVM 19 and up.
  * Add `Bool` fields to `Trunc` to check if the truncation would cause
    unsigned or signed overflow. These are used by LLVM 20 and up.
* Add a `Bool` field to `ICmp`, which indicates that the arguments must have
  the same sign. This is used by LLVM 20 and up.
* Add `dlAtomGroup` and `dlAtomRank` fields to `DebugLoc'`, which were
  introduced in LLVM 21.
* Add `dilColumn`, `dilIsArtificial`, and `dilCoroSuspendIdx` fields to
  `DILabel'`, which were introduced in LLVM 21.
* The following debug-related fields have had their types changed from `Word64`
  to `Maybe (ValMd' lab)`:

  * `DIBasicType'`: `dibtSize`
  * `DICompositeType'`: `dictSize` and `dictOffset`
  * `DIDerivedType'`: `didtSize` and `didtOffset`

  This allows them to encode non-constant sizes and offsets (a capability used
  by Ada, for instance) in LLVM 21 or later.
* Added the `bbStmtModifier` which can be used to modify individual statements as
  they are emitted from the top-level instruction generator functions (e.g to add
  Debug Metadata to each statement).
* Fix a bug that would cause `indirectbr` statements to be pretty-printed
  incorrectly.

## 0.13.1.0 (October 2025)

* Add a `FunctionPointerAlign` constructor to `LayoutSpec`.

## 0.13.0.0 (March 2025)

* Changed some of the signatures of helper functions in the AST to make them more
  flexible by using `Type' ident` rather than `Type` in their signatures (the
  latter fixes `ident` to be `Ident`). Changed functions: `isAlias`,
  `isPrimTypeOf`, `isVector`, `isVectorOf`, `isArray`, and `isPointer`.

## 0.12.1.0 (August 2024)

* Fix for printing NaN and infinite floating point values.

* Add support for more AtomicRWOps.

## 0.12.0.0 (January 2024)

* Add preliminary support for LLVM versions up through 17.