[Git][ghc/ghc][wip/bump-text] 148 commits: Fix #17724 by having occAnal preserve used bindings.

Ben Gamari gitlab at gitlab.haskell.org
Fri Aug 21 15:31:50 UTC 2020



Ben Gamari pushed to branch wip/bump-text at Glasgow Haskell Compiler / GHC


Commits:
7fc34aed by Andreas Klebinger at 2020-02-22T18:43:59-05:00
Fix #17724 by having occAnal preserve used bindings.

It sometimes happened that occAnal would remove bindings
as dead code by relying on bindings to be in dependency
order. The fix was contributed by SPJ.

(cherry picked from commit 6de966f1369740d00193e64ec82d11e934256616)

- - - - -
19565411 by Ben Gamari at 2020-02-22T18:44:33-05:00
Set RELEASE=YES

- - - - -
5ccd851f by Alexis King at 2020-02-22T18:49:33-05:00
Treat coercions as arguments for floating and inlining

This reverts commit 8924224ecfa065ebc67b96a90d01cf9d2edd0e77
and fixes #17787.

(cherry picked from commit 54c8641df70961fd57ff89ec52596a2898a048d7)

- - - - -
ff95136b by Ben Gamari at 2020-02-22T18:58:35-05:00
fs: Port fixes from ghc-jailbreak repository

* Override rename, unlink, and remove
* Factor out wchar conversion

(cherry picked from commit bdb2e37550fed13ad1d5cf1d76c8cc90b4d823fb)

- - - - -
05969579 by Ben Gamari at 2020-02-23T10:21:06-05:00
testsuite: Skip T17787 in profiled ways

- - - - -
58481788 by Krzysztof Gogolewski at 2020-02-25T01:37:00-05:00
Fix order of arguments in specializer (#17801)

See https://gitlab.haskell.org/ghc/ghc/issues/17801#note_253330

No regression test, as it's hard to trigger.

(cherry picked from commit f0c0ee7d9a942a19361e72553cd08f42cc12b04a)

- - - - -
fe488bbe by Sylvain Henry at 2020-02-25T18:29:03+01:00
Document module renaming

- - - - -
ea7ff702 by Ben Gamari at 2020-03-04T12:33:25-05:00
nonmoving: Fix marking in compact regions

Previously we were tracing the object we were asked to mark, even if it
lives in a compact region. However, there is no need to do this; we need
only to mark the region itself as live.

I have seen a segfault due to this due to the concurrent mark seeing a
an object in the process of being compacted by the mutator.

(cherry picked from commit e4e9a7ba3abc991d3583371da4681560a7b67bd2)

- - - - -
a9dcac04 by Ben Gamari at 2020-03-04T12:33:25-05:00
nonmoving: Clear segment bitmaps during sweep

Previously we would clear the bitmaps of segments which we are going to
sweep during the preparatory pause. However, this is unnecessary: the
existence of the mark epoch ensures that the sweep will correctly
identify non-reachable objects, even if we do not clear the bitmap.

We now defer clearing the bitmap to sweep, which happens concurrently
with mutation.

(cherry picked from commit 69001f54279a55bc4e5e5883c675e5ba6fe49a22)

- - - - -
2bf7b5b5 by Ben Gamari at 2020-03-04T12:33:25-05:00
nonmoving: Don't traverse filled segment list in pause

The non-moving collector would previously walk the entire filled segment
list during the preparatory pause. However, this is far more work than
is strictly necessary. We can rather get away with merely collecting the
allocators' filled segment list heads and process the lists themselves
during the concurrent phase. This can significantly reduce the maximum
gen1 GC pause time in programs with high rates of long-lived allocations.

(cherry picked from commit 927b7a3de710d53fb11ccea35b807b64b4afc700)

- - - - -
92bc3688 by Ben Gamari at 2020-03-04T12:56:40-05:00
nonmoving: Fix collection of sparks

Previously sparks living in the non-moving heap would be promptly GC'd
by the minor collector since pruneSparkQueue uses the BF_EVACUATED flag,
which non-moving heap blocks do not have set.

Fix this by implementing proper support in pruneSparkQueue for
determining reachability in the non-moving heap. The story is told in
Note [Spark management in the nonmoving heap].

- - - - -
7daea656 by Josef Svenningsson at 2020-03-09T11:55:24-04:00
Fix ApplicativeDo regression #17835

A previous fix for #15344 made sure that monadic 'fail' is used properly
when translating ApplicativeDo. However, it didn't properly account
for when a 'fail' will be inserted which resulted in some programs
failing with a type error.

(cherry picked from commit 7537d273b3082ef15693c78ac38d3020d4add4c9)

- - - - -
a4d102d2 by Ben Gamari at 2020-03-09T19:07:33-04:00
Revert "Solve constraints from top-level groups sooner"

This reverts commit 9612e91c793830b3049d2bc9a9ee28d9d82b928d.

- - - - -
a20022fc by Tamar Christina at 2020-03-10T17:52:13-04:00
Fs: Fix UNC remapping code.

(cherry picked from commit 5670881d7779ecd7eee8c969dab66ee343298532)

- - - - -
fb3542a5 by Ben Gamari at 2020-03-11T19:59:32-04:00
gitlab-ci: Rework triggering of release builds

Use a push option instead of tagging.

- - - - -
84439cb0 by Ben Gamari at 2020-03-12T19:00:23-04:00
Bump hpc submodule

Fixes typo in changelog.

- - - - -
e6ccab35 by Ben Gamari at 2020-03-12T19:32:37-04:00
gitlab-ci: Disable utimensat support in Darwin builds

Works around #17895.

- - - - -
dbc5e8c8 by Ben Gamari at 2020-03-13T10:44:54-04:00
gitlab-ci: Add integer-simple release build for Windows

Closes #16144.

- - - - -
e03bae3c by Ben Gamari at 2020-03-14T15:41:40-04:00
Bump process submodule

Avoid unreachable case alternative warning on Windows.

- - - - -
05cc8b19 by Ben Gamari at 2020-03-14T15:42:16-04:00
gitlab-ci: Use integer-simple to built Alpine bindists

- - - - -
91d1f25c by Ömer Sinan Ağacan at 2020-03-14T16:13:39-04:00
Fix global_link of TSOs for threads reachable via dead weaks

Fixes #17785

Here's how the problem occurs:

- In generation 0 we have a TSO that is finished (i.e. it has no more
  work to do or it is killed).

- The TSO only becomes reachable after collectDeadWeakPtrs().

- After collectDeadWeakPtrs() we switch to WeakDone phase where we don't
  move TSOs to different lists anymore (like the next gen's thread list
  or the resurrected_threads list).

- So the TSO will never be moved to a generation's thread list, but it
  will be promoted to generation 1.

- Generation 1 collected via mark-compact, and because the TSO is
  reachable it is marked, and its `global_link` field, which is bogus at
  this point (because the TSO is not in a list), will be threaded.

- Chaos ensues.

In other words, when these conditions hold:

- A TSO is reachable only after collectDeadWeakPtrs()
- It's finished (what_next is ThreadComplete or ThreadKilled)
- It's retained by mark-compact collector (moving collector doesn't
  evacuate the global_list field)

