[Git][ghc/ghc][wip/haddock-optimizations] 131 commits: ghc-toolchain: Initial commit

Finley McIlwaine (@FinleyMcIlwaine) gitlab at gitlab.haskell.org
Sat Aug 19 02:05:06 UTC 2023



Finley McIlwaine pushed to branch wip/haddock-optimizations at Glasgow Haskell Compiler / GHC


Commits:
83cbc672 by Ben Gamari at 2023-07-24T07:40:49+00:00
ghc-toolchain: Initial commit

- - - - -
31dcd26c by Rodrigo Mesquita at 2023-07-24T07:40:49+00:00
ghc-toolchain: Toolchain Selection

This commit integrates ghc-toolchain, the brand new way of configuring
toolchains for GHC, with the Hadrian build system, with configure, and
extends and improves the first iteration of ghc-toolchain.

The general overview is

* We introduce a program invoked `ghc-toolchain --triple=...` which, when run,
  produces a file with a `Target`. A `GHC.Toolchain.Target.Target`
  describes the properties of a target and the toolchain (executables
  and configured flags) to produce code for that target

* Hadrian was modified to read Target files, and will both
  * Invoke the toolchain configured in the Target file as needed
  * Produce a `settings` file for GHC based on the Target file for that stage

* `./configure` will invoke ghc-toolchain to generate target files, but
  it will also generate target files based on the flags configure itself
  configured (through `.in` files that are substituted)

  * By default, the Targets generated by configure are still (for now) the ones used by Hadrian

  * But we additionally validate the Target files generated by
    ghc-toolchain against the ones generated by configure, to get a head
    start on catching configuration bugs before we transition
    completely.

  * When we make that transition, we will want to drop a lot of the
    toolchain configuration logic from configure, but keep it otherwise.

* For each compiler stage we should have 1 target file (up to a stage compiler we can't run in our machine)
  * We just have a HOST target file, which we use as the target for stage0
  * And a TARGET target file, which we use for stage1 (and later stages, if not cross compiling)
  * Note there is no BUILD target file, because we only support cross compilation where BUILD=HOST
  * (for more details on cross-compilation see discussion on !9263)

See also
* Note [How we configure the bundled windows toolchain]
* Note [ghc-toolchain consistency checking]
* Note [ghc-toolchain overview]

Ticket: #19877
MR: !9263

- - - - -
a732b6d3 by Rodrigo Mesquita at 2023-07-24T07:40:49+00:00
Add flag to enable/disable ghc-toolchain based configurations

This flag is disabled by default, and we'll use the
configure-generated-toolchains by default until we remove the toolchain
configuration logic from configure.

- - - - -
61eea240 by Rodrigo Mesquita at 2023-07-24T07:40:49+00:00
Split ghc-toolchain executable to new packge

In light of #23690, we split the ghc-toolchain executable out of the
library package to be able to ship it in the bindist using Hadrian.

Ideally, we eventually revert this commit.

- - - - -
38e795ff by Rodrigo Mesquita at 2023-07-24T07:40:49+00:00
Ship ghc-toolchain in the bindist

Add the ghc-toolchain binary to the binary distribution we ship to
users, and teach the bindist configure to use the existing ghc-toolchain.

- - - - -
32cae784 by Matthew Craven at 2023-07-24T16:48:24-04:00
Kill off gen_bytearray_addr_access_ops.py

The relevant primop descriptions are now
generated directly by genprimopcode.

This makes progress toward fixing #23490, but it is not
a complete fix since there is more than one way in which
cabal-reinstall (hadrian/build build-cabal) is broken.

- - - - -
02e6a6ce by Matthew Pickering at 2023-07-24T16:49:00-04:00
compiler: Remove unused `containers.h` include

Fixes #23712

- - - - -
822ef66b by Matthew Pickering at 2023-07-25T08:44:50-04:00
Fix pretty printing of WARNING pragmas

There is still something quite unsavoury going on with WARNING pragma
printing because the printing relies on the fact that for decl
deprecations the SourceText of WarningTxt is empty. However, I let that
lion sleep and just fixed things directly.

Fixes #23465

- - - - -
e7b38ede by Matthew Pickering at 2023-07-25T08:45:28-04:00
ci-images: Bump to commit which has 9.6 image

The test-bootstrap job has been failing for 9.6 because we accidentally
used a non-master commit.

- - - - -
bb408936 by Matthew Pickering at 2023-07-25T08:45:28-04:00
Update bootstrap plans for 9.6.2 and 9.4.5

- - - - -
355e1792 by Alan Zimmerman at 2023-07-26T10:17:32-04:00
EPA: Simplify GHC/Parser.y comb4/comb5

Use the HasLoc instance from Ast.hs to allow comb4/comb5 to work with
anything with a SrcSpan

Also get rid of some more now unnecessary reLoc calls.

- - - - -
9393df83 by Gavin Zhao at 2023-07-26T10:18:16-04:00
compiler: make -ddump-asm work with wasm backend NCG

Fixes #23503.

Now the `-ddump-asm` flag is respected in the wasm backend
NCG, so developers can directly view the generated ASM instead of
needing to pass `-S` or `-keep-tmp-files` and manually find & open
the assembly file.

Ideally, we should be able to output the assembly files in smaller
chunks like in other NCG backends. This would also make dumping assembly
stats easier. However, this would require a large refactoring, so for
short-term debugging purposes I think the current approach works fine.

Signed-off-by: Gavin Zhao <git at gzgz.dev>

- - - - -
79463036 by Krzysztof Gogolewski at 2023-07-26T10:18:54-04:00
llvm: Restore accidentally deleted code in 0fc5cb97

Fixes #23711

- - - - -
20db7e26 by Rodrigo Mesquita at 2023-07-26T10:19:33-04:00
configure: Default missing options to False when preparing ghc-toolchain Targets

This commit fixes building ghc with 9.2 as the boostrap compiler.

The ghc-toolchain patch assumed all _STAGE0 options were available, and
forgot to account for this missing information in 9.2.

Ghc 9.2 does not have in settings whether ar supports -l, hence can't
report it with --info (unliked 9.4 upwards).

The fix is to default the missing information (we default "ar supports
-l" and other missing options to False)

- - - - -
fac9e84e by Naïm Favier at 2023-07-26T10:20:16-04:00
docs: Fix typo
- - - - -
503fd647 by Bartłomiej Cieślar at 2023-07-26T17:23:10-04:00
This MR is an implementation of the proposal #516.

It adds a warning -Wincomplete-record-selectors for usages of a record
field access function (either a record selector or getField @"rec"),
while trying to silence the warning whenever it can be sure that a constructor
without the record field would not be invoked (which would otherwise cause
the program to fail). For example:

    data T = T1 | T2 {x :: Bool}

    f a = x a -- this would throw an error

    g T1 = True
    g a = x a -- this would not throw an error

    h :: HasField "x" r Bool => r -> Bool
    h = getField @"x"

    j :: T -> Bool
    j = h -- this would throw an error because of the `HasField`
          -- constraint being solved

See the tests DsIncompleteRecSel* and TcIncompleteRecSel for more examples of the warning.
See Note [Detecting incomplete record selectors] in GHC.HsToCore.Expr for implementation details

- - - - -
af6fdf42 by Arnaud Spiwack at 2023-07-26T17:23:52-04:00
Fix user-facing label in MR template

- - - - -
5d45b92a by Matthew Pickering at 2023-07-27T05:46:46-04:00
ci: Test bootstrapping configurations with full-ci and on marge batches

There have been two incidents recently where bootstrapping has been
broken by removing support for building with 9.2.*.

The process for bumping the minimum required version starts with bumping
the configure version and then other CI jobs such as the bootstrap jobs
have to be updated. We must not silently bump the minimum required
version.

Now we are running a slimmed down validate pipeline it seems worthwile
to test these bootstrap configurations in the full-ci pipeline.

- - - - -
25d4fee7 by Matthew Pickering at 2023-07-27T05:46:46-04:00
bootstrap: Remove ghc-9_2_* plans

We are anticipating shortly making it necessary to use ghc-9.4 to boot
the compiler.

- - - - -
2f66da16 by Matthew Pickering at 2023-07-27T05:46:46-04:00
Update bootstrap plans for ghc-platform and ghc-toolchain dependencies

Fixes #23735

- - - - -
c8c6eab1 by Matthew Pickering at 2023-07-27T05:46:46-04:00
bootstrap: Disable -selftest flag from bootstrap plans

This saves on building one dependency (QuickCheck) which is unecessary
for bootstrapping.

- - - - -
a80ca086 by Bodigrim at 2023-07-27T05:47:26-04:00
Link reference paper and package from System.Mem.{StableName,Weak}

- - - - -
a5319358 by David Knothe at 2023-07-28T13:13:10-04:00
Update Match Datatype

EquationInfo currently contains a list of the equation's patterns together with a CoreExpr that is to be evaluated after a successful match on this equation.
All the match-functions only operate on the first pattern of an equation - after successfully matching it, match is called recursively on the tail of the pattern list.
We can express this more clearly and make the code a little more elegant by updating the datatype of EquationInfo as follows:

data EquationInfo
    = EqnMatch { eqn_pat = Pat GhcTc, eqn_rest = EquationInfo }
    | EqnDone { eqn_rhs = MatchResult CoreExpr }

An EquationInfo now explicitly exposes its first pattern which most functions operate on, and exposes the equation that remains after processing the first pattern. An EqnDone signifies an empty equation where the CoreExpr can now be evaluated.

- - - - -
86ad1af9 by David Binder at 2023-07-28T13:13:53-04:00
Improve documentation for Data.Fixed

- - - - -
f8fa1d08 by Ben Gamari at 2023-07-28T13:14:31-04:00
ghc-prim: Use C11 atomics

Previously `ghc-prim`'s atomic wrappers used the legacy `__sync_*`
family of C builtins. Here we refactor these to rather use the
appropriate C11 atomic equivalents, allowing us to be more explicit
about the expected ordering semantics.

- - - - -
0bfc8908 by Finley McIlwaine at 2023-07-28T18:46:26-04:00
Include -haddock in DynFlags fingerprint

The -haddock flag determines whether or not the resulting .hi files
contain haddock documentation strings. If the existing .hi files do
not contain haddock documentation strings and the user requests them,
we should recompile.

- - - - -
40425c50 by Andreas Klebinger at 2023-07-28T18:47:02-04:00
Aarch64 NCG: Use encoded immediates for literals.

Try to generate

    instr x2, <imm>

instead of

    mov x1, lit
    instr x2, x1

When possible. This get's rid if quite a few redundant
mov instructions.

I believe this causes a metric decrease for LargeRecords as
we reduce register pressure.

-------------------------
Metric Decrease:
    LargeRecord
-------------------------

- - - - -
e9a0fa3f by Bodigrim at 2023-07-28T18:47:42-04:00
Bump filepath submodule to 1.4.100.4

Resolves #23741

Metric Decrease:
    MultiComponentModules
    MultiComponentModulesRecomp
    MultiLayerModules
    MultiLayerModulesRecomp
    T10421
    T12234
    T12425
    T13035
    T13701
    T13719
    T16875
    T18304
    T18698a
    T18698b
    T21839c
    T9198
    TcPlugin_RewritePerf
    hard_hole_fits

Metric decrease on Windows can be probably attributed to https://github.com/haskell/filepath/pull/183

- - - - -
ee93edfd by Bodigrim at 2023-07-28T18:48:21-04:00
Add since pragmas to GHC.IO.Handle.FD

- - - - -
d0369802 by Simon Peyton Jones at 2023-07-30T09:24:48+01:00
Make the occurrence analyser smarter about join points

This MR addresses #22404.  There is a big Note

   Note [Occurrence analysis for join points]

that explains it all.  Significant changes

* New field occ_join_points in OccEnv

* The NonRec case of occAnalBind splits into two cases:
  one for existing join points (which does the special magic for
  Note [Occurrence analysis for join points], and one for other
  bindings.

* mkOneOcc adds in info from occ_join_points.

* All "bring into scope" activity is centralised in the
  new function `addInScope`.

* I made a local data type LocalOcc for use inside the occurrence analyser
  It is like OccInfo, but lacks IAmDead and IAmALoopBreaker, which in turn
  makes computationns over it simpler and more efficient.

* I found quite a bit of allocation in GHC.Core.Rules.getRules
  so I optimised it a bit.

More minor changes

* I found I was using (Maybe Arity) a lot, so I defined a new data
  type JoinPointHood and used it everwhere.  This touches a lot of
  non-occ-anal files, but it makes everything more perspicuous.

* Renamed data constructor WithUsageDetails to WUD, and
  WithTailUsageDetails to WTUD

This also fixes #21128, on the way.

--------- Compiler perf -----------
I spent quite a time on performance tuning, so even though it
does more than before, the occurrence analyser runs slightly faster
on average.  Here are the compile-time allocation changes over 0.5%

      CoOpt_Read(normal) ghc/alloc    766,025,520    754,561,992  -1.5%
CoOpt_Singletons(normal) ghc/alloc    759,436,840    762,925,512  +0.5%
     LargeRecord(normal) ghc/alloc  1,814,482,440  1,799,530,456  -0.8%
       PmSeriesT(normal) ghc/alloc     68,159,272     67,519,720  -0.9%
          T10858(normal) ghc/alloc    120,805,224    118,746,968  -1.7%
          T11374(normal) ghc/alloc    164,901,104    164,070,624  -0.5%
          T11545(normal) ghc/alloc     79,851,808     78,964,704  -1.1%
          T12150(optasm) ghc/alloc     73,903,664     71,237,544  -3.6% GOOD
          T12227(normal) ghc/alloc    333,663,200    331,625,864  -0.6%
          T12234(optasm) ghc/alloc     52,583,224     52,340,344  -0.5%
          T12425(optasm) ghc/alloc     81,943,216     81,566,720  -0.5%
          T13056(optasm) ghc/alloc    294,517,928    289,642,512  -1.7%
      T13253-spj(normal) ghc/alloc    118,271,264     59,859,040 -49.4% GOOD
          T15164(normal) ghc/alloc  1,102,630,352  1,091,841,296  -1.0%
          T15304(normal) ghc/alloc  1,196,084,000  1,166,733,000  -2.5%
          T15630(normal) ghc/alloc    148,729,632    147,261,064  -1.0%
          T15703(normal) ghc/alloc    379,366,664    377,600,008  -0.5%
          T16875(normal) ghc/alloc     32,907,120     32,670,976  -0.7%
          T17516(normal) ghc/alloc  1,658,001,888  1,627,863,848  -1.8%
          T17836(normal) ghc/alloc    395,329,400    393,080,248  -0.6%
          T18140(normal) ghc/alloc     71,968,824     73,243,040  +1.8%
          T18223(normal) ghc/alloc    456,852,568    453,059,088  -0.8%
          T18282(normal) ghc/alloc    129,105,576    131,397,064  +1.8%
          T18304(normal) ghc/alloc     71,311,712     70,722,720  -0.8%
         T18698a(normal) ghc/alloc    208,795,112    210,102,904  +0.6%
         T18698b(normal) ghc/alloc    230,320,736    232,697,976  +1.0%  BAD
          T19695(normal) ghc/alloc  1,483,648,128  1,504,702,976  +1.4%
          T20049(normal) ghc/alloc     85,612,024     85,114,376  -0.6%
         T21839c(normal) ghc/alloc    415,080,992    410,906,216  -1.0% GOOD
           T4801(normal) ghc/alloc    247,590,920    250,726,272  +1.3%
           T6048(optasm) ghc/alloc     95,699,416     95,080,680  -0.6%
            T783(normal) ghc/alloc    335,323,384    332,988,120  -0.7%
           T9233(normal) ghc/alloc    709,641,224    685,947,008  -3.3% GOOD
           T9630(normal) ghc/alloc    965,635,712    948,356,120  -1.8%
           T9675(optasm) ghc/alloc    444,604,152    428,987,216  -3.5% GOOD
           T9961(normal) ghc/alloc    303,064,592    308,798,800  +1.9%  BAD
           WWRec(normal) ghc/alloc    503,728,832    498,102,272  -1.1%

               geo. mean                                          -1.0%
               minimum                                           -49.4%
               maximum                                            +1.9%

In fact these figures seem to vary between platforms; generally worse
on i386 for some reason.  The Windows numbers vary by 1% espec in
benchmarks where the total allocation is low. But the geom mean stays
solidly negative, which is good.  The "increase/decrease" list below
covers all platforms.

The big win on T13253-spj comes because it has a big nest of join
points, each occurring twice in the next one.  The new occ-anal takes
only one iteration of the simplifier to do the inlining; the old one
took four.  Moreover, we get much smaller code with the new one:

  New: Result size of Tidy Core
    = {terms: 429, types: 84, coercions: 0, joins: 14/14}

  Old: Result size of Tidy Core
    = {terms: 2,437, types: 304, coercions: 0, joins: 10/10}

--------- Runtime perf -----------
No significant changes in nofib results, except a 1% reduction in
compiler allocation.

Metric Decrease:
    CoOpt_Read
    T13253-spj
    T9233
    T9630
    T9675
    T12150
    T21839c
    LargeRecord
    MultiComponentModulesRecomp
    T10421
    T13701
    T10421
    T13701
    T12425

Metric Increase:
    T18140
    T9961
    T18282
    T18698a
    T18698b
    T19695

- - - - -
42aa7fbd by Julian Ospald at 2023-07-30T17:22:01-04:00
Improve documentation around IOException and ioe_filename

See:

* https://github.com/haskell/core-libraries-committee/issues/189
* https://github.com/haskell/unix/pull/279
* https://github.com/haskell/unix/pull/289

- - - - -
33598ecb by Sylvain Henry at 2023-08-01T14:45:54-04:00
JS: implement getMonotonicTime (fix #23687)

- - - - -
d2bedffd by Bartłomiej Cieślar at 2023-08-01T14:46:40-04:00
Implementation of the Deprecated Instances proposal #575

This commit implements the ability to deprecate certain instances,
which causes the compiler to emit the desired deprecation message
whenever they are instantiated. For example:

  module A where
  class C t where
  instance {-# DEPRECATED "dont use" #-} C Int where

  module B where
  import A
  f :: C t => t
  f = undefined
  g :: Int
  g = f -- "dont use" emitted here

The implementation is as follows:
  - In the parser, we parse deprecations/warnings attached to instances:

      instance {-# DEPRECATED "msg" #-} Show X
      deriving instance {-# WARNING "msg2" #-} Eq Y

    (Note that non-standalone deriving instance declarations do not support
    this mechanism.)

  - We store the resulting warning message in `ClsInstDecl` (respectively, `DerivDecl`).
    In `GHC.Tc.TyCl.Instance.tcClsInstDecl` (respectively, `GHC.Tc.Deriv.Utils.newDerivClsInst`),
    we pass on that information to `ClsInst` (and eventually store it in `IfaceClsInst` too).

  - Finally, when we solve a constraint using such an instance, in
    `GHC.Tc.Instance.Class.matchInstEnv`, we emit the appropriate warning
    that was stored in `ClsInst`.
    Note that we only emit a warning when the instance is used in a different module
    than it is defined, which keeps the behaviour in line with the deprecation of
    top-level identifiers.

Signed-off-by: Bartłomiej Cieślar <bcieslar2001 at gmail.com>

- - - - -
d5a65af6 by Ben Gamari at 2023-08-01T14:47:18-04:00
compiler: Style fixes

- - - - -
7218c80a by Ben Gamari at 2023-08-01T14:47:19-04:00
rts: Fix implicit cast

This ensures that Task.h can be built with a C++ compiler.

- - - - -
d6d5aafc by Ben Gamari at 2023-08-01T14:47:19-04:00
testsuite: Fix warning in hs_try_putmvar001

- - - - -
d9eddf7a by Ben Gamari at 2023-08-01T14:47:19-04:00
testsuite: Add AtomicModifyIORef test

- - - - -
f9eea4ba by Ben Gamari at 2023-08-01T14:47:19-04:00
rts: Introduce NO_WARN macro

This allows fine-grained ignoring of warnings.

- - - - -
497b24ec by Ben Gamari at 2023-08-01T14:47:19-04:00
rts: Simplify atomicModifyMutVar2# implementation

Previously we would perform a redundant load in the non-threaded RTS in
atomicModifyMutVar2# implementation for the benefit of the non-moving
GC's write barrier. Eliminate this.

- - - - -
52ee082b by Ben Gamari at 2023-08-01T14:47:19-04:00
rts: Introduce more principled fence operations

- - - - -
cd3c0377 by Ben Gamari at 2023-08-01T14:47:19-04:00
rts: Introduce SET_INFO_RELAXED

- - - - -
6df2352a by Ben Gamari at 2023-08-01T14:47:19-04:00
rts: Style fixes

- - - - -
4ef6f319 by Ben Gamari at 2023-08-01T14:47:19-04:00
codeGen/tsan: Rework handling of spilling

- - - - -
f9ca7e27 by Ben Gamari at 2023-08-01T14:47:19-04:00
hadrian: More debug information

- - - - -
df4153ac by Ben Gamari at 2023-08-01T14:47:19-04:00
Improve TSAN documentation

- - - - -
fecae988 by Ben Gamari at 2023-08-01T14:47:19-04:00
hadrian: More selective TSAN instrumentation

- - - - -
465a9a0b by Alan Zimmerman at 2023-08-01T14:47:56-04:00
EPA: Provide correct annotation span for ImportDecl

Use the whole declaration, rather than just the span of the 'import'
keyword.

Metric Decrease:
   T9961
   T5205
Metric Increase:
  T13035

- - - - -
ae63d0fa by Bartłomiej Cieślar at 2023-08-01T14:48:40-04:00
Add cases to T23279: HasField for deprecated record fields

This commit adds additional tests from ticket #23279 to ensure that we don't
regress on reporting deprecated record fields in conjunction with HasField,
either when using overloaded record dot syntax or directly through `getField`.

Fixes #23279

- - - - -
00fb6e6b by Andreas Klebinger at 2023-08-01T14:49:17-04:00
AArch NCG: Pure refactor

Combine some alternatives. Add some line breaks for overly long lines

- - - - -
8f3b3b78 by Andreas Klebinger at 2023-08-01T14:49:54-04:00
Aarch ncg: Optimize immediate use for address calculations

When the offset doesn't fit into the immediate we now just reuse the
general getRegister' code path which is well optimized to compute the
offset into a register instead of a special case for CmmRegOff.

This means we generate a lot less code under certain conditions which is
why performance metrics for these improve.

-------------------------
Metric Decrease:
    T4801
    T5321FD
    T5321Fun
-------------------------

- - - - -
74a882dc by MorrowM at 2023-08-02T06:00:03-04:00
Add a RULE to make lookup fuse

See https://github.com/haskell/core-libraries-committee/issues/175

Metric Increase:
    T18282

- - - - -
cca74dab by Ben Gamari at 2023-08-02T06:00:39-04:00
hadrian: Ensure that way-flags are passed to CC

Previously the way-specific compilation flags (e.g. `-DDEBUG`,
`-DTHREADED_RTS`) would not be passed to the CC invocations. This meant
that C dependency files would not correctly reflect
dependencies predicated on the way, resulting in the rather
painful #23554.

Closes #23554.

- - - - -
622b483c by Jaro Reinders at 2023-08-02T06:01:20-04:00
Native 32-bit Enum Int64/Word64 instances

This commits adds more performant Enum Int64 and Enum Word64 instances
for 32-bit platforms, replacing the Integer-based implementation.

These instances are a copy of the Enum Int and Enum Word instances with
minimal changes to manipulate Int64 and Word64 instead.

On i386 this yields a 1.5x performance increase and for the JavaScript
back end it even yields a 5.6x speedup.

Metric Decrease:
    T18964

- - - - -
c8bd7fa4 by Sylvain Henry at 2023-08-02T06:02:03-04:00
JS: fix typos in constants (#23650)

- - - - -
b9d5bfe9 by Josh Meredith at 2023-08-02T06:02:40-04:00
JavaScript: update MK_TUP macros to use current tuple constructors (#23659)

- - - - -
28211215 by Matthew Pickering at 2023-08-02T06:03:19-04:00
ci: Pass -Werror when building hadrian in hadrian-ghc-in-ghci job

Warnings when building Hadrian can end up cluttering the output of HLS,
and we've had bug reports in the past about these warnings when building
Hadrian. It would be nice to turn on -Werror on at least one build of
Hadrian in CI to avoid a patch introducing warnings when building
Hadrian.

Fixes #23638

- - - - -
aca20a5d by Ben Gamari at 2023-08-02T06:03:55-04:00
codeGen: Ensure that TSAN is aware of writeArray# write barriers

By using a proper release store instead of a fence.

- - - - -
453c0531 by Ben Gamari at 2023-08-02T06:03:55-04:00
codeGen: Ensure that array reads have necessary barriers

This was the cause of #23541.

- - - - -
93a0d089 by Arnaud Spiwack at 2023-08-02T06:04:37-04:00
Add test for #23550

- - - - -
6a2f4a20 by Arnaud Spiwack at 2023-08-02T06:04:37-04:00
Desugar non-recursive lets to non-recursive lets (take 2)

This reverts commit 522bd584f71ddeda21efdf0917606ce3d81ec6cc. And
takes care of the case that I missed in my previous attempt. Namely
the case of an AbsBinds with no type variables and no dictionary
variable.

Ironically, the comment explaining why non-recursive lets were
desugared to recursive lets were pointing specifically at this case
as the reason. I just failed to understand that it was until Simon PJ
pointed it out to me.

See #23550 for more discussion.

- - - - -
ff81d53f by jade at 2023-08-02T06:05:20-04:00
Expand documentation of List & Data.List

This commit aims to improve the documentation and examples
of symbols exported from Data.List

- - - - -
fa4e5913 by Jade at 2023-08-02T06:06:03-04:00
Improve documentation of Semigroup & Monoid

This commit aims to improve the documentation of various symbols
exported from Data.Semigroup and Data.Monoid

- - - - -
e2c91bff by Gergő Érdi at 2023-08-03T02:55:46+01:00
Desugar bindings in the context of their evidence

Closes #23172

- - - - -
481f4a46 by Gergő Érdi at 2023-08-03T07:48:43+01:00
Add flag to `-f{no-}specialise-incoherents` to enable/disable specialisation of
incoherent instances

Fixes #23287

- - - - -
d751c583 by Profpatsch at 2023-08-04T12:24:26-04:00
base: Improve String & IsString documentation

- - - - -
01db1117 by Ben Gamari at 2023-08-04T12:25:02-04:00
rts/win32: Ensure reliability of IO manager shutdown

When the Win32 threaded IO manager shuts down, `ioManagerDie` sends an
`IO_MANAGER_DIE` event to the IO manager thread using the
`io_manager_event` event object. Finally, it will closes the event object,
and invalidate `io_manager_event`.

Previously, `readIOManagerEvent` would see that `io_manager_event` is
invalid and return `0`, suggesting that everything is right with the
world. This meant that if `ioManagerDie` invalidated the handle before
the event manager was blocked on the event we would end up in a
situation where the event manager would never realize it was asked to
shut down.

Fix this by ensuring that `readIOManagerEvent` instead returns
`IO_MANAGER_DIE` when we detect that the event object has been
invalidated by `ioManagerDie`.

Fixes #23691.

- - - - -
fdef003a by Ryan Scott at 2023-08-04T12:25:39-04:00
Look through TH splices in splitHsApps

This modifies `splitHsApps` (a key function used in typechecking function
applications) to look through untyped TH splices and quasiquotes. Not doing so
was the cause of #21077. This builds on !7821 by making `splitHsApps` match on
`HsUntypedSpliceTop`, which contains the `ThModFinalizers` that must be run as
part of invoking the TH splice. See the new `Note [Looking through Template
Haskell splices in splitHsApps]` in `GHC.Tc.Gen.Head`.

Along the way, I needed to make the type of `splitHsApps.set` slightly more
general to accommodate the fact that the location attached to a quasiquote is
a `SrcAnn NoEpAnns` rather than a `SrcSpanAnnA`.

Fixes #21077.

- - - - -
e77a0b41 by Ben Gamari at 2023-08-04T12:26:15-04:00
Bump deepseq submodule to 1.5.

And bump bounds

(cherry picked from commit 1228d3a4a08d30eaf0138a52d1be25b38339ef0b)

- - - - -
cebb5819 by Ben Gamari at 2023-08-04T12:26:15-04:00
configure: Bump minimal boot GHC version to 9.4

(cherry picked from commit d3ffdaf9137705894d15ccc3feff569d64163e8e)

- - - - -
83766dbf by Ben Gamari at 2023-08-04T12:26:15-04:00
template-haskell: Bump version to 2.21.0.0

Bumps exceptions submodule.

(cherry picked from commit bf57fc9aea1196f97f5adb72c8b56434ca4b87cb)

- - - - -
1211112a by Ben Gamari at 2023-08-04T12:26:15-04:00
base: Bump version to 4.19

Updates all boot library submodules.

(cherry picked from commit 433d99a3c24a55b14ec09099395e9b9641430143)

- - - - -
3ab5efd9 by Ben Gamari at 2023-08-04T12:26:15-04:00
testsuite: Normalise versions more aggressively

In backpack hashes can contain `+` characters.

(cherry picked from commit 024861af51aee807d800e01e122897166a65ea93)

- - - - -
d52be957 by Ben Gamari at 2023-08-04T12:26:15-04:00
testsuite: Declare bkpcabal08 as fragile

Due to spurious output changes described in #23648.

(cherry picked from commit c046a2382420f2be2c4a657c56f8d95f914ea47b)

- - - - -
e75a58d1 by Ben Gamari at 2023-08-04T12:26:15-04:00
gitlab-ci: Only mark linker_unload_native as broken in static jobs

This test passes on dynamically-linked Alpine.

(cherry picked from commit f356a7e8ec8ec3d6b2b30fd175598b9b80065d87)

- - - - -
8b176514 by Ben Gamari at 2023-08-04T12:26:15-04:00
testsuite: Update base-exports

- - - - -
4b647936 by Ben Gamari at 2023-08-04T12:26:15-04:00
testsuite/interface-stability: normalise versions

This eliminates spurious changes from version bumps.

- - - - -
0eb54c05 by Ben Gamari at 2023-08-04T12:26:51-04:00
linker/PEi386: Don't sign-extend symbol section number

Previously we incorrectly interpreted PE section numbers as signed
values. However, this isn't the case; rather, it's an unsigned 16-bit number
with a few special bit-patterns (0xffff and 0xfffe). This resulted in #22941
as the linker would conclude that the sections were invalid.

Fixing this required quite a bit of refactoring.

Closes #22941.

- - - - -
fd7ce39c by Ben Gamari at 2023-08-04T12:27:28-04:00
testsuite: Mark MulMayOflo_full as broken rather than skipping

To ensure that we don't accidentally fix it.

See #23742.

- - - - -
824092f2 by Ben Gamari at 2023-08-04T12:27:28-04:00
nativeGen/AArch64: Fix sign extension in MulMayOflo

Previously the 32-bit implementations of MulMayOflo would use the
a non-sensical sign-extension mode. Rewrite these to reflect what gcc 11
produces. Also similarly rework the 16- and 8-bit cases.

This now passes the MulMayOflo tests in ghc/test-primops> in all four
widths, including the precision tests.

Fixes #23721.

- - - - -
1b15dbc4 by Jan Hrček at 2023-08-04T12:28:08-04:00
Fix haddock markup in code example for coerce

- - - - -
46fd8ced by Vladislav Zavialov at 2023-08-04T12:28:44-04:00
Fix (~) and (@) infix operators in TH splices (#23748)

8168b42a "Whitespace-sensitive bang patterns" allows GHC to accept
the following infix operators:

	a ~ b = ()
	a @ b = ()

But not if TH is used to generate those declarations:

	$([d| a ~ b = ()
	      a @ b = ()
	    |])

	-- Test.hs:5:2: error: [GHC-55017]
	--    Illegal variable name: ‘~’
	--    When splicing a TH declaration: (~_0) a_1 b_2 = GHC.Tuple.Prim.()

This is easily fixed by modifying `reservedOps` in GHC.Utils.Lexeme

- - - - -
a1899d8f by Aaron Allen at 2023-08-04T12:29:24-04:00
[#23663] Show Flag Suggestions in GHCi

Makes suggestions when using `:set` in GHCi with a misspelled flag. This
mirrors how invalid flags are handled when passed to GHC directly. Logic
for producing flag suggestions was moved to GHC.Driver.Sesssion so it
can be shared.

resolves #23663

- - - - -
03f2debd by Rodrigo Mesquita at 2023-08-04T12:30:00-04:00
Improve ghc-toolchain validation configure warning

Fixes the layout of the ghc-toolchain validation warning produced by
configure.

- - - - -
de25487d by Alan Zimmerman at 2023-08-04T12:30:36-04:00
EPA make getLocA a synonym for getHasLoc

This is basically a no-op change, but allows us to make future changes
that can rely on the HasLoc instances

And I presume this means we can use more precise functions based on
class resolution, so the Windows CI build reports

Metric Decrease:
    T12234
    T13035

- - - - -
3ac423b9 by Ben Gamari at 2023-08-04T12:31:13-04:00
ghc-platform: Add upper bound on base

Hackage upload requires this.
- - - - -
8ba20b21 by Matthew Craven at 2023-08-04T17:22:59-04:00
Adjust and clarify handling of primop effects

Fixes #17900; fixes #20195.

The existing "can_fail" and "has_side_effects" primop attributes
that previously governed this were used in inconsistent and
confusingly-documented ways, especially with regard to raising
exceptions.  This patch replaces them with a single "effect"
attribute, which has four possible values: NoEffect, CanFail,
ThrowsException, and ReadWriteEffect.  These are described in
Note [Classifying primop effects].

A substantial amount of related documentation has been re-drafted
for clarity and accuracy.

In the process of making this attribute format change for literally
every primop, several existing mis-classifications were detected and
corrected.  One of these mis-classifications was tagToEnum#, which
is now considered CanFail; this particular fix is known to cause a
regression in performance for derived Enum instances.  (See #23782.)
Fixing this is left as future work.

New primop attributes "cheap" and "work_free" were also added,
and used in the corresponding parts of GHC.Core.Utils.

In view of their actual meaning and uses, `primOpOkForSideEffects`
and `exprOkForSideEffects` have been renamed to `primOpOkToDiscard`
and `exprOkToDiscard`, respectively.

Metric Increase:
    T21839c

- - - - -
41bf2c09 by sheaf at 2023-08-04T17:23:42-04:00
Update inert_solved_dicts for ImplicitParams

When adding an implicit parameter dictionary to the inert set, we must
make sure that it replaces any previous implicit parameter dictionaries
that overlap, in order to get the appropriate shadowing behaviour, as in

  let ?x = 1 in let ?x = 2 in ?x

We were already doing this for inert_cans, but we weren't doing the same
thing for inert_solved_dicts, which lead to the bug reported in #23761.

The fix is thus to make sure that, when handling an implicit parameter
dictionary in updInertDicts, we update **both** inert_cans and
inert_solved_dicts to ensure a new implicit parameter dictionary
correctly shadows old ones.

Fixes #23761

- - - - -
43578d60 by Matthew Craven at 2023-08-05T01:05:36-04:00
Bump bytestring submodule to 0.11.5.1

- - - - -
91353622 by Ben Gamari at 2023-08-05T01:06:13-04:00
Initial commit of Note [Thunks, blackholes, and indirections]

This Note attempts to summarize the treatment of thunks, thunk update,
and indirections.

This fell out of work on #23185.

- - - - -
8d686854 by sheaf at 2023-08-05T01:06:54-04:00
Remove zonk in tcVTA

This removes the zonk in GHC.Tc.Gen.App.tc_inst_forall_arg and its
accompanying Note [Visible type application zonk]. Indeed, this zonk
is no longer necessary, as we no longer maintain the invariant that
types are well-kinded without zonking; only that typeKind does not
crash; see Note [The Purely Kinded Type Invariant (PKTI)].

This commit removes this zonking step (as well as a secondary zonk),
and replaces the aforementioned Note with the explanatory
Note [Type application substitution], which justifies why the
substitution performed in tc_inst_forall_arg remains valid without
this zonking step.

Fixes #23661

- - - - -
19dea673 by Ben Gamari at 2023-08-05T01:07:30-04:00
Bump nofib submodule

Ensuring that nofib can be build using the same range of bootstrap
compilers as GHC itself.

- - - - -
aa07402e by Luite Stegeman at 2023-08-05T23:15:55+09:00
JS: Improve compatibility with recent emsdk

The JavaScript code in libraries/base/jsbits/base.js had some
hardcoded offsets for fields in structs, because we expected
the layout of the data structures to remain unchanged. Emsdk
3.1.42 changed the layout of the stat struct, breaking this
assumption, and causing code in .hsc files accessing the
stat struct to fail.

This patch improves compatibility with recent emsdk by
removing the assumption that data layouts stay unchanged:

    1. offsets of fields in structs used by JavaScript code are
       now computed by the configure script, so both the .js and
       .hsc files will automatically use the new layout if anything
       changes.
    2. the distrib/configure script checks that the emsdk version
       on a user's system is the same version that a bindist was
       booted with, to avoid data layout inconsistencies

See #23641

- - - - -
b938950d by Luite Stegeman at 2023-08-07T06:27:51-04:00
JS: Fix missing local variable declarations

This fixes some missing local variable declarations that were
found by running the testsuite in strict mode.

Fixes #23775

- - - - -
6c0e2247 by sheaf at 2023-08-07T13:31:21-04:00
Update Haddock submodule to fix #23368

This submodule update adds the following three commits:

bbf1c8ae - Check for puns
0550694e - Remove fake exports for (~), List, and Tuple<n>
5877bceb - Fix pretty-printing of Solo and MkSolo

These commits fix the issues with Haddock HTML rendering reported in
ticket #23368.

Fixes #23368

- - - - -
5b5be3ea by Matthew Pickering at 2023-08-07T13:32:00-04:00
Revert "Bump bytestring submodule to 0.11.5.1"

This reverts commit 43578d60bfc478e7277dcd892463cec305400025.

Fixes #23789

- - - - -
01961be3 by Ben Gamari at 2023-08-08T02:47:14-04:00
configure: Derive library version from ghc-prim.cabal.in

Since ghc-prim.cabal is now generated by Hadrian, we cannot depend upon
it.

Closes #23726.

- - - - -
3b373838 by Ryan Scott at 2023-08-08T02:47:49-04:00
tcExpr: Push expected types for untyped TH splices inwards

In !10911, I deleted a `tcExpr` case for `HsUntypedSplice` in favor of a much
simpler case that simply delegates to `tcApp`. Although this passed the test
suite at the time, this was actually an error, as the previous `tcExpr` case
was critically pushing the expected type inwards. This actually matters for
programs like the one in #23796, which GHC would not accept with type inference
alone—we need full-blown type _checking_ to accept these.

I have added back the previous `tcExpr` case for `HsUntypedSplice` and now
explain why we have two different `HsUntypedSplice` cases (one in `tcExpr` and
another in `splitHsApps`) in `Note [Looking through Template Haskell splices in
splitHsApps]` in `GHC.Tc.Gen.Head`.

Fixes #23796.

- - - - -
0ef1d8ae by sheaf at 2023-08-08T21:26:51-04:00
Compute all emitted diagnostic codes

This commit introduces in GHC.Types.Error.Codes the function

  constructorCodes :: forall diag. (...) => Map DiagnosticCode String

which computes a collection of all the diagnostic codes that correspond
to a particular type. In particular, we can compute the collection of
all diagnostic codes emitted by GHC using the invocation

  constructorCodes @GhcMessage

We then make use of this functionality in the new "codes" test which
checks consistency and coverage of GHC diagnostic codes.
It performs three checks:

  - check 1: all non-outdated GhcDiagnosticCode equations
    are statically used.
  - check 2: all outdated GhcDiagnosticCode equations
    are statically unused.
  - check 3: all statically used diagnostic codes are covered by
    the testsuite (modulo accepted exceptions).

- - - - -
4bc7b1e5 by Fraser Tweedale at 2023-08-08T21:27:32-04:00
numberToRangedRational: fix edge cases for exp ≈ (maxBound :: Int)

Currently a negative exponent less than `minBound :: Int` results in
Infinity, which is very surprising and obviously wrong.

```
λ> read "1e-9223372036854775808" :: Double
0.0
λ> read "1e-9223372036854775809" :: Double
Infinity
```

There is a further edge case where the exponent can overflow when
increased by the number of tens places in the integer part, or
underflow when decreased by the number of leading zeros in the
fractional part if the integer part is zero:

```
λ> read "10e9223372036854775807" :: Double
0.0
λ> read "0.01e-9223372036854775808" :: Double
Infinity
```

To resolve both of these issues, perform all arithmetic and
comparisons involving the exponent in type `Integer`.  This approach
also eliminates the need to explicitly check the exponent against
`maxBound :: Int` and `minBound :: Int`, because the allowed range
of the exponent (i.e. the result of `floatRange` for the target
floating point type) is certainly within those bounds.

This change implements CLC proposal 192:
https://github.com/haskell/core-libraries-committee/issues/192

- - - - -
6eab07b2 by Alan Zimmerman at 2023-08-08T21:28:10-04:00
EPA: Remove Location from WarningTxt source

This is not needed.

- - - - -
1a98d673 by Sebastian Graf at 2023-08-09T16:24:29-04:00
Cleanup a TODO introduced in 1f94e0f7

The change must have slipped through review of !4412

- - - - -
2274abc8 by Sebastian Graf at 2023-08-09T16:24:29-04:00
More explicit strictness in GHC.Real

- - - - -
ce8aa54c by Sebastian Graf at 2023-08-09T16:24:30-04:00
exprIsTrivial: Factor out shared implementation

The duplication between `exprIsTrivial` and `getIdFromTrivialExpr_maybe` has
been bugging me for a long time.

This patch introduces an inlinable worker function `trivial_expr_fold` acting
as the single, shared decision procedure of triviality. It "returns" a
Church-encoded `Maybe (Maybe Id)`, so when it is inlined, it fuses to similar
code as before.
(Better code, even, in the case of `getIdFromTrivialExpr` which presently
allocates a `Just` constructor that cancels away after this patch.)

- - - - -
d004a36d by Sebastian Graf at 2023-08-09T16:24:30-04:00
Simplify: Simplification of arguments in a single function

The Simplifier had a function `simplArg` that wasn't called in `rebuildCall`,
which seems to be the main way to simplify args. Hence I consolidated the code
path to call `simplArg`, too, renaming to `simplLazyArg`.

- - - - -
8c73505e by Sebastian Graf at 2023-08-09T16:24:30-04:00
Core.Ppr: Omit case binder for empty case alternatives

A minor improvement to pretty-printing

- - - - -
d8d993f1 by Sebastian Graf at 2023-08-09T16:24:30-04:00
Disable tests RepPolyWrappedVar2 and RepPolyUnsafeCoerce1 in JS backend

... because those coerce between incompatible/unknown PrimReps.

- - - - -
f06e87e4 by Sebastian Graf at 2023-08-09T16:24:30-04:00
Inlining literals into boring contexts is OK

- - - - -
4a6b7c87 by Sebastian Graf at 2023-08-09T16:24:30-04:00
Clarify floating of unsafeEqualityProofs (#23754)

- - - - -
b0f4752e by Sebastian Graf at 2023-08-09T16:24:30-04:00
Kill SetLevel.notWorthFloating.is_triv (#23270)

We have had it since b84ba676034, when it operated on annotated expressions.
Nowadays it operates on vanilla `CoreExpr` though, so we should just call
`exprIsTrivial`; thus handling empty cases and string literals correctly.

- - - - -
7e0c8b3b by Sebastian Graf at 2023-08-09T16:24:30-04:00
ANFise string literal arguments (#23270)

This instates the invariant that a trivial CoreExpr translates to an atomic
StgExpr. Nice.

Annoyingly, in -O0 we sometimes generate
```
foo = case "blah"# of sat { __DEFAULT -> unpackCString# sat }
```
which makes it a bit harder to spot that we can emit a standard
`stg_unpack_cstring` thunk.

Fixes #23270.

- - - - -
357f2738 by Sebastian Graf at 2023-08-09T16:24:30-04:00
Deactivate -fcatch-nonexhaustive-cases in ghc-bignum (#23345)

- - - - -
59202c80 by Sebastian Graf at 2023-08-09T16:24:30-04:00
CorePrep: Eliminate EmptyCase and unsafeEqualityProof in CoreToStg instead

We eliminate EmptyCase by way of `coreToStg (Case e _ _ []) = coreToStg e` now.
The main reason is that it plays far better in conjunction with eta expansion
(as we aim to do for arguments in CorePrep, #23083), because we can discard
any arguments, `(case e of {}) eta == case e of {}`, whereas in `(e |> co) eta`
it's impossible to discard the argument.

We do also give the same treatment to unsafeCoerce proofs and treat them as
trivial iff their RHS is trivial.

It is also both much simpler to describe than the previous mechanism of emitting
an unsafe coercion and simpler to implement, removing quite a bit of commentary
and `CorePrepProv`.

In the ghc/alloc perf test `LargeRecord`, we introduce an additional Simplifier
iteration due to #17910. E.g., FloatOut produces a binding
```
lvl_s6uK [Occ=Once1] :: GHC.Types.Int
[LclId]
lvl_s6uK = GHC.Types.I# 2#

lvl_s6uL [Occ=Once1] :: GHC.Types.Any
[LclId]
lvl_s6uL
  = case Unsafe.Coerce.unsafeEqualityProof ... of
    { Unsafe.Coerce.UnsafeRefl v2_i6tr -> lvl_s6uK `cast` (... v2_i6tr ...)
    }
```
That occurs once and hence is pre-inlined unconditionally in the next Simplifier
pass. It's non-trivial to find a way around that, but not really harmful
otherwise. Hence we accept a 1.2% increase on some architectures.

Metric Increase:
    LargeRecord

- - - - -
00d31188 by Sebastian Graf at 2023-08-09T16:24:30-04:00
CorePrep: Eta expand arguments (#23083)

Previously, we'd only eta expand let bindings and lambdas,
now we'll also eta expand arguments such as in T23083:
```hs
g f h = f (h `seq` (h $))
```
Unless `-fpedantic-bottoms` is set, we'll now transform to
```hs
g f h = f (\eta -> h eta)
```
in CorePrep.

See the new `Note [Eta expansion of arguments in CorePrep]` for the details.

We only do this optimisation with -O2 because we saw 2-3% ghc/alloc regressions
in T4801 and T5321FD.

Fixes #23083.

- - - - -
bf885d7a by Matthew Craven at 2023-08-09T16:25:07-04:00
Bump bytestring submodule to 0.11.5, again

Fixes #23789.

The bytestring commit used here is unreleased;
a release can be made when necessary.

- - - - -
7acbf0fd by Sven Tennie at 2023-08-10T19:17:11-04:00
Serialize CmmRetInfo in .rodata

The handling of case was missing.

- - - - -
0c3136f2 by Sven Tennie at 2023-08-10T19:17:11-04:00
Reference StgRetFun payload by its struct field address

This is easier to grasp than relative pointer offsets.

- - - - -
f68ff313 by Sven Tennie at 2023-08-10T19:17:11-04:00
Better variable name: u -> frame

The 'u' was likely introduced by copy'n'paste.

- - - - -
0131bb7f by Sven Tennie at 2023-08-10T19:17:11-04:00
Make checkSTACK() public

Such that it can also be used in tests.

- - - - -
7b6e1e53 by Sven Tennie at 2023-08-10T19:17:11-04:00
Publish stack related fields in DerivedConstants.h

These will be used in ghc-heap to decode these parts of the stack.

- - - - -
907ed054 by Sven Tennie at 2023-08-10T19:17:11-04:00
ghc-heap: Decode StgStack and its stack frames

Previously, ghc-heap could only decode heap closures.

The approach is explained in detail in note
[Decoding the stack].

- - - - -
6beb6ac2 by Sven Tennie at 2023-08-10T19:17:11-04:00
Remove RetFunType from RetFun stack frame representation

It's a technical detail. The single usage is replaced by a predicate.

- - - - -
006bb4f3 by Sven Tennie at 2023-08-10T19:17:11-04:00
Better parameter name

The call-site uses the term "offset", too.

- - - - -
d4c2c1af by Sven Tennie at 2023-08-10T19:17:11-04:00
Make closure boxing pure

There seems to be no need to do something complicated. However, the
strictness of the closure pointer matters, otherwise a thunk gets
decoded.

- - - - -
8d8426c9 by Sven Tennie at 2023-08-10T19:17:11-04:00
Document entertainGC in test

It wasn't obvious why it's there and what its role is.

Also, increase the "entertainment level" a bit.

I checked in STG and Cmm dumps that this really generates closures (and
is not e.g. constant folded away.)

- - - - -
cc52c358 by Finley McIlwaine at 2023-08-10T19:17:47-04:00
Add -dipe-stats flag

This is useful for seeing which info tables have information.

- - - - -
261c4acb by Finley McIlwaine at 2023-08-10T19:17:47-04:00
Add -finfo-table-map-with-fallback -finfo-table-map-with-stack

The -fno-info-table-map-with-stack flag omits STACK info tables from the info
table map, and the -fno-info-table-map-with-fallback flag omits info tables
with defaulted source locations from the map. In a test on the Agda codebase
the build results were about 7% smaller when both of those types of tables
were omitted.

Adds a test that verifies that passing each combination of these flags
results in the correct output for -dipe-stats, which is disabled for the js
backend since profiling is not implemented.

This commit also refactors a lot of the logic around extracting info tables
from the Cmm results and building the info table map.

This commit also fixes some issues in the users guide rst source to fix
warnings that were noticed while debugging the documentation for these flags.

Fixes #23702

- - - - -
d7047e0d by Jaro Reinders at 2023-08-14T04:41:42-04:00
Add changelog entry for specialised Enum Int64/Word64 instances

- - - - -
52f5e8fb by cydparser at 2023-08-14T04:42:20-04:00
Fix -ddump-to-file and -ddump-timings interaction (#20316)

- - - - -
1274c5d6 by cydparser at 2023-08-14T04:42:20-04:00
Update release notes (#20316)

- - - - -
dfef3264 by Finley McIlwaine at 2023-08-18T20:04:42-06:00
Update haddock and xhtml submodules

Include latest optimizations for haddock, including adaptation to latest xhtml
changes.

Bumps haddock submodule
Bumps xhtml submodule

xhtml is added to the stage0 packages because we need a newer version to
build stage1 haddock. In normal situations we shouldn't be building
stage0 haddock but in case someone attempts to..

- - - - -
53b04f3b by Matthew Pickering at 2023-08-18T20:04:50-06:00
testsuite: Don't need haddock executable when testing stage1 compiler

This causes some unecessary things to be built when testing stage1.
Ideally we want to move to a place where a test properly declares if it
depends on an executable so we only build the ones we actually need
rather than everything.

- - - - -


23 changed files:

- .gitlab-ci.yml
- .gitlab/generate-ci/gen_ci.hs
- .gitlab/jobs.yaml
- .gitlab/merge_request_templates/Default.md
- compiler/GHC/Builtin/PrimOps.hs
- − compiler/GHC/Builtin/gen_bytearray_addr_access_ops.py
- compiler/GHC/Builtin/primops.txt.pp
- compiler/GHC/Cmm.hs
- compiler/GHC/Cmm/CLabel.hs
- compiler/GHC/Cmm/Parser.y
- compiler/GHC/Cmm/ThreadSanitizer.hs
- compiler/GHC/CmmToAsm.hs
- compiler/GHC/CmmToAsm/AArch64/CodeGen.hs
- compiler/GHC/CmmToAsm/AArch64/Instr.hs
- compiler/GHC/CmmToAsm/AArch64/Ppr.hs
- compiler/GHC/CmmToAsm/AArch64/Regs.hs
- compiler/GHC/CmmToAsm/Wasm.hs
- compiler/GHC/CmmToLlvm/CodeGen.hs
- compiler/GHC/Core.hs
- compiler/GHC/Core/Coercion.hs
- compiler/GHC/Core/Coercion/Opt.hs
- compiler/GHC/Core/ConLike.hs
- compiler/GHC/Core/FVs.hs


The diff was not included because it is too large.


View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/518e9a7469fcaea6883bc31fd2f2471313e25386...53b04f3b2ba685f010ff790fe0285eaf98128945

-- 
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/518e9a7469fcaea6883bc31fd2f2471313e25386...53b04f3b2ba685f010ff790fe0285eaf98128945
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/20230818/ea09d70b/attachment-0001.html>


More information about the ghc-commits mailing list