[GHC] #8814: 7.8 optimizes attoparsec improperly
GHC
ghc-devs at haskell.org
Thu Mar 6 09:14:10 UTC 2014
#8814: 7.8 optimizes attoparsec improperly
--------------------------------------------+------------------------------
Reporter: joelteon | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 7.8.1-rc1
Resolution: | Keywords:
Operating System: MacOS X | Architecture: x86_64
Type of failure: Runtime performance bug | (amd64)
Test Case: | Difficulty: Unknown
Blocking: | Blocked By:
| Related Tickets: #8763
--------------------------------------------+------------------------------
Comment (by simonpj):
We're a bit stalled here. There is something mysterious going on, which a
single INLINE pragma (Bryan's patch) fixes. But why? My guess is that
it's something to do with the interaction between inlning and attoparsec's
RULES. For example if a rule optimises `(f (g x))`, and `g` gets inlined,
the rule won't fire. Or, if
{{{
h x = f x + 1
}}}
then the expression `h (g x)` won't fire the rule unless `h` is first
inlined.
The "phase" annotations on INLINE pragmas and RULES let you control this
stuff. So the bug might not be in GHC; it might just be a missing phase
annotation. Or there might be a bug in GHC. We won't know until someone
digs further.
Apart from lack of time, the difficulty is that I have no clue how
attoparsec's RULES are supposed to work. So I think we are stalled
unless/until someone feels able to do some digging to isolate what is
going on.
Thanks!
Simon
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8814#comment:11>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list