We end up doing random mutations on the heap because the TSO's
global_list field is not valid, but it still looks like a heap pointer
so we thread it during compacting GC.

The fix is simple: when we traverse old_threads lists to resurrect
unreachable threads the threads that won't be resurrected currently
stays on the old_threads lists. Those threads will never be visited
again by MarkWeak so we now reset the global_list fields. This way
compacting GC does not thread pointers to nowhere.

Testing
-------

The reproducer in #17785 is quite large and hard to build, because of
the dependencies, so I'm not adding a regression test.

In my testing the reproducer would take a less than 5 seconds to run,
and once in every ~5 runs would fail with a segfault or an assertion
error. In other cases it also fails with a test failure. Because the
tests never fail with the bug fix, assuming the code is correct, this
also means that this bug can sometimes lead to incorrect runtime
results.

After the fix I was able to run the reproducer repeatedly for about an
hour, with no runtime crashes or test failures.

To run the reproducer clone the git repo:

    $ git clone https://github.com/osa1/streamly --branch ghc-segfault

Then clone primitive and atomic-primops from their git repos and point
to the clones in cabal.project.local. The project should then be
buildable using GHC HEAD. Run the executable `properties` with `+RTS -c
-DZ`.

In addition to the reproducer above I run the test suite using:

    $ make slowtest EXTRA_HC_OPTS="-debug -with-rtsopts=-DS \
        -with-rtsopts=-c +RTS -c -RTS" SKIPWAY='nonmoving nonmoving_thr'

This enables compacting GC always in both GHC when building the test
programs and when running the test programs, and also enables sanity
checking when running the test programs. These set of flags are not
compatible for all tests so there are some failures, but I got the same
set of failures with this patch compared to GHC HEAD.

(cherry picked from commit 2e4d572e0a869e38253574cb8f383d6ded0b7e32)

- - - - -
35aab0f9 by Ben Gamari at 2020-03-14T16:40:50-04:00
fs.h: Add missing declarations on Windows

- - - - -
2cf76e2b by Adam Sandberg Ericsson at 2020-03-14T21:14:25-04:00
configure: correctly generate LIBRARY_template_haskell_VERSION

(backport for 8.10)

- - - - -
14ec315f by Ben Gamari at 2020-03-15T00:20:55-04:00
base: Fix unqualified import of Data.List

In System.Environment.ExecutablePath that was only compiled on Windows.

- - - - -
02f393fb by Ben Gamari at 2020-03-15T00:21:50-04:00
Bump process submodule again

- - - - -
5c1c4022 by Richard Eisenberg at 2020-03-16T16:47:14+00:00
Warning about SAKs in release notes

- - - - -
af9eea15 by Ben Gamari at 2020-03-16T22:34:17-04:00
Bump process submodule again

- - - - -
3368f4f7 by Ben Gamari at 2020-03-16T22:34:17-04:00
gitlab-ci: Fix integer-simple job

- - - - -
90e28e61 by Ben Gamari at 2020-03-16T22:41:53-04:00
Bump hsc2hs to 0.68.7

- - - - -
036133af by Ben Gamari at 2020-03-17T09:46:27-04:00
gitlab-ci: Bootstrap Darwin/Windows with 8.8.3

To ensure we have a new enough process version.

- - - - -
848cc69b by Ben Gamari at 2020-03-17T09:46:48-04:00
gitlab-ci: Drop old build.mk logic on Windows

- - - - -
4c0a45d1 by Ben Gamari at 2020-03-17T20:16:58-04:00
Bump hsc2hs submodule

Fixes Darwin build failure due to CPP whitespace.

- - - - -
de890c82 by Ben Gamari at 2020-03-18T09:53:53-04:00
gitlab-ci: Backport CI rework from master

- - - - -
671ac3f6 by Ben Gamari at 2020-03-18T11:57:52-04:00
users-guide: Fix :default: fields

- - - - -
00d25137 by Ben Gamari at 2020-03-18T13:42:15-04:00
release notes: Fix undefined references

- - - - -
a5caf1a2 by Ben Gamari at 2020-03-18T13:43:11-04:00
rts: Expose interface for configuring EventLogWriters

