[Git][ghc/ghc][wip/angerman/aarch64-ncg] 125 commits: [Sized Cmm] properly retain sizes.

Moritz Angermann gitlab at gitlab.haskell.org
Thu Nov 12 06:19:20 UTC 2020



Moritz Angermann pushed to branch wip/angerman/aarch64-ncg at Glasgow Haskell Compiler / GHC


Commits:
19b84b8f by Moritz Angermann at 2020-11-12T05:57:21+00:00
[Sized Cmm] properly retain sizes.

This replaces all Word<N> = W<N># Word# and Int<N> = I<N># Int#  with
Word<N> = W<N># Word<N># and Int<N> = I<N># Int<N>#, thus providing us
with properly sized primitives in the codegenerator instead of pretending
they are all full machine words.

This came up when implementing darwinpcs for arm64.  The darwinpcs reqires
us to pack function argugments in excess of registers on the stack.  While
most procedure call standards (pcs) assume arguments are just passed in
8 byte slots; and thus the caller does not know the exact signature to make
the call, darwinpcs requires us to adhere to the prototype, and thus have
the correct sizes.  If we specify CInt in the FFI call, it should correspond
to the C int, and not just be Word sized, when it's only half the size.

- - - - -
0a64be45 by Moritz Angermann at 2020-11-12T06:17:22+00:00
[Sized Cmm] properly retain sizes.

This replaces all Word<N> = W<N># Word# and Int<N> = I<N># Int#  with
Word<N> = W<N># Word<N># and Int<N> = I<N># Int<N>#, thus providing us
with properly sized primitives in the codegenerator instead of pretending
they are all full machine words.

This came up when implementing darwinpcs for arm64.  The darwinpcs reqires
us to pack function argugments in excess of registers on the stack.  While
most procedure call standards (pcs) assume arguments are just passed in
8 byte slots; and thus the caller does not know the exact signature to make
the call, darwinpcs requires us to adhere to the prototype, and thus have
the correct sizes.  If we specify CInt in the FFI call, it should correspond
to the C int, and not just be Word sized, when it's only half the size.

- - - - -
d17ec357 by Moritz Angermann at 2020-11-12T06:17:22+00:00
Initial NCG

- - - - -
6bf3c5bc by Moritz Angermann at 2020-11-12T06:17:22+00:00
Address Takenobu's comments

- - - - -
ede58bf3 by Moritz Angermann at 2020-11-12T06:17:22+00:00
Fix floating points handling of NaNs

- - - - -
154219d3 by Moritz Angermann at 2020-11-12T06:17:22+00:00
Add basic Graph Coloring support

- - - - -
e503a4c7 by Moritz Angermann at 2020-11-12T06:17:22+00:00
Drop debug

- - - - -
9cdee43a by Moritz Angermann at 2020-11-12T06:17:22+00:00
Add primops_match.cmm testsuite

- - - - -
b8f071d8 by Moritz Angermann at 2020-11-12T06:17:22+00:00
Fix -NaN for real this time.

- - - - -
61d7367f by Moritz Angermann at 2020-11-12T06:17:22+00:00
Adds nan test.

- - - - -
c13fd20f by Moritz Angermann at 2020-11-12T06:17:23+00:00
no show

- - - - -
710f281b by Moritz Angermann at 2020-11-12T06:17:23+00:00
Some notes on PIC

- - - - -
9e65d7bc by Moritz Angermann at 2020-11-12T06:17:23+00:00
Properly load W32 with bit 31 set.

- - - - -
d6f8d3e2 by Moritz Angermann at 2020-11-12T06:17:23+00:00
better relocation logging

- - - - -
19b9576e by Moritz Angermann at 2020-11-12T06:17:23+00:00
Add AsmOpt Flags

- - - - -
18608958 by Moritz Angermann at 2020-11-12T06:17:23+00:00
Adds ANN instruction.

I wish I had a `pad n` function for SDoc, that would interact with the
layout, and just pad what ever was printed so far to `n` chars.

- - - - -
5c6d98e6 by Moritz Angermann at 2020-11-12T06:17:23+00:00
Drop dead 32bit logic.

- - - - -
6102a2ca by Moritz Angermann at 2020-11-12T06:17:23+00:00
Add Show CmmExpr instances.

