
#9646: Simplifer non-determinism leading to 8 fold difference in run time performance -------------------------------------+------------------------------------- Reporter: erikd | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Test Suite | Version: 7.8.3 Resolution: | Keywords: Operating System: Linux | Architecture: x86_64 | (amd64) Type of failure: Runtime | Test Case: performance bug | testsuite/tests/simplCore/T9646 Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Phab:D2009 Wiki Page: | -------------------------------------+------------------------------------- Changes (by thomie): * status: closed => new * resolution: fixed => Comment: This test is failing for `WAY=ghci`. This is the output, after adding `-fobject-code` (because of the use of unboxed tuples): {{{ --- ./T9646.run/T9646.stdout.normalised 2016-06-19 16:49:06.204443094 +0200 +++ ./T9646.run/T9646.run.stdout.normalised 2016-06-19 16:49:06.204443094 +0200 @@ -1,3 +1,96 @@ + +==================== Desugared ==================== +bindIO + ((\ @ a -> + let { + $dGHCiSandboxIO + $dGHCiSandboxIO = $fGHCiSandboxIOIO } in + ghciStepIO $dGHCiSandboxIO) + (hSetBuffering stdout LineBuffering)) + (\ it -> returnIO (build (\ @ a c n -> c (unsafeCoerce# it) n))) + + + +==================== Simplifier statistics ==================== +Total ticks: 12 + +2 PreInlineUnconditionally + 1 tpl + 1 $dGHCiSandboxIO +1 UnfoldingDone 1 unsafeCoerce# +1 RuleFired 1 Class op ghciStepIO +1 EtaExpansion 1 it +7 BetaReduction + 1 k0 + 1 k1 + 1 a + 1 b + 1 tpl + 1 a + 1 a + + + +==================== Simplified expression ==================== +bindIO + (id (hSetBuffering stdout LineBuffering)) + ((\ it eta -> + ((returnIO (build (\ @ a c n -> c it n))) `cast` ...) eta) + `cast` ...) + + + +==================== Desugared ==================== +let { + $dMonad + $dMonad = $fMonadIO } in +let { + $dMonad + $dMonad = $dMonad } in +bindIO + ((\ @ a -> + let { + $dGHCiSandboxIO + $dGHCiSandboxIO = $fGHCiSandboxIOIO } in + ghciStepIO $dGHCiSandboxIO) + (>> $dMonad (runIOFastExit main) (return $dMonad ()))) + (\ it -> returnIO (build (\ @ a c n -> c (unsafeCoerce# it) n))) + + + +==================== Simplifier statistics ==================== +Total ticks: 16 + +3 PreInlineUnconditionally + 1 tpl + 1 $dGHCiSandboxIO + 1 $dMonad +1 PostInlineUnconditionally 1 $dMonad +1 UnfoldingDone 1 unsafeCoerce# +3 RuleFired + 1 Class op >> + 1 Class op ghciStepIO + 1 Class op return +1 EtaExpansion 1 it +7 BetaReduction + 1 k0 + 1 k1 + 1 a + 1 b + 1 tpl + 1 a + 1 a + + + +==================== Simplified expression ==================== +bindIO + (id (thenIO (runIOFastExit main) ($fMonadIO_$creturn ()))) + ((\ it eta -> + ((returnIO (build (\ @ a c n -> c it n))) `cast` ...) eta) + `cast` ...) + + 1234 2345 2893730 *** unexpected failure for T9646(ghci) }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9646#comment:27 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler