INLINE pragma doesn't trigger on locally defined function
I have a function on the form
f = ...g...
where
g = ...h...
h = ...step...
where step
| ... = ...g...
| ... = ...step...
{-# INLINE h #-}
{-# INLINE f #-}
GHC refuses to inline h, even with an explicit INLINE pragma. I realize that h is part of a loop, g->h->step->g, but it seems to me that it should be possible to inline the non-recursive h anyway.
I've attached a standalone test case (which is a quite a bit longer.) The function f above corresponds to filterWithKey in the test case.
Trac metadata
| Trac field | Value |
|---|---|
| Version | 7.4.1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |