summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Experiment: Try making CoreExpr binder fields strictwip/core-expr-strictMatthew Pickering2021-04-011-4/+4
|
* Replace - with negateOleg Grenrus2021-03-281-2/+2
| | | | It also failed to parse with HLint (I wonder how GHC itself handles it?)
* gitlab-ci: Bump ci-imagesBen Gamari2021-03-281-1/+1
| | | | Upgrades bootstrap GHC to 8.10.4, hopefully avoiding #19600.
* Add UnitId to Target recordFendor2021-03-2828-50/+83
| | | | | | | | | | In the future, we want `HscEnv` to support multiple home units at the same time. This means, that there will be 'Target's that do not belong to the current 'HomeUnit'. This is an API change without changing behaviour. Update haddock submodule to incorporate API changes.
* Rename StrictSig to DmdSig (#19597)Sebastian Graf2021-03-2831-256/+256
| | | | | | | | | | | | | In #19597, we also settled on the following renamings: * `idStrictness` -> `idDmdSig`, `strictnessInfo` -> `dmdSigInfo`, `HsStrictness` -> `HsDmdSig` * `idCprInfo` -> `idCprSig`, `cprInfo` -> `cprSigInfo`, `HsCpr` -> `HsCprSig` Fixes #19597.
* Make RULES more robust in GHC.FloatSimon Peyton Jones2021-03-281-75/+155
| | | | | | | | | | | | | The RULES that use hand-written specialised code for overloaded class methods like floor, ceiling, truncate etc were fragile to certain transformations. This patch makes them robust. See #19582. It's all described in Note [Rules for overloaded class methods]. No test case because currently we don't do the transformation (floating out over-saturated applications) that makes this patch have an effect. But we may so so in future, and this patch makes the RULES much more robust.
* rts: Fix joinOSThread on WindowsBen Gamari2021-03-271-1/+6
| | | | | Previously we were treating the thread ID as a HANDLE, but it is not. We must first OpenThread.
* bump submodule nofibViktor Dukhovni2021-03-271-0/+0
|
* hadrian: build ghc-stageN wrapper when building the stageN:exe:ghc-bin targetAdam Sandberg Ericsson2021-03-261-0/+6
|
* Rubbish literals for all representations (#18983)Sebastian Graf2021-03-2627-390/+538
| | | | | | | | | | | | | | | | | This patch cleans up the complexity around WW's `mk_absent_let` by broadening the scope of `LitRubbish`. Rubbish literals now store the `PrimRep` they represent and are ultimately lowered in Cmm. This in turn allows absent literals of `VecRep` or `VoidRep`. The latter allows absent literals for unlifted coercions, as requested in #18983. I took the liberty to rewrite and clean up `Note [Absent fillers]` and `Note [Rubbish values]` to account for the new implementation and to make them more orthogonal in their description. I didn't add a new regression test, as `T18982` already contains the test in the ticket and its test output changes as expected. Fixes #18983.
* Only update config.sub when it already exists (#19574)Sylvain Henry2021-03-261-1/+2
|
* Bump Win32 to 2.13.0.0GHC GitLab CI2021-03-266-2/+2
| | | | Bumps Win32 submodule.
* Fix lint issueSylvain Henry2021-03-261-1/+1
|
* Bump haddock submoduleSylvain Henry2021-03-261-0/+0
|
* Use foldGet in getSymbolTableSylvain Henry2021-03-263-25/+50
| | | | | | | | | | | Implement @alexbiehl suggestion of using a foldGet function to avoid the creation of an intermediate list while reading the symbol table. Do something similar for reading the Hie symbol table and the interface dictionary. Metric Decrease: T10421
* Remove UniqSupply from NameCacheSylvain Henry2021-03-269-152/+115
| | | | | | | | | | | | | | | | | | | | | | | | | | | | As suggested by @alexbiehl, this patch replaces the always updated UniqSupply in NameCache with a fixed Char and use it with `uniqFromMask` to generate uniques. This required some refactoring because getting a new unique from the NameCache can't be done in pure code anymore, in particular not in an atomic update function for `atomicModifyIORef`. So we use an MVar instead to store the OrigNameCache field. For some reason, T12545 increases (+1%) on i386 while it decreases on other CI runners. T9630 ghc/peak increases only with the dwarf build on CI (+16%). Metric Decrease: T12425 T12545 T9198 T12234 Metric Increase: T12545 T9630 Update haddock submodule
* Refactor FinderCacheSylvain Henry2021-03-2622-321/+447
|
* Refactor NameCacheSylvain Henry2021-03-2613-198/+186
| | | | | | | | * Make NameCache the mutable one and replace NameCacheUpdater with it * Remove NameCache related code duplicated into haddock Bump haddock submodule
* Refactor interface loadingSylvain Henry2021-03-267-281/+319
| | | | | | | | | | In order to support several home-units and several independent unit-databases, it's easier to explicitly pass UnitState, DynFlags, etc. to interface loading functions. This patch converts some functions using monads such as IfG or TcRnIf with implicit access to HscEnv to use IO instead and to pass them specific fields of HscEnv instead of an HscEnv value.
* Implement -Wmissing-kind-signaturesOleg Grenrus2021-03-2514-10/+297
| | | | Fixes #19564
* EPA: Tidy up some GHC.Parser.Annotation commentswip/az/exactprint-tweak-parser-state-commentGHC GitLab CI2021-03-251-14/+33
| | | | | | This is a follow up from !2418 / #19579 [skip ci]
* EPA : Remove ApiAnn from ParsedModuleGHC GitLab CI2021-03-2529-1438/+202
| | | | | All the comments are now captured in the AST, there is no need for a side-channel structure for them.
* Add compiler linting to CIHécate2021-03-2532-155/+149
| | | | | This commit adds the `lint:compiler` Hadrian target to the CI runner. It does also fixes hints in the compiler/ and libraries/base/ codebases.
* Fix the binder-swap transformation in OccurAnalSimon Peyton Jones2021-03-245-53/+234
| | | | | | | | | | The binder-swap transformation needs to be iterated, as shown by #19581. The fix is pretty simple, and is explained in point (BS2) of Note [The binder-swap substitution]. Net effect: - sometimes, fewer simplifier iterations - sometimes, more case merging
* hadrian: remove alex and happy from build-toolsAdam Sandberg Ericsson2021-03-241-2/+0
| | | | | | | | | Hadrian doesn't actually depend on them as built-tools and normal usage where you want to compile GHC will pick up the tools before you run hadrian via the ./configure script. Not building an extra copy of alex and happy might also improve overall build-times when building from scratch.
* STG AST - Make ConstructorNumber always a field.Andreas Klebinger2021-03-243-11/+5
| | | | | | | | It's used by all passes and already used as a regular field. So I figured it would be both more consistent and performant to make it a regular field for all constructors. I also added a few bangs in the process.
* CmmToAsm.Reg.Linear: oneShot-ify RegMwip/ncg-perfBen Gamari2021-03-241-16/+22
| | | | | | | | | | | | | ------------------------- Metric Decrease: T783 T4801 T12707 T13379 T3294 T4801 T5321FD -------------------------
* CmmToAsm.Reg.Linear: Use concat rather than repeated (++)Ben Gamari2021-03-241-2/+1
|
* EPA: Run exactprint transformation tests as part of CIGHC GitLab CI2021-03-2385-1211/+1289
| | | | | | | | | | EPA == exact print annotations. When !2418 landed, it did not run the tests brought over from ghc-exactprint for making sure the AST prints correctly efter being edited. This enables those tests.
* gitlab-ci: Rework handling of head.hackage job triggerBen Gamari2021-03-232-88/+9
| | | | | | | | GitLab 12.3 now has reasonable support [1] for cross-project job dependencies, allowing us to drop the awful hack of a shell script we used previously. [1] https://docs.gitlab.com/ee/ci/multi_project_pipelines.html#mirroring-status-from-triggered-pipeline
* Move loader state into InterpSylvain Henry2021-03-2321-579/+649
| | | | | | | | | | | | | | | | | | The loader state was stored into HscEnv. As we need to have two interpreters and one loader state per interpreter in #14335, it's natural to make the loader state a field of the Interp type. As a side effect, many functions now only require a Interp parameter instead of HscEnv. Sadly we can't fully free GHC.Linker.Loader of HscEnv yet because the loader is initialised lazily from the HscEnv the first time it is used. This is left as future work. HscEnv may not contain an Interp value (i.e. hsc_interp :: Maybe Interp). So a side effect of the previous side effect is that callers of the modified functions now have to provide an Interp. It is satisfying as it pushes upstream the handling of the case where HscEnv doesn't contain an Interpreter. It is better than raising a panic (less partial functions, "parse, don't validate", etc.).
* rts: Use long-path-aware statBen Gamari2021-03-233-4/+11
| | | | | | | | Previously `pathstat` relied on msvcrt's `stat` implementation, which was not long-path-aware. It should rather be defined in terms of the `stat` implementation provided by `utils/fs`. Fixes #19541.
* PPC NCG: Fix int to float conversionPeter Trommler2021-03-231-6/+26
| | | | | | | | In commit 540fa6b2 integer to float conversions were changed to round to the nearest even. Implement a special case for 64 bit integer to single precision floating point numbers. Fixes #19563.
* More improvement to MonoLocalBinds documentationSimon Peyton Jones2021-03-231-50/+35
|
* UniqSM: oneShot-ifyBen Gamari2021-03-221-10/+21
| | | | | | | | | | Part of #18202 ------------------------- Metric Decrease: T12707 T3294 -------------------------
* Short-circuit warning generation for partial type signaturesSimon Peyton Jones2021-03-221-2/+28
| | | | | | | | | | | | | | | | | | | | | | | | This Note says it all: Note [Skip type holes rapidly] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Suppose we have module with a /lot/ of partial type signatures, and we compile it while suppressing partial-type-signature warnings. Then we don't want to spend ages constructing error messages and lists of relevant bindings that we never display! This happened in #14766, in which partial type signatures in a Happy-generated parser cause a huge increase in compile time. The function ignoreThisHole short-circuits the error/warning generation machinery, in cases where it is definitely going to be a no-op. It makes a pretty big difference on the Sigs.hs example in #14766: Compile-time allocation GHC 8.10 5.6G Before this patch 937G With this patch 4.7G Yes, that's more than two orders of magnitude!
* base: Use mutableByteArrayContentsBen Gamari2021-03-223-13/+11
|
* compiler: Introduce mutableByteArrayContents# primopBen Gamari2021-03-222-0/+8
| | | | | As noted in #19540, a number of users within and outside of GHC rely on unsafeCoerceUnlifted to work around the fact that this was missing
* [ci] Default values for GITLAB_CI_BRANCH, and IGNORE_PERF_FAILURESwip/angerman/9.2-forward-portsMoritz Angermann2021-03-211-3/+3
|
* [llvm/darwin] change vortex cpu to genericMoritz Angermann2021-03-211-1/+1
| | | | | For now only the apple flavoured llvm knows vortex, as we build against other toolchains, lets stay with generic for now.
* [elf/aarch64] Fall Through decorationMoritz Angermann2021-03-211-4/+4
|
* [ci/arm/darwin/testsuite] Forwards ports from GHC-8.10Moritz Angermann2021-03-2114-64/+340
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a set of forward ports (cherry-picks) from 8.10 - a7d22795ed [ci] Add support for building on aarch64-darwin - 5109e87e13 [testlib/driver] denoise - 307d34945b [ci] default value for CONFIGURE_ARGS - 10a18cb4e0 [testsuite] mark ghci056 as fragile - 16c13d5acf [ci] Default value for MAKE_ARGS - ab571457b9 [ci/build] Copy config.sub around - 251892b98f [ci/darwin] bump nixpkgs rev - 5a6c36ecb4 [testsuite/darwin] fix conc059 - aae95ef0c9 [ci] add timing info - 3592d1104c [Aarch64] No div-by-zero; disable test. - 57671071ad [Darwin] mark stdc++ tests as broken - 33c4d49754 [testsuite] filter out superfluous dylib warnings - 4bea83afec [ci/nix-shell] Add Foundation and Security - 6345530062 [testsuite/json2] Fix failure with LLVM backends - c3944bc89d [ci/nix-shell] [Darwin] Stop the ld warnings about libiconv. - b821fcc714 [testsuite] static001 is not broken anymore. - f7062e1b0c [testsuite/arm64] fix section_alignment - 820b076698 [darwin] stop the DYLD_LIBRARY_PATH madness - 07b1af0362 [ci/nix-shell] uniquify NIX_LDFLAGS{_FOR_TARGET} As well as a few additional fixups needed to make this block compile: - Fixup all.T - Set CROSS_TARGET, BROKEN_TESTS, XZ, RUNTEST_ARGS, default value. - [ci] shell.nix bump happy
* Remove unnecessary extendTyVarEnvFVRn functionRyan Scott2021-03-213-11/+6
| | | | | | | | | | | The `extendTyVarEnvFVRn` function does the exact same thing as `bindLocalNamesFV`. I see no meaningful distinction between the two functions, so let's just remove the former (which is only used in a handful of places) in favor of the latter. Historical note: `extendTyVarEnvFVRn` and `bindLocalNamesFV` used to be distinct functions, but their implementations were synchronized in 2004 as a part of commit 20e39e0e07e4a8e9395894b2785d6675e4e3e3b3.
* Bump template-haskell version to 2.18.0.0wip/T19083Ryan Scott2021-03-206-6/+6
| | | | | | | This requires bumping the `exceptions` and `text` submodules to bring in commits that bump their respective upper version bounds on `template-haskell`. Fixes #19083.
* Move miscategorized items in template-haskell changelogRyan Scott2021-03-201-6/+6
|
* Clean up TBDs in changelogBen Gamari2021-03-201-1/+7
| | | | (cherry picked from commit 4f334120c8e9cc4aefcbf11d99f169f648af9fde)
* gitlab-ci: Always start with fresh clonewip/ci-fixes-2Ben Gamari2021-03-201-0/+3
| | | | | Currently we are suffering from issues that appear to be caused by non-hermetic builds. Try avoiding this by setting `GIT_STRATEGY` to `clone`.
* Add error information to osCommitMemory on failure.Moritz Angermann2021-03-201-1/+1
|
* Remove outdated VagrantfileSebastian Graf2021-03-201-50/+0
|
* Add fold vs. mconcat test T17123Viktor Dukhovni2021-03-202-0/+14
|