- 29 Apr, 2014 10 commits
-
-
A long debate is in issue #8742, but the main motivation is that this allows for applying a patch to reuse the function scavenge_small_bitmap without changing the .o-file output. Similarly, I changed the types in rts/sm/Compact.c, so I can create a STATIC_INLINE function for the redundant code block: while (size > 0) { if ((bitmap & 1) == 0) { thread((StgClosure **)p); } p++; bitmap = bitmap >> 1; size--; }
-
Austin Seipp authored
Issue discovered by Coverity Scan, CID 43168. Signed-off-by:
Austin Seipp <austin@well-typed.com>
-
Austin Seipp authored
Issue discovered by Coverity Scan, CID 43171. Signed-off-by:
Austin Seipp <austin@well-typed.com>
-
Austin Seipp authored
Signed-off-by:
Austin Seipp <austin@well-typed.com>
-
eir@cis.upenn.edu authored
This commit also makes better names for several of these functions, and removes one that went unused.
-
Austin Seipp authored
This reverts commit 4539400a.
-
Austin Seipp authored
Signed-off-by:
Austin Seipp <austin@well-typed.com>
-
Gabor Greif authored
-
Gabor Greif authored
-
Simon Marlow authored
The new stg_gc_prim_p_ll stack frame was missing an info table. This is a regression since 7.6, because this stuff was part of a cleanup that happened in 7.7.
-
- 28 Apr, 2014 12 commits
-
-
eir@cis.upenn.edu authored
This is the result of an email conversation (off list) with Conal Elliott, who needed a stronger unSubCo_maybe. This commit adds cases to upgrade the role of a coercion when recursion is necessary to do say (for example, for a use of TransCo). As a side effect, more coercion optimizations are now possible. This was not done previously because unSubCo_maybe was used only during coercion optimization, and the recursive cases looked to be unlikely. However, adding them can cause no harm. unSubCo_maybe is now also exported from Coercion, for use cases like Conal's.
-
Joachim Breitner authored
-
Simon Peyton Jones authored
We now display the foralls of a type if any of the type variables is polykinded. This put kind polymorphism "in your face" a bit more often, but eliminates a lot of head scratching. The user manual reflects the new behaviour.
-
Simon Peyton Jones authored
-
Gergely Risko authored
The provided tests test both annotation generation and reification from Template Haskell. Both --make and compilation via separate units (ghc -c) are tested. Signed-off-by:
Austin Seipp <austin@well-typed.com>
-
Gergely Risko authored
The reifyAnnotation method of the Q monad correctly gathered annotations from TCG and EPS. Unfortunately it didn't look into the Home Package Table. This resulted in annotations not being found if they are in the same package as the splice that is reifying and ghc --make is used for compilation management. Fix this by using the already existing prepareAnnotations method from HscTypes.lhs that correctly searches in HPT and EPS both. Signed-off-by:
Austin Seipp <austin@well-typed.com>
-
Austin Seipp authored
Signed-off-by:
Austin Seipp <austin@well-typed.com>
-
Simon Peyton Jones authored
Many of these have never been initialised, I think. They were simply guesses from the 64-bit version.
-
Simon Peyton Jones authored
-
Simon Peyton Jones authored
The argument in Trac #9033 is very compelling: we should not report 20 errors, fix one, and have the other 19 disappear. They were spurious in the first place. The fix was easy; do type-class defaulting uncondionally, rather than only if there are no insoluble constraints. See Note [When to do type-class defaulting] in TcSimplify. Error messages generally improve, especially tc211 which actually had an example of precisely this phenomenon.
-
Austin Seipp authored
The Commentary is now on the wiki and far more complete. This copy will of course live on in the annals of history, but there's no reason to keep it around still. Signed-off-by:
Austin Seipp <austin@well-typed.com>
-
Simon Peyton Jones authored
-
- 27 Apr, 2014 8 commits
-
-
Herbert Valerio Riedel authored
`make clean` did already ignore a missing mk/config.mk, but `make distclean` and `make maintainer-clean` didn't. This commit rectifies this oversight. Signed-off-by:
Herbert Valerio Riedel <hvr@gnu.org>
-
Nicolas Trangez authored
Issue discovered by Coverity scan, CID 43167. Signed-off-by:
Austin Seipp <austin@well-typed.com>
-
Nicolas Trangez authored
Issue discovered by Coverity scan, CID 43163. This should fix CID 43172 as a side-effect as well. Signed-off-by:
Austin Seipp <austin@well-typed.com>
-
Nicolas Trangez authored
Issue discovered by Coverity scan, CID 43165. Signed-off-by:
Austin Seipp <austin@well-typed.com>
-
Nicolas Trangez authored
Issue discovered by Coverity scan, CID 43142. Signed-off-by:
Austin Seipp <austin@well-typed.com>
-
Austin Seipp authored
CID 43178 Signed-off-by:
Austin Seipp <austin@well-typed.com>
-
Austin Seipp authored
n_capabilities is declared as unsigned int (32bit), and so multiplication is 32-bit before being stored in a 64bit integer (StgWord). Instead, cast n_capabilities to StgWord before multiplying. Discovered by Coverity. CID 43164. Signed-off-by:
Austin Seipp <austin@well-typed.com>
-
Austin Seipp authored
Discovered by Coverity. CID 43166. Signed-off-by:
Austin Seipp <austin@well-typed.com>
-
- 25 Apr, 2014 1 commit
-
-
Herbert Valerio Riedel authored
This is an attempt to address https://github.com/haskell/cabal/issues/1811 by replicating the less than 100 lines of code actually used from the containers package into an internal non-exposed `template-haskell` module. Moreover, `template-haskell` does not expose the `Map` type, so this change should have no visible effect on the public API. It may turn out that `Data.Map` is not necessary and that even a simple list-based associative list (`Prelude.lookup`) may suffice. However, in order to avoid any regressions, this commit takes the safe route and just clones `Data.Map` for now. Signed-off-by:
Herbert Valerio Riedel <hvr@gnu.org>
-
- 24 Apr, 2014 6 commits
-
-
Gabor Greif authored
-
Simon Peyton Jones authored
See Note [Do not eta-expand PAPs] in SimplUtils. This has a tremendously good effect on compile times for some simple benchmarks. The test is now where it belongs, in perf/compiler/T9020 (instead of simpl015). I did a nofib run and got essentially zero change except for cacheprof which gets 4% more allocation. I investigated. Turns out that we have instance PP Reg where pp ppm ST_0 = "%st" pp ppm ST_1 = "%st(1)" pp ppm ST_2 = "%st(2)" pp ppm ST_3 = "%st(3)" pp ppm ST_4 = "%st(4)" pp ppm ST_5 = "%st(5)" pp ppm ST_6 = "%st(6)" pp ppm ST_7 = "%st(7)" pp ppm r = "%" ++ map toLower (show r) That (map toLower (show r) does a lot of map/toLowers. But if we inline show we get something like pp ppm ST_0 = "%st" pp ppm ST_1 = "%st(1)" pp ppm ST_2 = "%st(2)" pp ppm ST_3 = "%st(3)" pp ppm ST_4 = "%st(4)" pp ppm ST_5 = "%st(5)" pp ppm ST_6 = "%st(6)" pp ppm ST_7 = "%st(7)" pp ppm EAX = map toLower (show EAX) pp ppm EBX = map toLower (show EBX) ...etc... and all those map/toLower calls can now be floated to top level. This gives a 4% decrease in allocation. But it depends on inlining a pretty big 'show' function. With this new patch we get slightly better eta-expansion, which makes a function look slightly bigger, which just stops it being inlined. The previous behaviour was luck, so I'm not going to worry about losing it. I've added some notes to nofib/Simon-nofib-notes
-
Simon Peyton Jones authored
Previously we always printed qualified names, but that makes a lot of debug or warning output very verbose. So now we only print qualified names with -dppr-debug. Civilised output (from pukka error messages, with the environment available) is unaffected
-
Simon Peyton Jones authored
This is just to make sure that there is no redundant boxing. For safeIndex, for example, the error path doesn't evaluate the index, so it may be passed boxed unless safeIndex is inlined bodily, which I don't want to rely on.
-
Simon Peyton Jones authored
The code before did actually unpack the size, I think, but it wasn't very clear, and it's better to do it explicitly
-
Simon Peyton Jones authored
-
- 22 Apr, 2014 3 commits
-
-
Herbert Valerio Riedel authored
This quiets down the utils/testremove/checkremove step Basically the idea is to have 'make clean' remove everything that was generated by `make`, while `make distclean` ought to remove everything created by `./configure`. Signed-off-by:
Herbert Valerio Riedel <hvr@gnu.org>
-
Herbert Valerio Riedel authored
This adapts the foreachLibrary rule to match the new situation of base.git, ghc-prim.git, integer-gmp.git, integer-simple.git, and template-haskell.git being folded into ghc.git (re #9016 ), and thus not being mentioned anymore in the `packages` file. One visible effect of this oversight was that the `clean_libraries` make target would fail to clean those packages. Signed-off-by:
Herbert Valerio Riedel <hvr@gnu.org>
-
Herbert Valerio Riedel authored
Note: the .gitignore pattern rules are not that obvious Signed-off-by:
Herbert Valerio Riedel <hvr@gnu.org>
-