[Git][ghc/ghc][wip/prelude-for] 321 commits: Bump deepseq bound to allow 1.5

Melanie Brown (@mixphix) gitlab at gitlab.haskell.org
Wed Aug 7 13:30:14 UTC 2024



Melanie Brown pushed to branch wip/prelude-for at Glasgow Haskell Compiler / GHC


Commits:
1228d3a4 by Ben Gamari at 2023-07-06T20:16:06-04:00
Bump deepseq bound to allow 1.5

- - - - -
d3ffdaf9 by Ben Gamari at 2023-07-06T20:21:22-04:00
configure: Bump minimal boot GHC version to 9.4

- - - - -
bf57fc9a by Ben Gamari at 2023-07-06T21:50:24-04:00
template-haskell: Bump version to 2.21.0.0

- - - - -
433d99a3 by Ben Gamari at 2023-07-12T09:42:25-04:00
base: Bump version to 4.19

Updates all boot library submodules.

- - - - -
89cb22c2 by Matthew Pickering at 2023-07-12T09:42:25-04:00
ghcup-metadata: Use dynamically linked alpine bindists

In theory these will work much better on alpine to allow people to build
statically linked applications there. We don't need to distribute a
statically linked application ourselves in order to allow that.

Fixes #23602

(cherry picked from commit 6295416ba0bc3e729b1f3dea56ef5d722f98ee9d)

- - - - -
44b3c6d4 by Matthew Pickering at 2023-07-12T09:42:25-04:00
ghcup-metadata: Also updates ghcup-nightlies-0.0.7.yaml file

Fixes #23600

(cherry picked from commit 75b8b39a860a643b78405787bac582ba7cc3cb21)

- - - - -
b934a05f by Ben Gamari at 2023-07-12T09:42:25-04:00
rts: Don't rely on initializers for sigaction_t

As noted in #23577, CentOS's ancient toolchain throws spurious
missing-field-initializer warnings.

(cherry picked from commit 46c9bcd6a47bdaa70869ed64da315315974b8b1d)

- - - - -
8a6eb56a by Ben Gamari at 2023-07-12T09:42:25-04:00
hadrian: Don't treat -Winline warnings as fatal

Such warnings are highly dependent upon the toolchain, platform, and
build configuration. It's simply too fragile to rely on these.

(cherry picked from commit ec55035f8fe901b5d369221975fb1a741c677acb)

- - - - -
7a5a1163 by Ben Gamari at 2023-07-12T09:42:25-04:00
hadrian: Only pass -Wno-nonportable-include-path on Darwin

This flag, which was introduced due to #17798, is only understood by
Clang and consequently throws warnings on platforms using gcc. Sadly,
there is no good way to treat such warnings as non-fatal with `-Werror`
so for now we simply make this flag specific to platforms known to use
Clang and case-insensitive filesystems (Darwin and Windows).

See #23577.

(cherry picked from commit 3a09b789102dc0ea20a9af0912bc817ac5cb8c59)

- - - - -
ea1fb768 by Bryan Richter at 2023-07-12T09:42:25-04:00
Add missing void prototypes to rts functions

See #23561.

(cherry picked from commit 82ac6bf113526f61913943b911089534705984fb)

- - - - -
a474caef by Ben Gamari at 2023-07-12T09:42:25-04:00
gitlab-ci: Bump DOCKER_REV

Ensuring that we bootstrap with GHC 9.4 universally.

- - - - -
024861af by Ben Gamari at 2023-07-12T09:42:26-04:00
testsuite: Normalise versions more aggressively

In backpack hashes can contain `+` characters.

- - - - -
3b12e852 by Ben Gamari at 2023-07-12T09:42:26-04:00
rts: Work around missing prototypes errors

Darwin's toolchain inexpliciably claims that `write_barrier` and friends
have declarations without prototypes, despite the fact that (a) they are
definitions, and (b) the prototypes appear only a few lines above. Work
around this by making the definitions proper prototypes.

(cherry picked from commit 5b6612bc4f6b0a7ecc9868750bee1c359ffca871)

- - - - -
d72181cd by Ben Gamari at 2023-07-12T09:42:26-04:00
Define FFI_GO_CLOSURES

The libffi shipped with Apple's XCode toolchain does not contain a
definition of the FFI_GO_CLOSURES macro, despite containing references
to said macro. Work around this by defining the macro, following the
model of a similar workaround in OpenJDK [1].

[1] https://github.com/openjdk/jdk17u-dev/pull/741/files

(cherry picked from commit 8b35e8caafeeccbf06b7faa70e807028a3f0ff43)

- - - - -
594525fa by Ben Gamari at 2023-07-12T09:42:26-04:00
base: Fix incorrect CPP guard

This was guarded on `darwin_HOST_OS` instead of `defined(darwin_HOST_OS)`.

(cherry picked from commit d7ef1704aeba451bd3e0efbdaaab2638ee1f0bc8)

- - - - -
555ad690 by Ben Gamari at 2023-07-12T09:42:26-04:00
rts/Trace: Ensure that debugTrace arguments are used

As debugTrace is a macro we must take care to ensure that
the fact is clear to the compiler lest we see warnings.

(cherry picked from commit 7c7d1f66d35f73a2faa898a33aa80cd276159dc2)

- - - - -
c4bb9e3e by Ben Gamari at 2023-07-12T09:42:26-04:00
rts: Various warnings fixes

(cherry picked from commit cb92051e3d85575ff6abd753c9b135930cc50cf8)

- - - - -
f484169c by Ben Gamari at 2023-07-12T09:42:26-04:00
hadrian: Ignore warnings in unix and semaphore-compat

(cherry picked from commit dec81dd1fd0475dde4929baae625d155387300bb)

- - - - -
9922b77c by Matthew Pickering at 2023-07-12T09:42:26-04:00
hadrian: Fix dependencies of docs:* rule

For the docs:* rule we need to actually build the package rather than
just the haddocks for the dependent packages. Therefore we depend on the
.conf files of the packages we are trying to build documentation for as
well as the .haddock files.

Fixes #23472

(cherry picked from commit d7f6448aa06bbf26173a06ee5c624f5b734786c5)

- - - - -
ab74326f by Ben Gamari at 2023-07-12T09:42:26-04:00
rts: Ensure that pinned allocations respect block size

Previously, it was possible for pinned, aligned allocation requests to
allocate beyond the end of the pinned accumulator block. Specifically,
we failed to account for the padding needed to achieve the requested
alignment in the "large object" check. With large alignment requests,
this can result in the allocator using the capability's pinned object
accumulator block to service a request which is larger than
`PINNED_EMPTY_SIZE`.

To fix this we reorganize `allocatePinned` to consistently account for
the alignment padding in all large object checks. This is a bit subtle
as we must handle the case of a small allocation request filling the
accumulator block, as well as large requests.

Fixes #23400.

(cherry picked from commit fd8c57694a00f6359bd66365f1284388c869ac60)

- - - - -
9d9d9bc5 by Luite Stegeman at 2023-07-12T09:42:26-04:00
Support large stack frames/offsets in GHCi bytecode interpreter

Bytecode instructions like PUSH_L (push a local variable) contain
an operand that refers to the stack slot. Before this patch, the
operand type was SmallOp (Word16), limiting the maximum stack
offset to 65535 words. This could cause compiler panics in some
cases (See #22888).

This patch changes the operand type for stack offsets from
SmallOp to Op, removing the stack offset limit.

Fixes #22888

(cherry picked from commit 564164ef323a9f2cdeb8c69dcb2cf6df6382de4e)

- - - - -
a6ebaa83 by Torsten Schmits at 2023-07-12T09:42:26-04:00
Substitute free variables captured by breakpoints in SpecConstr

Fixes #23267

(cherry picked from commit 40f4ef7c40e747dfea491d297475458d2ccaf860)

- - - - -
3d6bd455 by Torsten Schmits at 2023-07-12T09:42:26-04:00
Filter out nontrivial substituted expressions in substTickish

Fixes #23272

(cherry picked from commit 6fdcf969db85f3fe64123ba150e9226a0d2995cd)

- - - - -
a814fb6d by Ben Bellick at 2023-07-12T09:42:26-04:00
Add some structured diagnostics in Tc/Validity.hs

This addresses the work of ticket #20118
Created the following constructors for TcRnMessage
 - TcRnInaccessibleCoAxBranch
 - TcRnPatersonCondFailure

(cherry picked from commit 03f941f45607a5ee52ca53a358333bbb41ddb1bc)

- - - - -
cee76805 by aadaa_fgtaa at 2023-07-12T09:42:26-04:00
Optimise ELF linker (#23464)

- cache last elements of `relTable`, `relaTable` and `symbolTables` in `ocInit_ELF`
- cache shndx table in ObjectCode
- run `checkProddableBlock` only with debug rts

(cherry picked from commit b3e1436f968c0c36a27ea0339ee2554970b329fe)

- - - - -
445dc082 by Moisés Ackerman at 2023-07-12T09:42:26-04:00
Add failing test case for #23492

(cherry picked from commit 6074cc3cda9b9836c784942a1aa7f766fb142787)

- - - - -
c505474d by Moisés Ackerman at 2023-07-12T09:42:26-04:00
Use generated src span for catch-all case of record selector functions

This fixes #23492. The problem was that we used the real source span
of the field declaration for the generated catch-all case in the
selector function, in particular in the generated call to
`recSelError`, which meant it was included in the HIE output. Using
`generatedSrcSpan` instead means that it is not included.

(cherry picked from commit 356a269258a50bf67811fe0edb193fc9f82dfad1)

- - - - -
765c1de8 by Moisés Ackerman at 2023-07-12T09:42:26-04:00
Introduce genLHsApp and genLHsLit helpers in GHC.Rename.Utils

(cherry picked from commit 3efe7f399a53ec7930c8a333ad2c114d956f0c2a)

- - - - -
809f9b81 by Moisés Ackerman at 2023-07-12T09:42:26-04:00
Construct catch-all default case using helpers

GHC.Rename.Utils concrete helpers instead of wrapGenSpan + HS AST constructors

(cherry picked from commit dd782343f131cfd983a7fb2431d9d4a9ae497551)

- - - - -
76668b6e by Ben Gamari at 2023-07-12T09:42:26-04:00
Fix breakpoint

- - - - -
2b3da4c4 by Ben Gamari at 2023-07-12T09:42:26-04:00
rts: Make collectFreshWeakPtrs definition a prototype

x86-64/Darwin's toolchain inexplicably warns that collectFreshWeakPtrs
needs to be a prototype.

(cherry picked from commit bb0ed354b9b05c0774c1e9379823bceb785987ce)

- - - - -
62bfea7a by Ben Gamari at 2023-07-13T08:10:26-04:00
gitlab-ci: Bump ci-images

To freeze emsdk, avoiding #23641.

- - - - -
a01879a7 by Ben Gamari at 2023-07-13T08:10:26-04:00
testsuite: Accept metric changes

Metric Increase:
    T6048

- - - - -
c046a238 by Ben Gamari at 2023-07-13T08:10:26-04:00
testsuite: Declare bkpcabal08 as fragile

Due to spurious output changes described in #23648.

- - - - -
f356a7e8 by Ben Gamari at 2023-07-13T08:10:26-04:00
gitlab-ci: Only mark linker_unload_native as broken in static jobs

This test passes on dynamically-linked Alpine.

- - - - -
c86a4055 by Ben Gamari at 2023-07-13T16:19:02-04:00
Update generate_bootstrap_plans

- - - - -
d58049ef by Ben Gamari at 2023-07-13T16:28:54-04:00
hadrian/bootstrap: Drop GHC 9.2 plans

- - - - -
a79d1806 by Ben Gamari at 2023-07-13T16:29:39-04:00
hadrian/bootstrap: Add 9.6.2 plans

- - - - -
4f142ee9 by Ben Gamari at 2023-07-13T16:34:08-04:00
hadrian/bootstrap: Regenerate existing plans

- - - - -
031d7f7c by Ben Gamari at 2023-07-13T17:27:30-04:00
gitlab-ci: Drop test-bootstrap:9.2 jobs

- - - - -
0d7a34c1 by Ben Gamari at 2023-07-18T20:36:07-04:00
configure: Bump minimal boot GHC version to 9.4

- - - - -
ed28b0f2 by Ben Gamari at 2023-07-18T20:36:07-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.

- - - - -
68cc675d by Ben Gamari at 2023-07-19T13:54:38-04:00
Bump array submodule to v0.5.6.0

- - - - -
6200e8fa by Ben Gamari at 2023-07-19T21:06:46-04:00
Bump containers submodule

- - - - -
8b95c0e8 by Ben Gamari at 2023-07-19T21:06:46-04:00
users guide: Fix release notes and other documentation issues

- - - - -
fb4ecd83 by Sylvain Henry at 2023-07-20T14:33:08-04:00
JS: fix JS stack printing (#23565)

(cherry picked from commit 78b2f3ccb1d7603e11b3f364646240e361512cbc)

- - - - -
77117e5f by Dave Barton at 2023-07-20T14:33:15-04:00
Fix some broken links and typos

(cherry picked from commit 4457da2a7dba97ab2cd2f64bb338c904bb614244)

- - - - -
7cec29d8 by Matthew Pickering at 2023-07-20T14:34:13-04:00
Add -fpolymorphic-specialisation flag (off by default at all optimisation levels)

Polymorphic specialisation has led to a number of hard to diagnose
incorrect runtime result bugs (see #23469, #23109, #21229, #23445) so
this commit introduces a flag `-fpolymorhphic-specialisation` which
allows users to turn on this experimental optimisation if they are
willing to buy into things going very wrong.

Ticket #23469

(cherry picked from commit 9f01d14b5bc1c73828b2b061206c45b84353620e)

- - - - -
e5215256 by Mario Blažević at 2023-07-20T14:34:45-04:00
Fixed ticket #23571, TH.Ppr.pprLit hanging on large numeric literals

(cherry picked from commit 4af7eac2a00e86c29509c119aacc7511a9c7747d)

- - - - -
d33581c5 by sheaf at 2023-07-20T14:34:56-04:00
Reinstate untouchable variable error messages

This extra bit of information was accidentally being discarded after
a refactoring of the way we reported problems when unifying a type
variable with another type. This patch rectifies that.

(cherry picked from commit 2b55cb5f33666a71eaac7968c59e483860112e5c)

- - - - -
0c877166 by Matthew Pickering at 2023-07-20T14:35:33-04:00
driver: Fix -S with .cmm files

There was an oversight in the driver which assumed that you would always
produce a `.o` file when compiling a .cmm file.

Fixes #23610

(cherry picked from commit 76983a0dca64dfb7e94aea0c4f494921f8513b41)

- - - - -
30830523 by Andrew Lelechenko at 2023-07-20T14:35:40-04:00
Add since annotations for Data.Foldable1

(cherry picked from commit 054261dd319b505392458da7745e768847015887)

- - - - -
fd3fcfe5 by sheaf at 2023-07-20T14:35:50-04:00
tyThingLocalGREs: include all DataCons for RecFlds

The GREInfo for a record field should include the collection of all
the data constructors of the parent TyCon that have this record field.
This information was being incorrectly computed in the tyThingLocalGREs
function for a DataCon, as we were not taking into account other
DataCons with the same parent TyCon.

Fixes #23546

(cherry picked from commit 61b1932eb7d529263330dcab404909997610dd43)

- - - - -
90846d43 by Sylvain Henry at 2023-07-20T14:35:56-04:00
JS: support -this-unit-id for programs in the linker (#23613)

(cherry picked from commit 550af50559931b7681fe24fddafd6e3467de077c)

- - - - -
b9c2aa3f by sheaf at 2023-07-20T14:36:44-04:00
Valid hole fits: don't panic on a Given

The function GHC.Tc.Errors.validHoleFits would end up panicking when
encountering a Given constraint. To fix this, it suffices to filter out
the Givens before continuing.

Fixes #22684

(cherry picked from commit 630e302617a4a3e00d86d0650cb86fa9e6913e44)

- - - - -
e5ed9c58 by Matthew Pickering at 2023-07-20T14:54:03-04:00
Use deb10 for i386 bindists

deb9 is now EOL so it's time to upgrade the i386 bindist to use deb10

Fixes #23585

(cherry picked from commit c39f279b7a23e7c3259dff9ad660b7f417d4fdcd)

- - - - -
ba2f9f34 by Krzysztof Gogolewski at 2023-07-20T14:54:23-04:00
Fix #23567, a specializer bug

Found by Simon in https://gitlab.haskell.org/ghc/ghc/-/issues/23567#note_507834

The testcase isn't ideal because it doesn't detect the bug in master,
unless doNotUnbox is removed as in
https://gitlab.haskell.org/ghc/ghc/-/issues/23567#note_507692.
But I have confirmed that with that modification, it fails before
and passes afterwards.

(cherry picked from commit bf9b9de0685e23c191722dfdb78d28b44f1cba05)

- - - - -
e0fbb1d4 by Vladislav Zavialov at 2023-07-20T14:54:29-04:00
List and Tuple<n>: update documentation

Add the missing changelog.md entries and @since-annotations.

(cherry picked from commit 7f13acbf187d7a0810f42705b95d593b1e2e5611)

- - - - -
27df38c2 by Sylvain Henry at 2023-07-20T15:04:52-04:00
JS: better implementation for plusWord64 (#23597)

(cherry picked from commit b55a8ea70424032c19ef85ef95c5eee8b50d55c3)

- - - - -
8f77107f by Krzysztof Gogolewski at 2023-07-20T15:06:18-04:00
Use extended literals when deriving Show

This implements GHC proposal
https://github.com/ghc-proposals/ghc-proposals/pull/596

Also add support for Int64# and Word64#; see testcase ShowPrim.

(cherry picked from commit 787bae96f77562e603b6e9ebb86139cc5d120b8d)

- - - - -
6e044db1 by Ryan Scott at 2023-07-20T15:24:43-04:00
Fix typechecking of promoted empty lists

The `'[]` case in `tc_infer_hs_type` is smart enough to handle arity-0 uses of
`'[]` (see the newly added `T23543` test case for an example), but the `'[]`
case in `tc_hs_type` was not. We fix this by changing the `tc_hs_type` case to
invoke `tc_infer_hs_type`, as prescribed in `Note [Future-proofing the type
checker]`.

There are some benign changes to test cases' expected output due to the new
code path using `forall a. [a]` as the kind of `'[]` rather than `[k]`.

Fixes #23543.

(cherry picked from commit c335fb7c44a8447b3e73e7f18d9d0dcb18cea8dd)

- - - - -
3d913cbe by sheaf at 2023-07-20T15:29:21-04:00
Fix deprecation of record fields

Commit 3f374399 inadvertently broke the deprecation/warning mechanism
for record fields due to its introduction of record field namespaces.

This patch ensures that, when a top-level deprecation is applied to
an identifier, it applies to all the record fields as well.
This is achieved by refactoring GHC.Rename.Env.lookupLocalTcNames, and
GHC.Rename.Env.lookupBindGroupOcc, to not look up a fixed number of
NameSpaces but to look up all NameSpaces and filter out the irrelevant
ones.

(cherry picked from commit 6143838a5985ee3af1e8c2af4166d35bb4de12d8)

- - - - -
45ab7560 by sheaf at 2023-07-20T15:29:24-04:00
Introduce greInfo, greParent

These are simple helper functions that wrap the internal
field names gre_info, gre_par.

(cherry picked from commit 6fd8f566c691b936b0b65e21700b224312611f4d)

- - - - -
c5533204 by sheaf at 2023-07-20T15:29:25-04:00
Refactor lookupGRE_... functions

This commit consolidates all the logic for looking up something in
the Global Reader Environment into the single function lookupGRE.
This allows us to declaratively specify all the different modes of
looking up in the GlobalRdrEnv, and avoids manually passing around
filtering functions as was the case in e.g. the function
GHC.Rename.Env.lookupSubBndrOcc_helper.

-------------------------
Metric Decrease:
    T8095
-------------------------
-------------------------
Metric Increase:
    T8095
-------------------------

(cherry picked from commit 7f0a86edeeda674f27c80e81be592d325447a897)

- - - - -
ff06b820 by sheaf at 2023-07-20T15:30:07-04:00
rnImports: var shouldn't import NoFldSelectors

In an import declaration such as

  import M ( var )

the import of the variable "var" should **not** bring into scope record
fields named "var" which are defined with NoFieldSelectors.
Doing so can cause spurious "unused import" warnings, as reported in
ticket #23557.

Fixes #23557

(cherry picked from commit c7bbad9a0aab2d7b4336ae411e13d9450d8483a7)

- - - - -
2734d370 by sheaf at 2023-07-20T15:34:20-04:00
Suggest similar names in imports

This commit adds similar name suggestions when importing. For example

  module A where { spelling = 'o' }
  module B where { import B ( speling ) }

will give rise to the error message:

  Module ‘A’ does not export ‘speling’.
  Suggested fix: Perhaps use ‘spelling’

This also provides hints when users try to import record fields defined
with NoFieldSelectors.

(cherry picked from commit 1af2e7735283251c686bdb1154afab6df5e45053)

- - - - -
84e6df59 by sheaf at 2023-07-20T15:34:20-04:00
Prioritise Parent when looking up class sub-binder

When we look up children GlobalRdrElts of a given Parent, we sometimes
would rather prioritise those GlobalRdrElts which have the right Parent,
and sometimes prioritise those that have the right NameSpace:

  - in export lists, we should prioritise NameSpace
  - for class/instance binders, we should prioritise Parent

See Note [childGREPriority] in GHC.Types.Name.Reader.

fixes #23664

(cherry picked from commit 3bd4d5b5482fd44914f22492877b3f3ca27299e0)

- - - - -
fa084def by sheaf at 2023-07-20T15:34:33-04:00
base: add COMPLETE pragma to BufferCodec PatSyn

This implements CLC proposal #178, rectifying an oversight in the
implementation of CLC proposal #134 which could lead to spurious
pattern match warnings.

https://github.com/haskell/core-libraries-committee/issues/178
https://github.com/haskell/core-libraries-committee/issues/134
(cherry picked from commit 22565506515313c928d13a43b2946e0106110353)

- - - - -
f9f4714e by sheaf at 2023-07-20T15:34:34-04:00
exactprint: silence incomplete record update warnings

(cherry picked from commit 860f6269bc016e11400b7e3176a5ea6dfe291a46)

- - - - -
071dd8ca by sheaf at 2023-07-20T15:35:45-04:00
Re-instate -Wincomplete-record-updates

Commit e74fc066 refactored the handling of record updates to use
the HsExpanded mechanism. This meant that the pattern matching inherent
to a record update was considered to be "generated code", and thus we
stopped emitting "incomplete record update" warnings entirely.

This commit changes the "data Origin = Source | Generated" datatype,
adding a field to the Generated constructor to indicate whether we
still want to perform pattern-match checking. We also have to do a bit
of plumbing with HsCase, to record that the HsCase arose from an
HsExpansion of a RecUpd, so that the error message continues to mention
record updates as opposed to a generic "incomplete pattern matches in case"
error.

Finally, this patch also changes the way we handle inaccessible code
warnings. Commit e74fc066 was also a regression in this regard, as we
were emitting "inaccessible code" warnings for case statements spuriously
generated when desugaring a record update (remember: the desugaring mechanism
happens before typechecking; it thus can't take into account e.g. GADT information
in order to decide which constructors to include in the RHS of the desugaring
of the record update).
We fix this by changing the mechanism through which we disable inaccessible
code warnings: we now check whether we are in generated code in
GHC.Tc.Utils.TcMType.newImplication in order to determine whether to
emit inaccessible code warnings.

Fixes #23520
Updates haddock submodule, to avoid incomplete record update warnings

(cherry picked from commit df706de378e3415a3972ddd14863f54fc7162dc7)

- - - - -
c7688443 by sheaf at 2023-07-20T15:35:55-04:00
Propagate long-distance information in do-notation

The preceding commit re-enabled pattern-match checking inside record
updates. This revealed that #21360 was in fact NOT fixed by e74fc066.

This commit makes sure we correctly propagate long-distance information
in do blocks, e.g. in

```haskell
data T = A { fld :: Int } | B

f :: T -> Maybe T
f r = do
  a at A{} <- Just r
  Just $ case a of { A _ -> A 9 }
```

we need to propagate the fact that "a" is headed by the constructor "A"
to see that the case expression "case a of { A _ -> A 9 }" cannot fail.

Fixes #21360

(cherry picked from commit 1d05971e24f6cb1120789d1e1ab4f086eebd504a)

- - - - -
ae88ed9a by sheaf at 2023-07-20T15:35:56-04:00
Skip PMC for boring patterns

Some patterns introduce no new information to the pattern-match
checker (such as plain variable or wildcard patterns). We can thus
skip doing any pattern-match checking on them when the sole purpose
for doing so was introducing new long-distance information.

See Note [Boring patterns] in GHC.Hs.Pat.

Doing this avoids regressing in performance now that we do additional
pattern-match checking inside do notation.

(cherry picked from commit bea0e323c09e9e4b841a37aacd6b67e87a85e7cb)

- - - - -
1f3d83b5 by Ben Gamari at 2023-07-21T13:00:51-04:00
gitlab-ci: Don't run nonmoving bootstrap release job

This was only intended for validation.

- - - - -
df2e5c24 by Ben Gamari at 2023-07-21T13:00:54-04:00
fetch-gitlab: Update job mapping

- - - - -
25179c81 by Ben Gamari at 2023-07-21T13:00:54-04:00
nofib: Bump submodule

- - - - -
e5615af4 by Ben Gamari at 2023-07-21T13:00:54-04:00
configure: Add trailing zero to version number

- - - - -
b0b88c24 by Sylvain Henry at 2023-07-21T13:09:52-04:00
JS: support levity-polymorphic datatypes (#22360,#22291)

- thread knowledge about levity into PrimRep instead of panicking
- JS: remove assumption that unlifted heap objects are rts objects (TVar#, etc.)

Doing this also fixes #22291 (test added).

There is a small performance hit (~1% more allocations).

Metric Increase:
    T18698a
    T18698b

(cherry picked from commit 8d6574bc68cbbcabbf7c0e5700571c4746127fb8)

- - - - -
e39e8fae by Arnaud Spiwack at 2023-07-21T13:10:17-04:00
Revert "Avoid desugaring non-recursive lets into recursive lets"

This (temporary) reverts commit 3e80c2b40213bebe302b1bd239af48b33f1b30ef.

Fixes #23550

(cherry picked from commit 522bd584f71ddeda21efdf0917606ce3d81ec6cc)

- - - - -
f0b9bfa1 by Torsten Schmits at 2023-07-21T13:10:24-04:00
Relax defaulting of RuntimeRep/Levity when printing

Fixes #16468

MR: !10702

Only default RuntimeRep to LiftedRep when variables are bound by the toplevel forall

(cherry picked from commit 459dee1b671958bcd5857a676afaf92f944a0af4)

- - - - -
3cac14d2 by Ben Gamari at 2023-07-21T13:11:43-04:00
nativeGen: Explicitly set flags of text sections on Windows

The binutils documentation (for COFF) claims,

> If no flags are specified, the default flags depend upon the section
> name. If the section name is not recognized, the default will be for the
> section to be loaded and writable.

We previously assumed that this would do the right thing for split
sections (e.g. a section named `.text$foo` would be correctly inferred
to be a text section). However, we have observed that this is not the
case (at least under the clang toolchain used on Windows): when
split-sections is enabled, text sections are treated by the assembler as
data (matching the "default" behavior specified by the documentation).

Avoid this by setting section flags explicitly. This should fix split
sections on Windows.

Fixes #22834.

(cherry picked from commit 3ece9856d157c85511d59f9f862ab351bbd9b38b)

- - - - -
f9ef5a44 by Ben Gamari at 2023-07-21T13:11:47-04:00
nativeGen: Set explicit section types on all platforms

(cherry picked from commit db7f7240b53c01447e44d2790ee37eacaabfbcf3)

- - - - -
a3756043 by Ben Gamari at 2023-07-24T11:37:25-04:00
gitlab-ci: Mark linker_unload_native as broken on Alpine

Due to lack of dlinfo() support, which is necessary for sound unloading
support.

- - - - -
877ec97b by Ben Gamari at 2023-07-25T12:57:55-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.

- - - - -
62cb821e by Ben Gamari at 2023-07-27T13:43:13-04:00
ghc-prim: Bump version to 0.11

- - - - -
58bb39c7 by Matthew Pickering at 2023-08-03T15:11:04-04:00
Fix deprecation warning when deprecated identifier is from another module

A stray 'Just' was being printed in the deprecation message.

Fixes #23573

(cherry picked from commit 2be99b7e81e2ae5ef81fef21b0a55cfe77f917a3)

- - - - -
d8294be5 by Andrew Lelechenko at 2023-08-08T09:24:25-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

(cherry picked from commit e9a0fa3f6db3ce995c6d0d30798cee78cbd7e90d)

- - - - -
db6f4809 by sheaf at 2023-08-08T09:27:14-04:00
RTS: declare setKeepCAFs symbol

Commit 08ba8720 failed to declare the dependency of keepCAFsForGHCi on
the symbol setKeepCAFs in the RTS, which led to undefined symbol errors
on Windows, as exhibited by the testcase frontend001.

Thanks to Moritz Angermann and Ryan Scott for the diagnosis and fix.

Fixes #22961

(cherry picked from commit 42b05e9b5e68e9e0f5c92ef0699fd4c1addc10f7)

- - - - -
1f64892e by sheaf at 2023-08-08T09:27:15-04:00
Mark plugins-external as broken on Windows

This test is broken on Windows, so we explicitly mark it as such now
that we stop skipping plugin tests on Windows.

(cherry picked from commit a72015d651a0d4386270e1983f32ed15ae854654)

- - - - -
08d3eeb9 by sheaf at 2023-08-08T09:27:16-04:00
Stop marking plugin tests as fragile on Windows

Now that b2bb3e62 has landed we are in a better situation with
regards to plugins on Windows, allowing us to unmark many plugin tests
as fragile.

Fixes #16405

(cherry picked from commit cb9c93d7b8db816ed4271b3703b863c1cfbbcc45)

- - - - -
9ea90926 by Andreas Klebinger at 2023-08-08T09:27:23-04:00
Arm: Fix lack of zero-extension for 8/16 bit add/sub with immediate.

For 32/64bit we can avoid explicit extension/zeroing as the instructions
set the full width of the registers.

When doing 16/8bit computation we have to put a bit more work in so we
can't use the fast path.

Fixes #23749 for 9.4.

(cherry picked from commit 0bb44f695bd008f03644e3d306566c50c5bd528c)

- - - - -
14ed9727 by Luite Stegeman at 2023-08-08T11:22:56-04: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

(cherry picked from commit aa07402e9ba5a302ada9b3cecebf7fdc00aa31dd)

- - - - -
2c66f7b0 by Aaron Allen at 2023-08-08T11:22:56-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

(cherry picked from commit a1899d8f446db6b8c59576b8e3ef1910823592b1)

- - - - -
4c9999d5 by Sven Tennie at 2023-08-08T12:57:33-04:00
Add test for %mulmayoflo primop

The test expects a perfect implementation with no false positives.

(cherry picked from commit a36f9dc94823c75fb789710bc67b92e87a630440)

- - - - -
8ee88300 by Sven Tennie at 2023-08-08T12:58:43-04:00
x86 Codegen: Implement MO_S_MulMayOflo for W16

- - - - -
a212b3d4 by Sven Tennie at 2023-08-08T12:58:43-04:00
x86 CodeGen: MO_S_MulMayOflo better error message for rep > W64

It's useful to see which value made the pattern match fail. (If it ever
occurs.)

- - - - -
a289717e by Sven Tennie at 2023-08-08T12:58:43-04:00
x86 CodeGen: Implement MO_S_MulMayOflo for W8

This case wasn't handled before. But, the test-primops test suite showed
that it actually might appear.

- - - - -
3b6303cf by Ben Gamari at 2023-08-08T12:58:47-04:00
testsuite: Mark MulMayOflo_full as broken rather than skipping

To ensure that we don't accidentally fix it.

See #23742.

(cherry picked from commit fd7ce39c70f8922e26b8be8a5fc4d6797987f66f)

- - - - -
5c8dec81 by Ben Gamari at 2023-08-08T12:58:47-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.

(cherry picked from commit 824092f28f52d32b6ea3cd26e1e576524ee24969)

- - - - -
59e2c969 by sheaf at 2023-08-08T12:58:47-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

(cherry picked from commit 41bf2c09f17aa00bf4dd13332c6d07adf21af4f8)

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

(cherry picked from commit 1b15dbc4e6ee5af87cc8b36c9a50287ae5d16b03)

- - - - -
bdf2adf7 by Sylvain Henry at 2023-08-08T12:58:47-04:00
JS: implement getMonotonicTime (fix #23687)

(cherry picked from commit 33598ecb624867dce36a71b265c054b689ed9701)

- - - - -
60f54b39 by Matthew Pickering at 2023-08-08T12:58:47-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

(cherry picked from commit 822ef66b54bd48df7c01fcafb99b7694952cae28)

- - - - -
347ae2d6 by Matthew Craven at 2023-08-08T12:58:47-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.

(cherry picked from commit 32cae784b7bfcb6562a9ad041e7608dbcf0f5d72)

- - - - -
e050d1f4 by Jens Petersen at 2023-08-08T12:58:47-04:00
user_guide/flags.py: python-3.12 no longer includes distutils

packaging.version seems able to handle this fine

(cherry picked from commit 026991d7fcf9e3ce013081ab6d1e3d2200b694bb)

- - - - -
240b1a75 by Matthew Pickering at 2023-08-08T12:58:47-04:00
simplifier: Correct InScopeSet in rule matching

The in-scope set passedto the `exprIsLambda_maybe` call lacked all the
in-scope binders. @simonpj suggests this fix where we augment the
in-scope set with the free variables of expression which fixes this
failure mode in quite a direct way.

Fixes #23630

(cherry picked from commit 4f5538a8e2a8b9bc490bcd098fa38f6f7e9f4d73)

- - - - -
5f60f945 by Ilias Tsitsimpis at 2023-08-08T12:58:47-04:00
ghc-prim: Link against libatomic

Commit b4d39adbb58 made 'hs_cmpxchg64()' available to all architectures.
Unfortunately this made GHC to fail to build on armel, since armel needs
libatomic to support atomic operations on 64-bit word sizes.

Configure libraries/ghc-prim/ghc-prim.cabal to link against libatomic,
the same way as we do in rts/rts.cabal.

(cherry picked from commit fc186b0c0ac56d6ff6225d3f6607be37770fcb52)

- - - - -
fc09110b by Matthew Pickering at 2023-08-08T12:58:47-04:00
Allow users to override non-essential haddock options in a Flavour

We now supply the non-essential options to haddock using the `extraArgs`
field, which can be specified in a Flavour so that if an advanced user
wants to change how documentation is generated then they can use
something other than the `defaultHaddockExtraArgs`.

This does have the potential to regress some packaging if a user has
overridden `extraArgs` themselves, because now they also need to add
the haddock options to extraArgs. This can easily be done by appending
`defaultHaddockExtraArgs` to their extraArgs invocation but someone
might not notice this behaviour has changed.

In any case, I think passing the non-essential options in this manner is
the right thing to do and matches what we do for the "ghc" builder,
which by default doesn't pass any optmisation levels, and would likewise
be very bad if someone didn't pass suitable `-O` levels for builds.

Fixes #23625

(cherry picked from commit e4350b41b54c604e222fe3b0c4edb80beee2c0b3)

- - - - -
d3e3e708 by Ben Gamari at 2023-08-08T17:46:00-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.

(cherry picked from commit 01961be37a0dbc3c808b06fa8c085e2faa334efe)

- - - - -
425ee511 by sheaf at 2023-08-08T20:58:24-04:00
Finish migration of diagnostics in GHC.Tc.Validity

This patch finishes migrating the error messages in GHC.Tc.Validity
to use the new diagnostic infrastructure.

It also refactors the error message datatypes for class and family
instances, to common them up under a single datatype as much as possible.

(cherry picked from commit 7e05f6df938c62d265212abe97ac80c56154ba72)

- - - - -
3804c10c by Ben Gamari at 2023-08-08T20:59:02-04:00
codeGen: Ensure that TSAN is aware of writeArray# write barriers

By using a proper release store instead of a fence.

(cherry picked from commit aca20a5d4fde1c6429c887624bb95c9b54b7af73)
(cherry picked from commit 92b1ea6ec8adefee43ec34a36142253112962484)

- - - - -
25237710 by Ben Gamari at 2023-08-08T20:59:05-04:00
codeGen: Ensure that array reads have necessary barriers

This was the cause of #23541.

(cherry picked from commit 453c0531f2edf49b75c73bc45944600d8d7bf767)
(cherry picked from commit bab517675d2ee8542349f5372ffb3dbd61d4eae1)

- - - - -
8f6bb46e by Ben Gamari at 2023-08-08T21:15:24-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

(cherry picked from commit 5f5859069cad98a6239e7845c645542c9608aa3d)

- - - - -
291963af by Ben Gamari at 2023-08-09T09:01:45-04:00
users_guide: Restore compatibility with pre-packaging Python

The `packaging` package is not available in Ubuntu 18.04 or Debian 9.
Fall back to distutils in this case to avoid incurring an extra
dependency.

- - - - -
9e4c9647 by Ben Gamari at 2023-08-22T14:17:51-04:00
Bump Cabal submodule

Back to 3.10 as we will be shipping a minor release of Cabal 3.10 with
GHC 9.8.

- - - - -
4aeff0d3 by Ben Gamari at 2023-08-22T14:17:51-04:00
Bump haddock submodule

- - - - -
bb87c1e7 by Matthew Craven at 2023-08-22T14:17:51-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.

(cherry picked from commit bf885d7a1a27e7b1cc34335a1e16d699fe084b47)

- - - - -
03bbb5df by Ben Gamari at 2023-08-22T14:17:51-04:00
relnotes: Note text breakage

See #23758.

- - - - -
a380917e by Ben Gamari at 2023-08-22T14:17:51-04:00
Revert "users_guide: Restore compatibility with pre-packaging Python"

This reverts commit 291963af49a12a05c40d9ed6fd000cba8b15595b.

- - - - -
154dbdfc by Ben Gamari at 2023-08-22T14:17:51-04:00
users-guide: Support both distutils and packaging

As noted in #23818, some old distributions (e.g. Debian 9) only include
`distutils` while newer distributions only include `packaging`.

Fixes #23818.

(cherry picked from commit d814bda97994df01139c2a9bcde915dc86ef2927)

- - - - -
b4f85f6e by Ben Gamari at 2023-08-22T14:17:51-04:00
users-guide: Ensure extlinks is compatible with Sphinx <4

The semantics of the `extlinks` attribute annoyingly changed in Sphinx
4. Reflect this in our configuration. See #22690.

Fixes #23807.

(cherry picked from commit 1726db3f39f1c41b92b1bdf45e9dc054b401e782)

- - - - -
a3623053 by Sylvain Henry at 2023-08-22T14:17:51-04:00
JS: implement openat(AT_FDCWD...) (#23697)

Use `openSync` to implement `openat(AT_FDCWD...)`.

(cherry picked from commit e2b381154c0f89a4ee23190e2e7d7cae105587e6)

- - - - -
01353b12 by sheaf at 2023-08-22T14:17:51-04:00
Use unsatisfiable for missing methods w/ defaults

When a class instance has an Unsatisfiable constraint in its context
and the user has not explicitly provided an implementation of a method,
we now always provide a RHS of the form `unsatisfiable @msg`, even
if the method has a default definition available. This ensures that,
when deferring type errors, users get the appropriate error message
instead of a possible runtime loop, if class default methods were
defined recursively.

Fixes #23816

(cherry picked from commit a975c6634b0d202b21e0e719efb9900e44f85392)

- - - - -
e5e5e3ed by Gergő Érdi at 2023-08-22T14:17:51-04:00
If a defaulting plugin made progress, re-zonk wanteds before built-in defaulting

Fixes #23821.

(cherry picked from commit a6828173b90dbd276be593c1690aa34317c13c72)

- - - - -
20d3ed02 by Matthew Pickering at 2023-08-22T14:17:51-04:00
packaging: Build manpage in separate directory to other documentation

We were installing two copies of the manpage:

* One useless one in the `share/doc` folder, because we copy the doc/
  folder into share/
* The one we deliberately installed into `share/man` etc

The solution is to build the manpage into the `manpage` directory when
building the bindist, and then just install it separately.

Fixes #23707

(cherry picked from commit 026f040ad0297cd1b735307656b8f5cf33d1e71e)

- - - - -
738c7935 by Ben Gamari at 2023-08-22T14:17:51-04:00
hadrian: Always canonicalize topDirectory

Hadrian's `topDirectory` is intended to provide an absolute path to the
root of the GHC tree. However, if the tree is reached via a symlink this

One question here is whether the `canonicalizePath` call is expensive
enough to warrant caching. In a quick microbenchmark I observed that
`canonicalizePath "."` takes around 10us per call; this seems
sufficiently low not to worry.

Alternatively, another approach here would have been to rather move the
canonicalization into `m4/fp_find_root.m4`. This would have avoided
repeated canonicalization but sadly path canonicalization is a hard
problem in POSIX shell.

Addresses #22451.

(cherry picked from commit 5efa9ca545d8d33b9be4fc0ba91af1db38f19276)

- - - - -
f3e2a69a by Gergő Érdi at 2023-08-22T14:17:51-04:00
Add flag to `-f{no-}specialise-incoherents` to enable/disable specialisation of incoherent instances

Fixes #23287

(cherry picked from commit 481f4a46a4efccff7242afcdda42c8df6325117f)

- - - - -
cfb98b12 by Matthew Pickering at 2023-08-24T14:04:24-04:00
ghcup-metadata: Fix date modifier (M = minutes, m = month)

Fixes #23552

(cherry picked from commit 43b66a132ad0e6b14e191f27c2599832850e05f2)

- - - - -
51479a69 by Alan Zimmerman at 2023-08-24T16:51:56-04:00
EPA: Keep track of "in" token for WarningTxt category

A warning can now be written with a category, e.g.

    {-# WARNInG in "x-c" e "d" #-}

Keep track of the location of the 'in' keyword and string, as well as
the original SourceText of the label, in case it uses character escapes.

(cherry picked from commit 818f8aec7c9a6e037c264f1e2cce16960da8fa24)

- - - - -
249aa819 by Ben Gamari at 2023-08-24T16:51:56-04:00
Bump text submodule to 2.1.0-pre

- - - - -
364142c3 by sheaf at 2023-09-01T13:04:17+02:00
Bump Haddock to fix #23616

This commit updates the Haddock submodule to include
the fix to #23616.

- - - - -
8291f29e by Ben Gamari at 2023-09-13T18:02:11-04:00
rel-notes: Mention template variable matching proposal

- - - - -
eee6be40 by Ben Gamari at 2023-09-13T18:02:11-04:00
base: Advertise linear time of readFloat

As noted in #23538, `readFloat` has runtime that scales nonlinearly in
the size of its input. Consequently, its use on untrusted input can
be exploited as a denial-of-service vector. Point this out and suggest
use of `read` instead.

See #23538.

- - - - -
ae38fa41 by Krzysztof Gogolewski at 2023-09-13T18:04:04-04:00
Fix MultiWayIf linearity checking (#23814)

Co-authored-by: Thomas BAGREL <thomas.bagrel at tweag.io>
(cherry picked from commit edd8bc43566b3f002758e5d08c399b6f4c3d7443)

- - - - -
89f6bc6d by Ben Gamari at 2023-09-13T18:05:35-04:00
base: Don't use Data.ByteString.Internals.memcpy

This function is now deprecated from `bytestring`. Use
`Foreign.Marshal.Utils.copyBytes` instead.

Fixes #23880.

(cherry picked from commit 6ccd9d657b33bc6237d8e046ca3b07c803645130)

- - - - -
da5121f6 by Alexander Esgen at 2023-09-13T18:05:59-04:00
users-guide: remove note about fatal Haddock parse failures

(cherry picked from commit a05cdaf018688491625066c0041a4686301d4bc2)

- - - - -
5559e59e by Ben Gamari at 2023-09-13T18:36:33-04:00
Introduce GHC.Rename.Utils.delLocalNames

- - - - -
00dcc7d9 by Ben Gamari at 2023-09-13T18:36:33-04:00
Introduce GHC.Types.Name.Reader.minusLocalRdrEnvList

- - - - -
5e2afb86 by sheaf at 2023-09-14T18:19:39-04:00
Remove ScopedTypeVariables => TypeAbstractions

This commit implements [amendment 604](https://github.com/ghc-proposals/ghc-proposals/pull/604/)
to [GHC proposal 448](https://github.com/ghc-proposals/ghc-proposals/pull/448)
by removing the implication of language extensions

  ScopedTypeVariables => TypeAbstractions

To limit breakage, we now allow type arguments in constructor patterns
when both ScopedTypeVariables and TypeApplications are enabled, but
we emit a warning notifying the user that this is deprecated behaviour
that will go away starting in GHC 9.12.

Fixes #23776

(cherry picked from commit 9eecdf33864ddfaa4a6489227ea29a16f7ffdd44)

- - - - -
7607fd7d by sheaf at 2023-09-14T23:26:21-04:00
.stderr: ScopedTypeVariables =/> TypeAbstractions

This commit accepts testsuite changes for the changes in the previous
commit, which mean that TypeAbstractions is no longer implied by
ScopedTypeVariables.

(cherry picked from commit fadd5b4dcf6fc05e8e7af6716a39f331495e011a)

- - - - -
6f6e605c by sheaf at 2023-09-14T23:26:21-04:00
Export setInertSet from GHC.Tc.Solver.Monad

We used to export getTcSInerts and setTcSInerts from GHC.Tc.Solver.Monad.
These got renamed to getInertSet/setInertSet in e1590ddc. That commit also removed
the export of setInertSet, but that function is useful for the GHC API.

(cherry picked from commit e542d590be63cf2611a9615f962a52ba974f6e24)

- - - - -
22e6a49b by Ben Gamari at 2023-09-14T23:26:21-04:00
rts: Fix invalid symbol type

I suspect this code is dead since we haven't observed this failing
despite the obviously incorrect macro name.

(cherry picked from commit 9861f787a8323d03311e30851b10fdf100717afb)

- - - - -
c3ddfa43 by Ben Gamari at 2023-09-14T23:26:21-04:00
testsuite: Add simple test exercising C11 atomics in GHCi

See #22012.

(cherry picked from commit 03ed6a9a634fd6c3ef35e9c5428b4a911e3f0add)

- - - - -
f60efaaf by Ben Gamari at 2023-09-14T23:26:21-04:00
rts/RtsSymbols: Add AArch64 outline atomic operations

Fixes #22012 by adding the symbols described in
https://github.com/llvm/llvm-project/blob/main/llvm/docs/Atomics.rst#libcalls-atomic.

Ultimately this would be better addressed by #22011, but this is a first
step in the right direction and fixes the immediate symptom.

Note that we dropped the `__arch64_cas16` operations as these provided
by all platforms's compilers. Also, we don't link directly against the
libgcc/compiler-rt definitions but rather provide our own wrappers to
work around broken toolchains (e.g. https://bugs.gentoo.org/868018).

Generated via https://gitlab.haskell.org/ghc/ghc/-/snippets/5733.

(cherry picked from commit 1aa5733a4480420fdc146322d86dd143321a3da6)

- - - - -
71a24afa by David Binder at 2023-09-14T23:26:21-04:00
Fix example in GHC user guide in SafeHaskell section

The example given in the SafeHaskell section uses an implementation of
Monad which no longer works. This MR removes the non-canonical return
instance and adds the necessary instances of Functor and Applicative.

(cherry picked from commit 5a2fe35a84cbcedc929f313e34c45d6f02d81607)

- - - - -
543bbe06 by Alan Zimmerman at 2023-09-14T23:26:21-04:00
EPA: Incorrect locations for UserTyVar with '@'

In T13343.hs, the location for the @ is not within the span of the
surrounding UserTyVar.

  type Bad @v = (forall (v1 :: RuntimeRep) (a1 :: TYPE v). a1) :: TYPE v

Widen it so it is captured.

Closes #23887

(cherry picked from commit b34f85865df279a7384dcccb767277d8265b375e)

- - - - -
b21be920 by Krzysztof Gogolewski at 2023-09-14T23:26:21-04:00
Fix wrong role in mkSelCo_maybe

In the Lint failure in #23938, we start with a coercion Refl :: T a ~R T a,
and call mkSelCo (SelTyCon 1 nominal) Refl.
The function incorrectly returned Refl :: a ~R a. The returned role
should be nominal, according to the SelCo rule:

      co : (T s1..sn) ~r0 (T t1..tn)
      r = tyConRole tc r0 i
      ----------------------------------
      SelCo (SelTyCon i r) : si ~r ti

In this test case, r is nominal while r0 is representational.

(cherry picked from commit e0aa8c6e3a8b6004eca9349e5b705b8a767050aa)

- - - - -
a4a750a2 by Gergő Érdi at 2023-09-14T23:26:21-04:00
If we have multiple defaulting plugins, then we should zonk in between them

after any defaulting has taken place, to avoid a defaulting plugin seeing
a metavariable that has already been filled.

Fixes #23821.

(cherry picked from commit 1d92f2dff6d1a170a44488d73cef81292591d120)

- - - - -
2e1d96cf by Gergő Érdi at 2023-09-14T23:26:21-04:00
Improvements to the documentation of defaulting plugins

Based on @simonpj's draft and comments in !11117

(cherry picked from commit eaee4d296a0782c1acfde610ed3f0a7c7668c06c)

- - - - -
773d45ad by Krzysztof Gogolewski at 2023-09-14T23:26:21-04:00
Valid hole fits: don't suggest unsafeCoerce (#17940)

(cherry picked from commit a0ccef7a44def216da92a0436249789c363a6f91)

- - - - -
39d5cacc by Matthew Pickering at 2023-09-14T23:26:21-04:00
darwin: Bump MAXOSX_DEPLOYMENT_TARGET to 10.13

This bumps the minumum supported version to 10.13 (High Sierra) which is
6 years old at this point.

Fixes #22938

(cherry picked from commit 261b6747d4dada6ccdfb409513417489a495938c)

- - - - -
beeb794f by Matthew Craven at 2023-09-14T23:26:21-04:00
Unarise: Split Rubbish literals in function args

Fixes #23914.  Also adds a check to STG lint that
these args are properly unary or nullary after unarisation

(cherry picked from commit da30f0beb9e1820500382da02ffce96da959fa84)

- - - - -
271cc0ad by Josh Meredith at 2023-09-15T08:28:01-04:00
JS: Implement missing C functions `rename`, `realpath`, and `getcwd` (#23806)

(cherry picked from commit d07080d260075f2c00ec9a3752dbeda4f67ce439)

- - - - -
683d68a0 by Matthew Pickering at 2023-09-15T08:28:01-04:00
Add -Winconsistent-flags warning

The warning fires when inconsistent command line flags are passed.

For example:

* -dynamic-too and -dynamic
* -dynamic-too on windows
* -O and --interactive
* etc

This is on by default and allows users to control whether the warning is
displayed and whether it should be an error or not.

Fixes #22572

(cherry picked from commit 21a906c28da497c2b8390de75270357a7f80e5a7)

- - - - -
8e6d6926 by Finley McIlwaine at 2023-09-15T08:28:01-04:00
Fix numa auto configure

(cherry picked from commit 9217950baf0665c9ec71bdd5aa59710de6d8b31d)

- - - - -
802bc4d8 by Pierre Le Marre at 2023-09-18T10:58:25+02:00
Update to Unicode 15.1.0

See: https://www.unicode.org/versions/Unicode15.1.0/

- - - - -
bafa6114 by Ben Gamari at 2023-09-18T15:00:12-04:00
Bump text, unix, bytestring, parsec submodules

 * text-2.1
 * bytestring-0.12
 * others for bounds bumps

See #23758.

- - - - -
f19ad17b by Matthew Pickering at 2023-09-18T15:00:12-04:00
ci: Build debian12 and fedora38 bindists

This adds builds for the latest releases for fedora and debian

We build these bindists in nightly and release pipelines.

(cherry picked from commit 8f7d3041e05496ab5eb30fb2a69ff61d5e13008a)

- - - - -
6854139f by Jaro Reinders at 2023-09-18T15:00:12-04:00
Make STG rewriter produce updatable closures

(cherry picked from commit 3930d793901d72f42b1535c85b746f32d5f3b677)

- - - - -
db31f25c by Sylvain Henry at 2023-09-18T15:00:12-04:00
Add missing int64/word64-to-double/float rules (#23907)

CLC proposal: https://github.com/haskell/core-libraries-committee/issues/203

(cherry picked from commit 5126a2fef0385e206643b6af0543d10ff0c219d8)

- - - - -
13ccbdc3 by Alan Zimmerman at 2023-09-18T15:01:12-04:00
EPA: track unicode version for unrestrictedFunTyCon

Closes #23885

Updates haddock submodule

(cherry picked from commit f9d79a6cb78d3ee606249b5393ccaf100577d7dc)

- - - - -
0f5c21df by Alan Zimmerman at 2023-09-18T16:58:47-04:00
EPA: Incorrect span for LWarnDec GhcPs

The code (from T23465.hs)

    {-# WARNInG in "x-c" e "d" #-}
    e = e

gives an incorrect span for the LWarnDecl GhcPs

Closes #23892

It also fixes the Test23465/Test23464 mixup

(cherry picked from commit ede3df271a931f3845b5a63fb29654b46bce620d)

- - - - -
190ddace by Simon Peyton Jones at 2023-09-18T17:02:10-04:00
Use correct FunTyFlag in adjustJoinPointType

As the Lint error in #23952 showed, the function adjustJoinPointType
was failing to adjust the FunTyFlag when adjusting the type.

I don't think this caused the seg-fault reported in the ticket,
but it is definitely.  This patch fixes it.

It is tricky to come up a small test case; Krzysztof came up with
this one, but it only triggers a failure in GHC 9.6.

(cherry picked from commit 8e05c54a8cb7e5ad2d584fad5b5ad878dd5488b6)

- - - - -
850d7b1e by Ben Gamari at 2023-09-18T17:07:05-04:00
compiler: Fingerprint more code generation flags

Previously our recompilation check was quite inconsistent in its
coverage of non-optimisation code generation flags. Specifically, we
failed to account for most flags that would affect the behavior of
generated code in ways that might affect the result of a program's
execution (e.g. `-feager-blackholing`, `-fstrict-dicts`)

Closes #23369.

(cherry picked from commit d1c92bf3b4b0b07a6a652f8fc31fd7b62465bf71)

- - - - -
3de6e12c by Andreas Klebinger at 2023-09-18T17:11:51-04:00
Profiling: Properly escape characters when using `-pj`.

There are some ways in which unusual characters like quotes or others
can make it into cost centre names. So properly escape these.

Fixes #23924

(cherry picked from commit e5c00092a13f1a8cf53df2469e027012743cf59a)

- - - - -
ad2c402f by Simon Peyton Jones at 2023-09-18T17:12:37-04:00
Tiny refactor

canEtaReduceToArity was only called internally, and always with
two arguments equal to zero.  This patch just specialises the
function, and renames it to cantEtaReduceFun.

No change in behaviour.

(cherry picked from commit 236a134eab4c0a3aae30752a3d580c083f4e6b57)

- - - - -
f7c2c493 by Simon Peyton Jones at 2023-09-18T17:13:08-04:00
Fix eta reduction

Issue #23922 showed that GHC was bogusly eta-reducing a join point.
We should never eta-reduce (\x -> j x) to j, if j is a join point.

It is extremly difficult to trigger this bug.  It took me 45 mins of
trying to make a small tests case, here immortalised as T23922a.

(cherry picked from commit 6840012e5bb8f5c13e4bf7a4e4cbba0b06420aaa)

- - - - -
0ea59526 by Matthew Pickering at 2023-09-18T17:15:17-04:00
Add -Winconsistent-flags warning

The warning fires when inconsistent command line flags are passed.

For example:

* -dynamic-too and -dynamic
* -dynamic-too on windows
* -O and --interactive
* etc

This is on by default and allows users to control whether the warning is
displayed and whether it should be an error or not.

Fixes #22572

(cherry picked from commit 21a906c28da497c2b8390de75270357a7f80e5a7)

- - - - -
e4b5cdbd by Ben Gamari at 2023-09-19T08:53:27-04:00
gitlab-ci: Mark T22012 as broken on CentOS 7

Due to #23979.

- - - - -
68e111c8 by Ben Gamari at 2023-09-20T09:19:33-04:00
Bump process submodule to 1.6.18.0

- - - - -
2616921f by Ben Gamari at 2023-09-20T09:19:33-04:00
Bump hsc2hs submodule to 0.68.10

- - - - -
a591fde5 by Ben Gamari at 2023-09-20T09:19:33-04:00
Bump deepseq submodule to 1.5.0.0

- - - - -
f1b28bc7 by Ben Gamari at 2023-09-20T09:19:33-04:00
Bump parsec submodule to 3.1.17.0

- - - - -
e9c4eb47 by Ben Gamari at 2023-09-20T09:19:33-04:00
Bump nofib submodule

- - - - -
31a2dd67 by Ben Gamari at 2023-09-20T09:19:33-04:00
base: Update changelog

- - - - -
09233267 by Ben Gamari at 2023-09-20T09:19:33-04:00
template-haskell: Update changelog

- - - - -
f23eda82 by Ben Gamari at 2023-09-25T10:09:27-04:00
base: Fix changelog formatting

- - - - -
6a6fb5b5 by Ben Gamari at 2023-09-25T10:09:31-04:00
relnotes: Add a few notable points to the `base` section

- - - - -
bf9b8f09 by Ben Gamari at 2023-09-25T10:09:31-04:00
users-guide: Fix relnotes wibbles

Partially fixes #23988.

- - - - -
b34ccb2e by Ben Gamari at 2023-09-27T09:27:06-04:00
hadrian: Install LICENSE files in bindists

Fixes #23548.

- - - - -
63b6ef7d by Ben Gamari at 2023-09-27T09:29:57-04:00
Bump containers submodule

To 0.7.

- - - - -
3359e6b4 by Ben Gamari at 2023-09-27T11:59:45-04:00
Bump haddock submodule

Applying fix from #21984.

- - - - -
e23147f4 by Ben Gamari at 2023-09-27T11:59:45-04:00
users-guide: Refactor handling of :base-ref: et al.

(cherry picked from commit 8f82e99fda693326e55ae798e11f3896c875c966)

- - - - -
9c680ee5 by Ben Gamari at 2023-09-27T11:59:45-04:00
Bump nofib submodule

- - - - -
f7b3fcb3 by Ben Gamari at 2023-09-27T14:25:14-04:00
users-guide: Amend discussion of incoherent specialisation

Closing #23988.

- - - - -
5a602b33 by Ben Gamari at 2023-09-28T12:00:12-04:00
Bump containers submodule to 0.6.8

- - - - -
c83b7688 by Ben Gamari at 2023-09-28T14:27:50-04:00
Bump Cabal submodule to 3.10.2.0 final

- - - - -
86c1bdc4 by Ben Gamari at 2023-09-28T23:14:08-04:00
gitlab-ci: Allow release-hackage-lint to fail

Head.hackage is not robust in the presence of patches to boot packages,
as see in ghc/head.hackage#93. Allow it to fail for now.

- - - - -
2a51d113 by Ben Gamari at 2023-10-05T16:13:45-04:00
configure: Fix #21712 again

This is a bit of a shot in the dark to fix #24033, which appears to be
another instance of #21712. For some reason the ld-override logic
*still* appears to be active on Darwin targets (or at least one).
Consequently, on misconfigured systems we may choose a non-`ld64`
linker.

It's a bit unclear exactly what happened in #24033 but ultimately the
check added for #21712 was not quite right, checking for the
`ghc_host_os` (the value of which depends upon the bootstrap compiler)
instead of the target platform. Fix this.

Fixes #24033.

(cherry picked from commit f6b2751f58df5f4f83caa7a7ca56e66659d02b09)

- - - - -
8ed7ffb6 by Ben Gamari at 2023-10-05T16:13:45-04:00
rts/nonmoving: Fix on LLP64 platforms

Previously `NONMOVING_SEGMENT_MASK` and friends were defined with the `UL`
size suffix. However, this is wrong on LLP64 platforms like Windows,
where `long` is 32-bits.

Fixes #23003.
Fixes #24042.

(cherry picked from commit 8f6010b98f560200997a9d84a4e07bfd0ad6e496)

- - - - -
894b6027 by sheaf at 2023-10-05T16:13:45-04:00
Fix non-symbolic children lookup of fixity decl

The fix for #23664 did not correctly account for non-symbolic names
when looking up children of a given parent. This one-line fix changes
that.

Fixes #24037

(cherry picked from commit 8cee3fd7febdd97a9b4bcae7dddafe69b166149c)

- - - - -
9fb11d4a by Andreas Klebinger at 2023-10-05T16:15:25-04:00
Arm: Make ppr methods easier to use by not requiring NCGConfig

(cherry picked from commit b048bea095d48751e7c182f2837c4a31fcad8fd7)

- - - - -
b3ab756f by Andreas Klebinger at 2023-10-05T17:41:42-04:00
AArch64: Fix broken conditional jumps for offsets >= 1MB

Rewrite conditional jump instructions with offsets >= 1MB to use unconditional jumps
to avoid overflowing the immediate.

Fixes #23746

(cherry picked from commit 2adc050857a9c1b992040fbfd55fbe65b2851b19)

- - - - -
857967ae by Luite Stegeman at 2023-10-05T17:41:42-04:00
JS: correct file size and times

Programs produced by the JavaScript backend were returning
incorrect file sizes and modification times, causing cabal
related tests to fail.

This fixes the problem and adds an additional test that verifies
basic file information operations.

fixes #23980

(cherry picked from commit 11ecc37bc27ffa1cf31358e21e09e140befa940c)

- - - - -
81b1179d by Ben Gamari at 2023-10-05T17:41:42-04:00
system-cxx-std-lib: Add license and description

(cherry picked from commit 151187407b7b4bdda5b80bd7b8bdf96d05e278dd)

- - - - -
0fc4ce51 by Torsten Schmits at 2023-10-05T17:41:42-04:00
Add -fbreak-points to control breakpoint insertion

Rather than statically enabling breakpoints only for the interpreter,
this adds a new flag.

Tracking ticket: #23057

MR: !10466
(cherry picked from commit 083794b10dc27e9d97b62cc8b8eb4e1da162bf66)

- - - - -
e538003c by Alexis King at 2023-10-05T17:41:42-04:00
Don’t store the async exception masking state in CATCH frames

(cherry picked from commit 8b61dfd6dfc78bfa6bb9449dac9a336e5d668b5e)

- - - - -
46896580 by Ben Gamari at 2023-10-05T17:41:42-04:00
gitlab-ci: Drop libiserv from upload_ghc_libs

libiserv has been merged into the ghci package.

(cherry picked from commit b35fd2cd7a12f3354a7fd2301bdf610c5d435017)

- - - - -
34bd605d by Ben Gamari at 2023-10-05T17:41:42-04:00
Bump unix submodule to 2.8.3.0

- - - - -
47b202a9 by Ben Gamari at 2023-10-05T23:32:49-04:00
Bump stm submodule to 2.5.2.0

- - - - -
31d4e495 by Ben Gamari at 2023-10-05T23:32:49-04:00
Bump hpc submodule to 0.7.0.0

- - - - -
7c268df5 by Ben Gamari at 2023-10-05T23:32:54-04:00
Allow perf changes

These appear to be spurious.

Metric Decrease:
    MultiLayerModules
    T13701
    T14697

- - - - -
b238204e by Bryan Richter at 2023-10-06T04:53:24-04:00
Work around perf note fetch failure

Addresses #24055.

(cherry picked from commit 63afb701a1638d7bd32c34fb24a9fd3ff897b634)

- - - - -
bda60b3a by Ben Gamari at 2023-10-06T21:45:17-04:00
Bump haddock submodule to 2.30

- - - - -
b2d15ab1 by Ben Gamari at 2023-10-06T21:45:48-04:00
hadrian: Fix hpc parser path

- - - - -
443e870d by Ben Gamari at 2023-10-06T21:45:48-04:00
Release GHC 9.8.1

- - - - -
0cbb9e10 by Moritz Angermann at 2024-01-21T17:46:58-05:00
CgUtils.fixStgRegStmt respect register width

This change ensure that the reg + offset computation is always of the
same size.  Before this we could end up with a 64bit register, and then
add a 32bit offset (on 32bit platforms).  This not only would fail type
sanity checking, but also incorrectly truncate 64bit values into 32bit
values silently on 32bit architectures.

(cherry picked from commit dafc47091c9107dcf81e1e80a105f59211927c89)

- - - - -
da8d2a29 by Matthew Pickering at 2024-01-21T22:06:34-05:00
Add aarch64 alpine bindist

This is dynamically linked and makes creating statically linked
executables more straightforward.

Fixes #23482

(cherry picked from commit 51b57d6587b75020045c1a1edf9eb02990ca63cc)

- - - - -
53b308e9 by sheaf at 2024-01-21T22:06:34-05:00
Combine GREs when combining in mkImportOccEnv

In `GHC.Rename.Names.mkImportOccEnv`, we sometimes discard one import
item in favour of another, as explained in Note [Dealing with imports]
in `GHC.Rename.Names`. However, this can cause us to lose track of
important parent information.

Consider for example #24084:

  module M1 where { class C a where { type T a } }
  module M2 ( module M1 ) where { import M1 }
  module M3 where { import M2 ( C, T ); instance C () where T () = () }

When processing the import list of `M3`, we start off (for reasons that
are not relevant right now) with two `Avail`s attached to `T`, namely
`C(C, T)` and `T(T)`. We combine them in the `combine` function of
`mkImportOccEnv`; as described in Note [Dealing with imports] we discard
`C(C, T)` in favour of `T(T)`. However, in doing so, we **must not**
discard the information want that `C` is the parent of `T`. Indeed,
losing track of this information can cause errors when importing,
as we could get an error of the form

  ‘T’ is not a (visible) associated type of class ‘C’

We fix this by combining the two GREs for `T` using `plusGRE`.

Fixes #24084

(cherry picked from commit ec3c4488f456f6f9bdd28a09f0b1e87fd3782db9)

- - - - -
c4d1edb1 by Cheng Shao at 2024-01-21T22:06:34-05:00
testsuite: increase timeout of ghc-api tests for wasm32

ghc-api tests for wasm32 are more likely to timeout due to the large
wasm module sizes, especially when testing with wasm native tail
calls, given wasmtime's handling of tail call opcodes are suboptimal
at the moment. It makes sense to increase timeout specifically for
these tests on wasm32. This doesn't affect other targets, and for
wasm32 we don't increase timeout for all tests, so not to risk letting
major performance regressions slip through the testsuite.

(cherry picked from commit 07ab5cc10d4ce8db0c3b099d8bd34da66db51b9e)

- - - - -
a2d7130e by Simon Peyton Jones at 2024-01-21T22:06:34-05:00
Fix non-termination bug in equality solver

constraint left-to-right then right to left, forever.

Easily fixed.

(cherry picked from commit 21b76843e9b51cd27be32b8c595f29a784276229)

- - - - -
d9a34b85 by Cheng Shao at 2024-01-21T22:06:34-05:00
compiler: fix eager blackhole symbol in wasm32 NCG

(cherry picked from commit fe50eb3510ca730c4d2fc57778d380fdc493abd8)

- - - - -
a0631c4a by Cheng Shao at 2024-01-21T22:06:34-05:00
testsuite: fix optasm tests for wasm32

(cherry picked from commit af77114815ad9052261898c830171e49fbed5160)

- - - - -
186956a6 by Matthew Pickering at 2024-01-21T22:06:34-05:00
testsuite: Add wasm32 to testsuite arches with NCG

The compiler --info reports that wasm32 compilers have a NCG, so we
should agree with that here.

(cherry picked from commit 1b90735c99f1179328f6dd67dbcc81f964901a19)

- - - - -
2bb6c062 by Josh Meredith at 2024-01-21T22:06:34-05:00
JavaScript: support unicode code points > 2^16 in toJSString using String.fromCodePoint (#23628)

(cherry picked from commit 09a5c6cccf8f1b517bc01e8cc924e151d9cbae49)

- - - - -
7c419b07 by Josh Meredith at 2024-01-21T22:06:34-05:00
JavaScript: update MK_TUP macros to use current tuple constructors (#23659)

(cherry picked from commit b9d5bfe9e76e18c78dbcb67e1c5c33a15a54dcd0)

- - - - -
60f3a468 by Sylvain Henry at 2024-01-21T22:06:34-05:00
JS: testsuite: use req_c predicate instead of js_broken

(cherry picked from commit 41968fd699a285e1a1b43535fda28a61bd1202f1)

- - - - -
e110b68f by Sylvain Henry at 2024-01-21T22:06:34-05:00
JS: implement some file primitives (lstat,rmdir) (#22374)

- Implement lstat and rmdir.
- Implement base_c_s_is* functions (testing a file type)
- Enable passing tests

(cherry picked from commit 74a4dd2ec6e200b11a56b6f82907feb66e94c90b)

- - - - -
6c31021e by Andreas Klebinger at 2024-01-21T22:06:34-05:00
Fix FMA primops generating broken assembly on x86.

`genFMA3Code` assumed that we had to take extra precations to avoid overwriting
the result of `getNonClobberedReg`. One of these special cases caused a bug resulting
in broken assembly.

I believe we don't need to hadle these cases specially at all, which means this MR simply
deletes the special cases to fix the bug.

Fixes #24160

(cherry picked from commit fa576eb8a55db8e216eed3e7ea8807121b3496f5)

- - - - -
c52d657c by Zubin Duggal at 2024-01-21T22:06:34-05:00
driver: Don't lose track of nodes when we fail to resolve cycles

The nodes that take part in a cycle should include both hs-boot and hs files,
but when we fail to resolve a cycle, we were only counting the nodes from the
graph without boot files.

Fixes #24196

(cherry picked from commit 717c9b59ecfb919cba1b8cec6597d0c2fb3ef1a1)

- - - - -
6a78bcc1 by Sebastian Graf at 2024-01-30T17:14:16+05:30
Cpr: Turn an assertion into a check to deal with some dead code (#23862)

See the new `Note [Dead code may contain type confusions]`.

Fixes #23862.

(cherry picked from commit 57c391c463f26b7025df9b340ad98416cff1d2b2)

- - - - -
724102f6 by Zubin Duggal at 2024-01-30T17:14:16+05:30
hadrian: set -Wno-deprecations for directory and Win32

The filepath bump to 1.4.200.1 introduces a deprecation warning.

See https://gitlab.haskell.org/ghc/ghc/-/issues/24240
    https://github.com/haskell/filepath/pull/206

(cherry picked from commit 86f652dc9a649e59e643609c287a510a565f5408)

- - - - -
38cb7fb4 by Moritz Angermann at 2024-01-30T17:14:16+05:30
Drop hard Xcode dependency

XCODE_VERSION calls out to `xcodebuild`, which is only available
when having `Xcode` installed. The CommandLineTools are not
sufficient. To install Xcode, you must have an apple id to download
the Xcode.xip from apple.

We do not use xcodebuild anywhere in our build explicilty. At best
it appears to be a proxy for checking the linker or the compiler.
These should rather be done with
```
xcrun ld -version
```
or similar, and not by proxy through Xcode. The CLR should be
sufficient for building software on macOS.

(cherry picked from commit a3ee3b99e6889fd68da75c6ea7a14d101f71da56)

- - - - -
3ac10c2c by Sylvain Henry at 2024-01-30T17:14:16+05:30
Fix unusable units and module reexport interaction (#21097)

This commit fixes an issue with ModUnusable introduced in df0f148feae.

In mkUnusableModuleNameProvidersMap we traverse the list of unusable
units and generate ModUnusable origin for all the modules they contain:
exposed modules, hidden modules, and also re-exported modules. To do
this we have a two-level map:

  ModuleName -> Unit:ModuleName (aka Module) -> ModuleOrigin

So for each module name "M" in broken unit "u" we have:
  "M" -> u:M -> ModUnusable reason

However in the case of module reexports we were using the *target*
module as a key. E.g. if "u:M" is a reexport for "X" from unit "o":
   "M" -> o:X -> ModUnusable reason

Case 1: suppose a reexport without module renaming (u:M -> o:M) from
unusable unit u:
   "M" -> o:M -> ModUnusable reason

Here it's claiming that the import of M is unusable because a reexport
from u is unusable. But if unit o isn't unusable we could also have in
the map:
   "M" -> o:M -> ModOrigin ...

Issue: the Semigroup instance of ModuleOrigin doesn't handle the case
(ModUnusable <> ModOrigin)

Case 2: similarly we could have 2 unusable units reexporting the same module
without renaming, say (u:M -> o:M) and (v:M -> o:M) with u and v
unusable. It gives:

  "M" -> o:M -> ModUnusable ... (for u)
  "M" -> o:M -> ModUnusable ... (for v)

Issue: the Semigroup instance of ModuleOrigin doesn't handle the case
(ModUnusable <> ModUnusable).

This led to #21097, #16996, #11050.

To fix this, in this commit we make ModUnusable track whether the module
used as key is a reexport or not (for better error messages) and we use
the re-export module as key. E.g. if "u:M" is a reexport for "o:X" and u
is unusable, we now record:

    "M" -> u:M -> ModUnusable reason reexported=True

So now, we have two cases for a reexport u:M -> o:X:
   - u unusable: "M" -> u:M -> ModUnusable ... reexported=True
   - u usable:   "M" -> o:X -> ModOrigin   ... reexportedFrom=u:M

The second case is indexed with o:X because in this case the Semigroup
instance of ModOrigin is used to combine valid expositions of a module
(directly or via reexports).

Note that module lookup functions select usable modules first (those who
have a ModOrigin value), so it doesn't matter if we add new ModUnusable
entries in the map like this:

  "M" -> {
    u:M -> ModUnusable ... reexported=True
    o:M -> ModOrigin ...
  }

The ModOrigin one will be used. Only if there is no ModOrigin or
ModHidden entry will the ModUnusable error be printed. See T21097 for an
example printing several reasons why an import is unusable.

(cherry picked from commit cee81370cd6ef256f66035e3116878d4cb82e28b)

- - - - -
2af5c8d1 by Moritz Angermann at 2024-01-30T17:14:16+05:30
[PEi386] Mask SYM_TYPE_DUP_DISCARD in makeSymbolExtra

48e391952c17ff7eab10b0b1456e3f2a2af28a9b
introduced `SYM_TYPE_DUP_DISCARD` to the bitfield.

The linker however, failed to mask the `SYM_TYPE_DUP_DISCARD` value.
Thus `== SYM_TYPE_CODE` comparisons easily failed. This lead to us
relocating DATA lookups (GOT) into E8 (call) and E9 (jump) instructions.

(cherry picked from commit 34f06334025521c2440ebedb0237697fbcc3c6de)

- - - - -
97679725 by Ilias Tsitsimpis at 2024-01-30T17:14:16+05:30
hadrian: Pass -DNOSMP to C compiler when needed

Hadrian passes the -DNOSMP flag to GHC when the target doesn't support
SMP, but doesn't pass it to CC as well, leading to the following
compilation error on mips64el:

| Run Cc (FindCDependencies CDep) Stage1: rts/sm/NonMovingScav.c => _build/stage1/rts/build/c/sm/NonMovingScav.o.d
Command line: /usr/bin/mips64el-linux-gnuabi64-gcc -E -MM -MG -MF _build/stage1/rts/build/c/hooks/FlagDefaults.thr_debug_p_o.d -MT _build/stage1/rts/build/c/hooks/FlagDefaults.o -Irts/include -I_build/stage1/rts/build -I_build/stage1/rts/build/include -Irts/include -x c rts/hooks/FlagDefaults.c -Wall -Wextra -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Winline -Wpointer-arith -Wmissing-noreturn -Wnested-externs -Wredundant-decls -Wundef -fno-strict-aliasing -DTHREADED_RTS -DDEBUG -fomit-frame-pointer -O2 -g -Irts -I_build/stage1/rts/build -DDEBUG -fno-omit-frame-pointer -g3 -O0
===> Command failed with error code: 1
In file included from rts/include/Stg.h:348,
                 from rts/include/Rts.h:38,
                 from rts/hooks/FlagDefaults.c:8:
rts/include/stg/SMP.h:416:2: error: #error memory barriers unimplemented on this architecture
  416 | #error memory barriers unimplemented on this architecture
      |  ^~~~~
rts/include/stg/SMP.h:440:2: error: #error memory barriers unimplemented on this architecture
  440 | #error memory barriers unimplemented on this architecture
      |  ^~~~~
rts/include/stg/SMP.h:464:2: error: #error memory barriers unimplemented on this architecture
  464 | #error memory barriers unimplemented on this architecture
      |  ^~~~~

The old make system correctly passed this flag to both GHC and CC [1].

Fix this error by passing -DNOSMP to CC as well.

[1] https://gitlab.haskell.org/ghc/ghc/-/blob/00920f176b0235d5bb52a8e054d89a664f8938fe/rts/ghc.mk#L407

Closes #24082

(cherry picked from commit 257c2807587624592813a42e06a05c5fc34cb38c)

- - - - -
0ae27729 by Moritz Angermann at 2024-01-30T17:14:16+05:30
nativeGen: section flags for .text$foo only

Commit 3ece9856d157c85511d59f9f862ab351bbd9b38b, was supposed to fix
#22834 in !9810.

It does however add "xr" indiscriminatly to .text sections
even if splitSections is disabled. This leads to the assembler saying:

ghc_1.s:7849:0: error:
     Warning: Ignoring changed section attributes for .text
     |
7849 | .section .text,"xr"
     | ^

(cherry picked from commit e99cf237f84db34be0468a893b10394d6b364bce)

- - - - -
336c0c39 by Moritz Angermann at 2024-01-30T17:14:16+05:30
[PEi386 linker] Bounds check and null-deref guard

We should resonably be able to expect that we won't exceed the number of
sections if we assume to be dealing with legal object files. We can however
not guarantee that we get some negative values, and while we try to
special case most, we should exclude negative indexing into the sections
array.

We also need to ensure that we do not try to derefences targetSection,
if it is NULL, due to the switch statement.

(cherry picked from commit df81536f2e53abf521a05eb1e482a076f5849c21)

- - - - -
c036cf16 by Sylvain Henry at 2024-01-30T17:14:16+05:30
Avoid out-of-bound array access in bigNatIsPowerOf2 (fix #24066)

bigNatIndex# in the `where` clause wasn't guarded by "bigNatIsZero a".

(cherry picked from commit fe0675770b66a9ed393884d96e276b8d116fa2a2)

- - - - -
14d23c31 by Sylvain Henry at 2024-01-30T17:14:16+05:30
Bignum: fix right shift of negative BigNat with native backend

(cherry picked from commit cc1625b1ffbdf086b8380bacd35abc8d85861637)

- - - - -
cead9699 by Sylvain Henry at 2024-01-30T17:14:17+05:30
Rts: expose rtsOutOfBoundsAccess symbol

(cherry picked from commit cbe4400d2690104053ec544cf7d0a9a13ee914ee)

- - - - -
0ffbcb24 by Sylvain Henry at 2024-01-30T17:14:17+05:30
Hadrian: enable `-fcheck-prim-bounds` in validate flavour

This allows T24066 to fail when the bug is present.

Otherwise the out-of-bound access isn't detected as it happens in
ghc-bignum which wasn't compiled with the bounds check.

(cherry picked from commit 72c7380cb780933825bc84924908e01ce0495dc4)

- - - - -
ef2f3e02 by Profpatsch at 2024-01-30T17:14:17+05:30
base: Improve String & IsString documentation

(cherry picked from commit d751c583d29460f033fefb45e685fa40fb3487ad)

- - - - -
b8af87e8 by Ben Gamari at 2024-01-30T17:14:17+05:30
rts/eventlog: Fix off-by-one in assertion

Previously we failed to account for the NULL terminator `postString`
asserted that there is enough room in the buffer for the string.

(cherry picked from commit d0b17576148d336b67c7d65bcf742f83001413cb)

- - - - -
86ac4f65 by Ben Gamari at 2024-01-30T17:14:17+05:30
rts/eventlog: Honor result of ensureRoomForVariableEvent is

Previously we would keep plugging along, even if isn't enough room for
the event.

(cherry picked from commit a10f9b9bc510051a5b47d31238aad1174f7a1966)

- - - - -
64de5b77 by Ben Gamari at 2024-01-30T17:14:17+05:30
rts/eventlog: Avoid truncating event sizes

Previously ensureRoomForVariableEvent would truncate the desired size to
16-bits, resulting in #24197.

Fixes #24197.

(cherry picked from commit 0e0f41c0e3d9c67fc669e975060e88bccdc7d823)

- - - - -
efc34462 by Zubin Duggal at 2024-01-30T17:14:17+05:30
driver: Ensure we actually clear the interactive context before reloading

Previously we called discardIC, but immediately after set the session
back to an old HscEnv that still contained the IC

Partially addresses #24107
Fixes #23405

(cherry picked from commit 58d56644c54b221f265b739829e53f9f5e1216d3)

- - - - -
459dc2db by Zubin Duggal at 2024-01-30T17:14:17+05:30
driver: Ensure we force the lookup of old build artifacts before returning the build plan

This prevents us from retaining all previous build artifacts in memory until a
recompile finishes, instead only retaining the exact artifacts we need.

Fixes #24118

(cherry picked from commit 8e5745a0cddf36afb680e1e99675279f0065ad7b)

- - - - -
87d262af by Zubin Duggal at 2024-01-30T17:14:17+05:30
testsuite: add test for #24118 and #24107

MultiLayerModulesDefsGhci was not able to catch the leak because it uses
:l which discards the previous environment.

Using :r catches both of these leaks
(cherry picked from commit 105c370ce8d2efe0295c3a50a5866f169b59b5e2)

- - - - -
a8e0c9ab by Zubin Duggal at 2024-01-30T17:14:17+05:30
compiler: Add some strictness annotations to ImportSpec and related constructors
This prevents us from retaining entire HscEnvs.

Force these ImportSpecs when forcing the GlobalRdrEltX

Adds an NFData instance for Bag

Fixes #24107

(cherry picked from commit e822ff88f7b139191163d0b2dafe43b318b779f9)

- - - - -
67536e12 by Zubin Duggal at 2024-01-30T17:14:17+05:30
compiler: Force IfGlobalRdrEnv in NFData instance.

(cherry picked from commit 522c12a43b34ad4ca7f3f916fa630d33a4fe6efb)

- - - - -
057f4e24 by Claudio Bley at 2024-01-30T17:14:17+05:30
Only exit ghci in -e mode when :add command fails

Previously, when running `ghci -e ':add Sample.hs'` the process would
exit with exit code 1 if the file exists and could be loaded.

Fixes #24115

(cherry picked from commit d561073727186c7b456c9ef113ccb7fc0df4560e)

- - - - -
28fff112 by mmzk1526 at 2024-01-30T17:14:17+05:30
Use "-V" for alex version check for better backward compatibility
Fixes #24302.
In recent versions of alex, "-v" is used for "--verbose" instead of "-version".

(cherry picked from commit c7be0c680d96ba6209c86e509ab2682e5041a53d)

- - - - -
1b7b1345 by Ben Gamari at 2024-01-30T17:14:17+05:30
distrib: Rediscover otool and install_name_tool on Darwin

In the bindist configure script we must rediscover the `otool` and
`install_name_tool`s since they may be different from the build
environment.

Fixes #24211.

(cherry picked from commit 292983c841b4facd5c48fcec9689448d66bcb90e)

- - - - -
f8a889b3 by Zubin Duggal at 2024-01-30T17:14:17+05:30
ci: Ensure we use the correct bindist name for the test artifact when generating
release ghcup metadata

Fixes #24268

(cherry picked from commit 989bf8e53c08eb22de716901b914b3607bc8dd08)

- - - - -
9f8fd045 by Stefan Schulze Frielinghaus at 2024-01-30T17:14:17+05:30
llvmGen: Align objects in the data section

Objects in the data section may be referenced via tagged pointers.
Thus, align those objects to a 4- or 8-byte boundary for 32- or 64-bit
platforms, respectively.  Note, this may need to be reconsidered if
objects with a greater natural alignment requirement are emitted as e.g.
128-bit atomics.

Fixes #24163.

(cherry picked from commit dfe1c3540e4b519b62b862b5966dfec5cae9ece1)

- - - - -
ff1c1cfb by Zubin Duggal at 2024-01-30T17:14:17+05:30
docs: document permissibility of -XOverloadedLabels (#24249)

Document the permissibility introduced by
https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0170-unrestricted-overloadedlabels.rst

(cherry picked from commit c247b6befe6a599688bad0a3383424f7ea12d5f2)

- - - - -
57a663f1 by Simon Peyton Jones at 2024-01-30T17:14:17+05:30
Take care when simplifying unfoldings

This MR fixes a very subtle bug exposed by #24242.

See Note [Environment for simplLetUnfolding].

I also updated a bunch of Notes on shadowing

(cherry picked from commit d8baa1bdeea1753afc939a20119d3ce555301167)

- - - - -
e3f862f7 by Simon Peyton Jones at 2024-01-30T17:14:17+05:30
Make TYPE and CONSTRAINT not-apart

Issue #24279 showed up a bug in the logic in GHC.Core.Unify.unify_ty
which is supposed to make TYPE and CONSTRAINT be not-apart.

Easily fixed.

(cherry picked from commit af6932d6c068361c6ae300d52e72fbe13f8e1f18)

- - - - -
a9681fe1 by Zubin Duggal at 2024-01-30T17:14:17+05:30
ci: Fix typo in mk_ghcup_metadata.py

There was a missing colon in the fix to #24268 in 989bf8e53c08eb22de716901b914b3607bc8dd08

(cherry picked from commit 4a39b5ffb85246d0dc491e36a80449afdbcc74cc)

- - - - -
ba4edca6 by sheaf at 2024-01-30T17:14:17+05:30
Use lookupOccRn_maybe in TH.lookupName

When looking up a value, we want to be able to find both variables
and record fields. So we should not use the lookupSameOccRn_maybe
function, as we can't know ahead of time which record field namespace
a record field with the given textual name will belong to.

Fixes #24293

(cherry picked from commit c5fc7304d56c7a1e0a7bc6e53e23b976772fc10e)

- - - - -
5ac5d8d2 by Zubin Duggal at 2024-02-07T15:22:43+05:30
#22362 and 22349 are fixed on the js backend

- - - - -
661e2a46 by Greg Steuck at 2024-02-08T15:28:41+05:30
Remove undefined FP_PROG_LD_BUILD_ID from configure.ac's

(cherry picked from commit 6f904808c925991bbaf4068c9a12b584675c6209)

- - - - -
d1a6ad12 by Sylvain Henry at 2024-02-08T15:37:59+05:30
JS: implement some file primitives (lstat,rmdir) (#22374)

- Implement lstat and rmdir.
- Implement base_c_s_is* functions (testing a file type)
- Enable passing tests

(cherry picked from commit 74a4dd2ec6e200b11a56b6f82907feb66e94c90b)

- - - - -
8986d86d by jade at 2024-02-08T15:40:03+05:30
Expand documentation of List & Data.List

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

(cherry picked from commit ff81d53f6404867c7cdd9dde5bb6bf3776912048)

- - - - -
2fde790f by Jade at 2024-02-08T15:41:33+05:30
Improve documentation of Semigroup & Monoid

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

(cherry picked from commit fa4e5913251786f2b535b31abd3fad39da8b3602)

- - - - -
f36b8ba7 by Finley McIlwaine at 2024-02-08T15:44:05+05:30
Add -dipe-stats flag

This is useful for seeing which info tables have information.

(cherry picked from commit cc52c358316ac8210f80da80db6b0c620dd5bdc3)

- - - - -
c237fe04 by Finley McIlwaine at 2024-02-08T19:53:20+05:30
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

(cherry picked from commit 261c4acbfdaf5babfc57ab0cef211edb66153fb1)

- - - - -
c5e5e6da by Finley McIlwaine at 2024-02-08T19:53:20+05:30
Refactor estimation of stack info table provenance

This commit greatly refactors the way we compute estimated provenance for stack
info tables. Previously, this process was done using an entirely separate traversal
of the whole Cmm code stream to build the map from info tables to source locations.
The separate traversal is now fused with the Cmm code generation pipeline in
GHC.Driver.Main.

This results in very significant code generation speed ups when -finfo-table-map is
enabled. In testing, this patch reduces code generation times by almost 30% with
-finfo-table-map and -O0, and 60% with -finfo-table-map and -O1 or -O2 .

Fixes #23103

(cherry picked from commit d99c816f7b5727a3f344960e02a1932187ea093f)

- - - - -
882f3b32 by Finley McIlwaine at 2024-02-08T19:53:20+05:30
Add a test checking overhead of -finfo-table-map

We want to make sure we don't end up with poor codegen performance resulting from
-finfo-table-map again as in #23103. This test adds a performance test tracking
total allocations while compiling ExactPrint with -finfo-table-map.

(cherry picked from commit d3e0124c1157a4a423d86a1dc1d7e82c6d32ef06)

- - - - -
a36e4c46 by Matthew Pickering at 2024-02-08T19:53:20+05:30
Add aarch64-deb11 bindist

This adds a debian 11 release job for aarch64.

Fixes #22005

(cherry picked from commit 02c87213e1215520d5496130a3082143f27035ae)

- - - - -
eda05046 by sheaf at 2024-02-08T19:53:20+05:30
Pass quantified tyvars in tcDefaultAssocDecl

This commit passes the correct set of quantified type variables written
by the user in associated type default declarations for validity
checking. This ensures that validity checking of associated type defaults
mirrors that of standalone type family instances.

Fixes #23768 (see testcase T23734 in subsequent commit)

(cherry picked from commit 5f826c180aa9b42ccb0af5763d87a48bee5e4083)

- - - - -
f8484716 by sheaf at 2024-02-08T19:53:20+05:30
Avoid panic in mkGADTVars

This commit avoids panicking in mkGADTVars when we encounter
a type variable as in #23784 that is bound by a user-written
forall but not actually used.

Fixes #23784

(cherry picked from commit aba184241a80e5abc804c4f22db91a16be215c11)

- - - - -
5181eda8 by sheaf at 2024-02-08T19:53:20+05:30
Adjust reporting of unused tyvars in data FamInsts

This commit adjusts the validity checking of data family
instances to improve the reporting of unused type variables.

See Note [Out of scope tvs in data family instances] in GHC.Tc.Validity.

The problem was that, in a situation such as

  data family D :: Type
  data instance forall (d :: Type). D = MkD

the RHS passed to 'checkFamPatBinders' would be the TyCon app

  R:D d

which mentions the type variable 'd' quantified in the user-written
forall. Thus, when computing the set of unused type variables in
the RHS of the data family instance, we would find that 'd' is used,
and report a strange error message that would say that 'd' is not
bound on the LHS.

To fix this, we special-case the data-family instance case,
manually extracting all the type variables that appear in the
arguments of all the data constructores of the data family instance.

Fixes #23778

(cherry picked from commit a525a92a37cc202b6db09a827ba9df9eb8c9fa79)

- - - - -
931a0c34 by Antoine Leblanc at 2024-02-08T23:01:53+05:30
Be more eager in TyCon boot validity checking

This commit performs boot-file consistency checking for TyCons into
checkValidTyCl. This ensures that we eagerly catch any mismatches,
which prevents the compiler from seeing these inconsistencies and
panicking as a result.

See Note [TyCon boot consistency checking] in GHC.Tc.TyCl.

Fixes #16127

(cherry picked from commit 1420b8cb8a7d6196eec80dc5293864c780379560)

- - - - -
e7cf6437 by sheaf at 2024-02-08T23:01:53+05:30
Unused tyvars in FamInst: only report user tyvars

This commit changes how we perform some validity checking for
coercion axioms to mirror how we handle default declarations for
associated type families. This allows us to keep track of whether
type variables in type and data family instances were user-written
or not, in order to only report the user-written ones in
"unused type variable" error messages.

Consider for example:

  {-# LANGUAGE PolyKinds #-}
  type family F
  type instance forall a. F = ()

In this case, we get two quantified type variables,
(k :: Type) and (a :: k); the second being user-written, but the first
is introduced by the typechecker. We should only report 'a' as being
unused, as the user has no idea what 'k' is.

Fixes #23734

(cherry picked from commit 28dd52eec98e50c711cd00df22f6ab9e054c8b75)

- - - - -
ebc725b2 by sheaf at 2024-02-08T23:01:53+05:30
Validity: refactor treatment of data families

This commit refactors the reporting of unused type variables in type
and data family instances to be more principled. This avoids ad-hoc
logic in the treatment of data family instances.

(cherry picked from commit 1eed645c8b03b19a14cf58d9be5317cb81cbd30a)

- - - - -
dcd8ca74 by Krzysztof Gogolewski at 2024-02-08T23:01:53+05:30
docs: fix ScopedTypeVariables example (#24101)

The previous example didn't compile.

Furthermore, it wasn't demonstrating the point properly.
I have changed it to an example which shows that 'a' in the signature
must be the same 'a' as in the instance head.

(cherry picked from commit 7a90020f167ab016cbfa95decafaa1a54a974bc6)

- - - - -
f47a95f2 by PHO at 2024-02-08T23:01:53+05:30
Don't assume the current locale is *.UTF-8, set the encoding explicitly

primops.txt contains Unicode characters:
> LC_ALL=C ./genprimopcode --data-decl < ./primops.txt
> genprimopcode: <stdin>: hGetContents: invalid argument (cannot decode byte sequence starting from 226)

Hadrian must also avoid using readFile' to read primops.txt because it
tries to decode the file with a locale-specific encoding.

(cherry picked from commit 52c0fc691e6501e99a96693ec1fc02e3c93a4fbc)

- - - - -
73600e14 by Simon Peyton Jones at 2024-02-08T23:01:53+05:30
Add an extra check in kcCheckDeclHeader_sig

Fix #24083 by checking for a implicitly-scoped type variable that is not
actually bound.  See Note [Disconnected type variables] in GHC.Tc.Gen.HsType

For some reason, on aarch64-darwin we saw a 2.8% decrease in compiler
allocations for MultiLayerModulesTH_Make; but 0.0% on other architectures.

Metric Decrease:
    MultiLayerModulesTH_Make

(cherry picked from commit 6dbab1808bfbe484b3fb396aab1d105314f918d8)

- - - - -
39179586 by Simon Peyton Jones at 2024-02-08T23:01:53+05:30
Second fix to #24083

My earlier fix turns out to be too aggressive for data/type families

See wrinkle (DTV1) in Note [Disconnected type variables]

(cherry picked from commit 2776920e642544477a38d0ed9205d4f0b48a782e)
(cherry picked from commit 110efc9813ba5f68668ab7fc3f95b9febca52880)

- - - - -
aa339700 by Matthew Pickering at 2024-02-08T23:01:53+05:30
libraries: Bump filepath to 1.4.200.1 and unix to 2.8.4.0

Updates filepath submodule
Updates unix submodule

Fixes #24240

(cherry picked from commit 36b9a38cc45a26865c4e45f4949e519a5dede76d)

- - - - -
4058ecba by Matthew Pickering at 2024-02-08T23:01:54+05:30
Submodule linter: Allow references to tags

We modify the submodule linter so that if the bumped commit is a
specific tag then the commit is accepted.

Fixes #24241

(cherry picked from commit 91ff0971df64b04938d011fe1562320c5d90849a)

- - - - -
ab835c3f by Matthew Craven at 2024-02-08T23:01:54+05:30
Fix loopification in the presence of void arguments

This also removes Note [Void arguments in self-recursive tail calls],
which was just misleading.  It's important to count void args both
in the function's arity and at the call site.

Fixes #24295.

(cherry picked from commit ae9cc1a84c9f470b77d98423400e6dfa95b2449b)

- - - - -
275997f7 by Andreas Klebinger at 2024-02-08T23:01:54+05:30
Aarch64: Enable -mfma by default.

Fixes #24311

(cherry picked from commit 7e95f738620dc805868d198f980e1bdd53e27a2d)

- - - - -
bb4f3878 by Matthew Pickering at 2024-02-08T23:01:54+05:30
eventlog: Fix off-by-one error in postIPE

We were missing the extra_comma from the calculation of the size of the
payload of postIPE. This was causing assertion failures when the event
would overflow the buffer by one byte, as ensureRoomForVariable event
would report there was enough space for `n` bytes but then we would
write `n + 1` bytes into the buffer.

Fixes #24287

(cherry picked from commit 5776008c7a5581193c3e72e59451ad49abac9d81)

- - - - -
8fac10a2 by Jade at 2024-02-08T23:01:54+05:30
Enhance Documentation of functions exported by Data.Function

This patch aims to improve the documentation of functions exported
in Data.Function

Tracking: #17929
Fixes: #10065
(cherry picked from commit 1fa1c00c95325761a5aa914af53d71ba5e7072b3)

- - - - -
758ff906 by Jade at 2024-02-08T23:01:54+05:30
Improve documentation of hGetLine.

- Add explanation for whether a newline is returned
- Add examples

Fixes #14804

(cherry picked from commit ab47a43d64f6b7d4fc181645171c31ba2db1eebe)

- - - - -
5205b93d by sheaf at 2024-02-08T23:01:54+05:30
Fix FMA instruction on LLVM

We were emitting the wrong instructions for fused multiply-add
operations on LLVM:

  - the instruction name is "llvm.fma.f32" or "llvm.fma.f64", not "fmadd"
  - LLVM does not support other instructions such as "fmsub"; instead
    we implement these by flipping signs of some arguments
  - the instruction is an LLVM intrinsic, which requires handling it
    like a normal function call instead of a machine instruction

Fixes #24223

(cherry picked from commit a40f4ab21bcc088e63892cd5e85edbec20d3fc69)

- - - - -
7ddb1418 by Hécate Moonlight at 2024-02-08T23:01:54+05:30
Clarification for newtype constructors when using `coerce`

(cherry picked from commit 699da01bbbf3e42c7d38b9cfe443dd0e8e256342)

- - - - -
4593f490 by Andreas Klebinger at 2024-02-08T23:01:54+05:30
Fix fma warning when using llvm on aarch64.

On aarch64 fma is always on so the +fma flag doesn't exist for that
target. Hence no need to try and pass +fma to llvm.

Fixes #24379

(cherry picked from commit 9294a08643b89509a0e0957cb73c186a39d4f3db)

- - - - -
10de6db4 by Patrick at 2024-02-08T23:01:54+05:30
Fix bug wrong span of nested_doc_comment #24378

close #24378
1. Update the start position of span in `nested_doc_comment` correctly.
and hence the spans of identifiers of haddoc can be computed correctly.
2. add test `HaddockSpanIssueT24378`.

(cherry picked from commit 8eeadfad3a0035f8c5b339782676ff23572e0e5e)

- - - - -
85ef42ce by sheaf at 2024-02-08T23:01:54+05:30
No shadowing warnings for NoFieldSelector fields

This commit ensures we don't emit shadowing warnings when a user
shadows a field defined with NoFieldSelectors.

Fixes #24381

(cherry picked from commit ced2e7312b692e3f5402e4db6cfec390653a6a06)

- - - - -
e59bae2a by Teo Camarasu at 2024-02-08T23:01:54+05:30
doc: Add -Dn flag to user guide

Resolves #24394

(cherry picked from commit 94ce031ddc84ee702c12a11793028ef21e65fa00)

- - - - -
81cb68aa by Rodrigo Mesquita at 2024-02-08T23:01:54+05:30
Work around autotools setting C11 standard in CC/CXX

In autoconf >=2.70, C11 is set by default for $CC and $CXX via the
-std=...11 flag. In this patch, we split the "-std" flag out of the $CC
and $CXX variables, which we traditionally assume to be just the
executable name/path, and move it to $CFLAGS/$CXXFLAGS instead.

Fixes #24324

(cherry picked from commit cdddeb0f1280b40cc194028bbaef36e127175c4c)

- - - - -
a7421910 by Zubin Duggal at 2024-02-08T23:01:54+05:30
driver: Really don't lose track of nodes when we fail to resolve cycles

This fixes a bug in 8db8d2fd1c881032b1b360c032b6d9d072c11723, where we could lose
track of acyclic components at the start of an unresolved cycle. We now ensure we
never loose track of any of these components.

As T24275 demonstrates, a "cyclic" SCC might not really be a true SCC:

When viewed without boot files, we have a single SCC

```
[REC main:T24275B [main:T24275B {-# SOURCE #-},
                   main:T24275A {-# SOURCE #-}]
     main:T24275A [main:T24275A {-# SOURCE #-}]]
```

But with boot files this turns into

```
[NONREC main:T24275B {-# SOURCE #-} [],
 REC main:T24275B [main:T24275B {-# SOURCE #-},
                   main:T24275A {-# SOURCE #-}]
    main:T24275A {-# SOURCE #-} [main:T24275B],
 NONREC main:T24275A [main:T24275A {-# SOURCE #-}]]
```

Note that this is truly not an SCC, as no nodes are reachable from T24275B.hs-boot.
However, we treat this entire group as a single "SCC" because it seems so when we
analyse the graph without taking boot files into account.

Indeed, we must return a single ResolvedCycle element in the BuildPlan for this
as described in Note [Upsweep].

However, since after resolving this is not a true SCC anymore, `findCycle` fails
to find a cycle and we have a sub-optimal error message as a result.

To handle this, I extended `findCycle` to not assume its input is an SCC, and to
try harder to find cycles in its input.

Fixes #24275

(cherry picked from commit 532993c8160d960f848e7abd401774b6879e3ee8)

- - - - -
ba0a5d95 by Matthew Pickering at 2024-02-08T23:01:54+05:30
distrib/configure: Fix typo in CONF_GCC_LINKER_OPTS_STAGE2 variable

Instead we were setting CONF_GCC_LINK_OPTS_STAGE2 which meant that we
were missing passing `--target` when invoking the linker.

Fixes #24414

(cherry picked from commit d309f4e7e37f3795c6d6b150c407d5a9b332854e)

- - - - -
b3300cb5 by Zubin Duggal at 2024-02-09T01:34:17+05:30
ci: Regenerate jobs.yaml

- - - - -
042d45dd by Zubin Duggal at 2024-02-09T13:28:50+05:30
ci: Mark PartialDownsweep and OldModLocation tests as fragile on js backend

- - - - -
55bbea03 by Rodrigo Mesquita at 2024-02-09T16:01:30+05:30
Suppress duplicate librares linker warning of new macOS linker

Fixes #24167

XCode 15 introduced a new linker which warns on duplicate libraries being
linked. To disable this warning, we pass -Wl,-no_warn_duplicate_libraries as
suggested by Brad King in CMake issue #25297.

This flag isn't necessarily available to other linkers on darwin, so we must
only configure it into the CC linker arguments if valid.

(cherry picked from commit e98051a5e7251390799f9fdead988c61d72e82e3)

- - - - -
74d6260a by Rodrigo Mesquita at 2024-02-09T16:02:03+05:30
testsuite: Encoding test witnesses recent iconv bug is fragile

A regression in the new iconv() distributed with XCode 15 and MacOS
Sonoma causes the test 'encoding004' to fail in the CP936 roundrip.

We mark this test as fragile until this is fixed upstream (rather than
broken, since previous versions of iconv pass the test)

See #24161

(cherry picked from commit c411c431e7ae1f0effbe9f9a624c7f9171d50f0a)

- - - - -
0f6116ca by Rodrigo Mesquita at 2024-02-09T16:02:12+05:30
testsuite: Update to LC_ALL=C no longer being ignored in darwin

MacOS seems to have fixed an issue where it used to ignore the variable
`LC_ALL` in program invocations and default to using Unicode.

Since the behaviour seems to be fixed to account for the locale
variable, we mark tests that were previously broken in spite of it as
fragile (since they now pass in recent macOS distributions)

See #24161

(cherry picked from commit ce7fe5a916d50f471812f4714615e13f557fe57a)

- - - - -
b746f8a8 by Rodrigo Mesquita at 2024-02-09T16:05:28+05:30
darwin: Fix single_module is obsolete warning

In XCode 15's linker, -single_module is the default and otherwise
passing it as a flag results in a warning being raised:

    ld: warning: -single_module is obsolete

This patch fixes this warning by, at configure time, determining whether
the linker supports -single_module (which is likely false for all
non-darwin linkers, and true for darwin linkers in previous versions of
macOS), and using that information at runtime to decide to pass or not
the flag in the invocation.

Fixes #24168

(cherry picked from commit e6c803f702e8b09dfd0073b973b8afcd7071db50)
(cherry picked from commit 273f5a3fd392d528664d5661508cc0094e37ec0d)

- - - - -
0127a041 by Matthew Craven at 2024-02-19T13:53:39+05:30
Make 'wWarningFlagsDeps' include every WarningFlag

Fixes #24071.

(cherry picked from commit a2c0fff61afdb14b5f2624374aa5767e7b238ff4)

- - - - -
34e38b38 by Torsten Schmits at 2024-02-19T13:53:39+05:30
Fix several mistakes around free variables in iface breakpoints

Fixes #23612 , #23607, #23998 and #23666.

MR: !11026

The fingerprinting logic in `Iface.Recomp` failed lookups when processing decls containing breakpoints for two reasons:

* IfaceBreakpoint created binders for free variables instead of expressions

* When collecting free names for the dependency analysis for fingerprinting, breakpoint FVs were skipped

(cherry picked from commit d3874407df4223a5e14a43571f4cc344349a537d)

- - - - -
d07caf0e by Andrei Borzenkov at 2024-02-19T13:53:39+05:30
Add changelog entry for renaming tuples from (,,...,,) to Tuple<n> (24291)

(cherry picked from commit 69abc7869bc504631e445083704115fc8a5d29c8)

- - - - -
fe4a1d24 by Zubin Duggal at 2024-02-19T13:53:39+05:30
ci: Allow release-hackage-lint to fail

Otherwise it blocks the ghcup metadata pipeline from running.

(cherry picked from commit 2e88063500d7ef33c83bd2de8ca5c7818ffbb026)

- - - - -
b8b00b53 by Ben Gamari at 2024-02-19T13:53:39+05:30
rts/EventLog: Place eliminate duplicate strlens

Previously many of the `post*` implementations would first compute the
length of the event's strings in order to determine the event length.
Later we would then end up computing the length yet again in
`postString`. Now we instead pass the string length to `postStringLen`,
avoiding the repeated work.

(cherry picked from commit 325b7613ebb2ca012a8969e20d35e95bfccc2bba)

- - - - -
b5b22004 by Ben Gamari at 2024-02-19T13:53:39+05:30
rts/eventlog: Place upper bound on IPE string field lengths

The strings in IPE events may be of unbounded length. Limit the lengths
of these fields to 64k characters to ensure that we don't exceed the
maximum event length.

(cherry picked from commit 8aafa51cb714fb16989089d4bc1ea7e7eb50124c)

- - - - -
8bf88fa3 by Zubin Duggal at 2024-02-19T13:53:39+05:30
rts: drop unused postString function

(cherry picked from commit 0e60d52cc7e261da11c37bd649511584d92a688b)

- - - - -
2dc75024 by Simon Peyton Jones at 2024-02-19T13:53:39+05:30
Make decomposeRuleLhs a bit more clever

This fixes #24370 by making decomposeRuleLhs undertand
dictionary /functions/ as well as plain /dictionaries/

(cherry picked from commit ca2e919ecca35db412e772d7eadd6a7c4fb20e4b)

- - - - -
b1bd2eed by ARATA Mizuki at 2024-02-19T13:53:39+05:30
Support 128-bit SIMD on AArch64 via LLVM backend

(cherry picked from commit 015886ec78e598f850c4202efdee239bac63b8c7)

- - - - -
5396d8ce by ARATA Mizuki at 2024-02-19T13:53:39+05:30
x86: Don't require -mavx2 when using 256-bit floating-point SIMD primitives

Fixes #24222

(cherry picked from commit 7d9a2e44e8cce00e24671325aebe47d9e529aee5)

- - - - -
2b9b7e77 by Ben Gamari at 2024-02-19T13:53:39+05:30
Fix thunk update ordering

Previously we attempted to ensure soundness of concurrent thunk update
by synchronizing on the access of the thunk's info table pointer field.
This was believed to be sufficient since the indirectee (which may
expose a closure allocated by another core) would not be examined
until the info table pointer update is complete.

However, it turns out that this can result in data races in the presence
of multiple threads racing a update a single thunk. For instance,
consider this interleaving under the old scheme:

            Thread A                             Thread B
            ---------                            ---------
    t=0     Enter t
      1     Push update frame
      2     Begin evaluation

      4     Pause thread
      5     t.indirectee=tso
      6     Release t.info=BLACKHOLE

      7     ... (e.g. GC)

      8     Resume thread
      9     Finish evaluation
      10    Relaxed t.indirectee=x

      11                                         Load t.info
      12                                         Acquire fence
      13                                         Inspect t.indirectee

      14    Release t.info=BLACKHOLE

Here Thread A enters thunk `t` but is soon paused, resulting in `t`
being lazily blackholed at t=6. Then, at t=10 Thread A finishes
evaluation and updates `t.indirectee` with a relaxed store.

Meanwhile, Thread B enters the blackhole. Under the old scheme this
would introduce an acquire-fence but this would only synchronize with
Thread A at t=6. Consequently, the result of the evaluation, `x`, is not
visible to Thread B, introducing a data race.

We fix this by treating the `indirectee` field as we do all other
mutable fields. This means we must always access this field with
acquire-loads and release-stores.

See #23185.

(cherry picked from commit 9a52ae46a33b490161e1e3e1cc70caa46c60488a)
(cherry picked from commit 88afc6ea885d54523efbbb764f3435a147b799a5)

- - - - -
92239ede by Florian Weimer at 2024-02-20T13:38:04+05:30
Fix C output for modern C initiative

GCC 14 on aarch64 rejects the C code written by GHC with this kind of
error:

   error: assignment to ‘ffi_arg’ {aka ‘long unsigned int’} from ‘HsPtr’ {aka ‘void *’} makes integer from pointer without a cast [-Wint-conversion]
         68 | *(ffi_arg*)resp = cret;
            |                 ^

Add the correct cast.

For more information on this see:
https://fedoraproject.org/wiki/Changes/PortingToModernC

Tested-by: Richard W.M. Jones <rjones at redhat.com>
(cherry picked from commit 1f534c2e7388273e70534680212c1357614c11ed)

- - - - -
d13e2e8f by Fendor at 2024-02-20T19:36:34+05:30
Prefer RdrName over OccName for looking up locations in doc renaming step

Looking up by OccName only does not take into account when functions are
only imported in a qualified way.

Fixes issue #24294

Bump haddock submodule to include regression test

(cherry picked from commit b57200de601e4ef6827727176611d7192016b8b2)

- - - - -
e0e4fb95 by Andrew Lelechenko at 2024-02-20T19:36:34+05:30
Bump submodule text to 2.1.1

T17123 allocates less because of improvements to Data.Text.concat in 1a6a06a.

Metric Decrease:
    T17123

(cherry picked from commit 56e3f097fa7205f77e7903af345ed3798ecb039e)

- - - - -
ba1064a1 by Matthew Craven at 2024-02-20T19:36:34+05:30
Bump bytestring submodule to something closer to 0.12.1

...mostly so that 16d6b7e835ffdcf9b894e79f933dd52348dedd0c
(which reworks unaligned writes in Builder) and the stuff in
https://github.com/haskell/bytestring/pull/631 can see wider testing.

The less-terrible code for unaligned writes used in Builder on
hosts not known to be ulaigned-friendly also takes less effort
for GHC to compile, resulting in a metric decrease for T21839c
on some platforms.

The metric increase on T21839r is caused by the unrelated commit
750dac33465e7b59100698a330b44de7049a345c.  It perhaps warrants
further analysis and discussion (see #23822) but is not critical.

Metric Decrease:
T21839c
Metric Increase:
T21839r

(cherry picked from commit 27020458220da55f52f1f94c42a6ae7b4f321387)

- - - - -
049d5239 by Matthew Craven at 2024-02-20T19:36:34+05:30
Bump bytestring submodule to 0.12.1.0

(cherry picked from commit 5d3f786264db88a758ae65277c1b8d7f37f2e460)

- - - - -
9a192bc1 by Matthew Pickering at 2024-02-20T19:36:34+05:30
driver: Check transitive closure of haskell package dependencies when deciding whether to relink

We were previously just checking whether direct package dependencies had
been modified. This caused issues when compiling without optimisations
as we wouldn't relink the direct dependency if one of its dependenices
changed.

Fixes #23724

(cherry picked from commit 291d81aef8083290da0d2ce430fbc5e5a33bdb6e)

- - - - -
87790f48 by Cheng Shao at 2024-02-20T19:36:34+05:30
Fix genapply for cross-compilation by nuking fragile CPP logic

This commit fixes incorrectly built genapply when cross compiling
(#24347) by nuking all fragile CPP logic in it from the orbit. All
target-specific info are now read from DerivedConstants.h at runtime,
see added note for details. Also removes a legacy Makefile and adds
haskell language server support for genapply.

(cherry picked from commit dd4af0e5a4a3af208bdf57e8237d85261eef24f7)
(cherry picked from commit ee800873f62fac8c67cb7034f942a1ed6b72c032)

- - - - -
1e695750 by Cheng Shao at 2024-02-20T19:36:34+05:30
rts: enable wasm32 register mapping

The wasm backend didn't properly make use of all Cmm global registers
due to #24347. Now that it is fixed, this patch re-enables full
register mapping for wasm32, and we can now generate smaller & faster
wasm modules that doesn't always spill arguments onto the stack. Fixes #22460 #24152.

(cherry picked from commit 0cda2b8b15cdbc44c45ffa36a37ed8c2fe8b8b9c)
(cherry picked from commit f1f5068b398b1effb837add38ecc5303dc9a381f)

- - - - -
f60cf966 by Matthew Pickering at 2024-02-20T23:50:08+05:30
testsuite: Fix T21097b test with make 4.1 (deb9)

cee81370cd6ef256f66035e3116878d4cb82e28b recently added a test which
failed on deb9 because the version of make was emitting the recipe
failure to stdout rather than stderr.

One way to fix this is to be more precise in the test about which part
of the output we care about inspecting.

(cherry picked from commit bad3765668cc5badf5d0a19100fac95125985473)

- - - - -
bfe59b88 by Zubin Duggal at 2024-02-20T23:50:08+05:30
Prepare release 9.8.2

Metric Decrease:
    T13386

- - - - -
f15dd7bd by Zubin Duggal at 2024-02-21T14:10:08+05:30
testsuite: Mark linker_unload_native as fragile

See #23993. This test is fragile on Alpine (dynamic) but we don't have a way
to mark it as fragile on only that platform, so marking it as fragile on all
platforms.

(cherry picked from commit 6819b70a7739205a75f0b4fefcfcc9fdab39cab9)

- - - - -
2eca9c7a by Ben Gamari at 2024-02-22T18:31:44+05:30
hadrian: Generate HSC2HS_EXTRAS variable in bindist installation

We must generate the hsc2hs wrapper at bindist installation time since
it must contain `--lflag` and `--cflag` arguments which depend upon the
installation path.

The solution here is to substitute these variables in the configure
script (see mk/hsc2hs.in). This is then copied over a dummy wrapper in
the install rules.

Fixes #24050.

(cherry picked from commit efcbad2dfd242d0bc2c91da5390fe8456a536cc3)

- - - - -
d5246e19 by Matthew Pickering at 2024-02-22T18:31:58+05:30
ci: Show --info for installed compiler

(cherry picked from commit c540559cf188625bec668fa6cd94d4f94413d730)

- - - - -
f3225ed4 by Zubin Duggal at 2024-02-22T23:42:18+05:30
Accept change in MultiLayerModulesTH_Make

This test is flaky on darwin

Metric Decrease:
    MultiLayerModulesTH_Make

- - - - -
1c08e245 by Ben Gamari at 2024-02-23T12:31:12+05:30
testsuite: Ignore stderr in T8089

Otherwise spurious "Killed: 9" messages to stderr may cause the test to fail.
Fixes #24361.

(cherry picked from commit e693a4e8589bad35588c51fccc87f4388e7d5874)

- - - - -
9cb7e73a by Sebastian Graf at 2024-05-06T15:11:25+02: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.)

- - - - -
78a25354 by Sebastian Graf at 2024-05-07T09:25:04+02:00
Some cherry-picked bits of 59202c8 to fix #24718

As noted in f3225ed4b3f3c4, the test below is flaky on Darwin.

Metric Decrease:
    MultiLayerModulesTH_Make

- - - - -
4affc1fe by Melanie Brown at 2024-08-07T09:29:41-04:00
export Data.Traversable.for from Prelude

- - - - -


30 changed files:

- .gitlab-ci.yml
- .gitlab/ci.sh
- .gitlab/gen_ci.hs
- .gitlab/jobs.yaml
- .gitlab/rel_eng/fetch-gitlab-artifacts/fetch_gitlab.py
- .gitlab/rel_eng/mk-ghcup-metadata/mk_ghcup_metadata.py
- .gitlab/rel_eng/upload_ghc_libs.py
- .gitlab/test-metrics.sh
- compiler/CodeGen.Platform.h
- compiler/GHC.hs
- compiler/GHC/Builtin/Types.hs
- − compiler/GHC/Builtin/gen_bytearray_addr_access_ops.py
- compiler/GHC/Builtin/primops.txt.pp
- compiler/GHC/ByteCode/Asm.hs
- compiler/GHC/ByteCode/Instr.hs
- compiler/GHC/ByteCode/Types.hs
- compiler/GHC/Cmm.hs
- compiler/GHC/Cmm/CallConv.hs
- compiler/GHC/Cmm/MachOp.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/Ppr.hs
- compiler/GHC/CmmToAsm/BlockLayout.hs
- compiler/GHC/CmmToAsm/Monad.hs
- compiler/GHC/CmmToAsm/PPC/Instr.hs
- compiler/GHC/CmmToAsm/Ppr.hs


The diff was not included because it is too large.


View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/5c38a439125a57cefa2154d0695d7afa56fcb3d1...4affc1fee56c72eb3b0fab480c123fdd525634d9

-- 
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/5c38a439125a57cefa2154d0695d7afa56fcb3d1...4affc1fee56c72eb3b0fab480c123fdd525634d9
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/20240807/e837d2d6/attachment-0001.html>


More information about the ghc-commits mailing list