Skip to content
  • Krzysztof Gogolewski's avatar
    Use a more efficient printer for code generation (#21853) · 3c37d30b
    Krzysztof Gogolewski authored
    
    
    The changes in `GHC.Utils.Outputable` are the bulk of the patch
    and drive the rest.
    The types `HLine` and `HDoc` in Outputable can be used instead of `SDoc`
    and support printing directly to a handle with `bPutHDoc`.
    See Note [SDoc versus HDoc] and Note [HLine versus HDoc].
    
    The classes `IsLine` and `IsDoc` are used to make the existing code polymorphic
    over `HLine`/`HDoc` and `SDoc`. This is done for X86, PPC, AArch64, DWARF
    and dependencies (printing module names, labels etc.).
    
    Co-authored-by: default avatarAlexis King <lexi.lambda@gmail.com>
    
    Metric Decrease:
        CoOpt_Read
        ManyAlternatives
        ManyConstructors
        T10421
        T12425
        T12707
        T13035
        T13056
        T13253
        T13379
        T18140
        T18282
        T18698a
        T18698b
        T1969
        T20049
        T21839c
        T21839r
        T3064
        T3294
        T4801
        T5321FD
        T5321Fun
        T5631
        T6048
        T783
        T9198
        T9233
    3c37d30b