simonpj@microsoft.com [Thu, 5 Jun 2008 12:36:12 +0000 (12:36 +0000)]
Add non-recursive let-bindings for types
This patch adds to Core the ability to say
let a = Int in <body>
where 'a' is a type variable. That is: a type-let.
See Note [Type let] in CoreSyn.
* The binding is always non-recursive
* The simplifier immediately eliminates it by substitution
So in effect a type-let is just a delayed substitution. This is convenient
in a couple of places in the desugarer, one existing (see the call to
CoreTyn.mkTyBind in DsUtils), and one that's in the next upcoming patch.
The first use in the desugarer was previously encoded as
(/\a. <body>) Int
rather that eagerly substituting, but that was horrid because Core Lint
had do "know" that a=Int inside <body> else it would bleat. Expressing
it directly as a 'let' seems much nicer.
simonpj@microsoft.com [Wed, 4 Jun 2008 15:02:07 +0000 (15:02 +0000)]
Fix Trac #2339: reify (mkName "X")
simonpj@microsoft.com [Wed, 4 Jun 2008 14:51:15 +0000 (14:51 +0000)]
Fix Trac #2310: result type signatures are not supported any more
We have not supported "result type signatures" for some time, but
using one in the wrong way caused a crash. This patch tidies it up.
simonpj@microsoft.com [Wed, 4 Jun 2008 14:40:49 +0000 (14:40 +0000)]
Sort modules and packages in debug print (reduce test wobbles)
This affects only the debug print TcRnDriver.pprTcGblEnv, and eliminates
test-suite wobbling (affected me for tc168, tc231)
Simon Marlow [Wed, 4 Jun 2008 11:30:02 +0000 (11:30 +0000)]
Fix #2334: tyvar binders can have Names inside (equality predicates)
Simon Marlow [Wed, 4 Jun 2008 10:54:58 +0000 (10:54 +0000)]
fix pointer tagging bug in removeIndirections (fixes stableptr003)
Simon Marlow [Wed, 4 Jun 2008 09:36:53 +0000 (09:36 +0000)]
Fix unreg build
Simon Marlow [Wed, 4 Jun 2008 09:12:44 +0000 (09:12 +0000)]
tiny tweak to the stack squeezing heuristic (fixes cg060)
Manuel M T Chakravarty [Wed, 4 Jun 2008 02:13:21 +0000 (02:13 +0000)]
MacOS installer: don't quote XCODE_EXTRA_CONFIGURE_ARGS
Manuel M T Chakravarty [Wed, 4 Jun 2008 02:01:55 +0000 (02:01 +0000)]
MacOS installer: terminate build on intermediate failure
simonpj@microsoft.com [Tue, 3 Jun 2008 13:46:45 +0000 (13:46 +0000)]
Fix Trac #2331 (error message suggestion)
simonpj@microsoft.com [Fri, 30 May 2008 15:51:37 +0000 (15:51 +0000)]
Improve documentation of RULES
simonpj@microsoft.com [Fri, 30 May 2008 13:33:07 +0000 (13:33 +0000)]
Improve documentation for INLINE pragma
Simon Marlow [Tue, 3 Jun 2008 11:20:30 +0000 (11:20 +0000)]
add debugDumpTcRn and use it for some debugging output
Simon Marlow [Tue, 3 Jun 2008 10:54:31 +0000 (10:54 +0000)]
Turn "NOTE: Simplifier still going..." message into a WARN()
Simon Marlow [Tue, 3 Jun 2008 09:45:46 +0000 (09:45 +0000)]
remove the "expanding to size" messages
Simon Marlow [Tue, 3 Jun 2008 08:29:24 +0000 (08:29 +0000)]
New flag: -dno-debug-output
From the docs:
<para>Suppress any unsolicited debugging output. When GHC
has been built with the <literal>DEBUG</literal> option it
occasionally emits debug output of interest to developers.
The extra output can confuse the testing framework and
cause bogus test failures, so this flag is provided to
turn it off.</para>
Simon Marlow [Tue, 3 Jun 2008 08:20:41 +0000 (08:20 +0000)]
-no-link-chk has been a no-op since at least 6.0; remove it
Simon Marlow [Tue, 3 Jun 2008 08:19:04 +0000 (08:19 +0000)]
-no-link-chk is a relic
simonpj@microsoft.com [Tue, 3 Jun 2008 12:12:08 +0000 (12:12 +0000)]
Shorten debug messages
simonpj@microsoft.com [Mon, 2 Jun 2008 13:06:11 +0000 (13:06 +0000)]
Fix minor layout issue (whitespace only)
Manuel M T Chakravarty [Mon, 2 Jun 2008 07:07:05 +0000 (07:07 +0000)]
MacOS installer: clean up Xcode project spec
Simon Marlow [Mon, 2 Jun 2008 14:49:45 +0000 (14:49 +0000)]
Fix validate: -Werror bug in patch "Replacing copyins and copyouts..."
Simon Marlow [Mon, 2 Jun 2008 14:37:26 +0000 (14:37 +0000)]
FIX #2231: add missing stack check when applying a PAP
This program makes a PAP with 203 arguments :-)
Simon Marlow [Mon, 2 Jun 2008 13:38:01 +0000 (13:38 +0000)]
-fforce-recomp should be unnecessary for Main.hs in stage[23] now
dias@eecs.harvard.edu [Mon, 2 Jun 2008 10:31:56 +0000 (10:31 +0000)]
Missing import in C-- parser
Simon Marlow [Fri, 30 May 2008 14:53:49 +0000 (14:53 +0000)]
Fix a bug to do with recursive modules in one-shot mode
The problem was that when loading interface files in checkOldIface, we
were not passing the If monad the mutable variable for use when
looking up entities in the *current* module, with the result that the
knots wouldn't be tied properly, and some instances of TyCons would
be incorrectly abstract.
This bug has subtle effects: for example, recompiling a module without
making any changes might lead to a slightly different result (noticed
due to the new interface-file fingerprints). The bug doesn't lead to
any direct failures that we're aware of.
dias@eecs.harvard.edu [Thu, 29 May 2008 16:05:45 +0000 (16:05 +0000)]
Replacing copyins and copyouts with data-movement instructions
o Moved BlockId stuff to a new file to avoid module recursion
o Defined stack areas for parameter-passing locations and spill slots
o Part way through replacing copy in and copy out nodes
- added movement instructions for stack pointer
- added movement instructions for call and return parameters
(but not with the proper calling conventions)
o Inserting spills and reloads for proc points is now procpoint-aware
(it was relying on the presence of a CopyIn node as a proxy for
procpoint knowledge)
o Changed ZipDataflow to expect AGraphs (instead of being polymorphic in
the type of graph)
Simon Marlow [Fri, 30 May 2008 11:20:43 +0000 (11:20 +0000)]
disable SAT for now (see #2321)
Roman Leshchinskiy [Fri, 30 May 2008 05:03:40 +0000 (05:03 +0000)]
Add dph packages to build system
Manuel M T Chakravarty [Thu, 29 May 2008 04:18:20 +0000 (04:18 +0000)]
PackageMaker target depends on deployment target
Simon Marlow [Thu, 29 May 2008 11:10:23 +0000 (11:10 +0000)]
hs_add_root: use use rts_lock()/rts_unlock() for a bit of extra safety
Simon Marlow [Thu, 29 May 2008 11:09:57 +0000 (11:09 +0000)]
Make it less fatal to not call ioManagerStart()
For clients that forget to do hs_add_root()
Simon Marlow [Thu, 29 May 2008 13:25:44 +0000 (13:25 +0000)]
FIX BUILD with GHC 6.4.x
Simon Marlow [Wed, 28 May 2008 15:45:28 +0000 (15:45 +0000)]
FIX #1970: ghci -hide-all-packages should work
dias@eecs.harvard.edu [Thu, 29 May 2008 09:48:27 +0000 (09:48 +0000)]
Cmm back end upgrades
Several changes in this patch, partially bug fixes, partially new code:
o bug fixes in ZipDataflow
- added some checks to verify that facts converge
- removed some erroneous checks of convergence on entry nodes
- added some missing applications of transfer functions
o changed dataflow clients to use ZipDataflow, making ZipDataflow0 obsolete
o eliminated DFA monad (no need for separate analysis and rewriting monads with ZipDataflow)
o started stack layout changes
- no longer generating CopyIn and CopyOut nodes (not yet fully expunged though)
- still not using proper calling conventions
o simple new optimizations:
- common block elimination
-- have not yet tried to move the Adams opt out of CmmProcPointZ
- block concatenation
o piped optimization fuel up to the HscEnv
- can be limited by a command-line flag
- not tested, and probably not yet properly used by clients
o added unique supply to FuelMonad, also lifted unique supply to DFMonad
Manuel M T Chakravarty [Tue, 27 May 2008 11:30:07 +0000 (11:30 +0000)]
make framework-pkg needs to cope with missing DSTROOT
Simon Marlow [Wed, 28 May 2008 12:52:58 +0000 (12:52 +0000)]
Use MD5 checksums for recompilation checking (fixes #1372, #1959)
This is a much more robust way to do recompilation checking. The idea
is to create a fingerprint of the ABI of an interface, and track
dependencies by recording the fingerprints of ABIs that a module
depends on. If any of those ABIs have changed, then we need to
recompile.
In bug #1372 we weren't recording dependencies on package modules,
this patch fixes that by recording fingerprints of package modules
that we depend on. Within a package there is still fine-grained
recompilation avoidance as before.
We currently use MD5 for fingerprints, being a good compromise between
efficiency and security. We're not worried about attackers, but we
are worried about accidental collisions.
All the MD5 sums do make interface files a bit bigger, but compile
times on the whole are about the same as before. Recompilation
avoidance should be a bit more accurate than in 6.8.2 due to fixing
#1959, especially when using -O.
Simon Marlow [Fri, 23 May 2008 14:07:19 +0000 (14:07 +0000)]
don't make -ddump-if-trace imply -no-recomp
Simon Marlow [Tue, 27 May 2008 09:02:44 +0000 (09:02 +0000)]
clarify that unsafeCoerce# :: Float# -> Int# is not safe (see #2209)
dias@eecs.harvard.edu [Wed, 28 May 2008 12:14:50 +0000 (12:14 +0000)]
when linking, ignore unknown .reloc section that appeared in gcc 3.4.5(?)
Ian Lynagh [Mon, 26 May 2008 16:02:18 +0000 (16:02 +0000)]
Simplify specifying that some libraries need to use the build.* rules
Now you just add them to SUBDIRS_BUILD instead of SUBDIRS.
Ian Lynagh [Mon, 26 May 2008 13:56:12 +0000 (13:56 +0000)]
Cope with libraries in libraries/foo/bar rather than just libraries/foo
You need to use the build.* rules rather than the make.* rules, though.
Manuel M T Chakravarty [Mon, 26 May 2008 07:35:46 +0000 (07:35 +0000)]
Fix fwrite$UNIX2003 symbols when cross-compiling for Tiger
- When compiling with -mmacos-deployment-target=10.4, we need
--no-builtin-fprintf, as the use of GCC's builtin function
optimisation for fprintf together with #include "PosixSource" in the
RTS leads to the use of fwrite$UNIX2003 (with GCC 4.0.1 on Mac OS X
10.5.2).
claus.reinke@talk21.com [Thu, 1 May 2008 20:52:52 +0000 (20:52 +0000)]
document :source command for GHCi, point to Haskell wiki
as discussed in this thread:
http://www.haskell.org/pipermail/glasgow-haskell-users/2008-April/014614.html
Ian Lynagh [Fri, 23 May 2008 03:25:08 +0000 (03:25 +0000)]
Do some stack fiddling in stg_unblockAsyncExceptionszh_ret
This fixes a segfault in #1657
Ian Lynagh [Wed, 21 May 2008 00:42:51 +0000 (00:42 +0000)]
Fix warnings in TcTyDecls
Ian Lynagh [Wed, 21 May 2008 00:39:35 +0000 (00:39 +0000)]
Fix whitespace in TcTyDecls
Manuel M T Chakravarty [Thu, 22 May 2008 04:49:00 +0000 (04:49 +0000)]
Ensure runhaskell is rebuild in stage2
simonpj@microsoft.com [Wed, 21 May 2008 13:00:28 +0000 (13:00 +0000)]
Fix Trac #1061: refactor handling of default methods
In an instance declaration, omitted methods get a definition that
uses the default method. We used to generate source code and feed it
to the type checker. But tc199 shows that is a bad idea -- see
Note [Default methods in instances] in TcClassDcl.
So this patch refactors to insteadl all us to generate the
*post* typechecked code directly for default methods.
simonpj@microsoft.com [Wed, 21 May 2008 13:00:16 +0000 (13:00 +0000)]
Comment typo
simonpj@microsoft.com [Tue, 20 May 2008 14:30:48 +0000 (14:30 +0000)]
Fix Trac #2292: improve error message for lone signatures
Refactoring reduces code and improves error messages
simonpj@microsoft.com [Tue, 20 May 2008 14:30:06 +0000 (14:30 +0000)]
Fix Trac #2293: improve error reporting for duplicate declarations
simonpj@microsoft.com [Thu, 15 May 2008 11:53:32 +0000 (11:53 +0000)]
Tuples cannot contain unboxed types
This bug allowed, for example
f = let x = ( 1#, 'x' ) in x
which is ill-typed because you can't put an unboxed value in a tuple.
Core Lint fails on this program.
The patch makes the program be rejcted up-front.
Ian Lynagh [Tue, 20 May 2008 21:48:52 +0000 (21:48 +0000)]
Make TcType warning-free
Ian Lynagh [Sat, 17 May 2008 14:21:12 +0000 (14:21 +0000)]
Teach push-all how to send as well
Ian Lynagh [Mon, 19 May 2008 11:11:00 +0000 (11:11 +0000)]
Make TcUnify warning-free
Ian Lynagh [Mon, 19 May 2008 09:41:26 +0000 (09:41 +0000)]
Fix a comment typo
Ian Lynagh [Mon, 19 May 2008 09:40:56 +0000 (09:40 +0000)]
Detab TcUnify
Simon Marlow [Mon, 19 May 2008 12:51:01 +0000 (12:51 +0000)]
FIX #1955: confusion between .exe.hp and .hp suffixes for heap profiles
Now we use <prog>.hp and <prog>.prof consistently.
Simon Marlow [Tue, 20 May 2008 08:42:21 +0000 (08:42 +0000)]
sort the output of :show packages
Simon Marlow [Tue, 20 May 2008 08:05:35 +0000 (08:05 +0000)]
update the "perf" settings to match the default
Simon Marlow [Tue, 20 May 2008 08:05:25 +0000 (08:05 +0000)]
use -O2 for libraries and stage2 compiler by default
Simon Marlow [Mon, 19 May 2008 12:53:33 +0000 (12:53 +0000)]
bump GHC's maximum stack size to 64Mb (see #2002)
Roman Leshchinskiy [Tue, 20 May 2008 03:19:13 +0000 (03:19 +0000)]
Add -Odph
This is the optimisation level recommended when compiling DPH programs. At the
moment, it is equivalent to -O2 -fno-method-sharing -fdicts-cheap
-fmax-simplifier-iterations20 -fno-spec-constr-threshold.
Roman Leshchinskiy [Tue, 20 May 2008 02:59:56 +0000 (02:59 +0000)]
Make -f[no-]method-sharing a dynamic flag
We want -Odph to be a dynamic flag and that should imply -fno-method-sharing.
This doesn't add a lot of complexity.
Norman Ramsey [Tue, 20 May 2008 03:24:54 +0000 (03:24 +0000)]
documentation for ZipDataflow
Ian Lynagh [Sun, 18 May 2008 13:31:40 +0000 (13:31 +0000)]
Make TcBinds warning-free
Ian Lynagh [Sun, 18 May 2008 12:56:06 +0000 (12:56 +0000)]
Detab TcBinds
Ian Lynagh [Sat, 17 May 2008 00:22:24 +0000 (00:22 +0000)]
Move the register-inplace special-case stuff into the ghc-prim package
Ian Lynagh [Fri, 16 May 2008 23:58:18 +0000 (23:58 +0000)]
Libraries Makefile Hack for ndp
We use the "build" rather than "make" target
Ian Lynagh [Fri, 16 May 2008 23:53:52 +0000 (23:53 +0000)]
When building libraries, we need to register them if we use the "build" targets
We currently only use the "make" targets, which already register the package.
Tim Chevalier [Sat, 17 May 2008 02:53:51 +0000 (02:53 +0000)]
Add dummy LICENSE file to make Cabal go through
Add a LICENSE file that just points to the GHC license.
Simon Marlow [Fri, 16 May 2008 13:00:45 +0000 (13:00 +0000)]
FIX #2257: timer_settime() hangs during configure
On a 2.6.24 Linux kernel, it appears that timer_settime() for
CLOCK_REALTIME is sometimes hanging for a random amount of time when
given a very small interval (we were using 1ns). Using 1ms seems to
be fine. Also I installed a 1-second timeout to catch hangs in the
future.
Simon Marlow [Fri, 16 May 2008 09:59:47 +0000 (09:59 +0000)]
validate fix: eliminate a warning
Simon Marlow [Thu, 15 May 2008 14:25:18 +0000 (14:25 +0000)]
validate fix: eliminate a warning on non-Windows
Simon Marlow [Thu, 15 May 2008 13:45:15 +0000 (13:45 +0000)]
FIX #2014: Template Haskell w/ mutually recursive modules
Try to load interfaces in getLinkDeps
claus.reinke@talk21.com [Thu, 1 May 2008 15:27:00 +0000 (15:27 +0000)]
Document ghc-pkg find-module, substring matching, and multi-field selection
Documentation and examples taken from
- ghc-pkg/Main.hs usageHeader
- patch: FIX 1463 (implement 'ghc-pkg find-module')
- patch: FIX #1839, #1463, by supporting ghc-pkg bulk queries
with substring matching
simonpj@microsoft.com [Fri, 16 May 2008 08:51:49 +0000 (08:51 +0000)]
Improve the treatment of 'seq' (Trac #2273)
Trac #2273 showed a case in which 'seq' didn't cure the space leak
it was supposed to. This patch does two things to help
a) It removes a now-redundant special case in Simplify, which
switched off the case-binder-swap in the early stages. This
isn't necessary any more because FloatOut has improved since
the Simplify code was written. And switching off the binder-swap
is harmful for seq.
However fix (a) is a bit fragile, so I did (b) too:
b) Desugar 'seq' specially. See Note [Desugaring seq (2)] in DsUtils
This isn't very robust either, since it's defeated by abstraction,
but that's not something GHC can fix; the programmer should use
a let! instead.
Tim Chevalier [Thu, 15 May 2008 23:04:05 +0000 (23:04 +0000)]
don't rebuild PrimEnv if genprimopcode and/or primops.txt don't exist
This helps if, for example, you want to build the Core tools on a machine that doesn't have a GHC build tree, and have a pre-existing copy of PrimEnv.hs.
Ian Lynagh [Sat, 26 Apr 2008 18:43:55 +0000 (18:43 +0000)]
Fix a division-by-zero when +RTS -V0 is given
In delayzh_fast we act as if tickInterval was 50, not 0.
Tim Chevalier [Wed, 14 May 2008 23:53:41 +0000 (23:53 +0000)]
Cabalize ext-core tools
I cabalized the ext-core tools, so now they can be built as
a library. The driver program has to be built separately.
Also updated genprimopcode to reflect the new module hierarchy
for the Core tools.
Ian Lynagh [Wed, 14 May 2008 12:51:52 +0000 (12:51 +0000)]
Remove Distribution.Compat.Char from compat again
Cabal now does this differently.
Ian Lynagh [Sat, 26 Apr 2008 11:01:15 +0000 (11:01 +0000)]
Fix an assertion
We were checking that a pointer was correctly tagged, but after we had
untagged it.
Ian Lynagh [Sat, 3 May 2008 00:08:41 +0000 (00:08 +0000)]
Fix sin/cos/tan on x86; trac #2059
If the value is > 2^63 then we need to work out its value mod 2pi,
and apply the operation to that instead.
Simon Marlow [Wed, 14 May 2008 09:27:42 +0000 (09:27 +0000)]
FIX #1288: GHCi wasn't adding the @n suffix to stdcalls on Windows
Simon Marlow [Wed, 14 May 2008 08:24:22 +0000 (08:24 +0000)]
FIX #2276: foreign import stdcall "&foo" doesn't work
This turned out not to be too hard, just a matter of figuring out the
correct argument list size by peeking inside FunPtr's type argument,
and in the C backend we have to emit an appropriate prototype for the label.
Ian Lynagh [Tue, 13 May 2008 21:11:28 +0000 (21:11 +0000)]
Use -fffi when compiling Cabal stuff with the bootstrapping compiler
Ian Lynagh [Tue, 13 May 2008 20:21:54 +0000 (20:21 +0000)]
Use zipLazy from Util in VectType, rather than defining our own lazy_zip
Ian Lynagh [Tue, 13 May 2008 20:06:41 +0000 (20:06 +0000)]
Add a type signature to help GHC 6.4
Needed in lieu of -XRelaxedPolyRec
Ian Lynagh [Tue, 13 May 2008 19:39:01 +0000 (19:39 +0000)]
Rewrite zipLazy to be warning-free for GHC 6.4
Ian Lynagh [Tue, 13 May 2008 19:22:43 +0000 (19:22 +0000)]
Add Distribution.Compat.Char to compat
Ian Lynagh [Tue, 13 May 2008 19:00:22 +0000 (19:00 +0000)]
Add Distribution.Compat.Exception to the compat library
Ian Lynagh [Tue, 13 May 2008 13:51:58 +0000 (13:51 +0000)]
Fix spelling of nonexistEnt
Simon Marlow [Tue, 13 May 2008 08:44:00 +0000 (08:44 +0000)]
FIX #1641: don't add auto sccs to compiler-generated bindings
I also changed con2tag_Foo and related names to follow the standard
practice of prefixing $ to compiler-generated names, so now we have
$con2tag_Foo.
Ian Lynagh [Mon, 12 May 2008 17:05:07 +0000 (17:05 +0000)]
Fix the Windows build; the new Cabal doesn't like --prefix=/foo
Ian Lynagh [Sun, 11 May 2008 20:39:32 +0000 (20:39 +0000)]
Pull the configure options out into a variable in libraries/Makefile
Don Stewart [Mon, 12 May 2008 18:24:35 +0000 (18:24 +0000)]
typo in rules example. spotted by vixey@#haskell
Simon Marlow [Mon, 12 May 2008 11:06:43 +0000 (11:06 +0000)]
Fixes to via-C prototype generation (FIX BUILD on Windows)
Previously we declared all external labels with type StgWord[],
because the same label might be used at different types in the same
file, e.g. if there are multiple foreign import declarations for the
same function. However, we have to declare called functions with the
right type on Windows, because this is the only way to make the
compiler add the appropriate '@n' suffix for stdcall functions.
Related to this is the reason we were getting mangler complaints
(epilogue mangling) when compiling the RTS with -fvia-C. The function
barf() doesn't return, but we had lost that information by declaring
our own prototypes, and so gcc was generating extra code after the
call to barf().
For more details see
http://hackage.haskell.org/trac/ghc/wiki/Commentary/Compiler/Backends/PprC
Simon Marlow [Mon, 12 May 2008 10:40:30 +0000 (10:40 +0000)]
doc tweak