diff options
-rw-r--r-- | compiler/GHC/Core/Opt/WorkWrap/Utils.hs | 6 | ||||
-rw-r--r-- | testsuite/tests/simplCore/should_compile/T13143.stderr | 18 |
2 files changed, 11 insertions, 13 deletions
diff --git a/compiler/GHC/Core/Opt/WorkWrap/Utils.hs b/compiler/GHC/Core/Opt/WorkWrap/Utils.hs index 63ac670418..d0fc6b65ec 100644 --- a/compiler/GHC/Core/Opt/WorkWrap/Utils.hs +++ b/compiler/GHC/Core/Opt/WorkWrap/Utils.hs @@ -395,15 +395,13 @@ needsVoidWorkerArg fn_id wrap_args work_args work_has_barrier = any is_float_barrier work_args needs_float_barrier = wrap_had_barrier && not work_has_barrier --- | Inserts a `Void#` arg before the first value argument (but after leading type args). +-- | Inserts a `Void#` arg before the first argument. addVoidWorkerArg :: [Var] -> [CbvMark] -> ([Var], -- Lambda bound args [Var], -- Args at call site [CbvMark]) -- cbv semantics for the worker args. addVoidWorkerArg work_args cbv_marks - = (ty_args ++ voidArgId:rest, ty_args ++ voidPrimId:rest, NotMarkedCbv:cbv_marks) - where - (ty_args, rest) = break isId work_args + = (voidArgId : work_args, voidPrimId:work_args, NotMarkedCbv:cbv_marks) {- Note [Protecting the last value argument] diff --git a/testsuite/tests/simplCore/should_compile/T13143.stderr b/testsuite/tests/simplCore/should_compile/T13143.stderr index 5ca8a9a503..c80ddb569b 100644 --- a/testsuite/tests/simplCore/should_compile/T13143.stderr +++ b/testsuite/tests/simplCore/should_compile/T13143.stderr @@ -1,14 +1,14 @@ ==================== Tidy Core ==================== Result size of Tidy Core - = {terms: 71, types: 40, coercions: 0, joins: 0/0} + = {terms: 71, types: 41, coercions: 0, joins: 0/0} Rec { -- RHS size: {terms: 4, types: 3, coercions: 0, joins: 0/0} T13143.$wf [InlPrag=NOINLINE, Occ=LoopBreaker] - :: forall {a}. (# #) -> a + :: (# #) -> forall {a}. a [GblId, Arity=1, Str=<B>b, Cpr=b, Unf=OtherCon []] -T13143.$wf = \ (@a) _ [Occ=Dead] -> T13143.$wf @a GHC.Prim.(##) +T13143.$wf = \ _ [Occ=Dead] (@a) -> T13143.$wf GHC.Prim.(##) @a end Rec } -- RHS size: {terms: 4, types: 3, coercions: 0, joins: 0/0} @@ -20,8 +20,8 @@ f [InlPrag=[final]] :: forall a. Int -> a Unf=Unf{Src=InlineStable, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=ALWAYS_IF(arity=1,unsat_ok=True,boring_ok=True) - Tmpl= \ (@a) _ [Occ=Dead] -> T13143.$wf @a GHC.Prim.(##)}] -f = \ (@a) _ [Occ=Dead] -> T13143.$wf @a GHC.Prim.(##) + Tmpl= \ (@a) _ [Occ=Dead] -> T13143.$wf GHC.Prim.(##) @a}] +f = \ (@a) _ [Occ=Dead] -> T13143.$wf GHC.Prim.(##) @a -- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0} T13143.$trModule4 :: GHC.Prim.Addr# @@ -59,13 +59,13 @@ T13143.$trModule :: GHC.Types.Module T13143.$trModule = GHC.Types.Module T13143.$trModule3 T13143.$trModule1 --- RHS size: {terms: 2, types: 1, coercions: 0, joins: 0/0} -lvl :: Int +-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0} +lvl :: forall {a}. a [GblId, Str=b, Cpr=b] -lvl = T13143.$wf @Int GHC.Prim.(##) +lvl = T13143.$wf GHC.Prim.(##) Rec { --- RHS size: {terms: 28, types: 7, coercions: 0, joins: 0/0} +-- RHS size: {terms: 28, types: 8, coercions: 0, joins: 0/0} T13143.$wg [InlPrag=[2], Occ=LoopBreaker] :: Bool -> Bool -> GHC.Prim.Int# -> GHC.Prim.Int# [GblId[StrictWorker([!, !, ~])], |