[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