| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
I've also added some missing $s to some makefiles. These aren't
technically necessary, but it's nice to be consistent.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The new flag -XMonoLocalBinds tells GHC not to generalise nested
bindings in let or where clauses, unless there is a type signature,
in which case we use it.
I'm thinking about whether this might actually be a good direction for
Haskell go to in, although it seems pretty radical. Anyway, the flag
is easy to implement (look at how few lines change), and having it
will allow us to experiement with and without.
Just for the record, below are the changes required in the boot
libraries -- ie the places where. Not quite as minimal as I'd hoped,
but the changes fall into a few standard patterns, and most represent
(in my opinion) sytlistic improvements. I will not push these patches,
however.
== running darcs what -s --repodir libraries/base
M ./Control/Arrow.hs -2 +4
M ./Data/Data.hs -7 +22
M ./System/IO/Error.hs +1
M ./Text/ParserCombinators/ReadP.hs +1
== running darcs what -s --repodir libraries/bytestring
M ./Data/ByteString/Char8.hs -1 +2
M ./Data/ByteString/Unsafe.hs +1
== running darcs what -s --repodir libraries/Cabal
M ./Distribution/PackageDescription.hs -2 +6
M ./Distribution/PackageDescription/Check.hs +3
M ./Distribution/PackageDescription/Configuration.hs -1 +3
M ./Distribution/ParseUtils.hs -2 +4
M ./Distribution/Simple/Command.hs -1 +4
M ./Distribution/Simple/Setup.hs -12 +24
M ./Distribution/Simple/UserHooks.hs -1 +5
== running darcs what -s --repodir libraries/containers
M ./Data/IntMap.hs -2 +2
== running darcs what -s --repodir libraries/dph
M ./dph-base/Data/Array/Parallel/Arr/BBArr.hs -1 +3
M ./dph-base/Data/Array/Parallel/Arr/BUArr.hs -2 +4
M ./dph-prim-par/Data/Array/Parallel/Unlifted/Distributed/Arrays.hs -6 +10
M ./dph-prim-par/Data/Array/Parallel/Unlifted/Distributed/Combinators.hs -3 +6
M ./dph-prim-seq/Data/Array/Parallel/Unlifted/Sequential/Flat/Permute.hs -2 +4
== running darcs what -s --repodir libraries/syb
M ./Data/Generics/Twins.hs -5 +18
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
You can't Haddock a library until it's built. Previously that happened
automatically because
Haddock itself was built with stage2
And all the libraries were built with stage1
But now DPH is built with stage2, so Haddock can get to work too
early.
This patch adds the missing dependency (thanks to Simon M)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch fixes an insidious and long-standing bug in the way that
parallelism is handled in GHC. See Note [lazyId magic] in MkId.
Here's the diagnosis, copied from the Trac ticket. par is defined
in GHC.Conc thus:
{-# INLINE par #-}
par :: a -> b -> b
par x y = case (par# x) of { _ -> lazy y }
-- The reason for the strange "lazy" call is that it fools the
-- compiler into thinking that pseq and par are non-strict in
-- their second argument (even if it inlines pseq/par at the call
-- site). If it thinks par is strict in "y", then it often
-- evaluates "y" before "x", which is totally wrong.
The function lazy is the identity function, but it is inlined only
after strictness analysis, and (via some magic) pretends to be
lazy. Hence par pretends to be lazy too.
The trouble is that both par and lazy are inlined into your definition
of parallelise, so that the unfolding for parallelise (exposed in
Parallelise.hi) does not use lazy at all. Then when compiling Main,
parallelise is in turn inlined (before strictness analysis), and so
the strictness analyser sees too much.
This was all sloppy thinking on my part. Inlining lazy after
strictness analysis works fine for the current module, but not for
importing modules.
The fix implemented by this patch is to inline 'lazy' in CorePrep,
not in WorkWrap. That way interface files never see the inlined version.
The downside is that a little less optimisation may happen on programs
that use 'lazy'. And you'll only see this in the results -ddump-prep
not in -ddump-simpl. So KEEP AN EYE OUT (Simon and Satnam especially).
Still, it should work properly now. Certainly fixes #3259.
|
|
|
|
|
|
|
| |
Adopt Max's suggestion for name shadowing, by suppressing shadowing
warnings for variables starting with "_". A tiny bit of refactoring
along the way.
|
| |
|
|
|
|
|
|
| |
These refer to unaligned locations that need to be written
byte-at-a-time. This fixes the SPARC ghci failures in
the current head.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
In Tempate Haskell -ddump-splices, the "after" expression is populated
with RdrNames, many of which are Orig things. We used to print these
fully-qualified, but that's a bit heavy.
This patch refactors the code a bit so that the same print-unqualified
mechanism we use for Names also works for RdrNames. Lots of comments
too, because it took me a while to figure out how it all worked again.
|
|
|
|
|
|
|
|
|
|
|
|
| |
When you say -ddump-splices, the "before" expression is now
*renamed* but not *typechecked"
Reason (a) less typechecking crap
(b) data constructors after type checking have been
changed to their *wrappers*, and that makes them
print always fully qualified
|
|
|
|
|
|
| |
The trial-and-error for type defaults was not playing nicely with
-Werror. The fix is simple.
|
| |
|
| |
|
|
|
|
|
|
| |
This unnecessary ambiguity has been there for ages, and is now rejected
by -Werror, after fixing #3261
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
This is not a bug fix, it just makes better use of memory
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
Makes GADT syntax consistent by allowing multiple constructors
to be given a single signature
data T wehre
A, B :: T
C :: Int -> t
|
|
|
|
|
|
|
| |
See Trac #2953. This patch implements a distinct flag for each extended
class that may be automatically derived. And I updated the user manual
to reflect the fact that we can now derive Functor, Foldable, Traversable.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* The old Reg type is now split into VirtualReg and RealReg.
* For the graph coloring allocator, the type of the register graph
is now (Graph VirtualReg RegClass RealReg), which shows that it colors
in nodes representing virtual regs with colors representing real regs.
(as was intended)
* RealReg contains two contructors, RealRegSingle and RealRegPair,
where RealRegPair is used to represent a SPARC double reg
constructed from two single precision FP regs.
* On SPARC we can now allocate double regs into an arbitrary register
pair, instead of reserving some reg ranges to only hold float/double values.
|
| |
|
|
|
|
|
|
| |
This patch arranges to gather the variables used by 'deriving' clauses,
so that unused bindings are correctly reported.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
At last! Trac #1476 and #3177
This patch extends Template Haskell by allowing splices in
types. For example
f :: Int -> $(burble 3)
A type splice should work anywhere a type is expected. This feature
has been long requested, and quite a while ago I'd re-engineered the
type checker to make it easier, but had never got around to finishing
the job. With luck, this does it.
There's a ToDo in the HsSpliceTy case of RnTypes.rnHsType, where I
am not dealing properly with the used variables; but that's awaiting
the refactoring of the way we report unused names.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When you have a (\s::String -> ....[| s |]....), the string
's' is lifted. We used to get a chain of single-character
Cons nodes, correct but lots and lots of code.
This patch arranges to optimise that to a string literal. It does
so in two places:
a) In TcExpr, if we know that s::String, we generate liftString directly
b) In DsMeta, if we find a list of character literals, we convert to
a string. This catches a few cases that (a) does not
There an accompanying patch in the template-haskell package,
adding Language.Haskell.TH.Syntax.liftString
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
We were looking at HADDOCK_DOCS instead of $$(HADDOCK_DOCS)
|
| |
|
| |
|
| |
|