#10218: GHC creates incorrect code which throws <<loop>> -------------------------------------+------------------------------------- Reporter: yongqli | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.10.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: None/Unknown | Unknown/Multiple Blocked By: | Test Case: yes Related Tickets: | Blocking: | Differential Revisions: -------------------------------------+------------------------------------- Comment (by AlexET): Looking at the difference in usage demands it seems that there is a variable (specifically a dictionary for A) with demand `<L,1*U(A,1*U)>`. But it is used twice, specifically its first component (a Foldable dictionary) is also used. This demand was correct in the dump-stranal file but then later the first component is used (due to cse) in a later section. This means the usage demand is incorrect. In the working version it is used in both locations already during demand analysis and hence is given the correct usage information. I don't know if this is the cause or whether the demand analysis information is irrelevant after cse. But if the demand analysis is used after cse then cse should make sure sure it is correct. I have tried making a smaller example but I am finding it hard to get cse to fire (most examples are inlined first before cse can fire but cse wont fire if they are marked noinline). -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10218#comment:6> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler