[Git][ghc/ghc][wip/backports-9.8-2] 187 commits: Bump process submodule to 1.6.18.0

Ben Gamari (@bgamari) gitlab at gitlab.haskell.org
Fri Sep 27 22:45:36 UTC 2024



Ben Gamari pushed to branch wip/backports-9.8-2 at Glasgow Haskell Compiler / GHC


Commits:
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

- - - - -
5e5ba257 by Ben Gamari at 2024-09-23T14:33:41-04:00
Bump process submodule to 1.6.24.0

- - - - -
8d7a027a by Ben Gamari at 2024-09-23T14:36:47-04:00
Bump stm submodule to v2.5.3.1

- - - - -
a2a44e47 by Andrew Lelechenko at 2024-09-27T13:31:13-04:00
Bump submodule deepseq to 1.5.1.0

(cherry picked from commit 8e462f4d4bdf2a6c34c249e7be8084565600d300)

- - - - -
d747384b by Cheng Shao at 2024-09-27T13:31:13-04:00
rts: ensure gc_thread/gen_workspace is allocated with proper alignment

gc_thread/gen_workspace are required to be aligned by 64 bytes.
However, this property has not been properly enforced before, and
numerous alignment violations at runtime has been caught by
UndefinedBehaviorSanitizer that look like:

```
rts/sm/GC.c:1167:8: runtime error: member access within misaligned address 0x0000027a3390 for type 'gc_thread' (aka 'struct gc_thread_'), which requires 64 byte alignment
0x0000027a3390: note: pointer points here
 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior rts/sm/GC.c:1167:8

rts/sm/GC.c:1184:13: runtime error: member access within misaligned address 0x0000027a3450 for type 'gen_workspace' (aka 'struct gen_workspace_'), which requires 64 byte alignment
0x0000027a3450: note: pointer points here
 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior rts/sm/GC.c:1184:13
```

This patch fixes the gc_thread/gen_workspace misalignment issue by
explicitly allocating them with alignment constraint.

- - - - -
28dd05e8 by Cheng Shao at 2024-09-27T13:31:13-04:00
rts: fix an unaligned load in nonmoving gc

This patch fixes an unaligned load in nonmoving gc by ensuring the
closure address is properly untagged first before attempting to
prefetch its header. The unaligned load is reported by
UndefinedBehaviorSanitizer:

```
rts/sm/NonMovingMark.c:921:9: runtime error: member access within misaligned address 0x0042005f3a71 for type 'StgClosure' (aka 'struct StgClosure_'), which requires 8 byte alignment
0x0042005f3a71: note: pointer points here
 00 00 00  98 43 13 8e 12 7f 00 00  50 3c 5f 00 42 00 00 00  58 17 b7 92 12 7f 00 00  89 cb 5e 00 42
              ^
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior rts/sm/NonMovingMark.c:921:9
```

This issue had previously gone unnoticed since it didn't really harm
runtime correctness, the invalid header address directly loaded from a
tagged pointer is only used as prefetch address and will not cause
segfaults. However, it still should be corrected because the prefetch
would be rendered useless by this issue, and untagging only involves a
single bitwise operation without memory access so it's cheap enough to
add.

- - - - -
43950801 by Cheng Shao at 2024-09-27T13:31:13-04:00
rts: use __builtin_offsetof to implement STG_FIELD_OFFSET

This patch fixes the STG_FIELD_OFFSET macro definition by using
__builtin_offsetof, which is what gcc/clang uses to implement offsetof
in standard C. The previous definition that uses NULL pointer involves
subtle undefined behavior in C and thus reported by
UndefinedBehaviorSanitizer as well:

```
rts/Capability.h:243:58: runtime error: member access within null pointer of type 'Capability' (aka 'struct Capability_')
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior rts/Capability.h:243:58
```

- - - - -
230a1fc0 by Cheng Shao at 2024-09-27T13:31:13-04:00
rts: fix checkClosure error message

This patch fixes an error message in checkClosure() when the closure
has already been evacuated. The previous logic was meant to print the
evacuated closure's type in the error message, but it was completely
wrong, given info was not really an info table, but a tagged pointer
that points to the closure's new address.

- - - - -
fefd77f6 by Andrew Lelechenko at 2024-09-27T14:57:23-04:00
Bump submodule array to 0.5.8.0

(cherry picked from commit 80769bc9f56541601796366485283a697c52a18b)

- - - - -
97cad96c by Matthew Pickering at 2024-09-27T15:46:45-04:00
ci: Fix variable inheritence for ghcup-metadata testing job

Downstream in ghcup-ci we use the CONFIGURE_ARGS variable to determine
how to setup all the different jobs.

On the downstream trigger this was being inherited from the default
setting in .gitlab.yml file.

Therefore this led to job failures as the necessary CONFIGURE_ARGS were
not being passed to the configure script when installing the bindist.

See docs:

* https://docs.gitlab.com/ee/ci/yaml/#inherit
* https://docs.gitlab.com/ee/ci/yaml/#triggerforward

1. inherit:variables:fals
  - This stops the global variables being inherited into the job and
    hence forwarded onto the downstream job.

2. trigger:forward:*
  - yaml_variables: true (default) pass yaml variables to downstream,
    this is important to pass the upstream pipeline id to downstream.
  - pipeline_variables: false (default) but don't pass pipeline
    variables (normal environment variables).

Fixes #25294

(cherry picked from commit 7cb7172eff9e18ed1c98f65a98018f76c4fcc9f6)

