Skip to content

Instantly share code, notes, and snippets.

@bheklilr
Created July 22, 2014 14:33
Show Gist options
  • Save bheklilr/ea124ec98b887394da26 to your computer and use it in GitHub Desktop.
Save bheklilr/ea124ec98b887394da26 to your computer and use it in GitHub Desktop.
> ghc -O2 -ddump-simpl user5402.hs
[1 of 1] Compiling Test ( user5402.hs, user5402.o )
==================== Tidy Core ====================
Result size of Tidy Core = {terms: 232, types: 196, coercions: 0}
Rec {
Test.merge2_$smerge2 [Occ=LoopBreaker]
:: forall a_c.
GHC.Classes.Ord a_c =>
a_c -> [a_c] -> [a_c] -> [a_c]
[GblId, Arity=4, Caf=NoCafRefs, Str=DmdType LLLS]
Test.merge2_$smerge2 =
\ (@ a_c)
(sc_sn3 :: GHC.Classes.Ord a_c)
(sc1_sn5 :: a_c)
(sc2_sn6 :: [a_c])
(sc3_sn7 :: [a_c]) ->
case sc3_sn7 of _ {
[] -> GHC.Types.: @ a_c sc1_sn5 sc2_sn6;
: ipv_slz ipv1_slA ->
case GHC.Classes.compare @ a_c sc_sn3 sc1_sn5 ipv_slz of _ {
GHC.Types.LT ->
GHC.Types.:
@ a_c
sc1_sn5
(Test.merge2_$smerge1 @ a_c sc_sn3 sc2_sn6 ipv_slz ipv1_slA);
GHC.Types.EQ ->
GHC.Types.:
@ a_c sc1_sn5 (Test.merge2 @ a_c sc_sn3 sc2_sn6 ipv1_slA);
GHC.Types.GT ->
GHC.Types.:
@ a_c
ipv_slz
(Test.merge2_$smerge2 @ a_c sc_sn3 sc1_sn5 sc2_sn6 ipv1_slA)
}
}
Test.merge2_$smerge1 [Occ=LoopBreaker]
:: forall a_c.
GHC.Classes.Ord a_c =>
[a_c] -> a_c -> [a_c] -> [a_c]
[GblId, Arity=4, Caf=NoCafRefs, Str=DmdType LSLL]
Test.merge2_$smerge1 =
\ (@ a_c)
(sc_sn4 :: GHC.Classes.Ord a_c)
(sc1_sn8 :: [a_c])
(sc2_sn9 :: a_c)
(sc3_sna :: [a_c]) ->
case sc1_sn8 of _ {
[] -> GHC.Types.: @ a_c sc2_sn9 sc3_sna;
: ipv_slv ipv1_slw ->
case GHC.Classes.compare @ a_c sc_sn4 ipv_slv sc2_sn9 of _ {
GHC.Types.LT ->
GHC.Types.:
@ a_c
ipv_slv
(Test.merge2_$smerge1 @ a_c sc_sn4 ipv1_slw sc2_sn9 sc3_sna);
GHC.Types.EQ ->
GHC.Types.:
@ a_c ipv_slv (Test.merge2 @ a_c sc_sn4 ipv1_slw sc3_sna);
GHC.Types.GT ->
GHC.Types.:
@ a_c
sc2_sn9
(Test.merge2_$smerge2 @ a_c sc_sn4 ipv_slv ipv1_slw sc3_sna)
}
}
Test.merge2 [Occ=LoopBreaker]
:: forall a_aeI.
GHC.Classes.Ord a_aeI =>
[a_aeI] -> [a_aeI] -> [a_aeI]
[GblId, Arity=3, Caf=NoCafRefs, Str=DmdType LSS]
Test.merge2 =
\ (@ a_c)
($dOrd_aku :: GHC.Classes.Ord a_c)
(ds_dl2 :: [a_c])
(bs_akk :: [a_c]) ->
case ds_dl2 of wild_X9 {
[] -> bs_akk;
: ipv_slv ipv1_slw ->
case bs_akk of _ {
[] -> wild_X9;
: ipv2_slz ipv3_slA ->
case GHC.Classes.compare @ a_c $dOrd_aku ipv_slv ipv2_slz of _ {
GHC.Types.LT ->
GHC.Types.:
@ a_c
ipv_slv
(Test.merge2_$smerge1 @ a_c $dOrd_aku ipv1_slw ipv2_slz ipv3_slA);
GHC.Types.EQ ->
GHC.Types.:
@ a_c ipv_slv (Test.merge2 @ a_c $dOrd_aku ipv1_slw ipv3_slA);
GHC.Types.GT ->
GHC.Types.:
@ a_c
ipv2_slz
(Test.merge2_$smerge2 @ a_c $dOrd_aku ipv_slv ipv1_slw ipv3_slA)
}
}
}
end Rec }
Rec {
Test.merge1_$smerge1 [Occ=LoopBreaker]
:: forall a_f.
GHC.Classes.Ord a_f =>
a_f -> [a_f] -> [a_f] -> [a_f]
[GblId, Arity=4, Caf=NoCafRefs, Str=DmdType LLLS]
Test.merge1_$smerge1 =
\ (@ a_f)
(sc_so0 :: GHC.Classes.Ord a_f)
(sc1_so2 :: a_f)
(sc2_so3 :: [a_f])
(sc3_so4 :: [a_f]) ->
case sc3_so4 of _ {
[] -> GHC.Types.: @ a_f sc1_so2 sc2_so3;
: ipv_slI ipv1_slJ ->
case GHC.Classes.compare @ a_f sc_so0 sc1_so2 ipv_slI of _ {
GHC.Types.LT ->
GHC.Types.:
@ a_f
sc1_so2
(Test.merge1_$smerge2 @ a_f sc_so0 sc2_so3 ipv_slI ipv1_slJ);
GHC.Types.EQ ->
GHC.Types.:
@ a_f sc1_so2 (Test.merge1 @ a_f sc_so0 sc2_so3 ipv1_slJ);
GHC.Types.GT ->
GHC.Types.:
@ a_f
ipv_slI
(Test.merge1_$smerge1 @ a_f sc_so0 sc1_so2 sc2_so3 ipv1_slJ)
}
}
Test.merge1_$smerge2 [Occ=LoopBreaker]
:: forall a_f.
GHC.Classes.Ord a_f =>
[a_f] -> a_f -> [a_f] -> [a_f]
[GblId, Arity=4, Caf=NoCafRefs, Str=DmdType LSLL]
Test.merge1_$smerge2 =
\ (@ a_f)
(sc_so1 :: GHC.Classes.Ord a_f)
(sc1_so5 :: [a_f])
(sc2_so6 :: a_f)
(sc3_so7 :: [a_f]) ->
case sc1_so5 of _ {
[] -> GHC.Types.: @ a_f sc2_so6 sc3_so7;
: ipv_slE ipv1_slF ->
case GHC.Classes.compare @ a_f sc_so1 ipv_slE sc2_so6 of _ {
GHC.Types.LT ->
GHC.Types.:
@ a_f
ipv_slE
(Test.merge1_$smerge2 @ a_f sc_so1 ipv1_slF sc2_so6 sc3_so7);
GHC.Types.EQ ->
GHC.Types.:
@ a_f ipv_slE (Test.merge1 @ a_f sc_so1 ipv1_slF sc3_so7);
GHC.Types.GT ->
GHC.Types.:
@ a_f
sc2_so6
(Test.merge1_$smerge1 @ a_f sc_so1 ipv_slE ipv1_slF sc3_so7)
}
}
Test.merge1 [Occ=LoopBreaker]
:: forall a_akc.
GHC.Classes.Ord a_akc =>
[a_akc] -> [a_akc] -> [a_akc]
[GblId, Arity=3, Caf=NoCafRefs, Str=DmdType LSS]
Test.merge1 =
\ (@ a_f)
($dOrd_akH :: GHC.Classes.Ord a_f)
(ds_dlh :: [a_f])
(bs_akd :: [a_f]) ->
case ds_dlh of wild_Xa {
[] -> bs_akd;
: ipv_slE ipv1_slF ->
case bs_akd of _ {
[] -> wild_Xa;
: ipv2_slI ipv3_slJ ->
case GHC.Classes.compare @ a_f $dOrd_akH ipv_slE ipv2_slI of _ {
GHC.Types.LT ->
GHC.Types.:
@ a_f
ipv_slE
(Test.merge1_$smerge2 @ a_f $dOrd_akH ipv1_slF ipv2_slI ipv3_slJ);
GHC.Types.EQ ->
GHC.Types.:
@ a_f ipv_slE (Test.merge1 @ a_f $dOrd_akH ipv1_slF ipv3_slJ);
GHC.Types.GT ->
GHC.Types.:
@ a_f
ipv2_slI
(Test.merge1_$smerge1 @ a_f $dOrd_akH ipv_slE ipv1_slF ipv3_slJ)
}
}
}
end Rec }
------ Local rules for imported ids --------
"SC:Test.merge20" [ALWAYS]
forall (@ a_c)
(sc_sn4 :: GHC.Classes.Ord a_c)
(sc1_sn8 :: [a_c])
(sc2_sn9 :: a_c)
(sc3_sna :: [a_c]).
Test.merge2 @ a_c
sc_sn4
sc1_sn8
(GHC.Types.: @ a_c sc2_sn9 sc3_sna)
= Test.merge2_$smerge1 @ a_c sc_sn4 sc1_sn8 sc2_sn9 sc3_sna
"SC:Test.merge21" [ALWAYS]
forall (@ a_c)
(sc_sn3 :: GHC.Classes.Ord a_c)
(sc1_sn5 :: a_c)
(sc2_sn6 :: [a_c])
(sc3_sn7 :: [a_c]).
Test.merge2 @ a_c
sc_sn3
(GHC.Types.: @ a_c sc1_sn5 sc2_sn6)
sc3_sn7
= Test.merge2_$smerge2 @ a_c sc_sn3 sc1_sn5 sc2_sn6 sc3_sn7
"SC:Test.merge10" [ALWAYS]
forall (@ a_f)
(sc_so1 :: GHC.Classes.Ord a_f)
(sc1_so5 :: [a_f])
(sc2_so6 :: a_f)
(sc3_so7 :: [a_f]).
Test.merge1 @ a_f
sc_so1
sc1_so5
(GHC.Types.: @ a_f sc2_so6 sc3_so7)
= Test.merge1_$smerge2 @ a_f sc_so1 sc1_so5 sc2_so6 sc3_so7
"SC:Test.merge11" [ALWAYS]
forall (@ a_f)
(sc_so0 :: GHC.Classes.Ord a_f)
(sc1_so2 :: a_f)
(sc2_so3 :: [a_f])
(sc3_so4 :: [a_f]).
Test.merge1 @ a_f
sc_so0
(GHC.Types.: @ a_f sc1_so2 sc2_so3)
sc3_so4
= Test.merge1_$smerge1 @ a_f sc_so0 sc1_so2 sc2_so3 sc3_so4
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment