#3591: A working program reports <<loop>> when compiled with -O -----------------------------------------+---------------------------------- Reporter: blamario | Owner: igloo Type: merge | Status: closed Priority: normal | Milestone: 6.12.1 Component: Compiler | Version: 6.10.4 Resolution: fixed | Keywords: Os: Linux | Architecture: x86_64 (amd64) Failure: None/Unknown | Difficulty: Unknown Testcase: simplCore/should_run/T3591 | Blockedby: Blocking: | Related: -----------------------------------------+----------------------------------
Comment(by dimitris): I know it's a closed ticket but I managed to break it somehow working on a new constraint solver branch. The problem is that I have no clue about what we should expect to see as output for this program. Currently the expected output is: {{{ bounce start bounce end liftOut inject suspend liftFunctor id calling fmap fmap Either poking a fmap RightF fmap Either fmap RightF fmap Either fmap Either fmap Either fmap LeftF fmap LeftF fmap LeftF fmap yield fmap yield fmap yield liftOut inject suspend liftFunctor id calling fmap fmap Either poking a fmap RightF fmap Either fmap RightF fmap await fmap await fmap await bounce start bounce end liftOut inject suspend liftFunctor id calling fmap fmap Either poking a fmap RightF fmap Either fmap RightF fmap Either fmap Either fmap Either fmap RightF fmap RightF fmap RightF fmap await fmap await fmap await liftOut fmap Either fmap RightF fmap await bounce start bounce end liftOut bounce start bounce end liftOut inject suspend liftFunctor id calling fmap fmap Either poking a fmap RightF fmap Either fmap RightF fmap Either fmap Either fmap Either fmap LeftF fmap LeftF fmap LeftF fmap yield fmap yield fmap yield liftOut inject suspend liftFunctor id calling fmap fmap Either poking a fmap RightF fmap Either fmap RightF fmap await fmap await fmap await bounce start bounce end liftOut inject suspend liftFunctor id calling fmap fmap Either poking a fmap RightF fmap Either fmap RightF fmap Either fmap Either fmap Either fmap RightF fmap RightF fmap RightF fmap await fmap await fmap await liftOut liftOut inject suspend fmap Either fmap LeftF fmap Either fmap Either liftFunctor other liftFunctor id calling fmap fmap Either poking a fmap RightF fmap RightF fmap RightF fmap Either fmap RightF fmap Either fmap Either fmap Either fmap Either fmap Either fmap LeftF fmap LeftF fmap LeftF fmap LeftF fmap LeftF fmap yield fmap yield fmap yield fmap yield fmap yield bounce start bounce end bounce start bounce end liftOut inject suspend fmap Either fmap LeftF fmap Either fmap Either liftFunctor other liftFunctor id calling fmap fmap Either poking a fmap RightF fmap RightF fmap RightF fmap Either fmap RightF fmap Either fmap Either fmap Either fmap Either fmap Either fmap RightF fmap RightF fmap RightF fmap RightF fmap RightF fmap await fmap await fmap await fmap await fmap await liftOut fmap Either fmap RightF fmap await bounce start bounce end bounce start bounce end liftOut liftOut inject suspend fmap Either fmap LeftF fmap Either fmap Either liftFunctor other liftFunctor id calling fmap fmap Either poking a fmap RightF fmap RightF fmap RightF fmap Either fmap RightF fmap Either fmap Either fmap Either fmap Either fmap Either fmap LeftF fmap LeftF fmap LeftF fmap LeftF fmap LeftF fmap yield fmap yield fmap yield fmap yield fmap yield bounce start bounce end bounce start bounce end liftOut inject suspend fmap Either fmap LeftF fmap Either fmap Either liftFunctor other liftFunctor id calling fmap fmap Either poking a fmap RightF fmap RightF fmap RightF fmap Either fmap RightF fmap Either fmap Either fmap Either fmap Either fmap Either fmap RightF fmap RightF fmap RightF fmap RightF fmap RightF fmap await fmap await fmap await fmap await fmap await liftOut bounce start bounce end bounce start bounce end liftOut bounce start bounce end liftOut liftOut inject suspend fmap Either fmap LeftF fmap Either fmap Either liftFunctor other liftFunctor id calling fmap fmap Either poking a fmap RightF fmap RightF fmap RightF fmap Either fmap RightF fmap Either fmap Either fmap Either fmap Either fmap Either fmap LeftF fmap LeftF fmap LeftF fmap LeftF fmap LeftF fmap yield fmap yield fmap yield fmap yield fmap yield bounce start bounce end bounce start bounce end liftOut inject suspend fmap Either fmap LeftF fmap Either fmap Either liftFunctor other liftFunctor id calling fmap fmap Either poking a fmap RightF fmap RightF fmap RightF fmap Either fmap RightF fmap Either fmap Either fmap Either fmap Either fmap Either fmap RightF fmap RightF fmap RightF fmap RightF fmap RightF fmap await fmap await fmap await fmap await fmap await bounce start bounce end bounce start bounce end liftOut liftOut inject suspend liftFunctor id calling fmap fmap Either poking a fmap RightF fmap Either fmap RightF fmap Either fmap Either fmap Either fmap LeftF fmap LeftF fmap LeftF fmap yield fmap yield fmap yield bounce start bounce end liftOut inject suspend liftFunctor id calling fmap fmap Either poking a fmap RightF fmap Either fmap RightF fmap Either fmap Either fmap Either fmap RightF fmap RightF fmap RightF fmap await fmap await fmap await bounce start bounce end liftOut liftOut inject suspend liftFunctor id calling fmap fmap Either poking a fmap RightF fmap Either fmap RightF fmap Either fmap Either fmap Either fmap LeftF fmap LeftF fmap LeftF fmap yield fmap yield fmap yield bounce start bounce end liftOut inject suspend liftFunctor id calling fmap fmap Either poking a fmap RightF fmap Either fmap RightF fmap Either fmap Either fmap Either fmap RightF fmap RightF fmap RightF fmap await fmap await fmap await bounce start bounce end liftOut liftOut inject suspend liftFunctor id calling fmap fmap Either poking a fmap RightF fmap Either fmap RightF fmap Either fmap Either fmap Either fmap LeftF fmap LeftF fmap LeftF fmap yield fmap yield fmap yield bounce start bounce end liftOut inject suspend liftFunctor id calling fmap fmap Either poking a fmap RightF fmap Either fmap RightF fmap Either fmap Either fmap Either fmap RightF fmap RightF fmap RightF fmap await fmap await fmap await bounce start bounce end liftOut }}} And I am getting: {{{ bounce start bounce end liftOut inject suspend liftFunctor id calling fmap fmap Either poking a fmap RightF fmap Either fmap RightF fmap Either fmap Either fmap Either fmap LeftF fmap LeftF fmap LeftF fmap yield fmap yield fmap yield liftOut inject suspend liftFunctor id calling fmap fmap Either poking a fmap RightF fmap Either fmap RightF fmap await fmap await fmap await bounce start bounce end liftOut inject suspend liftFunctor id calling fmap fmap Either poking a fmap RightF fmap Either fmap RightF fmap Either fmap Either fmap Either fmap RightF fmap RightF fmap RightF fmap await fmap await fmap await liftOut liftOut inject suspend liftFunctor id calling fmap fmap Either poking a fmap RightF fmap Either fmap RightF fmap await fmap await bounce start bounce end liftOut bounce start bounce end liftOut inject suspend liftFunctor id calling fmap fmap Either poking a fmap RightF fmap Either fmap RightF fmap Either fmap Either fmap Either fmap LeftF fmap LeftF fmap LeftF fmap yield fmap yield fmap yield liftOut inject suspend liftFunctor id calling fmap fmap Either poking a fmap RightF fmap Either fmap RightF fmap await fmap await fmap await bounce start bounce end liftOut inject suspend liftFunctor id calling fmap fmap Either poking a fmap RightF fmap Either fmap RightF fmap Either fmap Either fmap Either fmap RightF fmap RightF fmap RightF fmap await fmap await fmap await liftOut liftOut inject suspend fmap Either fmap LeftF fmap Either fmap Either liftFunctor other liftFunctor id calling fmap fmap Either poking a fmap RightF fmap RightF fmap RightF fmap Either fmap RightF fmap Either fmap Either fmap Either fmap Either fmap Either fmap LeftF fmap LeftF fmap LeftF fmap LeftF fmap LeftF fmap yield fmap yield fmap yield fmap yield fmap yield bounce start bounce end bounce start bounce end liftOut inject suspend fmap Either fmap LeftF fmap Either fmap Either liftFunctor other liftFunctor id calling fmap fmap Either poking a fmap RightF fmap RightF fmap RightF fmap Either fmap RightF fmap Either fmap Either fmap Either fmap Either fmap Either fmap RightF fmap RightF fmap RightF fmap RightF fmap RightF fmap await fmap await fmap await fmap await fmap await liftOut liftOut inject suspend liftFunctor id calling fmap fmap Either poking a fmap RightF fmap Either fmap RightF fmap await fmap await bounce start bounce end bounce start bounce end liftOut liftOut inject suspend fmap Either fmap LeftF fmap Either fmap Either liftFunctor other liftFunctor id calling fmap fmap Either poking a fmap RightF fmap RightF fmap RightF fmap Either fmap RightF fmap Either fmap Either fmap Either fmap Either fmap Either fmap LeftF fmap LeftF fmap LeftF fmap LeftF fmap LeftF fmap yield fmap yield fmap yield fmap yield fmap yield bounce start bounce end bounce start bounce end liftOut inject suspend fmap Either fmap LeftF fmap Either fmap Either liftFunctor other liftFunctor id calling fmap fmap Either poking a fmap RightF fmap RightF fmap RightF fmap Either fmap RightF fmap Either fmap Either fmap Either fmap Either fmap Either fmap RightF fmap RightF fmap RightF fmap RightF fmap RightF fmap await fmap await fmap await fmap await fmap await liftOut bounce start bounce end bounce start bounce end liftOut bounce start bounce end liftOut liftOut inject suspend fmap Either fmap LeftF fmap Either fmap Either liftFunctor other liftFunctor id calling fmap fmap Either poking a fmap RightF fmap RightF fmap RightF fmap Either fmap RightF fmap Either fmap Either fmap Either fmap Either fmap Either fmap LeftF fmap LeftF fmap LeftF fmap LeftF fmap LeftF fmap yield fmap yield fmap yield fmap yield fmap yield bounce start bounce end bounce start bounce end liftOut inject suspend fmap Either fmap LeftF fmap Either fmap Either liftFunctor other liftFunctor id calling fmap fmap Either poking a fmap RightF fmap RightF fmap RightF fmap Either fmap RightF fmap Either fmap Either fmap Either fmap Either fmap Either fmap RightF fmap RightF fmap RightF fmap RightF fmap RightF fmap await fmap await fmap await fmap await fmap await bounce start bounce end bounce start bounce end liftOut liftOut inject suspend liftFunctor id calling fmap fmap Either poking a fmap RightF fmap Either fmap RightF fmap Either fmap Either fmap Either fmap LeftF fmap LeftF fmap LeftF fmap yield fmap yield fmap yield bounce start bounce end liftOut inject suspend liftFunctor id calling fmap fmap Either poking a fmap RightF fmap Either fmap RightF fmap Either fmap Either fmap Either fmap RightF fmap RightF fmap RightF fmap await fmap await fmap await bounce start bounce end liftOut liftOut inject suspend liftFunctor id calling fmap fmap Either poking a fmap RightF fmap Either fmap RightF fmap Either fmap Either fmap Either fmap LeftF fmap LeftF fmap LeftF fmap yield fmap yield fmap yield bounce start bounce end liftOut inject suspend liftFunctor id calling fmap fmap Either poking a fmap RightF fmap Either fmap RightF fmap Either fmap Either fmap Either fmap RightF fmap RightF fmap RightF fmap await fmap await fmap await bounce start bounce end liftOut liftOut inject suspend liftFunctor id calling fmap fmap Either poking a fmap RightF fmap Either fmap RightF fmap Either fmap Either fmap Either fmap LeftF fmap LeftF fmap LeftF fmap yield fmap yield fmap yield bounce start bounce end liftOut inject suspend liftFunctor id calling fmap fmap Either poking a fmap RightF fmap Either fmap RightF fmap Either fmap Either fmap Either fmap RightF fmap RightF fmap RightF fmap await fmap await fmap await bounce start bounce end liftOut }}} How can we tell if something broke? Should we be expecting an identical 'trace'? The documented problem of this bug <<loop>> does not happen but the traces are not identical. Any help from the original submitter? Thanks! -- Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/3591#comment:5> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler _______________________________________________ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs