[GHC] #15058: scc001 unexpected passes in prof way on CircleCI
GHC
ghc-devs at haskell.org
Sun Jul 1 11:10:17 UTC 2018
#15058: scc001 unexpected passes in prof way on CircleCI
-------------------------------------+-------------------------------------
Reporter: bgamari | Owner: (none)
Type: bug | Status: closed
Priority: high | Milestone: 8.6.1
Component: Compiler | Version: 8.2.2
Resolution: fixed | Keywords: ci-breakage
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: #10037 | Differential Rev(s): Phab:D4712
Wiki Page: |
-------------------------------------+-------------------------------------
Description changed by osa1:
Old description:
> This was already fixed with c4219d9f7d1, but I realized this too late and
> actually debugged this. See below for my summary.
>
> This is also not related with #4012 (different optimization parameters of
> course result in different compiled code) and #12935 (Core outputs are
> different, not related with object code) so removing those from "related
> tickets".
>
> ----
>
> The diff is not helpful because it doesn't show the original output and
> expected files so we miss some context. Basically with `-O0` (default,
> prof way) `h` is top level and gets a cost centre accordingly, but with
> `-O` (profasm way) it's inlined with its SCC.
>
> With -O0 (default, prof way):
>
> {{{
> h_rsH = scctick<h> case ds_r1I1 of { (h1_a1qY) -> h1_a1qY }
>
> main :: IO ()
> main
> = scctick<main>
> >>
> GHC.Base.$fMonadIO
> ($ (print GHC.Show.$fShowBool) (tick<f> GHC.Types.True))
> (>>
> GHC.Base.$fMonadIO
> ($ (print GHC.Show.$fShowInt) (tick<g> GHC.Types.I# 3#))
> ($ (print GHC.Show.$fShowChar) (h_rsH (GHC.Types.C# 'a'#))))
> }}}
>
> With -O (profasm WAY):
>
> {{{
> Main.main2
> = scc<main>
> tick<h>
> case Main.main5 of { (h_a1se) ->
> case scc<h> h_a1se Main.main4 of { GHC.Types.C# ds1_a1Zn ->
> case ds1_a1Zn of ds2_a1Zp {
> __DEFAULT ->
> GHC.Types.:
> GHC.Show.$fShowChar3 (GHC.Show.$wshowLitChar ds2_a1Zp
> Main.main3);
> '\''# -> GHC.Show.$fShowChar1
> }
> }
> }
> }}}
>
> And profiling outputs are correct in both cases. prof way: (h is a CAF)
>
> {{{
> COST CENTRE MODULE SRC no. entries
> %time %alloc %time %alloc
>
> MAIN MAIN <built-in> 115 0
> 0.0 1.2 0.0 100.0
> CAF Main <entire-module> 229 0
> 0.0 0.1 0.0 1.5
> (...) Main scc001.hs:16:1-16 235 1
> 0.0 0.0 0.0 0.0
> h Main scc001.hs:16:1-16 234 1
> 0.0 0.0 0.0 0.0
> main Main scc001.hs:(5,1)-(7,23) 230 1
> 0.0 1.4 0.0 1.4
> f Main scc001.hs:10:1-7 232 1
> 0.0 0.0 0.0 0.0
> g Main scc001.hs:13:1-7 233 1
> 0.0 0.0 0.0 0.0
> }}}
>
> profasm way: (h is inlined, no CAFs for it)
>
> {{{
> COST CENTRE MODULE SRC no. entries
> %time %alloc %time %alloc
>
> MAIN MAIN <built-in> 115 0
> 0.0 1.2 0.0 100.0
> CAF Main <entire-module> 229 0
> 0.0 0.1 0.0 0.3
> (...) Main scc001.hs:16:1-16 235 1
> 0.0 0.0 0.0 0.0
> main Main scc001.hs:(5,1)-(7,23) 230 1
> 0.0 0.3 0.0 0.3
> g Main scc001.hs:13:1-7 233 1
> 0.0 0.0 0.0 0.0
> h Main scc001.hs:16:1-16 234 1
> 0.0 0.0 0.0 0.0
> }}}
>
> Some ways to fix:
>
> - If we really want to test this with multiple ways, use two different
> tests depending on whether the ways add -O or not. Use two different
> prof.sample files.
> - Only test with ways that add or don't add -O, use single prof.sample.
>
> I don't understand why scc001 is considered as "unexpected pass" in the
> summary in CircleCI link above. In the logs I see that it actually
> failed, and I don't see any unexpected passes.
New description:
This should supposedly fail due to #10037.
--
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/15058#comment:7>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list