ghc-hetmet.git
22 years ago[project @ 2001-08-27 13:11:44 by simonmar]
simonmar [Mon, 27 Aug 2001 13:11:44 +0000 (13:11 +0000)]
[project @ 2001-08-27 13:11:44 by simonmar]
a couple of tweaks to the hc-file-bundle target:
  - Add -r option to ${RM} to blow away an existing binary-dist
    temporary directory if present.
  - Fix bogons in the bundle building code.

22 years ago[project @ 2001-08-27 11:45:23 by simonmar]
simonmar [Mon, 27 Aug 2001 11:45:23 +0000 (11:45 +0000)]
[project @ 2001-08-27 11:45:23 by simonmar]
foldr is a good consumer (but not necessarily a good producer)

22 years ago[project @ 2001-08-24 14:41:09 by simonmar]
simonmar [Fri, 24 Aug 2001 14:41:09 +0000 (14:41 +0000)]
[project @ 2001-08-24 14:41:09 by simonmar]
correct off-by-one error in hGetStringBuffer

22 years ago[project @ 2001-08-24 13:50:03 by sewardj]
sewardj [Fri, 24 Aug 2001 13:50:03 +0000 (13:50 +0000)]
[project @ 2001-08-24 13:50:03 by sewardj]
Fill in details for 5.02.

22 years ago[project @ 2001-08-24 13:22:25 by simonpj]
simonpj [Fri, 24 Aug 2001 13:22:25 +0000 (13:22 +0000)]
[project @ 2001-08-24 13:22:25 by simonpj]
Make when comparing old and new strictness information,
we were being a bit too generous with the old case.
When a function has (say) arity 2, we can't use strictness
info like SSS, because that only applies if the fn is
applied to 3 args.  So it's an unfair comparison.

This commit makes the old->new conversion function more
truthful in this regard, which should eliminate the
erroneously-claimed "worse" strictness results.

22 years ago[project @ 2001-08-24 13:13:59 by chak]
chak [Fri, 24 Aug 2001 13:13:59 +0000 (13:13 +0000)]
[project @ 2001-08-24 13:13:59 by chak]
wibble

22 years ago[project @ 2001-08-24 13:06:36 by simonpj]
simonpj [Fri, 24 Aug 2001 13:06:36 +0000 (13:06 +0000)]
[project @ 2001-08-24 13:06:36 by simonpj]
------------------------------
Another demand analyser glitch
------------------------------

This fixes, I hope, (in an unsatisfactory way) another demand-analyser
glitch, that resulted in a runtime "entered absent arg" error.

In DmdAnal.annotateLamIdBndr, we now have:

-- This gross hack is needed because otherwise we label
-- a lambda binder with demand 'B'.  But in terms of calling
-- conventions that's Abs, because we don't pass it.  But
-- when we do a w/w split we get
-- fw x = (\x y:B -> ...) x (error "oops")
-- And then the simplifier things the 'B' is a strict demand
-- and evaluates the (error "oops").  Sigh

The hack zaps 'B' to 'Abs', just like 'lazify' does.

Need to talk to John about what the principled reasons are.

22 years ago[project @ 2001-08-24 12:47:04 by simonpj]
simonpj [Fri, 24 Aug 2001 12:47:04 +0000 (12:47 +0000)]
[project @ 2001-08-24 12:47:04 by simonpj]
Improve error message for mis-matched contexts

22 years ago[project @ 2001-08-24 12:45:28 by simonpj]
simonpj [Fri, 24 Aug 2001 12:45:28 +0000 (12:45 +0000)]
[project @ 2001-08-24 12:45:28 by simonpj]
Fix an obscure but easy bug in SpecConstr

22 years ago[project @ 2001-08-24 11:39:49 by simonmar]
simonmar [Fri, 24 Aug 2001 11:39:49 +0000 (11:39 +0000)]
[project @ 2001-08-24 11:39:49 by simonmar]
- document :info
- bring up to date info about FFI support

22 years ago[project @ 2001-08-24 09:41:27 by rrt]
rrt [Fri, 24 Aug 2001 09:41:27 +0000 (09:41 +0000)]
[project @ 2001-08-24 09:41:27 by rrt]
Remove unused import of DmdType

22 years ago[project @ 2001-08-24 09:33:14 by sewardj]
sewardj [Fri, 24 Aug 2001 09:33:14 +0000 (09:33 +0000)]
[project @ 2001-08-24 09:33:14 by sewardj]
First cut at new compiler + interpreter changes for 5.02.  Also rearranged
the order of sections.

