summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Mark dynamic-paper as expect_fail_for optasm and optllvm (#11330)Thomas Miedema2016-01-291-1/+4
| | | | It passes with `-O -fhpc` though, strange... (I didn't read the paper)
* Fixup test for #10728Thomas Miedema2016-01-292-12/+8
| | | | It was failing for WAY=ghci.
* Use the in_scope set in lint_appBartosz Nitka2016-01-281-7/+10
| | | | | | | | | | | | | | | | | This makes the call to `substTy` satisfy the invariant from Note [The substitution invariant] in TyCoRep. Test Plan: ./validate --slow Reviewers: goldfire, austin, bgamari, simonpj Reviewed By: simonpj Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D1861 GHC Trac Issues: #11371
* fix validate breakageSimon Marlow2016-01-271-2/+0
| | | | (Travis said it was OK!)
* Update profiling test outputSimon Marlow2016-01-271-25/+26
| | | | There were a couple of broken profiling tests.
* Remote GHCi: create cost centre stacks in batchesSimon Marlow2016-01-274-38/+30
| | | | | | Towards optimising the binary serialisation that -fexternal-interpreter does, this saves quite a bit of time when using -fexternal-interpreter with -prof.
* Fix cost-centre-stack bug when creating new PAP (#5654)Simon Marlow2016-01-278-11/+116
| | | | | See comment in `AutoApply.h`. This partly fixes #5654. New test added, and renamed the old test to match the ticket number.
* Rename "open" subst functionsBartosz Nitka2016-01-2718-72/+64
| | | | | | | | | | | | | | | | | | | | | | | | This is the renaming that @simonpj requested: ``` · zipOpenTCvSubst -> zipTvSubst (It only deals with tyvars) · zipOpenTCvSubstCoVars -> zipCvSubst (it only deals with covars) · zipOpenTCvSubstBinders -> zipTyBinderSubst (it only deals with TyBinders, not covars) ``` plus the `mk` variant. Test Plan: ./validate Reviewers: simonpj, goldfire, austin, bgamari Subscribers: thomie, simonpj Differential Revision: https://phabricator.haskell.org/D1853 GHC Trac Issues: #11371
* Refactor the typechecker to use ExpTypes.Richard Eisenberg2016-01-27128-1720/+2666
| | | | | | | | | | | | | | | | | | | | | The idea here is described in [wiki:Typechecker]. Briefly, this refactor keeps solid track of "synthesis" mode vs "checking" in GHC's bidirectional type-checking algorithm. When in synthesis mode, the expected type is just an IORef to write to. In addition, this patch does a significant reworking of RebindableSyntax, allowing much more freedom in the types of the rebindable operators. For example, we can now have `negate :: Int -> Bool` and `(>>=) :: m a -> (forall x. a x -> m b) -> m b`. The magic is in tcSyntaxOp. This addresses tickets #11397, #11452, and #11458. Tests: typecheck/should_compile/{RebindHR,RebindNegate,T11397,T11458} th/T11452
* Fix some substitution InScopeSetsRichard Eisenberg2016-01-275-4/+9
| | | | This is relevant to #11371.
* s/unLifted/unlifted for consistencyÖmer Sinan Ağacan2016-01-2735-95/+95
| | | | | | | | | | | | | This was causing trouble as we had to remember when to use "unLifted" and when to use "unlifted". "unlifted" is used instead of "unLifted" as it's a single word. Reviewers: austin, hvr, goldfire, bgamari Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D1852
* Document -fllvm-fill-undef-with-garbageBen Gamari2016-01-271-0/+6
|
* Test for undef bugs in the LLVM backend when validatingReid Barton2016-01-273-1/+28
| | | | | | | | | | | | | | | | | | | | | | | | In an attempt to catch bugs involving using undef values, replace undef literals by values likely to cause crashes or test failures. We do this only when validating since it is a deoptimization. This depends on D1857 to catch such bugs in the RTS (such as #11487). Test Plan: Did a build with ``` BuildFlavour = quick-llvm SRC_HC_OPTS_STAGE1 = -fllvm-fill-undef-with-garbage ``` The build crashed when running ghc-stage2, as expected. Reviewers: austin, bgamari Reviewed By: bgamari Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D1858
* Use stage1 build variables when building the RTSReid Barton2016-01-271-1/+1
| | | | | | | | | | | | | The fourth argument of distdir-way-opts was missing. So, for example, SRC_HC_OPTS_STAGE1 was not used when building the RTS. Test Plan: validate --slow Reviewers: austin, bgamari, thomie Reviewed By: thomie Differential Revision: https://phabricator.haskell.org/D1857
* Restore original alignment for info tablesSimon Brenner2016-01-273-4/+24
| | | | | | | | | | | | | | | | | | | | This was broken in 4a32bf925b8aba7885d9c745769fe84a10979a53, meaning that info tables and subsequent code are no longer guaranteed to have the recommended alignment. Split up the section header and section alignment printers, and print an appropriate alignment directive before each info table. Fixes Trac #11486 Reviewers: austin, bgamari, rwbarton Reviewed By: bgamari, rwbarton Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D1847 GHC Trac Issues: #11486
* rts/Timer: Actually fix #9105Ben Gamari2016-01-271-1/+3
| | | | | | | | | | | | | | | | | | | jberthold astutely pointed out that the previous fix (D1822) could not have possibly fixed the issue as the patch would only have had any effect if !PROFILING. Test Plan: Check for reduced CPU usage when compiled with `-prof` but without `+RTS -p` Reviewers: simonmar, austin, jberthold Reviewed By: simonmar, jberthold Subscribers: simonmar, thomie Differential Revision: https://phabricator.haskell.org/D1844 GHC Trac Issues: #9105
* ghci: fix trac issue #11481Benjamin Bykowski2016-01-274-25/+55
| | | | | | | | | | | | Test Plan: validate Reviewers: thomie, austin, bgamari Reviewed By: bgamari Differential Revision: https://phabricator.haskell.org/D1833 GHC Trac Issues: #11481
* Typos in commentsGabor Greif2016-01-274-4/+4
|
* Fix a typo in the note name in commentsBartosz Nitka2016-01-273-9/+8
| | | | | | | | | | | | | | | | | This is `subsititution` to `substitution`, plus one instance of the note that I missed. Test Plan: docufix Reviewers: simonpj, bgamari, austin, goldfire Reviewed By: simonpj, bgamari Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D1856 GHC Trac Issues: #11371
* Enable RemoteGHCi on WindowsTamar Christina2016-01-279-38/+81
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Makes the needed changes to make RemoteGHCi work on Windows. The approach passes OS Handles areound instead of the Posix Fd as on Linux. The reason is that I could not find any real documentation about the behaviour of Windows w.r.t inheritance and Posix FDs. The implementation with Fd did not seem to be able to find the Fd in the child process. Instead I'm using the much better documented approach of passing inheriting handles. This requires a small modification to the `process` library. https://github.com/haskell/process/pull/52 Test Plan: ./validate On Windows x86_64 Reviewers: thomie, erikd, bgamari, simonmar, austin, hvr Reviewed By: simonmar Subscribers: #ghc_windows_task_force Differential Revision: https://phabricator.haskell.org/D1836 GHC Trac Issues: #11100
* Build profiling libraries on `validate --slow` (#11496)Thomas Miedema2016-01-271-1/+5
|
* Testsuite: fixup req_profiling tests (#11496)Thomas Miedema2016-01-278-10/+10
| | | | | | * T2552 (#10037) is failng for all threaded opt_ways, not for WAY=prof. * TH_spliceE5_prof (#11495) is failing when ghc_dynamic * Rename ghci_dynamic to ghc_dynamic. It's the same thing.
* Construct in_scope set in mkTopTCvSubstBartosz Nitka2016-01-268-16/+23
| | | | | | | | | | | | | | | | | | | | The pre-condition on `mkTopTCvSubst` turned out to be wrong and not satisfied by any of the callers. I've fixed it, so that it constructs the in_scope set from the range of the substitution. `mkTopTCvSubst` was also unnecessarily general it is never called with `CoVars`, so I changed the type signature and added an assertion. Test Plan: ./validate --slow Reviewers: goldfire, simonpj, bgamari, austin Reviewed By: simonpj Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D1801 GHC Trac Issues: #11371
* Split off -Wunused-type-variables from -Wunused-matchesRyanGlScott2016-01-2617-71/+150
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Previously, `-Wunused-matches` would fire whenever it detected unused type variables in a type family or data family instance. This can be annoying for users who wish to use type variable names as documentation, as being `-Wall`-compliant would mean that they'd have to prefix many of their type variable names with underscores, making the documentation harder to read. To avoid this, a new warning `-Wunused-type-variables` was created that only encompasses unused variables in family instances. `-Wunused-matches` reverts back to its role of only warning on unused term-level pattern names. Unlike `-Wunused-matches`, `-Wunused-type-variables` is not implied by `-Wall`. Fixes #11451. Test Plan: ./validate Reviewers: goldfire, ekmett, austin, hvr, simonpj, bgamari Reviewed By: simonpj, bgamari Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D1825 GHC Trac Issues: #11451
* Fix segmentation fault when .prof file not writeableThomas Miedema2016-01-268-11/+29
| | | | | | | | | | | | | | | | | | | | | | | | | There are two ways to do retainer profiling. Quoting from the user's guide: 1. `+RTS -hr` "Breaks down the graph by retainer set" 2. `+RTS -hr<cc> -h<x>`, where `-h<x>` is one of normal heap profiling break-down options (e.g. `-hc`), and `-hr<cc> means "Restrict the profile to closures with retainer sets containing cost-centre stacks with one of the specified cost centres at the top." Retainer profiling writes to a .hp file, like the other heap profiling options, but also to a .prof file. Therefore, when the .prof file is not writeable for whatever reason, retainer profiling should be turned off completely. This worked ok when running the program with `+RTS -hr` (option 1), but a segfault would occur when using `+RTS -hr<cc> -h<x>`, with `x!=r` (option 2). This commit fixes that. Reviewed by: bgamari Differential Revision: https://phabricator.haskell.org/D1849 GHC Trac Issues: #11489
* Nicer error on +RTS -hc without -rtsopts or -profThomas Miedema2016-01-261-4/+42
| | | | | | | | | | | | | | Before: * without -rtsopts: Most RTS options are disabled. Link with -rtsopts to enable them. * with -rtsopts: invalid heap profile option: -hc After: * the flag -hc requires the program to be built with -prof Copy `Note [OPTION_SAFE vs OPTION_UNSAFE]` from commit 8c7ad0bd. Reviewed by: bgamari Differential Revision: https://phabricator.haskell.org/D1845
* Pass InScopeSet to substTy in lintTyAppBartosz Nitka2016-01-262-8/+25
| | | | | | | | | | | | | | | | | | | This is the fix proposed in #11371: ``` In other cases, we already have the in-scope set in hand. Example: in CoreLint.lintTyApp we find a call to substTyWith. But Lint carries an in-scope set, so it would be easy to pass it to substTyWith. ``` Test Plan: ./validate --slow (only pre-existing problems) Reviewers: simonpj, goldfire, austin, nomeata, bgamari Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D1820 GHC Trac Issues: #11371
* Fix three broken tests involving exceptionsSimon Peyton Jones2016-01-263-11/+9
| | | | See comment:16 in Trac #10712. The tests were wrong, not GHC!
* Update process submodule to 1.4.2.0 releaseHerbert Valerio Riedel2016-01-261-0/+0
| | | | | Most notably, this pulls in a feature needed for #11100 (remote ghci) windows-support
* Update transformers submodule to 0.5.1.0 releaseHerbert Valerio Riedel2016-01-261-0/+0
| | | | This shouldn't have any noticeable API changes for GHC
* Minor users-guide markup fixup [skip ci]Herbert Valerio Riedel2016-01-261-2/+2
|
* Missed plural renaming in user's guideHerbert Valerio Riedel2016-01-261-1/+1
| | | | | | Follow-up to 132c20894d102558cc8f3aee5bc289425d0ddb24 [skip ci]
* Fix two cloning-related bugsSimon Peyton Jones2016-01-263-41/+69
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Crikey! Not just one but two bugs in type variable cloning, both dating from the days before PolyKinds. Both were shown up by Trac #11330. 1. In SetLevels, when floating a case expression we must clone its binders, *and* do so in a telescope-aware way, because the constructor may bind a kind variable that appears in the kind of a type variable. Instead of doing this (wrongly) by steam, call CoreSubst.cloneBndrs. I added Notes and did other refactoring at the same time. 2. It turned out that CoreSubst.cloneBndrs calls TyCoRep.cloneTyVarBndr, and that too was bogus! It didn't substitute in the kind of the TyVar being cloned. There was even a comment to say "variables can't appear in kinds". Thta hasn't been true for a long time now. Easily fixed. Interestingly, I then found that test dependent/should_compile/KindEqualities was emitting a new inexhaustive-pattern-match warning. Sure enough it was valid! So the lack of cloning in cloneTyVarBndr really was causing an observable bug; just one that we had not observed.
* Kill off zipTopTCvSubst in favour of zipOpenTCvSubstSimon Peyton Jones2016-01-267-32/+25
| | | | | | | | | | | | | | As Bartosz has discovered, the invariants for substitutions were wrong, and in particular the "mkTop...Subst" and "zipTop..Subst" functions were building substitutions that didn't obey even the old invariants. This patch kills of the bogus zipTopTCvSubst in favour of the more robust zipOpenTCvSubst. I tripped over this because my upcoming patch (concerning SetLevels, Trac #11330) triggered an ASSERT failure in the substitution well-formedness assertion in TyCoRep.
* Add "ticks-exhausted" commentSimon Peyton Jones2016-01-261-0/+7
| | | | | | | | This code deliberately builds a subtle negative-occurrence-of-data-type example, described in the paper, so with -O it'll give "simplifier ticks exhausted". This patch just adds a comment to explain.
* White space onlySimon Peyton Jones2016-01-261-2/+2
|
* Less verbose output for the in-scope setSimon Peyton Jones2016-01-261-1/+4
| | | | | | | With -dppr-debug the output for the (ofen-large) InScope set was overwhelming. This makes it smaller. Only affects debugging.
* Ensure that we don't produce code for pre-ARMv7 without barriersBen Gamari2016-01-254-15/+15
| | | | | | | | | | | | | | | | | | | | | | We are unable to produce load/store barriers for pre-ARMv7 targets. Phab:D894 added dummy cases to SMP.h for these barriers to prevent the build from failing under the assumption that there are no SMP-capable devices of this vintage. However, #10433 points out that it is more correct to simply set NOSMP for such targets. Tested By: rwbarton Test Plan: Validate Reviewers: erikd, rwbarton, austin Reviewed By: rwbarton Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D1704 GHC Trac Issues: #10433
* Implement -Wunrecognised-warning-flagBen Gamari2016-01-259-4/+50
| | | | | | | | | | | | | | | | | This allows the user to avoid warnings for warning flags that GHC doesn't recognise. See #11429 for details.. Test Plan: Validate with T11429[abc] tests Reviewers: austin, hvr Reviewed By: hvr Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D1830 GHC Trac Issues: #11429
* user-guide: Note order-dependence of flagsBen Gamari2016-01-251-0/+22
| | | | | | | | | | | | | | | This supplements the description previously added in 6400c7687223c5b2141176aa92f7ff987f61aba6. See #10560 for details. Test Plan: read it Reviewers: austin Subscribers: thomie, hvr Differential Revision: https://phabricator.haskell.org/D1831 GHC Trac Issues: #10560
* Better document behavior of -Wmissed-specialisationsBen Gamari2016-01-251-1/+2
| | | | | | | | | | Test Plan: Read it Reviewers: austin Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D1829
* Rename -Wmissing-monadfail-instance to plural-formHerbert Valerio Riedel2016-01-258-14/+14
| | | | | | | | | | | | | | | | | | | This warning flag was recently introduced as part of #10751. However, it was missed during code-review that almost all existing warning flags use a plural-form, so for consistency this commit renames that warning flag to `-Wmissing-monadfail-instances`. Test Plan: local validate (still running) Reviewers: quchen, goldfire, austin, bgamari Reviewed By: bgamari Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D1842 GHC Trac Issues: #10751
* HscTypes: Fix typo in commentBen Gamari2016-01-251-1/+1
|
* Comments only: more alternate names for ARM registers [skip ci]Reid Barton2016-01-251-3/+4
| | | | | | | | | | | | | | Summary: These are the names used by arm-linux-androideabi-objdump, so it's helpful to have them here next to the Stg register mapping. Reviewers: austin, erikd, bgamari Reviewed By: erikd, bgamari Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D1840
* Show error message for unknown symbol on Elf_Rel platformsReid Barton2016-01-251-1/+0
| | | | | | | | | | | | Summary: This is already the behavior on Elf_Rela platforms, and is helpful. Reviewers: simonmar, austin, bgamari, erikd Reviewed By: erikd Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D1841
* Fix exprIsHNF (Trac #11248)Simon Peyton Jones2016-01-252-14/+20
| | | | | | | | | | | | | | | Blimey! CoreUtils.exprIsHNFlike had not one but two bugs. * is_hnf_like treated coercion args like type args (result: exprIsHNF might wrongly say True) * app_is_value treated type args like value args (result: exprIsHNF might wrongly say False) Bizarre. This goes back to at least 2012. It's amazing that it hasn't caused more trouble. It was discovered by a Lint error when compiling Trac #11248 with -O.
* Improve tracing in checkValidInstanceSimon Peyton Jones2016-01-251-1/+5
|
* Avoid recursive use of immSuperClassesSimon Peyton Jones2016-01-253-11/+10
| | | | | | | | In fixing Trac #11480 I had omitted to deal with FunDeps.oclose, which was making recursive use of immSuperClasses, and hence going into a loop in the recursive case. Solution: use transSuperClasses, which takes care not to.
* Refactor validity checking for type/data instancesSimon Peyton Jones2016-01-254-74/+100
| | | | | | | | | I found that there was some code duplication going on, so I've put more into the shared function checkValidFamPats. I did some refactoring in checkConsistentFamInst too, preparatory to #11450; the error messages change a little but no change in behaviour.
* Special-case implicit params in superclass expansionSimon Peyton Jones2016-01-258-32/+118
| | | | | | | | | | | | | | | This issue came up in Trac #11480, and is documented in Note [When superclasses help] in TcRnTypes. We were getting a spurious warning T11480.hs:1:1: warning: solveWanteds: too many iterations (limit = 4) The fix is easy. A bit of refactoring along the way. The original bug report in Trac #11480 appears to work fine in HEAD and the 8.0 branch but I added a regression test in this commit as well.