[Git][ghc/ghc][wip/backports-9.6] 72 commits: ci: Change owner of files in test-bootstrap job

Ben Gamari (@bgamari) gitlab at gitlab.haskell.org
Wed Feb 8 00:37:33 UTC 2023



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


Commits:
51343814 by Matthew Pickering at 2023-01-27T08:15:12+00:00
ci: Change owner of files in test-bootstrap job

(cherry picked from commit 00981dc9d5f81f355c3a6276a75c93b87a0a1e6a)

- - - - -
9a91e662 by Matthew Pickering at 2023-01-27T08:15:12+00:00
rel_eng: Add release engineering scripts into ghc tree

It is better to keep these scripts in the tree as they depend on the CI
configuration and so on. By keeping them in tree we can keep them
up-to-date as the CI config changes and also makes it easier to backport
changes to the release script between release branches in future.

The final motivation is that it makes generating GHCUp metadata
possible.

(cherry picked from commit c41aeb303b4e0edbe6acc6476a518958f2656b74)

- - - - -
b8392e1f by Matthew Pickering at 2023-01-27T08:15:12+00:00
ci: Don't use complicated image or clone in not-interruptible job

This job exists only for the meta-reason of not allowing nightly
pipelines to be cancelled. It was taking two minutes to run as in order
to run "true" we would also clone the whole GHC repo.

(cherry picked from commit e9cfc723f3225c56a0acd5eb4288be321fd58070)

- - - - -
78a84385 by Matthew Pickering at 2023-01-27T08:16:54+00:00
Add scripts to generate ghcup metadata on nightly and release pipelines

1. A python script in .gitlab/rel_eng/mk-ghcup-metadata which generates
   suitable metadata for consumption by GHCUp for the relevant
   pipelines.

  - The script generates the metadata just as the ghcup maintainers
    want, without taking into account platform/library combinations. It
    is updated manually when the mapping changes.

  - The script downloads the bindists which ghcup wants to distribute,
    calculates the hash and generates the yaml in the correct structure.

  - The script is documented in the .gitlab/rel_eng/mk-ghcup-metadata/README.mk file

1a. The script requires us to understand the mapping from platform ->
    job. To choose the preferred bindist for each platform the
    .gitlab/gen_ci.hs script is modified to allow outputting a metadata
    file which answers the question about which job produces the
    bindist which we want to distribute to users for a specific
    platform.

2. Pipelines to run on nightly and release jobs to generate metadata

  - ghcup-metadata-nightly: Generates metadata which points directly to
    artifacts in the nightly job.

  - ghcup-metadata-release: Generates metadata suitable for inclusion
    directly in ghcup by pointing to the downloads folder where the
    bindist will be uploaded to.

2a. Trigger jobs which test the generated metadata in the downstream
    `ghccup-ci` repo. See that repo for documentation about what is
    tested and how but essentially we test in a variety of clean images
    that ghcup can download and install the bindists we say exist in our
    metadata.

(cherry picked from commit ef4ffd9d696ff239c16894d4a958e052da7b009e)

- - - - -
f8828f2c by Matthew Pickering at 2023-01-27T08:16:55+00:00
ci: Add ubuntu18_04 nightly and release jobs

This adds release jobs for ubuntu18_04 which uses glibc 2.27 which is
older than the 2.28 which is used by Rocky8 bindists.

Ticket #22268

(cherry picked from commit 0a022207a3204c8952a2564ed88c83f748e8cac1)

- - - - -
d6cdf22c by Matthew Pickering at 2023-01-27T08:16:55+00:00
rel-eng: Add missing rocky8 bindist

We intend to release rocky8 bindist so the fetching script needs to know
about them.

(cherry picked from commit 2e3dbafa57013b250c92b031ce50962d4f5e13a3)

- - - - -
b19c8231 by Matthew Pickering at 2023-01-27T08:16:55+00:00
Store dehydrated data structures in CgModBreaks

This fixes a tricky leak in GHCi where we were retaining old copies of
HscEnvs when reloading. If not all modules were recompiled then these
hydrated fields in break points would retain a reference to the old
HscEnv which could double memory usage.

Fixes #22530

(cherry picked from commit 1262d3f8c03799a04d3c5fcf33d4d4db715ca9a1)

- - - - -
e69e7e00 by Matthew Pickering at 2023-01-27T08:16:55+00:00
Force more in NFData Name instance

Doesn't force the lazy `OccName` field (#19619) which is already known
as a really bad source of leaks.

When we slam the hammer storing Names on disk (in interface files or the
like), all this should be forced as otherwise a `Name` can easily retain
an `Id` and hence the entire world.

Fixes #22833

(cherry picked from commit e27eb80cc7e0c82e07fbd8d9ae8112d9070c4355)

- - - - -
c38610e4 by Matthew Pickering at 2023-01-27T08:16:55+00:00
Force OccName in tidyTopName

This occname has just been derived from an `Id`, so need to force it
promptly so we can release the Id back to the world.

Another symptom of the bug caused by #19619

(cherry picked from commit 3d004d5a961fbbbe11da1050b725468a970bee4b)

- - - - -
2817ae28 by Matthew Pickering at 2023-01-27T08:16:55+00:00
Strict fields in ModNodeKey (otherwise retains HomeModInfo)

Towards #22530

(cherry picked from commit f2a0fea09a88693d876fb891ea7c8c97373c4aa6)

- - - - -
d8d1d1c7 by Alexis King at 2023-01-27T08:16:55+00:00
Handle top-level Addr# literals in the bytecode compiler

Fixes #22376.

(cherry picked from commit 476d98d4fcccb54a37ec2d9c0fed79696237c166)

- - - - -
f1211618 by Simon Peyton Jones at 2023-01-27T08:16:55+00:00
Fix in-scope set in specImports

Nothing deep here; I had failed to bring some
floated dictionary binders into scope.

Exposed by -fspecialise-aggressively

Fixes #22715.

(cherry picked from commit 13a0566b58ecc295883b11f20045b4214d8acd72)

- - - - -
e2342747 by Ben Gamari at 2023-01-27T08:16:55+00:00
base: Make changelog proposal references more consistent

Addresses #22773.

(cherry picked from commit f410d70a5543240015d7404ff529bdcaaec8d675)

- - - - -
ef21780f by Sylvain Henry at 2023-01-27T08:16:55+00:00
Hadrian: correctly detect AR at-file support

Stage0's ar may not support at-files. Take it into account.

Found while cross-compiling from Darwin to Windows.

(cherry picked from commit e987e345c807035e4637ca3eae227ae501e16c42)

- - - - -
7d86db2b by Sylvain Henry at 2023-01-27T08:16:55+00:00
Hadrian: fix Windows cross-compilation

Decision to build either unix or Win32 package must be stage specific
for cross-compilation to be supported.

(cherry picked from commit 48131ee2d8ba7074a4c2763a32c12df105305a75)

- - - - -
e0d9ef66 by Sylvain Henry at 2023-01-27T08:16:55+00:00
Fix RTS build on Windows

This change fixes a cross-compilation issue from ArchLinux to Windows
because these symbols weren't found.

(cherry picked from commit 288fa0179a2f54e4594afe184eac71cc85c46643)

- - - - -
826a3112 by Sylvain Henry at 2023-01-27T08:16:55+00:00
configure: support "windows" as an OS

(cherry picked from commit 2fdf22aebda2307d86872c792633d1856d666c9b)

- - - - -
b6ffad2a by Matthew Pickering at 2023-01-27T08:16:55+00:00
ghcup metadata: Fix subdir for windows bindist

(cherry picked from commit 159426acb90f7db394ec40dfe22d4999a9190e6e)

- - - - -
bee2a616 by Matthew Pickering at 2023-01-27T08:16:55+00:00
ghcup metadata: Remove viPostRemove field from generated metadata

This has been removed from the downstream metadata.

(cherry picked from commit 7915f039a37f6496ec572f33ddb204a5709f7020)