Why would we want this, when we have Outputtable CmmExpr? Quite often
when working on Code Generators, we want to structurally match on
a Cmm Expression. Having to recover the Cmm Expression from its
Outputtable text is not always trivial, and requires substantial effort.
By having a Show instance, we can almost copy the definition to match
on.

- - - - -
af8fb4e7 by Moritz Angermann at 2020-11-12T06:17:23+00:00
Drop duplicate show instance for CLabel now.

- - - - -
aa4a1e8f by Moritz Angermann at 2020-11-12T06:17:23+00:00
Add link, lest I keep forgetting it.

- - - - -
24eb3ab8 by Moritz Angermann at 2020-11-12T06:17:23+00:00
inline comments with //

- - - - -
641c10b2 by Moritz Angermann at 2020-11-12T06:17:23+00:00
Some optimizations; not yet sure if safe or not.

- - - - -
67fb8a0e by Moritz Angermann at 2020-11-12T06:17:23+00:00
Add latest opt changes.

- - - - -
b0f111b1 by Moritz Angermann at 2020-11-12T06:17:23+00:00
Address Takenobu Tani's comments.

Thanks!

- - - - -
b5e703b7 by Moritz Angermann at 2020-11-12T06:17:23+00:00
Fix gcd :blush:

- - - - -
cdd3b8f4 by Moritz Angermann at 2020-11-12T06:17:23+00:00
Overflow guard

- - - - -
9a10675d by Moritz Angermann at 2020-11-12T06:17:23+00:00
More annotations.

- - - - -
0c0244d9 by Moritz Angermann at 2020-11-12T06:17:23+00:00
Revert "Overflow guard"

They are Integers not Ints.

This reverts commit 3ef94e593a2848cf2bdc4251f5be34536642675f.

Signed-off-by: Moritz Angermann <moritz.angermann at gmail.com>

- - - - -
7533571a by Moritz Angermann at 2020-11-12T06:17:23+00:00
Add CmmAssign and CmmStore comments

- - - - -
f6579037 by Moritz Angermann at 2020-11-12T06:17:23+00:00
Minor address mode changes

- - - - -
66dca21d by Moritz Angermann at 2020-11-12T06:17:23+00:00
More Amode optimizations

- - - - -
247f2573 by Moritz Angermann at 2020-11-12T06:17:23+00:00
I think this shoudl work for all Registers, not just CmmGlobal

- - - - -
03f88c81 by Moritz Angermann at 2020-11-12T06:17:23+00:00
Opt <<, >>

- - - - -
927e7715 by Moritz Angermann at 2020-11-12T06:17:23+00:00
Opt &&, ||

- - - - -
99af19db by Moritz Angermann at 2020-11-12T06:17:23+00:00
Add branch ANNotations.

- - - - -
f336ac89 by Moritz Angermann at 2020-11-12T06:17:24+00:00
Disable Opt &&, ||, due to mask immediate

- - - - -
7fe06b7b by Moritz Angermann at 2020-11-12T06:17:24+00:00
Opt: Adds CBZ, CBNZ

- - - - -
f3a634aa by Moritz Angermann at 2020-11-12T06:17:24+00:00
More generic CBZ, CBNZ

- - - - -
add007c0 by Moritz Angermann at 2020-11-12T06:17:24+00:00
Fixup

- - - - -
66834310 by Moritz Angermann at 2020-11-12T06:17:24+00:00
very rudimentary bitmask support.

- - - - -
38c94f28 by Moritz Angermann at 2020-11-12T06:17:24+00:00
Add some more bitmasks

- - - - -
a86131db by Moritz Angermann at 2020-11-12T06:17:24+00:00
Opt STR

- - - - -
d6cd96e7 by Moritz Angermann at 2020-11-12T06:17:24+00:00
Fixup

- - - - -
a6b5010d by Moritz Angermann at 2020-11-12T06:17:24+00:00
Fix MO_SF_Conv

- - - - -
0c574b98 by Moritz Angermann at 2020-11-12T06:17:24+00:00
Add Comment re MO_Memcpy

- - - - -
c1f70267 by Moritz Angermann at 2020-11-12T06:17:24+00:00
Always PIC via GOT

- - - - -
3b6c3ae2 by Moritz Angermann at 2020-11-12T06:17:24+00:00
Fix up generated assembly.

Don't generate identity moves
e.g. mov x18, x18

