[Git][ghc/ghc][wip/simplifier-tweaks] 69 commits: configure: Rip out Solaris dyld check

Simon Peyton Jones (@simonpj) gitlab at gitlab.haskell.org
Sun Jul 9 22:38:19 UTC 2023



Simon Peyton Jones pushed to branch wip/simplifier-tweaks at Glasgow Haskell Compiler / GHC


Commits:
de5830d0 by Ben Gamari at 2023-07-04T22:03:59-04:00
configure: Rip out Solaris dyld check

Solaris 11 was released over a decade ago and, moreover, I doubt we have
any Solaris users

- - - - -
59c5fe1d by doyougnu at 2023-07-04T22:04:56-04:00
CI: add JS release and debug builds, regen CI jobs

- - - - -
679bbc97 by Vladislav Zavialov at 2023-07-04T22:05:32-04:00
testsuite: Do not require CUSKs

Numerous tests make use of CUSKs (complete user-supplied kinds),
a legacy feature scheduled for deprecation. In order to proceed
with the said deprecation, the tests have been updated to use SAKS
instead (standalone kind signatures).

This also allows us to remove the Haskell2010 language pragmas that
were added in 115cd3c85a8 to work around the lack of CUSKs in GHC2021.

- - - - -
945d3599 by Ben Gamari at 2023-07-04T22:06:08-04:00
gitlab: Drop backport-for-8.8 MR template

Its usefulness has long passed.
- - - - -
66c721d3 by Alan Zimmerman at 2023-07-04T22:06:44-04:00
EPA: Simplify GHC/Parser.y comb2

Use the HasLoc instance from Ast.hs to allow comb2 to work with
anything with a SrcSpan

This gets rid of the custom comb2A, comb2Al, comb2N functions, and
removes various reLoc calls.

- - - - -
2be99b7e by Matthew Pickering at 2023-07-04T22:07:21-04:00
Fix deprecation warning when deprecated identifier is from another module

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

Fixes #23573

- - - - -
46c9bcd6 by Ben Gamari at 2023-07-04T22:07:58-04:00
rts: Don't rely on initializers for sigaction_t

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

- - - - -
ec55035f by Ben Gamari at 2023-07-04T22:07:58-04:00
hadrian: Don't treat -Winline warnings as fatal

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

- - - - -
3a09b789 by Ben Gamari at 2023-07-04T22:07:58-04:00
hadrian: Only pass -Wno-nonportable-include-path on Darwin

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

See #23577.

- - - - -
4af7eac2 by Mario Blažević at 2023-07-04T22:08:38-04:00
Fixed ticket #23571, TH.Ppr.pprLit hanging on large numeric literals

- - - - -
2304c697 by Ben Gamari at 2023-07-04T22:09:15-04:00
compiler: Make OccSet opaque

- - - - -
cf735db8 by Andrei Borzenkov at 2023-07-04T22:09:51-04:00
Add Note about why we need forall in Code to be on the right

- - - - -
fb140f82 by Hécate Moonlight at 2023-07-04T22:10:34-04:00
Relax the constraint about the foreign function's calling convention of FinalizerPtr to capi as well as ccall.
- - - - -
9ce44336 by meooow25 at 2023-07-05T11:42:37-04:00
Improve the situation with the stimes cycle

Currently the Semigroup stimes cycle is resolved in GHC.Base by
importing stimes implementations from a hs-boot file. Resolve the cycle
using hs-boot files for required classes (Num, Integral) instead. Now
stimes can be defined directly in GHC.Base, making inlining and
specialization possible.

This leads to some new boot files for `GHC.Num` and `GHC.Real`, the
methods for those are only used to implement `stimes` so it doesn't
appear that these boot files will introduce any new performance traps.

Metric Decrease:
    T13386
    T8095
Metric Increase:
    T13253
    T13386
    T18698a
    T18698b
    T19695
    T8095

- - - - -
9edcb1fb by Jaro Reinders at 2023-07-05T11:43:24-04:00
Refactor Unique to be represented by Word64

In #22010 we established that Int was not always sufficient to store all
the uniques we generate during compilation on 32-bit platforms. This
commit addresses that problem by using Word64 instead of Int for
uniques.

The core of the change is in GHC.Core.Types.Unique and
GHC.Core.Types.Unique.Supply. However, the representation of uniques is
used in many other places, so those needed changes too. Additionally, the RTS
has been extended with an atomic_inc64 operation.

One major change from this commit is the introduction of the Word64Set and
Word64Map data types. These are adapted versions of IntSet and IntMap
from the containers package. These are planned to be upstreamed in the
future.

As a natural consequence of these changes, the compiler will be a bit
slower and take more space on 32-bit platforms. Our CI tests indicate
around a 5% residency increase.

