- 01 Oct, 2013 15 commits
-
-
unknown authored
-
unknown authored
-
Simon Peyton Jones authored
Here's the Note about the (simple) fix. Apparently #8329 prevented all 23 packages of the Snap framework from compiling. Note [Demand transformer for a ditionary selector] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If we evaluate (op dict-expr) under demand 'd', then we can push the demand 'd' into the appropriate field of the dictionary. What *is* the appropriate field? We just look at the strictness signature of the class op, which will be something like: U(AAASAAAAA). Then replace the 'S' by the demand 'd'. For single-method classes, which are represented by newtypes the signature of 'op' won't look like U(...), so the splitProdDmd_maybe will fail. That's fine: if we are doing strictness analysis we are also doing inling, so we'll have inlined 'op' into a cast. So we can bale out in a conservative way, returning topDmdType. It is (just.. Trac #8329) possible to be running strictness analysis *without* having inlined class ops from single-method classes. Suppose you are using ghc --make; and the first module has a local -O0 flag. So you may load a class without interface pragmas, ie (currently) without an unfolding for the class ops. Now if a subsequent module in the --make sweep has a local -O flag you might do strictness analysis, but there is no inlining for the class op. This is wierd so I'm not worried about whether this optimises brilliantly; but it should not fall over.
-
Simon Marlow authored
-
Simon Marlow authored
This makes it possible to write x = if | False -> if | False -> 1 | False -> 2 | True -> 3 Layout normally inserts semicolons between declarations at the same indentation level, so I added optional semicolons to the syntax for guards in MultiWayIf syntax. This is a bit of a hack, but the alternative (a special kind of layout that doesn't insert semicolons) seemed worse, or at least equally bad.
-
Simon Marlow authored
-
Simon Marlow authored
People often jump to the conclusion that functions aren't inlined unless you say INLINE, so clarify the documentation to emphasize the fact that you shouldn't normally need to use INLINE unless you need to override the defaults.
-
Simon Marlow authored
-
Simon Marlow authored
-
Simon Marlow authored
-
Simon Marlow authored
volatile StgWord8 is not guaranteed to be atomic.
-
Simon Marlow authored
-
Simon Marlow authored
We were passing the function address to stg_gc_prim_p in R9, which was wrong because the call was a high-level call and didn't declare R9 as a parameter. Passing R9 as an argument is the right way, but unfortunately that exposed another bug: we were using the same macro in some low-level Cmm, where it is illegal to call functions with arguments (see Note [syntax of cmm files]). So we now have low-level variants of STK_CHK() and STK_CHK_P() for use in low-level Cmm code.
-
Simon Marlow authored
-
Krzysztof Gogolewski authored
-
- 30 Sep, 2013 2 commits
-
-
parcs authored
-
Austin Seipp authored
No AMP warnings will be issued anymore when the name is not imported from Prelude anymore. For example, a local definition of 'join' is now legal in modules containing 'import Prelude (map)' for example. This allows better future-proofing of libraries. See also http://ghc.haskell.org/trac/ghc/ticket/8004#comment:16 Authored-by:
David Luposchainsky <dluposchainsky@gmail.com> Signed-off-by:
Austin Seipp <austin@well-typed.com>
-
- 29 Sep, 2013 5 commits
-
-
Edward Kmett authored
Signed-off-by:
Austin Seipp <austin@well-typed.com>
-
Edward Kmett authored
Signed-off-by:
Austin Seipp <austin@well-typed.com>
-
Peter Trommler authored
Signed-off-by:
Austin Seipp <austin@well-typed.com>
-
aljee@hyper.cx authored
On 32-bit platforms, the bitmap should be an array of 32-bit words, not Word64s. Signed-off-by:
Austin Seipp <austin@well-typed.com>
-
Austin Seipp authored
This was supposed to happen a long time ago, but later is better than never. This makes `-fwarn-lazy-unlifted-bindings` into a no-op (with its own warning) to be removed in GHC 7.10. This fixes #8022. Signed-off-by:
Austin Seipp <austin@well-typed.com>
-
- 28 Sep, 2013 3 commits
-
-
Herbert Valerio Riedel authored
This applies attachment:sync-all-submodules-locally.diff from #8369 Authored-by: Nathaniel Filardo Signed-off-by:
Herbert Valerio Riedel <hvr@gnu.org>
-
-
Erik de Castro Lopo authored
-
- 27 Sep, 2013 5 commits
-
-
Erik de Castro Lopo authored
-
Krzysztof Gogolewski authored
-
Krzysztof Gogolewski authored
See also #4426
-
Austin Seipp authored
Authored-by:
Edward Kmett <ekmett@gmail.com> Authored-by:
Austin Seipp <austin@well-typed.com> Signed-off-by:
Austin Seipp <austin@well-typed.com>
-
Austin Seipp authored
A value of type 'Proxy# a' can only be created through the new, primitive witness 'proxy# :: Proxy# a' - a Proxy# has no runtime representation and is thus free. This lets us clean up the internals of TypeRep, as well as Adam's future work concerning records (by using a zero-width primitive type.) Authored-by:
Edward Kmett <ekmett@gmail.com> Authored-by:
Austin Seipp <austin@well-typed.com> Signed-off-by:
Austin Seipp <austin@well-typed.com>
-
- 26 Sep, 2013 1 commit
-
-
Herbert Valerio Riedel authored
- `primitive` is updated to upstream's HEAD which is essentially `primitive-0.5.1.0`, plus a core-lint-error workaround for #8355 and some minor cleanups. - `vector` is updated to upstreams `vector-0.10.9.1` release Note: The upstream repo location has changed to GitHub, hence the update in the `packages` file Signed-off-by:
Herbert Valerio Riedel <hvr@gnu.org>
-
- 24 Sep, 2013 3 commits
-
-
Signed-off-by:
Arash Rouhani <rarash@student.chalmers.se>
-
Gabor Greif authored
-
Iavor S. Diatchki authored
This is used in the definition of `ToNat1` in the `base` library (module GHC.TypeLits).
-
- 23 Sep, 2013 6 commits
-
-
Krzysztof Gogolewski authored
-
parcs authored
whitehole_spin is only defined when PROF_SPIN is set.
-
parcs authored
*p is both read and written to by the cmpxchg instruction, and therefore should be given the '+' constraint modifier. (In GCC's extended ASM language, '+' means that the operand is both read and written to whereas '=' means that it is only written to.) Otherwise, the compiler is allowed to rewrite something like SpinLock lock; initSpinLock(&lock); /* sets lock = 1 */ ACQUIRE_SPIN_LOCK(&lock); into SpinLock lock; ACQUIRE_SPIN_LOCK(&lock); because according to the asm statement, the previous value of 'lock' is not important.
-
Krzysztof Gogolewski authored
It has been deprecated for long and already removed from ghc --help
-
Simon Marlow authored
See also #5435. Now we have to remember the the StablePtrs that get created by the module initializer so that we can free them again in unloadObj().
-
Simon Marlow authored
The problem with unreachable code is that it might refer to undefined registers. This happens accidentally: a block can be orphaned by an optimisation, for example when the result of a comparsion becomes known. The register allocator panics when it finds an undefined register, because they shouldn't occur in generated code. So we need to also discard unreachable code to prevent this panic being triggered by optimisations. The register alloator already does a strongly-connected component analysis, so it ought to be easy to make it discard unreachable code as part of that traversal. It turns out that we need a different variant of the scc algorithm to do that (see Digraph), however the new variant also generates slightly better code by putting the blocks within a loop in a better order for register allocation.
-