- - - - -
590db641 by Moritz Angermann at 2020-11-12T06:17:24+00:00
Drop superfulous alignment generation.

- - - - -
20450cd3 by Moritz Angermann at 2020-11-12T06:17:24+00:00
Hadrian :fire:

- - - - -
09ee538e by Moritz Angermann at 2020-11-12T06:17:24+00:00
Address Tekenobus comments.

Thanks!

- - - - -
3c15a0c4 by Moritz Angermann at 2020-11-12T06:17:24+00:00
Adds J to distinguish jumps from B.

Maybe this would be better handled with a phantom type?

- - - - -
9bd54729 by Moritz Angermann at 2020-11-12T06:17:24+00:00
Make sp an Operand

- - - - -
1060261f by Moritz Angermann at 2020-11-12T06:17:24+00:00
allocMoreStack

This is still broken, as we can't spill into arbitrary ranges. Hence while we can allocate extra space, we can't really spill past 4096 offsets due to the immediat having to be encoded. This leaves us with a max of 512 spill slots.

We *can* work around this if we change the sp though.

- - - - -
dba041d4 by Moritz Angermann at 2020-11-12T06:17:24+00:00
[Spill/Reload] Spill Around :fire:

- - - - -
f7a0b2ed by Moritz Angermann at 2020-11-12T06:17:24+00:00
Address Takenobus observations!

Thanks!

- - - - -
6649fa32 by Moritz Angermann at 2020-11-12T06:17:24+00:00
:sob:

- - - - -
8b4d3125 by Moritz Angermann at 2020-11-12T06:17:24+00:00
Revert the Spill/Reload fix; undo :got: loads.

This breaks dynamic, however we can build a working
stage2 compiler with the following mk/build.mk

BuildFlavour = quick

ifneq "$(BuildFlavour)" ""
include mk/flavours/$(BuildFlavour).mk
endif

STRIP_CMD = :

DYNAMIC_BY_DEFAULT   = NO
DYNAMIC_GHC_PROGRAMS = NO

- - - - -
f0585086 by Moritz Angermann at 2020-11-12T06:17:24+00:00
Disable trivial deadlock detection

- - - - -
014e56e6 by Moritz Angermann at 2020-11-12T06:17:24+00:00
Adds some annotations

- - - - -
47e049e6 by Moritz Angermann at 2020-11-12T06:17:24+00:00
Trying to get PIC right.

- - - - -
56dc2be2 by Moritz Angermann at 2020-11-12T06:17:25+00:00
[aarch64] Fix spill/reload

- - - - -
482dc4a4 by Moritz Angermann at 2020-11-12T06:17:25+00:00
Try to get PIC right.

- - - - -
8e116adc by Moritz Angermann at 2020-11-12T06:17:25+00:00
Spill/Reload only need a smaller window

- - - - -
b64f7d45 by Moritz Angermann at 2020-11-12T06:17:25+00:00
Drop bad/useless optimisation

This was due to not handling PIC symbols correctly and injecting CmmLoad
as we do on other platforms, but this doesn't translate to aarch64's got lookups.

- - - - -
dededbb4 by Moritz Angermann at 2020-11-12T06:17:25+00:00
B is b

- - - - -
1231cd43 by Moritz Angermann at 2020-11-12T06:17:25+00:00
Fix CCall

|Now mark used registers properly for the Register Allocator.

- - - - -
d5ec8b63 by Moritz Angermann at 2020-11-12T06:17:25+00:00
:sob:

- - - - -
2fee7c85 by Moritz Angermann at 2020-11-12T06:17:25+00:00
:sob: :sob:

- - - - -
0b25d139 by Moritz Angermann at 2020-11-12T06:17:25+00:00
:sob: Segfault no 3. This showed up in T4114

- - - - -
dea38aec by Moritz Angermann at 2020-11-12T06:17:25+00:00
Add mkComment to `Instruction`

- - - - -
80e947bc by Moritz Angermann at 2020-11-12T06:17:25+00:00
Use mkComment for debugging

- - - - -
3a8337f9 by Moritz Angermann at 2020-11-12T06:17:25+00:00
Fix T4114 crashes

T4114 causes this codepath to show up.

- - - - -
976f6161 by Moritz Angermann at 2020-11-12T06:17:25+00:00
Cleanup some compiler warnings

