From: simonpj Date: Fri, 10 Apr 1998 16:29:49 +0000 (+0000) Subject: [project @ 1998-04-10 16:29:46 by simonpj] X-Git-Tag: Approx_2487_patches~805 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=a6c32f649d2284a29dda1f0b0cfb1221b142aa7d;p=ghc-hetmet.git [project @ 1998-04-10 16:29:46 by simonpj] Another obscure -prof bug in SimplVar --- diff --git a/ghc/compiler/basicTypes/MkId.lhs b/ghc/compiler/basicTypes/MkId.lhs index 414ef2e..f9f7710 100644 --- a/ghc/compiler/basicTypes/MkId.lhs +++ b/ghc/compiler/basicTypes/MkId.lhs @@ -322,9 +322,11 @@ mkDictSelId name clas ty 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 diff --git a/ghc/compiler/simplCore/SimplVar.lhs b/ghc/compiler/simplCore/SimplVar.lhs index 7c1340b..0a7b85a 100644 --- a/ghc/compiler/simplCore/SimplVar.lhs +++ b/ghc/compiler/simplCore/SimplVar.lhs @@ -72,12 +72,13 @@ completeVar env inline_call var args result_ty -- 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) $