Skip to content
  • Simon Peyton Jones's avatar
    Eliminate case-of-cast · 0477b389
    Simon Peyton Jones authored
    Note [Case of cast]
    ~~~~~~~~~~~~~~~~~~~
    Consider 	case (v `cast` co) of x { I# ->
    		... (case (v `cast` co) of {...}) ...
    We'd like to eliminate the inner case.  We can get this neatly by 
    arranging that inside the outer case we add the unfolding
    	v |-> x `cast` (sym co)
    to v.  Then we should inline v at the inner case, cancel the casts, 
    and away we go
    	
    This patch does the job, fixing a performance hole reported by Roman.
    0477b389