cps & contification
   
    Matthew Fluet
     
    fluet@CS.Cornell.EDU
       
    Tue, 30 Jan 2001 11:44:53 -0500 (EST)
    
    
  
> Now define a directed graph G = (Node, Edge) where
>         Node = Jump U Fun U {Root}
>         Edge = {(Root, fm)}
>                U {(Root, j) | j in Jump}
>                U {(Root, f) | not(Reach(f))}
>                U {(f, g) | (f, g) in T and Reach(f) and Reach(g)}
>                U {(j, g) | (f, g, j) in N and Reach(f) and Reach(g)}
One more simplification: Reach(g) in the fourth and fifth clauses are
implied by Reach(f) and the definition of Reach.  This is nice for the
implementation, because we only check reach once for each function.  If
true, then we do a Exp.foreachCall and don't need to check reach of the
callee.  If false, we add the edge via the third clause.  This is already
done in the file I sent out, but I forgot to mention it in the email.