summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* ghc-pkg: properly recompute `abi-depends` for updated packages.wip/T14381Tobias Dammers2018-05-283-23/+139
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The `abi-depends:` Cabal field turns out to be problematic due to cached package dependencies; from the perspective of ghc-pkg, this field is unreliable, and also redundant, because the required information is already available in the existing package database. So we do the following: - Ignore declared abi-depends - Infer correct abi-depends from existing package data - Warn about any packages that declare abi-depends that differ from what we inferred - In verbose mode, warn about any packages that declare abi-depends at all. Previous work on this had been done in 1cdc14f9c0, however, that solution suffered from a few minor drawbacks which we fix here: - The previous solution only looked at the current package database; we now inspect the entire stack of databases, to correctly reflect possible dependencies. - We now output warnings on stderr, not stdout. - When issuing a warning, we list the offending packages (otherwise, the warning wouldn't be very useful in practice). - By default, we only warn about packages that deviate (declare abi-depends /= inferred abi-depends). - Warnings can now be controlled through verbosity. - Testsuite reflects new situation.
* Revert "ghc-pkg: recompute `abi-depends` for updated packages"Ben Gamari2018-05-2111-82/+9
| | | | | | This reverts commit 1cdc14f9c014f1a520638f7c0a01799ac6d104e6. This is causing non-deterministic testsuite output.
* Check for type families in an instance contextSimon Peyton Jones2018-05-215-2/+32
| | | | | | This patch adds a check for type families to the instance-decl termination check. See Note [Type families in instance contexts] and Trac #15172.
* Make dischargeFmv handle DerivedsSimon Peyton Jones2018-05-216-18/+52
| | | | | | | | | | | | | A Derived CFunEqCan does not "own" its FlatMetaTv (fmv), and should not update it. But one caller (canCFunEqCan) was failing to satisfy the precondition to dischargeFmv, which led to a crash (Trac #15170). I fixed this by making dischargeFmv handle Deriveds (to avoid forcing each caller to do so separately). NB: this does not completely fix the original #15170 bug, but I'll explain that on the ticket. The test case for this patch is actually the program in comment:1.
* Remove TcType.toTcTypeSimon Peyton Jones2018-05-214-69/+20
| | | | | | | | | | In the olden days we insisted that only TcTyVars could appear in a TcType. But now we are more accommodating; see TcType Note [TcTyVars and TyVars in the typechecker] This patch removes a function that converted a Type to a TcType. It didn't do anything useful except statisfy an invariant that we no longer have. Now it's gone.
* Fix perf numbers for #15164Simon Peyton Jones2018-05-211-3/+1
|
* Do better sharing in the short-cut solverSimon Peyton Jones2018-05-215-63/+631
| | | | | | | | | | | Trac #15164 showed that it sometimes really matters to share sub-proofs when solving constraints. Without it, we can get exponentialy bad behaviour. Fortunately, it's easily solved. Note [Shortcut try_solve_from_instance] explains. I did some minor assocaited refactoring.
* ghc-pkg: recompute `abi-depends` for updated packagesAustin Seipp2018-05-2011-9/+82
| | | | | | | | | | | | | | | | | | | See `Note [Recompute abi-depends]` for more information. Signed-off-by: Austin Seipp <aseipp@pobox.com> Test Plan: `./validate` Reviewers: bgamari, ezyang Reviewed By: bgamari Subscribers: tdammers, juhp, carter, alexbiehl, shlevy, cocreature, rwbarton, thomie GHC Trac Issues: #14381 Differential Revision: https://phabricator.haskell.org/D4159
* ghc-prim: Bump versionBen Gamari2018-05-2065-66/+70
| | | | | | | | | | | | | unpackClosure#'s behavior and type has changed. This caused a CPP guard in the new ghc-heap package to fail when bootstrapping with GHC 8.4. Test Plan: Validate bootstrapping with GHC 8.4 Reviewers: RyanGlScott Subscribers: rwbarton, thomie, carter Differential Revision: https://phabricator.haskell.org/D4716
* Add HeapView functionalityPatrick Dougherty2018-05-2035-483/+1948
| | | | | | | | | | | | | | | | | | | | | This pulls parts of Joachim Breitner's ghc-heap-view library inside GHC. The bits added are the C hooks into the RTS and a basic Haskell wrapper to these C hooks. The main reason for these to be added to GHC proper is that the code needs to be kept in sync with the closure types defined by the RTS. It is expected that the version of HeapView shipped with GHC will always work with that version of GHC and that extra functionality can be layered on top with a library like ghc-heap-view distributed via Hackage. Test Plan: validate Reviewers: simonmar, hvr, nomeata, austin, Phyx, bgamari, erikd Reviewed By: bgamari Subscribers: carter, patrickdoc, tmcgilchrist, rwbarton, thomie Differential Revision: https://phabricator.haskell.org/D3055
* rts: Fix compaction of SmallMutArrPtrsBen Gamari2018-05-203-14/+17
| | | | | | | | | | | | | | | | | | | | | | | | This was blatantly wrong due to copy-paste blindness: * labels were shadowed, which GHC doesn't warn about(!), resulting in plainly wrong behavior * the sharing check was omitted * the wrong closure layout was being used Moreover, the test wasn't being run due to its primitive dependency, so I didn't even notice. Sillyness. Test Plan: install `primitive`, `make test TEST=compact_small_array` Reviewers: simonmar, erikd Reviewed By: simonmar Subscribers: rwbarton, thomie, carter GHC Trac Issues: #13857. Differential Revision: https://phabricator.haskell.org/D4702
* Another batch of './validation --slow' tweaksAlp Mestanogullari2018-05-2013-22/+95
| | | | | | | | | | | | | | | | | | | | | | This finally gets us to a green ./validate --slow on linux for a ghc checkout from the beginning of this week, see https://circleci.com/gh/ghc/ghc/4739 This is hopefully the final (or second to final) patch to address #14890. Test Plan: ./validate --slow Reviewers: bgamari, hvr, simonmar Reviewed By: bgamari Subscribers: rwbarton, thomie, carter GHC Trac Issues: #14890 Differential Revision: https://phabricator.haskell.org/D4712
* base: Fix typoBen Gamari2018-05-201-1/+1
|
* base: Add Foldable and Traversable instances for AltJack Henahan2018-05-195-6/+18
| | | | | | | | | | | | | | | | Add Foldable and Traversable instances for Data.Monoid.Alt Signed-off-by: Jack Henahan <jhenahan@me.com> Reviewers: hvr, bgamari Reviewed By: bgamari Subscribers: mpickering, rwbarton, thomie, carter GHC Trac Issues: #15099 Differential Revision: https://phabricator.haskell.org/D4698
* Fix retainer profiling after SRT overhaulSimon Marlow2018-05-191-147/+28
| | | | | | | | | | | | | Recent changes to SRTs (D4632, D4637) also required changes to RetainerProfile.c. This should hopefully get things working again. Test Plan: validate with profiling turned on Reviewers: bgamari, osa1, tdammers, erikd Subscribers: rwbarton, thomie, carter Differential Revision: https://phabricator.haskell.org/D4707
* Do not unify representational equalitiesSimon Peyton Jones2018-05-184-3/+41
| | | | | | | | | | This patch is an easy fix to Trac #15144, which was caused by accidentally unifying a representational equality in the unflattener. (The main code in TcInteract was always careful not to do so, but I'd missed the test in the unflattener.) See Note [Do not unify representational equalities] in TcInteract
* Debug tracing onlySimon Peyton Jones2018-05-183-5/+10
|
* Orient TyVar/TyVar equalities with deepest on the leftSimon Peyton Jones2018-05-1839-427/+531
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Trac #15009 showed that, for Given TyVar/TyVar equalities, we really want to orient them with the deepest-bound skolem on the left. As it happens, we also want to do the same for Wanteds, but for a different reason (more likely to be touchable). Either way, deepest wins: see TcUnify Note [Deeper level on the left]. This observation led me to some significant changes: * A SkolemTv already had a TcLevel, but the level wasn't really being used. Now it is! * I updated added invariant (SkolInf) to TcType Note [TcLevel and untouchable type variables], documenting that the level number of all the ic_skols should be the same as the ic_tclvl of the implication * FlatSkolTvs and FlatMetaTvs previously had a dummy level-number of zero, which messed the scheme up. Now they get a level number the same way as all other TcTyVars, instead of being a special case. * To make sure that FlatSkolTvs and FlatMetaTvs are untouchable (which was previously done via their magic zero level) isTouchableMetaTyVar just tests for those two cases. * TcUnify.swapOverTyVars is the crucial orientation function; see the new Note [TyVar/TyVar orientation]. I completely rewrote this function, and it's now much much easier to understand. I ended up doing some related refactoring, of course * I noticed that tcImplicitTKBndrsX and tcExplicitTKBndrsX were doing a lot of useless work in the case where there are no skolems; I added a fast-patch * Elminate the un-used tcExplicitTKBndrsSig; and thereby get rid of the higher-order parameter to tcExpliciTKBndrsX. * Replace TcHsType.emitTvImplication with TcUnify.checkTvConstraints, by analogy with TcUnify.checkConstraints. * Inline TcUnify.buildImplication into its only call-site in TcUnify.checkConstraints * TcS.buildImplication becomes TcS.CheckConstraintsTcS, with a simpler API * Now that we have NoEvBindsVar we have no need of termEvidenceAllowed; nuke the latter, adding Note [No evidence bindings] to TcEvidence.
* Tiny refactorSimon Peyton Jones2018-05-181-2/+2
|
* Comments onlySimon Peyton Jones2018-05-181-2/+2
|
* Add regression tests for #11515 and #12563Ryan Scott2018-05-186-0/+33
| | | | | Happily, both of these issues appear to have been fixed in GHC 8.2. Let's add regression tests for them to ensure that they stay fixed.
* Fix unwinding of C -> Haskell FFI calls with -threaded (2nd try)Bartosz Nitka2018-05-175-28/+210
| | | | | | | | | | | | | | | | | Summary: See the new note. This should fix cb5c2fe875965b7aedbc189012803fc62e48fb3f enough to unbreak Windows and OS X builds. Test Plan: manual testing with patched gdb Reviewers: bgamari, simonmar, erikd Reviewed By: bgamari Subscribers: rwbarton, thomie, carter Differential Revision: https://phabricator.haskell.org/D4694
* Fix GHCi space leaks (#15111)Simon Marlow2018-05-176-12/+76
| | | | | | | | | | | | | | | | | Summary: There were a number of leaks causing previously loaded modules to be retained after a new `:load`. This fixes enough leaks to get the tests to pass from D4658. Test Plan: See new tests in D4658 Reviewers: niteria, bgamari, simonpj, erikd Subscribers: thomie, carter GHC Trac Issues: #15111 Differential Revision: https://phabricator.haskell.org/D4659
* Add /* fallthrough */ to fix -Wimplicit-fallthrough warningSimon Marlow2018-05-171-3/+5
|
* Update Cabal submoduleSimon Marlow2018-05-171-0/+0
|
* Comments and refactoring onlySimon Marlow2018-05-173-13/+31
| | | | Addressing review comments on D4637
* Fix #15073 by suggesting UnboxedTuples in an error messageRyan Scott2018-05-165-1/+41
| | | | | | | | | | | | | | | | | | | | Under certain circumstances, `GeneralizedNewtypeDeriving` can emit code which uses unboxed tuple types, but if `UnboxedTuples` wasn't enabled, the error message that GHC gave didn't make it very clear that it could be worked around by explicitly enabling the extension. Easily fixed. Test Plan: make test TEST=T15073 Reviewers: bgamari Reviewed By: bgamari Subscribers: simonpj, thomie, carter GHC Trac Issues: #15073 Differential Revision: https://phabricator.haskell.org/D4620
* Improve numeric stability of numericEnumFrom for floating numbersHE, Tao2018-05-165-3/+69
| | | | | | | | | | | | | | | | Fixes #15081. Test Plan: cd libraries/base && make test TEST="enumNumeric" Reviewers: hvr, bgamari Reviewed By: bgamari Subscribers: dfeuer, simonpj, thomie, carter GHC Trac Issues: #15081 Differential Revision: https://phabricator.haskell.org/D4650
* Fix #15039 by pretty-printing equalities more systematicallyRyan Scott2018-05-1617-49/+496
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | GHC previously had a handful of special cases for pretty-printing equalities in a more user-friendly manner, but they were far from comprehensive (see #15039 for an example of where this fell apart). This patch makes the pretty-printing of equalities much more systematic. I've adopted the approach laid out in https://ghc.haskell.org/trac/ghc/ticket/15039#comment:4, and updated `Note [Equality predicates in IfaceType]` accordingly. We are now more careful to respect the properties of the `-fprint-explicit-kinds` and `-fprint-equality-relations` flags, which led to some improvements in error message outputs. Along the way, I also tweaked the error-reporting machinery not to print out the type of a typed hole when the type is an unlifted equality, since it's kind (`TYPE ('TupleRep '[])`) was more confusing than anything. Test Plan: make test TEST="T15039a T15039b T15039c T15039d" Reviewers: simonpj, goldfire, bgamari Reviewed By: simonpj Subscribers: rwbarton, thomie, carter GHC Trac Issues: #15039 Differential Revision: https://phabricator.haskell.org/D4696
* Add pprTraceM to Outputable as analog to traceM.klebinger.andreas@gmx.at2018-05-161-1/+4
| | | | | | | | | | | | Test Plan: ci, using it in monadic code. Reviewers: bgamari, mpickering Reviewed By: mpickering Subscribers: rwbarton, thomie, carter Differential Revision: https://phabricator.haskell.org/D4697
* InfoTables: Fix #if uses introduced by D4634Ben Gamari2018-05-161-2/+2
|
* Make finalizers more reliable.Tamar Christina2018-05-164-2/+34
| | | | | | | | | | | | | | | | | | Ignore any errors thrown by finalizers when running them. This prevents a faulty finalizer from stopping the rest being called. Test Plan: ./validate, new test T13167 Reviewers: hvr, bgamari, simonmar Reviewed By: bgamari, simonmar Subscribers: rwbarton, thomie, carter GHC Trac Issues: #13167 Differential Revision: https://phabricator.haskell.org/D4693
* Merge FUN_STATIC closure with its SRTSimon Marlow2018-05-1612-122/+182
| | | | | | | | | | | | | | | | | | | | | | | | | | Summary: The idea here is to save a little code size and some work in the GC, by collapsing FUN_STATIC closures and their SRTs. This is (4) in a series; see D4632 for more details. There's a tradeoff here: more complexity in the compiler in exchange for a modest code size reduction (probably around 0.5%). Results: * GHC binary itself (statically linked) is 1% smaller * -0.2% binary sizes in nofib (-0.5% module sizes) Full nofib results comparing D4634 with this: P177 (ignore runtimes, these aren't stable on my laptop) Test Plan: validate, nofib Reviewers: bgamari, niteria, simonpj, erikd Subscribers: thomie, carter Differential Revision: https://phabricator.haskell.org/D4637
* Save a word in the info table on x86_64Simon Marlow2018-05-169-43/+102
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: An info table with an SRT normally looks like this: StgWord64 srt_offset StgClosureInfo layout StgWord32 layout StgWord32 has_srt But we only need 32 bits for srt_offset on x86_64, because the small memory model requires that code segments are at most 2GB. So we can optimise this to StgClosureInfo layout StgWord32 layout StgWord32 srt_offset saving a word. We can tell whether the info table has an SRT or not, because zero is not a valid srt_offset, so zero still indicates that there's no SRT. Test Plan: * validate * For results, see D4632. Reviewers: bgamari, niteria, osa1, erikd Subscribers: thomie, carter Differential Revision: https://phabricator.haskell.org/D4634
* Allow CmmLabelDiffOff with different widthsSimon Marlow2018-05-1620-46/+61
| | | | | | | | | | | | | | | | | | Summary: This change makes it possible to generate a static 32-bit relative label offset on x86_64. Currently we can only generate word-sized label offsets. This will be used in D4634 to shrink info tables. See D4632 for more details. Test Plan: See D4632 Reviewers: bgamari, niteria, michalt, erikd, jrtc27, osa1 Subscribers: thomie, carter Differential Revision: https://phabricator.haskell.org/D4633
* An overhaul of the SRT representationSimon Marlow2018-05-1622-538/+817
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: - Previously we would hvae a single big table of pointers per module, with a set of bitmaps to reference entries within it. The new representation is identical to a static constructor, which is much simpler for the GC to traverse, and we get to remove the complicated bitmap-traversal code from the GC. - Rewrite all the code to generate SRTs in CmmBuildInfoTables, and document it much better (see Note [SRTs]). This has been something I've wanted to do since we moved to the new code generator, I finally had the opportunity to finish it while on a transatlantic flight recently :) There are a series of 4 diffs: 1. D4632 (this one), which does the bulk of the changes 2. D4633 which adds support for smaller `CmmLabelDiffOff` constants 3. D4634 which takes advantage of D4632 and D4633 to save a word in info tables that have an SRT on x86_64. This is where most of the binary size improvement comes from. 4. D4637 which makes a further optimisation to merge some SRTs with static FUN closures. This adds some complexity and the benefits are fairly modest, so it's not clear yet whether we should do this. Results (after (3), on x86_64) - GHC itself (staticaly linked) is 5.2% smaller - -1.7% binary sizes in nofib, -2.9% module sizes. Full nofib results: P176 - I measured the overhead of traversing all the static objects in a major GC in GHC itself by doing `replicateM_ 1000 performGC` as the first thing in `Main.main`. The new version was 5-10% faster, but the results did vary quite a bit. - I'm not sure if there's a compile-time difference, the results are too unreliable. Test Plan: validate Reviewers: bgamari, michalt, niteria, simonpj, erikd, osa1 Subscribers: thomie, carter Differential Revision: https://phabricator.haskell.org/D4632
* Force findPtr to be included in the binarySimon Marlow2018-05-162-0/+16
| | | | | | | | | | | | | | | | | Summary: A better alternative to D4657. Test Plan: ``` cd testsuite/tests/codeGen/should_run ../../../../inplace/bin/ghc-stage2 -debug cgrun001 nm cgrun001 | grep findPtr ``` Reviewers: bgamari, Phyx, erikd Subscribers: rwbarton, thomie, carter Differential Revision: https://phabricator.haskell.org/D4683
* Less Tc inside simplCore (Phase 1 for #14391)Artem Pelenitsyn2018-05-1510-88/+170
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Simplifier depends on typechecker in two points: `thNameToGhcName` (`lookupThName_maybe`, in particular) and `lookupGlobal`. We want to cut the ties in two steps. 1. (Presented in this commit), reimplement both functions in a way that doesn't use typechecker. 2. (Should follow), do code moving: a) `lookupGlobal` should go in some typechecker-free place; b) `thNameToGhcName` should leave simplifier, because it is not used there at all (probably, it should be placed somewhere where `GhcPlugins` can see it -- this is suggested by Joachim on Trac). Details ======= We redesigned lookup interface a bit so that it exposes some `IO`-equivalents of `Tc`-features in use. First, `CoreMonad.hs` still calls `lookupGlobal` which is no longer bound to the typechecker monad, but still resides in `TcEnv.hs` — it should be moved out of Tc-land at some point (“Phase 2”) in the future in order to achieve its part of the #14391's goal. Second, `lookupThName_maybe` is eliminated from `CoreMonad.hs` completely; this already achieves its part of the goal of #14391. Its client, though, `thNameToGhcName`, is better to be moved in the future also, for it is not used in the `CoreMonad.hs` (or anywhere else) anyway. Joachim suggested “any module reexported by GhcPlugins (or maybe even that module itself)”. As a side goal, we removed `initTcForLookup` which was instrumental for the past version of `lookupGlobal`. This, in turn, called for pushing some more parts of the lookup interface from the `Tc`-monad to `IO`, most notably, adding `IO`-version of `lookupOrig` and pushing `dataConInfoPtrToName` to `IO`. The `lookupOrig` part, in turn, triggered a slight redesign of name cache updating interface: we now have both, `updNameCacheIO` and `updNameCacheTc`, both accepting `mod` and `occ` to force them inside, instead of more error-prone outside before. But all these hardly have to do anything with #14391, mere refactoring. Reviewers: simonpj, nomeata, bgamari, hvr Reviewed By: simonpj, bgamari Subscribers: rwbarton, thomie, carter GHC Trac Issues: #14391 Differential Revision: https://phabricator.haskell.org/D4503
* Algebraically simplify add/sub with carry/overflowSebastian Graf2018-05-156-21/+150
| | | | | | | | | | | | | | | | | | | | | Previously, the `{add,sub}{Int,Word}C#` PrimOps weren't handled in PrelRules (constant folding and algebraic simplification) at all. This implements the necessary logic, so that using these primitives isn't too punishing compared to their well-optimised, overflow-unaware counterparts. This is so that using these primitives in `enumFromThenTo @Int` can be optimized by constant folding, reducing closure sizes. Reviewers: bgamari, simonpj, hsyl20 Reviewed By: bgamari, simonpj Subscribers: AndreasK, thomie, carter GHC Trac Issues: #8763 Differential Revision: https://phabricator.haskell.org/D4605
* Calling GetLastError() on Windows for socket IO (trac issue #12012)ARJANEN Loïc Jean David2018-05-151-18/+33
| | | | | | | | | | | | | | | | | | | | | | | For the threaded RTS, putting a private copy of the throwErrno series in GHC.IO.FD which gets if the operation was on a socket, so that we can call c_maperrno if need be. For the non-threaded RTS, if memory serves we call GetLastError() in case of an error on socket IO. However, we don't do the translation ErrCode ↔ Errno currently (and besides, it's a primop) so we do it if needed through c_maperrno_func in the asynchronous read/write functions. Signed-off-by: ARJANEN Loïc Jean David <arjanen.loic@gmail.com> Reviewers: ekmett, hvr, bgamari Reviewed By: bgamari Subscribers: thomie, carter GHC Trac Issues: #12012 Differential Revision: https://phabricator.haskell.org/D4639
* testsuite: Disable T14697 on WindowsBen Gamari2018-05-151-0/+2
| | | | | | | | | | Test Plan: Validate on Windows Subscribers: thomie, carter GHC Trac Issues: #14697, #15072 Differential Revision: https://phabricator.haskell.org/D4619
* More explicit comment on switch in registerDelayKirill Zaborsky2018-05-151-2/+3
|
* Ensure that RTS cabal file reflects dependency on libnumaBen Gamari2018-05-152-0/+10
| | | | | | | | | | Test Plan: Validate with Hadrian and `libnuma` support Reviewers: snowleopard, hvr, erikd, simonmar Subscribers: izgzhen, alpmestan, thomie, carter Differential Revision: https://phabricator.haskell.org/D4616
* Revert "Simplify callSiteInline a little"Ben Gamari2018-05-152-22/+21
| | | | | | | | | | | | | | | | | | | | | | | | This lead to some rather significant performance regressions. Specifically, bytes allocated value is too high: Expected T5631(normal) bytes allocated: 1106015512 +/-5% Lower bound T5631(normal) bytes allocated: 1050714736 Upper bound T5631(normal) bytes allocated: 1161316288 Actual T5631(normal) bytes allocated: 1164953208 Deviation T5631(normal) bytes allocated: 5.3 % *** unexpected stat test failure for T5631(normal) max_bytes_used value is too high: Expected T9630(normal) max_bytes_used: 35324712 +/-15% Lower bound T9630(normal) max_bytes_used: 30026005 Upper bound T9630(normal) max_bytes_used: 40623419 Actual T9630(normal) max_bytes_used: 43490984 Deviation T9630(normal) max_bytes_used: 23.1 % *** unexpected stat test failure for T9630(normal) This reverts commit 7271db46c332f15c302b9a55f4ed005cdd0fb898. This reverts commit b750dcc5d9e1df8505788a41d0cf0d92acd17f0d. This reverts commit 33de71fa06d03e6da396a7c0a314fea3b492ab91.
* testsuite: Fix expected allocations of T9020 and T12425Ben Gamari2018-05-151-3/+4
| | | | | These were both improved by d92c7556501a4cdeb7d269c4624992c94d9b3b8b but the changes were lost due to merge silliness.
* Tidy up error suppressionSimon Peyton Jones2018-05-153-23/+57
| | | | | | | | | | | | | Trac #15152 showed that when a flag turned an error into a warning, we were still (alas) suppressing subequent errors; includign their essential addTcEvBind. That led (rightly) to a Lint error. This patch fixes it, and incidentally tidies up an ad-hoc special case of out-of-scope variables (see the old binding for 'out_of_scope_killer' in 'tryReporters'). No test, because the problem was only shown up when turning inaccessible code into a warning.
* rts: export new absentSumFieldError from baseSergei Trofimovich2018-05-143-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | commit b2ff5dde399cd012218578945ada1d9ff68daa35 "Fix #15038" added new stable closure 'absentSumFieldError_closure' to base package. This closure is used in rts package. Unfortunately the symbol was not explicitly exported and build failed on windows as: ``` "inplace/bin/ghc-stage1" -o ...hsc2hs.exe ... rts/dist/build/libHSrts.a(RtsStartup.o): In function `hs_init_ghc': rts/RtsStartup.c:272:0: error: undefined reference to `base_ControlziExceptionziBase_absentSumFieldError_closure' | 272 | getStablePtr((StgPtr)absentSumFieldError_closure); | ^ ``` This change adds 'absentSumFieldError_closure' to explicit export into libHSbase.def. Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
* Fix performance regressions from #14737Tobias Dammers2018-05-143-22/+58
| | | | | | | | | | | | | | | | | | See #15019. When removing an unnecessary type equality check in #14737, several regression tests failed. The cause was that some coercions that are actually Refl coercions weren't passed in as such, which made the equality check needlessly complex (Refl coercions can be discarded in this particular check immediately, without inspecting the types at all). We fix that, and get additional performance improvements for free. Reviewers: goldfire, bgamari, simonpj Reviewed By: bgamari, simonpj Subscribers: simonpj, thomie, carter Differential Revision: https://phabricator.haskell.org/D4635
* Revert "rts: Compile with gcc -Og"Ben Gamari2018-05-142-2/+2
| | | | This reverts commit d4abd031f6e8c2fa01f8949f60d8a02cca513804.
* Fix #14973Denis M2018-05-141-8/+4
| | | | | | | | | | Reviewers: bgamari Reviewed By: bgamari Subscribers: thomie, carter Differential Revision: https://phabricator.haskell.org/D4661