- - - - -
5d6ec913 by Moritz Angermann at 2020-11-12T06:17:25+00:00
[Aarch64] No div-by-zero; disable test.

- - - - -
979a410f by Moritz Angermann at 2020-11-12T06:17:25+00:00
Simplify aarch64 StgRun

We don't need to do the callee save register dance. The compiler will
do this for us already:

0000000000000000 <StgRun>:
   0:   a9b653f3        stp     x19, x20, [sp, #-160]!
   4:   a9015bf5        stp     x21, x22, [sp, #16]
   8:   a90263f7        stp     x23, x24, [sp, #32]
   c:   a9036bf9        stp     x25, x26, [sp, #48]
  10:   a90473fb        stp     x27, x28, [sp, #64]
  14:   f9002bfe        str     x30, [sp, #80]
  18:   6d0627e8        stp     d8, d9, [sp, #96]
  1c:   6d072fea        stp     d10, d11, [sp, #112]
  20:   6d0837ec        stp     d12, d13, [sp, #128]
  24:   6d093fee        stp     d14, d15, [sp, #144]
  28:   a9bf47f0        stp     x16, x17, [sp, #-16]!
  2c:   d14013ff        sub     sp, sp, #0x4, lsl #12
  30:   aa0103f3        mov     x19, x1
  34:   d61f0000        br      x0

0000000000000038 <StgReturn>:
  38:   914013ff        add     sp, sp, #0x4, lsl #12
  3c:   aa1603e0        mov     x0, x22
  40:   a8c147f0        ldp     x16, x17, [sp], #16
  44:   a9415bf5        ldp     x21, x22, [sp, #16]
  48:   a94263f7        ldp     x23, x24, [sp, #32]
  4c:   a9436bf9        ldp     x25, x26, [sp, #48]
  50:   a94473fb        ldp     x27, x28, [sp, #64]
  54:   f9402bfe        ldr     x30, [sp, #80]
  58:   6d4627e8        ldp     d8, d9, [sp, #96]
  5c:   6d472fea        ldp     d10, d11, [sp, #112]
  60:   6d4837ec        ldp     d12, d13, [sp, #128]
  64:   6d493fee        ldp     d14, d15, [sp, #144]
  68:   a8ca53f3        ldp     x19, x20, [sp], #160
  6c:   d65f03c0        ret

- - - - -
c8dd4ec2 by Moritz Angermann at 2020-11-12T06:17:25+00:00
Use ip0 for spills/reloads

- - - - -
84520236 by Moritz Angermann at 2020-11-12T06:17:25+00:00
:broom: Cleanup

- - - - -
54b453fb by Moritz Angermann at 2020-11-12T06:17:25+00:00
Adds LLVM (AArch64) CI Job

- - - - -
fa3b1cd2 by Moritz Angermann at 2020-11-12T06:17:25+00:00
Add validate as well.

- - - - -
01e2c160 by Moritz Angermann at 2020-11-12T06:17:25+00:00
Revert "Simplify aarch64 StgRun"

This reverts commit f27472c0483db2382344f4a8f4c1b2a192d98725.

- - - - -
4798ef1c by Moritz Angermann at 2020-11-12T06:17:25+00:00
Apply suggestion to compiler/GHC/CmmToAsm/AArch64/README.md
- - - - -
6d27405c by Moritz Angermann at 2020-11-12T06:17:25+00:00
Apply suggestion to compiler/GHC/CmmToAsm/AArch64/README.md
- - - - -
390b103f by Moritz Angermann at 2020-11-12T06:17:25+00:00
[macOS] support for arm64

Adding basic changes to support arm64-apple-darwin

- - - - -
5a126fd8 by Moritz Angermann at 2020-11-12T06:17:25+00:00
Add CLabel logic

- - - - -
a2a0e07a by Moritz Angermann at 2020-11-12T06:17:26+00:00
[configure] make arm64-apple-darwin an LLVM Target

This is required as the llvm toolchain doesn't like
aarch64-apple-darwin, and only accepts arm64-apple-darwin.

- - - - -
410a1509 by Moritz Angermann at 2020-11-12T06:17:26+00:00
[configure] disable subsections_via_symbols on arm64/macOS

LLVM's clang will not emit relocation entries for assembly local (L
prefixed) symbols.  In the presence of subsections_via_symbols, the
linker is free to strip dead symbols from the object code, however due
to the lack of relocations for assembly local symbols, branches will be
invalidated through this dead stripping.

As such we must not permit subsections_via_symbols on arm64/macho-o.

- - - - -
0714c8ca by Moritz Angermann at 2020-11-12T06:17:26+00:00
[arm64/mach-o] adrp/ldr symbol names

This will break elf. We need to find a better solution for this
symbol naming is platform dependent here.

:got: / @gotpage
:got_lo12: / @gotpageoff

:lo12: / @pageoff

- - - - -
101c3a2c by Moritz Angermann at 2020-11-12T06:17:26+00:00
[WIP] symbol garbage

Naming is hard.  Supporting assembler and linker even harder.

L is the assembly local prefix
l is the linker local prefix

L is not relocated at all.
l is relocated, but fails to for conditional branches.

Send help!

- - - - -
7812209d by Moritz Angermann at 2020-11-12T06:17:26+00:00
[MachO] cleanup compiler warnings

- - - - -
ea24f4f9 by Moritz Angermann at 2020-11-12T06:17:26+00:00
[macOS/arm64] do not use read_only_relocs on arm64

The linker simply doesn't support it and will complain
loudly.

- - - - -
5617c112 by Moritz Angermann at 2020-11-12T06:17:26+00:00
[Storage/Adjustor] Drop size check in allocExec

This is violated by ghci, in InfoTable.hsc we call
_allocateExec with a size that does not guarantee to
be of ffi_closure size.

Other allocateExec implementations do not have this
check either; I highly doubt it's sensible to have
this check in the presence of ghci's allocateExec calls.

- - - - -
32739907 by Moritz Angermann at 2020-11-12T06:17:26+00:00
[linker/elf] better errors (with error message)

- - - - -
7a01dfbe by Moritz Angermann at 2020-11-12T06:17:26+00:00
[darwin] always pic, ios AND mac AND tv AND ...

- - - - -
9c3f0f8b by Moritz Angermann at 2020-11-12T06:17:26+00:00
[aarch64/codegen] pack ccall arguments on darwin

This is annoying, but the darwinpcs does not match the default aapcs :facepalm:

- - - - -
8ee9c135 by Moritz Angermann at 2020-11-12T06:17:26+00:00
[linker:MachO] split PLT logic out.

Why was this missing in the first place? It's now a bit more aligned to the
elf plt logic.

- - - - -
6db8fbd7 by Moritz Angermann at 2020-11-12T06:17:26+00:00
[configure] fix LLVMTarget when native

uname -p return "arm", hence we can't work with target_cpu,
but need to match on the target triple.

- - - - -
71c75c71 by Moritz Angermann at 2020-11-12T06:17:26+00:00
[testsuite] fix subsections_via_symbols test

- - - - -
2e9532ee by Moritz Angermann at 2020-11-12T06:17:26+00:00
[testsuite] FixT11649

- - - - -
71dde819 by Moritz Angermann at 2020-11-12T06:17:26+00:00
Fix conc059 test

- - - - -
7a75bbf7 by Moritz Angermann at 2020-11-12T06:17:26+00:00
WIP: fix ghci adjustors on aarch64/arm (infotables)

- - - - -
376d8a86 by Moritz Angermann at 2020-11-12T06:17:26+00:00
[DWARF] Enable only on elf platforms

- - - - -
71ab682f by Moritz Angermann at 2020-11-12T06:17:26+00:00
[Testsuite/LLVM] Fix T5681, T7571, T8131b

- - - - -
b256abba by Moritz Angermann at 2020-11-12T06:17:26+00:00
[testsuite/darwin] fix tests ghcilink003, ghcilink006

- - - - -
adf82185 by Moritz Angermann at 2020-11-12T06:17:26+00:00
Fix linker_error2

- - - - -
6ca34c8f by Moritz Angermann at 2020-11-12T06:17:26+00:00
Sized Hints

- - - - -
94ee3730 by Moritz Angermann at 2020-11-12T06:17:26+00:00
[Testsuite/arm64] Fix test derefnull

- - - - -
543a1925 by Moritz Angermann at 2020-11-12T06:17:26+00:00
[testsuite/arm64] fix section_alignment

- - - - -
c9b4ff39 by Moritz Angermann at 2020-11-12T06:17:26+00:00
[macOS/arm64] darwinpcs :facepalm:

- - - - -
c79e9c2b by Moritz Angermann at 2020-11-12T06:17:26+00:00
[aarch64/darwin] ifdef for got lables.

This should ideally be some runtime flag, but it would need access to the platform.

- - - - -
93fc3390 by Moritz Angermann at 2020-11-12T06:17:27+00:00
[aarch64/rts] fix missing prototypes

- - - - -
54654813 by Moritz Angermann at 2020-11-12T06:17:27+00:00
Int has Word size in Haskell.

- - - - -
d0a59675 by Moritz Angermann at 2020-11-12T06:17:27+00:00
[debug only] warn on hint/arg mismatch

- - - - -
ee2d541f by Moritz Angermann at 2020-11-12T06:17:27+00:00
[AArch64 NCG] User argument format rather than hint.

- - - - -
9579a4ed by Moritz Angermann at 2020-11-12T06:17:27+00:00
[Debug] Fix CmmFloat warnings.

- - - - -
21ecdb1e by Moritz Angermann at 2020-11-12T06:17:27+00:00
[aarch64/elf] fixup elf symbols

- - - - -
43011dbd by Moritz Angermann at 2020-11-12T06:17:27+00:00
:facepalm:

- - - - -
7f1c3754 by Moritz Angermann at 2020-11-12T06:17:27+00:00
:facepalm:

- - - - -
4e663448 by Moritz Angermann at 2020-11-12T06:17:27+00:00
[Adjustors] Proper allocator handling.

- - - - -
0f2cd07a by Moritz Angermann at 2020-11-12T06:17:27+00:00
Revert "[AArch64] Aarch64 Always PIC"

This reverts commit 921276592218211f441fcf011fc52441e3a2f0a6.

- - - - -
92dbdb4c by Moritz Angermann at 2020-11-12T06:17:27+00:00
Revert "[Storage/Adjustor] Drop size check in allocExec"

This reverts commit 37a62ae956a25e5832fbe125a4d8ee556fd11042.

- - - - -
27caf3f3 by Moritz Angermann at 2020-11-12T06:17:27+00:00
[Storage] Reinstate check; add comment.

- - - - -
17365a82 by Moritz Angermann at 2020-11-12T06:17:27+00:00
[AArch64] Aarch64 Always PIC

- - - - -
8cf9749e by Moritz Angermann at 2020-11-12T06:17:27+00:00
[testsuite] static001 is not broken anymore.

- - - - -
8abe5f30 by Moritz Angermann at 2020-11-12T06:17:27+00:00
Revert "Sized Hints"

This reverts commit 65cbfcc10e7ad32dd04ebce011860f5b557eacac.

- - - - -
0cc7cdb3 by Moritz Angermann at 2020-11-12T06:17:27+00:00
fix up rebase

- - - - -


17 changed files:

- .gitlab-ci.yml
- aclocal.m4
- compiler/GHC/Builtin/Names.hs
- compiler/GHC/Builtin/Types.hs
- compiler/GHC/Builtin/primops.txt.pp
- compiler/GHC/ByteCode/Asm.hs
- compiler/GHC/Cmm/CLabel.hs
- compiler/GHC/Cmm/Expr.hs
- compiler/GHC/Cmm/Parser.y
- compiler/GHC/Cmm/Type.hs
- compiler/GHC/Cmm/Utils.hs
- compiler/GHC/CmmToAsm.hs
- + compiler/GHC/CmmToAsm/AArch64.hs
- + compiler/GHC/CmmToAsm/AArch64/CodeGen.hs
- + compiler/GHC/CmmToAsm/AArch64/Cond.hs
- + compiler/GHC/CmmToAsm/AArch64/Instr.hs
- + compiler/GHC/CmmToAsm/AArch64/LLVM Test Results.md


The diff was not included because it is too large.


View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/a110435790495f25b750d0ef65aab6e0813ade11...0cc7cdb3645892e98daddfafc56ad1c0b597688c

-- 
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/a110435790495f25b750d0ef65aab6e0813ade11...0cc7cdb3645892e98daddfafc56ad1c0b597688c
You're receiving this email because of your account on gitlab.haskell.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-commits/attachments/20201112/61751bf4/attachment-0001.html>


More information about the ghc-commits mailing list