- - - - -
8f3d1a6a by Sylvain Henry at 2024-09-27T15:48:36-04:00
Fix interaction between fork and kqueue (#24672)

A kqueue file descriptor isn't inherited by a child created with fork.
As such we mustn't try to close this file descriptor as we would close a
random one, e.g. the one used by timerfd.

Fix #24672

(cherry picked from commit e7a26d7a6faf1ea534e036c5085a0a027dbb6f5f)

- - - - -
9f2e0f50 by Sylvain Henry at 2024-09-27T17:02:50-04:00
JS: support rubbish static literals (#25177)

Support for rubbish dynamic literals was added in #24664. This patch
does the same for static literals.

Fix #25177

(cherry picked from commit 5092dbff750ee5b6fd082b7eed8574922a2b0bf4)

- - - - -
2101a57a by Sylvain Henry at 2024-09-27T17:02:50-04:00
AARCH64 linker: skip NONE relocations

This patch is part of the patches upstreamed from haskell.nix.
See https://github.com/input-output-hk/haskell.nix/pull/1960 for the
original report/patch.

(cherry picked from commit c749bdfd3e21d712dc2b966482eb010165bdeebe)

- - - - -
08963d26 by Sylvain Henry at 2024-09-27T17:02:50-04:00
Cmm: don't perform unsound optimizations on 32-bit compiler hosts

- beef61351b240967b49169d27a9a19565cf3c4af enabled the use of
  MO_Add/MO_Sub for 64-bit operations in the C and LLVM backends
- 6755d833af8c21bbad6585144b10e20ac4a0a1ab did the same for the x86 NCG
  backend

However we store some literal values as `Int` in the compiler. As a
result, some Cmm optimizations transformed target 64-bit literals into
compiler `Int`. If the compiler is 32-bit, this leads to computing with
wrong literals (see #24893 and #24700).

This patch disables these Cmm optimizations for 32-bit compilers. This
is unsatisfying (optimizations shouldn't be compiler-word-size
dependent) but it fixes the bug and it makes the patch easy to backport.
A proper fix would be much more invasive but it shall be implemented in
the future.

Co-authored-by: amesgen <amesgen at amesgen.de>
(cherry picked from commit 7446a09a2d5b04b95cd43c03659b5647853124ce)

- - - - -
257e836d by sheaf at 2024-09-27T17:02:50-04:00
GHCi debugger: drop record name spaces for Ids

When binding new local variables at a breakpoint, we should create
Ids with variable namespace, and not record field namespace. Otherwise
the rest of the compiler falls over because the IdDetails are wrong.

Fixes #25109

(cherry picked from commit c29b2b5a77611b2bd6c3089765079bc43aec3e22)

- - - - -
b0947c95 by Sylvain Henry at 2024-09-27T17:02:50-04:00
Only lookup ghcversion.h file in the RTS include-dirs by default.

The code was introduced in 3549c952b535803270872adaf87262f2df0295a4.
It used `getPackageIncludePath` which name doesn't convey that it looks
into all include paths of the preload units too. So this behavior is
probably unintentional and it should be ok to change it.

Fix #25106

(cherry picked from commit f954f42823f6ca3588425a0d543d93ace86d89e4)

- - - - -
12460fb2 by Simon Peyton Jones at 2024-09-27T17:02:50-04:00
Address #25055, by disabling case-of-runRW# in Gentle phase

See Note [Case-of-case and full laziness]
in GHC.Driver.Config.Core.Opt.Simplify

(cherry picked from commit de5d9852dbdd367611bf9e45e69c723d26351992)

- - - - -
b2b87083 by doyougnu at 2024-09-27T17:02:50-04:00
Rts linker: add case for pc-rel 64 relocation

part of the upstream haskell.nix patches

(cherry picked from commit bfe4b3d3bbb98b39169fad063c6c32f06d167756)

- - - - -
f77fa175 by Ben Gamari at 2024-09-27T17:12:21-04:00
docs: Add release notes for 9.8.3

- - - - -
fff36b5f by Andreas Klebinger at 2024-09-27T17:14:06-04:00
Fix -freg-graphs for FP and AARch64 NCG (#24941).

It seems we reserve 8 registers instead of four for global regs
based on the layout in Note [AArch64 Register assignments].

I'm not sure it's neccesary, but for now we just accept this state of
affairs and simple update -fregs-graph to account for this.

(cherry picked from commit 3f89ab92da74c4ed45da68fe92ff81e7b9caa53d)

- - - - -
34ff1d29 by Peter Trommler at 2024-09-27T17:51:50-04:00
PPC NCG: Fix sign hints in C calls

Sign hints for parameters are in the second component of the pair.

Fixes #23034

(cherry picked from commit 7fe85b1354a13749f14d588e3cc742b8ae2d8da9)

- - - - -
21fb1084 by Ben Gamari at 2024-09-27T17:52:08-04:00
X86 NCG: Fix argument promotion in foreign C calls

Promote 8 bit and 16 bit signed arguments by sign extension.

Fixes #25018

(cherry picked from commit a82121b3b6fdc2ac47211f71871b3ab21e5f6276)

- - - - -
9de7ea1d by Sylvain Henry at 2024-09-27T18:38:10-04:00
Linker: use m32 allocator for sections when NEED_PLT (#24432)

Use M32 allocator to avoid fragmentation when allocating ELF sections.
We already did this when NEED_PLT was undefined. Failing to do this led
to relocations impossible to fulfil (#24432).

(cherry picked from commit 5104ee615503617a1c124fe1d92f6aa2d263b7d0)

- - - - -
a215f205 by Sylvain Henry at 2024-09-27T18:38:10-04:00
RTS: allow M32 allocation outside of 4GB range when assuming -fPIC

(cherry picked from commit 52d6698479f951e07def237b0474ee22d27e621a)

- - - - -
736b7a38 by Sylvain Henry at 2024-09-27T18:38:10-04:00
Linker: fix stub offset

Remove unjustified +8 offset that leads to memory corruption (cf
discussion in #24432).

(cherry picked from commit c34fef56367142fa55e9861092f64cc7b9946fa1)

- - - - -
7ec14266 by Cheng Shao at 2024-09-27T18:38:31-04:00
compiler: emit NaturallyAligned when element type & index type are the same width

This commit fixes a subtle mistake in alignmentFromTypes that used to
generate Unaligned when element type & index type are the same width.
Fixes #24930.

(cherry picked from commit 0cff083abb24701530974872b21cf897c9955a9a)

- - - - -
075032b8 by Andreas Klebinger at 2024-09-27T18:38:41-04:00
GHCi interpreter: Tag constructor closures when possible.

When evaluating PUSH_G try to tag the reference we are pushing if it's a
constructor. This is potentially helpful for performance and required to
fix #24870.

(cherry picked from commit 1bfa91115b8320ed99a5e946147528e21ca4f3e1)

- - - - -
750d0b1c by crumbtoo at 2024-09-27T18:39:00-04:00
user_guide: Fix typo in MultiWayIf chapter

Close #24829

(cherry picked from commit c5e00c35927d574f71bf77449817b131d1749750)

- - - - -
f064b0f0 by Ryan Scott at 2024-09-27T18:39:34-04:00
Add missing parenthesizePat in cvtp

We need to ensure that the output of `cvtp` is parenthesized (at precedence
`sigPrec`) so that any pattern signatures with a surrounding pattern signature
can parse correctly.

Fixes #24837.

(cherry picked from commit a3cd3a1d0d186f2aa4d0273c6b3e74a442de2ef0)

- - - - -
af9d21c1 by Sylvain Henry at 2024-09-27T18:39:48-04:00
Reverse arguments to stgCallocBytes (fix #24828)

(cherry picked from commit 6838a7c32ca29b5d44adc9d6280d3a960f31be7c)

- - - - -
5cdb0927 by Teo Camarasu at 2024-09-27T18:40:28-04:00
doc: Fix type error in hs_try_putmvar example

(cherry picked from commit 06f7db4001e4eee0f3076d949876f8f4af0eb6fb)

- - - - -
b05463d3 by Matthew Craven at 2024-09-27T18:40:57-04:00
Add test cases for #24664

...since none are present in the original MR !12463 fixing this issue.

(cherry picked from commit a19201d42cfd3aa54faeb1b5a95b715b9a67a01a)

- - - - -
a41e8c45 by Zubin Duggal at 2024-09-27T18:42:34-04:00
compiler: Fingerprint -fwrite-if-simplified-core

We need to recompile if this flag is changed because later modules might depend on the
simplified core for this module if -fprefer-bytecode is enabled.

Fixes #24656

(cherry picked from commit dddc9dff0547733a10e7f505612ab9df3a7c21b6)

- - - - -
f1fe0c4f by Sylvain Henry at 2024-09-27T18:43:07-04:00
JS: correctly handle RUBBISH literals (#24664)

(cherry picked from commit daeda83478d5b800d29661408dd67cc4b23df374)

- - - - -
9280ee6d by Matthew Pickering at 2024-09-27T18:43:32-04:00
Don't depend on registerPackage function in Cabal

More recent versions of Cabal modify the behaviour of libAbiHash which
breaks our usage of registerPackage.

It is simpler to inline the part of registerPackage that we need and
avoid any additional dependency and complication using the higher-level
function introduces.

(cherry picked from commit 3fff09779d5830549ae455a15907b7bb9fe7859a)

- - - - -
f74bf352 by Teo Camarasu at 2024-09-27T18:45:01-04:00
Fix ghc API link in docs/index.html

This was missing part of the unit ID meaning it would 404.

Resolves #24674

(cherry picked from commit f30e4984fb048818051465698ef8e4e20dacb577)

- - - - -


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/primops.txt.pp
- compiler/GHC/ByteCode/Instr.hs
- compiler/GHC/Cmm.hs
- compiler/GHC/Cmm/CallConv.hs
- compiler/GHC/Cmm/Opt.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/AArch64/Regs.hs
- compiler/GHC/CmmToAsm/BlockLayout.hs
- compiler/GHC/CmmToAsm/Monad.hs
- compiler/GHC/CmmToAsm/PPC/CodeGen.hs
- compiler/GHC/CmmToAsm/PPC/Instr.hs
- compiler/GHC/CmmToAsm/Ppr.hs
- compiler/GHC/CmmToAsm/Reg/Graph/TrivColorable.hs
- compiler/GHC/CmmToAsm/Wasm/FromCmm.hs
- compiler/GHC/CmmToAsm/X86.hs


The diff was not included because it is too large.


View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/e4b5cdbdee243e50cc417e1da9507a78222bfb19...f74bf35293e5054c21fdc5d5d7e123bc2489382e

-- 
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/e4b5cdbdee243e50cc417e1da9507a78222bfb19...f74bf35293e5054c21fdc5d5d7e123bc2489382e
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/20240927/957c4a37/attachment-0001.html>


More information about the ghc-commits mailing list