-
-
Save bheklilr/ea124ec98b887394da26 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
> 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