[Git][ghc/ghc][wip/decode_cloned_stack] 72 commits: Improve GHC.Tc.Gen.App.tcInstFun

Sven Tennie (@supersven) gitlab at gitlab.haskell.org
Sun Feb 26 16:47:21 UTC 2023



Sven Tennie pushed to branch wip/decode_cloned_stack at Glasgow Haskell Compiler / GHC


Commits:
7080a93f by Simon Peyton Jones at 2023-02-20T12:06:32+01:00
Improve GHC.Tc.Gen.App.tcInstFun

It wasn't behaving right when inst_final=False, and the
function had no type variables
   f :: Foo => Int

Rather a corner case, but we might as well do it right.

Fixes #22908

Unexpectedly, three test cases (all using :type in GHCi) got
slightly better output as a result:
  T17403, T14796, T12447

- - - - -
2592ab69 by Cheng Shao at 2023-02-20T10:35:30-05:00
compiler: fix cost centre profiling breakage in wasm NCG due to incorrect register mapping

The wasm NCG used to map CCCS to a wasm global, based on the
observation that CCCS is a transient register that's already handled
by thread state load/store logic, so it doesn't need to be backed by
the rCCCS field in the register table.

Unfortunately, this is wrong, since even when Cmm execution hasn't
yielded back to the scheduler, the Cmm code may call enterFunCCS,
which does use rCCCS.

This breaks cost centre profiling in a subtle way, resulting in
inaccurate stack traces in some test cases. The fix is simple though:
just remove the CCCS mapping.

- - - - -
26243de1 by Alexis King at 2023-02-20T15:27:17-05:00
Handle top-level Addr# literals in the bytecode compiler

Fixes #22376.

- - - - -
0196cc2b by romes at 2023-02-20T15:27:52-05:00
fix: Explicitly flush stdout on plugin

Because of #20791, the plugins tests often fail.  This is a temporary
fix to stop the tests from failing due to unflushed outputs on windows
and the explicit flush should be removed when #20791 is fixed.

- - - - -
4327d635 by Ryan Scott at 2023-02-20T20:44:34-05:00
Don't generate datacon wrappers for `type data` declarations

Data constructor wrappers only make sense for _value_-level data constructors,
but data constructors for `type data` declarations only exist at the _type_
level. This patch does the following:

* The criteria in `GHC.Types.Id.Make.mkDataConRep` for whether a data
  constructor receives a wrapper now consider whether or not its parent data
  type was declared with `type data`, omitting a wrapper if this is the case.

* Now that `type data` data constructors no longer receive wrappers, there is a
  spot of code in `refineDefaultAlt` that panics when it encounters a value
  headed by a `type data` type constructor. I've fixed this with a special case
  in `refineDefaultAlt` and expanded `Note [Refine DEFAULT case alternatives]`
  to explain why we do this.

Fixes #22948.

- - - - -
96dc58b9 by Ryan Scott at 2023-02-20T20:44:35-05:00
Treat type data declarations as empty when checking pattern-matching coverage

The data constructors for a `type data` declaration don't exist at the value
level, so we don't want GHC to warn users to match on them.

Fixes #22964.

- - - - -
ff8e99f6 by Ryan Scott at 2023-02-20T20:44:35-05:00
Disallow `tagToEnum#` on `type data` types

We don't want to allow users to conjure up values of a `type data` type using
`tagToEnum#`, as these simply don't exist at the value level.

- - - - -
8e765aff by Bodigrim at 2023-02-21T12:03:24-05:00
Bump submodule text to 2.0.2

- - - - -
172ff88f by Georgi Lyubenov at 2023-02-21T18:35:56-05:00
GHC proposal 496 - Nullary record wildcards

This patch implements GHC proposal 496, which allows record wildcards
to be used for nullary constructors, e.g.

  data A = MkA1 | MkA2 { fld1 :: Int }
  f :: A -> Int
  f (MkA1 {..}) = 0
  f (MkA2 {..}) = fld1

To achieve this, we add arity information to the record field
environment, so that we can accept a constructor which has no fields
while continuing to reject non-record constructors with more than 1
field. See Note [Nullary constructors and empty record wildcards],
as well as the more general overview in Note [Local constructor info in the renamer],
both in the newly introduced GHC.Types.ConInfo module.

Fixes #22161

- - - - -
f70a0239 by sheaf at 2023-02-21T18:36:35-05:00
ghc-prim: levity-polymorphic array equality ops

This patch changes the pointer-equality comparison operations in
GHC.Prim.PtrEq to work with arrays of unlifted values, e.g.

  sameArray# :: forall {l} (a :: TYPE (BoxedRep l)). Array# a -> Array# a -> Int#

Fixes #22976

- - - - -
9296660b by Andreas Klebinger at 2023-02-21T23:58:05-05:00
base: Correct @since annotation for FP<->Integral bit cast operations.

Fixes #22708

- - - - -
f11d9c27 by romes at 2023-02-21T23:58:42-05:00
fix: Update documentation links

Closes #23008

Additionally batches some fixes to pointers to the Note [Wired-in units],
and a typo in said note.

- - - - -
fb60339f by Bryan Richter at 2023-02-23T14:45:17+02:00
Propagate failure if unable to push notes

- - - - -
8e170f86 by Alexis King at 2023-02-23T16:59:22-05:00
rts: Fix `prompt#` when profiling is enabled

This commit also adds a new -Dk RTS option to the debug RTS to assist
debugging continuation captures. Currently, the printed information is
quite minimal, but more can be added in the future if it proves to be
useful when debugging future issues.

fixes #23001

- - - - -
e9e7a00d by sheaf at 2023-02-23T17:00:01-05:00
Explicit migration timeline for loopy SC solving

This patch updates the warning message introduced in commit
9fb4ca89bff9873e5f6a6849fa22a349c94deaae to specify an explicit
migration timeline: GHC will no longer support this constraint solving
mechanism starting from GHC 9.10.

Fixes #22912

