rrt [Thu, 23 Aug 2001 12:50:13 +0000 (12:50 +0000)]
[project @ 2001-08-23 12:50:13 by rrt]
On second thoughts, strip either a backslash or a slash, as if we read
an environment variable, we may well get a slash in the path; if we
get a result from GetTempPath, it'll probably have a backslash.
rrt [Thu, 23 Aug 2001 12:48:54 +0000 (12:48 +0000)]
[project @ 2001-08-23 12:48:54 by rrt]
Strip a backslash, not a slash.
simonmar [Thu, 23 Aug 2001 10:55:37 +0000 (10:55 +0000)]
[project @ 2001-08-23 10:55:37 by simonmar]
Remove no-longer-useful README. All that's left here now is the GHCi
tests, which aren't ready to be moved over to the new testsuite yet.
simonmar [Thu, 23 Aug 2001 10:53:48 +0000 (10:53 +0000)]
[project @ 2001-08-23 10:53:46 by simonmar]
remove unused tests.
simonmar [Thu, 23 Aug 2001 10:51:20 +0000 (10:51 +0000)]
[project @ 2001-08-23 10:51:19 by simonmar]
old tests, most of which seem to have been used during development
rather than as regression tests.
sewardj [Thu, 23 Aug 2001 10:36:50 +0000 (10:36 +0000)]
[project @ 2001-08-23 10:36:50 by sewardj]
Globally-uniquify the names of some _wrap functions so that the
previously-undetected global namespace clashes don't cause an
assertion failure in Hash.c when compiled -DDEBUG when starting GHCi
with various hslibs packages.
simonmar [Thu, 23 Aug 2001 10:33:36 +0000 (10:33 +0000)]
[project @ 2001-08-23 10:33:36 by simonmar]
Add a new section, documenting "GHC's take on behaviour that is left
undefined or implementation specific in Haskell 98", and in it
document the size of Int, the behaviour of fromIntegral, and the
behaviour of floating-point exceptions.
rrt [Thu, 23 Aug 2001 10:29:53 +0000 (10:29 +0000)]
[project @ 2001-08-23 10:29:53 by rrt]
reinstate some Windows-specific code I deleted by mistake.
rrt [Thu, 23 Aug 2001 10:06:04 +0000 (10:06 +0000)]
[project @ 2001-08-23 10:06:04 by rrt]
Remove spurious ;; from when the changed line was in a case.
simonmar [Thu, 23 Aug 2001 10:02:46 +0000 (10:02 +0000)]
[project @ 2001-08-23 10:02:46 by simonmar]
markup fixes
simonpj [Thu, 23 Aug 2001 09:54:46 +0000 (09:54 +0000)]
[project @ 2001-08-23 09:54:45 by simonpj]
--------------------------------------------------
Be a bit more liberal when slurping instance decls
--------------------------------------------------
Functional dependencies have (as usual) made things more complicated
Suppose an interface file contains
interface A where
class C a b | a->b where op :: a->b
instance C Foo Baz where ...
Now we are compiling
module B where
import A
t = op (v::Foo)
Should we slurp the instance decl, even though Baz is nowhere mentioned
in module B? YES! Because of the fundep, the (C Foo ?) part is enough to
select this instance decl, and the Baz part follows.
Rather than take fundeps into account "properly", we just slurp
if C is visible and *any one* of the Names in the types
This is a slightly brutal approximation, but most instance decls
are regular H98 ones and it's perfect for them.
Changes:
HscTypes:
generalise the types of GatedDecl a bit
RnHiFiles.loadInstDecl, RnHiFiles.loadRule, RnIfaces.selectGated:
the meat of the solution
RdrName, OccName etc:
some consequential wibbles
simonmar [Thu, 23 Aug 2001 08:54:45 +0000 (08:54 +0000)]
[project @ 2001-08-23 08:54:45 by simonmar]
Put a big flashing warning sign next to the description of -O2-for-C,
and don't endorse it by claiming that we actually use it (we don't).
rrt [Thu, 23 Aug 2001 08:45:50 +0000 (08:45 +0000)]
[project @ 2001-08-23 08:45:50 by rrt]
Remove dependency of win32 on greencard (because the latter is merged
into the former). This is a temporary hack until the greencard library
is added to the new libraries.
simonpj [Thu, 23 Aug 2001 08:43:30 +0000 (08:43 +0000)]
[project @ 2001-08-23 08:43:30 by simonpj]
-----------------------------------
Correct a horrible error in repType
-----------------------------------
repType is meant to give the underlying representation of a type.
But it wasn't taking account of the fact that *recursive* newtypes are
still represented by a TyConApp. (Non-recursive ones behave much more
like type synonyms now.)
As a result, if we have
newtype F = F (F->F)
then Bad Things happen if we try to seq x::F. We decide whether to
push an ordinary return address or a SEQ frame based on the type,
and repType didn't expose the fact that F is represented by a function type.
Aargh. codeGen/should_run/cg050 now tests for this.
simonpj [Thu, 23 Aug 2001 08:43:13 +0000 (08:43 +0000)]
[project @ 2001-08-23 08:43:13 by simonpj]
Add coment
rrt [Thu, 23 Aug 2001 08:36:11 +0000 (08:36 +0000)]
[project @ 2001-08-23 08:36:11 by rrt]
Remove kludgy hack that on mingwin appends C: to the result of gcc
-print-prog-name=ld, which doesn't work with the newest mingwin gcc
(which kindly adds C: for us).
simonpj [Thu, 23 Aug 2001 07:52:32 +0000 (07:52 +0000)]
[project @ 2001-08-23 07:52:32 by simonpj]
Use the unpack strategy!
simonpj [Thu, 23 Aug 2001 07:13:16 +0000 (07:13 +0000)]
[project @ 2001-08-23 07:13:16 by simonpj]
------------------------------
Improve the demand analyser [case]
------------------------------
1. In the Case case of dmdAnal, I dealt with the case binder in a way that
was both clumsy and pessimistic. This commit fixes that:
-- Figure out whether the demand on the case binder is used, and use
-- that to set the scrut_dmd. This is utterly essential.
-- Consider f x = case x of y { (a,b) -> k y a }
-- If we just take scrut_demand = U(L,A), then we won't pass x to the
-- worker, so the worker will rebuild
-- x = (a, absent-error)
-- and that'll crash.
-- So at one stage I had:
-- dead_case_bndr = isAbsentDmd (idNewDemandInfo case_bndr')
-- keepity | dead_case_bndr = Drop
-- | otherwise = Keep
--
-- But then consider
-- case x of y { (a,b) -> h y + a }
-- where h : U(LL) -> T
-- The above code would compute a Keep for x, since y is not Abs, which is silly
-- The insight is, of course, that a demand on y is a demand on the
-- scrutinee, so we need to `both` it with the scrut demand
scrut_dmd = Seq Drop Now [idNewDemandInfo b | b <- bndrs', isId b]
`both`
idNewDemandInfo case_bndr'
-- There used to be a special case for when
-- ty == TyVarTy tv
-- (a not-uncommon case) in which case the substitution was dropped.
-- But the type-tidier changes the print-name of a type variable without
-- changing the unique, and that led to a bug. Why? Pre-tidying, we had
-- a type {Foo t}, where Foo is a one-method class. So Foo is really a newtype.
-- And it happened that t was the type variable of the class. Post-tiding,
2. 'defer' can be simplified to 'lub Abs', reducing the number of places
where things can go wrong.
3. Add comments
rrt [Wed, 22 Aug 2001 15:59:35 +0000 (15:59 +0000)]
[project @ 2001-08-22 15:59:35 by rrt]
Say a bit about the horrors of linking.
simonpj [Wed, 22 Aug 2001 15:54:02 +0000 (15:54 +0000)]
[project @ 2001-08-22 15:54:02 by simonpj]
Test for only 4 words of args on SPARC foreign export dynamic
rrt [Wed, 22 Aug 2001 15:45:21 +0000 (15:45 +0000)]
[project @ 2001-08-22 15:45:21 by rrt]
Remove spurions masquerading as <p> tags.
rrt [Wed, 22 Aug 2001 15:44:15 +0000 (15:44 +0000)]
[project @ 2001-08-22 15:44:15 by rrt]
There's no such thing as a makesfile or a makfile.
rrt [Wed, 22 Aug 2001 15:39:30 +0000 (15:39 +0000)]
[project @ 2001-08-22 15:39:30 by rrt]
Remove spurious clarification. As far as the user is concerned, this
lot is right. However, I'll add a bit to the commentary about this
sorry mess.
simonpj [Wed, 22 Aug 2001 15:35:06 +0000 (15:35 +0000)]
[project @ 2001-08-22 15:35:06 by simonpj]
Fix bug in result type sigs, carelessly introduced by a recent change on my part
simonpj [Wed, 22 Aug 2001 15:27:08 +0000 (15:27 +0000)]
[project @ 2001-08-22 15:27:08 by simonpj]
Formatting only
sewardj [Wed, 22 Aug 2001 14:32:19 +0000 (14:32 +0000)]
[project @ 2001-08-22 14:32:19 by sewardj]
On sparc, create code to shuffle %i0 .. %i3 into %i2 .. %i5 before the
old code. This is a GHASTLY HACK which at least makes f-x-dynamic on
sparc work for callees with up to 16 bytes (4 words) of args.
simonmar [Wed, 22 Aug 2001 12:25:32 +0000 (12:25 +0000)]
[project @ 2001-08-22 12:24:41 by simonmar]
Remove old test suite (subsumed by fptools/testsuite).
sewardj [Wed, 22 Aug 2001 11:45:06 +0000 (11:45 +0000)]
[project @ 2001-08-22 11:45:06 by sewardj]
Count comparisons and bomb about after 100, to avoid infinite loop
due to buggy f-x-dynamic implementation on sparc-solaris.
rrt [Wed, 22 Aug 2001 11:13:19 +0000 (11:13 +0000)]
[project @ 2001-08-22 11:13:19 by rrt]
Clarify further.
rrt [Wed, 22 Aug 2001 11:10:45 +0000 (11:10 +0000)]
[project @ 2001-08-22 11:10:45 by rrt]
Clarify -no-hs-main use (basically, only has any effect when the RTS
is in a DLL).
gla [Wed, 22 Aug 2001 11:02:37 +0000 (11:02 +0000)]
[project @ 2001-08-22 11:02:37 by gla]
gla [Wed, 22 Aug 2001 11:01:23 +0000 (11:01 +0000)]
[project @ 2001-08-22 11:01:23 by gla]
Reference.
gla [Wed, 22 Aug 2001 10:57:54 +0000 (10:57 +0000)]
[project @ 2001-08-22 10:57:54 by gla]
A sample for retainer profiling. nofib/real/cacheprof/
gla [Wed, 22 Aug 2001 10:53:23 +0000 (10:53 +0000)]
[project @ 2001-08-22 10:53:23 by gla]
eepic files created from fig files.
gla [Wed, 22 Aug 2001 10:52:44 +0000 (10:52 +0000)]
[project @ 2001-08-22 10:52:44 by gla]
gla [Wed, 22 Aug 2001 10:51:57 +0000 (10:51 +0000)]
[project @ 2001-08-22 10:51:57 by gla]
A document on the implementation of retainer profiling.
Focuses on the major issues to be considered for the implemetation on the GHC
runtime system.
Also includes a brief user guide.
Gives the details on which files were modified for the implementation.
The idea of retainer profiling appears in the following paper:
`New dimensions in heap profiling'
Colin Runciman and Niklas Rojemo, 1994.
gla [Wed, 22 Aug 2001 10:48:51 +0000 (10:48 +0000)]
[project @ 2001-08-22 10:48:51 by gla]
A document on the implementation of Lag/Drag/Void/Use profiling.
Focuses on the major issues to be considered for the implementation.
Also includes a brief user guide.
Gives the details on which files were modified.
The idea is based upon the following paper:
`Lag, drag, void and use - heap profiling and space-efficeint compilation revisited'
Niklas Rojemo and Colin Runciman, ICFP '96.
gla [Wed, 22 Aug 2001 10:44:43 +0000 (10:44 +0000)]
[project @ 2001-08-22 10:44:43 by gla]
Reorganized all the sections and rewrote most of the contents.
Now describes the actual implementation, not the implementation strategy, which
was the case in the previous version.
Based on the GHC 5.01, and removed all obsolete parts.
Divides the storage manager into four parts: megablock allocator, block allocator,
heap allocator, and garbage collector.
Gives the details of the garbage collector, which should be sufficient for those
who want to analyze its implementation.
simonpj [Wed, 22 Aug 2001 10:00:51 +0000 (10:00 +0000)]
[project @ 2001-08-22 10:00:51 by simonpj]
-------------------------
Fix a demand-analyser bug
-------------------------
This bug led to "entered absent arg" errors.
The fix is in DmdAnal.dmdTransform
-- Important! If we Keep the constructor application, then
-- we need the demands the constructor places (usually lazy)
-- If not, we don't need to. For example:
-- f p@(x,y) = (p,y) -- S(AL)
-- g a b = f (a,b)
-- It's vital that we don't calculate Absent for a!
rrt [Wed, 22 Aug 2001 09:47:37 +0000 (09:47 +0000)]
[project @ 2001-08-22 09:47:37 by rrt]
Point out that -no-hs-main doesn't have any effect unless you're
building DLLs.
simonmar [Tue, 21 Aug 2001 16:18:35 +0000 (16:18 +0000)]
[project @ 2001-08-21 16:18:35 by simonmar]
Update output.
All these tests now work with the current sources, after exposing
several bugs. Tests are great.
simonmar [Tue, 21 Aug 2001 16:04:43 +0000 (16:04 +0000)]
[project @ 2001-08-21 16:04:43 by simonmar]
Oops, I bungled the -no-recomp fix. This probably had something to do
with the fact that -no-recomp is perhaps the worst-named option in the
history of compilers, and the internal variable used to store the
value of -no-recomp actually stores (not -no-recomp), perhaps in an
attempt to reverse the confusion generated by the obsurely named
option. In the end I figured I had a 50/50 chance of getting it
right...
simonmar [Tue, 21 Aug 2001 15:54:22 +0000 (15:54 +0000)]
[project @ 2001-08-21 15:54:22 by simonmar]
Look for the source file first, so we don't miss it if there's an hi
file in the current directory.
sewardj [Tue, 21 Aug 2001 15:22:09 +0000 (15:22 +0000)]
[project @ 2001-08-21 15:22:09 by sewardj]
Handle the R_SPARC_UA32 relocation type, as reported by Armin
Groesslinger.
/* According to the Sun documentation:
R_SPARC_UA32
This relocation type resembles R_SPARC_32, except it refers to an
unaligned word. That is, the word to be relocated must be treated
as four separate bytes with arbitrary alignment, not as a word
aligned according to the architecture requirements.
(JRS: which means that freeloading on the R_SPARC_32 case
is probably wrong, but hey ...)
*/
simonmar [Tue, 21 Aug 2001 14:45:13 +0000 (14:45 +0000)]
[project @ 2001-08-21 14:45:13 by simonmar]
update output
simonmar [Tue, 21 Aug 2001 14:44:42 +0000 (14:44 +0000)]
[project @ 2001-08-21 14:44:42 by simonmar]
Test various forms of :info
simonmar [Tue, 21 Aug 2001 14:44:22 +0000 (14:44 +0000)]
[project @ 2001-08-21 14:44:22 by simonmar]
Test that System.exitWith doesn't kill the interpreter
sewardj [Tue, 21 Aug 2001 14:38:04 +0000 (14:38 +0000)]
[project @ 2001-08-21 14:38:04 by sewardj]
Go back to using a relative path name for the config.h include.
This is for the same reason that we do so in ghc/compiler/*, which
is that saying -I$(GHC_INCLUDE_DIR) confuses 4.08 series compilers.
simonmar [Tue, 21 Aug 2001 14:35:37 +0000 (14:35 +0000)]
[project @ 2001-08-21 14:35:37 by simonmar]
Make local bindings work on the GHCi command line again.
simonmar [Tue, 21 Aug 2001 14:34:58 +0000 (14:34 +0000)]
[project @ 2001-08-21 14:34:58 by simonmar]
make -no-recomp work with --make
simonmar [Tue, 21 Aug 2001 14:34:25 +0000 (14:34 +0000)]
[project @ 2001-08-21 14:34:25 by simonmar]
comment reformatting only
simonpj [Tue, 21 Aug 2001 13:21:39 +0000 (13:21 +0000)]
[project @ 2001-08-21 13:21:39 by simonpj]
-----------------------
Fix a tyvar scoping bug
-----------------------
This program:
data T = forall a. T a (a->Int)
f :: T -> T
f (T (x::a) f) = T (undefined::a) f
gave the error
Inferred type is less polymorphic than expected
Quantified type variable `a' is unified with another quantified type variable `a'
When checking a pattern that binds f :: a -> Int
In the definition of `f': f (T (x :: a) f) = T (undefined :: a) f
This is of course bogus. The fix is in TcMatches.tcMatchPats, where the
in-scope tyvars should be un-extended before calling tcCheckExistentialPat.
simonmar [Tue, 21 Aug 2001 13:15:05 +0000 (13:15 +0000)]
[project @ 2001-08-21 13:15:05 by simonmar]
Use -ignore-dot-ghci for the GHCi tests.
rrt [Tue, 21 Aug 2001 13:14:51 +0000 (13:14 +0000)]
[project @ 2001-08-21 13:14:51 by rrt]
Fix include of config.h
simonpj [Tue, 21 Aug 2001 12:56:06 +0000 (12:56 +0000)]
[project @ 2001-08-21 12:56:05 by simonpj]
Further corrections to type validity checking
sewardj [Tue, 21 Aug 2001 10:12:02 +0000 (10:12 +0000)]
[project @ 2001-08-21 10:12:02 by sewardj]
Teach it about MUT_VAR.
simonmar [Tue, 21 Aug 2001 10:03:04 +0000 (10:03 +0000)]
[project @ 2001-08-21 10:03:04 by simonmar]
Another case of parenthesising operator names, this time in a ConDecl.
simonpj [Tue, 21 Aug 2001 10:00:22 +0000 (10:00 +0000)]
[project @ 2001-08-21 10:00:22 by simonpj]
wibbles
simonpj [Tue, 21 Aug 2001 09:59:33 +0000 (09:59 +0000)]
[project @ 2001-08-21 09:59:33 by simonpj]
Fix tycon assert failure
simonmar [Tue, 21 Aug 2001 09:36:15 +0000 (09:36 +0000)]
[project @ 2001-08-21 09:36:15 by simonmar]
document the requirement for source files in --make.
simonmar [Tue, 21 Aug 2001 09:32:26 +0000 (09:32 +0000)]
[project @ 2001-08-21 09:32:26 by simonmar]
document the requirement for source files in :load.
simonmar [Tue, 21 Aug 2001 09:25:48 +0000 (09:25 +0000)]
[project @ 2001-08-21 09:25:48 by simonmar]
Accept The Truth and disallow loading any home modules which don't
have a source file.
The reason is that the compilation manager can't figure out
dependencies unless it has the source file to browse through -
previously there was a half-hearted attempt to let you get away with
just an object + interface file, but it didn't work in general.
Better just to disallow it altogether.
Note that this applies to --make too.
rrt [Tue, 21 Aug 2001 09:04:22 +0000 (09:04 +0000)]
[project @ 2001-08-21 09:04:22 by rrt]
Remove unused function isSlash
rrt [Tue, 21 Aug 2001 09:03:32 +0000 (09:03 +0000)]
[project @ 2001-08-21 09:03:32 by rrt]
Fix ghc-pkg to find package.conf when installed on Windows
simonmar [Tue, 21 Aug 2001 08:59:41 +0000 (08:59 +0000)]
[project @ 2001-08-21 08:59:41 by simonmar]
Add a case so that tyConTheta works for tuples (made this change
earlier but forgot to commit it - it fixes the panic when you do :info
() in GHCi).
simonmar [Tue, 21 Aug 2001 08:53:22 +0000 (08:53 +0000)]
[project @ 2001-08-21 08:53:22 by simonmar]
Allow renameFile to rename dangling symlinks. We use lstat, but check
for HAVE_LSTAT first.
simonpj [Mon, 20 Aug 2001 16:50:13 +0000 (16:50 +0000)]
[project @ 2001-08-20 16:50:13 by simonpj]
-------------------------------------
Make NOINLINE zap the strictness info
-------------------------------------
Make a NOINLINE pragma zap strictness information.
Reasons given in the WorkWrap comment:
-- Furthermore, zap the strictess info in the Id. Why? Because
-- the NOINLINE says "don't expose any of the inner workings at the call
-- site" and the strictness is certainly an inner working.
--
-- More concretely, the demand analyser discovers the following strictness
-- for unsafePerformIO: C(U(AV))
-- But then consider
-- unsafePerformIO (\s -> let r = f x in
-- case writeIORef v r s of (# s1, _ #) ->
-- (# s1, r #)
-- The strictness analyser will find that the binding for r is strict,
-- (becuase of uPIO's strictness sig), and so it'll evaluate it before
-- doing the writeIORef. This actually makes tests/lib/should_run/memo002
-- get a deadlock!
--
-- Solution: don't expose the strictness of unsafePerformIO.
This fixes the memo002 deadlock.
simonpj [Mon, 20 Aug 2001 16:48:50 +0000 (16:48 +0000)]
[project @ 2001-08-20 16:48:50 by simonpj]
Add assertion
simonmar [Mon, 20 Aug 2001 16:17:17 +0000 (16:17 +0000)]
[project @ 2001-08-20 16:17:17 by simonmar]
- be more informative about primitive types: they are identified as
such, and a declaration is printed out as if the thing was an
abstract data type (this at least tells you what the arity of the
tycon is).
- print 'infix 4 elem' as 'infix 4 `elem`'.
simonmar [Mon, 20 Aug 2001 16:15:34 +0000 (16:15 +0000)]
[project @ 2001-08-20 16:15:34 by simonmar]
Do something vaguely useful in ifaceTyCls when presented with a
primitive type constructor. We pretend it's an abstract data type for
now.
sof [Mon, 20 Aug 2001 14:57:42 +0000 (14:57 +0000)]
[project @ 2001-08-20 14:57:42 by sof]
sigemptyset: may be implemented as a macro on some plats,
so wrap it up in an inline function to get the C types
right. (Thomas Nordin, using OpenBSD, spotted this one).
simonmar [Mon, 20 Aug 2001 14:44:05 +0000 (14:44 +0000)]
[project @ 2001-08-20 14:44:05 by simonmar]
This StablePtr test is old, most of the features it uses are
deprecated and have been replaced by newer mechanisms (eg. foreign
export) which is tested elsewhere.
simonpj [Mon, 20 Aug 2001 14:18:30 +0000 (14:18 +0000)]
[project @ 2001-08-20 14:18:30 by simonpj]
Amplify comment on mkMachInt a little
simonmar [Mon, 20 Aug 2001 14:10:02 +0000 (14:10 +0000)]
[project @ 2001-08-20 14:10:02 by simonmar]
Remove the in-range assertions on mkMachInt/mkMachWord. They clearly
aren't true, because there's nothing stopping you from writing an
out-of-range Int# literal (although that's the only way I can see for
these to arise).
The wider issue is what should be done about out-of-range Int#
literals; I vaguely remember that at some point we disallowed them,
but I can't find anything in the logs. The case which triggered the
assertion, namely "intToWord# 0xffff0000" would appear to be a
legitimate use for an out-of-range Int# literal though, given that
you can't write Word# literals directly.
sewardj [Mon, 20 Aug 2001 13:43:18 +0000 (13:43 +0000)]
[project @ 2001-08-20 13:43:18 by sewardj]
I have braved the insanity of the Sparc calling conventions and lived
to tell the tale. This commit adds support for foreign import
{static,dynamic} for Sparc in GHCi.
simonmar [Mon, 20 Aug 2001 13:18:17 +0000 (13:18 +0000)]
[project @ 2001-08-20 13:18:17 by simonmar]
Commit a new autoheader-generated version of this file.
simonmar [Mon, 20 Aug 2001 13:17:06 +0000 (13:17 +0000)]
[project @ 2001-08-20 13:17:06 by simonmar]
It isn't necessary to put HAVE_DLOPEN in here, autoheader can figure
that out for itself.
simonmar [Mon, 20 Aug 2001 13:15:52 +0000 (13:15 +0000)]
[project @ 2001-08-20 13:15:52 by simonmar]
dunno what DATA_SECTION_WIBBLE is supposed to be, but it doesn't
appear anywhere else in the source tree so I'm removing it.
simonmar [Mon, 20 Aug 2001 13:15:04 +0000 (13:15 +0000)]
[project @ 2001-08-20 13:15:04 by simonmar]
check for lstat()
chak [Mon, 20 Aug 2001 12:36:10 +0000 (12:36 +0000)]
[project @ 2001-08-20 12:36:10 by chak]
Added two links to CVS
simonpj [Mon, 20 Aug 2001 11:00:18 +0000 (11:00 +0000)]
[project @ 2001-08-20 11:00:18 by simonpj]
Remove the identity-substitution "optimisation" from zip_ty_env.
-- There used to be a special case for when
-- ty == TyVarTy tv
-- (a not-uncommon case) in which case the substitution was dropped.
-- But the type-tidier changes the print-name of a type variable without
-- changing the unique, and that led to a bug. Why? Pre-tidying, we had
-- a type {Foo t}, where Foo is a one-method class. So Foo is really a newtype.
-- And it happened that t was the type variable of the class. Post-tiding,
-- it got turned into {Foo t2}. The ext-core printer expanded this using
-- sourceTypeRep, but that said "Oh, t == t2" because they have the same unique,
-- and so generated a rep type mentioning t not t2.
--
-- Simplest fix is to nuke the "optimisation"
simonmar [Mon, 20 Aug 2001 10:20:34 +0000 (10:20 +0000)]
[project @ 2001-08-20 10:20:34 by simonmar]
Now copes with more forms of identifiers, as suggested by Marcin.
simonmar [Mon, 20 Aug 2001 10:19:47 +0000 (10:19 +0000)]
[project @ 2001-08-20 10:19:47 by simonmar]
Add a new entry point: parseIdentifier, which parses a qualified or
non-qualified operator or variable, including parenthesised and
backquoted forms, and the special identifiers [], (), (,), (,,) etc.
simonpj [Mon, 20 Aug 2001 08:17:38 +0000 (08:17 +0000)]
[project @ 2001-08-20 08:17:38 by simonpj]
Fix (another) "missing instnace" bug in the renamer.
This one interacted with the interactive loop in ghci.
simonpj [Mon, 20 Aug 2001 07:54:33 +0000 (07:54 +0000)]
[project @ 2001-08-20 07:54:33 by simonpj]
Improve error messages from the typechecker,
after a suggestion from Alastair Reid.
simonpj [Mon, 20 Aug 2001 07:48:36 +0000 (07:48 +0000)]
[project @ 2001-08-20 07:48:36 by simonpj]
Trim import lists
simonpj [Mon, 20 Aug 2001 07:48:05 +0000 (07:48 +0000)]
[project @ 2001-08-20 07:48:05 by simonpj]
Print implicit-parameter bindings properly
sof [Sun, 19 Aug 2001 20:14:22 +0000 (20:14 +0000)]
[project @ 2001-08-19 20:14:22 by sof]
Nuke uses of LEADING_UNDERSCORE; use Config.cLeadingUnderscore instead.
qrczak [Sat, 18 Aug 2001 11:55:48 +0000 (11:55 +0000)]
[project @ 2001-08-18 11:55:48 by qrczak]
Use char * instead of void * for pointer arithmetic.
sof [Sat, 18 Aug 2001 01:15:36 +0000 (01:15 +0000)]
[project @ 2001-08-18 01:15:36 by sof]
Don't use a hardwired tmpdir, consult TMP and TEMP (via GetTempPath()).
sof [Fri, 17 Aug 2001 22:29:06 +0000 (22:29 +0000)]
[project @ 2001-08-17 22:29:06 by sof]
Add -I$(GHC_INCLUDE_DIR) to SRC_MKDEPENDHS_OPTS; ghc-4.0x
needs this since 'mkdependHS' also chases #includes.
Not an issue with ghc-5.xx's dep-generator, since it invokes
CPP prior to gathering up the imports.
This should bring ghc-4.08-based nightly builds back to life.
apt [Fri, 17 Aug 2001 17:18:54 +0000 (17:18 +0000)]
[project @ 2001-08-17 17:18:51 by apt]
How I spent my summer vacation.
Primops
-------
The format of the primops.txt.pp file has been enhanced to allow
(latex-style) primop descriptions to be included. There is a new flag
to genprimopcode that generates documentation including these
descriptions. A first cut at descriptions of the more interesting
primops has been made, and the file has been reordered a bit.
31-bit words
------------
The front end now can cope with the possibility of 31-bit (or even 30-bit)
Int# and Word# types. The only current use of this is to generate
external .core files that can be translated into OCAML source files
(OCAML uses a one-bit tag to distinguish integers from pointers).
The only way to get this right now is by hand-defining the preprocessor
symbol WORD_SIZE_IN_BITS, which is normally set automatically from
the familiar WORD_SIZE_IN_BYTES.
Just in case 31-bit words are used, we now have Int32# and Word32# primitive types
and an associated family of operators, paralleling the existing 64-bit
stuff. Of course, none of the operators actually need to be implemented
in the absence of a 31-bit backend.
There has also been some minor re-jigging of the 32 vs. 64 bit stuff.
See the description at the top of primops.txt.pp file for more details.
Note that, for the first time, the *type* of a primop can now depend
on the target word size.
Also, the family of primops intToInt8#, intToInt16#, etc.
have been renamed narrow8Int#, narrow16Int#, etc., to emphasize
that they work on Int#'s and don't actually convert between types.
Addresses
---------
As another part of coping with the possibility of 31-bit ints,
the addr2Int# and int2Addr# primops are now thoroughly deprecated
(and not even defined in the 31-bit case) and all uses
of them have been removed except from the (deprecated) module
hslibs/lang/Addr
Addr# should now be treated as a proper abstract type, and has these suitable operators:
nullAddr# : Int# -> Addr# (ignores its argument; nullary primops cause problems at various places)
plusAddr# : Addr# -> Int# -> Addr#
minusAddr : Addr# -> Addr# -> Int#
remAddr# : Addr# -> Int# -> Int#
Obviously, these don't allow completely arbitrary offsets if 31-bit ints are
in use, but they should do for all practical purposes.
It is also still possible to generate an address constant, and there is a built-in rule
that makes use of this to remove the nullAddr# calls.
Misc
----
There is a new compile flag -fno-code that causes GHC to quit after generating .hi files
and .core files (if requested) but before generating STG.
Z-encoded names for tuples have been rationalized; e.g.,
Z3H now means an unboxed 3-tuple, rather than an unboxed
tuple with 3 commas (i.e., a 4-tuple)!
Removed misc. litlits in hslibs/lang
Misc. small changes to external core format. The external core description
has also been substantially updated, and incorporates the automatically-generated
primop documentation; its in the repository at /papers/ext-core/core.tex.
A little make-system addition to allow passing CPP options to compiler and
library builds.
sof [Fri, 17 Aug 2001 16:06:30 +0000 (16:06 +0000)]
[project @ 2001-08-17 16:06:30 by sof]
- have SysTools.FileOption take a prefix that is not to be transformed
(this is to accommodate MS-style cmd-line options of the kind: "/out=foo.obj")
- have users of Finder.mkHomeModuleLocn catch up with recent change to its type.
simonmar [Fri, 17 Aug 2001 15:46:54 +0000 (15:46 +0000)]
[project @ 2001-08-17 15:46:54 by simonmar]
bugfix for -G1
simonmar [Fri, 17 Aug 2001 14:44:54 +0000 (14:44 +0000)]
[project @ 2001-08-17 14:44:54 by simonmar]
fix a profiling bug: the cost centre stack in a raise_closure wasn't
being initialised.
simonmar [Fri, 17 Aug 2001 12:56:55 +0000 (12:56 +0000)]
[project @ 2001-08-17 12:56:55 by simonmar]
The .hi file wasn't tracking the module name (my fault). Fix it.
sewardj [Fri, 17 Aug 2001 12:43:24 +0000 (12:43 +0000)]
[project @ 2001-08-17 12:43:24 by sewardj]
On 4.08.X compilers, just make rawSystem be System.system. This is
so we can still build stage1s with 4.08.X. It won't work on Win32
but the minimum compiler to build a stage1 for Win32 is 5.01 AFAICS.
rrt [Fri, 17 Aug 2001 11:20:00 +0000 (11:20 +0000)]
[project @ 2001-08-17 11:20:00 by rrt]
Add rules for way "i" for maing libraries, so that a DLL rather than a .a
gets built, and with al rather than ld.
rrt [Fri, 17 Aug 2001 11:14:28 +0000 (11:14 +0000)]
[project @ 2001-08-17 11:14:28 by rrt]
std.dll now gets made by target.mk rules
rrt [Fri, 17 Aug 2001 11:13:04 +0000 (11:13 +0000)]
[project @ 2001-08-17 11:13:04 by rrt]
Add a dummy function _ErrorHdrHook to return the address of ErrorHdrHook.
Dunno how this ever compiled before. Maybe this is just a special Friday
effect. Maybe I shouldn't be committing stuff today. Maybe I should just
give up now.