typePrimRep invariants

Csaba Hruska csaba.hruska at gmail.com
Sat Dec 1 21:37:31 UTC 2018


I've got the answer at #ghc irc channel.
With resultIsLevPoly it is possible to filter out the problematic types.

Regards,
Csaba

On Fri, Nov 30, 2018 at 11:08 PM Csaba Hruska <csaba.hruska at gmail.com>
wrote:

> Is this problem related to the following?
>
>> {- Note [Error and friends have an "open-tyvar" forall]
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> 'error' and 'undefined' have types
>>         error     :: forall (v :: RuntimeRep) (a :: TYPE v). String -> a
>>         undefined :: forall (v :: RuntimeRep) (a :: TYPE v). a
>> Notice the runtime-representation polymorphism. This ensures that
>> "error" can be instantiated at unboxed as well as boxed types.
>> This is OK because it never returns, so the return type is irrelevant.
>>
>>
>
> On Fri, Nov 30, 2018 at 10:47 PM Csaba Hruska <csaba.hruska at gmail.com>
> wrote:
>
>> Hi,
>>
>> I'd like to export the PrimRep of every binder and data con from Haskell
>> modules.
>>
>> I have a modified GHC 8.6 which serializes the PrimRep for every binder
>> during the compilation. It uses the *typePrimRep* function. When my
>> customised GHC compiles the base library it always thows the following
>> error for the *libraries/base/GHC/Err.hs*
>> <https://github.com/grin-tech/ghc-grin/blob/master/ghc-8.6.2/libraries/base/GHC/Err.hs>
>> module.
>>
>>    1. Does that mean that there is hidden requirement for typePrimRep
>>    input?
>>    2. If so what are the restrictions?
>>    3. Can you see anything in the Err module source code that could not
>>    be a proper input for typePrimRep function?
>>
>>
>> Thanks,
>> Csaba
>>
>> "inplace/bin/ghc-stage1" -hisuf hi -osuf  o -hcsuf hc -static  -H32m -O
>> -Wall      -this-unit-id base-4.12.0.0 -hide-all-packages -i
>> -ilibraries/base/. -ilibraries/base/dist-install/build
>> -Ilibraries/base/dist-install/build
>> -ilibraries/base/dist-install/build/./autogen
>> -Ilibraries/base/dist-install/build/./autogen -Ilibraries/base/include
>> -Ilibraries/base/dist-install/build/include
>> -optP-DOPTIMISE_INTEGER_GCD_LCM -optP-include
>> -optPlibraries/base/dist-install/build/./autogen/cabal_macros.h -package-id
>> ghc-prim-0.5.3 -package-id integer-gmp-1.0.2.0 -package-id rts
>> -this-unit-id base -Wcompat -Wnoncanonical-monad-instances -XHaskell2010
>> -O2 -haddock  -no-user-package-db -rtsopts  -Wno-trustworthy-safe
>> -Wno-deprecated-flags     -Wnoncanonical-monad-instances  -odir
>> libraries/base/dist-install/build -hidir libraries/base/dist-install/build
>> -stubdir libraries/base/dist-install/build  -split-sections -dynamic-too -c
>> libraries/base/./GHC/Err.hs -o libraries/base/dist-install/build/GHC/Err.o
>> -dyno libraries/base/dist-install/build/GHC/Err.dyn_o
>> ghc-stage1: panic! (the 'impossible' happened)
>>   (GHC version 8.6.2 for x86_64-unknown-linux):
>>     runtimeRepPrimRep
>>   typePrimRep (a_a1ML :: TYPE r_a1MK)
>>   r_a1MK
>>   Call stack:
>>       CallStack (from HasCallStack):
>>         callStackDoc, called at compiler/utils/Outputable.hs:1160:37 in
>> ghc:Outputable
>>         pprPanic, called at compiler/simplStg/RepType.hs:358:5 in
>> ghc:RepType
>>
>> Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug
>>
>> libraries/base/ghc.mk:4: recipe for target
>> 'libraries/base/dist-install/build/GHC/Err.o' failed
>> make[1]: *** [libraries/base/dist-install/build/GHC/Err.o] Error 1
>> Makefile:122: recipe for target 'all' failed
>> make: *** [all] Error 2
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20181201/87de54ed/attachment.html>


More information about the ghc-devs mailing list