diff options
Diffstat (limited to 'compiler/simplCore/Simplify.hs')
-rw-r--r-- | compiler/simplCore/Simplify.hs | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/compiler/simplCore/Simplify.hs b/compiler/simplCore/Simplify.hs index 2156dc55b8..0130e06469 100644 --- a/compiler/simplCore/Simplify.hs +++ b/compiler/simplCore/Simplify.hs @@ -746,7 +746,7 @@ arity computation it performs (via CoreArity.findRhsArity) already does a simple bottoming-expression analysis. So all we need to do is propagate that info to the binder's IdInfo. -This showed up in Trac #12150; see comment:16. +This showed up in #12150; see comment:16. Note [Setting the demand info] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -1218,7 +1218,7 @@ rebuild env expr cont {- Note [Optimising reflexivity] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ It's important (for compiler performance) to get rid of reflexivity as soon -as it appears. See Trac #11735, #14737, and #15019. +as it appears. See #11735, #14737, and #15019. In particular, we want to behave well on @@ -1232,7 +1232,7 @@ In particular, we want to behave well on build up NthCo stacks. Silly to do that if co is reflexive. However, we don't want to call isReflexiveCo too much, because it uses -type equality which is expensive on big types (Trac #14737 comment:7). +type equality which is expensive on big types (#14737 comment:7). A good compromise (determined experimentally) seems to be to call isReflexiveCo @@ -1240,7 +1240,7 @@ isReflexiveCo * at the end In investigating this I saw missed opportunities for on-the-fly -coercion shrinkage. See Trac #15090. +coercion shrinkage. See #15090. -} @@ -1292,7 +1292,7 @@ simplCast env body co0 cont0 -- 'co' with the InExpr 'arg', so we simplify -- to make it all consistent. It's a bit messy. -- But it isn't a common case. - -- Example of use: Trac #995 + -- Example of use: #995 ; return (ApplyToVal { sc_arg = mkCast arg' co1 , sc_env = arg_se' , sc_dup = dup' @@ -1524,7 +1524,7 @@ Simplifying rules and stable-unfoldings happens a bit after simplifying the right-hand side, so we remember whether or not it is a join point, and what 'cont' is, in a value of type MaybeJoinCont -Trac #13900 wsa caused by forgetting to push 'cont' into the RHS +#13900 wsa caused by forgetting to push 'cont' into the RHS of a SpecConstr-generated RULE for a join point. -} @@ -2269,7 +2269,7 @@ where 'r' is used strictly in (..r..), we can safely transform to This is a Good Thing, because 'r' might be dead (if the body just calls error), or might be used just once (in which case it can be inlined); or we might be able to float the let-binding up or down. -E.g. Trac #15631 has an example. +E.g. #15631 has an example. Note that this can change the error behaviour. For example, we might transform @@ -2280,7 +2280,7 @@ let-bound to (error "good"). Nevertheless, the paper "A semantics for imprecise exceptions" allows this transformation. If you want to fix the evaluation order, use -'pseq'. See Trac #8900 for an example where the loss of this +'pseq'. See #8900 for an example where the loss of this transformation bit us in practice. See also Note [Empty case alternatives] in CoreSyn. @@ -2298,7 +2298,7 @@ There have been various earlier versions of this patch: scrut_is_demanded_var _ = False This only fired if the scrutinee was a /variable/, which seems - an unnecessary restriction. So in Trac #15631 I relaxed it to allow + an unnecessary restriction. So in #15631 I relaxed it to allow arbitrary scrutinees. Less code, less to explain -- but the change had 0.00% effect on nofib. @@ -2313,7 +2313,7 @@ There have been various earlier versions of this patch: case_bndr_evald_next (Case e _ _ _) = case_bndr_evald_next e case_bndr_evald_next _ = False - This patch was part of fixing Trac #7542. See also + This patch was part of fixing #7542. See also Note [Eta reduction of an eval'd function] in CoreUtils.) @@ -2562,7 +2562,7 @@ We'd like to transform so that 'rhs' can take advantage of the form of x'. Notice that Note [Case of cast] (in OccurAnal) may then apply to the result. -We'd also like to eliminate empty types (Trac #13468). So if +We'd also like to eliminate empty types (#13468). So if data Void type instance F Bool = Void @@ -2698,7 +2698,7 @@ NB: simplLamBinders preserves this eval info In addition to handling data constructor fields with !s, addEvals also records the fact that the result of seq# is always in WHNF. -See Note [seq# magic] in PrelRules. Example (Trac #15226): +See Note [seq# magic] in PrelRules. Example (#15226): case seq# v s of (# s', v' #) -> E @@ -2707,7 +2707,7 @@ we want the compiler to be aware that v' is in WHNF in E. Open problem: we don't record that v itself is in WHNF (and we can't do it here). The right thing is to do some kind of binder-swap; -see Trac #15226 for discussion. +see #15226 for discussion. -} addEvals :: Maybe OutExpr -> DataCon -> [Id] -> [Id] @@ -2799,7 +2799,7 @@ The let/app invariant requires that y is evaluated in the call to reallyUnsafePtrEq#, which it is. But we still want that to be true if we propagate binders to occurrences. -This showed up in Trac #13027. +This showed up in #13027. Note [Add unfolding for scrutinee] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -2975,7 +2975,7 @@ When we have of alts then we can just duplicate those alts because the A and C cases will disappear immediately. This is more direct than creating -join points and inlining them away. See Trac #4930. +join points and inlining them away. See #4930. -} -------------------- @@ -3208,7 +3208,7 @@ Supposing that body is big, we end up with This is just what we want because the rn produces a box that the case rn cancels with. -See Trac #4957 a fuller example. +See #4957 a fuller example. Note [Case binders and join points] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -3306,7 +3306,7 @@ them. Thus: Now if the thing in the hole is a case expression (which is when we'll call mkDupableCont), we'll push the function call into the branches, which is what we want. Now RULES for f may fire, and -call-pattern specialisation. Here's an example from Trac #3116 +call-pattern specialisation. Here's an example from #3116 go (n+1) (case l of 1 -> bs' _ -> Chunk p fpc (o+1) (l-1) bs') @@ -3489,7 +3489,7 @@ simplStableUnfolding env top_lvl mb_cont id unf rhs_ty -- has got small. This happens, notably in the inlinings -- for dfuns for single-method classes; see -- Note [Single-method classes] in TcInstDcls. - -- A test case is Trac #4138 + -- A test case is #4138 -- But retain a previous boring_ok of True; e.g. see -- the way it is set in calcUnfoldingGuidanceWithArity in return (mkCoreUnfolding src is_top_lvl expr' guide') |