[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