- !g#add_arc ((starti, endi), Direct);
- endi
- )
-
-
- (* ------------------------- *)
- | Labeled (Ast_c.Label (name, st)) ->
+ if xi.compound_caller = Statement
+ then
+ (* Problem! This edge is only created if the block does not
+ have return on all execution paths. *)
+ (let afteri = !g +> add_node AfterNode lbl "[after]" in
+ !g#add_arc ((newi, afteri), Direct);
+ !g#add_arc ((afteri, endi), Direct));
+ !g#add_arc ((finishi, endi), Direct);
+ endi
+ )
+
+
+ (* ------------------------- *)
+ | Labeled (Ast_c.Label (name, st)) ->