diff options
Diffstat (limited to 'compiler/coreSyn/CoreUtils.hs')
-rw-r--r-- | compiler/coreSyn/CoreUtils.hs | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/compiler/coreSyn/CoreUtils.hs b/compiler/coreSyn/CoreUtils.hs index 5b161995ea..8e298adf6a 100644 --- a/compiler/coreSyn/CoreUtils.hs +++ b/compiler/coreSyn/CoreUtils.hs @@ -190,7 +190,7 @@ not much used, except in the output of the desugarer. Example: let a = Int in (\x:a. x) Given this, exprType must be careful to substitute 'a' in the -result type (Trac #8522). +result type (#8522). Note [Existential variables and silly type synonyms] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -202,7 +202,7 @@ Consider Now, the type of 'x' is (Funny a), where 'a' is existentially quantified. That means that 'exprType' and 'coreAltsType' may give a result that *appears* -to mention an out-of-scope type variable. See Trac #3409 for a more real-world +to mention an out-of-scope type variable. See #3409 for a more real-world example. Various possibilities suggest themselves: @@ -571,7 +571,7 @@ that cannot match. For example: Suppose that for some silly reason, x isn't substituted in the case expression. (Perhaps there's a NOINLINE on it, or profiling SCC stuff -gets in the way; cf Trac #3118.) Then the full-lazines pass might produce +gets in the way; cf #3118.) Then the full-lazines pass might produce this x = Red @@ -827,11 +827,11 @@ and similarly in cascade for all the join points! NB: it's important that all this is done in [InAlt], *before* we work on the alternatives themselves, because Simplify.simplAlt may zap the occurrence info on the binders in the alternatives, which in turn -defeats combineIdenticalAlts (see Trac #7360). +defeats combineIdenticalAlts (see #7360). Note [Care with impossible-constructors when combining alternatives] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Suppose we have (Trac #10538) +Suppose we have (#10538) data T = A | B | C | D case x::T of (Imposs-default-cons {A,B}) @@ -867,7 +867,7 @@ Then when combining the A and C alternatives we get Note that we have a new DEFAULT branch that we didn't have before. So we need delete from the "impossible-default-constructors" all the -known-con alternatives that we have eliminated. (In Trac #11172 we +known-con alternatives that we have eliminated. (In #11172 we missed the first one.) -} @@ -950,7 +950,7 @@ it as trivial we may land up with let-bindings like let v = case x of {} in ... and after CoreToSTG that gives let v = x in ... -and that confuses the code generator (Trac #11155). So best to kill +and that confuses the code generator (#11155). So best to kill it off at source. -} @@ -1102,7 +1102,7 @@ dupAppSize :: Int dupAppSize = 8 -- Size of term we are prepared to duplicate -- This is *just* big enough to make test MethSharing -- inline enough join points. Really it should be - -- smaller, and could be if we fixed Trac #4960. + -- smaller, and could be if we fixed #4960. {- ************************************************************************ @@ -1116,7 +1116,7 @@ Note [exprIsWorkFree] exprIsWorkFree is used when deciding whether to inline something; we don't inline it if doing so might duplicate work, by peeling off a complete copy of the expression. Here we do not want even to -duplicate a primop (Trac #5623): +duplicate a primop (#5623): eg let x = a #+ b in x +# x we do not want to inline/duplicate x @@ -1276,7 +1276,7 @@ expansion. Specifically: * False of case-expressions. If we have let x = case ... in ...(case x of ...)... - we won't simplify. We have to inline x. See Trac #14688. + we won't simplify. We have to inline x. See #14688. * False of let-expressions (same reason); and in any case we float lets out of an RHS if doing so will reveal an expandable @@ -1657,7 +1657,7 @@ But we restrict it sharply: add unlifted algebraic types in due course. ------ Historical note: Trac #15696: -------- +----- Historical note: #15696: -------- Previously SetLevels used exprOkForSpeculation to guide floating of single-alternative cases; it now uses exprIsHNF Note [Floating single-alternative cases]. @@ -1676,9 +1676,9 @@ But we restrict it sharply: ...(case x of y A -> ... _ -> ...blah...)... - which is utterly bogus (seg fault); see Trac #5453. + which is utterly bogus (seg fault); see #5453. ------ Historical note: Trac #3717: -------- +----- Historical note: #3717: -------- foo :: Int -> Int foo 0 = 0 foo n = (if n < 5 then 1 else 2) `seq` foo (n-1) @@ -1703,7 +1703,7 @@ points do the job nicely. Note [Primops with lifted arguments] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Is this ok-for-speculation (see Trac #13027)? +Is this ok-for-speculation (see #13027)? reallyUnsafePtrEq# a b Well, yes. The primop accepts lifted arguments and does not evaluate them. Indeed, in general primops are, well, primitive @@ -2279,7 +2279,7 @@ There are some particularly delicate points here: *keeps* arity 1 (perhaps also wrongly). So CorePrep eta-expands the definition again, so that it does not termninate after all. Result: seg-fault because the boolean case actually gets a function value. - See Trac #1947. + See #1947. So it's important to do the right thing. @@ -2434,7 +2434,7 @@ to the rule that * f is not bottom we can eta-reduce \x. f x ===> f -This turned up in Trac #7542. +This turned up in #7542. ************************************************************************ |