#12370: Implement LetUp in DmdAnal (or document why we do not do it) -------------------------------------+------------------------------------- Reporter: nomeata | Owner: Type: task | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.1 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): I have an implementation now, and I think it does what it should. Performance measurements, though, indicate no significant changes whatsoever: https://perf.haskell.org/ghc/#revision/04ded5e3c0bcc359f4b46958b5942b8230af1... The programs get consistently smaller by 0.02%. The test suite goes through with the exception of a single test: {{{ Actual stderr output differs from expected: --- ./simplCore/should_compile/spec-inline.run/spec- inline.stderr.normalised 2016-07-06 18:06:21.855289459 +0200 +++ ./simplCore/should_compile/spec-inline.run/spec- inline.comp.stderr.normalised 2016-07-06 18:06:21.855289459 +0200 @@ -43,7 +43,7 @@ -- RHS size: {terms: 55, types: 9, coercions: 0} Roman.foo_$s$wgo [Occ=LoopBreaker] :: GHC.Prim.Int# -> GHC.Prim.Int# -> GHC.Prim.Int# -[GblId, Arity=2, Caf=NoCafRefs, Str=<L,U><S,U>] +[GblId, Arity=2, Caf=NoCafRefs, Str=<S,U><S,U>] Roman.foo_$s$wgo = / (sc :: GHC.Prim.Int#) (sc1 :: GHC.Prim.Int#) -> let { *** unexpected failure for spec-inline(optasm) }}} And this “better” signature does not matter, as the argument is unlifted anyways. I will separately measure if this increases the number of thunks determined to be one-shot. But even if it did, it does not matter much, as shown by nofib. The code change (changeset:04ded5e3c0bcc359f4b46958b5942b8230af1b28/ghc) is relatively small and brings it closer to the paper. Is it worth getting that in shape for master, or should we not bother? -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12370#comment:2> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler