[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