 06 May, 2018 4 commits


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 15 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

Ryan Scott authored
Trac #14904 was fixed in commit faec8d35. Let's add some tests to ensure that it stays fixed.

Simon Peyton Jones authored

David Feuer authored
* The note on how to prevent stable unfoldings from leading to `case` on `absentError` was wrong. Make it reflect reality. * Reviewing the above change, Simon noticed that we didn't set an arity for `absentError`, which definitely has arity 1. It may not matter much, since `absentError` usually vanishes quickly, but we might as well set it properly, so now we do. Reviewers: simonpj, bgamari Reviewed By: simonpj Subscribers: thomie, carter Differential Revision: https://phabricator.haskell.org/D4655

 02 May, 2018 3 commits


Simon Marlow authored
Summary: We were unconditionally updating the nursery pointers to be `nurseries[cap>no]`, but when using nursery chunks this might be wrong. This manifested as a later assertion failure in allocate(). Test Plan: new test case Reviewers: bgamari, niteria, erikd Subscribers: thomie, carter Differential Revision: https://phabricator.haskell.org/D4649

Simon Marlow authored
Test Plan: validate Reviewers: hvr, bgamari, erikd Subscribers: thomie, carter Differential Revision: https://phabricator.haskell.org/D4648

Joachim Breitner authored

 01 May, 2018 6 commits


Ben Gamari authored
Previously we inexplicably disabled support for `hT` profiling in the profiled way. Admittedly, there are relatively few cases where one would prefer hT to `hd`, but the option should nevertheless be available for the sake of consistency. Note that this does mean that there is a bit of an inconsistency in the behavior of `h`: in the profiled way `h` behaves like `hc` whereas in the nonprofiled way it defaults to `hT`.

Ben Gamari authored
Reviewers: erikd, simonmar Subscribers: thomie, carter GHC Trac Issues: #15086 Differential Revision: https://phabricator.haskell.org/D4643

Ben Gamari authored
This commit bumped T12425, T12234 and T12150 over their expected metrics on OS X.

Ben Gamari authored
This really shouldn't be necessary.

Simon Peyton Jones authored
Trac #15108 showed that the simple optimiser in CoreOpt was accidentally etareducing a join point, so it didn't meet its arity invariant. This patch fixes it. See Note [Preserve joinbinding arity].

Simon Peyton Jones authored
Trac #15108 showed that the Core prettyprinter would crash if it found a joinpoint binding with too few lambda on the RHS. That is superunhelpful! Lint will find it, but prettyprinting should not crash. This patch just makes the pretty printer behave more robustly; it leaves the job of error reporting to Lint.
