[Git][ghc/ghc][master] CorePrep: Allow floating dictionary applications in -O0 into a Rec (#24102)
Marge Bot (@marge-bot)
gitlab at gitlab.haskell.org
Fri Oct 20 08:04:02 UTC 2023
Marge Bot pushed to branch master at Glasgow Haskell Compiler / GHC
Commits:
fded7dd4 by Sebastian Graf at 2023-10-20T04:03:30-04:00
CorePrep: Allow floating dictionary applications in -O0 into a Rec (#24102)
- - - - -
1 changed file:
- compiler/GHC/CoreToStg/Prep.hs
Changes:
=====================================
compiler/GHC/CoreToStg/Prep.hs
=====================================
@@ -643,13 +643,20 @@ cpeBind top_lvl env (Rec pairs)
where
(bndrs, rhss) = unzip pairs
- -- Flatten all the floats, and the current
- -- group into a single giant Rec
+ -- Flatten all the floats, and the current
+ -- group into a single giant Rec
add_float (Float bind bound _) prs2
- | bound /= CaseBound = case bind of
+ | bound /= CaseBound
+ || all (definitelyLiftedType . idType) (bindersOf bind)
+ -- The latter check is hit in -O0 (i.e., flavours quick, devel2)
+ -- for dictionary args which haven't been floated out yet, #24102.
+ -- They are preferably CaseBound, but since they are lifted we may
+ -- just as well put them in the Rec, in contrast to lifted bindings.
+ = case bind of
NonRec x e -> (x,e) : prs2
Rec prs1 -> prs1 ++ prs2
- add_float f _ = pprPanic "cpeBind" (ppr f)
+ add_float f _ = pprPanic "cpeBind" (ppr f)
+
---------------
cpePair :: TopLevelFlag -> RecFlag -> Demand -> Bool
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/fded7dd4300df8e1657b710f4deed16aa1d35ebe
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/fded7dd4300df8e1657b710f4deed16aa1d35ebe
You're receiving this email because of your account on gitlab.haskell.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-commits/attachments/20231020/0fb92954/attachment-0001.html>
More information about the ghc-commits
mailing list