diff options
Diffstat (limited to 'compiler/stranal/WorkWrap.hs')
-rw-r--r-- | compiler/stranal/WorkWrap.hs | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/compiler/stranal/WorkWrap.hs b/compiler/stranal/WorkWrap.hs index 8f34b3b2ec..6b98ffe4be 100644 --- a/compiler/stranal/WorkWrap.hs +++ b/compiler/stranal/WorkWrap.hs @@ -185,7 +185,7 @@ f. But that would make a new unfolding which would overwrite the old one! So the function would no longer be INLNABLE, and in particular will not be specialised at call sites in other modules. -This comes in practice (Trac #6056). +This comes in practice (#6056). Solution: do the w/w for strictness analysis, but transfer the Stable unfolding to the *worker*. So we will get something like this: @@ -240,9 +240,9 @@ will happen on every call of g. Disaster. Solution: do worker/wrapper even on NOINLINE things; but move the NOINLINE pragma to the worker. -(See Trac #13143 for a real-world example.) +(See #13143 for a real-world example.) -It is crucial that we do this for *all* NOINLINE functions. Trac #10069 +It is crucial that we do this for *all* NOINLINE functions. #10069 demonstrates what happens when we promise to w/w a (NOINLINE) leaf function, but fail to deliver: @@ -388,7 +388,7 @@ When should the wrapper inlining be active? Note [Worker-wrapper for NOINLINE functions] 3. For ordinary functions with no pragmas we want to inline the - wrapper as early as possible (Trac #15056). Suppose another module + wrapper as early as possible (#15056). Suppose another module defines f x = g x x and suppose there is some RULE for (g True True). Then if we have a call (f True), we'd expect to inline 'f' and the RULE will fire. |