Ian Lynagh [Sat, 22 Jan 2011 22:45:32 +0000 (22:45 +0000)]
Use := when assigning the result of $(wildcard ...)
Avoids repeated evaluations of things that need system calls etc
Ian Lynagh [Sat, 22 Jan 2011 19:09:28 +0000 (19:09 +0000)]
Simplify the build system, and remove 2 phases
From
http://hackage.haskell.org/trac/ghc/wiki/Building/Architecture/Idiom/PhaseOrdering
Phase 0:
Includes: package-data.mk files for things built by the
bootstrapping compiler.
Builds: the dependency files for hsc2hs and genprimopcode. We need
to do this now, as hsc2hs needs to be buildable in phase 1's
includes (so that we can make the hpc library's .hs source
files, which in turn is necessary for making its dependency
files), and genprimopcode needs to be buildable in phase 1's
includes (so that we can make the primop-*.hs-incl files,
which are sources for the stage1 compiler library, and thus
necessary for making its dependency files).
Phase 1:
Includes: dependency files for things built by the bootstrapping
compiler.
Builds: package-data.mk files for everything else. Note that this
requires configuring the packages, which means telling cabal
which ghc to use, and thus the stage1 compiler gets built
during this phase.
Phase "":
Includes: dependency files for everything else.
Builds: Everything else.
Ian Lynagh [Fri, 21 Jan 2011 23:05:52 +0000 (23:05 +0000)]
Manually control more of the Cabal flags for the compiler and ghc packages
For some reason the Windows HEAD builder has started thinking the ghci
flag should be on in stage 1. This should fix it, and generally make
things a little more resilient.
Ian Lynagh [Fri, 21 Jan 2011 23:02:45 +0000 (23:02 +0000)]
Remove some hardcoded makefile settings
Now that we used cabal to configure the ghc-bin package they are no
longer needed.
Simon Marlow [Wed, 19 Jan 2011 14:06:33 +0000 (14:06 +0000)]
tweak newArray# documentation again
Ian Lynagh [Thu, 20 Jan 2011 00:03:08 +0000 (00:03 +0000)]
Fix OSTYPE test
simonpj@microsoft.com [Wed, 19 Jan 2011 22:22:47 +0000 (22:22 +0000)]
Comments only
simonpj@microsoft.com [Thu, 13 Jan 2011 15:50:23 +0000 (15:50 +0000)]
Add OSTYPE build-system variable, and use it
The use is in install.mk.in, where we need to know when
we're on Cygwin.
This fixes the build on my Windows box, where I have
both Msys and Cygwin.
Ian Lynagh [Wed, 19 Jan 2011 22:23:59 +0000 (22:23 +0000)]
Remove an extraneous comma that stopped ghc-cabal from building
Ian Lynagh [Wed, 19 Jan 2011 22:15:45 +0000 (22:15 +0000)]
Move some make variables around
Ian Lynagh [Wed, 19 Jan 2011 20:33:05 +0000 (20:33 +0000)]
Remove a debugging 'info'
Ian Lynagh [Wed, 19 Jan 2011 20:32:29 +0000 (20:32 +0000)]
Move the PACKAGE_MAGIC evaluation inside package-data.mk
Ian Lynagh [Wed, 19 Jan 2011 17:23:10 +0000 (17:23 +0000)]
Fix libraries/index.html's haddock dependency on Windows
Ian Lynagh [Wed, 19 Jan 2011 13:06:29 +0000 (13:06 +0000)]
Add configure phases for the stage 3 compiler
Marco Silva [Tue, 18 Jan 2011 22:23:52 +0000 (22:23 +0000)]
Include kfreebsdgnu in the list of Target Platforms.
Edward Z. Yang [Tue, 18 Jan 2011 22:18:34 +0000 (22:18 +0000)]
Fix documentation bug: newArray# accepts word count, not byte count.
Ian Lynagh [Tue, 18 Jan 2011 16:42:25 +0000 (16:42 +0000)]
Update the location of libffi.dll.a
As far as I can see this has been wrong for some time, but only bit
recently.
Ian Lynagh [Mon, 17 Jan 2011 21:46:32 +0000 (21:46 +0000)]
Update the generics docs; pointed out by Christian Maeder
Ian Lynagh [Mon, 17 Jan 2011 18:48:33 +0000 (18:48 +0000)]
ghc-cabal now adds the language flag being used
This means we get -XHaskell98 added to the list of flags, just like we
would if we were building with Cabal.
Ian Lynagh [Mon, 17 Jan 2011 20:05:40 +0000 (20:05 +0000)]
Reinstate the OS X flags in the LDFLAGS etc variables
I expect this will fix:
http://www.haskell.org/pipermail/cvs-ghc/2011-January/059098.html
Ian Lynagh [Mon, 17 Jan 2011 20:04:27 +0000 (20:04 +0000)]
Add NondecreasingIndentation extension to ghc-bin
Ian Lynagh [Mon, 17 Jan 2011 19:17:14 +0000 (19:17 +0000)]
Change an "if ... else return ()" into a "when"
Ian Lynagh [Mon, 17 Jan 2011 19:06:10 +0000 (19:06 +0000)]
Add NondecreasingIndentation to the list of extensions in ghc-pkg
Ian Lynagh [Mon, 17 Jan 2011 19:04:04 +0000 (19:04 +0000)]
Add NondecreasingIndentation to the list of extensions in the ghc package
Ian Lynagh [Mon, 17 Jan 2011 17:30:10 +0000 (17:30 +0000)]
Fix deps on the ghc package
The standard libraries/$depname scheme doesn't apply, so we need to
handle it specially.
Ian Lynagh [Mon, 17 Jan 2011 12:11:55 +0000 (12:11 +0000)]
Tidy up gmp cleaning
Ian Lynagh [Sun, 16 Jan 2011 19:49:19 +0000 (19:49 +0000)]
Remove redundant libraries/cabal-bin.hs
Ian Lynagh [Sun, 16 Jan 2011 18:03:06 +0000 (18:03 +0000)]
Turn off dtrace unless you override USE_DTRACE
There are problems with dtrace on 64bit 10.5. For now at least, we
just turn dtrace off unless you override USE_DTRACE
Ian Lynagh [Sun, 16 Jan 2011 17:52:18 +0000 (17:52 +0000)]
Simplify a bit of makefile
Ian Lynagh [Sun, 16 Jan 2011 17:34:59 +0000 (17:34 +0000)]
Tweak Windows phase ordering
Ian Lynagh [Sun, 16 Jan 2011 15:56:27 +0000 (15:56 +0000)]
Handle dependencies of programs on libraries correctly
Ian Lynagh [Sun, 16 Jan 2011 15:12:30 +0000 (15:12 +0000)]
It's not clear if LDFLAGS flags will be given to gcc or ld,
and they accept different flags, so for now do nothing
Ian Lynagh [Sun, 16 Jan 2011 15:09:01 +0000 (15:09 +0000)]
Fix cross-package dependency generation on Windows
Ian Lynagh [Sun, 16 Jan 2011 15:08:26 +0000 (15:08 +0000)]
Add some Windows-only CONFIGURE_PHASEs
Ian Lynagh [Sun, 16 Jan 2011 02:00:35 +0000 (02:00 +0000)]
Simplify, and future-proof, a dependency in the build system
Ian Lynagh [Sun, 16 Jan 2011 01:59:43 +0000 (01:59 +0000)]
Remove an unnecessary phase, and some unnecessary deps
now that cross-package deps are tracked correctly.
Ian Lynagh [Sun, 16 Jan 2011 01:57:14 +0000 (01:57 +0000)]
We can now pass -include-pkg-deps to the bootstrapping compiler
Ian Lynagh [Sun, 16 Jan 2011 00:31:54 +0000 (00:31 +0000)]
Remove some flags that are redundant now GHC gets configured by Cabal
Ian Lynagh [Sun, 16 Jan 2011 00:31:04 +0000 (00:31 +0000)]
Change some HC_OPTS var handling
In particular, this means ghc gets built with -rtsopt, -threaded, etc again.
Ian Lynagh [Sun, 16 Jan 2011 00:28:03 +0000 (00:28 +0000)]
Remove some unnecessary workarounds
We can now rely on cross-package deps working properly, as we require
GHC 6.12.
Ian Lynagh [Sun, 16 Jan 2011 00:11:21 +0000 (00:11 +0000)]
Tidy up a bit
Ian Lynagh [Sat, 15 Jan 2011 23:19:27 +0000 (23:19 +0000)]
Build system improvements
We no longer use dummy-ghc; instead we don't configure most packages
until the stage1 compiler is available.
We also now use Cabal for building the ghc-bin package.
There are a couple more sanity checks too.
Ian Lynagh [Sat, 15 Jan 2011 21:41:49 +0000 (21:41 +0000)]
Whitespace tweak
Ian Lynagh [Sat, 15 Jan 2011 20:21:04 +0000 (20:21 +0000)]
Fix libffi build rules
Fixes a rare race when both libHSffi.a and libHSffi_p.a were being built
at the same time:
"cp" libffi/dist-install/build/libffi.a libffi/dist-install/build/libHSffi.a
"cp" libffi/dist-install/build/libffi.a libffi/dist-install/build/libHSffi.a
"cp" libffi/dist-install/build/libffi.so libffi/dist-install/build/libHSffi-ghc7.1.
20110115.so
cp: cannot create regular file `libffi/dist-install/build/libHSffi.a': File exists
simonpj@microsoft.com [Fri, 14 Jan 2011 16:32:27 +0000 (16:32 +0000)]
Fix Trac #4874: specialisation of INLINABLE things
Johan discovered that when INLINABLE things are specialised
bad things can happen. This patch implements a hack -- but
it's a simple hack and it solves the problem.
See Note [Inline specialisations].
The hack part is that really INLINABLE should not cause *any* loss
optimisation, and it does; see Note [Don't w/w INLINABLE things] in
WorkWrap.
simonpj@microsoft.com [Fri, 14 Jan 2011 16:29:59 +0000 (16:29 +0000)]
Comments only
simonpj@microsoft.com [Fri, 14 Jan 2011 16:29:27 +0000 (16:29 +0000)]
Fix a buglet in postInlineUnconditionally
Under obscure circumstances (actually only shown up when fixing something
else) it was possible for a variable binding to be discarded although
it was still used. See Note [Top level and postInlineUnconditionally]
Simon Marlow [Fri, 14 Jan 2011 14:24:06 +0000 (14:24 +0000)]
cope with empty libraries/stamp directory (in git repo)
Simon Marlow [Fri, 14 Jan 2011 14:23:53 +0000 (14:23 +0000)]
add .gitignore
Edward Z. Yang [Thu, 13 Jan 2011 13:06:54 +0000 (13:06 +0000)]
Fix longstanding bug in C-- inlining for functions calls.
Simon Marlow [Thu, 13 Jan 2011 13:11:47 +0000 (13:11 +0000)]
fix for remote repos without -r
Simon Marlow [Thu, 13 Jan 2011 11:17:33 +0000 (11:17 +0000)]
add a version of packages that stores all the repos in git
Simon Marlow [Thu, 13 Jan 2011 11:16:54 +0000 (11:16 +0000)]
add the -r flag from darcs-all
simonpj@microsoft.com [Thu, 13 Jan 2011 11:14:21 +0000 (11:14 +0000)]
Make Template Haskell classInstances function return [ClassInstance]
This is a recently-introduce function, which was returning
a [Name], being the names of the dfuns. But what you really
want (obviously!) is the ClassInstances, and we have a TH type
for that.
This is an API change, so don't merge into GHC 7.0. But it's
a new part of TH which is still settling down.
Fixes Trac #4863.
simonpj@microsoft.com [Thu, 13 Jan 2011 11:12:33 +0000 (11:12 +0000)]
Improve the finder's error messages
I'd done all the work to add fuzzy-match suggestions, but they
weren't really being used! Here's what you get now
module Foo where
import Data.Lst
Foo.hs:3:1:
Failed to load interface for `Data.Lst'
Perhaps you meant
Data.List (from base)
Data.List (needs flag -package haskell2010-1.0.0.0)
Data.Int (needs flag -package haskell2010-1.0.0.0)
Use -v to see a list of the files searched for.
simonpj@microsoft.com [Thu, 13 Jan 2011 09:39:31 +0000 (09:39 +0000)]
White space only
simonpj@microsoft.com [Wed, 12 Jan 2011 17:07:19 +0000 (17:07 +0000)]
Produce an error message, not a crash, for HsOpApp with non-var operator
Fixes Trac #4877.
Simon Marlow [Wed, 12 Jan 2011 16:02:24 +0000 (16:02 +0000)]
update to work with current packages file format
Simon Marlow [Fri, 7 Jan 2011 16:35:41 +0000 (16:35 +0000)]
In configure, test that GHC generates code for the correct platform (#4819)
Patch supplied by the bug reporter, tidied up by me.
$ ./configure --with-ghc=$HOME/fp/bin/i386-unknown-linux/ghc --build=x86_64-unknown-linux
checking for gfind... no
checking for find... /usr/bin/find
checking for sort... /usr/bin/sort
checking for GHC version date... inferred 7.1.
20110107
checking version of ghc... 7.0.1
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
Host platform inferred as: i386-unknown-linux
Target platform inferred as: i386-unknown-linux
This GHC (/home/simonmar/fp/bin/i386-unknown-linux/ghc) does not generate code for the build platform
GHC target platform : i386-unknown-linux
Desired build platform : x86_64-unknown-linux
simonpj@microsoft.com [Wed, 12 Jan 2011 14:56:04 +0000 (14:56 +0000)]
Major refactoring of the type inference engine
This patch embodies many, many changes to the contraint solver, which
make it simpler, more robust, and more beautiful. But it has taken
me ages to get right. The forcing issue was some obscure programs
involving recursive dictionaries, but these eventually led to a
massive refactoring sweep.
Main changes are:
* No more "frozen errors" in the monad. Instead "insoluble
constraints" are now part of the WantedConstraints type.
* The WantedConstraint type is a product of bags, instead of (as
before) a bag of sums. This eliminates a good deal of tagging and
untagging.
* This same WantedConstraints data type is used
- As the way that constraints are gathered
- As a field of an implication constraint
- As both argument and result of solveWanted
- As the argument to reportUnsolved
* We do not generate any evidence for Derived constraints. They are
purely there to allow "impovement" by unifying unification
variables.
* In consequence, nothing is ever *rewritten* by a Derived
constraint. This removes, by construction, all the horrible
potential recursive-dictionary loops that were making us tear our
hair out. No more isGoodRecEv search either. Hurrah!
* We add the superclass Derived constraints during canonicalisation,
after checking for duplicates. So fewer superclass constraints
are generated than before.
* Skolem tc-tyvars no longer carry SkolemInfo. Instead, the
SkolemInfo lives in the GivenLoc of the Implication, where it
can be tidied, zonked, and substituted nicely. This alone is
a major improvement.
* Tidying is improved, so that we tend to get t1, t2, t3, rather
than t1, t11, t111, etc
Moreover, unification variables are always printed with a digit
(thus a0, a1, etc), so that plain 'a' is available for a skolem
arising from a type signature etc. In this way,
(a) We quietly say which variables are unification variables,
for those who know and care
(b) Types tend to get printed as the user expects. If he writes
f :: a -> a
f = ...blah...
then types involving 'a' get printed with 'a', rather than
some tidied variant.
* There are significant improvements in error messages, notably
in the "Cannot deduce X from Y" messages.
Ian Lynagh [Tue, 11 Jan 2011 19:48:38 +0000 (19:48 +0000)]
Fix installation on cygwin
simonpj@microsoft.com [Mon, 10 Jan 2011 11:03:51 +0000 (11:03 +0000)]
Do dependency analysis when kind-checking type declarations
This patch fixes Trac #4875. The main point is to do dependency
analysis on type and class declarations, and kind-check them in
dependency order, so as to improve error messages.
This patch means that a few programs that would typecheck before won't
typecheck any more; but before we were (naughtily) going beyond
Haskell 98 without any language-extension flags, and Trac #4875
convinces me that doing so is a Bad Idea.
Here's an example that won't typecheck any more
data T a b = MkT (a b)
type F k = T k Maybe
If you look at T on its own you'd default 'a' to kind *->*;
and then kind-checking would fail on F.
But GHC currently accepts this program beause it looks at
the *occurrences* of T.
simonpj@microsoft.com [Mon, 10 Jan 2011 10:56:47 +0000 (10:56 +0000)]
Move imports around (no change in behaviour)
simonpj@microsoft.com [Fri, 7 Jan 2011 10:28:55 +0000 (10:28 +0000)]
Make fuzzy matching a little less eager for short identifiers
For single-character identifiers we now don't make any suggestions
See comments in Util.fuzzyLookup
simonpj@microsoft.com [Wed, 5 Jan 2011 00:27:12 +0000 (00:27 +0000)]
Fix Trac #4870: get the inlining for an imported INLINABLE Id
We need the unfolding even for a *recursive* function (indeed
that's the point) and I was using the wrong function to get it
(idUnfolding rather than realIdUnfolding).
Ian Lynagh [Sun, 9 Jan 2011 18:11:58 +0000 (18:11 +0000)]
Rejig the includes/ installation rules
They're a little nicer now, and a regression in the cygwin build is
fixed (the $i in the destination wasn't surviving being passed through
cygpath).
Ian Lynagh [Sat, 8 Jan 2011 17:16:35 +0000 (17:16 +0000)]
Make DESTDIR an absolute path when installing; fixes #4883
Ian Lynagh [Sat, 8 Jan 2011 14:40:49 +0000 (14:40 +0000)]
Add utils/ghc-cabal/Makefile
Ian Lynagh [Sat, 8 Jan 2011 13:00:47 +0000 (13:00 +0000)]
Remove redundant import
Michal Terepeta [Tue, 30 Nov 2010 21:15:05 +0000 (21:15 +0000)]
Improve error message of :set in ghci (ticket #4190).
Michal Terepeta [Sat, 27 Nov 2010 21:13:38 +0000 (21:13 +0000)]
Improve error message when importing data constructors (ticket #4058).
Simon Marlow [Fri, 7 Jan 2011 12:40:42 +0000 (12:40 +0000)]
catch SIGTSTP and save/restore terminal settings (#4460)
As far as I can tell, it is the responsibility of the program to save
and restore its own terminal settings across a suspend/foreground, the
shell doesn't do it (which seems odd). So I've added a signal handler
for SIGTSTP to the RTS which will save and restore the terminal
settings iff we modified them with hSetBuffering or hSetEcho (we
already restore them at exit time in these cases).
Simon Marlow [Fri, 7 Jan 2011 09:42:36 +0000 (09:42 +0000)]
comment updates
Ian Lynagh [Thu, 6 Jan 2011 22:30:30 +0000 (22:30 +0000)]
On Cygwin, use a Cygwin-style path for /bin/install's destination
cygwin's /bin/install doesn't set file modes correctly if the
destination path is a C: style path:
$ /bin/install -c -m 644 foo /cygdrive/c/cygwin/home/ian/foo2
$ /bin/install -c -m 644 foo c:/cygwin/home/ian/foo3
$ ls -l foo*
-rw-r--r-- 1 ian None 0 2011-01-06 18:28 foo
-rw-r--r-- 1 ian None 0 2011-01-06 18:29 foo2
-rwxrwxrwx 1 ian None 0 2011-01-06 18:29 foo3
This causes problems for bindisttest/checkBinaries.sh which then
thinks that e.g. the userguide HTML files are binaries.
We therefore use a /cygdrive path if we are on cygwin
Ian Lynagh [Thu, 6 Jan 2011 14:37:07 +0000 (14:37 +0000)]
Fix mkUserGuidePart program name on Windows
Simon Marlow [Thu, 6 Jan 2011 15:24:02 +0000 (15:24 +0000)]
add comment to remind people to update driver/gcc/gcc.c
Simon Marlow [Thu, 6 Jan 2011 13:38:34 +0000 (13:38 +0000)]
use Win32 CreateProcess() rather than mingw spawnv() (#4531)
Simon Marlow [Thu, 6 Jan 2011 13:37:29 +0000 (13:37 +0000)]
update paths now that we upgraded gcc to 4.5.0
Simon Marlow [Thu, 6 Jan 2011 09:31:52 +0000 (09:31 +0000)]
fix markup
Simon Marlow [Wed, 5 Jan 2011 15:45:48 +0000 (15:45 +0000)]
fix up multi-line GHCi patch (#4316)
Vivian McPhail [Fri, 5 Nov 2010 05:13:08 +0000 (05:13 +0000)]
multiline commands in GHCi #4316
This patch adds support for multiline commands in GHCi.
The first line of input is lexed. If there is an active
layout context once the lexer reaches the end of file, the
user is prompted for more input.
Multiline input is exited by an empty line and can be escaped
with a user interrupt.
Multiline mode is toggled with `:set +m`
Ian Lynagh [Wed, 5 Jan 2011 18:30:11 +0000 (18:30 +0000)]
Replace a #if with a Haskell conditional
Ian Lynagh [Wed, 5 Jan 2011 17:11:24 +0000 (17:11 +0000)]
Whitespace only in X86.Ppr
naur@post11.tele.dk [Sun, 19 Dec 2010 21:35:55 +0000 (21:35 +0000)]
Fix error compiling AsmCodeGen.lhs for PPC Mac (unused makeFar addr)
Ian Lynagh [Tue, 4 Jan 2011 22:00:13 +0000 (22:00 +0000)]
Define cTargetArch and start to use it rather than ifdefs
Using Haskell conditionals means the compiler sees all the code, so
there should be less rot of code specific to uncommon arches. Code
for other platforms should still be optimised away, although if we want
to support targetting other arches then we'll need to compile it
for-real anyway.
naur@post11.tele.dk [Sun, 19 Dec 2010 21:25:30 +0000 (21:25 +0000)]
Fix error compiling AsmCodeGen.lhs for PPC Mac (rtsPackageId)
Ian Lynagh [Tue, 4 Jan 2011 21:02:50 +0000 (21:02 +0000)]
Rename the c*Platform variables to c*PlatformString
gwright@antiope.com [Tue, 21 Dec 2010 13:32:33 +0000 (13:32 +0000)]
Fix #4829 (build does not respect --with-gcc option)
This patch fixes what seems to be the last problem with the --with-gcc
option. On OS X, we need to pass the path to gcc to dtrace as the
preprocessor. (Internally, dtrace on OS X sets the default preprocessor
to /usr/bin/gcc.) ATM, dtrace is only supported on OS X, so we don't
need any conditionalization. If dtrace is ported to other platforms,
we might need to change this. However, usage on other platforms will
probably be similar to OS X, since many of Apple's changes are to
use the gnu toolchain instead of the Sun toolchain.
Matthias Kilian [Fri, 31 Dec 2010 19:23:43 +0000 (19:23 +0000)]
Drop a seven years old workaround for happy
Ian Lynagh [Mon, 20 Dec 2010 17:35:20 +0000 (17:35 +0000)]
Add gcc and ld flags to --info output
simonpj@microsoft.com [Fri, 24 Dec 2010 08:25:20 +0000 (08:25 +0000)]
Fix Trac #4525: report type errors in terms of the immediate type synonym
This small change means that if you have
type Age = Int
and you try to unify Age and Bool, you'll get a complaint about
not matching Age and Bool, rather than Int and Bool. See the notes
with Trac #4525
simonpj@microsoft.com [Fri, 24 Dec 2010 08:23:10 +0000 (08:23 +0000)]
Comments only
simonpj@microsoft.com [Wed, 22 Dec 2010 17:54:00 +0000 (17:54 +0000)]
Implement fuzzy matching for the Finder
..so that you get a more helpful message when
you mis-spell a module name in an 'import'.
Validates, but not fully tested.
Based on Max's patch in Trac #2442, but heavily refactored.
simonpj@microsoft.com [Wed, 22 Dec 2010 17:53:06 +0000 (17:53 +0000)]
Implement fuzzy matching for the renamer
...so that you get helpful suggestions when you mis-spell a name
Based on Max's patch in Trac #2442, but heavily refactored.
simonpj@microsoft.com [Wed, 22 Dec 2010 17:51:24 +0000 (17:51 +0000)]
Add fuzzyLookup, a variant of fuzzyMatch
Plus, I changed quite a bit of layout to make the lines shorter.
simonpj@microsoft.com [Wed, 22 Dec 2010 17:50:01 +0000 (17:50 +0000)]
White space only
simonpj@microsoft.com [Wed, 22 Dec 2010 17:49:50 +0000 (17:49 +0000)]
Layout and white space only
simonpj@microsoft.com [Wed, 22 Dec 2010 13:22:10 +0000 (13:22 +0000)]
Tidy up rebindable syntax for MDo
For a long time an 'mdo' expression has had a SyntaxTable
attached to it. However, we're busy deprecating SyntaxTables
in favour of rebindable syntax attached to individual Stmts,
and MDoExpr was totally inconsistent with DoExpr in this
regard.
This patch tidies it all up. Now there's no SyntaxTable on
MDoExpr, and 'modo' is generally handled much more like 'do'.
There is resulting small change in behaviour: now MonadFix is
required only if you actually *use* recursion in mdo. This
seems consistent with the implicit dependency analysis that
is done for mdo.
Still to do:
* Deal with #4148 (this patch is on the way)
* Get rid of the last remaining SyntaxTable on HsCmdTop
simonpj@microsoft.com [Wed, 22 Dec 2010 13:11:56 +0000 (13:11 +0000)]
Make the occurrence analyser track preInlineUnconditionally
This fixes a somewhat obscure situation in which an
over-optimistic use of "occurs once" led to an infinite
sequence of simplifier iterations. Se Note [Cascading inlines]
for the details.
This showed up when compiling rather large DPH programs, which
run lots of iterations of the simplifier, which in turn made
compilation take much longer than necessary.
simonpj@microsoft.com [Wed, 22 Dec 2010 13:08:54 +0000 (13:08 +0000)]
Make mkDFunUnfolding more robust
It now uses tcSplitDFunTy, which is designed for the purpose and
allows arbitrary argument types to the dfun, rather than
tcSplitSigmaTy. This generality is used in DPH, which has
internally-generated dfuns with impliciation-typed arguments.
To do this I had to make tcSplitDFunTy return the number of
arguments, so there are some minor knock-on effects in other
modules.