Better sharing of join points: #19996
This patch fixes #19996 (closed) and #20049 (closed).
-
In the StrictArg case of
mkDupableContWithDmds
, don't use Plan A for data constructors -
In
postInlineUnconditionally
, don't inline JoinIds. Avoids inliningjoin $j x = Just x in case blah of A -> $j x1 B -> $j x2 C -> $j x3
-
In
mkDupableStrictBind
andmkDupableStrictAlt
, create join points (much) more often:exprIsTrivial
rather thanexprIsDupable
. This is probably too much, but we'll see