[GHC] #10346: Cross-module SpecConstr

GHC ghc-devs at haskell.org
Wed May 9 03:52:23 UTC 2018


#10346: Cross-module SpecConstr
-------------------------------------+-------------------------------------
        Reporter:  simonpj           |                Owner:  ckoparkar
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  7.10.1
      Resolution:                    |             Keywords:  SpecConstr,
                                     |  newcomer
Operating System:  Unknown/Multiple  |         Architecture:
 Type of failure:  Runtime           |  Unknown/Multiple
  performance bug                    |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:  #13016            |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by ckoparkar):

 It turns out that I was comparing the Core output of the regular
 Specializer instead of SpecConstr. Now that I'm looking at the proper
 thing, I'm a bit confused and have the same question as ak3n did. Even if
 I just use GHC HEAD, it seems that the call to `foo` in a different module
 is specialized. Using the same example with modules `M` and `X`, and
 compiling it with: `ghc-stage2 -O2 -fforce-recomp -ddump-spec -fspec-
 constr -fno-specialize X.hs`, this is what `bar` looks like after
 SpecConstr runs:

 {{{
 bar :: (Integer, Integer)
 [LclIdX]
 bar
   = case $wfoo1_s1h9 GHC.Types.False ww_s1h3 ww_s1h4 of
     { (# ww_s1ha, ww_s1hb #) ->
     (ww_s1ha, ww_s1hb)
     }
 }}}

 (This is exactly what the last paragraph in the `Note [Seeding top-level
 recursive groups]` says should happen. There's a specialized copy of `foo`
 in the importing module. Or that's what I think it is.)

 I feel like I'm making a dumb mistake and I'm trying to track this down.
 mpickering: Do you remember if you were using some specific example while
 working on that patch ?

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


More information about the ghc-tickets mailing list