panne [Fri, 16 Jul 1999 09:41:12 +0000 (09:41 +0000)]
[project @ 1999-07-16 09:41:12 by panne]
More 64bit fun: Fixed an ill-placed #ifdef and added a cast to a
numeric literal (for explanation see yesterday's fix).
simonpj [Fri, 16 Jul 1999 09:36:08 +0000 (09:36 +0000)]
[project @ 1999-07-16 09:36:07 by simonpj]
* Fix long-standing bug in TcIfaceSig which meant it occasionally complained
about a lint error in an unfolding, with a locally-defined name not
being in scope. This only happened when hi-boot loops were being
tied, so an unfolding might mention a locally-defined name.
simonpj [Fri, 16 Jul 1999 09:34:38 +0000 (09:34 +0000)]
[project @ 1999-07-16 09:34:38 by simonpj]
* Fix trivial bug in WwLib.mkWWfixup,
which showed up when booting the compiler.
panne [Fri, 16 Jul 1999 08:57:05 +0000 (08:57 +0000)]
[project @ 1999-07-16 08:56:41 by panne]
More small portability changes:
* For older GHCs use IOBase instead of PrelIOBase
* Never use commas in SLIT. cpp IS a hack for Haskell...
panne [Thu, 15 Jul 1999 18:16:41 +0000 (18:16 +0000)]
[project @ 1999-07-15 18:16:41 by panne]
Patched my previous patch ($ vs $$, && vs if/then/fi). Installing a
Happy binary-dist still only creates a happy and no happy-1.6
executable, but this has very probably nothing to do with my changes.
panne [Thu, 15 Jul 1999 16:20:46 +0000 (16:20 +0000)]
[project @ 1999-07-15 16:20:46 by panne]
Two checks for empty file lists added.
panne [Thu, 15 Jul 1999 16:11:29 +0000 (16:11 +0000)]
[project @ 1999-07-15 16:11:29 by panne]
We have to be very careful with numeric literals in the C part, in
this case 0xff (of type int = 4 bytes on Alpha) was shifted left 56
times => always zero :-{ Using an L or UL suffix is not always
practical, because the needed size depends on conditional typedefs
somewhere else. Solution: Cast! :-P ghc/includes contains some more
suspicious literals, but I did not have a look at them yet.
keithw [Thu, 15 Jul 1999 14:08:50 +0000 (14:08 +0000)]
[project @ 1999-07-15 14:08:03 by keithw]
This commit makes a start at implementing polymorphic usage
annotations.
* The module Type has now been split into TypeRep, containing the
representation Type(..) and other information for `friends' only,
and Type, providing the public interface to Type. Due to a bug in
the interface-file slurping prior to ghc-4.04, {-# SOURCE #-}
dependencies must unfortunately still refer to TypeRep even though
they are not friends.
* Unfoldings in interface files now print as __U instead of __u.
UpdateInfo now prints as __UA instead of __U.
* A new sort of variables, UVar, in their own namespace, uvName, has
been introduced for usage variables.
* Usage binders __fuall uv have been introduced. Usage annotations
are now __u - ty (used once), __u ! ty (used possibly many times),
__u uv ty (used uv times), where uv is a UVar. __o and __m have
gone. All this still lives only in a TyNote, *for now* (but not for
much longer).
* Variance calculation for TyCons has moved from
typecheck/TcTyClsDecls to types/Variance.
* Usage annotation and inference are now done together in a single
pass. Provision has been made for inferring polymorphic usage
annotations (with __fuall) but this has not yet been implemented.
Watch this space!
simonmar [Thu, 15 Jul 1999 09:58:23 +0000 (09:58 +0000)]
[project @ 1999-07-15 09:58:23 by simonmar]
No more RAWCPP, thank you.
simonmar [Thu, 15 Jul 1999 09:56:04 +0000 (09:56 +0000)]
[project @ 1999-07-15 09:56:04 by simonmar]
Use +RTS -S<file> rather than +RTS -s<file>, since the latter only
gives summary statistics now.
simonmar [Thu, 15 Jul 1999 09:51:52 +0000 (09:51 +0000)]
[project @ 1999-07-15 09:51:52 by simonmar]
A prime example of how an inconsistent .hi-boot file can really ruin
your day: the definition of CoreRules in CoreSyn.hi-boot was out of
sync with the real one, which meant that the compiler generated the
wrong code for a `seq` on something of type CoreRules.
simonmar [Thu, 15 Jul 1999 08:51:25 +0000 (08:51 +0000)]
[project @ 1999-07-15 08:51:25 by simonmar]
oops, forgot to commit this yesterday.
RAWCPP is now '$(CPP) -undef -traditional'.
simonpj [Wed, 14 Jul 1999 22:10:42 +0000 (22:10 +0000)]
[project @ 1999-07-14 22:10:40 by simonpj]
[Simon: this should fix that -funfolding-use-threshold0 lint bug]
[Kevin: have a look at WwLib.mkWwBodies. Isn't it a thing of beauty?
Could you think about whether the CPR stuff could be cleaned
up a bit? The strictness stuff is much shorter.]
This commit tidies up WwLib.mkWwBodies, fixing a couple of bugs.
* One bug showed up when CPR made a worker return an unboxed tuple,
but the worker didn't have any other arguments. The "add a void arg"
hack needed to be generalised a bit.
* The other bug showed up when booting the compiler. There's a long
comment near splitProductType in WwLib.lhs that explains the problem.
panne [Wed, 14 Jul 1999 20:29:34 +0000 (20:29 +0000)]
[project @ 1999-07-14 20:29:34 by panne]
Enlarged heap for 2.10-compiled Happy on Alphas
simonmar [Wed, 14 Jul 1999 15:28:08 +0000 (15:28 +0000)]
[project @ 1999-07-14 15:28:08 by simonmar]
pre-4.03 didn't have __HASKELL98__, use something else.
simonpj [Wed, 14 Jul 1999 14:41:04 +0000 (14:41 +0000)]
[project @ 1999-07-14 14:40:20 by simonpj]
Main things:
* Add splitProductType_maybe to DataCon.lhs, with type
splitProductType_maybe
:: Type -- A product type, perhaps
-> Maybe (TyCon, -- The type constructor
[Type], -- Type args of the tycon
DataCon, -- The data constructor
[Type]) -- Its *representation* arg types
Then use it in many places (e.g. worker-wrapper places) instead
of a pile of junk
* Clean up various uses of dataConArgTys, which were plain wrong because
they weren't passed the existential type arguments. Most of these calls
are eliminated by using splitProductType_maybe above. I hope I correctly
squashed the others. This fixes a bug that Meurig's programs showed up.
module FailGHC (killSustainer) where
import Weak
import IOExts
data Sustainer = forall a . Sustainer (IORef (Maybe a)) (IO ())
killSustainer :: Sustainer -> IO ()
killSustainer (Sustainer _ act) = act
The above program used to kill the compiler.
* A fairly concerted attack on the Dreaded Space Leak.
- Add Type.seqType, CoreSyn.seqExpr, CoreSyn.seqRules
- Add some seq'ing when building Ids and IdInfos
These reduce the space usage a lot
- Add CoreSyn.coreBindsSize, which is pretty strict in the program,
and call it when we have -dshow-passes.
- Do not put the inlining in an Id that is being plugged into
the result-expression of the simplifier. This cures
a the 'wedge' in the space profile for reasons I don't understand fully
Together, these things reduce the max space usage when compiling PrelNum from
17M to about 7Mbytes.
I think there are now *too many* seqs, and they waste work, but I don't have
time to find which ones.
Furthermore, we aren't done. For some reason, some of the stuff allocated by
the simplifier makes it through all during code generation and I don't see why.
There's a should-be-unnecessary call to coreBindsSize in Main.main which
zaps some, but not all of this space.
-dshow-passes reduces space usage a bit, but I don't think it should really.
All the measurements were made on a compiler compiled with profiling by
GHC 3.03. I hope they carry over to other builds!
* One trivial thing: changed all variables 'label' to 'lbl', becuase the
former is a keyword with -fglagow-exts in GHC 3.03 (which I was compiling with).
Something similar in StringBuffer.
simonmar [Wed, 14 Jul 1999 13:44:19 +0000 (13:44 +0000)]
[project @ 1999-07-14 13:44:19 by simonmar]
- Add findPtr() - searches through the heap for an occurrence of a
given value. Useful when debugging.
simonmar [Wed, 14 Jul 1999 13:42:28 +0000 (13:42 +0000)]
[project @ 1999-07-14 13:39:46 by simonmar]
Workaround bug in Linux's glibc 2.1: don't fflush(stdout) before
writing to stderr.
simonmar [Wed, 14 Jul 1999 13:38:27 +0000 (13:38 +0000)]
[project @ 1999-07-14 13:38:27 by simonmar]
use shutdownHaskellAndExit().
simonmar [Wed, 14 Jul 1999 13:37:44 +0000 (13:37 +0000)]
[project @ 1999-07-14 13:37:44 by simonmar]
- add USE_REPORT_PRELUDE
- Directory and Time don't need -monly-3-regs any more
- remove a -fno-prune-tydecls
sewardj [Wed, 14 Jul 1999 13:35:53 +0000 (13:35 +0000)]
[project @ 1999-07-14 13:35:49 by sewardj]
Changed vars of the form _unused to zz_unused, since 3.02 doesn't understand
this convention.
simonmar [Wed, 14 Jul 1999 13:26:52 +0000 (13:26 +0000)]
[project @ 1999-07-14 13:26:48 by simonmar]
Don't attempt to discover the exact location of cpp, instead use 'gcc
-E'. With the right combination of flags, it seems we can get the
same behaviour as calling cpp directly.
simonmar [Wed, 14 Jul 1999 13:23:51 +0000 (13:23 +0000)]
[project @ 1999-07-14 13:23:51 by simonmar]
Update to match CgUsages.hi-boot-5
simonmar [Wed, 14 Jul 1999 12:31:14 +0000 (12:31 +0000)]
[project @ 1999-07-14 12:31:14 by simonmar]
Recover the -funbox-strict-fields test.
simonmar [Wed, 14 Jul 1999 11:47:12 +0000 (11:47 +0000)]
[project @ 1999-07-14 11:47:12 by simonmar]
4.04
simonmar [Wed, 14 Jul 1999 11:46:36 +0000 (11:46 +0000)]
[project @ 1999-07-14 11:46:36 by simonmar]
4.04 changes.
simonmar [Wed, 14 Jul 1999 11:33:12 +0000 (11:33 +0000)]
[project @ 1999-07-14 11:33:10 by simonmar]
- add 4.04 release notes
- several other docfixes and markup fixes.
simonmar [Wed, 14 Jul 1999 11:16:43 +0000 (11:16 +0000)]
[project @ 1999-07-14 11:16:43 by simonmar]
link in NonTermination_static_closure.
simonmar [Wed, 14 Jul 1999 11:15:09 +0000 (11:15 +0000)]
[project @ 1999-07-14 11:15:09 by simonmar]
add NonTermination_closure.
simonmar [Wed, 14 Jul 1999 10:01:43 +0000 (10:01 +0000)]
[project @ 1999-07-14 10:01:43 by simonmar]
Fix my email address.
simonmar [Wed, 14 Jul 1999 08:41:21 +0000 (08:41 +0000)]
[project @ 1999-07-14 08:41:21 by simonmar]
Small typos from Wolfram Kahl.
simonmar [Wed, 14 Jul 1999 08:37:58 +0000 (08:37 +0000)]
[project @ 1999-07-14 08:37:57 by simonmar]
USE_REPORT_PRELUDE patches from Wolfram Kahl.
simonmar [Wed, 14 Jul 1999 08:33:38 +0000 (08:33 +0000)]
[project @ 1999-07-14 08:33:38 by simonmar]
Add NonTermination to the exception type. Prints as "<<loop>>"
(better suggestions welcome).
simonmar [Mon, 12 Jul 1999 14:40:11 +0000 (14:40 +0000)]
[project @ 1999-07-12 14:40:08 by simonmar]
Keep the original name for non-exported record selectors and class
methods.
sof [Mon, 12 Jul 1999 10:43:13 +0000 (10:43 +0000)]
[project @ 1999-07-12 10:43:10 by sof]
Cygwin B19 compatibility fixes
sof [Thu, 8 Jul 1999 13:51:17 +0000 (13:51 +0000)]
[project @ 1999-07-08 13:51:17 by sof]
foreign export regression test
sof [Thu, 8 Jul 1999 13:46:27 +0000 (13:46 +0000)]
[project @ 1999-07-08 13:46:25 by sof]
A 'foreign export' (static) declaration doesn't bind a name but
simply adds an occurrence of a name.
simonpj [Thu, 8 Jul 1999 11:02:10 +0000 (11:02 +0000)]
[project @ 1999-07-08 11:02:10 by simonpj]
Fix shadowing bug in rule matcher (showed up in spectral/rewrite)
simonmar [Thu, 8 Jul 1999 08:10:52 +0000 (08:10 +0000)]
[project @ 1999-07-08 08:10:52 by simonmar]
Back out rev 1.30 - it broke a lot of things.
simonmar [Wed, 7 Jul 1999 15:28:19 +0000 (15:28 +0000)]
[project @ 1999-07-07 15:28:19 by simonmar]
Reduce ScrutConDiscount from 3 to 2.
simonmar [Wed, 7 Jul 1999 15:27:27 +0000 (15:27 +0000)]
[project @ 1999-07-07 15:27:27 by simonmar]
- charge 1 for a case expression
- give a discount of opt_UF_ScrutConDiscount each time a constructor
is scrutinised
(previously a case expression was not charged for at all, and the
discount for a scrutinised constructor was (opt_UF_ScrutConDiscount *
tyconFamilySize). In 4.02, a case expression was also charged
tyconFamilySize to balance the discount, but this had the disadvantage
of charging for alternatives which may not be present in the actual
case expression).
simonmar [Wed, 7 Jul 1999 11:22:13 +0000 (11:22 +0000)]
[project @ 1999-07-07 11:22:13 by simonmar]
Back out yesterday's change - needs more thought.
simonpj [Tue, 6 Jul 1999 16:46:12 +0000 (16:46 +0000)]
[project @ 1999-07-06 16:45:31 by simonpj]
All Simon's recent tuning changes. Rough summary follows:
* Fix Kevin Atkinson's cant-find-instance bug. Turns out that Rename.slurpSourceRefs
needs to repeatedly call getImportedInstDecls, and then go back to slurping
source-refs. Comments with Rename.slurpSourceRefs.
* Add a case to Simplify.mkDupableAlt for the quite-common case where there's
a very simple alternative, in which case there's no point in creating a
join-point binding.
* Fix CoreUtils.exprOkForSpeculation so that it returns True of (==# a# b#).
This lack meant that
case ==# a# b# of { True -> x; False -> x }
was not simplifying
* Make float-out dump bindings at the top of a function argument, as
at the top of a let(rec) rhs. See notes with FloatOut.floatRhs
* Make the ArgOf case of mkDupableAlt generate a OneShot lambda.
This gave a noticeable boost to spectral/boyer2
* Reduce the number of coerces, using worker/wrapper stuff.
The main idea is in WwLib.mkWWcoerce. The gloss is that we must do
the w/w split even for small non-recursive things. See notes with
WorkWrap.tryWw.
* This further complicated getWorkerId, so I finally bit the bullet and
make the workerInfo field of the IdInfo work properly, including
under substitutions. Death to getWorkerId. Kevin Glynn will be happy.
* Make all lambdas over realWorldStatePrimTy
into one-shot lambdas. This is a GROSS HACK.
* Also make the occurrence analyser aware of one-shot lambdas.
* Make various Prelude things into INLINE, so that foldr doesn't
get inlined in their body, so that the caller gets the benefit
of fusion. Notably in PrelArr.lhs.
sewardj [Tue, 6 Jul 1999 16:40:28 +0000 (16:40 +0000)]
[project @ 1999-07-06 16:40:22 by sewardj]
Assembler/Disassembler: handle and print calls to compiled code
Evaluator: return to scheduler when entering unknown closure
StgCRun: debugging trace in miniinterpreter (temporary)
Updates: fix normal and vectored returns to Hugs
sewardj [Tue, 6 Jul 1999 16:17:40 +0000 (16:17 +0000)]
[project @ 1999-07-06 16:17:39 by sewardj]
Make vectored returns to Hugs work, and make IS_CODE_PTR etc work
for dynamically loaded objects.
simonmar [Tue, 6 Jul 1999 15:33:23 +0000 (15:33 +0000)]
[project @ 1999-07-06 15:33:23 by simonmar]
Should really call OnExitHook() in shutdownHaskellAndExit().
sewardj [Tue, 6 Jul 1999 15:24:45 +0000 (15:24 +0000)]
[project @ 1999-07-06 15:24:36 by sewardj]
Mods to enable interworking with simple compiled code. Supports fns and
data decls. Classes, instances, primops, don't work yet.
Unregisterised, mininterpreted x86-ELF is the supported object format.
GC appears to work correctly.
simonmar [Tue, 6 Jul 1999 15:24:35 +0000 (15:24 +0000)]
[project @ 1999-07-06 15:24:35 by simonmar]
we're on to 4.04 now.
sewardj [Tue, 6 Jul 1999 15:24:35 +0000 (15:24 +0000)]
[project @ 1999-07-06 15:24:35 by sewardj]
Mods to enable interworking with simple compiled code. Supports fns and
data decls. Classes, instances, primops, don't work yet.
Unregisterised, mininterpreted x86-ELF is the supported object format.
GC appears to work correctly.
simonmar [Tue, 6 Jul 1999 15:24:01 +0000 (15:24 +0000)]
[project @ 1999-07-06 15:24:01 by simonmar]
Add a note about @raiseInThread@.
simonmar [Tue, 6 Jul 1999 15:23:17 +0000 (15:23 +0000)]
[project @ 1999-07-06 15:23:17 by simonmar]
-ddump-rdr is now -ddump-parsed
simonmar [Tue, 6 Jul 1999 15:21:57 +0000 (15:21 +0000)]
[project @ 1999-07-06 15:21:57 by simonmar]
only pop explicit layout contexts with '}'.
simonmar [Tue, 6 Jul 1999 15:21:01 +0000 (15:21 +0000)]
[project @ 1999-07-06 15:21:01 by simonmar]
print the compiler version on the same line as the compilee version;
looks a bit tidier.
sewardj [Tue, 6 Jul 1999 15:20:59 +0000 (15:20 +0000)]
[project @ 1999-07-06 15:20:59 by sewardj]
Header file for an alternative bignum implementation, which is in
interpreter/sainteger.c. Currently used by STGHugs.
Temporary -- until we resolve GMP licensing issues.
simonmar [Tue, 6 Jul 1999 15:19:41 +0000 (15:19 +0000)]
[project @ 1999-07-06 15:19:41 by simonmar]
Re-jig some stuff in here so it doesn't look like you need so many
tools to build GHC.
sof [Tue, 6 Jul 1999 15:12:47 +0000 (15:12 +0000)]
[project @ 1999-07-06 15:12:47 by sof]
Added maxPrecedence
sof [Tue, 6 Jul 1999 15:05:49 +0000 (15:05 +0000)]
[project @ 1999-07-06 15:05:49 by sof]
Added needed includes of SchedAPI.h
keithw [Tue, 6 Jul 1999 13:26:38 +0000 (13:26 +0000)]
[project @ 1999-07-06 13:26:38 by keithw]
Whoops, add index terms too.
keithw [Tue, 6 Jul 1999 13:25:11 +0000 (13:25 +0000)]
[project @ 1999-07-06 13:25:09 by keithw]
Add -ddump-most and -ddump-all, with the obvious meanings.
sof [Tue, 6 Jul 1999 09:42:39 +0000 (09:42 +0000)]
[project @ 1999-07-06 09:42:38 by sof]
Redo previous commit to cut down on the use of COMPILING_RTS where
possible - SchedAPI.h is now an RTS internal header file which
RtsAPI.h no longer includes.
sof [Tue, 6 Jul 1999 09:19:47 +0000 (09:19 +0000)]
[project @ 1999-07-06 09:19:47 by sof]
Don't include RtsAPI.h when compiling RTS.
sof [Mon, 5 Jul 1999 19:26:42 +0000 (19:26 +0000)]
[project @ 1999-07-05 19:26:42 by sof]
Temporary workaround for problem which caused the following program
main = putStrLn ("aa" ++ IOExts.trace "bb" "cc")
to deadlock - when the (untouched) stderr is evaluated (which
IOExts.trace forces), it will touch stdout (see code for details of
why), but it has already been locked by putStrLn. Boom - game over.
This temporary 'fix' is, to put it kindly, in the fancy-footwork
category as it doesn't solve the problem, but merely turns it on its
head. Instead of stderr depending on stdout, stdout now depends on
stderr, so the following program will deadlock
main = hPutStrLn stderr ("aa" ++ myTrace "bb" "cc")
myTrace msg v = unsafePerformIO $ do
putStrLn msg
return v
The 'theory' is that this is far less likely to occur in practice than
the other way around.
The next step / real solution would be to give up the lock on an
output Handle while filling up its output buffer. However, that
requires ripping out / re-org'ing a fair bit of buffer management
code, which I'll delay doing.
sof [Mon, 5 Jul 1999 18:53:53 +0000 (18:53 +0000)]
[project @ 1999-07-05 18:53:53 by sof]
Remove -#include "RtsAPI.h" - you now get it for free.
sof [Mon, 5 Jul 1999 17:25:23 +0000 (17:25 +0000)]
[project @ 1999-07-05 17:25:23 by sof]
Stg.h contains all the defs and protos that are visible when compiling
.hc code (==> .hs code). Augment this set with the externally visible
RTS API.
sof [Mon, 5 Jul 1999 17:06:21 +0000 (17:06 +0000)]
[project @ 1999-07-05 17:06:21 by sof]
Tidied up the handling of the code that emits the precedence level
predicates that gets used in applications of showParen and readParen.
sof [Mon, 5 Jul 1999 17:02:42 +0000 (17:02 +0000)]
[project @ 1999-07-05 17:02:42 by sof]
Two new Dark Corner regression tests:
- testing the derived Show&Read instances for constructors with
a field label that is a varsym rather than a varid.
- check that the default fixity & assoc of an operator is 'infixl 9'.
sof [Mon, 5 Jul 1999 16:55:19 +0000 (16:55 +0000)]
[project @ 1999-07-05 16:55:19 by sof]
New option, -fail, to indicate failure (whatever the return code).
simonpj [Mon, 5 Jul 1999 15:30:27 +0000 (15:30 +0000)]
[project @ 1999-07-05 15:30:25 by simonpj]
Make sure that instance gates have their home modules
loaded by RnIfaces.getImportedInstDecls. This was causing
Kevin Atkinson's missing-instance bug.
sof [Mon, 5 Jul 1999 14:47:06 +0000 (14:47 +0000)]
[project @ 1999-07-05 14:47:06 by sof]
* If a field label is a 'varsym', wrap parens around it when
Show'ing and Read'ing it back in.
* If there's no fixity decl for a 'consym', the default is
for it to be left-assoc.
sof [Sat, 3 Jul 1999 19:15:27 +0000 (19:15 +0000)]
[project @ 1999-07-03 19:15:26 by sof]
Don't use WinSock under cygwin
sof [Sat, 3 Jul 1999 18:45:04 +0000 (18:45 +0000)]
[project @ 1999-07-03 18:45:04 by sof]
Don't compile in WinSock support under cygwin
sof [Sat, 3 Jul 1999 18:43:46 +0000 (18:43 +0000)]
[project @ 1999-07-03 18:43:46 by sof]
exitWith: don't call exit(), but use the RTS' shutdownHaskellAndExit()
sof [Sat, 3 Jul 1999 18:39:41 +0000 (18:39 +0000)]
[project @ 1999-07-03 18:39:40 by sof]
New RTS entry point, shutdownHaskellAndExit(), which does what the name
implies - used when you want to exit from within Haskell code (e.g.,
System.exitWith.)
simonmar [Fri, 2 Jul 1999 09:31:54 +0000 (09:31 +0000)]
[project @ 1999-07-02 09:31:54 by simonmar]
Remove final fflush() - it seems to be incompatible with recent
releases of Linux's libc implementation, and we don't use stdio in any
case.
panne [Thu, 1 Jul 1999 13:48:22 +0000 (13:48 +0000)]
[project @ 1999-07-01 13:48:22 by panne]
The allocator for mega groups now checks if consecutive megablocks on
the free list are contiguous in memory. The omission of this check
caused all kinds of funny runtime errors and took away at least five
happy years of my life... :-{
simonmar [Thu, 1 Jul 1999 13:12:09 +0000 (13:12 +0000)]
[project @ 1999-07-01 13:12:09 by simonmar]
8-bit clarity
simonmar [Thu, 1 Jul 1999 12:30:06 +0000 (12:30 +0000)]
[project @ 1999-07-01 12:30:06 by simonmar]
Make this more Haskell 1.3-insensitive
simonmar [Wed, 30 Jun 1999 11:29:53 +0000 (11:29 +0000)]
[project @ 1999-06-30 11:29:53 by simonmar]
Allow the following (not strictly H98) construct:
do
blah
e $ do
blah
This doesn't break any existing code, just allows more programs
through. Only the semantics for layout after a 'do' have changed.
simonpj [Wed, 30 Jun 1999 09:49:55 +0000 (09:49 +0000)]
[project @ 1999-06-30 09:49:55 by simonpj]
Add a test for deriving Show (f (f a)); makes Hugs hang
simonpj [Wed, 30 Jun 1999 09:43:57 +0000 (09:43 +0000)]
[project @ 1999-06-30 09:43:57 by simonpj]
Make the r.u.n message happen only with -DDEBUG
simonmar [Tue, 29 Jun 1999 14:18:14 +0000 (14:18 +0000)]
[project @ 1999-06-29 14:18:14 by simonmar]
Back out a change that creeped in by mistake.
simonmar [Tue, 29 Jun 1999 14:15:32 +0000 (14:15 +0000)]
[project @ 1999-06-29 14:15:32 by simonmar]
Clean out objects generated from assembly files.
panne [Tue, 29 Jun 1999 13:06:45 +0000 (13:06 +0000)]
[project @ 1999-06-29 13:04:38 by panne]
Made the compilation of the RTS almost warning-free and improved the
output of some "barf"s in the garbage collector . This is part of my
epic crusade against "scavenge_mut_list: strange object?"... :-(
simonmar [Tue, 29 Jun 1999 12:00:42 +0000 (12:00 +0000)]
[project @ 1999-06-29 12:00:42 by simonmar]
Suppress warnings by making some static symbols extern. Sigh.
kglynn [Tue, 29 Jun 1999 08:40:32 +0000 (08:40 +0000)]
[project @ 1999-06-29 08:40:32 by kglynn]
Someone with a big stick told me to remove -ddump-cpranalyse
Use -ddump-cpranal instead.
kglynn [Tue, 29 Jun 1999 06:26:38 +0000 (06:26 +0000)]
[project @ 1999-06-29 06:26:37 by kglynn]
CPR Analysis Mark 2. Slightly more elegant, and (I believe) now
copes correctly with references to CAFS and non-top level function
bindings.
kglynn [Tue, 29 Jun 1999 05:13:30 +0000 (05:13 +0000)]
[project @ 1999-06-29 05:13:30 by kglynn]
(keving)
Add dump-cpranal to agree with the users_guide. dump-cpranalyse will
still work but is deprecated and could be removed by someone with
a bigger stick than me.
simonmar [Mon, 28 Jun 1999 16:42:24 +0000 (16:42 +0000)]
[project @ 1999-06-28 16:42:22 by simonmar]
Back out changes for "specialid"s. It didn't work this way: there was
a conflict in the grammar.
simonpj [Mon, 28 Jun 1999 16:40:18 +0000 (16:40 +0000)]
[project @ 1999-06-28 16:40:18 by simonpj]
Add explanatory comments
simonpj [Mon, 28 Jun 1999 16:35:56 +0000 (16:35 +0000)]
[project @ 1999-06-28 16:35:56 by simonpj]
Fix SetLevels so that it does not clone top-level bindings, but it
*does* clone bindings that are destined for the top level.
The global invariant is that the top level bindings are always
unique, and never cloned.
simonpj [Mon, 28 Jun 1999 16:33:23 +0000 (16:33 +0000)]
[project @ 1999-06-28 16:33:17 by simonpj]
Some renamer fixes
* Correct the defn of Rename.isOrphanRule (caused a Sergey bug)
* Tidy up the Rename.implicitFVs stuff
simonpj [Mon, 28 Jun 1999 16:32:00 +0000 (16:32 +0000)]
[project @ 1999-06-28 16:32:00 by simonpj]
Propagate changes for tcSimplifyToDicts
simonpj [Mon, 28 Jun 1999 16:31:09 +0000 (16:31 +0000)]
[project @ 1999-06-28 16:31:09 by simonpj]
Reduce renamer warnings
simonpj [Mon, 28 Jun 1999 16:29:49 +0000 (16:29 +0000)]
[project @ 1999-06-28 16:29:45 by simonpj]
* Add Type.repType
* Re-express splitRepTyConApp_maybe using repType
* Use the new repType in Core2Stg
The bug was that we ended up with a binding like
let x = /\a -> 3# +# y
in ...
and this should turn into an STG case, but the big lambda
fooled the core-to-STG pass
simonpj [Mon, 28 Jun 1999 16:27:30 +0000 (16:27 +0000)]
[project @ 1999-06-28 16:27:27 by simonpj]
Improve common sub-expression stuff
- better hash function
- add Const.isBoxedDataCon, and use it in CSE
- don't CSE for nullary constructors
simonpj [Mon, 28 Jun 1999 16:23:28 +0000 (16:23 +0000)]
[project @ 1999-06-28 16:23:28 by simonpj]
Fix lost specialisations. There were two problems
{-# SPECIALISE f :: Int -> Rational #-}
fromIntegral = fromInteger . toInteger
This generates
fromIntegral_spec = fromIntegral d
for some suitable dictionary d. But since fromIntegral is small,
it got inlined into fromIntegral_spec, thus losing the specialised
call (fromIntegral d) that was the whole raison d'etre of fromIntegral_spec.
Haskish solution: add an inlne pragma for the _spec things:
fromIntegral_spec = _inline_me (fromIntegral d)
Now we won't inline inside. But this showed up a related problem. The
typechecker tries to common up overloaded things, so it actually generates
m = fromIntegral d
fromIntegral_spec = _inline_me m
which is pretty stupid. Using tcSimplifyToDicts (instead of tcSimplify)
in TcBinds.tcSpecSigs fixes this.
simonmar [Mon, 28 Jun 1999 15:43:12 +0000 (15:43 +0000)]
[project @ 1999-06-28 15:43:12 by simonmar]
a couple more weird cases for lexing of qualified names.
simonmar [Mon, 28 Jun 1999 15:42:35 +0000 (15:42 +0000)]
[project @ 1999-06-28 15:42:33 by simonmar]
Fix some pretty subtle bugs in the lexing of qualified names.
simonmar [Mon, 28 Jun 1999 15:16:59 +0000 (15:16 +0000)]
[project @ 1999-06-28 15:16:59 by simonmar]
writeHandle has been removed.
simonmar [Mon, 28 Jun 1999 12:15:57 +0000 (12:15 +0000)]
[project @ 1999-06-28 12:15:57 by simonmar]
Move -fwarn-unused-{binds,matches} back into -W (two votes for, one
against).