[GHC] #14186: CSE fails to CSE two identical large top-level functions

GHC ghc-devs at haskell.org
Wed Sep 6 13:37:05 UTC 2017


#14186: CSE fails to CSE two identical large top-level functions
-------------------------------------+-------------------------------------
        Reporter:  nomeata           |                Owner:  (none)
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  8.3
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by nomeata):

 > So we should be able to distinguish between a user-supplied INLINE
 pragma inl_inline and one supplied the w/w pass.

 Are you saying that we can do that already, without changes to
 `BasicTypes`, or that we should extend `BasicTypes` to be able to do that?

 The current code in WorkWrap is
 {{{
             wrap_act  = ActiveAfter NoSourceText 0
             wrap_prag = InlinePragma { inl_src = SourceText "{-# INLINE"
                                      , inl_inline = Inline
                                      , inl_sat    = Nothing
                                      , inl_act    = wrap_act
                                      , inl_rule   = rule_match_info }
 }}}
 and unless I check for `NoSourceText`, this seems to be indistinguishable
 from a `INLINE[0]` in the source.

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


More information about the ghc-tickets mailing list