#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

Reply via email to