[GHC] #8078: Core lint failure for profiled code

GHC ghc-devs at haskell.org
Sun Jul 21 00:20:06 CEST 2013


#8078: Core lint failure for profiled code
---------------------------------------+-----------------------------------
        Reporter:  ezyang              |            Owner:
            Type:  bug                 |           Status:  new
        Priority:  normal              |        Milestone:
       Component:  Compiler            |          Version:  7.7
      Resolution:                      |         Keywords:
Operating System:  Unknown/Multiple    |     Architecture:
 Type of failure:  Compile-time crash  |  Unknown/Multiple
       Test Case:  T4492               |       Difficulty:  Unknown
        Blocking:                      |       Blocked By:
                                       |  Related Tickets:
---------------------------------------+-----------------------------------
Description changed by ezyang:

Old description:

> Probably related to the cardinality changes.  Here is the dump:
>
> =====> T4492(profasm) 3361 of 3686 [2, 51, 0]
> cd ./indexed-types/should_compile && '/srv/code/ghc-build-
> sandbox/inplace/bin/ghc-stage2' -fforce-recomp -dcore-lint -dcmm-lint
> -dno-debug-output -no-user-package-db -rtsopts -fno-ghci-history -c
> T4492.hs -O -prof -static -auto-all   >T4492.comp.stderr 2>&1
> Compile failed (status 256) errors were:
> *** Core Lint errors : in result of CorePrep ***
> {-# LINE 12 "T4492.hs #-}: Warning:
>     [RHS of T4492.$fCMaybe_$cgo :: forall a_aex.
>                                    T4492.C a_aex =>
>                                    forall b_ae0.
>                                    (forall a1_ae1. Data.Maybe.Maybe
> a1_ae1 -> b_ae0 -> a1_ae1)
>                                    -> Data.Maybe.Maybe a_aex
>                                    -> T4492.F (Data.Maybe.Maybe a_aex)
> b_ae0]
>     Demand type has 4 arguments, rhs has 3 arguments, T4492.$fCMaybe_$cgo
>     Binder's strictness signature: DmdType
> <C(C(S)),1*C1(C1(U))><L,U><L,U><L,U>
> *** Offending Program ***
> T4492.go [InlPrag=INLINE]
>   :: forall a_adZ.
>      T4492.C a_adZ =>
>      forall b_ae0.
>      (forall a_ae1. Data.Maybe.Maybe a_ae1 -> b_ae0 -> a_ae1)
>      -> a_adZ -> T4492.F a_adZ b_ae0
> [GblId[ClassOp],
>  Arity=1,
>  Caf=NoCafRefs,
>  Str=DmdType <S,U>,
>  Unf=OtherCon []]
> T4492.go =
>   \ (@ a_adZ) (tpl_sgH [Occ=Once] :: T4492.C a_adZ) ->
>     tpl_sgH
>     `cast` (T4492.NTCo:C[0] <a_adZ>
>             :: T4492.C a_adZ
>                  ~#
>                (forall b_ae0.
>                 (forall a_ae1. Data.Maybe.Maybe a_ae1 -> b_ae0 -> a_ae1)
>                 -> a_adZ -> T4492.F a_adZ b_ae0))
>
> T4492.$fCMaybe1
>   :: forall a_aex.
>      T4492.C a_aex =>
>      forall b_afH.
>      (forall a1_ae1. Data.Maybe.Maybe a1_ae1 -> b_afH -> a1_ae1)
>      -> Data.Maybe.Maybe a_aex -> b_afH -> T4492.F a_aex b_afH
> [GblId,
>  Arity=4,
>  Caf=NoCafRefs,
>  Str=DmdType <C(C(S)),1*C1(C1(U))><L,U><L,U><L,U>,
>  Unf=OtherCon []]
> T4492.$fCMaybe1 =
>   \ (@ a_aex)
>     ($dC_sgI [Occ=OnceL] :: T4492.C a_aex)
>     (@ b_afH)
>     (f_sgJ
>        :: forall a1_ae1. Data.Maybe.Maybe a1_ae1 -> b_afH -> a1_ae1)
>     (a1_sgK [Occ=OnceL] :: Data.Maybe.Maybe a_aex)
>     (b1_sgL [Occ=OnceL] :: b_afH) ->
>     scctick<go>
>     let {
>       sat_sgM [Occ=Once] :: a_aex
>       [LclId, Str=DmdType]
>       sat_sgM = f_sgJ @ a_aex a1_sgK b1_sgL } in
>     ($dC_sgI
>      `cast` (T4492.NTCo:C[0] <a_aex>
>              :: T4492.C a_aex
>                   ~#
>                 (forall b_ae0.
>                  (forall a_ae1. Data.Maybe.Maybe a_ae1 -> b_ae0 -> a_ae1)
>                  -> a_aex -> T4492.F a_aex b_ae0)))
>       @ b_afH f_sgJ sat_sgM
>
> T4492.$fCMaybe_$cgo
>   :: forall a_aex.
>      T4492.C a_aex =>
>      forall b_ae0.
>      (forall a1_ae1. Data.Maybe.Maybe a1_ae1 -> b_ae0 -> a1_ae1)
>      -> Data.Maybe.Maybe a_aex -> T4492.F (Data.Maybe.Maybe a_aex) b_ae0
> [GblId,
>  Arity=3,
>  Caf=NoCafRefs,
>  Str=DmdType <C(C(S)),1*C1(C1(U))><L,U><L,U><L,U>,
>  Unf=OtherCon []]
> T4492.$fCMaybe_$cgo =
>   (\ (@ a_aex)
>      (eta_B3 [Occ=Once] :: T4492.C a_aex)
>      (@ b_afH)
>      (eta_B2 [Occ=Once]
>         :: forall a1_ae1. Data.Maybe.Maybe a1_ae1 -> b_afH -> a1_ae1)
>      (eta_B1 [Occ=Once] :: Data.Maybe.Maybe a_aex) ->
>      T4492.$fCMaybe1 @ a_aex eta_B3 @ b_afH eta_B2 eta_B1)
>   `cast` (forall a_aex.
>           <T4492.C a_aex>
>           -> forall b_afH.
>              <forall a1_ae1. Data.Maybe.Maybe a1_ae1 -> b_afH -> a1_ae1>
>              -> <Data.Maybe.Maybe a_aex>
>              -> Sym (T4492.TFCo:R:FMaybeb[0] <a_aex> <b_afH>)
>           :: (forall a_aex.
>               T4492.C a_aex =>
>               forall b_afH.
>               (forall a1_ae1. Data.Maybe.Maybe a1_ae1 -> b_afH -> a1_ae1)
>               -> Data.Maybe.Maybe a_aex -> b_afH -> T4492.F a_aex b_afH)
>                ~#
>              (forall a_aex.
>               T4492.C a_aex =>
>               forall b_afH.
>               (forall a1_ae1. Data.Maybe.Maybe a1_ae1 -> b_afH -> a1_ae1)
>               -> Data.Maybe.Maybe a_aex
>               -> T4492.F (Data.Maybe.Maybe a_aex) b_afH))
>
> T4492.$fCMaybe [InlPrag=INLINE (sat-args=0)]
>   :: forall a_aex. T4492.C a_aex => T4492.C (Data.Maybe.Maybe a_aex)
> [GblId[DFunId(nt)],
>  Arity=3,
>  Caf=NoCafRefs,
>  Str=DmdType <C(C(S)),1*C1(C1(U))><L,U><L,U><L,U>,
>  Unf=OtherCon []]
> T4492.$fCMaybe =
>   (\ (@ a_aex)
>      (eta_B3 [Occ=Once] :: T4492.C a_aex)
>      (@ b_afH)
>      (eta_B2 [Occ=Once]
>         :: forall a1_ae1. Data.Maybe.Maybe a1_ae1 -> b_afH -> a1_ae1)
>      (eta_B1 [Occ=Once] :: Data.Maybe.Maybe a_aex) ->
>      T4492.$fCMaybe1 @ a_aex eta_B3 @ b_afH eta_B2 eta_B1)
>   `cast` (forall a_aex.
>           <T4492.C a_aex>
>           -> (forall b_afH.
>               <forall a1_ae1. Data.Maybe.Maybe a1_ae1 -> b_afH -> a1_ae1>
>               -> <Data.Maybe.Maybe a_aex>
>               -> Sym (T4492.TFCo:R:FMaybeb[0] <a_aex> <b_afH>))
>              ; Sym (T4492.NTCo:C[0] <Data.Maybe.Maybe a_aex>)
>           :: (forall a_aex.
>               T4492.C a_aex =>
>               forall b_afH.
>               (forall a1_ae1. Data.Maybe.Maybe a1_ae1 -> b_afH -> a1_ae1)
>               -> Data.Maybe.Maybe a_aex -> b_afH -> T4492.F a_aex b_afH)
>                ~#
>              (forall a_aex. T4492.C a_aex => T4492.C (Data.Maybe.Maybe
> a_aex)))
>
> *** End of Offense ***
>

> <no location info>:
> Compilation had errors
>

>
> *** unexpected failure for T4492(profasm)

New description:

 Probably related to the cardinality changes.  Here is the dump:

 {{{
 =====> T4492(profasm) 3361 of 3686 [2, 51, 0]
 cd ./indexed-types/should_compile && '/srv/code/ghc-build-
 sandbox/inplace/bin/ghc-stage2' -fforce-recomp -dcore-lint -dcmm-lint
 -dno-debug-output -no-user-package-db -rtsopts -fno-ghci-history -c
 T4492.hs -O -prof -static -auto-all   >T4492.comp.stderr 2>&1
 Compile failed (status 256) errors were:
 *** Core Lint errors : in result of CorePrep ***
 {-# LINE 12 "T4492.hs #-}: Warning:
     [RHS of T4492.$fCMaybe_$cgo :: forall a_aex.
                                    T4492.C a_aex =>
                                    forall b_ae0.
                                    (forall a1_ae1. Data.Maybe.Maybe a1_ae1
 -> b_ae0 -> a1_ae1)
                                    -> Data.Maybe.Maybe a_aex
                                    -> T4492.F (Data.Maybe.Maybe a_aex)
 b_ae0]
     Demand type has 4 arguments, rhs has 3 arguments, T4492.$fCMaybe_$cgo
     Binder's strictness signature: DmdType
 <C(C(S)),1*C1(C1(U))><L,U><L,U><L,U>
 *** Offending Program ***
 T4492.go [InlPrag=INLINE]
   :: forall a_adZ.
      T4492.C a_adZ =>
      forall b_ae0.
      (forall a_ae1. Data.Maybe.Maybe a_ae1 -> b_ae0 -> a_ae1)
      -> a_adZ -> T4492.F a_adZ b_ae0
 [GblId[ClassOp],
  Arity=1,
  Caf=NoCafRefs,
  Str=DmdType <S,U>,
  Unf=OtherCon []]
 T4492.go =
   \ (@ a_adZ) (tpl_sgH [Occ=Once] :: T4492.C a_adZ) ->
     tpl_sgH
     `cast` (T4492.NTCo:C[0] <a_adZ>
             :: T4492.C a_adZ
                  ~#
                (forall b_ae0.
                 (forall a_ae1. Data.Maybe.Maybe a_ae1 -> b_ae0 -> a_ae1)
                 -> a_adZ -> T4492.F a_adZ b_ae0))

 T4492.$fCMaybe1
   :: forall a_aex.
      T4492.C a_aex =>
      forall b_afH.
      (forall a1_ae1. Data.Maybe.Maybe a1_ae1 -> b_afH -> a1_ae1)
      -> Data.Maybe.Maybe a_aex -> b_afH -> T4492.F a_aex b_afH
 [GblId,
  Arity=4,
  Caf=NoCafRefs,
  Str=DmdType <C(C(S)),1*C1(C1(U))><L,U><L,U><L,U>,
  Unf=OtherCon []]
 T4492.$fCMaybe1 =
   \ (@ a_aex)
     ($dC_sgI [Occ=OnceL] :: T4492.C a_aex)
     (@ b_afH)
     (f_sgJ
        :: forall a1_ae1. Data.Maybe.Maybe a1_ae1 -> b_afH -> a1_ae1)
     (a1_sgK [Occ=OnceL] :: Data.Maybe.Maybe a_aex)
     (b1_sgL [Occ=OnceL] :: b_afH) ->
     scctick<go>
     let {
       sat_sgM [Occ=Once] :: a_aex
       [LclId, Str=DmdType]
       sat_sgM = f_sgJ @ a_aex a1_sgK b1_sgL } in
     ($dC_sgI
      `cast` (T4492.NTCo:C[0] <a_aex>
              :: T4492.C a_aex
                   ~#
                 (forall b_ae0.
                  (forall a_ae1. Data.Maybe.Maybe a_ae1 -> b_ae0 -> a_ae1)
                  -> a_aex -> T4492.F a_aex b_ae0)))
       @ b_afH f_sgJ sat_sgM

 T4492.$fCMaybe_$cgo
   :: forall a_aex.
      T4492.C a_aex =>
      forall b_ae0.
      (forall a1_ae1. Data.Maybe.Maybe a1_ae1 -> b_ae0 -> a1_ae1)
      -> Data.Maybe.Maybe a_aex -> T4492.F (Data.Maybe.Maybe a_aex) b_ae0
 [GblId,
  Arity=3,
  Caf=NoCafRefs,
  Str=DmdType <C(C(S)),1*C1(C1(U))><L,U><L,U><L,U>,
  Unf=OtherCon []]
 T4492.$fCMaybe_$cgo =
   (\ (@ a_aex)
      (eta_B3 [Occ=Once] :: T4492.C a_aex)
      (@ b_afH)
      (eta_B2 [Occ=Once]
         :: forall a1_ae1. Data.Maybe.Maybe a1_ae1 -> b_afH -> a1_ae1)
      (eta_B1 [Occ=Once] :: Data.Maybe.Maybe a_aex) ->
      T4492.$fCMaybe1 @ a_aex eta_B3 @ b_afH eta_B2 eta_B1)
   `cast` (forall a_aex.
           <T4492.C a_aex>
           -> forall b_afH.
              <forall a1_ae1. Data.Maybe.Maybe a1_ae1 -> b_afH -> a1_ae1>
              -> <Data.Maybe.Maybe a_aex>
              -> Sym (T4492.TFCo:R:FMaybeb[0] <a_aex> <b_afH>)
           :: (forall a_aex.
               T4492.C a_aex =>
               forall b_afH.
               (forall a1_ae1. Data.Maybe.Maybe a1_ae1 -> b_afH -> a1_ae1)
               -> Data.Maybe.Maybe a_aex -> b_afH -> T4492.F a_aex b_afH)
                ~#
              (forall a_aex.
               T4492.C a_aex =>
               forall b_afH.
               (forall a1_ae1. Data.Maybe.Maybe a1_ae1 -> b_afH -> a1_ae1)
               -> Data.Maybe.Maybe a_aex
               -> T4492.F (Data.Maybe.Maybe a_aex) b_afH))

 T4492.$fCMaybe [InlPrag=INLINE (sat-args=0)]
   :: forall a_aex. T4492.C a_aex => T4492.C (Data.Maybe.Maybe a_aex)
 [GblId[DFunId(nt)],
  Arity=3,
  Caf=NoCafRefs,
  Str=DmdType <C(C(S)),1*C1(C1(U))><L,U><L,U><L,U>,
  Unf=OtherCon []]
 T4492.$fCMaybe =
   (\ (@ a_aex)
      (eta_B3 [Occ=Once] :: T4492.C a_aex)
      (@ b_afH)
      (eta_B2 [Occ=Once]
         :: forall a1_ae1. Data.Maybe.Maybe a1_ae1 -> b_afH -> a1_ae1)
      (eta_B1 [Occ=Once] :: Data.Maybe.Maybe a_aex) ->
      T4492.$fCMaybe1 @ a_aex eta_B3 @ b_afH eta_B2 eta_B1)
   `cast` (forall a_aex.
           <T4492.C a_aex>
           -> (forall b_afH.
               <forall a1_ae1. Data.Maybe.Maybe a1_ae1 -> b_afH -> a1_ae1>
               -> <Data.Maybe.Maybe a_aex>
               -> Sym (T4492.TFCo:R:FMaybeb[0] <a_aex> <b_afH>))
              ; Sym (T4492.NTCo:C[0] <Data.Maybe.Maybe a_aex>)
           :: (forall a_aex.
               T4492.C a_aex =>
               forall b_afH.
               (forall a1_ae1. Data.Maybe.Maybe a1_ae1 -> b_afH -> a1_ae1)
               -> Data.Maybe.Maybe a_aex -> b_afH -> T4492.F a_aex b_afH)
                ~#
              (forall a_aex. T4492.C a_aex => T4492.C (Data.Maybe.Maybe
 a_aex)))

 *** End of Offense ***


 <no location info>:
 Compilation had errors



 *** unexpected failure for T4492(profasm)
 }}}

--

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8078#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler




More information about the ghc-tickets mailing list