field_lbl = mkFieldLabel name ty tag
tag = assoc "MkId.mkDictSelId" ((sc_sel_ids ++ op_sel_ids) `zip` allFieldLabelTags) sel_id
- info = setInlinePragInfo IWantToBeINLINEd $
+ info = setInlinePragInfo IMustBeINLINEd $
setUnfoldingInfo unfolding noIdInfo
-- The always-inline thing means we don't need any other IdInfo
+ -- We need "Must" inline because we don't create any bindigs for
+ -- the selectors.
unfolding = mkUnfolding rhs
-- Look for an unfolding. There's a binding for the
-- thing, but perhaps we want to inline it anyway
| has_unfolding
- && (not essential_unfoldings_only || idMustBeINLINEd var)
- -- If "essential_unfoldings_only" is true we do no inlinings at all,
- -- EXCEPT for things that absolutely have to be done
- -- (see comments with idMustBeINLINEd)
- && (inline_call || ok_to_inline)
- && costCentreOk (getEnclosingCC env) (coreExprCc unf_template)
+ && (idMustBeINLINEd var ||
+ (not essential_unfoldings_only
+ -- If "essential_unfoldings_only" is true we do no inlinings at all,
+ -- EXCEPT for things that absolutely have to be done
+ -- (see comments with idMustBeINLINEd)
+ && (inline_call || ok_to_inline)
+ && costCentreOk (getEnclosingCC env) (coreExprCc unf_template)))
=
{-
pprTrace "Unfolding" (ppr var) $