• 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: Alexis King's 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
Code owners : Ben Gamari