22 years ago[project @ 2001-08-24 09:02:39 by simonpj]
simonpj [Fri, 24 Aug 2001 09:02:39 +0000 (09:02 +0000)]
[project @ 2001-08-24 09:02:39 by simonpj]
Comment only

22 years ago[project @ 2001-08-24 07:58:29 by simonpj]
simonpj [Fri, 24 Aug 2001 07:58:29 +0000 (07:58 +0000)]
[project @ 2001-08-24 07:58:29 by simonpj]
Improve error message for nullary class

22 years ago[project @ 2001-08-24 06:17:56 by chak]
chak [Fri, 24 Aug 2001 06:17:56 +0000 (06:17 +0000)]
[project @ 2001-08-24 06:17:56 by chak]
* Added a brief outline of the handling of command line options
* Revised Reuben's explanation re -no-hs-main according to our email exchange

22 years ago[project @ 2001-08-24 04:00:33 by chak]
chak [Fri, 24 Aug 2001 04:00:33 +0000 (04:00 +0000)]
[project @ 2001-08-24 04:00:33 by chak]
Added SPJ's new -fmax-worker-args to the flag reference

22 years ago[project @ 2001-08-23 22:53:08 by gla]
gla [Thu, 23 Aug 2001 22:53:08 +0000 (22:53 +0000)]
[project @ 2001-08-23 22:53:08 by gla]
Correct typos and minor errors.
Reorganized most of the sections, and the interface subsection appears first in each section.
Made a small change to Figure 1, the overall architecture of the storage manager.
The description on the configuration of the nursery is now correct.
Added a short section on the state of the heap allocator.

22 years ago[project @ 2001-08-23 20:19:16 by qrczak]
qrczak [Thu, 23 Aug 2001 20:19:16 +0000 (20:19 +0000)]
[project @ 2001-08-23 20:19:16 by qrczak]
Don't say that GHC doesn't do fixity resolution on the left hand side
of a binding before deciding which symbol is the function symbol.
This has been fixed.

22 years ago[project @ 2001-08-23 18:23:46 by gla]
gla [Thu, 23 Aug 2001 18:23:46 +0000 (18:23 +0000)]
[project @ 2001-08-23 18:23:46 by gla]
Rephrased a few paragraphs.
Added a paragraph on the interface to retainerSet.
Added 'To do' paragraphs, which may be useful for maintenance.

22 years ago[project @ 2001-08-23 16:27:11 by simonpj]
simonpj [Thu, 23 Aug 2001 16:27:11 +0000 (16:27 +0000)]
[project @ 2001-08-23 16:27:11 by simonpj]
Fix representation finding for recursive newtypes

22 years ago[project @ 2001-08-23 15:34:49 by simonmar]
simonmar [Thu, 23 Aug 2001 15:34:49 +0000 (15:34 +0000)]
[project @ 2001-08-23 15:34:49 by simonmar]
Note that support for generics is currently broken.

22 years ago[project @ 2001-08-23 15:06:59 by simonpj]
simonpj [Thu, 23 Aug 2001 15:06:59 +0000 (15:06 +0000)]
[project @ 2001-08-23 15:06:59 by simonpj]
remove rnsource.hi-boot-5 (part of prev commit)

22 years ago[project @ 2001-08-23 15:05:52 by simonpj]
simonpj [Thu, 23 Aug 2001 15:05:53 +0000 (15:05 +0000)]
[project @ 2001-08-23 15:05:52 by simonpj]
More instance-gate fiddling.  This must be one of the most
tiremsome bits of the entire compiler, and I appear to be
incapable of modifying it without getting it wrong at least
once.

Still, this commit does tidy things up a bit.

* The type renamers (rnHsType, etc) have moved from RnSource
  into a new module RnTypes.

* This breaks a couple of loops, and lets us nuke RnSource.hi-boot.
  Hurrah!

Simon

22 years ago[project @ 2001-08-23 14:44:43 by simonmar]
simonmar [Thu, 23 Aug 2001 14:44:43 +0000 (14:44 +0000)]
[project @ 2001-08-23 14:44:43 by simonmar]
Release notes updated with library changes since 5.00.2.

22 years ago[project @ 2001-08-23 14:41:36 by simonmar]
simonmar [Thu, 23 Aug 2001 14:41:36 +0000 (14:41 +0000)]
[project @ 2001-08-23 14:41:36 by simonmar]
include the 5.02 release notes

