summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Add some tracing to CIwip/cachingMatthew Pickering2021-06-031-1/+3
|
* CountDeps: print graph of module dependencies in dot formatShayne Fletcher2021-06-021-10/+28
| | | | | | | | The tests `CountParserDeps.hs` and `CountAstDeps.hs` are implemented by calling `CountDeps`. In this MR, `CountDeps.printDeps` is updated such tat by uncommenting a line, you can print a module's dependency graph showing what includes what. The output is in a format suitable for use with graphviz.
* WW: Mark absent errors as diverging againSebastian Graf2021-06-024-56/+57
| | | | | | | | | | | | | | | As the now historic part of `NOTE [aBSENT_ERROR_ID]` explains, we used to have `exprIsHNF` respond True to `absentError` and give it a non-bottoming demand signature, in order to perform case-to-let on certain `case`s we used to emit that scrutinised `absentError` (Urgh). What changed, why don't we emit these questionable absent errors anymore? The absent errors in question filled in for binders that would end up in strict fields after being seq'd. Apparently, the old strictness analyser would give these binders an absent demand, but today we give them head-strict demand `1A` and thus don't replace with absent errors at all. This fixes items (1) and (2) of #19853.
* Fix infinite looping in hptSomeModulesBelowMatthew Pickering2021-06-021-6/+14
| | | | | | | | | | | | | | | | When compiling Agda we entered into an infinite loop as the stopping condition was a bit wrong in hptSomeModulesBelow. The bad situation was something like * We would see module A (NotBoot) and follow it dependencies * Later on we would encounter A (Boot) and follow it's dependencies, because the lookup would not match A (NotBoot) and A (IsBoot) * Somewhere in A (Boot)s dependencies, A (Boot) would appear again and lead us into an infinite loop. Now the state marks whether we have been both variants (IsBoot and NotBoot) so we don't follow dependencies for A (Boot) many times.
* CI: Don't explicitly build hadrian before using run_hadrianMatthew Pickering2021-06-021-2/+0
| | | | | This causes hadrian to be built twice because the second time uses a different index state.
* Run both lint jobs togetherMatthew Pickering2021-06-021-9/+1
|
* hadrian: Speed up lint:base ruleMatthew Pickering2021-06-022-3/+8
| | | | | | | | | The rule before decided to build the whole stage1 compiler, but this was unecessary as we were just missing one header file which can be generated directly by calling configure. Before: 18 minutes After: 54s
* Disallow linear arrows in GADT records (#19928)Vladislav Zavialov2021-06-026-11/+48
| | | | | | | | | | | | | Before this patch, GHC used to silently accept programs such as the following: data R where D1 :: { d1 :: Int } %1 -> R The %1 annotation was completely ignored. Now it is a proper error. One remaining issue is that in the error message (⊸) turns into (%1 ->). This is to be corrected with upcoming exactprint updates.
* Specify the reason for import for the backpack's extra importsDivam2021-06-022-9/+13
|
* Fail before checking instances in checkHsigIface if exports don't match (#19244)Zubin Duggal2021-06-027-2/+103
|
* Allow primops in a :print (and friends) command. Fix #19394Roland Senn2021-06-025-11/+54
| | | | | | | * For primops from `GHC.Prim` lookup the HValues in `GHC.PrimopWrappers`. * Add short error messages if a user tries to use a *Non-Id* value or a `pseudoop` in a `:print`, `:sprint` or `force`command. * Add additional test cases for `Magic Ids`.
* Improve wording of fold[lr]M documentation.Viktor Dukhovni2021-06-021-53/+77
| | | | | | | | | | | | | | | The sequencing of monadic effects in foldlM and foldrM was described as respectively right-associative and left-associative, but this could be confusing, as in essence we're just composing Kleisli arrows, whose composition is simply associative. What matters therefore is the order of sequencing of effects, which can be described more clearly without dragging in associativity as such. This avoids describing these folds as being both left-to-right and right-to-left depending on whether we're tracking effects or operator application. The new text should be easier to understand.
* StgM: Use ReaderT rather than StateTBen Gamari2021-05-291-5/+5
|
* Use GHC's State monad consistentlyBen Gamari2021-05-2912-12/+24
| | | | | | | | | | | | | GHC's internal State monad benefits from oneShot annotations on its state, allowing for more aggressive eta expansion. We currently don't have monad transformers with the same optimisation, so we only change uses of the pure State monad here. See #19657 and 19380. Metric Decrease: hie002
* Split GHC.Utils.Monad.State into .Strict and .LazyBen Gamari2021-05-2913-12/+99
|
* Rip GHC.Tc.Solver.Monad asunder (only)Richard Eisenberg2021-05-2914-1926/+2031
| | | | | | | | | | | This creates new modules GHC.Tc.Solver.InertSet and GHC.Tc.Solver.Types. The Monad module is still pretty big, but this is an improvement. Moreover, it means that GHC.HsToCore.Pmc.Solver.Types no longer depends on the constraint solver (it now depends on GHC.Tc.Solver.InertSet), making the error-messages work easier. This patch thus contributes to #18516.
* Fix and slight improvement to datacon worker/wrapper notesSylvain Henry2021-05-292-2/+5
|
* Bignum: match on DataCon workers in rules (#19892)Sylvain Henry2021-05-296-12/+59
| | | | | | | | | We need to match on DataCon workers for the rules to be triggered. T13701 ghc/alloc decreases by ~2.5% on some archs Metric Decrease: T13701
* Fix Note [Positioning of forkM]Zubin Duggal2021-05-291-5/+4
|
* ghci: Enable -fkeep-going by defaultMatthew Pickering2021-05-299-5/+19
| | | | | | | | | | | This also demotes the error message about -fkeep-going to a trace message which matches the behaviour of other build systems (such as cabal-install and nix) which don't print any message like this on a failure. We want to remove the stable module check in a future patch, which is an approximation of `-fkeep-going`. At the moment this change shouldn't do very much.
* sighparsonsmatt2021-05-291-1/+1
|
* Apply 2 suggestion(s) to 1 file(s)parsonsmatt2021-05-291-2/+2
|
* Address review comments, export from THparsonsmatt2021-05-293-1/+8
|
* Add `newDeclarationGroup` and provide documentation in reifyInstances and ↵parsonsmatt2021-05-291-0/+62
| | | | isInstance
* Work around LLVM backend overlapping register limitationsLuite Stegeman2021-05-299-165/+136
| | | | | | | | The stg_ctoi_t and stg_ret_t procedures which convert unboxed tuples between the bytecode an native calling convention were causing a panic when using the LLVM backend. Fixes #19591
* Add -Wmissing-exported-pattern-synonym-signaturesThomas Winant2021-05-2919-352/+255
| | | | | | | | | | | | | After !4741, it was no longer possible to silence a warning about a missing pattern synonym signature if the `-Wmissing-signatures` flag was on. Restore the previous semantics while still adhering to the principle "enabling an additional warning flag should never make prior warnings disappear". For more symmetry and granularity, introduce `-Wmissing-exported-pattern-synonym-signatures`. See Note [Missing signatures] for an overview of all flags involved.
* Use quotRemWord in showWordSylvain Henry2021-05-281-3/+5
| | | | | | | | | | | | | | | | | | Using the following high-quality benchmark (with -O2): main :: IO () main = do let go 0 = "" go n@(W# n#) = showWord n# (go (n -1)) print $ length (go 10000000) I get the following performance results: - remWord+quotRem: 0,76s user 0,00s system 99% cpu 0,762 total - quotRemWord: 0,45s user 0,01s system 99% cpu 0,456 total Note that showSignedInt already uses quotRemInt.
* Document release when TypeApplications allowed declaring variables as inferredBoris Lykah2021-05-281-2/+3
|
* [EPA] exact print linear arrows.Alan Zimmerman2021-05-276-13/+91
| | | | | | | | Closes #19903 Note: the normal ppr does not reproduce unicode linear arrows, so that part of the normal printing test is ommented out in the Makefile for this test. See #18846
* Improve deriveConstants error message.Andreas Klebinger2021-05-271-1/+2
| | | | This fixes #19823
* Change representation of HsGetField and HsProjectionShayne Fletcher2021-05-279-68/+74
| | | | | Another change in a series improving record syntax in the AST. The key change in this commit is the renaming of `HsFieldLabel` to `DotFieldOcc`.
* Enable strict dicts by default at -O2.Andreas Klebinger2021-05-277-39/+123
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the common case this is a straight performance win at a compile time cost so we enable it at -O2. In rare cases it can lead to compile time regressions because of changed inlining behaviour. Which can very rarely also affect runtime performance. Increasing the inlining threshold can help to avoid this which is documented in the user guide. In terms of measured results this reduced instructions executed for nofib by 1%. However for some cases (e.g. Cabal) enabling this by default increases compile time by 2-3% so we enable it only at -O2 where it's clear that a user is willing to trade compile time for runtime. Most of the testsuite runs without -O2 so there are few perf changes. Increases: T12545/T18698: We perform more WW work because dicts are now treated strict. T9198: Also some more work because functions are now subject to W/W Decreases: T14697: Compiling empty modules. Probably because of changes inside ghc. T9203: I can't reproduce this improvement locally. Might be spurious. ------------------------- Metric Decrease: T12227 T14697 T9203 Metric Increase: T9198 T12545 T18698a T18698b -------------------------
* Avoid fingerprinting the absolute path to the source filePepe Iborra2021-05-2611-8/+96
| | | | | | | | | | | | | | | | | | | | | | | This change aims to make source files relocatable w.r.t. to the interface files produced by the compiler. This is so that we can download interface files produced by a cloud build system and then reuse them in a local ghcide session catch another case of implicit includes actually use the implicit quote includes add another missing case recomp020 test that .hi files are reused even if .hs files are moved to a new location Added recomp021 to record behaviour with non implicit includes add a note additional pointer to the note Mention #16956 in Note
* Support new parser types in GHCAlfredo Di Napoli2021-05-2647-1307/+1569
| | | | | | | | | | | | | | This commit converts the lexers and all the parser machinery to use the new parser types and diagnostics infrastructure. Furthermore, it cleans up the way the parser code was emitting hints. As a result of this systematic approach, the test output of the `InfixAppPatErr` and `T984` tests have been changed. Previously they would emit a `SuggestMissingDo` hint, but this was not at all helpful in resolving the error, and it was even confusing by just looking at the original program that triggered the errors. Update haddock submodule
* Add 9.2 release note about linear caseRichard Eisenberg2021-05-251-0/+6
| | | | | | This is part of #18738 [skip ci]
* Revert "hadrian: Don't always links against libffi"Matthew Pickering2021-05-251-1/+2
| | | | This reverts commit 673ff667c98eafc89e6746d1ac69d33b8330d755.
* [hadrian] Properly build hsc2hs wrapperMoritz Angermann2021-05-251-18/+23
|
* [ci] faster pipelineMoritz Angermann2021-05-251-5/+1
|
* [hadrian] Do not add full tool pathsMoritz Angermann2021-05-253-4/+32
| | | | | | This prohuibits CC=clang to work generically and will always bake in the clang that is found on the build machine in PATH, what ever clang that might be. It might not even be on the final host.
* [ci/darwin] set SH to /bin/bashMoritz Angermann2021-05-251-1/+1
| | | | This should prevent some other `bash` to leak into the binary distributions.
* [ci/darwin] cabal-cache dir can be specified per archMoritz Angermann2021-05-253-23/+38
| | | | Also while we are at it, run shellcheck on ci.sh
* [ci/darwin] use system provided iconv and cursesMoritz Angermann2021-05-254-10/+35
| | | | Also make sure to be able to build with non-apple-clang, while using apple's SDK on macOS
* [bindist] inject xattr -c -r . into the darwin install phaseMoritz Angermann2021-05-252-0/+17
| | | | This is so awful, but at least it might get the job done.
* [ci] no more brew or pipMoritz Angermann2021-05-251-15/+0
| | | | | We pull dependencies (reliably) via nix, and open up nix where needed.
* [ci] darwin uses hadrianMoritz Angermann2021-05-251-48/+24
| | | | | | Make is bad, and really slow, and we should just stop using it outright, or kill hadrian. Let's rather go for hadrian all the way and phase out make.
* Make tcIfaceCompleteMatch lazier.Zubin Duggal2021-05-256-2/+40
| | | | | Insufficient lazyness causes a loop while typechecking COMPLETE pragmas from interfaces (#19744).
* Refactor driver code; de-duplicate and split APIs (#14095, !5555)Divam2021-05-259-367/+368
| | | | | | | | | | | | | | | | | This commit does some de-duplication of logic between the one-shot and --make modes, and splitting of some of the APIs so that its easier to do the fine-grained parallelism implementation. This is the first part of the implementation plan as described in #14095 * compileOne now uses the runPhase pipeline for most of the work. The Interpreter backend handling has been moved to the runPhase. * hscIncrementalCompile has been broken down into multiple APIs. * haddock submodule bump: Rename of variables in html-test ref: This is caused by a change in ModDetails in case of NoBackend. Now the initModDetails is used to recreate the ModDetails from interface and in-memory ModDetails is not used.
* docs: Fix example in toIntegralSizedMatthew Pickering2021-05-241-3/+3
| | | | | | Thanks to Mathnerd3141 for the fixed example. Fixes #19880
* check-{ppr/exact}: Rewrite more directly to just parse filesMatthew Pickering2021-05-2411-265/+34
| | | | | | There was quite a large amount of indirection in these tests, so I have rewritten them to just directly parse the files rather than making a module graph and entering other twisty packages.
* Move warning flag handling into Flags moduleSylvain Henry2021-05-243-277/+407
| | | | | | | | | | | I need this to make the Logger independent of DynFlags. Also fix copy-paste errors: Opt_WarnNonCanonicalMonadInstances was associated to "noncanonical-monadfail-instances" (MonadFailInstances vs MonadInstances). In the process I've also made the default name for each flag more explicit.