summaryrefslogtreecommitdiff
path: root/testsuite/tests/stranal
diff options
context:
space:
mode:
authorSimon Peyton Jones <simonpj@microsoft.com>2020-03-20 08:48:47 +0000
committerMarge Bot <ben+marge-bot@smart-cactus.org>2020-03-29 17:29:30 -0400
commit54250f2d8de910b094070c1b48f086030df634b1 (patch)
treee062c160912d97eefbdd21d2ce239fd824089e43 /testsuite/tests/stranal
parentf1a6c73d01912b389e012a0af81a5c2002e82636 (diff)
downloadhaskell-54250f2d8de910b094070c1b48f086030df634b1.tar.gz
Demand analysis: simplify the demand for a RHS
Ticket #17932 showed that we were using a stupid demand for the RHS of a let-binding, when the result is a product. This was the result of a "fix" in 2013, which (happily) turns out to no longer be necessary. So I just deleted the code, which simplifies the demand analyser, and fixes #17932. That in turn uncovered that the anticipation of worker/wrapper in CPR analysis was inaccurate, hence the logic that decides whether to unbox an argument in WW was extracted into a function `wantToUnbox`, now consulted by CPR analysis. I tried nofib, and got 0.0% perf changes. All this came up when messing about with !2873 (ticket #17917), but is idependent of it. Unfortunately, this patch regresses #4267 and realised that it is now blocked on #16335.
Diffstat (limited to 'testsuite/tests/stranal')
-rw-r--r--testsuite/tests/stranal/T10482a.hs5
-rw-r--r--testsuite/tests/stranal/should_compile/T10482.stderr228
-rw-r--r--testsuite/tests/stranal/should_compile/T10482a.stderr372
-rw-r--r--testsuite/tests/stranal/sigs/DmdAnalGADTs.stderr6
-rw-r--r--testsuite/tests/stranal/sigs/T17932.hs11
-rw-r--r--testsuite/tests/stranal/sigs/T17932.stderr30
-rw-r--r--testsuite/tests/stranal/sigs/UnsatFun.stderr8
-rw-r--r--testsuite/tests/stranal/sigs/all.T1
8 files changed, 325 insertions, 336 deletions
diff --git a/testsuite/tests/stranal/T10482a.hs b/testsuite/tests/stranal/T10482a.hs
index 3547ebd35e..76f134f3e6 100644
--- a/testsuite/tests/stranal/T10482a.hs
+++ b/testsuite/tests/stranal/T10482a.hs
@@ -22,6 +22,9 @@ f1 x = case h x x of
------- f2 -----------
+-- We used to unbox x here and rebox it in the wrapper. After #17932, we don't.
+-- After #17932, we don't.
+-- Historical comment:
-- x is a strict field of MkT2, so we'll pass it unboxed
-- to $wf2, so it's available unboxed. This depends on
-- the case expression analysing (a subcomponent of) one
@@ -48,6 +51,8 @@ f1 (MkT3 x y) | h x y = f3 (MkT3 x (y-1))
------- f4 -----------
+-- We used to unbox x here and rebox it in the wrapper. After #17932, we don't.
+-- Historical comment:
-- Just like f2, but MkT4 can't unbox its strict
-- argument automatically, as f2 can
diff --git a/testsuite/tests/stranal/should_compile/T10482.stderr b/testsuite/tests/stranal/should_compile/T10482.stderr
index 47e8e102c4..af81b81bab 100644
--- a/testsuite/tests/stranal/should_compile/T10482.stderr
+++ b/testsuite/tests/stranal/should_compile/T10482.stderr
@@ -1,261 +1,243 @@
==================== Tidy Core ====================
-Result size of Tidy Core = {terms: 171, types: 116, coercions: 15, joins: 0/0}
+Result size of Tidy Core = {terms: 167, types: 116, coercions: 15, joins: 0/0}
-- RHS size: {terms: 13, types: 14, coercions: 4, joins: 0/0}
-T10482.$WFooPair [InlPrag=INLINE[2]] :: forall a b. Foo a -> Foo b -> Foo (a, b)
+T10482.$WFooPair [InlPrag=INLINE[0]] :: forall a b. Foo a -> Foo b -> Foo (a, b)
[GblId[DataConWrapper],
Arity=2,
Caf=NoCafRefs,
- Str=<S,U><S,U>m,
+ Str=<S,U><S,U>,
+ Cpr=m1,
Unf=Unf{Src=InlineStable, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True,
Guidance=ALWAYS_IF(arity=2,unsat_ok=True,boring_ok=False)
- Tmpl= \ (@ a_aX9) (@ b_aXa) (dt_a2pg [Occ=Once] :: Foo a_aX9[sk:2]) (dt_a2ph [Occ=Once] :: Foo b_aXa[sk:2]) ->
- (case dt_a2pg of dt_X2pl { __DEFAULT -> case dt_a2ph of dt_X2pn { __DEFAULT -> T10482.FooPair @ a_aX9 @ b_aXa dt_X2pl dt_X2pn } })
- `cast` (Sym (T10482.D:R:Foo(,)0[0] <a_aX9>_N <b_aXa>_N) :: (T10482.R:Foo(,) a_aX9 b_aXa :: *) ~R# (Foo (a_aX9, b_aXa) :: *))}]
+ Tmpl= \ (@a_atL) (@b_atM) (dt_a1r7 [Occ=Once] :: Foo a_atL) (dt_a1r8 [Occ=Once] :: Foo b_atM) ->
+ (case dt_a1r7 of dt_X0 [Occ=Once] { __DEFAULT ->
+ case dt_a1r8 of dt_X1 [Occ=Once] { __DEFAULT -> T10482.FooPair @a_atL @b_atM dt_X0 dt_X1 }
+ })
+ `cast` (Sym (T10482.D:R:Foo(,)0[0] <a_atL>_N <b_atM>_N) :: T10482.R:Foo(,) a_atL b_atM ~R# Foo (a_atL, b_atM))}]
T10482.$WFooPair
- = \ (@ a_aX9) (@ b_aXa) (dt_a2pg [Occ=Once] :: Foo a_aX9[sk:2]) (dt_a2ph [Occ=Once] :: Foo b_aXa[sk:2]) ->
- (case dt_a2pg of dt_X2pl { __DEFAULT -> case dt_a2ph of dt_X2pn { __DEFAULT -> T10482.FooPair @ a_aX9 @ b_aXa dt_X2pl dt_X2pn } })
- `cast` (Sym (T10482.D:R:Foo(,)0[0] <a_aX9>_N <b_aXa>_N) :: (T10482.R:Foo(,) a_aX9 b_aXa :: *) ~R# (Foo (a_aX9, b_aXa) :: *))
+ = \ (@a_atL) (@b_atM) (dt_a1r7 [Occ=Once] :: Foo a_atL) (dt_a1r8 [Occ=Once] :: Foo b_atM) ->
+ (case dt_a1r7 of dt_X0 [Occ=Once] { __DEFAULT ->
+ case dt_a1r8 of dt_X1 [Occ=Once] { __DEFAULT -> T10482.FooPair @a_atL @b_atM dt_X0 dt_X1 }
+ })
+ `cast` (Sym (T10482.D:R:Foo(,)0[0] <a_atL>_N <b_atM>_N) :: T10482.R:Foo(,) a_atL b_atM ~R# Foo (a_atL, b_atM))
-- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
T10482.$trModule4 :: GHC.Prim.Addr#
-[GblId,
- Caf=NoCafRefs,
- Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 20 0}]
+[GblId, Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 20 0}]
T10482.$trModule4 = "main"#
-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
T10482.$trModule3 :: GHC.Types.TrName
[GblId,
- Caf=NoCafRefs,
- Str=m1,
+ Cpr=m1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 20}]
T10482.$trModule3 = GHC.Types.TrNameS T10482.$trModule4
-- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
T10482.$trModule2 :: GHC.Prim.Addr#
-[GblId,
- Caf=NoCafRefs,
- Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 30 0}]
+[GblId, Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 30 0}]
T10482.$trModule2 = "T10482"#
-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
T10482.$trModule1 :: GHC.Types.TrName
[GblId,
- Caf=NoCafRefs,
- Str=m1,
+ Cpr=m1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 20}]
T10482.$trModule1 = GHC.Types.TrNameS T10482.$trModule2
-- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
T10482.$trModule :: GHC.Types.Module
[GblId,
- Caf=NoCafRefs,
- Str=m,
+ Cpr=m1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 30}]
T10482.$trModule = GHC.Types.Module T10482.$trModule3 T10482.$trModule1
-- RHS size: {terms: 3, types: 1, coercions: 0, joins: 0/0}
-$krep_r2Q4 :: GHC.Types.KindRep
-[GblId, Caf=NoCafRefs, Str=m1, Unf=OtherCon []]
-$krep_r2Q4 = GHC.Types.KindRepTyConApp GHC.Types.$tcInt (GHC.Types.[] @ GHC.Types.KindRep)
+$krep_r1Gw :: GHC.Types.KindRep
+[GblId, Cpr=m1, Unf=OtherCon []]
+$krep_r1Gw = GHC.Types.KindRepTyConApp GHC.Types.$tcInt (GHC.Types.[] @GHC.Types.KindRep)
-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
-$krep1_r2Q5 :: GHC.Types.KindRep
-[GblId, Caf=NoCafRefs, Str=m2, Unf=OtherCon []]
-$krep1_r2Q5 = GHC.Types.KindRepVar 1#
+$krep1_r1Gx :: GHC.Types.KindRep
+[GblId, Cpr=m2, Unf=OtherCon []]
+$krep1_r1Gx = GHC.Types.KindRepVar 1#
-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
-$krep2_r2Q6 :: GHC.Types.KindRep
-[GblId, Caf=NoCafRefs, Str=m2, Unf=OtherCon []]
-$krep2_r2Q6 = GHC.Types.KindRepVar 0#
+$krep2_r1Gy :: GHC.Types.KindRep
+[GblId, Cpr=m2, Unf=OtherCon []]
+$krep2_r1Gy = GHC.Types.KindRepVar 0#
-- RHS size: {terms: 3, types: 2, coercions: 0, joins: 0/0}
-$krep3_r2Q7 :: [GHC.Types.KindRep]
-[GblId, Caf=NoCafRefs, Str=m2, Unf=OtherCon []]
-$krep3_r2Q7 = GHC.Types.: @ GHC.Types.KindRep $krep1_r2Q5 (GHC.Types.[] @ GHC.Types.KindRep)
+$krep3_r1Gz :: [GHC.Types.KindRep]
+[GblId, Cpr=m2, Unf=OtherCon []]
+$krep3_r1Gz = GHC.Types.: @GHC.Types.KindRep $krep1_r1Gx (GHC.Types.[] @GHC.Types.KindRep)
-- RHS size: {terms: 3, types: 1, coercions: 0, joins: 0/0}
-$krep4_r2Q8 :: [GHC.Types.KindRep]
-[GblId, Caf=NoCafRefs, Str=m2, Unf=OtherCon []]
-$krep4_r2Q8 = GHC.Types.: @ GHC.Types.KindRep $krep2_r2Q6 $krep3_r2Q7
+$krep4_r1GA :: [GHC.Types.KindRep]
+[GblId, Cpr=m2, Unf=OtherCon []]
+$krep4_r1GA = GHC.Types.: @GHC.Types.KindRep $krep2_r1Gy $krep3_r1Gz
-- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
-$krep5_r2Q9 :: GHC.Types.KindRep
-[GblId, Caf=NoCafRefs, Str=m1, Unf=OtherCon []]
-$krep5_r2Q9 = GHC.Types.KindRepTyConApp GHC.Tuple.$tc(,) $krep4_r2Q8
+$krep5_r1GB :: GHC.Types.KindRep
+[GblId, Cpr=m1, Unf=OtherCon []]
+$krep5_r1GB = GHC.Types.KindRepTyConApp GHC.Tuple.$tc(,) $krep4_r1GA
-- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
T10482.$tcFoo2 :: GHC.Prim.Addr#
-[GblId,
- Caf=NoCafRefs,
- Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 20 0}]
+[GblId, Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 20 0}]
T10482.$tcFoo2 = "Foo"#
-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
T10482.$tcFoo1 :: GHC.Types.TrName
[GblId,
- Caf=NoCafRefs,
- Str=m1,
+ Cpr=m1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 20}]
T10482.$tcFoo1 = GHC.Types.TrNameS T10482.$tcFoo2
-- RHS size: {terms: 7, types: 0, coercions: 0, joins: 0/0}
T10482.$tcFoo :: GHC.Types.TyCon
[GblId,
- Caf=NoCafRefs,
- Str=m,
+ Cpr=m1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 70}]
T10482.$tcFoo = GHC.Types.TyCon 3311038889639791302## 7944995683507700778## T10482.$trModule T10482.$tcFoo1 0# GHC.Types.krep$*Arr*
-- RHS size: {terms: 3, types: 2, coercions: 0, joins: 0/0}
-$krep6_r2Qa :: [GHC.Types.KindRep]
-[GblId, Caf=NoCafRefs, Str=m2, Unf=OtherCon []]
-$krep6_r2Qa = GHC.Types.: @ GHC.Types.KindRep $krep2_r2Q6 (GHC.Types.[] @ GHC.Types.KindRep)
+$krep6_r1GC :: [GHC.Types.KindRep]
+[GblId, Cpr=m2, Unf=OtherCon []]
+$krep6_r1GC = GHC.Types.: @GHC.Types.KindRep $krep2_r1Gy (GHC.Types.[] @GHC.Types.KindRep)
-- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
-$krep7_r2Qb :: GHC.Types.KindRep
-[GblId, Caf=NoCafRefs, Str=m1, Unf=OtherCon []]
-$krep7_r2Qb = GHC.Types.KindRepTyConApp T10482.$tcFoo $krep6_r2Qa
+$krep7_r1GD :: GHC.Types.KindRep
+[GblId, Cpr=m1, Unf=OtherCon []]
+$krep7_r1GD = GHC.Types.KindRepTyConApp T10482.$tcFoo $krep6_r1GC
-- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
-$krep8_r2Qc :: GHC.Types.KindRep
-[GblId, Caf=NoCafRefs, Str=m1, Unf=OtherCon []]
-$krep8_r2Qc = GHC.Types.KindRepTyConApp T10482.$tcFoo $krep3_r2Q7
+$krep8_r1GE :: GHC.Types.KindRep
+[GblId, Cpr=m1, Unf=OtherCon []]
+$krep8_r1GE = GHC.Types.KindRepTyConApp T10482.$tcFoo $krep3_r1Gz
-- RHS size: {terms: 3, types: 2, coercions: 0, joins: 0/0}
-$krep9_r2Qd :: [GHC.Types.KindRep]
-[GblId, Caf=NoCafRefs, Str=m2, Unf=OtherCon []]
-$krep9_r2Qd = GHC.Types.: @ GHC.Types.KindRep $krep5_r2Q9 (GHC.Types.[] @ GHC.Types.KindRep)
+$krep9_r1GF :: [GHC.Types.KindRep]
+[GblId, Cpr=m2, Unf=OtherCon []]
+$krep9_r1GF = GHC.Types.: @GHC.Types.KindRep $krep5_r1GB (GHC.Types.[] @GHC.Types.KindRep)
-- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
-$krep10_r2Qe :: GHC.Types.KindRep
-[GblId, Caf=NoCafRefs, Str=m1, Unf=OtherCon []]
-$krep10_r2Qe = GHC.Types.KindRepTyConApp T10482.$tcFoo $krep9_r2Qd
+$krep10_r1GG :: GHC.Types.KindRep
+[GblId, Cpr=m1, Unf=OtherCon []]
+$krep10_r1GG = GHC.Types.KindRepTyConApp T10482.$tcFoo $krep9_r1GF
-- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
-$krep11_r2Qf :: GHC.Types.KindRep
-[GblId, Caf=NoCafRefs, Str=m4, Unf=OtherCon []]
-$krep11_r2Qf = GHC.Types.KindRepFun $krep8_r2Qc $krep10_r2Qe
+$krep11_r1GH :: GHC.Types.KindRep
+[GblId, Cpr=m4, Unf=OtherCon []]
+$krep11_r1GH = GHC.Types.KindRepFun $krep8_r1GE $krep10_r1GG
-- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
T10482.$tc'FooPair1 [InlPrag=NOUSERINLINE[~]] :: GHC.Types.KindRep
-[GblId, Caf=NoCafRefs, Str=m4, Unf=OtherCon []]
-T10482.$tc'FooPair1 = GHC.Types.KindRepFun $krep7_r2Qb $krep11_r2Qf
+[GblId, Cpr=m4, Unf=OtherCon []]
+T10482.$tc'FooPair1 = GHC.Types.KindRepFun $krep7_r1GD $krep11_r1GH
-- RHS size: {terms: 3, types: 2, coercions: 0, joins: 0/0}
-$krep12_r2Qg :: [GHC.Types.KindRep]
-[GblId, Caf=NoCafRefs, Str=m2, Unf=OtherCon []]
-$krep12_r2Qg = GHC.Types.: @ GHC.Types.KindRep $krep_r2Q4 (GHC.Types.[] @ GHC.Types.KindRep)
+$krep12_r1GI :: [GHC.Types.KindRep]
+[GblId, Cpr=m2, Unf=OtherCon []]
+$krep12_r1GI = GHC.Types.: @GHC.Types.KindRep $krep_r1Gw (GHC.Types.[] @GHC.Types.KindRep)
-- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
-$krep13_r2Qh :: GHC.Types.KindRep
-[GblId, Caf=NoCafRefs, Str=m1, Unf=OtherCon []]
-$krep13_r2Qh = GHC.Types.KindRepTyConApp T10482.$tcFoo $krep12_r2Qg
+$krep13_r1GJ :: GHC.Types.KindRep
+[GblId, Cpr=m1, Unf=OtherCon []]
+$krep13_r1GJ = GHC.Types.KindRepTyConApp T10482.$tcFoo $krep12_r1GI
-- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
T10482.$tc'Foo1 [InlPrag=NOUSERINLINE[~]] :: GHC.Types.KindRep
-[GblId, Caf=NoCafRefs, Str=m4, Unf=OtherCon []]
-T10482.$tc'Foo1 = GHC.Types.KindRepFun $krep_r2Q4 $krep13_r2Qh
+[GblId, Cpr=m4, Unf=OtherCon []]
+T10482.$tc'Foo1 = GHC.Types.KindRepFun $krep_r1Gw $krep13_r1GJ
-- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
T10482.$tc'FooPair3 :: GHC.Prim.Addr#
-[GblId,
- Caf=NoCafRefs,
- Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 30 0}]
+[GblId, Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 30 0}]
T10482.$tc'FooPair3 = "'FooPair"#
-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
T10482.$tc'FooPair2 :: GHC.Types.TrName
[GblId,
- Caf=NoCafRefs,
- Str=m1,
+ Cpr=m1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 20}]
T10482.$tc'FooPair2 = GHC.Types.TrNameS T10482.$tc'FooPair3
-- RHS size: {terms: 7, types: 0, coercions: 0, joins: 0/0}
T10482.$tc'FooPair :: GHC.Types.TyCon
[GblId,
- Caf=NoCafRefs,
- Str=m,
+ Cpr=m1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 70}]
T10482.$tc'FooPair
= GHC.Types.TyCon 5329411373903054066## 1455261321638291317## T10482.$trModule T10482.$tc'FooPair2 2# T10482.$tc'FooPair1
-- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
T10482.$tc'Foo3 :: GHC.Prim.Addr#
-[GblId,
- Caf=NoCafRefs,
- Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 20 0}]
+[GblId, Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 20 0}]
T10482.$tc'Foo3 = "'Foo"#
-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
T10482.$tc'Foo2 :: GHC.Types.TrName
[GblId,
- Caf=NoCafRefs,
- Str=m1,
+ Cpr=m1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 20}]
T10482.$tc'Foo2 = GHC.Types.TrNameS T10482.$tc'Foo3
-- RHS size: {terms: 7, types: 0, coercions: 0, joins: 0/0}
T10482.$tc'Foo :: GHC.Types.TyCon
[GblId,
- Caf=NoCafRefs,
- Str=m,
+ Cpr=m1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 70}]
T10482.$tc'Foo = GHC.Types.TyCon 5096937192618987042## 15136671864408054946## T10482.$trModule T10482.$tc'Foo2 0# T10482.$tc'Foo1
+-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
+lvl_r1GK :: Int
+[GblId, Cpr=m1, Unf=OtherCon []]
+lvl_r1GK = GHC.Types.I# 0#
+
Rec {
--- RHS size: {terms: 19, types: 4, coercions: 0, joins: 0/0}
-T10482.$wfoo [InlPrag=NOUSERINLINE[2], Occ=LoopBreaker] :: GHC.Prim.Int# -> GHC.Prim.Int# -> GHC.Prim.Int#
-[GblId, Arity=2, Caf=NoCafRefs, Str=<L,1*U><S,1*U>, Unf=OtherCon []]
+-- RHS size: {terms: 19, types: 5, coercions: 3, joins: 0/0}
+T10482.$wfoo [InlPrag=NOUSERINLINE[2], Occ=LoopBreaker] :: Foo Int -> GHC.Prim.Int# -> Int
+[GblId, Arity=2, Str=<L,1*U><S,1*U>, Unf=OtherCon []]
T10482.$wfoo
- = \ (ww_s2OA :: GHC.Prim.Int#) (ww1_s2OI :: GHC.Prim.Int#) ->
- case ww1_s2OI of wild_X1r {
+ = \ (ww_s1Fu
+ :: Foo Int
+ Unf=OtherCon [])
+ (ww1_s1FB :: GHC.Prim.Int#) ->
+ case ww1_s1FB of wild_X1 {
__DEFAULT ->
- case GHC.Prim.remInt# wild_X1r 2# of {
- __DEFAULT -> ww_s2OA;
- 0# -> T10482.$wfoo ww_s2OA (GHC.Prim.-# wild_X1r 1#)
+ case GHC.Prim.remInt# wild_X1 2# of {
+ __DEFAULT -> ww_s1Fu `cast` (T10482.D:R:FooInt0[0] ; T10482.N:R:FooInt[0] :: Foo Int ~R# Int);
+ 0# -> T10482.$wfoo ww_s1Fu (GHC.Prim.-# wild_X1 1#)
};
- 0# -> 0#
+ 0# -> lvl_r1GK
}
end Rec }
--- RHS size: {terms: 21, types: 30, coercions: 11, joins: 0/0}
+-- RHS size: {terms: 14, types: 27, coercions: 8, joins: 0/0}
foo [InlPrag=NOUSERINLINE[2]] :: Foo ((Int, Int), Int) -> Int -> Int
[GblId,
Arity=2,
- Caf=NoCafRefs,
- Str=<S(S(S(S)L)L),1*U(U(U(1*U),A),A)><S(S),1*U(1*U)>m,
+ Str=<S(SL),1*U(1*U(1*U,A),A)><S(S),1*U(1*U)>,
Unf=Unf{Src=InlineStable, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True,
Guidance=ALWAYS_IF(arity=2,unsat_ok=True,boring_ok=False)
- Tmpl= \ (w_s2Oq [Occ=Once] :: Foo ((Int, Int), Int)) (w1_s2Or [Occ=Once!] :: Int) ->
- case w_s2Oq
- `cast` (T10482.D:R:Foo(,)0[0] <(Int, Int)>_N <Int>_N :: (Foo ((Int, Int), Int) :: *) ~R# (T10482.R:Foo(,) (Int, Int) Int :: *))
- of
- { FooPair ww1_s2Ou [Occ=Once] _ [Occ=Dead] ->
- case ww1_s2Ou `cast` (T10482.D:R:Foo(,)0[0] <Int>_N <Int>_N :: (Foo (Int, Int) :: *) ~R# (T10482.R:Foo(,) Int Int :: *)) of
- { FooPair ww4_s2Ox [Occ=Once] _ [Occ=Dead] ->
- case ww4_s2Ox `cast` (T10482.D:R:FooInt0[0] ; T10482.N:R:FooInt[0] :: (Foo Int :: *) ~R# (Int :: *)) of
- { GHC.Types.I# ww7_s2OA [Occ=Once] ->
- case w1_s2Or of { GHC.Types.I# ww9_s2OI [Occ=Once] ->
- case T10482.$wfoo ww7_s2OA ww9_s2OI of ww10_s2OM { __DEFAULT -> GHC.Types.I# ww10_s2OM }
- }
- }
+ Tmpl= \ (w_s1Fn [Occ=Once] :: Foo ((Int, Int), Int)) (w1_s1Fo [Occ=Once!] :: Int) ->
+ case w_s1Fn `cast` (T10482.D:R:Foo(,)0[0] <(Int, Int)>_N <Int>_N :: Foo ((Int, Int), Int) ~R# T10482.R:Foo(,) (Int, Int) Int) of
+ { FooPair ww1_s1Fr [Occ=Once] _ [Occ=Dead] ->
+ case ww1_s1Fr `cast` (T10482.D:R:Foo(,)0[0] <Int>_N <Int>_N :: Foo (Int, Int) ~R# T10482.R:Foo(,) Int Int) of
+ { FooPair ww4_s1Fu [Occ=Once] _ [Occ=Dead] ->
+ case w1_s1Fo of { GHC.Types.I# ww7_s1FB [Occ=Once] -> T10482.$wfoo ww4_s1Fu ww7_s1FB }
}
}}]
foo
- = \ (w_s2Oq :: Foo ((Int, Int), Int)) (w1_s2Or :: Int) ->
- case w_s2Oq
- `cast` (T10482.D:R:Foo(,)0[0] <(Int, Int)>_N <Int>_N :: (Foo ((Int, Int), Int) :: *) ~R# (T10482.R:Foo(,) (Int, Int) Int :: *))
- of
- { FooPair ww1_s2Ou ww2_s2OE ->
- case ww1_s2Ou `cast` (T10482.D:R:Foo(,)0[0] <Int>_N <Int>_N :: (Foo (Int, Int) :: *) ~R# (T10482.R:Foo(,) Int Int :: *)) of
- { FooPair ww4_s2Pm ww5_s2Pn ->
- case ww4_s2Pm `cast` (T10482.D:R:FooInt0[0] ; T10482.N:R:FooInt[0] :: (Foo Int :: *) ~R# (Int :: *)) of { GHC.Types.I# ww7_s2Pq ->
- case w1_s2Or of { GHC.Types.I# ww9_s2OI -> case T10482.$wfoo ww7_s2Pq ww9_s2OI of ww10_s2OM { __DEFAULT -> GHC.Types.I# ww10_s2OM } }
- }
+ = \ (w_s1Fn :: Foo ((Int, Int), Int)) (w1_s1Fo :: Int) ->
+ case w_s1Fn `cast` (T10482.D:R:Foo(,)0[0] <(Int, Int)>_N <Int>_N :: Foo ((Int, Int), Int) ~R# T10482.R:Foo(,) (Int, Int) Int) of
+ { FooPair ww1_s1Fr ww2_s1Fx ->
+ case ww1_s1Fr `cast` (T10482.D:R:Foo(,)0[0] <Int>_N <Int>_N :: Foo (Int, Int) ~R# T10482.R:Foo(,) Int Int) of
+ { FooPair ww4_s1G0 ww5_s1G1 ->
+ case w1_s1Fo of { GHC.Types.I# ww7_s1FB -> T10482.$wfoo ww4_s1G0 ww7_s1FB }
}
}
diff --git a/testsuite/tests/stranal/should_compile/T10482a.stderr b/testsuite/tests/stranal/should_compile/T10482a.stderr
index 6fa4f00d75..8d6fd7d877 100644
--- a/testsuite/tests/stranal/should_compile/T10482a.stderr
+++ b/testsuite/tests/stranal/should_compile/T10482a.stderr
@@ -1,407 +1,366 @@
==================== Tidy Core ====================
-Result size of Tidy Core = {terms: 353, types: 155, coercions: 3, joins: 0/0}
+Result size of Tidy Core = {terms: 342, types: 152, coercions: 3, joins: 0/0}
-- RHS size: {terms: 9, types: 8, coercions: 0, joins: 0/0}
-Foo.$WMkT4 [InlPrag=INLINE[2]] :: forall a. Foo a -> Int -> T4 a
+Foo.$WMkT4 [InlPrag=INLINE[0]] :: forall a. Foo a -> Int -> T4 a
[GblId[DataConWrapper],
Arity=2,
Caf=NoCafRefs,
- Str=<S,U><L,U>m,
+ Str=<S,U><L,U>,
+ Cpr=m1,
Unf=Unf{Src=InlineStable, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True,
Guidance=ALWAYS_IF(arity=2,unsat_ok=True,boring_ok=False)
- Tmpl= \ (@ a_atA) (dt_a21M [Occ=Once] :: Foo a_atA[sk:1]) (dt_a21N [Occ=Once] :: Int) ->
- case dt_a21M of dt_X21Q { __DEFAULT -> Foo.MkT4 @ a_atA dt_X21Q dt_a21N }}]
+ Tmpl= \ (@a_agw) (dt_a1hl [Occ=Once] :: Foo a_agw) (dt_a1hm [Occ=Once] :: Int) ->
+ case dt_a1hl of dt_X0 [Occ=Once] { __DEFAULT -> Foo.MkT4 @a_agw dt_X0 dt_a1hm }}]
Foo.$WMkT4
- = \ (@ a_atA) (dt_a21M [Occ=Once] :: Foo a_atA[sk:1]) (dt_a21N [Occ=Once] :: Int) ->
- case dt_a21M of dt_X21Q { __DEFAULT -> Foo.MkT4 @ a_atA dt_X21Q dt_a21N }
+ = \ (@a_agw) (dt_a1hl [Occ=Once] :: Foo a_agw) (dt_a1hm [Occ=Once] :: Int) ->
+ case dt_a1hl of dt_X0 [Occ=Once] { __DEFAULT -> Foo.MkT4 @a_agw dt_X0 dt_a1hm }
-- RHS size: {terms: 8, types: 3, coercions: 0, joins: 0/0}
-Foo.$WMkT2 [InlPrag=INLINE[2]] :: Int -> Int -> T2
+Foo.$WMkT2 [InlPrag=INLINE[0]] :: Int -> Int -> T2
[GblId[DataConWrapper],
Arity=2,
Caf=NoCafRefs,
- Str=<S,U><L,U>m,
+ Str=<S,U><L,U>,
+ Cpr=m1,
Unf=Unf{Src=InlineStable, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True,
Guidance=ALWAYS_IF(arity=2,unsat_ok=True,boring_ok=False)
- Tmpl= \ (dt_a20w [Occ=Once] :: Int) (dt_a20x [Occ=Once] :: Int) ->
- case dt_a20w of dt_X20z { __DEFAULT -> Foo.MkT2 dt_X20z dt_a20x }}]
+ Tmpl= \ (dt_a1gu [Occ=Once] :: Int) (dt_a1gv [Occ=Once] :: Int) ->
+ case dt_a1gu of dt_X0 [Occ=Once] { __DEFAULT -> Foo.MkT2 dt_X0 dt_a1gv }}]
Foo.$WMkT2
- = \ (dt_a20w [Occ=Once] :: Int) (dt_a20x [Occ=Once] :: Int) -> case dt_a20w of dt_X20z { __DEFAULT -> Foo.MkT2 dt_X20z dt_a20x }
+ = \ (dt_a1gu [Occ=Once] :: Int) (dt_a1gv [Occ=Once] :: Int) ->
+ case dt_a1gu of dt_X0 [Occ=Once] { __DEFAULT -> Foo.MkT2 dt_X0 dt_a1gv }
-- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
Foo.$trModule4 :: GHC.Prim.Addr#
-[GblId,
- Caf=NoCafRefs,
- Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 20 0}]
+[GblId, Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 20 0}]
Foo.$trModule4 = "main"#
-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
Foo.$trModule3 :: GHC.Types.TrName
[GblId,
- Caf=NoCafRefs,
- Str=m1,
+ Cpr=m1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 20}]
Foo.$trModule3 = GHC.Types.TrNameS Foo.$trModule4
-- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
Foo.$trModule2 :: GHC.Prim.Addr#
-[GblId,
- Caf=NoCafRefs,
- Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 20 0}]
+[GblId, Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 20 0}]
Foo.$trModule2 = "Foo"#
-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
Foo.$trModule1 :: GHC.Types.TrName
[GblId,
- Caf=NoCafRefs,
- Str=m1,
+ Cpr=m1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 20}]
Foo.$trModule1 = GHC.Types.TrNameS Foo.$trModule2
-- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
Foo.$trModule :: GHC.Types.Module
[GblId,
- Caf=NoCafRefs,
- Str=m,
+ Cpr=m1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 30}]
Foo.$trModule = GHC.Types.Module Foo.$trModule3 Foo.$trModule1
-- RHS size: {terms: 3, types: 1, coercions: 0, joins: 0/0}
-$krep_r2oJ :: GHC.Types.KindRep
-[GblId, Caf=NoCafRefs, Str=m1, Unf=OtherCon []]
-$krep_r2oJ = GHC.Types.KindRepTyConApp GHC.Types.$tcInt (GHC.Types.[] @ GHC.Types.KindRep)
+$krep_r1x7 :: GHC.Types.KindRep
+[GblId, Cpr=m1, Unf=OtherCon []]
+$krep_r1x7 = GHC.Types.KindRepTyConApp GHC.Types.$tcInt (GHC.Types.[] @GHC.Types.KindRep)
-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
-$krep1_r2oK :: GHC.Types.KindRep
-[GblId, Caf=NoCafRefs, Str=m2, Unf=OtherCon []]
-$krep1_r2oK = GHC.Types.KindRepVar 0#
+$krep1_r1x8 :: GHC.Types.KindRep
+[GblId, Cpr=m2, Unf=OtherCon []]
+$krep1_r1x8 = GHC.Types.KindRepVar 0#
-- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
Foo.$tcT5 :: GHC.Prim.Addr#
-[GblId,
- Caf=NoCafRefs,
- Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 20 0}]
+[GblId, Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 20 0}]
Foo.$tcT5 = "T2"#
-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
Foo.$tcT1 :: GHC.Types.TrName
[GblId,
- Caf=NoCafRefs,
- Str=m1,
+ Cpr=m1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 20}]
Foo.$tcT1 = GHC.Types.TrNameS Foo.$tcT5
-- RHS size: {terms: 7, types: 0, coercions: 0, joins: 0/0}
Foo.$tcT2 :: GHC.Types.TyCon
[GblId,
- Caf=NoCafRefs,
- Str=m,
+ Cpr=m1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 70}]
Foo.$tcT2 = GHC.Types.TyCon 12492463661685256209## 1082997131366389398## Foo.$trModule Foo.$tcT1 0# GHC.Types.krep$*
-- RHS size: {terms: 3, types: 1, coercions: 0, joins: 0/0}
-$krep2_r2oL :: GHC.Types.KindRep
-[GblId, Caf=NoCafRefs, Str=m1, Unf=OtherCon []]
-$krep2_r2oL = GHC.Types.KindRepTyConApp Foo.$tcT2 (GHC.Types.[] @ GHC.Types.KindRep)
+$krep2_r1x9 :: GHC.Types.KindRep
+[GblId, Cpr=m1, Unf=OtherCon []]
+$krep2_r1x9 = GHC.Types.KindRepTyConApp Foo.$tcT2 (GHC.Types.[] @GHC.Types.KindRep)
-- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
-$krep3_r2oM :: GHC.Types.KindRep
-[GblId, Caf=NoCafRefs, Str=m4, Unf=OtherCon []]
-$krep3_r2oM = GHC.Types.KindRepFun $krep_r2oJ $krep2_r2oL
+$krep3_r1xa :: GHC.Types.KindRep
+[GblId, Cpr=m4, Unf=OtherCon []]
+$krep3_r1xa = GHC.Types.KindRepFun $krep_r1x7 $krep2_r1x9
-- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
Foo.$tc'MkT1 [InlPrag=NOUSERINLINE[~]] :: GHC.Types.KindRep
-[GblId, Caf=NoCafRefs, Str=m4, Unf=OtherCon []]
-Foo.$tc'MkT1 = GHC.Types.KindRepFun $krep_r2oJ $krep3_r2oM
+[GblId, Cpr=m4, Unf=OtherCon []]
+Foo.$tc'MkT1 = GHC.Types.KindRepFun $krep_r1x7 $krep3_r1xa
-- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
Foo.$tc'MkT6 :: GHC.Prim.Addr#
-[GblId,
- Caf=NoCafRefs,
- Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 30 0}]
+[GblId, Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 30 0}]
Foo.$tc'MkT6 = "'MkT2"#
-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
Foo.$tc'MkT5 :: GHC.Types.TrName
[GblId,
- Caf=NoCafRefs,
- Str=m1,
+ Cpr=m1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 20}]
Foo.$tc'MkT5 = GHC.Types.TrNameS Foo.$tc'MkT6
-- RHS size: {terms: 7, types: 0, coercions: 0, joins: 0/0}
Foo.$tc'MkT2 :: GHC.Types.TyCon
[GblId,
- Caf=NoCafRefs,
- Str=m,
+ Cpr=m1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 70}]
Foo.$tc'MkT2 = GHC.Types.TyCon 5707542518475997625## 9584804394183763875## Foo.$trModule Foo.$tc'MkT5 0# Foo.$tc'MkT1
-- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
Foo.$tcT7 :: GHC.Prim.Addr#
-[GblId,
- Caf=NoCafRefs,
- Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 20 0}]
+[GblId, Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 20 0}]
Foo.$tcT7 = "T3"#
-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
Foo.$tcT6 :: GHC.Types.TrName
[GblId,
- Caf=NoCafRefs,
- Str=m1,
+ Cpr=m1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 20}]
Foo.$tcT6 = GHC.Types.TrNameS Foo.$tcT7
-- RHS size: {terms: 7, types: 0, coercions: 0, joins: 0/0}
Foo.$tcT3 :: GHC.Types.TyCon
[GblId,
- Caf=NoCafRefs,
- Str=m,
+ Cpr=m1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 70}]
Foo.$tcT3 = GHC.Types.TyCon 8915518733037212359## 16476420519216613869## Foo.$trModule Foo.$tcT6 0# GHC.Types.krep$*
-- RHS size: {terms: 3, types: 1, coercions: 0, joins: 0/0}
-$krep4_r2oN :: GHC.Types.KindRep
-[GblId, Caf=NoCafRefs, Str=m1, Unf=OtherCon []]
-$krep4_r2oN = GHC.Types.KindRepTyConApp Foo.$tcT3 (GHC.Types.[] @ GHC.Types.KindRep)
+$krep4_r1xb :: GHC.Types.KindRep
+[GblId, Cpr=m1, Unf=OtherCon []]
+$krep4_r1xb = GHC.Types.KindRepTyConApp Foo.$tcT3 (GHC.Types.[] @GHC.Types.KindRep)
-- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
-$krep5_r2oO :: GHC.Types.KindRep
-[GblId, Caf=NoCafRefs, Str=m4, Unf=OtherCon []]
-$krep5_r2oO = GHC.Types.KindRepFun $krep_r2oJ $krep4_r2oN
+$krep5_r1xc :: GHC.Types.KindRep
+[GblId, Cpr=m4, Unf=OtherCon []]
+$krep5_r1xc = GHC.Types.KindRepFun $krep_r1x7 $krep4_r1xb
-- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
Foo.$tc'MkT7 [InlPrag=NOUSERINLINE[~]] :: GHC.Types.KindRep
-[GblId, Caf=NoCafRefs, Str=m4, Unf=OtherCon []]
-Foo.$tc'MkT7 = GHC.Types.KindRepFun $krep_r2oJ $krep5_r2oO
+[GblId, Cpr=m4, Unf=OtherCon []]
+Foo.$tc'MkT7 = GHC.Types.KindRepFun $krep_r1x7 $krep5_r1xc
-- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
Foo.$tc'MkT9 :: GHC.Prim.Addr#
-[GblId,
- Caf=NoCafRefs,
- Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 30 0}]
+[GblId, Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 30 0}]
Foo.$tc'MkT9 = "'MkT3"#
-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
Foo.$tc'MkT8 :: GHC.Types.TrName
[GblId,
- Caf=NoCafRefs,
- Str=m1,
+ Cpr=m1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 20}]
Foo.$tc'MkT8 = GHC.Types.TrNameS Foo.$tc'MkT9
-- RHS size: {terms: 7, types: 0, coercions: 0, joins: 0/0}
Foo.$tc'MkT3 :: GHC.Types.TyCon
[GblId,
- Caf=NoCafRefs,
- Str=m,
+ Cpr=m1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 70}]
Foo.$tc'MkT3 = GHC.Types.TyCon 7218783144619306039## 13236146459150723629## Foo.$trModule Foo.$tc'MkT8 0# Foo.$tc'MkT7
-- RHS size: {terms: 7, types: 0, coercions: 0, joins: 0/0}
Foo.$tcFoo :: GHC.Types.TyCon
[GblId,
- Caf=NoCafRefs,
- Str=m,
+ Cpr=m1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 70}]
Foo.$tcFoo = GHC.Types.TyCon 11236787750777559483## 2472662601374496863## Foo.$trModule Foo.$trModule1 0# GHC.Types.krep$*Arr*
-- RHS size: {terms: 3, types: 2, coercions: 0, joins: 0/0}
-$krep6_r2oP :: [GHC.Types.KindRep]
-[GblId, Caf=NoCafRefs, Str=m2, Unf=OtherCon []]
-$krep6_r2oP = GHC.Types.: @ GHC.Types.KindRep $krep1_r2oK (GHC.Types.[] @ GHC.Types.KindRep)
+$krep6_r1xd :: [GHC.Types.KindRep]
+[GblId, Cpr=m2, Unf=OtherCon []]
+$krep6_r1xd = GHC.Types.: @GHC.Types.KindRep $krep1_r1x8 (GHC.Types.[] @GHC.Types.KindRep)
-- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
-$krep7_r2oQ :: GHC.Types.KindRep
-[GblId, Caf=NoCafRefs, Str=m1, Unf=OtherCon []]
-$krep7_r2oQ = GHC.Types.KindRepTyConApp Foo.$tcFoo $krep6_r2oP
+$krep7_r1xe :: GHC.Types.KindRep
+[GblId, Cpr=m1, Unf=OtherCon []]
+$krep7_r1xe = GHC.Types.KindRepTyConApp Foo.$tcFoo $krep6_r1xd
-- RHS size: {terms: 3, types: 2, coercions: 0, joins: 0/0}
-$krep8_r2oR :: [GHC.Types.KindRep]
-[GblId, Caf=NoCafRefs, Str=m2, Unf=OtherCon []]
-$krep8_r2oR = GHC.Types.: @ GHC.Types.KindRep $krep_r2oJ (GHC.Types.[] @ GHC.Types.KindRep)
+$krep8_r1xf :: [GHC.Types.KindRep]
+[GblId, Cpr=m2, Unf=OtherCon []]
+$krep8_r1xf = GHC.Types.: @GHC.Types.KindRep $krep_r1x7 (GHC.Types.[] @GHC.Types.KindRep)
-- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
-$krep9_r2oS :: GHC.Types.KindRep
-[GblId, Caf=NoCafRefs, Str=m1, Unf=OtherCon []]
-$krep9_r2oS = GHC.Types.KindRepTyConApp Foo.$tcFoo $krep8_r2oR
+$krep9_r1xg :: GHC.Types.KindRep
+[GblId, Cpr=m1, Unf=OtherCon []]
+$krep9_r1xg = GHC.Types.KindRepTyConApp Foo.$tcFoo $krep8_r1xf
-- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
Foo.$tc'Foo1 [InlPrag=NOUSERINLINE[~]] :: GHC.Types.KindRep
-[GblId, Caf=NoCafRefs, Str=m4, Unf=OtherCon []]
-Foo.$tc'Foo1 = GHC.Types.KindRepFun $krep_r2oJ $krep9_r2oS
+[GblId, Cpr=m4, Unf=OtherCon []]
+Foo.$tc'Foo1 = GHC.Types.KindRepFun $krep_r1x7 $krep9_r1xg
-- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
Foo.$tc'Foo3 :: GHC.Prim.Addr#
-[GblId,
- Caf=NoCafRefs,
- Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 20 0}]
+[GblId, Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 20 0}]
Foo.$tc'Foo3 = "'Foo"#
-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
Foo.$tc'Foo2 :: GHC.Types.TrName
[GblId,
- Caf=NoCafRefs,
- Str=m1,
+ Cpr=m1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 20}]
Foo.$tc'Foo2 = GHC.Types.TrNameS Foo.$tc'Foo3
-- RHS size: {terms: 7, types: 0, coercions: 0, joins: 0/0}
Foo.$tc'Foo :: GHC.Types.TyCon
[GblId,
- Caf=NoCafRefs,
- Str=m,
+ Cpr=m1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 70}]
Foo.$tc'Foo = GHC.Types.TyCon 10641757595611461765## 13961773224584044648## Foo.$trModule Foo.$tc'Foo2 0# Foo.$tc'Foo1
-- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
Foo.$tcT9 :: GHC.Prim.Addr#
-[GblId,
- Caf=NoCafRefs,
- Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 20 0}]
+[GblId, Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 20 0}]
Foo.$tcT9 = "T4"#
-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
Foo.$tcT8 :: GHC.Types.TrName
[GblId,
- Caf=NoCafRefs,
- Str=m1,
+ Cpr=m1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 20}]
Foo.$tcT8 = GHC.Types.TrNameS Foo.$tcT9
-- RHS size: {terms: 7, types: 0, coercions: 0, joins: 0/0}
Foo.$tcT4 :: GHC.Types.TyCon
[GblId,
- Caf=NoCafRefs,
- Str=m,
+ Cpr=m1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 70}]
Foo.$tcT4 = GHC.Types.TyCon 15961711399118996930## 13694522307176382499## Foo.$trModule Foo.$tcT8 0# GHC.Types.krep$*Arr*
-- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
-$krep10_r2oT :: GHC.Types.KindRep
-[GblId, Caf=NoCafRefs, Str=m1, Unf=OtherCon []]
-$krep10_r2oT = GHC.Types.KindRepTyConApp Foo.$tcT4 $krep6_r2oP
+$krep10_r1xh :: GHC.Types.KindRep
+[GblId, Cpr=m1, Unf=OtherCon []]
+$krep10_r1xh = GHC.Types.KindRepTyConApp Foo.$tcT4 $krep6_r1xd
-- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
-$krep11_r2oU :: GHC.Types.KindRep
-[GblId, Caf=NoCafRefs, Str=m4, Unf=OtherCon []]
-$krep11_r2oU = GHC.Types.KindRepFun $krep_r2oJ $krep10_r2oT
+$krep11_r1xi :: GHC.Types.KindRep
+[GblId, Cpr=m4, Unf=OtherCon []]
+$krep11_r1xi = GHC.Types.KindRepFun $krep_r1x7 $krep10_r1xh
-- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
Foo.$tc'MkT10 [InlPrag=NOUSERINLINE[~]] :: GHC.Types.KindRep
-[GblId, Caf=NoCafRefs, Str=m4, Unf=OtherCon []]
-Foo.$tc'MkT10 = GHC.Types.KindRepFun $krep7_r2oQ $krep11_r2oU
+[GblId, Cpr=m4, Unf=OtherCon []]
+Foo.$tc'MkT10 = GHC.Types.KindRepFun $krep7_r1xe $krep11_r1xi
-- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
Foo.$tc'MkT12 :: GHC.Prim.Addr#
-[GblId,
- Caf=NoCafRefs,
- Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 30 0}]
+[GblId, Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 30 0}]
Foo.$tc'MkT12 = "'MkT4"#
-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
Foo.$tc'MkT11 :: GHC.Types.TrName
[GblId,
- Caf=NoCafRefs,
- Str=m1,
+ Cpr=m1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 20}]
Foo.$tc'MkT11 = GHC.Types.TrNameS Foo.$tc'MkT12
-- RHS size: {terms: 7, types: 0, coercions: 0, joins: 0/0}
Foo.$tc'MkT4 :: GHC.Types.TyCon
[GblId,
- Caf=NoCafRefs,
- Str=m,
+ Cpr=m1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 70}]
Foo.$tc'MkT4 = GHC.Types.TyCon 6077781708614236332## 14823286043222481570## Foo.$trModule Foo.$tc'MkT11 1# Foo.$tc'MkT10
Rec {
--- RHS size: {terms: 14, types: 3, coercions: 0, joins: 0/0}
-Foo.$wf4 [InlPrag=NOUSERINLINE[2], Occ=LoopBreaker] :: GHC.Prim.Int# -> GHC.Prim.Int# -> GHC.Prim.Int#
-[GblId, Arity=2, Caf=NoCafRefs, Str=<S,1*U><S,U>, Unf=OtherCon []]
+-- RHS size: {terms: 14, types: 4, coercions: 3, joins: 0/0}
+Foo.$wf4 [InlPrag=NOUSERINLINE[2], Occ=LoopBreaker] :: Foo Int -> GHC.Prim.Int# -> Int
+[GblId, Arity=2, Str=<S,1*U><L,U>, Unf=OtherCon []]
Foo.$wf4
- = \ (ww_s2jL :: GHC.Prim.Int#) (ww1_s2jQ :: GHC.Prim.Int#) ->
- case GHC.Prim.># ww1_s2jQ 0# of {
- __DEFAULT -> ww_s2jL;
- 1# -> Foo.$wf4 ww_s2jL (GHC.Prim.-# ww1_s2jQ 1#)
+ = \ (ww_s1tc
+ :: Foo Int
+ Unf=OtherCon [])
+ (ww1_s1tg :: GHC.Prim.Int#) ->
+ case GHC.Prim.># ww1_s1tg 0# of {
+ __DEFAULT -> ww_s1tc `cast` (Foo.D:R:FooInt0[0] ; Foo.N:R:FooInt[0] :: Foo Int ~R# Int);
+ 1# -> Foo.$wf4 ww_s1tc (GHC.Prim.-# ww1_s1tg 1#)
}
end Rec }
--- RHS size: {terms: 17, types: 12, coercions: 3, joins: 0/0}
+-- RHS size: {terms: 10, types: 9, coercions: 0, joins: 0/0}
f4 [InlPrag=NOUSERINLINE[2]] :: T4 Int -> Int
[GblId,
Arity=1,
- Caf=NoCafRefs,
- Str=<S(S(S)S(S)),1*U(U(1*U),1*U(U))>m,
+ Str=<S(SS),1*U(1*U,1*U(U))>,
Unf=Unf{Src=InlineStable, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True,
Guidance=ALWAYS_IF(arity=1,unsat_ok=True,boring_ok=False)
- Tmpl= \ (w_s2jF [Occ=Once!] :: T4 Int) ->
- case w_s2jF of { MkT4 ww1_s2jI [Occ=Once] ww2_s2jN [Occ=Once!] ->
- case ww1_s2jI `cast` (Foo.D:R:FooInt0[0] ; Foo.N:R:FooInt[0] :: (Foo Int :: *) ~R# (Int :: *)) of
- { GHC.Types.I# ww4_s2jL [Occ=Once] ->
- case ww2_s2jN of { GHC.Types.I# ww6_s2jQ [Occ=Once] ->
- case Foo.$wf4 ww4_s2jL ww6_s2jQ of ww7_s2jV { __DEFAULT -> GHC.Types.I# ww7_s2jV }
- }
- }
+ Tmpl= \ (w_s1t9 [Occ=Once!] :: T4 Int) ->
+ case w_s1t9 of { MkT4 ww1_s1tc [Occ=Once] ww2_s1td [Occ=Once!] ->
+ case ww2_s1td of { GHC.Types.I# ww4_s1tg [Occ=Once] -> Foo.$wf4 ww1_s1tc ww4_s1tg }
}}]
f4
- = \ (w_s2jF :: T4 Int) ->
- case w_s2jF of { MkT4 ww1_s2jI ww2_s2jN ->
- case ww1_s2jI `cast` (Foo.D:R:FooInt0[0] ; Foo.N:R:FooInt[0] :: (Foo Int :: *) ~R# (Int :: *)) of { GHC.Types.I# ww4_s2mW ->
- case ww2_s2jN of { GHC.Types.I# ww6_s2jQ -> case Foo.$wf4 ww4_s2mW ww6_s2jQ of ww7_s2jV { __DEFAULT -> GHC.Types.I# ww7_s2jV } }
- }
- }
+ = \ (w_s1t9 :: T4 Int) ->
+ case w_s1t9 of { MkT4 ww1_s1tc ww2_s1td -> case ww2_s1td of { GHC.Types.I# ww4_s1tg -> Foo.$wf4 ww1_s1tc ww4_s1tg } }
+
+-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
+lvl_r1xj :: Int
+[GblId, Cpr=m1, Unf=OtherCon []]
+lvl_r1xj = GHC.Types.I# 1#
Rec {
-- RHS size: {terms: 21, types: 4, coercions: 0, joins: 0/0}
-Foo.$wf2 [InlPrag=NOUSERINLINE[2], Occ=LoopBreaker] :: GHC.Prim.Int# -> GHC.Prim.Int# -> GHC.Prim.Int#
-[GblId, Arity=2, Caf=NoCafRefs, Str=<L,1*U><S,U>, Unf=OtherCon []]
+Foo.$wf2 [InlPrag=NOUSERINLINE[2], Occ=LoopBreaker] :: Int -> GHC.Prim.Int# -> Int
+[GblId, Arity=2, Str=<L,1*U><L,U>, Unf=OtherCon []]
Foo.$wf2
- = \ (ww_s2k3 :: GHC.Prim.Int#) (ww1_s2k8 :: GHC.Prim.Int#) ->
- case GHC.Prim.># ww1_s2k8 0# of {
+ = \ (ww_s1tn
+ :: Int
+ Unf=OtherCon [])
+ (ww1_s1tr :: GHC.Prim.Int#) ->
+ case GHC.Prim.># ww1_s1tr 0# of {
__DEFAULT ->
- case GHC.Prim.># ww1_s2k8 1# of {
- __DEFAULT -> ww_s2k3;
- 1# -> 1#
+ case GHC.Prim.># ww1_s1tr 1# of {
+ __DEFAULT -> ww_s1tn;
+ 1# -> lvl_r1xj
};
- 1# -> Foo.$wf2 ww_s2k3 (GHC.Prim.-# ww1_s2k8 1#)
+ 1# -> Foo.$wf2 ww_s1tn (GHC.Prim.-# ww1_s1tr 1#)
}
end Rec }
--- RHS size: {terms: 17, types: 9, coercions: 0, joins: 0/0}
+-- RHS size: {terms: 10, types: 6, coercions: 0, joins: 0/0}
f2 [InlPrag=NOUSERINLINE[2]] :: T2 -> Int
[GblId,
Arity=1,
- Caf=NoCafRefs,
- Str=<S(S(S)S(S)),1*U(U(1*U),1*U(U))>m,
+ Str=<S(LS),1*U(1*U,1*U(U))>,
Unf=Unf{Src=InlineStable, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True,
Guidance=ALWAYS_IF(arity=1,unsat_ok=True,boring_ok=False)
- Tmpl= \ (w_s2jX [Occ=Once!] :: T2) ->
- case w_s2jX of { MkT2 ww1_s2k0 [Occ=Once!] ww2_s2k5 [Occ=Once!] ->
- case ww1_s2k0 of { GHC.Types.I# ww4_s2k3 [Occ=Once] ->
- case ww2_s2k5 of { GHC.Types.I# ww6_s2k8 [Occ=Once] ->
- case Foo.$wf2 ww4_s2k3 ww6_s2k8 of ww7_s2kd { __DEFAULT -> GHC.Types.I# ww7_s2kd }
- }
- }
+ Tmpl= \ (w_s1tk [Occ=Once!] :: T2) ->
+ case w_s1tk of { MkT2 ww1_s1tn [Occ=Once] ww2_s1to [Occ=Once!] ->
+ case ww2_s1to of { GHC.Types.I# ww4_s1tr [Occ=Once] -> Foo.$wf2 ww1_s1tn ww4_s1tr }
}}]
f2
- = \ (w_s2jX :: T2) ->
- case w_s2jX of { MkT2 ww1_s2k0 ww2_s2k5 ->
- case ww1_s2k0 of { GHC.Types.I# ww4_s2mZ ->
- case ww2_s2k5 of { GHC.Types.I# ww6_s2k8 -> case Foo.$wf2 ww4_s2mZ ww6_s2k8 of ww7_s2kd { __DEFAULT -> GHC.Types.I# ww7_s2kd } }
- }
- }
+ = \ (w_s1tk :: T2) ->
+ case w_s1tk of { MkT2 ww1_s1tn ww2_s1to -> case ww2_s1to of { GHC.Types.I# ww4_s1tr -> Foo.$wf2 ww1_s1tn ww4_s1tr } }
Rec {
-- RHS size: {terms: 15, types: 4, coercions: 0, joins: 0/0}
Foo.$wh [InlPrag=NOUSERINLINE[2], Occ=LoopBreaker] :: GHC.Prim.Int# -> GHC.Prim.Int# -> Bool
-[GblId, Arity=2, Caf=NoCafRefs, Str=<S,1*U><S,U>, Unf=OtherCon []]
+[GblId, Arity=2, Str=<S,1*U><L,U>, Unf=OtherCon []]
Foo.$wh
- = \ (ww_s2kj :: GHC.Prim.Int#) (ww1_s2kn :: GHC.Prim.Int#) ->
- case ww_s2kj of ds_X2gt {
- __DEFAULT -> Foo.$wh (GHC.Prim.-# ds_X2gt 1#) ww1_s2kn;
- 0# -> GHC.Prim.tagToEnum# @ Bool (GHC.Prim.># ww1_s2kn 0#)
+ = \ (ww_s1tz :: GHC.Prim.Int#) (ww1_s1tD :: GHC.Prim.Int#) ->
+ case ww_s1tz of ds_X2 {
+ __DEFAULT -> Foo.$wh (GHC.Prim.-# ds_X2 1#) ww1_s1tD;
+ 0# -> GHC.Prim.tagToEnum# @Bool (GHC.Prim.># ww1_s1tD 0#)
}
end Rec }
@@ -409,26 +368,25 @@ end Rec }
h [InlPrag=NOUSERINLINE[2]] :: Int -> Int -> Bool
[GblId,
Arity=2,
- Caf=NoCafRefs,
- Str=<S(S),1*U(1*U)><S(S),1*U(U)>,
+ Str=<S(S),1*U(1*U)><S,1*U(U)>,
Unf=Unf{Src=InlineStable, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True,
Guidance=ALWAYS_IF(arity=2,unsat_ok=True,boring_ok=False)
- Tmpl= \ (w_s2kf [Occ=Once!] :: Int) (w1_s2kg [Occ=Once!] :: Int) ->
- case w_s2kf of { GHC.Types.I# ww1_s2kj [Occ=Once] ->
- case w1_s2kg of { GHC.Types.I# ww3_s2kn [Occ=Once] -> Foo.$wh ww1_s2kj ww3_s2kn }
+ Tmpl= \ (w_s1tv [Occ=Once!] :: Int) (w1_s1tw [Occ=Once!] :: Int) ->
+ case w_s1tv of { GHC.Types.I# ww1_s1tz [Occ=Once] ->
+ case w1_s1tw of { GHC.Types.I# ww3_s1tD [Occ=Once] -> Foo.$wh ww1_s1tz ww3_s1tD }
}}]
-h = \ (w_s2kf :: Int) (w1_s2kg :: Int) ->
- case w_s2kf of { GHC.Types.I# ww1_s2kj -> case w1_s2kg of { GHC.Types.I# ww3_s2kn -> Foo.$wh ww1_s2kj ww3_s2kn } }
+h = \ (w_s1tv :: Int) (w1_s1tw :: Int) ->
+ case w_s1tv of { GHC.Types.I# ww1_s1tz -> case w1_s1tw of { GHC.Types.I# ww3_s1tD -> Foo.$wh ww1_s1tz ww3_s1tD } }
Rec {
-- RHS size: {terms: 12, types: 2, coercions: 0, joins: 0/0}
Foo.$wf1 [InlPrag=NOUSERINLINE[2], Occ=LoopBreaker] :: GHC.Prim.Int# -> GHC.Prim.Int#
-[GblId, Arity=1, Caf=NoCafRefs, Str=<S,U>, Unf=OtherCon []]
+[GblId, Arity=1, Str=<S,U>, Unf=OtherCon []]
Foo.$wf1
- = \ (ww_s2kt :: GHC.Prim.Int#) ->
- case Foo.$wh ww_s2kt ww_s2kt of {
- False -> Foo.$wf1 (GHC.Prim.-# ww_s2kt 1#);
- True -> ww_s2kt
+ = \ (ww_s1tJ :: GHC.Prim.Int#) ->
+ case Foo.$wh ww_s1tJ ww_s1tJ of {
+ False -> Foo.$wf1 (GHC.Prim.-# ww_s1tJ 1#);
+ True -> ww_s1tJ
}
end Rec }
@@ -436,25 +394,27 @@ end Rec }
f1 [InlPrag=NOUSERINLINE[2]] :: Int -> Int
[GblId,
Arity=1,
- Caf=NoCafRefs,
- Str=<S(S),1*U(U)>m,
+ Str=<S(S),1*U(U)>,
+ Cpr=m1,
Unf=Unf{Src=InlineStable, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True,
Guidance=ALWAYS_IF(arity=1,unsat_ok=True,boring_ok=False)
- Tmpl= \ (w_s2kq [Occ=Once!] :: Int) ->
- case w_s2kq of { GHC.Types.I# ww1_s2kt [Occ=Once] -> case Foo.$wf1 ww1_s2kt of ww2_s2kx { __DEFAULT -> GHC.Types.I# ww2_s2kx } }}]
+ Tmpl= \ (w_s1tG [Occ=Once!] :: Int) ->
+ case w_s1tG of { GHC.Types.I# ww1_s1tJ [Occ=Once] ->
+ case Foo.$wf1 ww1_s1tJ of ww2_s1tN [Occ=Once] { __DEFAULT -> GHC.Types.I# ww2_s1tN }
+ }}]
f1
- = \ (w_s2kq :: Int) ->
- case w_s2kq of { GHC.Types.I# ww1_s2kt -> case Foo.$wf1 ww1_s2kt of ww2_s2kx { __DEFAULT -> GHC.Types.I# ww2_s2kx } }
+ = \ (w_s1tG :: Int) ->
+ case w_s1tG of { GHC.Types.I# ww1_s1tJ -> case Foo.$wf1 ww1_s1tJ of ww2_s1tN { __DEFAULT -> GHC.Types.I# ww2_s1tN } }
Rec {
-- RHS size: {terms: 14, types: 3, coercions: 0, joins: 0/0}
Foo.$wf3 [InlPrag=NOUSERINLINE[2], Occ=LoopBreaker] :: GHC.Prim.Int# -> GHC.Prim.Int# -> GHC.Prim.Int#
-[GblId, Arity=2, Caf=NoCafRefs, Str=<S,U><S,U>, Unf=OtherCon []]
+[GblId, Arity=2, Str=<S,U><L,U>, Unf=OtherCon []]
Foo.$wf3
- = \ (ww_s2kF :: GHC.Prim.Int#) (ww1_s2kK :: GHC.Prim.Int#) ->
- case Foo.$wh ww_s2kF ww1_s2kK of {
- False -> ww_s2kF;
- True -> Foo.$wf3 ww_s2kF (GHC.Prim.-# ww1_s2kK 1#)
+ = \ (ww_s1tV :: GHC.Prim.Int#) (ww1_s1u0 :: GHC.Prim.Int#) ->
+ case Foo.$wh ww_s1tV ww1_s1u0 of {
+ False -> ww_s1tV;
+ True -> Foo.$wf3 ww_s1tV (GHC.Prim.-# ww1_s1u0 1#)
}
end Rec }
@@ -462,23 +422,23 @@ end Rec }
f3 [InlPrag=NOUSERINLINE[2]] :: T3 -> Int
[GblId,
Arity=1,
- Caf=NoCafRefs,
- Str=<S(S(S)S(S)),1*U(1*U(U),1*U(U))>m,
+ Str=<S(S(S)S),1*U(1*U(U),1*U(U))>,
+ Cpr=m1,
Unf=Unf{Src=InlineStable, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True,
Guidance=ALWAYS_IF(arity=1,unsat_ok=True,boring_ok=False)
- Tmpl= \ (w_s2kz [Occ=Once!] :: T3) ->
- case w_s2kz of { MkT3 ww1_s2kC [Occ=Once!] ww2_s2kH [Occ=Once!] ->
- case ww1_s2kC of { GHC.Types.I# ww4_s2kF [Occ=Once] ->
- case ww2_s2kH of { GHC.Types.I# ww6_s2kK [Occ=Once] ->
- case Foo.$wf3 ww4_s2kF ww6_s2kK of ww7_s2kP { __DEFAULT -> GHC.Types.I# ww7_s2kP }
+ Tmpl= \ (w_s1tP [Occ=Once!] :: T3) ->
+ case w_s1tP of { MkT3 ww1_s1tS [Occ=Once!] ww2_s1tX [Occ=Once!] ->
+ case ww1_s1tS of { GHC.Types.I# ww4_s1tV [Occ=Once] ->
+ case ww2_s1tX of { GHC.Types.I# ww6_s1u0 [Occ=Once] ->
+ case Foo.$wf3 ww4_s1tV ww6_s1u0 of ww7_s1u5 [Occ=Once] { __DEFAULT -> GHC.Types.I# ww7_s1u5 }
}
}
}}]
f3
- = \ (w_s2kz :: T3) ->
- case w_s2kz of { MkT3 ww1_s2kC ww2_s2kH ->
- case ww1_s2kC of { GHC.Types.I# ww4_s2kF ->
- case ww2_s2kH of { GHC.Types.I# ww6_s2kK -> case Foo.$wf3 ww4_s2kF ww6_s2kK of ww7_s2kP { __DEFAULT -> GHC.Types.I# ww7_s2kP } }
+ = \ (w_s1tP :: T3) ->
+ case w_s1tP of { MkT3 ww1_s1tS ww2_s1tX ->
+ case ww1_s1tS of { GHC.Types.I# ww4_s1tV ->
+ case ww2_s1tX of { GHC.Types.I# ww6_s1u0 -> case Foo.$wf3 ww4_s1tV ww6_s1u0 of ww7_s1u5 { __DEFAULT -> GHC.Types.I# ww7_s1u5 } }
}
}
diff --git a/testsuite/tests/stranal/sigs/DmdAnalGADTs.stderr b/testsuite/tests/stranal/sigs/DmdAnalGADTs.stderr
index 96b6bf669f..a42d492099 100644
--- a/testsuite/tests/stranal/sigs/DmdAnalGADTs.stderr
+++ b/testsuite/tests/stranal/sigs/DmdAnalGADTs.stderr
@@ -9,7 +9,7 @@ DmdAnalGADTs.f: <S,1*U>
DmdAnalGADTs.f': <S,1*U>
DmdAnalGADTs.g: <S,1*U>
DmdAnalGADTs.hasCPR:
-DmdAnalGADTs.hasStrSig: <S,1*U(U)>
+DmdAnalGADTs.hasStrSig: <S,1*U>
@@ -23,7 +23,7 @@ DmdAnalGADTs.f:
DmdAnalGADTs.f': m1
DmdAnalGADTs.g:
DmdAnalGADTs.hasCPR: m1
-DmdAnalGADTs.hasStrSig: m1
+DmdAnalGADTs.hasStrSig:
@@ -37,6 +37,6 @@ DmdAnalGADTs.f: <S,1*U>
DmdAnalGADTs.f': <S,1*U>
DmdAnalGADTs.g: <S,1*U>
DmdAnalGADTs.hasCPR:
-DmdAnalGADTs.hasStrSig: <S,1*U(U)>
+DmdAnalGADTs.hasStrSig: <S,1*U>
diff --git a/testsuite/tests/stranal/sigs/T17932.hs b/testsuite/tests/stranal/sigs/T17932.hs
new file mode 100644
index 0000000000..4f59ded3eb
--- /dev/null
+++ b/testsuite/tests/stranal/sigs/T17932.hs
@@ -0,0 +1,11 @@
+-- See commentary in #17932
+
+module T17932 where
+
+flags (Options f x)
+ = reverse (reverse (reverse (reverse (reverse (reverse (reverse (reverse x)))))))
+ `seq` f
+
+data X = X String Bool Bool Bool Bool
+
+data Options = Options !X [Int]
diff --git a/testsuite/tests/stranal/sigs/T17932.stderr b/testsuite/tests/stranal/sigs/T17932.stderr
new file mode 100644
index 0000000000..c086c8cd86
--- /dev/null
+++ b/testsuite/tests/stranal/sigs/T17932.stderr
@@ -0,0 +1,30 @@
+
+==================== Strictness signatures ====================
+T17932.$tc'Options:
+T17932.$tc'X:
+T17932.$tcOptions:
+T17932.$tcX:
+T17932.$trModule:
+T17932.flags: <S(SS),1*U(1*U,1*U)>
+
+
+
+==================== Cpr signatures ====================
+T17932.$tc'Options: m1
+T17932.$tc'X: m1
+T17932.$tcOptions: m1
+T17932.$tcX: m1
+T17932.$trModule: m1
+T17932.flags:
+
+
+
+==================== Strictness signatures ====================
+T17932.$tc'Options:
+T17932.$tc'X:
+T17932.$tcOptions:
+T17932.$tcX:
+T17932.$trModule:
+T17932.flags: <S(SS),1*U(1*U,1*U)>
+
+
diff --git a/testsuite/tests/stranal/sigs/UnsatFun.stderr b/testsuite/tests/stranal/sigs/UnsatFun.stderr
index 1f5a58b422..aedf131826 100644
--- a/testsuite/tests/stranal/sigs/UnsatFun.stderr
+++ b/testsuite/tests/stranal/sigs/UnsatFun.stderr
@@ -5,8 +5,8 @@ UnsatFun.f: <B,1*U(U)><B,A>b
UnsatFun.g: <B,1*U(U)>b
UnsatFun.g': <L,1*U(U)>
UnsatFun.g3: <L,U(U)>
-UnsatFun.h: <C(S),1*C1(U(U))>
-UnsatFun.h2: <S,1*U><L,1*C1(U(U))>
+UnsatFun.h: <C(S),1*C1(U)>
+UnsatFun.h2: <S,1*U><L,1*C1(U)>
UnsatFun.h3: <C(S),1*C1(U)>
@@ -29,8 +29,8 @@ UnsatFun.f: <B,1*U(U)><B,A>b
UnsatFun.g: <B,1*U(U)>b
UnsatFun.g': <L,1*U(U)>
UnsatFun.g3: <L,U(U)>
-UnsatFun.h: <C(S),1*C1(U(U))>
-UnsatFun.h2: <S,1*U><L,1*C1(U(U))>
+UnsatFun.h: <C(S),1*C1(U)>
+UnsatFun.h2: <S,1*U><L,1*C1(U)>
UnsatFun.h3: <C(S),1*C1(U)>
diff --git a/testsuite/tests/stranal/sigs/all.T b/testsuite/tests/stranal/sigs/all.T
index f7cbd3761d..3afe9c7cd8 100644
--- a/testsuite/tests/stranal/sigs/all.T
+++ b/testsuite/tests/stranal/sigs/all.T
@@ -19,3 +19,4 @@ test('T12370', normal, compile, [''])
test('CaseBinderCPR', normal, compile, [''])
test('NewtypeArity', normal, compile, [''])
test('T5075', normal, compile, [''])
+test('T17932', normal, compile, [''])