
#13143: NOINLINE and worker/wrapper -------------------------------------+------------------------------------- Reporter: simonpj | Owner: Type: bug | Status: closed Priority: normal | Milestone: 8.2.1 Component: Compiler | Version: 8.0.1 Resolution: fixed | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): D3046 Wiki Page: | -------------------------------------+------------------------------------- Comment (by nomeata): Hmm. I guess I am a bit late to the party, but I feel uneasy about this. On some level, to me, `NOINLINE` means “Dear compiler, in all uses of this, please treat this as a black box with precisely the interface I give here.” Allowing W/W moves a part of what the function does (e.g. taking a constructor apart) to the uses. I guess the test case did not come up with anything, but does this interfere with rules? A rule might mention the `NOINLINE` thing, but aftetr W/W, the worker remains, and a rule will no longer fire. `NOINLINE` is also very useful to prevent the compiler from optimizing test cases in our test suite too much (although I see that that should not be a driving factor). -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13143#comment:5 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler