simonpj@microsoft.com [Fri, 5 Nov 2010 13:16:36 +0000 (13:16 +0000)]
Remove the now-unused constructor VarPatOut
simonpj@microsoft.com [Fri, 5 Nov 2010 13:15:45 +0000 (13:15 +0000)]
Track change in isInlinePragma
In TcBinds we want to use isAnyInlinePragma, to get
both INLINE and INLINABLE. I don't know why this isn't
leading to failures for others! The (bogus) error I got,
triggered by this bug was:
libraries\haskeline\System\Console\Haskeline\Key.hs:23:1:
You cannot SPECIALISE `M.findWithDefault'
because its definition has no INLINE/INLINABLE pragma
simonpj@microsoft.com [Fri, 12 Nov 2010 17:44:39 +0000 (17:44 +0000)]
More modules that need LANGUAGE BangPatterns
simonpj@microsoft.com [Fri, 12 Nov 2010 17:20:49 +0000 (17:20 +0000)]
Add LANGUAGE BangPatterns to modules that use them
simonpj@microsoft.com [Fri, 12 Nov 2010 16:08:01 +0000 (16:08 +0000)]
Warn about top-level bangs (Trac #4477)
A simple refactoring in the parser
Ben Lippmeier [Fri, 12 Nov 2010 13:46:41 +0000 (13:46 +0000)]
Slurp author spellings file from base and add more authors
simonpj@microsoft.com [Fri, 12 Nov 2010 13:00:11 +0000 (13:00 +0000)]
A (final) re-engineering of the new typechecker
Regression testing and user feedback for GHC 7.0 taught
us a lot. This patch fixes numerous small bugs, and some
major ones (eg Trac #4484, #4492), and improves type
error messages.
The main changes are:
* Entirely remove the "skolem equivalance class" stuff;
a very useful simplification
* Instead, when flattening "wanted" constraints we generate
unification variables (not flatten-skolems) for the
flattened type function application
* We then need a fixup pass at the end, TcSimplify.solveCTyFunEqs,
which resolves any residual equalities of form
F xi ~ alpha
* When we come across a definite failure (e.g. Int ~ [a]),
we now defer reporting the error until the end, in case we
learn more about 'a'. That is particularly important for
occurs-check errors. These are called "frozen" type errors.
* Other improvements in error message generation.
* Better tracing messages
simonpj@microsoft.com [Fri, 12 Nov 2010 08:30:52 +0000 (08:30 +0000)]
Allow the old [$foo| ... |] syntax for quasi-quotes
This is just a backward-compatibility thing, to be removed
eventually.
simonpj@microsoft.com [Thu, 11 Nov 2010 13:45:03 +0000 (13:45 +0000)]
Fix multi-line string (minor glitch in stage-1 compiler)
Roman Leshchinskiy [Wed, 10 Nov 2010 21:02:58 +0000 (21:02 +0000)]
Add upstream URLs for vector and primitive
Ian Lynagh [Wed, 10 Nov 2010 14:54:49 +0000 (14:54 +0000)]
Obey the -rtsopts flag when making shared libraries; part of #4464
Ian Lynagh [Wed, 3 Nov 2010 21:33:54 +0000 (21:33 +0000)]
Avoid scary message from tar if dph isn't in the tree
Ian Lynagh [Wed, 3 Nov 2010 21:33:18 +0000 (21:33 +0000)]
Whitespace only
Ian Lynagh [Wed, 3 Nov 2010 21:27:18 +0000 (21:27 +0000)]
Remove no-longer-necessary withFlattenedDynflags
Ian Lynagh [Wed, 3 Nov 2010 21:22:16 +0000 (21:22 +0000)]
Use liftIO rather than io
Ian Lynagh [Tue, 2 Nov 2010 19:24:46 +0000 (19:24 +0000)]
Fix a #if test
showMultiLineString is only in >= 7.1.
Ian Lynagh [Tue, 2 Nov 2010 18:58:31 +0000 (18:58 +0000)]
Fix building genprimopcode with GHC 7.0, and remove haskell98 imports
Ian Lynagh [Mon, 1 Nov 2010 16:18:02 +0000 (16:18 +0000)]
On Windows, when returning memory to the OS, we try to release it
as well as decommiting it.
Ian Lynagh [Fri, 29 Oct 2010 20:41:58 +0000 (20:41 +0000)]
Whitespace only, in rts/win32/OSMem.c
simonpj@microsoft.com [Mon, 1 Nov 2010 16:46:30 +0000 (16:46 +0000)]
Improve error messages
In particular, instead of
Cannot match 'a' with 'b'
we get
Could not deduce (a~b) from context (F a ~ b)
or whatever
Ian Lynagh [Fri, 29 Oct 2010 13:58:05 +0000 (13:58 +0000)]
Uncomment and fix an OS X linker debug print
Simon Marlow [Fri, 29 Oct 2010 09:04:23 +0000 (09:04 +0000)]
fix bugs in tryTakeMVar/tryPutMVar
I'm surprised that these haven't caused any problems (or maybe they have?)
Simon Marlow [Thu, 28 Oct 2010 10:16:24 +0000 (10:16 +0000)]
Remove duplicate PrimopWrappers generation
We were generating PrimopWrappers.hs twice in two different places,
one for the normal build and one for Haddock (I think). Unfortunately
one of these was causing extra rebuilding, because the file dropped
into the dist-install/build/autogen directory, where it was picked up
by the automatic HS_SRCS detection in subsequent make runs. This was
exposed by a recent change to HS_SRCS:
Wed Oct 20 11:47:59 BST 2010 Ian Lynagh <igloo@earth.li>
* Look for sources in Cabal's autogen directory too
This should fix the stage3 failures in the build bots.
benl@ouroborus.net [Fri, 29 Oct 2010 07:44:05 +0000 (07:44 +0000)]
Comment out bogus debug line that broke build on OSX
benl@ouroborus.net [Fri, 29 Oct 2010 07:16:17 +0000 (07:16 +0000)]
Fix import warning
benl@ouroborus.net [Fri, 29 Oct 2010 06:58:37 +0000 (06:58 +0000)]
Cleanup comments and formatting only
benl@ouroborus.net [Fri, 29 Oct 2010 06:33:20 +0000 (06:33 +0000)]
Nicer error message for #3782
It now says:
ghc-stage2: sorry! (this is work in progress)
(GHC version 7.1.
20101028 for i386-apple-darwin):
Vectorise.Builtins.indexBuiltin
DPH builtin function 'sumTyCon' of size '11' is not yet implemented.
This function does not appear in your source program, but it is needed
to compile your code in the backend. This is a known, current limitation
of DPH. If you want it to to work you should send mail to cvs-ghc@haskell.org
and ask what you can do to help (it might involve some GHC hacking).
I added 'pprSorry' that behaves like 'pprPanic' except it say sorry! instead
of panic!, and doesn't ask the user to report a bug.
Ian Lynagh [Thu, 28 Oct 2010 13:48:54 +0000 (13:48 +0000)]
Replace some exit(n) calls with stg_exit(n); fixes trac #4445
Also changed exitcode of -1 to 1 in hpc.
simonpj@microsoft.com [Thu, 28 Oct 2010 14:25:48 +0000 (14:25 +0000)]
Remove -ds-multi-tyvar static flag
It was always secret, and has now vanished as silently as it came
simonpj@microsoft.com [Thu, 28 Oct 2010 14:24:29 +0000 (14:24 +0000)]
Deprecate -fmethod-sharing, which no longer does anything
We can remove it altogether in GHC 7.2
simonpj@microsoft.com [Thu, 28 Oct 2010 14:21:50 +0000 (14:21 +0000)]
Do w/w *recursive* things even if they are small
A wibble to my previous change in WorkWrap, fixes simplrun010
simonpj@microsoft.com [Wed, 27 Oct 2010 19:37:29 +0000 (19:37 +0000)]
Two signficant changes to the simplifier
1. Do eta-expansion at let-bindings, not lambdas.
I have wanted to do this for a long time.
See Note [Eta-expanding at let bindings] in SimplUtils
2. Simplify the rather subtle way in which InlineRules (the
template captured by an INLINE pragma) was simplified.
Now, these templates are always simplified in "gentle"
mode only, and only INLINE things inline inside them.
See Note Note [Gentle mode], Note [Inlining in gentle mode]
and Note [RULEs enabled in SimplGently] in SimplUtils
simonpj@microsoft.com [Wed, 27 Oct 2010 18:56:30 +0000 (18:56 +0000)]
Yet another go at CoreArity
Amazingly, there were still Wrong Things in the arity analysis,
exposed by my fiddling with eta expansion.
I simplified the code, clarified the comments, added more examples,
and tidied it all up. I hope it's better this time.
simonpj@microsoft.com [Wed, 27 Oct 2010 18:42:35 +0000 (18:42 +0000)]
Buglet in tcIface, now that nested binders can have pragmas
This fix ties the knot for recursive groups properly
simonpj@microsoft.com [Wed, 27 Oct 2010 18:41:28 +0000 (18:41 +0000)]
Add strictness for raiseIO# primop
simonpj@microsoft.com [Wed, 27 Oct 2010 18:41:07 +0000 (18:41 +0000)]
Don't worker-wrapper INLINABLE things
See Note [Don't w/w INLINABLE things] in WorkWrap
This fixes a bug that Milan found.
Simon Marlow [Wed, 27 Oct 2010 12:11:32 +0000 (12:11 +0000)]
Refactoring and tidyup of HscMain and related things (also fix #1666)
While trying to fix #1666 (-Werror aborts too early) I decided to some
tidyup in GHC/DriverPipeline/HscMain.
- The GhcMonad overloading is gone from DriverPipeline and HscMain
now. GhcMonad is now defined in a module of its own, and only
used in the top-level GHC layer. DriverPipeline and HscMain
use the plain IO monad and take HscEnv as an argument.
- WarnLogMonad is gone. printExceptionAndWarnings is now called
printException (the old name is deprecated). Session no longer
contains warnings.
- HscMain has its own little monad that collects warnings, and also
plumbs HscEnv around. The idea here is that warnings are collected
while we're in HscMain, but on exit from HscMain (any function) we
check for warnings and either print them (via log_action, so IDEs
can still override the printing), or turn them into an error if
-Werror is on.
- GhcApiCallbacks is gone, along with GHC.loadWithLogger. Thomas
Schilling told me he wasn't using these, and I don't see a good
reason to have them.
- there's a new pure API to the parser (suggestion from Neil Mitchell):
parser :: String
-> DynFlags
-> FilePath
-> Either ErrorMessages (WarningMessages,
Located (HsModule RdrName))
Simon Marlow [Wed, 27 Oct 2010 11:10:03 +0000 (11:10 +0000)]
follow changes in the GHC API
Simon Marlow [Wed, 13 Oct 2010 18:43:22 +0000 (18:43 +0000)]
tweaks
Simon Marlow [Wed, 13 Oct 2010 18:43:00 +0000 (18:43 +0000)]
comment
simonpj@microsoft.com [Wed, 27 Oct 2010 16:29:22 +0000 (16:29 +0000)]
Warn (not error) for SPECIALISE pragmas without INLINE
See Note [SPECIALISE pragmas] in TcBinds. Fixes Trac #444.
Simon Marlow [Tue, 26 Oct 2010 12:29:06 +0000 (12:29 +0000)]
fix stage1_libs pseudo-target
Thomas Schilling [Thu, 21 Oct 2010 17:04:32 +0000 (17:04 +0000)]
Fix #4424. Allow `-hide-all-packages` to be set dynamically.
Michal Terepeta [Sun, 24 Oct 2010 17:41:34 +0000 (17:41 +0000)]
Fix whitespace and layout in PrelRules.
gwright@antiope.com [Tue, 26 Oct 2010 13:51:53 +0000 (13:51 +0000)]
Fix for #4318 (Linker failure on OS X 10.6)
This patch fixes two bugs in the Mach-O linker and adds debugging statements
to the same. The bugs:
1. The test for symbol->n_value == 0 is removed and replaced by a test of the
flag field. Checking the n_value field was just wrong; the value of a
symbol should only be examined when allocating space for a common block,
in which case the n_value field gives the size of the block. This bug
led to an infrequently occuring linker crash.
I believe the behavior of the linker now agrees with the intent of the
sketchy Apple documentation.
2. Jump islands were being filled with garbage instead of the the location
of the referenced symbol. This caused relocations of type X86_64_RELOC_GOT and
X86_64_RELOC_GOT_LOAD to eventually lead to crashes. The fix is simply to
look up the symbol.
Enough debug statements have been added to follow the operation of the Mach-O
linker while it loads modules. They are not yet as informative and well
organized as for ELF. Improving the debug statements will require some
reorganization of the code -- the Mach-O linker seems basically sound, but
is crying out for some refactoring and commenting.
Ian Lynagh [Tue, 26 Oct 2010 21:15:46 +0000 (21:15 +0000)]
Use removeDups to find top-level duplicate names
findDupsEq is quadratic, whereas removeDups is n log n.
Fixes T1969 regression.
Ian Lynagh [Tue, 26 Oct 2010 19:19:06 +0000 (19:19 +0000)]
Remove unnecessary imports
Ian Lynagh [Tue, 26 Oct 2010 14:54:45 +0000 (14:54 +0000)]
Add NoFoo form to the extensions list that dummy-ghc generates
simonpj@microsoft.com [Tue, 26 Oct 2010 11:15:47 +0000 (11:15 +0000)]
Fix a long-standing bug the float-out pass
We were failing to float out a binding that could be floated,
because of a confusion in the Lam case of floatExpr.
In investigating this I also discoverd that there is really
no point at all in giving a different level to variables in
a binding group, so I've now given them all the same (in
SetLevels.lvlLamBndrs
The overall difference is quite minor in a nofib run:
Program Size Allocs Runtime Elapsed
-------------------------------------------------------------
Min +0.0% -8.5% -28.4% -28.7%
Max +0.0% +0.7% -0.7% -1.1%
Geometric Mean +0.0% -0.0% -11.6% -11.8%
I don't trust those runtimes, but smaller is good! The 8.5%
improvement in allocation in fulsom, and seems real. The
0.7% allocation increase only happens in programs with
very small allocation. I tracked one down to a call of this form
GHC.IO.Handle.Internals.mkDuplexHandle5
= \ args -> GHC.IO.Handle.Internals.openTextEncoding1
mb_codec ha_type
(\mb_encoder mb_decoder -> blah)
With the new floater the argument of openTextEncoding1 becomes
(let lvl = .. in \mb_encoder mb_decoder -> blah)
And rightly so. However in fact this argument is a continuation
and hence is called once, so the floating is fruitless.
Roll on one-shot-function analysis (which I know how to do
but fail to get to!).
simonpj@microsoft.com [Tue, 31 Aug 2010 08:50:01 +0000 (08:50 +0000)]
Comments only
simonpj@microsoft.com [Tue, 26 Oct 2010 08:17:57 +0000 (08:17 +0000)]
Fix initialisation of strictness in the demand analyser
Previously, the demand analyser assumed that every binder
starts off with no strictness info. But now that we are
preserving strictness on nesting bindings in interface files,
that assumption is no longer correct, because an inlined function
might have a nested binding with strictness set.
So we need to know when we are in the initial sweep, so that we can
set the strictness to 'bottom'.
See Note [Initialising strictness]
simonpj@microsoft.com [Tue, 26 Oct 2010 08:07:54 +0000 (08:07 +0000)]
Don't look through SCC in exprIsConApp_maybe
By not taking account of SCC notes we were inadvertently
discarding some, which led to mis-counted entries with -O
Should fix (part of) Trac #4414
simonpj@microsoft.com [Tue, 26 Oct 2010 07:04:05 +0000 (07:04 +0000)]
Make isIrrefutableHsPat say True for existentials; fixes Trac #4439
At last. A bug that is really easy to fix.
simonpj@microsoft.com [Mon, 25 Oct 2010 15:28:17 +0000 (15:28 +0000)]
Serialise nested unfoldings across module boundaries
As Roman reported in #4428, nested let-bindings weren't
being recorded with their unfoldings. Needless to say,
fixing this had more knock-on effects than I expected.
simonpj@microsoft.com [Mon, 25 Oct 2010 15:26:22 +0000 (15:26 +0000)]
Do not (ever) use substExprSC in the simplifier
"Short-cut" substitution means "do nothing if the substitution
is empty". We *never* want do to that in the simplifier because
even though the substitution is empty, the in-scope set has
useful information:
* We get up-to-date unfoldings; and that in turn may
reduce the number of iterations of the simplifier
* We avoid space leaks, because failing to substitute may
hang on to old Ids from a previous iteration
(This is what was causing the late inlining of foo in
Trac #4428.)
simonpj@microsoft.com [Mon, 25 Oct 2010 15:12:36 +0000 (15:12 +0000)]
Use new showMultiLineString to fix Trac #4436
There is an accompanying patch for libraries
base
template-haskell
simonpj@microsoft.com [Mon, 25 Oct 2010 14:31:08 +0000 (14:31 +0000)]
For a non-recursive let, make sure we extend the value environment
This has been wrong for a long time. Fixes Trac #4431.
simonpj@microsoft.com [Mon, 25 Oct 2010 14:07:04 +0000 (14:07 +0000)]
instance Outputable IntMap
Ian Lynagh [Sun, 24 Oct 2010 13:40:52 +0000 (13:40 +0000)]
Make the ffi.h->ffitarget.h dep a proper dep, rather than an order-only dep
pho@cielonegro.org [Sun, 17 Oct 2010 11:33:21 +0000 (11:33 +0000)]
libffi: missing dependency on ffitarget.h
dist-install/build/ffi.h should have a dependency on ffitarget.h as *_stub.c requires it during the stage-2 build.
Ian Lynagh [Sat, 23 Oct 2010 21:04:42 +0000 (21:04 +0000)]
Remove the need to explicitly flatten the dynflags
Ian Lynagh [Sat, 23 Oct 2010 16:54:22 +0000 (16:54 +0000)]
Follow GHC.Bool/GHC.Types merge
Ian Lynagh [Sat, 23 Oct 2010 14:56:00 +0000 (14:56 +0000)]
Don't build packages that need TH if we are making a profiling compiler
You can't use TH with a profiling compiler.
Ian Lynagh [Sat, 23 Oct 2010 12:44:00 +0000 (12:44 +0000)]
OS X uninstaller: Pass create-links its argument
Ian Lynagh [Sat, 23 Oct 2010 00:09:51 +0000 (00:09 +0000)]
Tweak the OS X installer uninstaller script
Ian Lynagh [Fri, 22 Oct 2010 22:31:04 +0000 (22:31 +0000)]
Improve the OS X installer
Major changes are:
* Version number now includes full GHC version and arch
* Uninstaller copes with multiple versions
dimitris@microsoft.com [Fri, 22 Oct 2010 12:58:40 +0000 (12:58 +0000)]
Optimised the representation of Inert Sets to use Maps to get to the relevant inert constraint faster.
simonpj@microsoft.com [Fri, 22 Oct 2010 14:34:00 +0000 (14:34 +0000)]
Add rebindable syntax for if-then-else
There are two main changes
* New LANGUAGE option RebindableSyntax, which implies NoImplicitPrelude
* if-the-else becomes rebindable, with function name "ifThenElse"
(but case expressions are unaffected)
Thanks to Sam Anklesaria for doing most of the work here
simonpj@microsoft.com [Fri, 22 Oct 2010 07:24:05 +0000 (07:24 +0000)]
Lint should check for duplicate top-level bindings with same qualified name
This would have produced a more civilised error for Trac #4396
Ian Lynagh [Fri, 22 Oct 2010 13:40:24 +0000 (13:40 +0000)]
Fix unused import warning on OS X
Ian Lynagh [Thu, 21 Oct 2010 14:28:24 +0000 (14:28 +0000)]
Switch more uniqFromSupply+splitUniqSupply's to takeUniqFromSupply
Ian Lynagh [Thu, 21 Oct 2010 13:55:51 +0000 (13:55 +0000)]
Whitespace only
Ian Lynagh [Thu, 21 Oct 2010 13:44:04 +0000 (13:44 +0000)]
Whitespace only
Ian Lynagh [Thu, 21 Oct 2010 13:41:33 +0000 (13:41 +0000)]
Whitespace only
Ian Lynagh [Thu, 21 Oct 2010 12:29:42 +0000 (12:29 +0000)]
Windows installer improvements from Claus
- add link to inno setup docs, so readers don't have to guess what
ghc.iss might be
- add Task section, and associated most Registry actions with separate
(sub)tasks, so that file associations, default action, and PATH
setting can be optional
- copy license file into doc directory
- install icon file again, so that DefaultIcon is no longer a dangling
pointer (#4352)
- only delete ghc_haskell key if empty (in case there were other tools
using it)
- add versioned GHCi to right-click menu (to allow for multiple tool installs)
simonpj@microsoft.com [Thu, 21 Oct 2010 17:03:24 +0000 (17:03 +0000)]
Fix Trac #4396, by localising pattern binders in the desugarer
See Note [Localise pattern binders]
simonpj@microsoft.com [Thu, 21 Oct 2010 17:02:32 +0000 (17:02 +0000)]
White space only
simonpj@microsoft.com [Thu, 21 Oct 2010 17:02:22 +0000 (17:02 +0000)]
Add an assertion
Ian Lynagh [Thu, 21 Oct 2010 12:14:54 +0000 (12:14 +0000)]
Use takeUniqFromSupply in ByteCodeGen
Ian Lynagh [Thu, 21 Oct 2010 12:10:59 +0000 (12:10 +0000)]
Fix some whitespace
Ian Lynagh [Thu, 21 Oct 2010 12:08:53 +0000 (12:08 +0000)]
Use takeUniqFromSupply in emitProcWithConvention
We were using the supply's unique, and then passing the same supply to
initUs_, which sounds like a bug waiting to happen.
Ian Lynagh [Thu, 21 Oct 2010 12:03:04 +0000 (12:03 +0000)]
Use takeUniqFromSupply in IfaceEnv
This is a little nicer than having to explicitly split supplies and
throw half of them away.
Ian Lynagh [Thu, 21 Oct 2010 11:58:22 +0000 (11:58 +0000)]
Define takeUniqFromSupply
Ian Lynagh [Thu, 21 Oct 2010 11:56:00 +0000 (11:56 +0000)]
Remove some extraneous whitespace
Ian Lynagh [Thu, 21 Oct 2010 11:34:04 +0000 (11:34 +0000)]
Add a comment on why some seq's are done
simonpj@microsoft.com [Thu, 21 Oct 2010 10:06:40 +0000 (10:06 +0000)]
Tidy up RuntimeUnkSkols a bit more
simonpj@microsoft.com [Thu, 21 Oct 2010 08:54:20 +0000 (08:54 +0000)]
Fix haddock markup
simonpj@microsoft.com [Thu, 21 Oct 2010 08:54:02 +0000 (08:54 +0000)]
Improve rule checking, to fix panic Trac #4398
Lots of comments with decomposeRuleLhs
simonpj@microsoft.com [Thu, 21 Oct 2010 08:50:30 +0000 (08:50 +0000)]
Improve the simple expression optimiser so it does simple beta reduction
Reiner Pope [Sun, 10 Oct 2010 13:17:20 +0000 (13:17 +0000)]
Template Haskell: add view patterns (Trac #2399)
simonpj@microsoft.com [Thu, 21 Oct 2010 07:08:37 +0000 (07:08 +0000)]
Tidy-up sweep, following the Great Skolemisation Simplification
Ian Lynagh [Wed, 20 Oct 2010 15:19:52 +0000 (15:19 +0000)]
Fix haddock markup
Ian Lynagh [Wed, 20 Oct 2010 15:16:36 +0000 (15:16 +0000)]
Tweak the haddock rules; no functional change
Ian Lynagh [Wed, 20 Oct 2010 14:37:10 +0000 (14:37 +0000)]
Don't seq unfoldings
We generate intermediate unfoldings which are just thrown away, so
evaluating them is a waste of time.
Ian Lynagh [Wed, 20 Oct 2010 13:15:39 +0000 (13:15 +0000)]
Avoid hanging on to old unfoldings; fixes #4367 (compiler space regression)
simonpj@microsoft.com [Wed, 20 Oct 2010 13:24:38 +0000 (13:24 +0000)]
Comments and layout only
Ian Lynagh [Wed, 20 Oct 2010 10:47:59 +0000 (10:47 +0000)]
Look for sources in Cabal's autogen directory too
Ian Lynagh [Wed, 20 Oct 2010 10:47:39 +0000 (10:47 +0000)]
Follow Cabal change: Use usedExtensions rather than extensions
Simon Marlow [Wed, 20 Oct 2010 12:31:16 +0000 (12:31 +0000)]
fix markup
Simon Marlow [Wed, 20 Oct 2010 12:31:06 +0000 (12:31 +0000)]
remove xref to hasktags