 10 May, 2018 1 commit


Ömer Sinan Ağacan authored
We introduce a new Id for unused pointer values in unboxed sums that is not CAFFY. Because the Id is not CAFFY it doesn't make nonCAFFY definitions CAFFY, fixing #15038. To make sure anything referenced by the new id will be retained we get a stable pointer to in on RTS startup. Test Plan: Passes validate Reviewers: simonmar, simonpj, hvr, bgamari, erikd Reviewed By: simonmar Subscribers: rwbarton, thomie, carter GHC Trac Issues: #15038 Differential Revision: https://phabricator.haskell.org/D4680

 09 May, 2018 1 commit


Simon Marlow authored
Summary: Space leaks in GHCi emerge from time to time and tend to come back again after they get fixed. This is an attempt to limit regressions by * adding a reliable detection for some classes of space leaks in GHCi * turning on leak checking for all GHCi tests in the test suite, so that we'll notice if the leak appears again. The idea for detecting space leaks is quite simple: * find some data that we expect to be GC'd later, make a weak pointer to it * when we expect the data to be dead, do a `performGC` and then check the status of the weak pointer. It would be nice to apply this trick to lots of things in GHC, e.g. ensuring that HsSyn is not retained after the desugarer, or ensuring that CoreSyn from the previous simplifier pass is not retained. Test Plan: validate Reviewers: bgamari, simonpj, erikd, niteria Subscribers: thomie, carter GHC Trac Issues: #15111 Differential Revision: https://phabricator.haskell.org/D4658

 08 May, 2018 8 commits


Tao He authored
Summary: The element type of `List` maybe a type family instacen, rather than a trivial type. For example in Trac #14547, ``` {# LANGUAGE TypeFamilies, OverloadedLists #} class Foo f where type It f foo :: [It f] > f data List a = Empty  a :! List a deriving Show instance Foo (List a) where type It (List a) = a foo [] = Empty foo (x : xs) = x :! foo xs ``` Here the element type of `[]` is `It (List a)`, we should also normalize it as `a`. Test Plan: make test TEST="T14547" Reviewers: bgamari Reviewed By: bgamari Subscribers: thomie, carter GHC Trac Issues: #14547 Differential Revision: https://phabricator.haskell.org/D4624

Ben Gamari authored
This reverts commit 981bf471.

Ben Gamari authored
The element type of `List` maybe a type family instacen, rather than a trivial type. For example in Trac #14547, ``` {# LANGUAGE TypeFamilies, OverloadedLists #} class Foo f where type It f foo :: [It f] > f data List a = Empty  a :! List a deriving Show instance Foo (List a) where type It (List a) = a foo [] = Empty foo (x : xs) = x :! foo xs ``` Here the element type of `[]` is `It (List a)`, we should also normalize it as `a`. Test Plan: make test TEST="T14547" Reviewers: bgamari Reviewed By: bgamari Subscribers: thomie, carter GHC Trac Issues: #14547 Differential Revision: https://phabricator.haskell.org/D4624

Ben Gamari authored
This reverts commit 361d23a8.

Ben Gamari authored
This discussion will be useful for users; move it into the usersguide proper. Also fixes a few typos noted by @Phyx. Test Plan: Read it Reviewers: Phyx Reviewed By: Phyx Subscribers: dfeuer, Phyx, rwbarton, thomie, carter Differential Revision: https://phabricator.haskell.org/D4420

Simon Peyton Jones authored
This patch deletes quite a bit of code, AND fixes Trac #15116.

Simon Peyton Jones authored

Simon Peyton Jones authored
This refactoring was provoked by our conversation on Trac #14152. No change in behaviour.

 06 May, 2018 6 commits


Ömer Sinan Ağacan authored

Ben Gamari authored
This was failing on Darwin; I believe this is due to 33de71fa.

Ben Gamari authored

Justus Sagemüller authored
This function was unstable, in particular for negative arguments. https://ghc.haskell.org/trac/ghc/ticket/14927 The reason is that the formula `log (x + sqrt (1 + x*x))` is dominated by the numerical error of the `sqrt` function when x is strongly negative (and thus the summands in the `log` mostly cancel). However, the area hyperbolic sine is an odd function, thus the negative side can as well be calculated by flipping over the positive side, which avoids this instability. Furthermore, for _very_ big arguments, the `x*x` subexpression overflows. However, long before that happens, the square root is anyways completely dominated by that term, so we can neglect the `1 +` and get sqrt (1 + x*x) ≈ sqrt (x*x) = x and therefore asinh x ≈ log (x + x) = log (2*x) = log 2 + log x which does not overflow for any normalfinite positive argument, but perfectly matches the exact formula within the floatingpoint accuracy.

