summaryrefslogtreecommitdiff
path: root/compiler/simplCore/Exitify.hs
Commit message (Collapse)AuthorAgeFilesLines
* Modules: Core operations (#13009)Sylvain Henry2020-03-181-499/+0
|
* Modules: Core (#13009)Sylvain Henry2020-03-161-1/+1
| | | | Update submodule: haddock
* Typos in comments [skip ci]Krzysztof Gogolewski2020-03-101-1/+1
|
* Modules: Core (#13009)Sylvain Henry2020-02-261-3/+3
| | | | Update haddock submodule
* Fix more typos, via an improved Levenshtein-style correctorBrian Wignall2020-01-121-1/+1
|
* Fix typos, using Wikipedia list of common typosBrian Wignall2019-11-281-2/+2
|
* Update Trac ticket URLs to point to GitLabRyan Scott2019-03-151-1/+1
| | | | | This moves all URL references to Trac tickets to their corresponding GitLab counterparts.
* Small refactoring in ExitifySimon Peyton Jones2018-05-081-60/+73
| | | | | This refactoring was provoked by our conversation on Trac #14152. No change in behaviour.
* Exitify: Do not trip over shadowing (fixes #15110)Joachim Breitner2018-05-011-4/+19
|
* Minor refactoring in ExitifySimon Peyton Jones2018-04-271-32/+39
| | | | | | No change in behaviour here, just some modest refactoring as I tried to understand the code better.
* No need for sortQuantVars in Exitify after allJoachim Breitner2018-04-111-6/+3
| | | | | | | because `captured :: [Var]` is always in dependency order. I added a comment in the crucial point so that this does not trip us up again.
* In Exitify, zap idInfo of abstracted variables (fixes #15005)Joachim Breitner2018-04-101-1/+8
| | | | | | | | | | | | | | as helpfully outlined by SPJ. This commit copies a small bit code from `SetLevels` which could reasonably be put in `Id` as `zapAllIdinfo`; I did not do this to make merging this commmit into `ghc-8.4` easier. If this commit gets merged, then presumably after commit 3f59d3802170f495702674b4f8e4e80247803654 (test case) and ae0cff0a1834d8b041b06d0e1ab6ce969aac44c8 (other fixes to Exitify.hs). Differential Revision: https://phabricator.haskell.org/D4582
* Some cleanup of the Exitification codeJoachim Breitner2018-04-091-20/+25
| | | | | | | | | | | | | | | | | | based on a thorough review by Simon in comments https://ghc.haskell.org/trac/ghc/ticket/14152#comment:33 through 37. The changes are: * `isExitJoinId` is moved to `SimplUtils`, because it is only valid when occurrence information is up-to-date. * Abstracted variables are properly sorted using `sortQuantVars` * Exitification does not set occ info. And then minor quibles to notes and avoiding some unhelpful shadowing of local names. Differential Revision: https://phabricator.haskell.org/D4576
* Comments only, about exitifcationSimon Peyton Jones2018-04-061-13/+26
|
* Implement a dedicated exitfication pass #14152Joachim Breitner2017-10-291-0/+442
The idea is described in #14152, and can be summarized: Float the exit path out of a joinrec, so that the simplifier can do more with it. See the test case for a nice example. The floating goes against what the simplifier usually does, hence we need to be careful not inline them back. The position of exitification in the pipeline was chosen after a small amount of experimentation, but may need to be improved. For example, exitification can allow rewrite rules to fire, but for that it would have to happen before the `simpl_phases`. Perf.haskell.org reports these nice performance wins: Nofib allocations fannkuch-redux 78446640 - 99.92% 64560 k-nucleotide 109466384 - 91.32% 9502040 simple 72424696 - 5.96% 68109560 Nofib instruction counts fannkuch-redux 1744331636 - 3.86% 1676999519 k-nucleotide 2318221965 - 6.30% 2172067260 scs 1978470869 - 3.35% 1912263779 simple 669858104 - 3.38% 647206739 spectral-norm 186423292 - 5.37% 176411536 Differential Revision: https://phabricator.haskell.org/D3903