- - - - -
4eb9c234 by Sylvain Henry at 2023-02-24T17:27:45-05:00
JS: make some arithmetic primops faster (#22835)

Don't use BigInt for wordAdd2, mulWord32, and timesInt32.

Co-authored-by: Matthew Craven <5086-clyring at users.noreply.gitlab.haskell.org>

- - - - -
92e76483 by Ben Gamari at 2023-02-24T17:28:20-05:00
Bump terminfo submodule to 0.4.1.6

- - - - -
f229db14 by Ben Gamari at 2023-02-24T17:28:20-05:00
Bump unix submodule to 2.8.1.0

- - - - -
47bd48c1 by Ben Gamari at 2023-02-24T17:28:20-05:00
Bump deepseq submodule to 1.4.8.1

- - - - -
d2012594 by Ben Gamari at 2023-02-24T17:28:20-05:00
Bump directory submodule to 1.3.8.1

- - - - -
df6f70d1 by Ben Gamari at 2023-02-24T17:28:20-05:00
Bump process submodule to v1.6.17.0

- - - - -
4c869e48 by Ben Gamari at 2023-02-24T17:28:20-05:00
Bump hsc2hs submodule to 0.68.8

- - - - -
81d96642 by Ben Gamari at 2023-02-24T17:28:20-05:00
Bump array submodule to 0.5.4.0

- - - - -
6361f771 by Ben Gamari at 2023-02-24T17:28:20-05:00
Bump Cabal submodule to 3.9 pre-release

- - - - -
4085fb6c by Ben Gamari at 2023-02-24T17:28:20-05:00
Bump filepath submodule to 1.4.100.1

- - - - -
2bfad50f by Ben Gamari at 2023-02-24T17:28:20-05:00
Bump haskeline submodule to 0.8.2.1

- - - - -
fdc89a8d by Ben Gamari at 2023-02-24T21:29:32-05:00
gitlab-ci: Run nix-build with -v0

This significantly cuts down on the amount of
noise in the job log.

Addresses #22861.
- - - - -
69fb0b13 by Aaron Allen at 2023-02-24T21:30:10-05:00
Fix ParallelListComp out of scope suggestion

This patch makes it so vars from one block of a parallel list
comprehension are not in scope in a subsequent block during type
checking. This was causing GHC to emit a faulty suggestion when an out
of scope variable shared the occ name of a var from a different block.

Fixes #22940

- - - - -
ece092d0 by Simon Peyton Jones at 2023-02-24T21:30:45-05:00
Fix shadowing bug in prepareAlts

As #23012 showed, GHC.Core.Opt.Simplify.Utils.prepareAlts was
using an OutType to construct an InAlt.  When shadowing is in play,
this is outright wrong.

See Note [Shadowing in prepareAlts].

- - - - -
7825fef9 by Sylvain Henry at 2023-02-24T21:31:25-05:00
JS: Store CI perf results (fix #22923)

- - - - -
c1a8b3e5 by Sven Tennie at 2023-02-26T16:47:05+00:00
ghc-heap: Decode StgStack and its frames

Previously, ghc-heap could only decode heap closures.

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

- - - - -
d8a0698f by Sven Tennie at 2023-02-26T16:47:05+00:00
Use ghc version based #if

- - - - -
f4d09bfb by Sven Tennie at 2023-02-26T16:47:05+00:00
validate succeeds

- - - - -
065e90fc by Sven Tennie at 2023-02-26T16:47:05+00:00
Remove debug belch

- - - - -
104a06d7 by Sven Tennie at 2023-02-26T16:47:05+00:00
Split StackFrameIterator into separate constructors

- - - - -
902b055e by Sven Tennie at 2023-02-26T16:47:05+00:00
Fix tests

- - - - -
6b9e269c by Sven Tennie at 2023-02-26T16:47:05+00:00
Safer Eq StackSnapshot

- - - - -
68e68cb2 by Sven Tennie at 2023-02-26T16:47:05+00:00
Revert useless changes

- - - - -
788621bc by Sven Tennie at 2023-02-26T16:47:05+00:00
Revert unnecessary changes

- - - - -
548814a5 by Sven Tennie at 2023-02-26T16:47:05+00:00
Adjust sizes for 32bit in stack_misc_closures test

- - - - -
fc28623d by Sven Tennie at 2023-02-26T16:47:05+00:00
Simplify show instances

- - - - -
2d5bec9f by Sven Tennie at 2023-02-26T16:47:05+00:00
Enable 32bit testing of stack_misc_closures

- - - - -
01da0220 by Sven Tennie at 2023-02-26T16:47:05+00:00
Cleanup

- - - - -
c462c64f by Sven Tennie at 2023-02-26T16:47:05+00:00
Fix ERW_

- - - - -
ad20fa13 by Sven Tennie at 2023-02-26T16:47:05+00:00
Add case for CmmRetInfo to isSomeRODataLabel

- - - - -
5f9183af by Sven Tennie at 2023-02-26T16:47:05+00:00
Remove checkSTACK check

- - - - -
48ce32b8 by Sven Tennie at 2023-02-26T16:47:05+00:00
Make valid casts

- - - - -
7e920c2a by Sven Tennie at 2023-02-26T16:47:05+00:00
iFix stack_misc_closures for Darwin

- - - - -
889b77a8 by Sven Tennie at 2023-02-26T16:47:05+00:00
Delete some obsolete TODOs

- - - - -
90d6a217 by Sven Tennie at 2023-02-26T16:47:06+00:00
Cleanup DecodeStack

- - - - -
5d8599e1 by Sven Tennie at 2023-02-26T16:47:06+00:00
Remove redundant include

- - - - -
3eba5e57 by Sven Tennie at 2023-02-26T16:47:06+00:00
Move Modules

- - - - -
cf15ad0b by Sven Tennie at 2023-02-26T16:47:06+00:00
Update pragmas

- - - - -
f0368d1e by Sven Tennie at 2023-02-26T16:47:06+00:00
Test Binary StackSnapshot instance

- - - - -
95416e54 by Sven Tennie at 2023-02-26T16:47:06+00:00
Fix Printer.c

- - - - -
167a7b6e by Sven Tennie at 2023-02-26T16:47:06+00:00
Remove obsolete TODO

- - - - -
ab35884c by Sven Tennie at 2023-02-26T16:47:06+00:00
Cleanup

- - - - -
b4ef7e67 by Sven Tennie at 2023-02-26T16:47:06+00:00
Cleanup Sanity.c and test compiler flags

- - - - -
7d6df24a by Sven Tennie at 2023-02-26T16:47:06+00:00
Remove trace from Decode

- - - - -
a1c79e8d by Sven Tennie at 2023-02-26T16:47:06+00:00
Delete belchStack()

- - - - -
6d8076b6 by Sven Tennie at 2023-02-26T16:47:06+00:00
Debug.Trace in stack_misc_closures

- - - - -
8c3e3f9d by Sven Tennie at 2023-02-26T16:47:06+00:00
Delete TODO

- - - - -
7aa16337 by Sven Tennie at 2023-02-26T16:47:06+00:00
Remove known type fields

- - - - -
2a522ae0 by Sven Tennie at 2023-02-26T16:47:06+00:00
Overhaul note

- - - - -
7fca9d85 by Sven Tennie at 2023-02-26T16:47:06+00:00
Cleanup

- - - - -
c4b90716 by Sven Tennie at 2023-02-26T16:47:06+00:00
Formatting

- - - - -
0977f8e7 by Sven Tennie at 2023-02-26T16:47:06+00:00
Refactor

- - - - -
a620ef84 by Sven Tennie at 2023-02-26T16:47:06+00:00
Formatting

- - - - -
c89a48ca by Sven Tennie at 2023-02-26T16:47:06+00:00
Limit scopes in Decode

- - - - -
b9dab823 by Sven Tennie at 2023-02-26T16:47:06+00:00
Scopes

- - - - -
74da97c8 by Sven Tennie at 2023-02-26T16:47:06+00:00
Formatting

- - - - -
00ad5caf by Sven Tennie at 2023-02-26T16:47:06+00:00
Solve GetClosure issue with error

- - - - -


30 changed files:

- .gitlab/ci.sh
- .gitlab/test-metrics.sh
- compiler/GHC/ByteCode/Asm.hs
- compiler/GHC/ByteCode/Instr.hs
- compiler/GHC/ByteCode/Linker.hs
- compiler/GHC/ByteCode/Types.hs
- compiler/GHC/Cmm/CLabel.hs
- compiler/GHC/CmmToAsm/Wasm/FromCmm.hs
- compiler/GHC/Core/Opt/Simplify/Iteration.hs
- compiler/GHC/Core/Opt/Simplify/Utils.hs
- compiler/GHC/Core/Utils.hs
- compiler/GHC/HsToCore/Pmc/Solver.hs
- compiler/GHC/Linker/Loader.hs
- compiler/GHC/Linker/Types.hs
- compiler/GHC/Rename/Env.hs
- compiler/GHC/Rename/Module.hs
- compiler/GHC/Rename/Names.hs
- compiler/GHC/Rename/Pat.hs
- compiler/GHC/StgToByteCode.hs
- compiler/GHC/StgToJS/Prim.hs
- compiler/GHC/Tc/Errors/Ppr.hs
- compiler/GHC/Tc/Errors/Types.hs
- compiler/GHC/Tc/Gen/App.hs
- compiler/GHC/Tc/Gen/Match.hs
- compiler/GHC/Tc/Module.hs
- compiler/GHC/Tc/Types.hs
- compiler/GHC/Tc/Utils/Monad.hs
- + compiler/GHC/Types/ConInfo.hs
- compiler/GHC/Types/Error/Codes.hs
- compiler/GHC/Types/Id/Make.hs


The diff was not included because it is too large.


View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/ba5114af67821b50b4404d601824d34030959326...00ad5cafdcfe18bb0c5040cd5aa55150553909f0

-- 
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/ba5114af67821b50b4404d601824d34030959326...00ad5cafdcfe18bb0c5040cd5aa55150553909f0
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/20230226/453d902e/attachment-0001.html>


More information about the ghc-commits mailing list