Justus Sagemüller authored
The area hyperbolic sine is currently broken, see https://ghc.haskell.org/trac/ghc/ticket/14927.

Justus Sagemüller authored
These functions have inverses only on part of the real line, but there they should be reliably inverted – that's basically the whole point of the functions like `asin`, `atan` etc..

 05 May, 2018 10 commits


Sebastian Graf authored
This is mostly for congruence with 'subWordC#' and '{add,sub}IntC#'. I found 'plusWord2#' while implementing this, which both lacks documentation and has a slightly different specification than 'addWordC#', which means the generic implementation is unnecessarily complex. While I was at it, I also added lacking metainformation on PrimOps and refactored 'subWordC#'s generic implementation to be branchless. Reviewers: bgamari, simonmar, jrtc27, dfeuer Reviewed By: bgamari, dfeuer Subscribers: dfeuer, thomie, carter Differential Revision: https://phabricator.haskell.org/D4592

MitchellSalad authored

Moritz Angermann authored
Reviewers: bgamari Subscribers: thomie, carter GHC Trac Issues: #14982 Differential Revision: https://phabricator.haskell.org/D4548

Ben Gamari authored
Subscribers: thomie, carter, RyanGlScott GHC Trac Issues: #15067 Differential Revision: https://phabricator.haskell.org/D4622

Tao He authored
The element type of `List` maybe a type family instacen, rather than a trivial type. For example in Trac #14547, ``` {# LANGUAGE TypeFamilies, OverloadedLists #} class Foo f where type It f foo :: [It f] > f data List a = Empty  a :! List a deriving Show instance Foo (List a) where type It (List a) = a foo [] = Empty foo (x : xs) = x :! foo xs ``` Here the element type of `[]` is `It (List a)`, we should also normalize it as `a`. Test Plan: make test TEST="T14547" Reviewers: bgamari Reviewed By: bgamari Subscribers: thomie, carter GHC Trac Issues: #14547 Differential Revision: https://phabricator.haskell.org/D4624

Andreas Klebinger authored
Splitting TrieMap into a general and core specific part allows us to define instances for TrieMap without creating a transitive dependency on CoreSyn. Test Plan: ci Reviewers: goldfire, bgamari, simonmar, simonpj Reviewed By: bgamari, simonpj Subscribers: simonpj, nomeata, thomie, carter GHC Trac Issues: #15082 Differential Revision: https://phabricator.haskell.org/D4618

Ben Gamari authored
See #15086. [skipci]

Masahiro Sakai authored
`:'` in explanation text should be `':` to match code example.

Mark Karpov authored
The ‘haskell’ images are not being updated and there is no image with GHC 8.4.2, so we probably should not use them anymore. I adapted Dockerfiles used by those images so the end result is almost the same except we get newer GHC and cabalinstall.

Ben Gamari authored
This patch made the simplifier inline nested function bindings less aggressively and, while it didn't seem to affect nofib, appears to have regressed T9630 rather considerably.

 04 May, 2018 2 commits


Simon Peyton Jones authored
This patch has virtually no effect on anything (according to a nofib run). But it simplifies the definition of interesting_call by being a bit less gungho about inlining nested function bindings. See Note [Nested functions]  Program Size Allocs Runtime Elapsed TotalMem  anna +0.2% 0.0% 0.163 0.163 0.0% binarytrees +0.1% +0.0% 4.5% 4.5% 0.0% cacheprof 0.1% +0.1% 4.7% 4.8% +2.7% fasta +0.2% 0.0% +2.6% +3.0% 0.0% fluid 0.0% 0.6% 0.011 0.011 0.0% gamteb 0.1% 0.0% 0.069 0.070 0.0% hpg +0.1% +0.0% +0.7% +0.7% 0.0% infer +0.3% +0.2% 0.097 0.098 0.0% lambda 0.1% 0.0% +2.0% +2.0% 0.0% nbody +0.1% 0.1% 0.1% 0.1% 0.0% simple 0.2% 0.2% +0.6% +0.6% 0.0% spectralnorm +0.1% 0.0% 0.1% 0.1% 0.0% tak 0.0% 0.1% 0.024 0.024 0.0%  Min 0.4% 0.6% 5.3% 5.3% 0.0% Max +0.3% +0.2% +3.3% +3.3% +15.0% Geometric Mean 0.0% 0.0% 0.3% 0.3% +0.2%

