#5658: Strict bindings are wrongly floated out of case alternatives.
---------------------------------+------------------------------------------
    Reporter:  benl              |       Owner:  benl            
        Type:  bug               |      Status:  new             
    Priority:  normal            |   Milestone:  7.4.1           
   Component:  Compiler          |     Version:  7.2.1           
    Keywords:                    |          Os:  Unknown/Multiple
Architecture:  Unknown/Multiple  |     Failure:  Runtime crash   
  Difficulty:  Unknown           |    Testcase:                  
   Blockedby:                    |    Blocking:                  
     Related:                    |  
---------------------------------+------------------------------------------

Comment(by rl):

 Actually, the good code looked like this (sorry, got my loops mixed up):

 {{{
       $weq_loop0_s22g =
         \ (ww_s21d :: Int#) (ww1_s21h :: Int#) ->
           case >=# ww_s21d ipv1_s1QZ of _ {
             False ->
               case >=# ww1_s21h sc1_s24C of _ {
                 False ->
                   case ==#
                          (indexIntArray# ipv2_s1R0 (+# ipv_s1QY ww_s21d))
                          (indexIntArray# sc2_s24D (+# sc_s24B ww1_s21h))
                   of _ {
                     False -> False;
                     True -> $weq_loop0_s22g (+# ww_s21d 1) (+# ww1_s21h 1)
                   };
                 True -> False
               };
             True -> >=# ww1_s21h sc1_s24C
           };
 }}}

 Not that it matters.

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/5658#comment:11>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler

_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to