Metric Increase:
    CoOpt_Read
    CoOpt_Singletons
    LargeRecord
    ManyAlternatives
    ManyConstructors
    MultiComponentModules
    MultiComponentModulesRecomp
    MultiLayerModulesTH_OneShot
    RecordUpdPerf
    T10421
    T10547
    T12150
    T12227
    T12234
    T12425
    T12707
    T13035
    T13056
    T13253
    T13253-spj
    T13379
    T13386
    T13719
    T14683
    T14697
    T14766
    T15164
    T15703
    T16577
    T16875
    T17516
    T18140
    T18223
    T18282
    T18304
    T18698a
    T18698b
    T18923
    T1969
    T19695
    T20049
    T21839c
    T3064
    T3294
    T4801
    T5030
    T5321FD
    T5321Fun
    T5631
    T5642
    T5837
    T6048
    T783
    T8095
    T9020
    T9198
    T9233
    T9630
    T9675
    T9872a
    T9872b
    T9872b_defer
    T9872c
    T9872d
    T9961
    TcPlugin_RewritePerf
    UniqLoop
    WWRec
    hard_hole_fits

- - - - -
6b9db7d4 by Brandon Chinn at 2023-07-05T11:44:03-04:00
Fix docs for __GLASGOW_HASKELL_FULL_VERSION__ macro
- - - - -
40f4ef7c by Torsten Schmits at 2023-07-05T18:06:19-04:00
Substitute free variables captured by breakpoints in SpecConstr

Fixes #23267

- - - - -
2b55cb5f by sheaf at 2023-07-05T18:07:07-04:00
Reinstate untouchable variable error messages

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

- - - - -
53ed21c5 by Rodrigo Mesquita at 2023-07-05T18:07:47-04:00
configure: Drop Clang command from settings

Due to 01542cb7227614a93508b97ecad5b16dddeb6486 we no longer use the
`runClang` function, and no longer need to configure into settings the
Clang command. We used to determine options at runtime to pass clang when
it was used as an assembler, but now that we configure at configure time
we no longer need to.

- - - - -
6fdcf969 by Torsten Schmits at 2023-07-06T12:12:09-04:00
Filter out nontrivial substituted expressions in substTickish

Fixes #23272

- - - - -
41968fd6 by Sylvain Henry at 2023-07-06T12:13:02-04:00
JS: testsuite: use req_c predicate instead of js_broken

