
#4941: SpecConstr generates functions that do not use their arguments ---------------------------------+------------------------------------------ Reporter: simonpj | Owner: Type: task | Status: new Priority: normal | Milestone: _|_ Component: Compiler | Version: 7.0.1 Keywords: | Os: Unknown/Multiple Architecture: Unknown/Multiple | Failure: Runtime performance bug Difficulty: | Testcase: Blockedby: | Blocking: Related: | ---------------------------------+------------------------------------------ Comment(by nfrisby): Replying to [comment:20 nfrisby]:
I'm investigating nucleic2 at the moment; it's changing something currently not specifically tracked by ticky, so I'm resurrecting more counters. There's nothing obvious to me in the STG, at least.
It's actually pretty clear in the STG. A let at the entry to $w$wvar_most_distant_atom with 12 free Float# vars gets inlined into numerous thunks, at least 24 (25?) of which are allocated all at once. In the CMM `Hp = Hp + 1376` becomes `Hp = Hp + 3576`. Some arithmetic with these numbers just about covers the reported ticky difference for $w$wvar_most_distant_atom. Needs more inspection (distinct from this ticket... sorry), though this seems a bit of a corner case: arity=40 and the involved state type uses record types with numerous non-strict fields of type Float. I'll record it with the ticket I'm soon making for the late demand analysis pass. -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/4941#comment:21 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler