#5359: GHC 7.2.1-rc1 panics on `cgLookupPanic`
-------------------------------+--------------------------------------------
Reporter: hvr | Owner: simonpj
Type: bug | Status: new
Priority: highest | Milestone: 7.2.1
Component: Compiler | Version: 7.1
Keywords: | Testcase:
Blockedby: | Difficulty:
Os: Linux | Blocking:
Architecture: x86_64 (amd64) | Failure: Compile-time crash
-------------------------------+--------------------------------------------
Changes (by igloo):
* owner: => simonpj
* priority: normal => highest
* milestone: => 7.2.1
Comment:
Thanks for the report. Here's a single-module testcase:
{{{
{-# LANGUAGE BangPatterns, Rank2Types, MagicHash, UnboxedTuples #-}
module Foo (linesT) where
import GHC.Base
import GHC.Word
import GHC.ST (ST(..), runST)
nullT :: Text -> Bool
nullT (Text _ _ len) = len <= 0
{-# INLINE [1] nullT #-}
spanT :: (Char -> Bool) -> Text -> (Text, Text)
spanT p t@(Text arr off len) = (textP arr off k, textP arr (off+k)
(len-k))
where k = loop 0
loop !i | i >= len || not (p c) = i
| otherwise = loop (i+d)
where Iter c d = iter t i
{-# INLINE spanT #-}
linesT :: Text -> [Text]
linesT ps | nullT ps = []
| otherwise = h : if nullT t
then []
else linesT (unsafeTail t)
where (h,t) = spanT (/= '\n') ps
{-# INLINE linesT #-}
unsafeTail :: Text -> Text
unsafeTail t@(Text arr off len) = Text arr (off+d) (len-d)
where d = iter_ t 0
{-# INLINE unsafeTail #-}
data Iter = Iter {-# UNPACK #-} !Char {-# UNPACK #-} !Int
iter :: Text -> Int -> Iter
iter (Text arr _ _) i = Iter (unsafeChrT m) 1
where m = unsafeIndex arr i
{-# INLINE iter #-}
iter_ :: Text -> Int -> Int
iter_ (Text arr off _) i | m < 0xD800 || m > 0xDBFF = 1
| otherwise = 2
where m = unsafeIndex arr (off+i)
{-# INLINE iter_ #-}
data Text = Text {-# UNPACK #-}!Array {-# UNPACK #-}!Int {-# UNPACK
#-}!Int
text :: Array -> Int -> Int -> Text
text arr off len = Text arr off len
{-# INLINE text #-}
emptyT :: Text
emptyT = Text empty 0 0
{-# INLINE [1] emptyT #-}
textP :: Array -> Int -> Int -> Text
textP arr off len | len == 0 = emptyT
| otherwise = text arr off len
{-# INLINE textP #-}
unsafeChrT :: Word16 -> Char
unsafeChrT (W16# w#) = C# (chr# (word2Int# w#))
{-# INLINE unsafeChrT #-}
data Array = Array ByteArray#
data MArray s = MArray (MutableByteArray# s)
new :: forall s. Int -> ST s (MArray s)
new n@(I# len#)
| n < 0 || n /= 0 = error $ "Data.Text.Array.new: size overflow"
| otherwise = ST $ \s1# ->
case newByteArray# len# s1# of
(# s2#, marr# #) -> (# s2#, MArray marr# #)
{-# INLINE new #-}
unsafeFreeze :: MArray s -> ST s Array
unsafeFreeze (MArray maBA) = ST $ \s# -> (# s#, Array (unsafeCoerce# maBA)
#)
{-# INLINE unsafeFreeze #-}
unsafeIndex :: Array -> Int -> Word16
unsafeIndex (Array aBA) (I# i#) =
case indexWord16Array# aBA i# of r# -> (W16# r#)
{-# INLINE unsafeIndex #-}
empty :: Array
empty = runST (new 0 >>= unsafeFreeze)
}}}
{{{
ghc -dcore-lint -c Foo.hs -O2
}}}
{{{
*** Core Lint warnings : in result of Specialise ***
{-# LINE 22 "Foo.hs #-}:
[RHS of Foo.linesT :: Foo.Text -> [Foo.Text]]
INLINE binder is (non-rule) loop breaker: Foo.linesT
*** Core Lint warnings : in result of Float out(FOS {Lam = Just 0,
Consts = True,
PAPs = False}) ***
{-# LINE 22 "Foo.hs #-}:
[RHS of Foo.linesT :: Foo.Text -> [Foo.Text]]
INLINE binder is (non-rule) loop breaker: Foo.linesT
*** Core Lint warnings : in result of Float inwards ***
{-# LINE 22 "Foo.hs #-}:
[RHS of Foo.linesT :: Foo.Text -> [Foo.Text]]
INLINE binder is (non-rule) loop breaker: Foo.linesT
*** Core Lint warnings : in result of Simplifier ***
{-# LINE 22 "Foo.hs #-}:
[RHS of Foo.linesT :: Foo.Text -> [Foo.Text]]
INLINE binder is (non-rule) loop breaker: Foo.linesT
*** Core Lint warnings : in result of Simplifier ***
{-# LINE 22 "Foo.hs #-}:
[RHS of Foo.linesT :: Foo.Text -> [Foo.Text]]
INLINE binder is (non-rule) loop breaker: Foo.linesT
*** Core Lint warnings : in result of Simplifier ***
{-# LINE 22 "Foo.hs #-}:
[RHS of Foo.linesT :: Foo.Text -> [Foo.Text]]
INLINE binder is (non-rule) loop breaker: Foo.linesT
*** Core Lint warnings : in result of Simplifier ***
{-# LINE 22 "Foo.hs #-}:
[RHS of Foo.linesT :: Foo.Text -> [Foo.Text]]
INLINE binder is (non-rule) loop breaker: Foo.linesT
*** Core Lint warnings : in result of Simplifier ***
{-# LINE 22 "Foo.hs #-}:
[RHS of Foo.linesT :: Foo.Text -> [Foo.Text]]
INLINE binder is (non-rule) loop breaker: Foo.linesT
*** Core Lint warnings : in result of Simplifier ***
{-# LINE 22 "Foo.hs #-}:
[RHS of Foo.linesT :: Foo.Text -> [Foo.Text]]
INLINE binder is (non-rule) loop breaker: Foo.linesT
*** Core Lint warnings : in result of Simplifier ***
{-# LINE 22 "Foo.hs #-}:
[RHS of Foo.linesT :: Foo.Text -> [Foo.Text]]
INLINE binder is (non-rule) loop breaker: Foo.linesT
*** Core Lint warnings : in result of Simplifier ***
{-# LINE 22 "Foo.hs #-}:
[RHS of Foo.linesT :: Foo.Text -> [Foo.Text]]
INLINE binder is (non-rule) loop breaker: Foo.linesT
*** Core Lint warnings : in result of Simplifier ***
{-# LINE 22 "Foo.hs #-}:
[RHS of Foo.linesT :: Foo.Text -> [Foo.Text]]
INLINE binder is (non-rule) loop breaker: Foo.linesT
*** Core Lint warnings : in result of Demand analysis ***
{-# LINE 22 "Foo.hs #-}:
[RHS of Foo.linesT :: Foo.Text -> [Foo.Text]]
INLINE binder is (non-rule) loop breaker: Foo.linesT
*** Core Lint warnings : in result of Worker Wrapper binds ***
{-# LINE 22 "Foo.hs #-}:
[RHS of Foo.linesT :: Foo.Text -> [Foo.Text]]
INLINE binder is (non-rule) loop breaker: Foo.linesT
*** Core Lint warnings : in result of Simplifier ***
{-# LINE 22 "Foo.hs #-}:
[RHS of Foo.linesT :: Foo.Text -> [Foo.Text]]
INLINE binder is (non-rule) loop breaker: Foo.linesT
*** Core Lint warnings : in result of Simplifier ***
{-# LINE 22 "Foo.hs #-}:
[RHS of Foo.linesT :: Foo.Text -> [Foo.Text]]
INLINE binder is (non-rule) loop breaker: Foo.linesT
*** Core Lint warnings : in result of Simplifier ***
{-# LINE 22 "Foo.hs #-}:
[RHS of Foo.linesT :: Foo.Text -> [Foo.Text]]
INLINE binder is (non-rule) loop breaker: Foo.linesT
*** Core Lint warnings : in result of Float out(FOS {Lam = Just 0,
Consts = True,
PAPs = True}) ***
{-# LINE 22 "Foo.hs #-}:
[RHS of Foo.linesT :: Foo.Text -> [Foo.Text]]
INLINE binder is (non-rule) loop breaker: Foo.linesT
*** Core Lint warnings : in result of Common sub-expression ***
{-# LINE 22 "Foo.hs #-}:
[RHS of Foo.linesT :: Foo.Text -> [Foo.Text]]
INLINE binder is (non-rule) loop breaker: Foo.linesT
*** Core Lint warnings : in result of Float inwards ***
{-# LINE 22 "Foo.hs #-}:
[RHS of Foo.linesT :: Foo.Text -> [Foo.Text]]
INLINE binder is (non-rule) loop breaker: Foo.linesT
*** Core Lint warnings : in result of Liberate case ***
{-# LINE 22 "Foo.hs #-}:
[RHS of linesT_rki :: Foo.Text -> [Foo.Text]]
INLINE binder is (non-rule) loop breaker: linesT_rki
{-# LINE 22 "Foo.hs #-}:
[RHS of Foo.linesT :: Foo.Text -> [Foo.Text]]
INLINE binder is (non-rule) loop breaker: Foo.linesT
*** Core Lint errors : in result of Simplifier ***
<no location info>:
In a case alternative: (GHC.Types.I# y_aEB :: GHC.Prim.Int#)
$w$j_sHK is out of scope
*** Offending Program ***
lvl_sHL
:: forall s_aA6.
GHC.Prim.State# s_aA6 -> (# GHC.Prim.State# s_aA6, Foo.Array #)
[LclId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [0] 23 30}]
lvl_sHL =
\ (@ s_aA6)
(s_aDy [Dmd=Just L, Lbv=OneShot] :: GHC.Prim.State# s_aA6) ->
case GHC.Prim.newByteArray# @ s_aA6 0 s_aDy
of _ { (# s2#_atc [Dmd=Just A], marr#_atd [Dmd=Just L] #) ->
(# s2#_atc,
Foo.Array
(marr#_atd
`cast` (UnsafeCo
(GHC.Prim.MutableByteArray# s_aA6) GHC.Prim.ByteArray#
:: GHC.Prim.MutableByteArray# s_aA6 ~
GHC.Prim.ByteArray#)) #)
}
Foo.empty :: Foo.Array
[LclId,
Str=DmdType,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=False,
ConLike=False, Cheap=False, Expandable=False,
Guidance=IF_ARGS [] 20 0}]
Foo.empty = GHC.ST.runSTRep @ Foo.Array lvl_sHL
Foo.emptyT [InlPrag=INLINE[1] (sat-args=0)] :: Foo.Text
[LclId,
Str=DmdType,
Unf=Unf{Src=InlineStable, TopLvl=True, Arity=0, Value=False,
ConLike=False, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=False,boring_ok=False)
Tmpl= case Foo.empty of _ { Foo.Array tpl_B5 [Occ=Once] ->
Foo.Text tpl_B5 0 0
}}]
Foo.emptyT =
case Foo.empty of _ { Foo.Array tpl_B5 [Dmd=Just L] ->
Foo.Text tpl_B5 0 0
}
Foo.nullT [InlPrag=INLINE[1] (sat-args=1)]
:: Foo.Text -> GHC.Types.Bool
[LclId,
Arity=1,
Str=DmdType U(AAL),
Unf=Unf{Src=InlineStable, TopLvl=True, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=False,boring_ok=False)
Tmpl= \ (ds_dBb [Occ=Once!] :: Foo.Text) ->
case ds_dBb of _ { Foo.Text _ _ rb_dBp [Occ=Once] ->
GHC.Prim.<=# rb_dBp 0
}}]
Foo.nullT =
\ (ds_dBb :: Foo.Text) ->
case ds_dBb
of _
{ Foo.Text rb_dBn [Dmd=Just A]
rb_dBo [Dmd=Just A]
rb_dBp [Dmd=Just L] ->
GHC.Prim.<=# rb_dBp 0
}
Foo.unsafeTail [InlPrag=INLINE (sat-args=1)]
:: Foo.Text -> Foo.Text
[LclId,
Arity=1,
Str=DmdType U(LLL)m,
Unf=Unf{Src=InlineStable, TopLvl=True, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=False,boring_ok=False)
Tmpl= \ (t_asQ [Occ=Once!] :: Foo.Text) ->
case t_asQ of _ { Foo.Text rb_dBB rb_dBC rb_dBD
[Occ=Once*] ->
let {
a_sEG :: GHC.Prim.Word#
[LclId,
Unf=Unf{Src=<vanilla>, TopLvl=False, Arity=0,
Value=False,
ConLike=False, Cheap=True, Expandable=True,
Guidance=IF_ARGS [] 1 0}]
a_sEG = GHC.Prim.indexWord16Array# rb_dBB rb_dBC } in
let {
m_at1 :: GHC.Word.Word16
[LclId,
Unf=Unf{Src=<vanilla>, TopLvl=False, Arity=0,
Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [] 10 110}]
m_at1 = GHC.Word.W16# a_sEG } in
case GHC.Classes.||
(GHC.Word.$fOrdWord16_$c<
m_at1
(GHC.Word.$fBitsWord16_$cfromInteger
(GHC.Integer.smallInteger 55296)))
(GHC.Word.$fOrdWord16_$c>
m_at1
(GHC.Word.$fBitsWord16_$cfromInteger
(GHC.Integer.smallInteger 56319)))
of _ {
GHC.Types.False ->
Foo.Text rb_dBB (GHC.Prim.+# rb_dBC 2) (GHC.Prim.-#
rb_dBD 2);
GHC.Types.True ->
Foo.Text rb_dBB (GHC.Prim.+# rb_dBC 1) (GHC.Prim.-#
rb_dBD 1)
}
}}]
Foo.unsafeTail =
\ (t_asQ :: Foo.Text) ->
case t_asQ
of _
{ Foo.Text rb_dBB [Dmd=Just L]
rb_dBC [Dmd=Just L]
rb_dBD [Dmd=Just L] ->
let {
a_sGQ [Dmd=Just L] :: GHC.Prim.Word#
[LclId,
Str=DmdType,
Unf=Unf{Src=<vanilla>, TopLvl=False, Arity=0, Value=False,
ConLike=False, Cheap=True, Expandable=True,
Guidance=IF_ARGS [] 1 0}]
a_sGQ = GHC.Prim.indexWord16Array# rb_dBB rb_dBC } in
case GHC.Prim.ltWord# a_sGQ __word 55296 of _ {
GHC.Types.False ->
case GHC.Prim.gtWord# a_sGQ __word 56319 of _ {
GHC.Types.False ->
Foo.Text rb_dBB (GHC.Prim.+# rb_dBC 2) (GHC.Prim.-# rb_dBD 2);
GHC.Types.True ->
Foo.Text rb_dBB (GHC.Prim.+# rb_dBC 1) (GHC.Prim.-# rb_dBD 1)
};
GHC.Types.True ->
Foo.Text rb_dBB (GHC.Prim.+# rb_dBC 1) (GHC.Prim.-# rb_dBD 1)
}
}
Rec {
Foo.linesT [InlPrag=INLINE (sat-args=1), Occ=LoopBreaker]
:: Foo.Text -> [Foo.Text]
[LclIdX,
Arity=1,
Str=DmdType U(LLL),
Unf=Unf{Src=InlineStable, TopLvl=True, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=False,boring_ok=False)
Tmpl= \ (ps_aqA :: Foo.Text) ->
let {
ds_dBj :: (Foo.Text, Foo.Text)
[LclId,
Unf=Unf{Src=<vanilla>, TopLvl=False, Arity=0,
Value=False,
ConLike=False, Cheap=False, Expandable=False,
Guidance=IF_ARGS [] 335 120}]
ds_dBj =
let {
ds_dBi [Occ=OnceL] :: GHC.Types.Char
[LclId,
Unf=Unf{Src=<vanilla>, TopLvl=False, Arity=0,
Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [] 10 110}]
ds_dBi = GHC.Types.C# '\n' } in
case ps_aqA of _ { Foo.Text rb_dBr rb_dBs rb_dBt ->
let {
k_aqv :: GHC.Types.Int
[LclId,
Unf=Unf{Src=<vanilla>, TopLvl=False, Arity=0,
Value=False,
ConLike=False, Cheap=False,
Expandable=False,
Guidance=IF_ARGS [] 203 0}]
k_aqv =
letrec {
loop_aAr [Occ=LoopBreaker] :: GHC.Types.Int ->
GHC.Types.Int
[LclId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=False, Arity=1,
Value=True,
ConLike=True, Cheap=True,
Expandable=True,
Guidance=IF_ARGS [20] 153 0}]
loop_aAr =
\ (i_aqx [Occ=Once!] :: GHC.Types.Int) ->
case i_aqx of i_XqJ { GHC.Types.I# ipv_sFe
->
case GHC.Classes.||
(GHC.Prim.>=# ipv_sFe rb_dBt)
(GHC.Classes.not
(GHC.Classes.$fEqChar_$c/=
(GHC.Types.C#
(GHC.Prim.chr#
(GHC.Prim.word2Int#
(GHC.Prim.indexWord16Array# rb_dBr ipv_sFe))))
ds_dBi))
of _ {
GHC.Types.False -> loop_aAr (GHC.Types.I#
(GHC.Prim.+# ipv_sFe 1));
GHC.Types.True -> i_XqJ
}
}; } in
loop_aAr (GHC.Types.I# 0) } in
(case k_aqv of _ { GHC.Types.I# x_aEN [Occ=Once!] ->
case x_aEN of wild_Xy {
__DEFAULT -> Foo.Text rb_dBr rb_dBs wild_Xy;
0 -> Foo.emptyT
}
},
case k_aqv of _ { GHC.Types.I# y_aEB ->
case GHC.Prim.-# rb_dBt y_aEB of wild_Xy {
__DEFAULT -> Foo.Text rb_dBr (GHC.Prim.+# rb_dBs
y_aEB) wild_Xy;
0 -> Foo.emptyT
}
})
} } in
let {
t_aqC :: Foo.Text
[LclId,
Unf=Unf{Src=<vanilla>, TopLvl=False, Arity=0,
Value=False,
ConLike=False, Cheap=True, Expandable=True,
Guidance=IF_ARGS [] 10 0}]
t_aqC = case ds_dBj of _ { (_, t_Xra [Occ=Once]) ->
t_Xra } } in
case Foo.nullT ps_aqA of _ {
GHC.Types.False ->
GHC.Types.:
@ Foo.Text
(case ds_dBj of _ { (h_aqB [Occ=Once], _) -> h_aqB
})
(case Foo.nullT t_aqC of _ {
GHC.Types.False -> Foo.linesT (Foo.unsafeTail
t_aqC);
GHC.Types.True -> GHC.Types.[] @ Foo.Text
});
GHC.Types.True -> GHC.Types.[] @ Foo.Text
}}]
Foo.linesT =
\ (ps_aqA :: Foo.Text) ->
case ps_aqA
of _
{ Foo.Text rb_dBn [Dmd=Just L]
rb_dBo [Dmd=Just L]
rb_dBp [Dmd=Just L] ->
case GHC.Prim.<=# rb_dBp 0 of _ {
GHC.Types.False ->
let {
k_aqv [Dmd=Just D(L)] :: GHC.Types.Int
[LclId,
Str=DmdType,
Unf=Unf{Src=<vanilla>, TopLvl=False, Arity=0, Value=False,
ConLike=False, Cheap=False, Expandable=False,
Guidance=IF_ARGS [] 123 110}]
k_aqv =
letrec {
$wloop_sHE [Occ=LoopBreaker] :: GHC.Prim.Int# ->
GHC.Prim.Int#
[LclId,
Arity=1,
Str=DmdType L,
Unf=Unf{Src=<vanilla>, TopLvl=False, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [0] 63 0}]
$wloop_sHE =
\ (ww_sHp :: GHC.Prim.Int#) ->
case GHC.Prim.>=# ww_sHp rb_dBp of _ {
GHC.Types.False ->
case GHC.Prim.chr#
(GHC.Prim.word2Int#
(GHC.Prim.indexWord16Array# rb_dBn ww_sHp))
of _ {
__DEFAULT -> $wloop_sHE (GHC.Prim.+# ww_sHp 1);
'\n' -> ww_sHp
};
GHC.Types.True -> ww_sHp
}; } in
case $wloop_sHE 0 of ww_sHt { __DEFAULT ->
GHC.Types.I# ww_sHt
} } in
GHC.Types.:
@ Foo.Text
(case k_aqv of _ { GHC.Types.I# x_aEN [Dmd=Just L] ->
case x_aEN of wild_Xy [Dmd=Just L] {
__DEFAULT -> Foo.Text rb_dBn rb_dBo wild_Xy;
0 -> Foo.emptyT
}
})
(case k_aqv of _ { GHC.Types.I# y_aEB [Dmd=Just L] ->
case GHC.Prim.-# rb_dBp y_aEB of wild_Xy [Dmd=Just L] {
__DEFAULT -> $w$j_sHK rb_dBn (GHC.Prim.+# rb_dBo y_aEB)
wild_Xy;
0 ->
case Foo.emptyT
of wild_XR [Dmd=Just A]
{ Foo.Text rb_XBR [Dmd=Just L]
rb_XBT [Dmd=Just L]
rb_XBV [Dmd=Just L] ->
letrec {
linesT_XkT [InlPrag=INLINE (sat-args=1), Occ=LoopBreaker]
:: Foo.Text -> [Foo.Text]
[LclId,
Arity=1,
Str=DmdType U(LLL),
Unf=Unf{Src=InlineStable, TopLvl=False, Arity=1,
Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=False,boring_ok=False)
Tmpl= \ (ps_Xrd :: Foo.Text) ->
let {
ds_dBj :: (Foo.Text, Foo.Text)
[LclId,
Unf=Unf{Src=<vanilla>, TopLvl=False,
Arity=0, Value=False,
ConLike=False, Cheap=False,
Expandable=False,
Guidance=IF_ARGS [] 335 120}]
ds_dBj =
let {
ds_dBi [Occ=OnceL] ::
GHC.Types.Char
[LclId,
Unf=Unf{Src=<vanilla>,
TopLvl=False, Arity=0, Value=True,
ConLike=True, Cheap=True,
Expandable=True,
Guidance=IF_ARGS [] 10
110}]
ds_dBi = GHC.Types.C# '\n' } in
case ps_Xrd of _ { Foo.Text rb_dBr
rb_dBs rb_dBt ->
let {
k_Xri :: GHC.Types.Int
[LclId,
Unf=Unf{Src=<vanilla>,
TopLvl=False, Arity=0, Value=False,
ConLike=False,
Cheap=False, Expandable=False,
Guidance=IF_ARGS [] 203
0}]
k_Xri =
letrec {
loop_aAr [Occ=LoopBreaker]
:: GHC.Types.Int ->
GHC.Types.Int
[LclId,
Arity=1,
Unf=Unf{Src=<vanilla>,
TopLvl=False, Arity=1,
Value=True,
ConLike=True, Cheap=True,
Expandable=True,
Guidance=IF_ARGS [20] 153 0}]
loop_aAr =
\ (i_aqx [Occ=Once!] ::
GHC.Types.Int) ->
case i_aqx of i_XqJ {
GHC.Types.I# ipv_sFe ->
case GHC.Classes.||
(GHC.Prim.>=#
ipv_sFe rb_dBt)
(GHC.Classes.not
(GHC.Classes.$fEqChar_$c/=
(GHC.Types.C#
(GHC.Prim.chr#
(GHC.Prim.word2Int#
(GHC.Prim.indexWord16Array#
rb_dBr ipv_sFe))))
ds_dBi))
of _ {
GHC.Types.False ->
loop_aAr (GHC.Types.I#
(GHC.Prim.+# ipv_sFe 1));
GHC.Types.True -> i_XqJ
}
}; } in
loop_aAr (GHC.Types.I# 0) } in
(case k_Xri of _ { GHC.Types.I#
x_aEN [Occ=Once!] ->
case x_aEN of wild_X1r {
__DEFAULT -> Foo.Text rb_dBr
rb_dBs wild_X1r;
0 -> wild_XR
}
},
case k_Xri of _ { GHC.Types.I#
y_XFr ->
case GHC.Prim.-# rb_dBt y_XFr of
wild_X1r {
__DEFAULT ->
Foo.Text rb_dBr (GHC.Prim.+#
rb_dBs y_XFr) wild_X1r;
0 -> wild_XR
}
})
} } in
let {
t_aqC :: Foo.Text
[LclId,
Unf=Unf{Src=<vanilla>, TopLvl=False,
Arity=0, Value=False,
ConLike=False, Cheap=True,
Expandable=True,
Guidance=IF_ARGS [] 10 0}]
t_aqC = case ds_dBj of _ { (_, t_Xra
[Occ=Once]) -> t_Xra } } in
case Foo.nullT ps_Xrd of _ {
GHC.Types.False ->
GHC.Types.:
@ Foo.Text
(case ds_dBj of _ { (h_aqB
[Occ=Once], _) -> h_aqB })
(case Foo.nullT t_aqC of _ {
GHC.Types.False -> linesT_XkT
(Foo.unsafeTail t_aqC);
GHC.Types.True -> GHC.Types.[]
@ Foo.Text
});
GHC.Types.True -> GHC.Types.[] @
Foo.Text
}}]
linesT_XkT =
\ (ps_Xrd :: Foo.Text) ->
case ps_Xrd
of _
{ Foo.Text rb_XC2 [Dmd=Just L]
rb_XC4 [Dmd=Just L]
rb_XC6 [Dmd=Just L] ->
case GHC.Prim.<=# rb_XC6 0 of _ {
GHC.Types.False ->
let {
k_Xrh [Dmd=Just D(L)] :: GHC.Types.Int
[LclId,
Str=DmdType,
Unf=Unf{Src=<vanilla>, TopLvl=False, Arity=0,
Value=False,
ConLike=False, Cheap=False,
Expandable=False,
Guidance=IF_ARGS [] 123 110}]
k_Xrh =
letrec {
$wloop_sHE [Occ=LoopBreaker] ::
GHC.Prim.Int# -> GHC.Prim.Int#
[LclId,
Arity=1,
Str=DmdType L,
Unf=Unf{Src=<vanilla>, TopLvl=False,
Arity=1, Value=True,
ConLike=True, Cheap=True,
Expandable=True,
Guidance=IF_ARGS [0] 63 0}]
$wloop_sHE =
\ (ww_sHp :: GHC.Prim.Int#) ->
case GHC.Prim.>=# ww_sHp rb_XC6 of _ {
GHC.Types.False ->
case GHC.Prim.chr#
(GHC.Prim.word2Int#
(GHC.Prim.indexWord16Array# rb_XC2 ww_sHp))
of _ {
__DEFAULT -> $wloop_sHE
(GHC.Prim.+# ww_sHp 1);
'\n' -> ww_sHp
};
GHC.Types.True -> ww_sHp
}; } in
case $wloop_sHE 0 of ww_sHt { __DEFAULT ->
GHC.Types.I# ww_sHt
} } in
GHC.Types.:
@ Foo.Text
(case k_Xrh of _ { GHC.Types.I# x_aEN [Dmd=Just
L] ->
case x_aEN of wild_X1q [Dmd=Just L] {
__DEFAULT -> Foo.Text rb_XC2 rb_XC4
wild_X1q;
0 -> wild_XR
}
})
(case k_Xrh of _ { GHC.Types.I# y_XFq [Dmd=Just
L] ->
case GHC.Prim.-# rb_XC6 y_XFq of wild_X1q
[Dmd=Just L] {
__DEFAULT -> $w$j_XIm rb_XC2 (GHC.Prim.+#
rb_XC4 y_XFq) wild_X1q;
0 -> $w$j_XIm rb_XBR rb_XBT rb_XBV
}
});
GHC.Types.True -> GHC.Types.[] @ Foo.Text
}
};
$w$j_XIm
:: GHC.Prim.ByteArray#
-> GHC.Prim.Int# -> GHC.Prim.Int# -> [Foo.Text]
[LclId,
Arity=3,
Str=DmdType LLL,
Unf=Unf{Src=<vanilla>, TopLvl=False, Arity=3,
Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [0 0 0] 160 10}]
$w$j_XIm =
\ (w_sHz [Dmd=Just L, Lbv=OneShot] ::
GHC.Prim.ByteArray#)
(w_sHA [Dmd=Just L, Lbv=OneShot] :: GHC.Prim.Int#)
(w_sHB [Dmd=Just L, Lbv=OneShot] :: GHC.Prim.Int#) ->
case GHC.Prim.<=# w_sHB 0 of _ {
GHC.Types.False ->
let {
a_sEG [Dmd=Just L] :: GHC.Prim.Word#
[LclId,
Str=DmdType,
Unf=Unf{Src=<vanilla>, TopLvl=False, Arity=0,
Value=False,
ConLike=False, Cheap=True,
Expandable=True,
Guidance=IF_ARGS [] 1 0}]
a_sEG = GHC.Prim.indexWord16Array# w_sHz w_sHA
} in
case GHC.Prim.ltWord# a_sEG __word 55296 of _ {
GHC.Types.False ->
case GHC.Prim.gtWord# a_sEG __word 56319 of _
{
GHC.Types.False ->
linesT_XkT
(Foo.Text w_sHz (GHC.Prim.+# w_sHA 2)
(GHC.Prim.-# w_sHB 2));
GHC.Types.True ->
linesT_XkT
(Foo.Text w_sHz (GHC.Prim.+# w_sHA 1)
(GHC.Prim.-# w_sHB 1))
};
GHC.Types.True ->
linesT_XkT
(Foo.Text w_sHz (GHC.Prim.+# w_sHA 1)
(GHC.Prim.-# w_sHB 1))
};
GHC.Types.True -> GHC.Types.[] @ Foo.Text
}; } in
$w$j_XIm rb_XBR rb_XBT rb_XBV
}
}
});
GHC.Types.True -> GHC.Types.[] @ Foo.Text
}
}
end Rec }
*** End of Offense ***
}}}
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/5359#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs