Re: [GHC] #5889: -fno-prof-count-entries leads to linking errors

#5889: -fno-prof-count-entries leads to linking errors -------------------------------------+------------------------------------- Reporter: akio | Owner: bgamari Type: bug | Status: new Priority: highest | Milestone: 8.4.1 Component: Compiler | Version: 8.3 Resolution: | Keywords: Operating System: Linux | Architecture: x86_64 | (amd64) Type of failure: GHC rejects | Test Case: valid program | profiling/should_compile/T5889 Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by osa1): We discussed this with @bgamari on IRC and I did some experimenting with the flags, and I think this story makes sense: Answer to question "why are these cost centers eliminated in the definition site (in module B) but not in use site (in module A)" is because worker for `split` is not inlined in module A. It's inlined when I compile module B with `-fspec-constr`: {{{ Inlining done: B.$wsplit Inlined fn: \ (w :: GHC.Integer.Type.Integer) (w1 [Occ=Once!] :: GHC.Base.Maybe GHC.Integer.Type.Integer) -> case w1 of { GHC.Base.Nothing -> (# scc<split> B.plus_noinline w B.split3, scc<split> B.plus_noinline w B.split2 #); GHC.Base.Just m -> case scc<split> GHC.Integer.Type.eqInteger# w B.split1 of { __DEFAULT -> scc<split> B.split_$s$wsplit m (GHC.Integer.Type.minusInteger w B.split3); 1# -> (# m, m #) } } Cont: ApplyToVal nodup w ApplyToVal nodup w1 Select nodup ww Stop[BoringCtxt] (GHC.Integer.Type.Integer, GHC.Integer.Type.Integer) }}} with this I no longer get any linker errors. In comment:19 I said that `SpecConstr` pass doesn't actually change the program -- this is correct, we don't need `SpecConstr` in A, we need it in B to make the worker for `split` available in module A. Once we compile `B` with `-fspec-constr` the worker becomes available in when compiling `A`. Hopefully this explains. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/5889#comment:24 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC