[GHC] #14211: Compiler is unable to INLINE as well as the programmer can manually

GHC ghc-devs at haskell.org
Thu Sep 14 16:16:28 UTC 2017


#14211: Compiler is unable to INLINE as well as the programmer can manually
-------------------------------------+-------------------------------------
        Reporter:  harendra          |                Owner:  (none)
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  8.2.1
      Resolution:                    |             Keywords:
                                     |  StaticArgumentTransformation,
                                     |  Inlining
Operating System:  Unknown/Multiple  |         Architecture:
 Type of failure:  Runtime           |  Unknown/Multiple
  performance bug                    |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by mpickering):

 I looked at this issue all of this afternoon and don't feel any closer to
 understanding what is going on but have some diagnosis.

 Manually performing SAT makes the program much faster. The SAT pass itself
 does nothing to the definition when there is an `INLINE` pragma on the
 definition. Removing the `INLINE` pragma causes SAT is happen but makes
 the program much slower as it is not inlined. Adding `-fexpose-all-
 unfoldings` to the defining module again makes the program much faster.

 I also noticed some interaction with SAT and inline pragmas, obviously the
 unsatted definition is included as the unfolding when an INLINE pragma is
 present even if it is a loop-breaker. SAT has the effect of changing a
 definition from a loop-breaker into an inlinable function but because we
 only export one unfolding this is then not usable across modules. All very
 unsatisfactory.

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14211#comment:4>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list