niteria authored
@osa1 reported that the output on his machine has extra newlines: https://phabricator.haskell.org/D4606#129092. This collapses consecutive newlines.

 03 May, 2018 12 commits


Herbert Valerio Riedel authored
Test Plan: via CI Reviewers: bgamari Subscribers: dfeuer, thomie, carter Differential Revision: https://phabricator.haskell.org/D4640

Ben Gamari authored
Test Plan: Validate, run program with `+RTS numa` without libnuma support compiled in Reviewers: erikd, simonmar Subscribers: thomie, carter GHC Trac Issues: #14956 Differential Revision: https://phabricator.haskell.org/D4556

Chaitanya Koparkar authored
Test Plan: make test TEST=T15055 Reviewers: bgamari, RyanGlScott, osa1, Iceland_jack Reviewed By: osa1 Subscribers: ulysses4ever, thomie, carter GHC Trac Issues: #15055 Differential Revision: https://phabricator.haskell.org/D4621

Chaitanya Koparkar authored
GHC and the build tools use "response files" to work around the limit on the length of command line arguments on Windows. Haddock's implementation of parsing response files (i.e escaping/unescaping the appropriate characters) seems complete, is well tested, and also closely matches the GCC version. This patch moves the relevant bits into `base` so that it's easier for other libraries to reuse it. Test Plan: make test TEST=T13896 Reviewers: bgamari, RyanGlScott, 23Skidoo, hvr Reviewed By: RyanGlScott Subscribers: thomie, carter GHC Trac Issues: #13896 Differential Revision: https://phabricator.haskell.org/D4612

niteria authored
In `manifestSp` the unwind info was before the relevant instruction, not after. I added some notes to establish semantics. Also removes redundant annotation in stg_catch_frame. For `makeFixupBlocks` it looks like we were off by `wORD_SIZE dflags`. I'm not sure why, but it lines up with `manifestSp`. In fact it lines up so well so that I can consolidate the Sp unwind logic in `maybeAddUnwind`. I detected the problems with `makeFixupBlocks` by running T14779b after patching D4559. Test Plan: added a new test Reviewers: bgamari, scpmw, simonmar, erikd Reviewed By: bgamari Subscribers: thomie, carter GHC Trac Issues: #14999 Differential Revision: https://phabricator.haskell.org/D4606

kanetw authored
* osNumaNodes now returns the right number of nodes * thread affinity is now correctly set TODO: no noticeable performance improvement. does windows already distribute threads in a NUMAaware fashion? Test Plan: * validate * local tests on a NUMA machine Reviewers: bgamari, erikd, simonmar Reviewed By: bgamari, simonmar Subscribers: thomie, carter Differential Revision: https://phabricator.haskell.org/D4607

Matthew Pickering authored
Reviewers: mrkkrp, bgamari Reviewed By: mrkkrp, bgamari Subscribers: thomie, carter GHC Trac Issues: #15093 Differential Revision: https://phabricator.haskell.org/D4646

Matthew Pickering authored
Reviewers: bgamari Reviewed By: bgamari Subscribers: thomie, carter GHC Trac Issues: #15093 Differential Revision: https://phabricator.haskell.org/D4645

Andrew Martin authored

Andrew Martin authored

Andrew Martin authored
Noting that it will be removed in the future.

Bertram Felgenhauer authored
Before this patch, the pprUnwindwExpr function computed the length of by the following assembly fragment: .uleb128 1f.1 <expression data> 1: That is, to compute the length, it takes the difference of the label 1 and the address of the .uleb128 directive, and subtracts 1. In #15068 it was reported that `as` from binutils 4.30 has trouble with evaluating the `.` part of the expression. However, there is actually a problem with the expression, if the length of the data ever becomes larger than 128: In that case, the .uleb128 directive will emit more than 1 byte, and the computed length will be wrong. The present patch changes the assembly fragment to use two labels, which fixes both these problems. .uleb128 2f1f 1: <expression data> 2: Test Plan: validate Reviewers: bgamari, osa1 Reviewed By: bgamari Subscribers: thomie, carter GHC Trac Issues: #15068 Differential Revision: https://phabricator.haskell.org/D4654