- - - - -
601938b5 by Andrei Borzenkov at 2023-01-27T08:16:55+00:00
Fix printing of promoted MkSolo datacon (#22785)

Problem: In 2463df2f, the Solo data constructor was renamed to MkSolo,
and Solo was turned into a pattern synonym for backwards compatibility.
Since pattern synonyms can not be promoted, the old code that pretty-printed
promoted single-element tuples started producing ill-typed code:
   t :: Proxy ('Solo Int)
This fails with "Pattern synonym ‘Solo’ used as a type"

The solution is to track the distinction between type constructors and data
constructors more carefully when printing single-element tuples.

(cherry picked from commit 14b5982a3aea351e4b01c5804ebd4d4629ba6bab)

- - - - -
3e6ca4d1 by Vladislav Zavialov at 2023-01-27T08:16:55+00:00
Enable -Wstar-is-type by default (#22759)

Following the plan in GHC Proposal #143 "Remove the * kind syntax",
which states:

	In the next release (or 3 years in), enable -fwarn-star-is-type by default.

The "next release" happens to be 9.6.1

I also moved the T21583 test case from should_fail to should_compile,
because the only reason it was failing was -Werror=compat in our test
suite configuration.

(cherry picked from commit e9c0537cfbf7b47c64f592f529e402358b66ca7f)

- - - - -
6d788b11 by Matthew Pickering at 2023-01-27T08:44:42+00:00
ci: Remove FreeBSD job from release pipelines

We no longer attempt to build or distribute this release

- - - - -
9c263aff by Matthew Pickering at 2023-01-27T08:46:57+00:00
rel_eng: Add check to make sure that release jobs are downloaded by fetch-gitlab

This check makes sure that if a job is a prefixed by "release-" then the
script downloads it and understands how to map the job name to the
platform.

- - - - -
0751f56a by Matthew Pickering at 2023-01-27T08:47:41+00:00
rel_eng: Fix the name of the ubuntu-* jobs

These were not uploaded for alpha1

Fixes #22844

- - - - -
e740dd68 by Ben Gamari at 2023-01-27T10:47:19-05:00
upload_ghc_libs: Don't handle `--skip` in `prepare` mode

- - - - -
19a68c78 by Matthew Pickering at 2023-01-28T10:17:37+00:00
gen_ci: Only consider release jobs for job metadata

In particular we do not have a release job for FreeBSD so the generation
of the platform mapping was failing.

- - - - -
f9b50be4 by Andreas Klebinger at 2023-02-01T10:24:41+00:00
ghc-the-library: Retain cafs in both static in dynamic builds.

We use keepCAFsForGHCi.c to force -fkeep-cafs behaviour by using a
__attribute__((constructor)) function.

This broke for static builds where the linker discarded the object file
since it was not reverenced from any exported code. We fix this by
asserting that the flag is enabled using a function in the same module
as the constructor. Which causes the object file to be retained by the
linker, which in turn causes the constructor the be run in static builds.

This changes nothing for dynamic builds using the ghc library. But causes
static to also retain CAFs (as we expect them to).

Fixes #22417.

-------------------------
Metric Decrease:
    T21839r
-------------------------

(cherry picked from commit 08ba87200ff068aa37cac082e61ee7e2d534daf5)

- - - - -
4ed5ea30 by Richard Eisenberg at 2023-02-01T10:43:36+00:00
Do newtype unwrapping in the canonicaliser and rewriter

See Note [Unwrap newtypes first], which has the details.

Close #22519.

(cherry picked from commit 3e827c3f74ef76d90d79ab6c4e71aa954a1a6b90)

- - - - -
31b63c46 by Alan Zimmerman at 2023-02-01T10:48:59+00:00
EPA: exact print HsDocTy

To match ghc-exactprint
https://github.com/alanz/ghc-exactprint/pull/121

(cherry picked from commit 965a273510adfac4f041a31182c2fec82e614e47)

- - - - -
f19eb3ac by Alan Zimmerman at 2023-02-01T10:51:36+00:00
EPA: Add annotation for 'type' in DataDecl

Closes #22765

(cherry picked from commit 97ac8230b0a645aae27b7ee42aa55b0c84735684)

- - - - -
686350e9 by Alan Zimmerman at 2023-02-01T13:18:46+00:00
EPA: Add SourceText to HsOverLabel

To be able to capture string literals with possible escape codes as labels.

Close #22771

(cherry picked from commit fec7c2ea8242773b53b253d9536426f743443944)

- - - - -
9cdab037 by Ben Gamari at 2023-02-01T13:18:46+00:00
rts: Use C11-compliant static assertion syntax

Previously we used `static_assert` which is only available in C23. By
contrast, C11 only provides `_Static_assert`.

Fixes #22777

(cherry picked from commit e480fbc2c6fdcb252847fc537ab7ec50d1dc2dfd)

- - - - -
be39064e by Ben Gamari at 2023-02-01T13:18:46+00:00
Revert "CApiFFI: add ConstPtr for encoding const-qualified pointer return types (#22043)"

This reverts commit 99aca26b652603bc62953157a48e419f737d352d.

(cherry picked from commit 56c1bd986ac13e3a1fe1149f011480e44f857f5a)

- - - - -
80a6bb73 by nineonine at 2023-02-01T13:18:46+00:00
CApiFFI: add ConstPtr for encoding const-qualified pointer return types

Previously, when using `capi` calling convention in foreign declarations,
code generator failed to handle const-cualified pointer return types.
This resulted in CC toolchain throwing `-Wincompatible-pointer-types-discards-qualifiers`
warning.

`Foreign.C.Types.ConstPtr` newtype was introduced to handle these cases -
special treatment was put in place to generate appropritetly qualified C
wrapper that no longer triggers the above mentioned warning.

Fixes #22043.

(cherry picked from commit b3a3534b6f75b34dc4db76e904e071485da6d5cc)

- - - - -
3c21d69d by Ben Gamari at 2023-02-01T13:18:46+00:00
nativeGen/AArch64: Fix debugging output

Previously various panics would rely on a half-written Show
instance, leading to very unhelpful errors. Fix this.

See #22798.

(cherry picked from commit be417a47c7695998dea0adc05489a7b8838a78b6)

- - - - -
ac6c24f7 by Ben Gamari at 2023-02-01T13:18:46+00:00
nativeGen: Teach graph-colouring allocator that x18 is unusable

Previously trivColourable for AArch64 claimed that at 18 registers were
trivially-colourable. This is incorrect as x18 is reserved by the platform on
AArch64/Darwin.

See #22798.

(cherry picked from commit 30989d137b8f3a8fddbfd116e04b48f23c24f86c)

- - - - -
6c212ccc by Ben Gamari at 2023-02-01T13:18:46+00:00
nativeGen/AArch64: Fix graph-colouring allocator

Previously various `Instr` queries used by the graph-colouring allocator
failed to handle a few pseudo-instructions. This manifested in compiler
panicks while compiling `SHA`, which uses `-fregs-graph`.

Fixes #22798.

(cherry picked from commit 7566fd9de38c67360c090f828923d41587af519c)

- - - - -
79241b6d by Ben Gamari at 2023-02-01T13:18:46+00:00
testsuite: Add regression test for #22798

(cherry picked from commit 2cb500a5ee1a31dfe1a2cdd71f175442026eb082)

- - - - -
d9e8c39d by Simon Peyton Jones at 2023-02-01T13:18:46+00:00
Detect family instance orphans correctly

We were treating a type-family instance as a non-orphan if there
was a type constructor on its /right-hand side/ that was local. Boo!
Utterly wrong. With this patch, we correctly check the /left-hand side/
instead!

Fixes #22717

(cherry picked from commit 638277ba7bd2683f539afb0bf469fe75376994e2)

- - - - -
86dc9a79 by Zubin Duggal at 2023-02-01T13:18:46+00:00
bindist configure: Fail if find not found (#22691)

(cherry picked from commit c9967d137cff83c7688e26f87a8b5e196a75ec93)

- - - - -
86d88743 by Oleg Grenrus at 2023-02-01T13:18:47+00:00
Add Foldable1 Solo instance

(cherry picked from commit 082b7d43ee4b8203dc9bca53e5e1f7a45c42eeb8)

- - - - -
2eb49ea6 by Krzysztof Gogolewski at 2023-02-01T13:18:47+00:00
Support "unusable UNPACK pragma" warning with -O0

Fixes #11270

(cherry picked from commit f83374f8649e5d8413e7ed585b0e058690c38563)

- - - - -
632937bb by Ryan Scott at 2023-02-01T13:18:47+00:00
Handle `type data` properly in tyThingParent_maybe

Unlike most other data constructors, data constructors declared with `type data`
are represented in `TyThing`s as `ATyCon` rather than `ADataCon`. The `ATyCon`
case in `tyThingParent_maybe` previously did not consider the possibility of
the underlying `TyCon` being a promoted data constructor, which led to the
oddities observed in #22817. This patch adds a dedicated special case in
`tyThingParent_maybe`'s `ATyCon` case for `type data` data constructors to fix
these oddities.

Fixes #22817.

(cherry picked from commit 20598ef6d9e26e2e0af9ac42a42e7be00d7cc4f3)

- - - - -
2efb886c by Ryan Scott at 2023-02-01T13:18:47+00:00
Fix two bugs in TypeData TH reification

This patch fixes two issues in the way that `type data` declarations were
reified with Template Haskell:

* `type data` data constructors are now properly reified using `DataConI`.
  This is accomplished with a special case in `reifyTyCon`. Fixes #22818.

* `type data` type constructors are now reified in `reifyTyCon` using
  `TypeDataD` instead of `DataD`. Fixes #22819.

(cherry picked from commit 2f1450521b816a7d287b72deba14d59b6ccfbdbf)

- - - - -
fc117e3d by Ben Gamari at 2023-02-01T13:18:47+00:00
configure: Always create the VERSION file

Teach the `configure` script to create the `VERSION` file.
This will serve as the stable interface to allow the user to determine
the version number of a working tree.

Fixes #22322.

(cherry picked from commit a2d814dc84dbdcdb6c1e274b8bd7c212cc98c39e)

- - - - -
6e1498fa by Ben Gamari at 2023-02-01T13:18:47+00:00
hadrian: Sphinx docs require templated cabal files

The package-version discovery logic in
`doc/users_guide/package_versions.py` uses packages' cabal files to
determine package versions. Teach Sphinx about these dependencies in
cases where the cabal files are generated by templates.

(cherry picked from commit f838815c365773a8107bf035a8ec27b8ff6ecc8b)

- - - - -
1f42664c by Ben Gamari at 2023-02-01T13:18:47+00:00
hadrian: Refactor templating logic

This refactors Hadrian's autoconf-style templating logic to be explicit
about which interpolation variables should be substituted in which
files. This clears the way to fix #22714 without incurring rule cycles.

(cherry picked from commit 2e48c19a7faf975318e954faea26f37deb763ac0)

- - - - -
653c7513 by Ben Gamari at 2023-02-01T13:18:47+00:00
hadrian: Substitute LIBRARY_*_VERSION variables

This teaches Hadrian to substitute the `LIBRARY_*_VERSION` variables
in `libraries/prologue.txt`, fixing #22714.

Fixes #22714.

(cherry picked from commit 93f0e3c49cea484bd6e838892ff8702ec51f34c3)

- - - - -
3ac79844 by Simon Peyton Jones at 2023-02-01T13:18:47+00:00
Take account of loop breakers in specLookupRule

The key change is that in GHC.Core.Opt.Specialise.specLookupRule
we were using realIdUnfolding, which ignores the loop-breaker
flag.  When given a loop breaker, rule matching therefore
looped infinitely -- #22802.

In fixing this I refactored a bit.

* Define GHC.Core.InScopeEnv as a data type, and use it.
  (Previously it was a pair: hard to grep for.)

* Put several functions returning an IdUnfoldingFun into
  GHC.Types.Id, namely
     idUnfolding
     alwaysActiveUnfoldingFun,
     whenActiveUnfoldingFun,
     noUnfoldingFun
  and use them.  (The are all loop-breaker aware.)

(cherry picked from commit d0f34f25ceaae9ef0a21f15f811469d0bed9da69)

- - - - -
fb186399 by Bodigrim at 2023-02-01T13:18:47+00:00
Document differences between Data.{Monoid,Semigroup}.{First,Last}

(cherry picked from commit c9ad8852bdd083f8692361134bc247a1eb2bbd77)

- - - - -
fdfd8911 by Cheng Shao at 2023-02-01T13:18:47+00:00
compiler: fix subword literal narrowing logic in the wasm NCG

This patch fixes the W8/W16 literal narrowing logic in the wasm NCG,
which used to lower it to something like i32.const -1, without
properly zeroing-out the unused higher bits. Fixes #22608.

(cherry picked from commit 7e11c6dc25cb9dd14ae33ee9715ddbc8ebf9836e)

- - - - -
adf17604 by Cheng Shao at 2023-02-01T13:18:47+00:00
compiler: fix lowering of CmmBlock in the wasm NCG

The CmmBlock datacon was not handled in lower_CmmLit, since I thought
it would have been eliminated after proc-point splitting. Turns out it
still occurs in very rare occasions, and this patch is needed to fix
T9329 for wasm.

(cherry picked from commit 6ea2aa0293aedea2f873b7b5d9cff5e7b9e2f188)

- - - - -
329097fc by Matthew Pickering at 2023-02-01T13:18:47+00:00
Fixes for cabal-reinstall CI job

* Allow filepath to be reinstalled
* Bump some version bounds to allow newer versions of libraries
* Rework testing logic to avoid "install --lib" and package env files

Fixes #22344

(cherry picked from commit 7cbdaad0396cee561f125c95f3352cebabd8ed99)

- - - - -
5695611e by Cheng Shao at 2023-02-01T13:18:47+00:00
compiler: properly handle ForeignHints in the wasm NCG

Properly handle ForeignHints of ccall arguments/return value, insert
sign extends and truncations when handling signed subwords. Fixes #22852.

(cherry picked from commit 78c07219d5dad9730bbe3ec26ad22912ff22f058)

- - - - -
c4cc32d9 by Cheng Shao at 2023-02-01T13:18:47+00:00
compiler: fix data section alignment in the wasm NCG

Previously we tried to lower the alignment requirement as far as
possible, based on the section kind inferred from the CLabel. For info
tables, .p2align 1 was applied given the GC should only need the
lowest bit to tag forwarding pointers. But this would lead to
unaligned loads/stores, which has a performance penalty even if the
wasm spec permits it. Furthermore, the test suite has shown memory
corruption in a few cases when compacting gc is used.

This patch takes a more conservative approach: all data sections
except C strings align to word size.

(cherry picked from commit da468391872f6be286db37a0f016a37f9f362509)

- - - - -
8f29bdae by Cheng Shao at 2023-02-01T13:18:47+00:00
rts: prevent potential divide-by-zero when tickInterval=0

This patch fixes a few places in RtsFlags.c that may result in
divide-by-zero error when tickInterval=0, which is the default on
wasm. Fixes #22603.

(cherry picked from commit fd8f32bf551c34b95275ebb4fe648680013156f3)

- - - - -
343c856f by Cheng Shao at 2023-02-01T13:18:47+00:00
testsuite: use tgamma for cg007

gamma is a glibc-only deprecated function, use tgamma instead. It's
required for fixing cg007 when testing the wasm unregisterised
codegen.

(cherry picked from commit 7716cbe64862932fd69348b2594a14f2092e1c02)

- - - - -
e377aa49 by Ben Gamari at 2023-02-01T13:18:47+00:00
Bump transformers submodule to 0.6.0.6

Fixes #22862.

(cherry picked from commit 22089f693cf6e662a58a7011adb94d7f768ad2d7)

- - - - -
d91e6233 by Cheng Shao at 2023-02-01T13:18:47+00:00
compiler: properly handle non-word-sized CmmSwitch scrutinees in the wasm NCG

Currently, the wasm NCG has an implicit assumption: all CmmSwitch
scrutinees are 32-bit integers. This is not always true; #22864 is one
counter-example with a 64-bit scrutinee. This patch fixes the logic by
explicitly converting the scrutinee to a word that can be used as a
br_table operand. Fixes #22871. Also includes a regression test.

(cherry picked from commit f0eefa3cf058879246991747dcd18c811402f9e5)

- - - - -
30d3c827 by Ben Gamari at 2023-02-01T13:18:47+00:00
nativeGen/X86: MFENCE is unnecessary for release semantics

In #22764 a user noticed that a program implementing a simple atomic
counter via an STRef regressed significantly due to the introduction of
necessary atomic operations in the MutVar# primops (#22468). This
regression was caused by a bug in the NCG, which emitted an unnecessary
MFENCE instruction for a release-ordered atomic write. MFENCE is rather
only needed to achieve sequentially consistent ordering.

Fixes #22764.

(cherry picked from commit f058e3672b969f301b6b1637f8ab081654ec947a)

- - - - -
cbd60c81 by Matthew Pickering at 2023-02-07T19:27:16-05:00
Disable unfolding sharing for interface files with core definitions

Ticket #22807 pointed out that the RHS sharing was not compatible with
-fignore-interface-pragmas because the flag would remove unfoldings from
identifiers before the `extra-decls` field was populated.

For the 9.6 timescale the only solution is to disable this sharing,
which will make interface files bigger but this is acceptable for the
first release of `-fwrite-if-simplified-core`.

For 9.8 it would be good to fix this by implementing #20056 due to the
large number of other bugs that would fix.

I also improved the error message in tc_iface_binding to avoid the "no match
in record selector" error but it should never happen now as the entire
sharing logic is disabled.

Also added the currently broken test for #22807 which could be fixed by
!6080

Fixes #22807

(cherry picked from commit 0ada454703560b733fe3c920b87496ac1238c29e)

- - - - -
18942043 by Bodigrim at 2023-02-07T19:27:23-05:00
Bump submodule containers to 0.6.7

Metric Decrease:
    ManyConstructors
    T10421
    T12425
    T12707
    T13035
    T13379
    T15164
    T1969
    T783
    T9198
    T9961
    WWRec

(cherry picked from commit 3135819847aae0cdcc6c2fca4a2234fcfed1db93)

- - - - -
86698692 by Andreas Klebinger at 2023-02-07T19:27:30-05:00
Fix CallerCC potentially shadowing other cost centres.

Add a CallerCC cost centre flavour for cost centres added by the
CallerCC pass. This avoids potential accidental shadowing between
CCs added by user annotations and ones added by CallerCC.

(cherry picked from commit bf3f88a1a5b23bdf304baca473c3ee797c5f86bd)

- - - - -
c6c96a3a by Ben Gamari at 2023-02-07T19:27:36-05:00
Revert "Use fix-sized bit-fiddling primops for fixed size boxed types"

This reverts commit 4512ad2d6a8e65ea43c86c816411cb13b822f674.

This was never applied to master/9.6 originally.

(cherry picked from commit a44bdc2720015c03d57f470b759ece7fab29a57a)
(cherry picked from commit 25537dfda4ae59bc0321b229ca9ff924ef64d1fa)

- - - - -
51397a53 by Bodigrim at 2023-02-07T19:27:42-05:00
Fix colors in emacs terminal

(cherry picked from commit 5a54ac0b2b915889950c83e04bf1beb08631891e)

- - - - -
2c7f85fe by Ryan Scott at 2023-02-07T19:27:58-05:00
Windows: Remove mingwex dependency

The clang based toolchain uses ucrt as its math library
and so mingwex is no longer needed.  In fact using mingwex
will cause incompatibilities as the default routines in both
have differing ULPs and string formatting modifiers.

```
$ LIBRARY_PATH=/mingw64/lib ghc/_build/stage1/bin/ghc Bug.hs -fforce-recomp && ./Bug.exe
[1 of 2] Compiling Main             ( Bug.hs, Bug.o )
ghc.exe:  | C:\Users\winferno\Software\ghc\_build\stage1\lib\x86_64-windows-ghc-9.5.20220908\base-4.17.0.0\libHSbase-4.17.0.0.a: unknown symbol `__imp___p__environ'
ghc.exe:  | C:\Users\winferno\Software\ghc\_build\stage1\lib\x86_64-windows-ghc-9.5.20220908\base-4.17.0.0\libHSbase-4.17.0.0.a: unknown symbol `__hscore_get_errno'
ghc.exe:  | C:\Users\winferno\Software\ghc\_build\stage1\lib\x86_64-windows-ghc-9.5.20220908\base-4.17.0.0\libHSbase-4.17.0.0.a: unknown symbol `base_ForeignziCziError_errnoToIOError_info'
ghc.exe:  | C:\Users\winferno\Software\ghc\_build\stage1\lib\x86_64-windows-ghc-9.5.20220908\base-4.17.0.0\libHSbase-4.17.0.0.a: unknown symbol `base_GHCziWindows_failIf2_closure'
ghc.exe:  | C:\Users\winferno\Software\ghc\_build\stage1\lib\x86_64-windows-ghc-9.5.20220908\base-4.17.0.0\libHSbase-4.17.0.0.a: unknown symbol `base_GHCziIOziEncodingziCodePageziAPI_mkCodePageEncoding_info'
ghc.exe:  | C:\Users\winferno\Software\ghc\_build\stage1\lib\x86_64-windows-ghc-9.5.20220908\base-4.17.0.0\libHSbase-4.17.0.0.a: unknown symbol `base_GHCziIOziEncodingziCodePage_currentCodePage_closure'
ghc.exe:  | C:\Users\winferno\Software\ghc\_build\stage1\lib\x86_64-windows-ghc-9.5.20220908\base-4.17.0.0\libHSbase-4.17.0.0.a: unknown symbol `base_GHCziIOziEncoding_getForeignEncoding_closure'
ghc.exe:  | C:\Users\winferno\Software\ghc\_build\stage1\lib\x86_64-windows-ghc-9.5.20220908\base-4.17.0.0\libHSbase-4.17.0.0.a: unknown symbol `base_ForeignziCziString_withCStringLen1_info'
ghc.exe:  | C:\Users\winferno\Software\ghc\_build\stage1\lib\x86_64-windows-ghc-9.5.20220908\base-4.17.0.0\libHSbase-4.17.0.0.a: unknown symbol `base_GHCziIOziHandleziInternals_zdwflushCharReadBuffer_info'
ghc.exe:  | C:\Users\winferno\Software\ghc\_build\stage1\lib\x86_64-windows-ghc-9.5.20220908\base-4.17.0.0\libHSbase-4.17.0.0.a: unknown symbol `base_GHCziIOziHandleziText_hGetBuf1_info'
ghc.exe:  | C:\Users\winferno\Software\ghc\_build\stage1\lib\x86_64-windows-ghc-9.5.20220908\base-4.17.0.0\libHSbase-4.17.0.0.a: unknown symbol `base_GHCziFingerprint_fingerprintString_closure'
ghc.exe:  | C:\Users\winferno\Software\ghc\_build\stage1\lib\x86_64-windows-ghc-9.5.20220908\base-4.17.0.0\libHSbase-4.17.0.0.a: unknown symbol `base_DataziTypeableziInternal_mkTrCon_closure'
ghc.exe:  | C:\Users\winferno\Software\ghc\_build\stage1\lib\x86_64-windows-ghc-9.5.20220908\base-4.17.0.0\libHSbase-4.17.0.0.a: unknown symbol `base_GHCziException_errorCallWithCallStackException_closure'
ghc.exe:  | C:\Users\winferno\Software\ghc\_build\stage1\lib\x86_64-windows-ghc-9.5.20220908\base-4.17.0.0\libHSbase-4.17.0.0.a: unknown symbol `base_GHCziErr_error_info'
ghc.exe:  | C:\Users\winferno\Software\ghc\_build\stage1\lib\x86_64-windows-ghc-9.5.20220908\template-haskell-2.19.0.0\libHStemplate-haskell-2.19.0.0.a: unknown symbol `base_DataziMaybe_fromJust1_info'
ghc.exe:  | C:\Users\winferno\Software\ghc\_build\stage1\lib\x86_64-windows-ghc-9.5.20220908\template-haskell-2.19.0.0\libHStemplate-haskell-2.19.0.0.a: unknown symbol `templatezmhaskell_LanguageziHaskellziTHziSyntax_IntPrimL_con_info'
ghc.exe: ^^ Could not load 'templatezmhaskell_LanguageziHaskellziTHziLibziInternal_stringL_closure', dependency unresolved. See top entry above.

<no location info>: error:

GHC.ByteCode.Linker.lookupCE
During interactive linking, GHCi couldn't find the following symbol:
  templatezmhaskell_LanguageziHaskellziTHziLibziInternal_stringL_closure
This may be due to you not asking GHCi to load extra object files,
archives or DLLs needed by your current session.  Restart GHCi, specifying
the missing library using the -L/path/to/object/dir and -lmissinglibname
flags, or simply by naming the relevant files on the GHCi command line.
Alternatively, this link failure might indicate a bug in GHCi.
If you suspect the latter, please report this as a GHC bug:
  https://www.haskell.org/ghc/reportabug
```

(cherry picked from commit de1d15127ac3f41ac3044215b0ea3398a36edc89)

- - - - -
81873448 by Tamar Christina at 2023-02-07T19:27:59-05:00
linker: Fix BFD import libraries

This commit fixes the BFD style import library support in the runtime
linker.  This was accidentally broken during the refactoring to clang
and went unnoticed because clang itself is unable to generate the BFD
style import libraries.

With this change we can not link against both GCC or Clang produced
libraries again and intermix code produced by both compilers.

(cherry picked from commit 48e391952c17ff7eab10b0b1456e3f2a2af28a9b)

- - - - -
18d1c5f9 by Ben Gamari at 2023-02-07T19:29:38-05:00
Bump Windows toolchain

Updates to LLVM 14, hopefully fixing #21964.

(cherry picked from commit b2bb3e62275cc1d9e00a2d5ed511843192133ed5)

- - - - -
2ec1c359 by Luite Stegeman at 2023-02-07T19:29:54-05:00
Fix marking async exceptions in the JS backend

Async exceptions are posted as a pair of the exception and
the thread object. This fixes the marking pass to correctly
follow the two elements of the pair.

Potentially fixes #22836

(cherry picked from commit 77a8234c5d284846e18c0a44ba5ee196059aaea6)

- - - - -
8ab4d956 by sheaf at 2023-02-07T19:30:16-05:00
Don't allow . in overloaded labels

This patch removes . from the list of allowed characters in a non-quoted
overloaded label, as it was realised this steals syntax, e.g. (#.).

Users who want this functionality will have to add quotes around the
label, e.g. `#"17.28"`.

Fixes #22821

(cherry picked from commit b17fb3d96bd2e9f3bf96392f3b3b3e0aed7fe276)

- - - - -
dce53f5c by Ben Gamari at 2023-02-07T19:30:22-05:00
Revert "Use fix-sized equality primops for fixed size boxed types"

This reverts commit 024020c38126f3ce326ff56906d53525bc71690c.

This was never applied to master/9.6 originally.

See #20405 for why using these primops is a bad idea.

(cherry picked from commit b1d109ad542e4c37ae5af6ace71baf2cb509d865)
(cherry picked from commit 929161943f19e1673288adc83d165ddc99865798)

- - - - -
bafa3899 by Sylvain Henry at 2023-02-07T19:37:15-05:00
JS: replace "js" architecture with "javascript"

Despite Cabal supporting any architecture name, `cabal --check` only
supports a few built-in ones. Sadly `cabal --check` is used by Hackage
hence using any non built-in name in a package (e.g. `arch(js)`) is
rejected and the package is prevented from being uploaded on Hackage.

Luckily built-in support for the `javascript` architecture was added for
GHCJS a while ago. In order to allow newer `base` to be uploaded on
Hackage we make the switch from `js` to `javascript` architecture.

Fixes #22740.

Co-authored-by: Ben Gamari <ben at smart-cactus.org>
(cherry picked from commit 6636b670233522f01d002c9b97827d00289dbf5c)

- - - - -


30 changed files:

- .gitlab-ci.yml
- .gitlab/gen_ci.hs
- + .gitlab/generate_job_metadata
- .gitlab/generate_jobs
- .gitlab/jobs.yaml
- + .gitlab/rel_eng/default.nix
- + .gitlab/rel_eng/fetch-gitlab-artifacts/.gitignore
- + .gitlab/rel_eng/fetch-gitlab-artifacts/README.mkd
- + .gitlab/rel_eng/fetch-gitlab-artifacts/default.nix
- + .gitlab/rel_eng/fetch-gitlab-artifacts/fetch_gitlab.py
- + .gitlab/rel_eng/fetch-gitlab-artifacts/setup.py
- + .gitlab/rel_eng/mk-ghcup-metadata/.gitignore
- + .gitlab/rel_eng/mk-ghcup-metadata/README.mkd
- + .gitlab/rel_eng/mk-ghcup-metadata/default.nix
- + .gitlab/rel_eng/mk-ghcup-metadata/mk_ghcup_metadata.py
- + .gitlab/rel_eng/mk-ghcup-metadata/setup.py
- + .gitlab/rel_eng/nix/sources.json
- + .gitlab/rel_eng/nix/sources.nix
- + .gitlab/rel_eng/upload.sh
- .gitlab/upload_ghc_libs.py → .gitlab/rel_eng/upload_ghc_libs.py
- cabal.project-reinstall
- compiler/GHC.hs
- compiler/GHC/Builtin/Names.hs
- compiler/GHC/Builtin/Types.hs-boot
- compiler/GHC/ByteCode/Asm.hs
- compiler/GHC/ByteCode/Instr.hs
- compiler/GHC/ByteCode/Linker.hs
- compiler/GHC/ByteCode/Types.hs
- compiler/GHC/CmmToAsm/AArch64/Instr.hs
- compiler/GHC/CmmToAsm/Reg/Graph/TrivColorable.hs


The diff was not included because it is too large.


View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/bc2c7480ca1dd4abb72fa31b76e14d420337bfc0...bafa389975872e1dec6925e05ee0efc349656110

-- 
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/bc2c7480ca1dd4abb72fa31b76e14d420337bfc0...bafa389975872e1dec6925e05ee0efc349656110
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/20230207/8b84275e/attachment-0001.html>


More information about the ghc-commits mailing list