22 years ago[project @ 2001-08-23 14:39:02 by simonmar]
simonmar [Thu, 23 Aug 2001 14:39:02 +0000 (14:39 +0000)]
[project @ 2001-08-23 14:39:02 by simonmar]
document -fno-code.

22 years ago[project @ 2001-08-23 14:38:31 by rrt]
rrt [Thu, 23 Aug 2001 14:38:31 +0000 (14:38 +0000)]
[project @ 2001-08-23 14:38:31 by rrt]
The new InstallShield for Windows Installer installer. I won't nuke the old
IS6 one for now, but expect it to go after the GHC 5.02 release.

The new installer uses the standard Windows Installer system, so should be
easier to migrate away from InstallShield to a more automated system in
future, though that will require the setup to be exported (the .ism format
is proprietary to InstallShield).

Also, the entire setup lives in one file rather than a zillion scattered
over a hierarchy with lots of empty directories and space-including
directory names, so it's rather easier to check out!

22 years ago[project @ 2001-08-23 14:38:23 by simonmar]
simonmar [Thu, 23 Aug 2001 14:38:23 +0000 (14:38 +0000)]
[project @ 2001-08-23 14:38:23 by simonmar]
Document -fno-code.

22 years ago[project @ 2001-08-23 12:50:13 by rrt]
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.

22 years ago[project @ 2001-08-23 12:48:54 by rrt]
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.

22 years ago[project @ 2001-08-23 10:55:37 by simonmar]
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.

22 years ago[project @ 2001-08-23 10:53:46 by simonmar]
simonmar [Thu, 23 Aug 2001 10:53:48 +0000 (10:53 +0000)]
[project @ 2001-08-23 10:53:46 by simonmar]
remove unused tests.

22 years ago[project @ 2001-08-23 10:51:19 by simonmar]
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.

22 years ago[project @ 2001-08-23 10:36:50 by sewardj]
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.

22 years ago[project @ 2001-08-23 10:33:36 by simonmar]
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.

22 years ago[project @ 2001-08-23 10:29:53 by rrt]
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.

22 years ago[project @ 2001-08-23 10:06:04 by rrt]
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.

22 years ago[project @ 2001-08-23 10:02:46 by simonmar]
simonmar [Thu, 23 Aug 2001 10:02:46 +0000 (10:02 +0000)]
[project @ 2001-08-23 10:02:46 by simonmar]
markup fixes

22 years ago[project @ 2001-08-23 09:54:45 by simonpj]
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

22 years ago[project @ 2001-08-23 08:54:45 by simonmar]
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).

22 years ago[project @ 2001-08-23 08:45:50 by rrt]
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.

22 years ago[project @ 2001-08-23 08:43:30 by simonpj]
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.

22 years ago[project @ 2001-08-23 08:43:13 by simonpj]
simonpj [Thu, 23 Aug 2001 08:43:13 +0000 (08:43 +0000)]
[project @ 2001-08-23 08:43:13 by simonpj]
Add coment

22 years ago[project @ 2001-08-23 08:36:11 by rrt]
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).

22 years ago[project @ 2001-08-23 07:52:32 by simonpj]
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!

22 years ago[project @ 2001-08-23 07:13:16 by simonpj]
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

22 years ago[project @ 2001-08-22 15:59:35 by rrt]
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.

22 years ago[project @ 2001-08-22 15:54:02 by simonpj]
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

22 years ago[project @ 2001-08-22 15:45:21 by rrt]
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.

22 years ago[project @ 2001-08-22 15:44:15 by rrt]
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.

22 years ago[project @ 2001-08-22 15:39:30 by rrt]
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.

22 years ago[project @ 2001-08-22 15:35:06 by simonpj]
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

22 years ago[project @ 2001-08-22 15:27:08 by simonpj]
simonpj [Wed, 22 Aug 2001 15:27:08 +0000 (15:27 +0000)]
[project @ 2001-08-22 15:27:08 by simonpj]
Formatting only

22 years ago[project @ 2001-08-22 14:32:19 by sewardj]
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.

22 years ago[project @ 2001-08-22 12:24:41 by simonmar]
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).

22 years ago[project @ 2001-08-22 11:45:06 by sewardj]
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.

22 years ago[project @ 2001-08-22 11:13:19 by rrt]
rrt [Wed, 22 Aug 2001 11:13:19 +0000 (11:13 +0000)]
[project @ 2001-08-22 11:13:19 by rrt]
Clarify further.

22 years ago[project @ 2001-08-22 11:10:45 by rrt]
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).

22 years ago[project @ 2001-08-22 11:02:37 by gla]
gla [Wed, 22 Aug 2001 11:02:37 +0000 (11:02 +0000)]
[project @ 2001-08-22 11:02:37 by gla]

22 years ago[project @ 2001-08-22 11:01:23 by gla]
gla [Wed, 22 Aug 2001 11:01:23 +0000 (11:01 +0000)]
[project @ 2001-08-22 11:01:23 by gla]
Reference.

22 years ago[project @ 2001-08-22 10:57:54 by gla]
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/

22 years ago[project @ 2001-08-22 10:53:23 by gla]
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.

22 years ago[project @ 2001-08-22 10:52:44 by gla]
gla [Wed, 22 Aug 2001 10:52:44 +0000 (10:52 +0000)]
[project @ 2001-08-22 10:52:44 by gla]

22 years ago[project @ 2001-08-22 10:51:57 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.

22 years ago[project @ 2001-08-22 10:48:51 by gla]
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.

22 years ago[project @ 2001-08-22 10:44:43 by gla]
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.

22 years ago[project @ 2001-08-22 10:00:51 by simonpj]
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!

22 years ago[project @ 2001-08-22 09:47:37 by rrt]
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.

22 years ago[project @ 2001-08-21 16:18:35 by simonmar]
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.

22 years ago[project @ 2001-08-21 16:04:43 by simonmar]
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...

22 years ago[project @ 2001-08-21 15:54:22 by simonmar]
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.

22 years ago[project @ 2001-08-21 15:22:09 by sewardj]
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 ...)
*/

22 years ago[project @ 2001-08-21 14:45:13 by simonmar]
simonmar [Tue, 21 Aug 2001 14:45:13 +0000 (14:45 +0000)]
[project @ 2001-08-21 14:45:13 by simonmar]
update output

22 years ago[project @ 2001-08-21 14:44:42 by simonmar]
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

22 years ago[project @ 2001-08-21 14:44:22 by simonmar]
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

22 years ago[project @ 2001-08-21 14:38:04 by sewardj]
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.

22 years ago[project @ 2001-08-21 14:35:37 by simonmar]
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.

22 years ago[project @ 2001-08-21 14:34:58 by simonmar]
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

22 years ago[project @ 2001-08-21 14:34:25 by simonmar]
simonmar [Tue, 21 Aug 2001 14:34:25 +0000 (14:34 +0000)]
[project @ 2001-08-21 14:34:25 by simonmar]
comment reformatting only

22 years ago[project @ 2001-08-21 13:21:39 by simonpj]
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.

22 years ago[project @ 2001-08-21 13:15:05 by simonmar]
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.

22 years ago[project @ 2001-08-21 13:14:51 by rrt]
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

22 years ago[project @ 2001-08-21 12:56:05 by simonpj]
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

22 years ago[project @ 2001-08-21 10:12:02 by sewardj]
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.

22 years ago[project @ 2001-08-21 10:03:04 by simonmar]
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.

22 years ago[project @ 2001-08-21 10:00:22 by simonpj]
simonpj [Tue, 21 Aug 2001 10:00:22 +0000 (10:00 +0000)]
[project @ 2001-08-21 10:00:22 by simonpj]
wibbles

22 years ago[project @ 2001-08-21 09:59:33 by simonpj]
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

22 years ago[project @ 2001-08-21 09:36:15 by simonmar]
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.

22 years ago[project @ 2001-08-21 09:32:26 by simonmar]
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.

22 years ago[project @ 2001-08-21 09:25:48 by simonmar]
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.

22 years ago[project @ 2001-08-21 09:04:22 by rrt]
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

22 years ago[project @ 2001-08-21 09:03:32 by rrt]
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

22 years ago[project @ 2001-08-21 08:59:41 by simonmar]
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).

22 years ago[project @ 2001-08-21 08:53:22 by simonmar]
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.

22 years ago[project @ 2001-08-20 16:50:13 by simonpj]
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.

22 years ago[project @ 2001-08-20 16:48:50 by simonpj]
simonpj [Mon, 20 Aug 2001 16:48:50 +0000 (16:48 +0000)]
[project @ 2001-08-20 16:48:50 by simonpj]
Add assertion

22 years ago[project @ 2001-08-20 16:17:17 by simonmar]
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`'.

22 years ago[project @ 2001-08-20 16:15:34 by simonmar]
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.

22 years ago[project @ 2001-08-20 14:57:42 by sof]
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).

22 years ago[project @ 2001-08-20 14:44:05 by simonmar]
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.