Dynamic types: GHCI works, GHC doesn't?

Andre Pang andrep@cse.unsw.EDU.AU
Sat, 1 Jun 2002 23:23:49 +1000


On Sat, Jun 01, 2002 at 11:01:57PM +1000, Andre Pang wrote:

> It seems that the fromDynamic and fromDyn functions seem to work
> if you load your module into GHCI, but they don't work when you
> compile it into a stand-alone executable with GHC.

.. unless you compile it with -O2:

    23:18(0) .../project/dynamic_types-bug% ghc --make -package lang -O2 DynamicTypesBug.hs 
    ghc-5.02.2: chasing modules from: DynamicTypesBug.hs
    Compiling Main             ( DynamicTypesBug.hs, ./DynamicTypesBug.o )
    ghc: linking ...
    23:18(0) .../project/dynamic_types-bug% ./a.out
    Static type: FootnoteData [Char] Int
    Coerced (dynamic) type: FootnoteData [Char] Int
    Does dynamic type == static type?  True
    Attempting to run fromDynamic on the dynamic type ...
    5. This be the footnote

Weird.

It also seems to work with -O1.

I should note that I observed the buggy GHC behaviour with
-fvia-c as well, regardless of whether gcc-2.95 or gcc-3.1 was
used.

Putting -O0 on the GHC commandline, or omitting the -O option
altogether, appears to trigger the bug.  This doesn't happen with
GHCI (i.e. 'ghci -O0' seems to work).


-- 
#ozone/algorithm <andrep@cse.unsw.EDU.AU>          - b.sc (comp. sci+psych)