This exposes a set of interfaces from the GHC API for configuring
EventLogWriters. These can be used by consumers like
[ghc-eventlog-socket](https://github.com/bgamari/ghc-eventlog-socket).

(cherry picked from commit e43e6ece1418f84e50d572772394ab639a083e79)

- - - - -
5295fd5a by Ben Gamari at 2020-03-18T13:46:52-04:00
users-guide: Fix unknown link targets

- - - - -
544e24e1 by Ben Gamari at 2020-03-18T15:35:34-04:00
docs/compare-flags: Don't use python f-strings

- - - - -
24966161 by Ben Gamari at 2020-03-18T15:35:38-04:00
compare-flags: Don't rely on encoding flag of subprocess.check_output

Apparently it isn't supported by some slightly older Python versions.

- - - - -
0fd7e009 by Ben Gamari at 2020-03-18T15:35:42-04:00
compare-flags: Fix output

- - - - -
cd4990ca by Ben Gamari at 2020-03-18T18:15:45-04:00
Drop compare-flags

- - - - -
06ee06fb by Ben Gamari at 2020-03-18T21:32:17-04:00
Add test-metrics.sh from master

- - - - -
b9fb1ac4 by Ben Gamari at 2020-03-19T09:36:05-04:00
Backport get-win32-tarballs configure changes

- - - - -
8eb82c89 by Ben Gamari at 2020-03-19T23:45:02-04:00
Bump process submodule

- - - - -
06889a6f by Ben Gamari at 2020-03-19T23:45:28-04:00
gitlab-ci: Allow armv7 to fail

- - - - -
5c3cadf5 by Alec Theriault at 2020-03-22T20:26:41-04:00
Bump Haddock submodule for 2.24 release

- - - - -
07c0d148 by Sylvain Henry at 2020-04-13T17:57:19-04:00
Force -fPIC for intree GMP (fix #17799)

Configure intree GMP with `--with-pic` instead of patching it. Moreover
the correct patching was only done for x86_64/darwin (see #17799).

(cherry picked from commit e1e329448f3742b2024ca6bc2c78f36fe282b606)

- - - - -
64fb49c9 by Ben Gamari at 2020-04-13T17:57:19-04:00
gitlab-ci: Add FreeBSD release job

- - - - -
d1464459 by Ben Gamari at 2020-04-13T17:57:19-04:00
Mention -Wunused-packages in release notes

- - - - -
9ba0cd3e by Ben Gamari at 2020-04-13T17:57:19-04:00
testsuite: Don't ask sed to operate in-place on symlinks

Some sed implementations (e.g. FreeBSD) refuse to operate in-place on
symlinks.

(cherry picked from commit e5ee07ab565c1bf7a33d3bd4bcd3fb6c7b100d1c)

- - - - -
c0b4e2cc by Ben Gamari at 2020-04-13T17:57:19-04:00
testsuite/T16930: Don't rely on gnu grep specific --include

In BSD grep this flag only affects directory recursion.

- - - - -
2daee665 by Ben Gamari at 2020-04-13T17:57:19-04:00
testsuite: Mark T6132 as broken on FreeBSD

- - - - -
12bb9912 by Ben Gamari at 2020-04-13T17:57:20-04:00
Pass -Wno-unused-command-line-arguments during link on FreeBSD

FreeBSD cc throws a warning if we pass -pthread without actually using
any pthread symbols.

- - - - -
3717c610 by Ben Gamari at 2020-04-13T17:57:20-04:00
base: Always clamp reads/writes to 2GB in length

Previously we did this only on Darwin due to #17414. However, even on
other platforms >2GB writes are on shaky ground. POSIX explicitly says
that the result is implementation-specified and Linux will write at most
0x7ffff000, even on 64-bit platforms. Moreover, getting the sign
of the syscall result correct is tricky, as demonstrated by the fact
that T17414 currently fails on FreeBSD.

For simplicity we now just uniformly clamp to 0x7ffff000 on all
platforms.

- - - - -
9ff90fd8 by Ben Gamari at 2020-04-13T17:57:20-04:00
configure: Fix sphinx version test

The check for the "v" prefix is redundant.

- - - - -
584c3b05 by Ben Gamari at 2020-05-12T12:42:34-04:00
configure.ac: Reset RELEASE to NO
- - - - -
37956be4 by Viktor Dukhovni at 2020-05-21T17:42:48-04:00
Note platform-specific Foreign.C.Types in context

Also fix the markup in the general note at the top of the module.  Haddock
(usability trade-off), does not support multi-line emphasised text.

- - - - -
a16c24b7 by Ben Gamari at 2020-05-24T20:42:31-04:00
rts: Add getCurrentThreadCPUTime helper

(cherry picked from commit cedd6f3041de6abe64dfa3257bec7730a9dced9f)

- - - - -
d1f9d711 by Ben Gamari at 2020-05-24T20:42:31-04:00
rts: Prefer darwin-specific getCurrentThreadCPUTime

macOS Catalina now supports a non-POSIX-compliant version of clock_gettime
which cannot use the clock_gettime codepath.

Fixes #17906.

(cherry picked from commit bb586f894532baf1bcb822afd0df7f9fea198671)

- - - - -
39f3b172 by Ben Gamari at 2020-05-24T20:42:31-04:00
nonmoving-gc: Track time usage of nonmoving marking

(cherry picked from commit ace618cd2294989e783bd453cee88e0e1c0dad77)

- - - - -
35f50728 by Ben Gamari at 2020-05-24T20:42:31-04:00
nonmoving: Eagerly flush all capabilities' update remembered sets

(cherry picked from commit 2fa79119570b358a4db61446396889b8260d7957)

- - - - -
dc26ba87 by Ben Gamari at 2020-05-24T20:42:31-04:00
nonmoving: Explicitly memoize block count

A profile cast doubt on whether the compiler hoisted the bound out the
loop as I would have expected here. It turns out it did but nevertheless
it seems clearer to just do this manually.

- - - - -
ce49860d by Ben Gamari at 2020-05-24T20:42:32-04:00
nonmoving: Clear bitmap after initializing block size

Previously nonmovingInitSegment would clear the bitmap before
initializing the segment's block size. This is broken since
nonmovingClearBitmap looks at the segment's block size to determine how
much bitmap to clear.

- - - - -
1101739a by Ben Gamari at 2020-05-24T20:42:32-04:00
hadrian: Allow libnuma library path to be specified

- - - - -
6e8ede7e by Ben Gamari at 2020-05-24T20:42:32-04:00
rts: Zero block flags with -DZ

Block flags are very useful for determining the state of a block.
However, some block allocator users don't touch them, leading to
misleading values. Ensure that we zero then when zero-on-gc is set. This
is safe and makes the flags more useful during debugging.

- - - - -
185a870e by Ben Gamari at 2020-05-24T20:42:32-04:00
nonmoving: Fix incorrect failed_to_evac value during deadlock gc

Previously we would incorrectly set the failed_to_evac flag if we
evacuated a value due to a deadlock GC. This would cause us to mark more
things as dirty than strictly necessary. It also turned up a nasty but
which I will fix next.

- - - - -
124a40cc by Ben Gamari at 2020-05-24T20:42:32-04:00
nonmoving: Fix handling of dirty objects

Previously we (incorrectly) relied on failed_to_evac to be "precise".
That is, we expected it to only be true if *all* of an object's fields
lived outside of the non-moving heap. However, does not match the
behavior of failed_to_evac, which is true if *any* of the object's
fields weren't promoted (meaning that some others *may* live in the
non-moving heap).

This is problematic as we skip the non-moving write barrier for dirty
objects (which we can only safely do if *all* fields point outside of
the non-moving heap).

Clearly this arises due to a fundamental difference in the behavior
expected of failed_to_evac in the moving and non-moving collector.
e.g., in the moving collector it is always safe to conservatively say
failed_to_evac=true whereas in the non-moving collector the safe value
is false.

This issue went unnoticed as I never wrote down the dirtiness
invariant enforced by the non-moving collector. We now define this
invariant as

    An object being marked as dirty implies that all of its fields are
    on the mark queue (or, equivalently, update remembered set).

To maintain this invariant we teach nonmovingScavengeOne to push the
fields of objects which we fail to evacuate to the update remembered
set. This is a simple and reasonably cheap solution and avoids the
complexity and fragility that other, more strict alternative invariants
would require.

All of this is described in a new Note, Note [Dirty flags in the
non-moving collector] in NonMoving.c.

- - - - -
b23f16d0 by Ben Gamari at 2020-05-24T20:42:32-04:00
nonmoving: Optimise the write barrier

(cherry picked from commit a636eadac1f30bae37aeb6526f94893293f098b8)

- - - - -
d2581e98 by Ömer Sinan Ağacan at 2020-05-24T20:42:32-04:00
FastString: fix eager reading of string ptr in hashStr

This read causes NULL dereferencing when len is 0.

Fixes #17909

In the reproducer in #17909 this bug is triggered as follows:

- SimplOpt.dealWithStringLiteral is called with a single-char string
  ("=" in #17909)

- tailFS gets called on the FastString of the single-char string.

- tailFS checks the length of the string, which is 1, and calls
  mkFastStringByteString on the tail of the ByteString, which is an
  empty ByteString as the original ByteString has only one char.

- ByteString's unsafeUseAsCStringLen returns (NULL, 0) for the empty
  ByteString, which is passed to mkFastStringWith.

- mkFastStringWith gets hash of the NULL pointer via hashStr, which
  fails on empty strings because of this bug.

(cherry picked from commit d15b61608a542f6349b42224140b7d227b88ef4e)

- - - - -
76059e3e by Simon Peyton Jones at 2020-05-24T20:42:32-04:00
Improve error handling for VTA + deferred type errors

This fixes #17792

See Note [VTA for out-of-scope functions] in TcExpr

(cherry picked from commit 335b18bac3c361d243f427b66e67c2c94f5c6494)

- - - - -
a7dd83db by Simon Peyton Jones at 2020-05-24T20:42:32-04:00
Add a missing zonk in tcHsPartialType

I omitted a vital zonk when refactoring tcHsPartialType in
   commit 48fb3482f8cbc8a4b37161021e846105f980eed4
   Author: Simon Peyton Jones <simonpj at microsoft.com>
   Date:   Wed Jun 5 08:55:17 2019 +0100

   Fix typechecking of partial type signatures

This patch fixes it and adds commentary to explain why.

Fixes #18008

(cherry picked from commit 658bda511237593bb80389280d0364180648058d)

- - - - -
e3fcf26d by Sylvain Henry at 2020-05-24T20:42:32-04:00
Rts: show errno on failure (#18033)

(cherry picked from commit 4875d419ba066e479f7ac07f8b39ebe10c855859)

- - - - -
ba788d22 by Ryan Scott at 2020-05-24T20:42:32-04:00
Fix two ASSERT buglets in reifyDataCon

Two `ASSERT`s in `reifyDataCon` were always using `arg_tys`, but
`arg_tys` is not meaningful for GADT constructors. In fact, it's
worse than non-meaningful, since using `arg_tys` when reifying a
GADT constructor can lead to failed `ASSERT`ions, as #17305
demonstrates.

This patch applies the simplest possible fix to the immediate
problem. The `ASSERT`s now use `r_arg_tys` instead of `arg_tys`, as
the former makes sure to give something meaningful for GADT
constructors. This makes the panic go away at the very least. There
is still an underlying issue with the way the internals of
`reifyDataCon` work, as described in
https://gitlab.haskell.org/ghc/ghc/issues/17305#note_227023, but we
leave that as future work, since fixing the underlying issue is
much trickier (see
https://gitlab.haskell.org/ghc/ghc/issues/17305#note_227087).

(cherry picked from commit cfb66d181ac45ce3d934bda3521b94277e6eb683)

- - - - -
25d84fa2 by Adam Gundry at 2020-05-24T20:42:32-04:00
Reject all duplicate declarations involving DuplicateRecordFields (fixes #17965)

This fixes a bug that resulted in some programs being accepted that used the same
identifier as a field label and another declaration, depending on the order they
appeared in the source code.

(cherry picked from commit 0d8c7a6c7c3513089668f49efb0a2dd8b4bbe74a)

- - - - -
646648a9 by Ben Gamari at 2020-05-24T20:42:32-04:00
Ensure that printMinimalImports closes handle

Fixes #18166.

(cherry picked from commit 5afc160dee7142c96a842037fb64bee1429ad9ec)

- - - - -
123c386b by Ben Gamari at 2020-05-24T20:42:32-04:00
rts: Make non-existent linker search path merely a warning

As noted in #18105, previously this resulted in a rather intrusive error
message. This is in contrast to the general expectation that search
paths are merely places to look, not places that must exist.

Fixes #18105.

(cherry picked from commit 24af9f30681444380c25465f555599da563713cb)

- - - - -
06f05573 by Ben Gamari at 2020-05-24T20:42:32-04:00
nonmoving: Optimise log2_ceil

(cherry picked from commit 5f69016115414d0dd921e72f3edcd0b365966141)

- - - - -
dae01c10 by Ben Gamari at 2020-05-24T20:42:32-04:00
rts: Enable tracing of nonmoving heap census with -ln

Previously this was not easily available to the user. Fix this.
Non-moving collection lifecycle events are now reported with -lg.

(cherry picked from commit 7bfe9ac514e18c0b0e24ff55230fe98ec9db894c)

- - - - -
72218602 by Ben Gamari at 2020-05-24T20:42:32-04:00
users guide: Move eventlog documentation users guide

(cherry picked from commit c560dd07f506810eaabae2f582491138aa224819)

- - - - -
79da3ca2 by Ben Gamari at 2020-05-24T20:42:33-04:00
users guide: Add documentation for non-moving GC events

(cherry picked from commit 02543d5ef9bd7a910fc9fece895780583ab9635a)

- - - - -
10f80ca8 by Ben Gamari at 2020-05-30T09:56:23-04:00
iserv: Don't pass --export-dynamic on FreeBSD

This is definitely a hack but it's probably the best we can do for now.
Hadrian does the right thing here by passing --export-dynamic only to
the linker.

(cherry picked from commit 2290eb02cf95e9cfffcb15fc9c593d5ef79c75d9)

- - - - -
94562bbf by Ben Gamari at 2020-05-30T09:56:30-04:00
hadrian: Use --export-dynamic when linking iserv

As noticed in #17962, the make build system currently does this (see
3ce0e0ba) but the change was never ported to Hadrian.

(cherry picked from commit eba58110538686d8fe57d5dd372624b50f1fa2b7)

- - - - -
b3330c2d by Ben Gamari at 2020-05-30T09:58:52-04:00
Coverage: Don't produce ModBreaks if not HscInterpreted

emptyModBreaks contains a bottom and consequently it's important that we
don't use it unless necessary.

(cherry picked from commit f684a7d505f19bd78f178e01bbd8e4467aaa00ea)

- - - - -
295735ae by Ben Gamari at 2020-05-30T10:00:15-04:00
Bump process submodule

Fixes #17926.

- - - - -
285f92bb by Sylvain Henry at 2020-05-30T10:03:03-04:00
RTS: workaround a Linux kernel bug in timerfd

Reading a timerfd may return 0: https://lkml.org/lkml/2019/8/16/335.

This is currently undocumented behavior and documentation "won't happen
anytime soon" (https://lkml.org/lkml/2020/2/13/295).

With this patch, we just ignore the result instead of crashing. It may
fix #18033 but we can't be sure because we don't have enough
information.

See also this discussion about the kernel bug:
https://github.com/Azure/sonic-swss-common/pull/302/files/1f070e7920c2e5d63316c0105bf4481e73d72dc9

(cherry picked from commit 8ea37b01b6ab16937f7b528b6bbae9fade9f1361)

- - - - -
88fd4829 by Ryan Scott at 2020-05-31T18:03:38-04:00
Add orderingTyCon to wiredInTyCons (#18185)

`Ordering` needs to be wired in for use in the built-in `CmpNat` and
`CmpSymbol` type families, but somehow it was never added to the list
of `wiredInTyCons`, leading to the various oddities observed
in #18185. Easily fixed by moving `orderingTyCon` from
`basicKnownKeyNames` to `wiredInTyCons`.

Fixes #18185.

(cherry picked from commit 6ca3d6a6c19dcd885f3b0beeda192cd90e83e0bd)

- - - - -
a6befeb3 by Ben Gamari at 2020-05-31T18:03:38-04:00
simplCore: Ignore ticks in rule templates

This fixes #17619, where a tick snuck in to the template of a rule,
resulting in a panic during rule matching. The tick in question was
introduced via post-inlining, as discussed in `Note [Simplifying
rules]`. The solution we decided upon was to simply ignore ticks in the
rule template, as discussed in `Note [Tick annotations in RULE
matching]`.

Fixes #18162.
Fixes #17619.

(cherry picked from commit dcd6bdcce57430d08b335014625722c487ea08e4)

- - - - -
fa36474d by Tuan Le at 2020-05-31T18:03:38-04:00
llvmGen: Consider Relocatable read-only data as not constantReferences: #18137

(cherry picked from commit 0004ccb885e534c386ceae21580fc59ec7ad0ede)

- - - - -
4a73e707 by Ben Gamari at 2020-05-31T18:03:38-04:00
rts/CNF: Fix fixup comparison function

Previously we would implicitly convert the difference between two words
to an int, resulting in an integer overflow on 64-bit machines.

Fixes #16992

(cherry picked from commit cf4f1e2f78840d25b132de55bce1e02256334ace)

- - - - -
4219e9c1 by Ryan Scott at 2020-05-31T18:03:38-04:00
Make boxed 1-tuples have known keys

Unlike other tuples, which use special syntax and are "known" by way
of a special `isBuiltInOcc_maybe` code path, boxed 1-tuples do not
use special syntax. Therefore, in order to make sure that the
internals of GHC are aware of the `data Unit a = Unit a` definition
in `GHC.Tuple`, we give `Unit` known keys. For the full details, see
`Note [One-tuples] (Wrinkle: Make boxed one-tuple names have known keys)`
in `GHC.Builtin.Types`.

Fixes #18097.

(cherry picked from commit 518a63d4d7e31e49a81ad66d5e5ccb1f790f6de9)

- - - - -
761909b9 by Ryan Scott at 2020-05-31T18:03:38-04:00
Create di_scoped_tvs for associated data family instances properly

See `Note [Associated data family instances and di_scoped_tvs]` in
`GHC.Tc.TyCl.Instance`, which explains all of the moving parts.

Fixes #18055.

(cherry picked from commit cd8409c26d4370bf2cdcd76801974e99a9adf7b0)

- - - - -
30037e6d by Sebastian Graf at 2020-05-31T18:03:38-04:00
PmCheck: Adjust recursion depth for inhabitation test

In #17977, we ran into the reduction depth limit of the typechecker.
That was only a symptom of a much broader issue: The recursion depth
of the coverage checker for trying to instantiate strict fields in the
`nonVoid` test was far too high (100, the `defaultMaxTcBound`).

As a result, we were performing quite poorly on `T17977`.
Short of a proper termination analysis to prove emptyness of a type,
we just arbitrarily default to a much lower recursion limit of 3.

Fixes #17977.

(cherry picked from commit ed58d4fdcbc7b4fa8fbdf3d638a8d53c444ef4f2)

- - - - -
1666baa6 by Simon Peyton Jones at 2020-05-31T18:03:38-04:00
Improve skolemisation

This patch avoids skolemiseUnboundMetaTyVar making
up a fresh Name when it doesn't need to.

See Note [Skolemising and identity]

Improves error messsages for partial type signatures.

(cherry picked from commit d7002bccd7d131f8ee9b1ddcd83d62262622294d)

- - - - -
84ba6d2c by Simon Peyton Jones at 2020-05-31T18:03:38-04:00
Improve pretty-printing for TyConBinders

In particular, show their kinds.

(cherry picked from commit fa37940cd72f82abc460f5c0a5de64dd75cee6ae)

- - - - -
35277140 by Simon Peyton Jones at 2020-05-31T18:03:38-04:00
Fix scoping of TyCon binders in TcTyClsDecls

This patch fixes #17566 by refactoring the way we decide the final
identity of the tyvars in the TyCons of a possibly-recursive nest
of type and class decls, possibly with associated types.

It's all laid out in
  Note [Swizzling the tyvars before generaliseTcTyCon]

Main changes:

* We have to generalise each decl (with its associated types)
  all at once: TcTyClsDecls.generaliseTyClDecl

* The main new work is done in TcTyClsDecls.swizzleTcTyConBndrs

* The mysterious TcHsSyn.zonkRecTyVarBndrs dies altogether

Other smaller things:

* A little refactoring, moving bindTyClTyVars from tcTyClDecl1
  to tcDataDefn, tcSynRhs, etc.  Clearer, reduces the number of
  parameters

* Reduce the amount of swizzling required.
  Specifically, bindExplicitTKBndrs_Q_Tv doesn't need
    to clone a new Name for the TyVarTv, and not
    cloning means that in the vasly common case,
    swizzleTyConBndrs is a no-op

  In detail:
    Rename newTyVarTyVar --> cloneTyVarTyVar
    Add newTyVarTyTyVar that doesn't clone
    Use the non-cloning newTyVarTyVar in
       bindExplicitTKBndrs_Q_Tv
       Rename newFlexiKindedTyVarTyVar
           --> cloneFlexiKindedTyVarTyVar

* Define new utility function and use it
     HsDecls.familyDeclName ::
        FamilyDecl (GhcPass p) -> IdP (GhcPass p)

Updates haddock submodule.

(cherry picked from commit b9605396f1f1560aea94792646b835cadcb49f45)

- - - - -
540d5562 by Ben Gamari at 2020-06-02T10:07:07-04:00
CorePrep: Print type if we fail to split

- - - - -
26386f0c by Ben Gamari at 2020-06-20T15:26:31-04:00
gitlab-ci: Introduce DWARF release jobs for Deb10 and Fedora 27

(cherry picked from commit 481e31740672a37c5b3a8924bba7e15c4080bc2e)

- - - - -
408b6714 by Ben Gamari at 2020-07-15T11:26:48-04:00
gitlab-ci: Bump Docker images

- - - - -
410f53a9 by Ben Gamari at 2020-07-15T11:26:48-04:00
hadrian: Eliminate some redundant imports

- - - - -
e2bed3ee by GHC GitLab CI at 2020-07-15T11:26:48-04:00
Accept testsuite changes

- - - - -
5018cad4 by Kevin Buhr at 2020-07-15T11:26:48-04:00
Add "-Iw" RTS flag for minimum wait between idle GCs (#11134)

This wasn't originally slated for 8.10 but the documentation part of
this patch snuck into the ghc-8.10 branch via a backport. Instead of
backing out the documentation and causing further user confusion I've
opted just to backport this functional change as well.

(cherry picked from commit 859ebdd446eda446d38708a587503c255b58c4c6)

- - - - -
edc36a91 by Ben Gamari at 2020-07-15T11:26:48-04:00
user-guide: Add release notes for 8.10.2

- - - - -
46e3ceca by Ben Gamari at 2020-07-15T11:27:30-04:00
rts/ProfHeap: Only allocate the Censuses that we need

When not LDV profiling there is no reason to allocate 32 Censuses; one
will do. This is a very small memory footprint optimisation, but it
comes for free.

(cherry picked from commit 8cc7274b8de254c7266b61fadbc6795dc37bd1e9)

- - - - -
ca146208 by Ben Gamari at 2020-07-15T11:27:40-04:00
rts/ProfHeap: Free old allocations when reinitialising Censuses

Previously when not LDV profiling we would repeatedly reinitialise
`censuses[0]` with `initEra`. This failed to free the `Arena` and
`HashTable` from the old census, resulting in a memory leak.

Fixes #18348.

(cherry picked from commit b835112cbeaa6e34a8bae7b7697bdf2826edaa9a)

- - - - -
c9770ef3 by Andreas Klebinger at 2020-07-15T23:39:35-04:00
Escape backslashes in json profiling reports properly.

I also took the liberty to do away the fixed buffer size for escaping.
Using a fixed size here can only lead to issues down the line.

Fixes #18438.

(cherry picked from commit fecafac8065d951c14a23de2395e078328f856cd)

- - - - -
aa2e5863 by Moritz Angermann at 2020-07-15T23:42:39-04:00
[linker/rtsSymbols] More linker symbols

Mostly symbols needed for aarch64/armv7l
and in combination with musl, where we have
to rely on loading *all* objects/archives

- __stack_chk_* only when not DYNAMIC

(cherry picked from commit 5bc6082fdcb278be878f01a2eeb9741d7d82bb49)

- - - - -
dfffd9eb by Artem Pelenitsyn at 2020-07-15T23:50:11-04:00
base: fix sign confusion in log1mexp implementation (fix #17125)

author: claude (https://gitlab.haskell.org/trac-claude)

The correct threshold for log1mexp is -(log 2) with the current specification
of log1mexp. This change improves accuracy for large negative inputs.

To avoid code duplication, a small helper function is added;
it isn't the default implementation in Floating because it needs Ord.

This patch does nothing to address that the Haskell specification is
different from that in common use in other languages.

(cherry picked from commit af5e3a885ddd09dd5f550552c535af3661ff3dbf)

- - - - -
93c06518 by Moritz Angermann at 2020-07-15T23:51:27-04:00
ghc-prim needs to depend on libc and libm

libm is just an empty shell on musl, and all the math functions are contained in
libc.

(cherry picked from commit b455074875d3c8fd3a5787e01dc6f922f3a97bc2)

- - - - -
b33a20c5 by Moritz Angermann at 2020-07-15T23:51:39-04:00
Load .lo as well.

Some archives contain so called linker objects, with the affectionate
.lo suffic.  For example the musl libc.a will come in that form.  We
still want to load those objects, hence we should not discard them and
look for .lo as well.  Ultimately we might want to fix this proerly by
looking at the file magic.

(cherry picked from commit 3fd12af1eaafe304e5916bc1fcfdf31709d360b8)

- - - - -
6560fa8f by Moritz Angermann at 2020-07-15T23:52:20-04:00
Range is actually +/-2^32, not +/-2^31

See also: https://static.docs.arm.com/ihi0056/g/aaelf64.pdf

(cherry picked from commit f2446ff1578a37822488e0e3968694f66712b969)

- - - - -
820d9ed2 by Ben Gamari at 2020-07-15T23:55:55-04:00
testsuite: Add test for #18151

(cherry picked from commit bd9f558924755f965f5136b5e3d4fa88d34c9778)

- - - - -
be443156 by Ben Gamari at 2020-07-15T23:56:02-04:00
testsuite: Add test for desugaring of PostfixOperators

(cherry picked from commit 95a9eb7396912314f6cfd971fb4523e4062acec6)

- - - - -
cc8800f9 by Ben Gamari at 2020-07-15T23:56:42-04:00
HsToCore: Eta expand left sections

Strangely, the comment next to this code already alluded to the fact
that even simply eta-expanding will sacrifice laziness. It's quite
unclear how we regressed so far.

See #18151.

(cherry picked from commit b1dbd625493ae1bf984cf51177011baf9c677c0a)

- - - - -
96a16275 by Ben Gamari at 2020-07-22T19:56:38-04:00
rts: Add --copying-gc flag to reverse effect of --nonmoving-gc

Fixes #18281.

(cherry picked from commit 750a1595ef31cdc335f3bab045b2f19a9c43ff93)

- - - - -
29d24d10 by Moritz Angermann at 2020-07-22T19:59:40-04:00
Disable DLL loading if without system linker

Some platforms (musl, aarch64) do not have a working dynamic linker
implemented in the libc, even though we might see dlopen.  It will
ultimately just return that this is not supported.  Hence we'll add
a flag to the compiler to flat our disable loading dlls.  This is
needed as we will otherwise try to load the shared library even
if this will subsequently fail.  At that point we have given up
looking for static options though.

(cherry picked from commit aef523ea1254e8bb9e4143ad8f5994ca89ea9d2d)

- - - - -
9ab76ca5 by Sylvain Henry at 2020-07-22T20:47:38-04:00
Cmm: introduce SAVE_REGS/RESTORE_REGS

We don't want to save both Fn and Dn register sets on x86-64 as they are
aliased to the same arch register (XMMn).

Moreover, when SAVE_STGREGS was used in conjunction with `jump foo [*]`
which makes a set of Cmm registers alive so that they cover all arch
registers used to pass parameter, we could have Fn, Dn and XMMn alive at
the same time. It made the LLVM code generator choke (see #17920).

Now `SAVE_REGS/RESTORE_REGS` and `jump foo [*]` use the same set of
registers.

(cherry picked from commit 54b595c1b91ad9e686b5baf7640177becb372336)

- - - - -
e447bd2c by Sylvain Henry at 2020-07-22T22:57:09-04:00
CmmToC: don't add extern decl to parsed Cmm data

Previously, if a .cmm file *not in the RTS* contained something like:

```cmm
section "rodata" { msg : bits8[] "Test\n"; }
```

It would get compiled by CmmToC into:

```c
ERW_(msg);
const char msg[] = "Test\012";
```

and fail with:

```
/tmp/ghc32129_0/ghc_4.hc:5:12: error:
     error: conflicting types for \u2018msg\u2019
     const char msg[] = "Test\012";
                ^~~

In file included from /tmp/ghc32129_0/ghc_4.hc:3:0: error:

/tmp/ghc32129_0/ghc_4.hc:4:6: error:
     note: previous declaration of \u2018msg\u2019 was here
     ERW_(msg);
          ^

/builds/hsyl20/ghc/_build/install/lib/ghc-8.11.0.20200605/lib/../lib/x86_64-linux-ghc-8.11.0.20200605/rts-1.0/include/Stg.h:253:46: error:
     note: in definition of macro \u2018ERW_\u2019
     #define ERW_(X)   extern       StgWordArray (X)
                                                  ^
```

See the rationale for this on https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/compiler/backends/ppr-c#prototypes

Now we don't generate these extern declarations (ERW_, etc.) for
top-level data. It shouldn't change anything for the RTS (the only place
we use .cmm files) as it is already special cased in
`GHC.Cmm.CLabel.needsCDecl`. And hand-written Cmm can use explicit
extern declarations when needed.

Note that it allows `cgrun069` test to pass with CmmToC (cf #15467).

(cherry picked from commit 499f3a2829d7c5a047c2ee87377d71ab2ea8c6d9)

- - - - -
f96a4b2c by Sylvain Henry at 2020-07-22T22:57:09-04:00
LLVM: refactor and comment register padding code (#17920)

(cherry picked from commit 9bdc2a056f459b0e05ddbc49d978dfed547ecc13)

- - - - -
36656d70 by Sylvain Henry at 2020-07-22T22:57:10-04:00
Add tests for #17920

Metric Decrease:
    T12150
    T12234

(cherry picked from commit aa54d1a2b2d2c89107cfa77d8c14a50d6ee9c140)

- - - - -
b7c216cb by Ben Gamari at 2020-07-22T22:57:10-04:00
Fix GhcThreaded setting

This adopts a patch from NetBSD's packaging fixing the `GhcThreaded`
option of the make build system. In addition we introduce a `ghcThreaded`
option in hadrian's `Flavour` type.

Also fix Hadrian's treatment of the `Use Threaded` entry in `settings`.
Previously it would incorrectly claim `Use Threaded = True` if we were
building the `threaded` runtime way. However, this is inconsistent with
the `make` build system, which defines it to be whether the `ghc`
executable is linked against the threaded runtime.

Fixes #17692.

- - - - -
55fac768 by Travis Whitaker at 2020-07-22T22:57:10-04:00
Build a threaded stage 1 if the bootstrapping GHC supports it.

(cherry picked from commit 67738db10010fd28a8e997b5c8f83ea591b88a0e)
(cherry picked from commit a228d0a83db06fbe81b1c74fe3b1aea3133cee50)

- - - - -
83bcf37d by Joshua Price at 2020-07-26T15:05:52-04:00
Make `identifier` parse unparenthesized `->` (#18060)

(cherry picked from commit d6203f24cf421749616a247c047a9b44192f963a)

- - - - -
50f25994 by Simon Peyton Jones at 2020-07-26T15:05:52-04:00
Wrap an implication around class-sig kind errors

Ticket #17841 showed that we can get a kind error
in a class signature, but lack an enclosing implication
that binds its skolems.

This patch

* Adds the wrapping implication: the new call to
  checkTvConstraints in tcClassDecl1

* Simplifies the API to checkTvConstraints, which
  was not otherwise called at all.

* Simplifies TcErrors.report_unsolved by *not*
  initialising the TidyEnv from the typechecker lexical
  envt.  It's enough to do so from the free vars of the
  unsolved constraints; and we get silly renamings if
  we add variables twice: once from the lexical scope
  and once from the implication constraint.

(cherry picked from commit 3f431587c2db712136a3b5a353758ca63e1a5fd8)

- - - - -
a063768e by Simon Peyton Jones at 2020-07-26T15:05:52-04:00
Refactoring in TcSMonad

This patch is just refactoring: no change in
behaviour.

I removed the rather complicated
    checkConstraintsTcS
    checkTvConstraintsTcS

in favour of simpler functions
    emitImplicationTcS
    emitTvImplicationTcS
    pushLevelNoWorkList

The last of these is a little strange, but overall
it's much better I think.

(cherry picked from commit 9d87ced6832e75fce1e01b67bc6b7d9d1cf31efb)

- - - - -
05be81e8 by Simon Peyton Jones at 2020-07-26T15:05:52-04:00
Major improvements to the specialiser

This patch is joint work of Alexis King and Simon PJ.  It does some
significant refactoring of the type-class specialiser.  Main highlights:

* We can specialise functions with types like
     f :: Eq a => a -> Ord b => b => blah
  where the classes aren't all at the front (#16473).  Here we can
  correctly specialise 'f' based on a call like
     f @Int @Bool dEqInt x dOrdBool
  This change really happened in an earlier patch
     commit 2d0cf6252957b8980d89481ecd0b79891da4b14b
     Author: Sandy Maguire <sandy at sandymaguire.me>
     Date:   Thu May 16 12:12:10 2019 -0400
  work that this new patch builds directly on that work, and refactors
  it a bit.

* We can specialise functions with implicit parameters (#17930)
     g :: (?foo :: Bool, Show a) => a -> String
  Previously we could not, but now they behave just like a non-class
  argument as in 'f' above.

* We can specialise under-saturated calls, where some (but not all of
  the dictionary arguments are provided (#17966).  For example, we can
  specialise the above 'f' based on a call
     map (f @Int dEqInt) xs
  even though we don't (and can't) give Ord dictionary.

  This may sound exotic, but #17966 is a program from the wild, and
  showed significant perf loss for functions like f, if you need
  saturation of all dictionaries.

* We fix a buglet in which a floated dictionary had a bogus demand
  (#17810), by using zapIdDemandInfo in the NonRec case of specBind.

* A tiny side benefit: we can drop dead arguments to specialised
  functions; see Note [Drop dead args from specialisations]

* Fixed a bug in deciding what dictionaries are "interesting"; see
  Note [Keep the old dictionaries interesting]

This is all achieved by by building on Sandy Macguire's work in
defining SpecArg, which mkCallUDs uses to describe the arguments of
the call. Main changes:

* Main work is in specHeader, which marched down the [InBndr] from the
  function definition and the [SpecArg] from the call site, together.

* specCalls no longer has an arity check; the entire mechanism now
  handles unders-saturated calls fine.

* mkCallUDs decides on an argument-by-argument basis whether to
  specialise a particular dictionary argument; this is new.
  See mk_spec_arg in mkCallUDs.

It looks as if there are many more lines of code, but I think that
all the extra lines are comments!

(cherry picked from commit 7052d7c7ce3418db9e66ad6ff31e80b2a2c724bb)

- - - - -
a10c6ddf by Simon Peyton Jones at 2020-07-26T15:05:52-04:00
Fix specialisation for DFuns

When specialising a DFun we must take care to saturate the
unfolding.  See Note [Specialising DFuns] in Specialise.

Fixes #18120

(cherry picked from commit 88e3c8150d2b2d96c3ebc0b2942c9af44071c511)

- - - - -
5015d3ac by Ben Gamari at 2020-07-26T15:05:52-04:00
testsuite: Accept wibbles in specialiser test output

- - - - -
6471cc6a by Moritz Angermann at 2020-07-26T15:05:52-04:00
[linker] Fix out of range relocations.

mmap may return address all over the place. mmap_next will ensure we get
the next free page after the requested address.

This is especially important for linking on aarch64, where the memory model with PIC
admits relocations in the +-4GB range, and as such we can't work with
arbitrary object locations in memory.

Of note: we map the rts into process space, so any mapped objects must
not be ouside of the 4GB from the processes address space.

(cherry picked from commit aedfeb0b2b22172a0dfca0fe0c020ac80539d6ae)

- - - - -
2e4fe920 by Stefan Schulze Frielinghaus at 2020-07-28T12:58:12-04:00
Require SMP support in order to build a threaded stage1

Fixes #18266

(cherry picked from commit fc0f6fbcd95f2dc69a8efabbee2d8a485c34cc47)

- - - - -
4672b93e by Ben Gamari at 2020-07-29T22:59:54-04:00
base: Bump version for log1mexp fix

- - - - -
9aa91006 by Ben Gamari at 2020-07-29T22:59:54-04:00
users-guide: Release notes for 8.10.2

- - - - -
7b82011a by Ben Gamari at 2020-07-29T22:59:54-04:00
Bump Cabal submodule

- - - - -
750c51ba by Ben Gamari at 2020-07-29T22:59:54-04:00
Bump hsc2hs submodule to 0.68.7

- - - - -
f34695e9 by Ben Gamari at 2020-07-30T10:48:10-04:00
Restore haskeline submodule to v0.8.0.0

It appears that this was incorrectly reverted in
4186c713e65dc5041d0b7a0e1d77f48edc763c3a.

- - - - -
274989ff by Ben Gamari at 2020-07-30T10:48:10-04:00
users-guide: Mention LLVM version requirement

- - - - -
484c4d89 by Ben Gamari at 2020-07-30T10:48:10-04:00
Use ld.gold to link on deb10

Otherwise we use ld.lld, which fails with

  ld.lld: error: -r and --export-dynamic may not be used together

- - - - -
bb0dae83 by Ben Gamari at 2020-07-30T10:48:10-04:00
Release GHC 8.10.2

- - - - -
81134748 by Ben Gamari at 2020-07-31T16:47:01-04:00
gitlab-ci: Build ARMv7 and AArch64 on Debian 10, not Debian 9

- - - - -
fec2abb8 by Leon Schoorl at 2020-08-01T14:43:48-04:00
Fix GHC_STAGE definition generated by make

Fixes #18070

GHC_STAGE is the stage of the compiler we're building, it should be 1,2(,3?).
But make was generating 0 and 1.

Hadrian does this correctly using a similar `+ 1`:
https://gitlab.haskell.org/ghc/ghc/-/blob/eb8115a8c4cbc842b66798480fefc7ab64d31931/hadrian/src/Rules/Generate.hs#L245

(cherry picked from commit a481afef354ca0383477fd20891c2e8eb9ef4449)

- - - - -
428320a9 by Ben Gamari at 2020-08-03T17:51:43-04:00
Revert "iserv: Don't pass --export-dynamic on FreeBSD"

This reverts commit 2290eb02cf95e9cfffcb15fc9c593d5ef79c75d9.

(cherry picked from commit f9b7497d30d98a054d4ec5a8df2dfaf4a2b0bb30)

- - - - -
e69b0d42 by Ben Gamari at 2020-08-04T23:37:46-04:00
Refactor handling of object merging

Previously to merge a set of object files we would invoke the linker as
usual, adding -r to the command-line. However, this can result in
non-sensical command-lines which causes lld to balk (#17962).

To avoid this we introduce a new tool setting into GHC, -pgmlm, which is
the linker which we use to merge object files.

- - - - -
b260f31f by Ben Gamari at 2020-08-06T17:10:00-04:00
nativeGen: One approach to fix #18527

Previously the code generator could produce corrupt C call sequences due
to register overlap between MachOp lowerings and the platform's calling
convention. We fix this using a hack described in Note [Evaluate C-call
arguments before placing in destination registers].

(cherry picked from commit a647bae8518e96156eb7775c4cede52b69f711d7)

- - - - -
44f958c8 by Ben Gamari at 2020-08-06T17:10:00-04:00
testsuite: Add test for #18527

- - - - -
29204b1c by Ben Gamari at 2020-08-07T10:53:04-04:00
configure: Fix double-negation in ld merge-objects check

We want to only run the check if ld is gold.

Fixes the fix to #17962.

(cherry picked from commit d589ef25f54862968976bc279eb6748509794566)

- - - - -
430e69ec by Ben Gamari at 2020-08-09T14:26:14-04:00
Set RELEASE=NO

- - - - -
fac083e7 by Ben Gamari at 2020-08-09T14:26:14-04:00
Revert "[linker/rtsSymbols] More linker symbols"

This reverts commit aa2e5863699306920513b216f337de09e29b5bb8.

- - - - -
82f15edc by Ben Gamari at 2020-08-09T16:27:21-04:00
rts: Fix unused variable warning on Darwin

- - - - -
f43a255a by Ben Gamari at 2020-08-21T11:31:14-04:00
Bump text submodule to 1.2.4.0

Fixes #18588 and #17956.

- - - - -


30 changed files:

- .gitlab-ci.yml
- + .gitlab/ci.sh
- − .gitlab/prepare-system.sh
- + .gitlab/test-metrics.sh
- − .gitlab/win32-init.sh
- aclocal.m4
- compiler/GHC/Hs/Decls.hs
- compiler/GHC/Hs/Expr.hs
- compiler/GHC/HsToCore/PmCheck/Oracle.hs
- compiler/GHC/StgToCmm/Foreign.hs
- compiler/GHC/StgToCmm/Prof.hs
- compiler/GHC/StgToCmm/Ticky.hs
- compiler/GHC/StgToCmm/Utils.hs
- compiler/basicTypes/MkId.hs
- compiler/basicTypes/RdrName.hs
- compiler/cmm/CLabel.hs
- compiler/cmm/Cmm.hs
- compiler/cmm/CmmCallConv.hs
- compiler/cmm/CmmMachOp.hs
- compiler/cmm/CmmParse.y
- compiler/cmm/PprC.hs
- compiler/coreSyn/CorePrep.hs
- compiler/coreSyn/CoreSubst.hs
- compiler/coreSyn/CoreUnfold.hs
- compiler/deSugar/Coverage.hs
- compiler/deSugar/DsBinds.hs
- compiler/deSugar/DsExpr.hs
- compiler/deSugar/DsMeta.hs
- compiler/ghc.cabal.in
- compiler/ghc.mk


The diff was not included because it is too large.


View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/722cc2294120b297c9c824ee960c390f7d62e1ed...f43a255a660ce3f5571f84d5d608b150f57d4821

-- 
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/722cc2294120b297c9c824ee960c390f7d62e1ed...f43a255a660ce3f5571f84d5d608b150f57d4821
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/20200821/179b190e/attachment-0001.html>


More information about the ghc-commits mailing list