- - - - -
74a4dd2e by Sylvain Henry at 2023-07-06T12:13:02-04:00
JS: implement some file primitives (lstat,rmdir) (#22374)

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

- - - - -
7e759914 by Sylvain Henry at 2023-07-07T02:39:38-04:00
JS: cleanup utils (#23314)

- Removed unused code
- Don't export unused functions
- Move toTypeList to Closure module

- - - - -
f617655c by Sylvain Henry at 2023-07-07T02:39:38-04:00
JS: rename VarType/Vt into JSRep

- - - - -
19216ca5 by Sylvain Henry at 2023-07-07T02:39:38-04:00
JS: remove custom PrimRep conversion (#23314)

We use the usual conversion to PrimRep and then we convert these
PrimReps to JSReps.

- - - - -
d3de8668 by Sylvain Henry at 2023-07-07T02:39:38-04:00
JS: don't use isRuntimeRepKindedTy in JS FFI

- - - - -
8d1b75cb by Matthew Pickering at 2023-07-07T02:40:15-04:00
ghcup-metadata: Also updates ghcup-nightlies-0.0.7.yaml file

Fixes #23600

- - - - -
e524fa7f by Matthew Pickering at 2023-07-07T02:40:15-04:00
ghcup-metadata: Use dynamically linked alpine bindists

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

Fixes #23602

- - - - -
b9e7beb9 by Ben Gamari at 2023-07-07T11:32:22-04:00
Drop circle-ci-job.sh

- - - - -
9955eead by Ben Gamari at 2023-07-07T11:32:22-04:00
testsuite: Allow preservation of unexpected output

Here we introduce a new flag to the testsuite driver,
--unexpected-output-dir=<dir>, which allows the user to ask
the driver to preserve unexpected output from tests. The intent is for
this to be used in CI to allow users to more easily fix unexpected
platform-dependent output.

- - - - -
48f80968 by Ben Gamari at 2023-07-07T11:32:22-04:00
gitlab-ci: Preserve unexpected output

Here we enable use of the testsuite driver's `--unexpected-output-dir`
flag by CI, preserving the result as an artifact for use by users.

- - - - -
76983a0d by Matthew Pickering at 2023-07-07T11:32:58-04:00
driver: Fix -S with .cmm files

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

Fixes #23610

- - - - -
6df15e93 by Mike Pilgrem at 2023-07-07T11:33:40-04:00
Update Hadrian's stack.yaml
- - - - -
1dff43cf by Ben Gamari at 2023-07-08T05:05:37-04:00
compiler: Rework ShowSome

Previously the field used to filter the sub-declarations to show
was rather ad-hoc and was only able to show at most one sub-declaration.

- - - - -
8165404b by Ben Gamari at 2023-07-08T05:05:37-04:00
testsuite: Add test to catch changes in core libraries

This adds testing infrastructure to ensure that changes in core
libraries (e.g. `base` and `ghc-prim`) are caught in CI.

- - - - -
ec1c32e2 by Melanie Phoenix at 2023-07-08T05:06:14-04:00
Deprecate Data.List.NonEmpty.unzip

- - - - -
5d2442b8 by Ben Gamari at 2023-07-08T05:06:51-04:00
Drop latent mentions of -split-objs

Closes #21134.

- - - - -
a9bc20cb by Oleg Grenrus at 2023-07-08T05:07:31-04:00
Add warn_and_run test kind

This is a compile_and_run variant which also captures the GHC's
stderr. The warn_and_run name is best I can come up with,
as compile_and_run is taken.

This is useful specifically for testing warnings.  We want to test that
when warning triggers, and it's not a false positive, i.e. that the
runtime behaviour is indeed "incorrect".

As an example a single test is altered to use warn_and_run

- - - - -
c7026962 by Ben Gamari at 2023-07-08T05:08:11-04:00
configure: Don't use ld.gold on i386

ld.gold appears to produce invalid static constructor tables on i386.
While ideally we would add an autoconf check to check for this
brokenness, sadly such a check isn't easy to compose. Instead to
summarily reject such linkers on i386.

Somewhat hackily closes #23579.

- - - - -
054261dd by Bodigrim at 2023-07-08T19:32:47-04:00
Add since annotations for Data.Foldable1

- - - - -
550af505 by Sylvain Henry at 2023-07-08T19:33:28-04:00
JS: support -this-unit-id for programs in the linker (#23613)

- - - - -
d284470a by Bodigrim at 2023-07-08T19:34:08-04:00
Bump text submodule

- - - - -
101eba5a by Simon Peyton Jones at 2023-07-09T23:37:11+01:00
Inline more, sooner

- - - - -
ccb94b05 by Simon Peyton Jones at 2023-07-09T23:37:11+01:00
One more Simplifier optimistaions

Inline in exprIsConAppMaybe

- - - - -
e1193a00 by Simon Peyton Jones at 2023-07-09T23:38:06+01:00
Further improvements

- - - - -
cc2025a9 by Simon Peyton Jones at 2023-07-09T23:38:06+01:00
Remove trace

- - - - -
f92b368a by Simon Peyton Jones at 2023-07-09T23:38:06+01:00
Add a strategic inline pragma

- - - - -
bda0d4df by Simon Peyton Jones at 2023-07-09T23:38:06+01:00
Two improvements to coercion optimisation

One (mkSymCo) makes a big difference in GHC.Read
The other (in zapSubstEnv) makes a big diffference in T18223

- - - - -
bf6212ad by Simon Peyton Jones at 2023-07-09T23:38:06+01:00
Optimise every time we do mkTransCo

- - - - -
a4827894 by Simon Peyton Jones at 2023-07-09T23:38:06+01:00
Wibble: remove unused field

- - - - -
adbfda89 by Simon Peyton Jones at 2023-07-09T23:38:06+01:00
Fix a total bug in mkSelCo: wrong role

We were simply giving an outright-wrong role to a Refl
coercion in mkSelCo.

- - - - -
2b25265f by Simon Peyton Jones at 2023-07-09T23:38:06+01:00
Add assert back into mkCast

- - - - -
28fd2bcc by Simon Peyton Jones at 2023-07-09T23:38:06+01:00
Don't repeatedly optimise coercions in simplCast

This matters when we have

  (case x of (a,b) ->
    (case x of (a,b) -> e |> co1
    ) |>  co2
  ) |> co3

Those casts end up successively pushed onto the continuation stack,
and we don't want to optimise (co1;co2) and then (co1;co2;co3) etc.

- - - - -
a641e92d by Simon Peyton Jones at 2023-07-09T23:38:06+01:00
Better documentation

- - - - -
d2aeffe2 by Simon Peyton Jones at 2023-07-09T23:38:06+01:00
Improve pretty printing of InstCo

- - - - -
5e9a3964 by Simon Peyton Jones at 2023-07-09T23:38:06+01:00
More improvements

* Make opt_co4 (SelCo cs Refl) work properly.  It wasn't!

* Deal well with (ax ty ; sym (ax ty)).  Bizarrely that didn't work.
  I just put the ax/sym-ax rule first.

* Make (mkInstCo Refl ty) work. Bizarrely it didn't!

- - - - -
e1363617 by Simon Peyton Jones at 2023-07-09T23:38:06+01:00
Optimise opt_trans_rule a bit

This make a significant (5% ish) difference in T13386

- - - - -
8acc9e22 by Simon Peyton Jones at 2023-07-09T23:38:06+01:00
Allow join points to inline a bit more

This makes a big difference in T14697 -- but only because we still
don't have #22404 yet.

The critical function is  in GHC.Driver.CmdLine, and is called
    lgo1_uniq
It is called from `processArgs` when we find a "-" sign.

For some reason this function is called (incl recursive calls)
19,021,947 times in T14967.

- - - - -
45ab3ed5 by Simon Peyton Jones at 2023-07-09T23:38:06+01:00
wibble

- - - - -
8780cae9 by Simon Peyton Jones at 2023-07-09T23:38:07+01:00
Try making postInlineUnconditionally a bit more aggressive

In particular, inline if n_br == 1

- - - - -
c40a3db8 by Simon Peyton Jones at 2023-07-09T23:38:07+01:00
Try dropping the early-preInlineUnconditionally test

- - - - -
53814e74 by Simon Peyton Jones at 2023-07-09T23:38:07+01:00
Make postInlineUnconditionally a bit more aggressive

Try postInlineUnconditionally for one-branch things, even
if under a lambda

Reinstate the check in simplAuxBind

- - - - -
14745306 by Simon Peyton Jones at 2023-07-09T23:38:07+01:00
Comments only

- - - - -
d9abcd45 by Simon Peyton Jones at 2023-07-09T23:38:07+01:00
Fixes for T15630

What a struggle.  Finally understood exponential behaviour

- - - - -
be49266f by Simon Peyton Jones at 2023-07-09T23:38:07+01:00
Wibble

- - - - -
834678a9 by Simon Peyton Jones at 2023-07-09T23:38:07+01:00
Move T18730 to perf/compiler where it belongs

- - - - -
709f8f32 by Simon Peyton Jones at 2023-07-09T23:38:07+01:00
Try removing the too_many_occs idea

Maybe other things now cover this adequately; if not we should know
exactly why we need it.

- - - - -
455fd7bc by Simon Peyton Jones at 2023-07-09T23:38:07+01:00
Refine the too_many_occs story

- - - - -
8fc0f2b2 by Simon Peyton Jones at 2023-07-09T23:38:07+01:00
Comments only

- - - - -


26 changed files:

- .gitlab-ci.yml
- .gitlab/ci.sh
- − .gitlab/circle-ci-job.sh
- .gitlab/generate-ci/gen_ci.hs
- .gitlab/jobs.yaml
- − .gitlab/merge_request_templates/backport-for-8.8.md
- compiler/GHC/Builtin/Uniques.hs
- compiler/GHC/Cmm/CommonBlockElim.hs
- compiler/GHC/Cmm/Dataflow/Collections.hs
- compiler/GHC/Cmm/Dataflow/Label.hs
- compiler/GHC/Cmm/Dominators.hs
- compiler/GHC/Cmm/LRegSet.hs
- compiler/GHC/Cmm/Sink.hs
- compiler/GHC/CmmToAsm/CFG.hs
- compiler/GHC/CmmToAsm/CFG/Dominators.hs
- compiler/GHC/CmmToAsm/Wasm/Asm.hs
- compiler/GHC/CmmToAsm/Wasm/FromCmm.hs
- compiler/GHC/CmmToAsm/Wasm/Types.hs
- compiler/GHC/CmmToLlvm/Base.hs
- compiler/GHC/Core.hs
- compiler/GHC/Core/Coercion.hs
- compiler/GHC/Core/Coercion/Opt.hs
- compiler/GHC/Core/Opt/Monad.hs
- compiler/GHC/Core/Opt/Pipeline.hs
- compiler/GHC/Core/Opt/Simplify/Env.hs
- compiler/GHC/Core/Opt/Simplify/Inline.hs


The diff was not included because it is too large.


View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/1ac91e5664072a3380e069737f2771a7f7336a23...8fc0f2b29ed83b26d59c59fdebffeea97225cc1c

-- 
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/1ac91e5664072a3380e069737f2771a7f7336a23...8fc0f2b29ed83b26d59c59fdebffeea97225cc1c
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/20230709/4869be7e/attachment-0001.html>


More information about the ghc-commits mailing list