[project @ 2001-11-06 14:19:24 by simonpj]
authorsimonpj <unknown>
Tue, 6 Nov 2001 14:19:24 +0000 (14:19 +0000)
committersimonpj <unknown>
Tue, 6 Nov 2001 14:19:24 +0000 (14:19 +0000)
commit52b6297710cf4ff561585541a88a1d8e437614c2
treeafe1e42fe08621c375eef5d5f5528e7e249572e0
parent61ee260aac98028cb46a4be1710194702111ac5b
[project @ 2001-11-06 14:19:24 by simonpj]
---------------------------------------
Fix YET ANOTHER lub/both bug in DmdAnal
---------------------------------------

MERGE TO 5.02 branch (it's a real bug)

Two bugs actually.  One showed up in a program by
Jeremy Manson, and led to an "entered absent arg"
error.  The problem was

Err `lub` U(L,A)  /=  U(L,A)

which is what we had.  It should be

Err `lub` U(L,A) = U(Err `lub` L, Err `lub` A)
 = U(LL)

The second bug was found by Peter Sestoft while
staring at the code.

V `lub` Defer(ds) /= U(L)

It should be Lazy on the RHS.

Very large sigh.
ghc/compiler/stranal/DmdAnal.lhs