[IR] Change cfg representation so the node number is per-procedure and not per-cfg

Reviewed By: jeremydubreil

Differential Revision: D4088075

fbshipit-source-id: 6e517a7
master
Cristiano Calcagno 8 years ago committed by Facebook Github Bot
parent 3ba67bac1a
commit 3fb8801b6c

@ -53,6 +53,7 @@ let module Node = {
pd_attributes: ProcAttributes.t, /** attributes of the procedure */ pd_attributes: ProcAttributes.t, /** attributes of the procedure */
pd_id: int, /** unique proc_desc identifier */ pd_id: int, /** unique proc_desc identifier */
mutable pd_nodes: list t, /** list of nodes of this procedure */ mutable pd_nodes: list t, /** list of nodes of this procedure */
mutable pd_nodes_num: int, /** number of nodes */
mutable pd_start_node: t, /** start node of this procedure */ mutable pd_start_node: t, /** start node of this procedure */
mutable pd_exit_node: t /** exit node of ths procedure */ mutable pd_exit_node: t /** exit node of ths procedure */
}; };
@ -61,14 +62,10 @@ let module Node = {
let throw_kind = Stmt_node "throw"; let throw_kind = Stmt_node "throw";
/** data type for the control flow graph */ /** data type for the control flow graph */
type cfg = { type cfg = {name_pdesc_tbl: Procname.Hash.t proc_desc /** Map proc name to procdesc */};
mutable node_id: int,
mutable node_list: list t,
name_pdesc_tbl: Procname.Hash.t proc_desc /** Map proc name to procdesc */
};
/** create a new empty cfg */ /** create a new empty cfg */
let create_cfg () => {node_id: 0, node_list: [], name_pdesc_tbl: Procname.Hash.create 16}; let create_cfg () => {name_pdesc_tbl: Procname.Hash.create 16};
/** compute the list of procedures added or changed in [cfg_new] over [cfg_old] */ /** compute the list of procedures added or changed in [cfg_new] over [cfg_old] */
let mark_unchanged_pdescs cfg_new cfg_old => { let mark_unchanged_pdescs cfg_new cfg_old => {
@ -137,10 +134,6 @@ let module Node = {
}; };
Procname.Hash.iter mark_pdesc_if_unchanged new_procs Procname.Hash.iter mark_pdesc_if_unchanged new_procs
}; };
let node_id_gen cfg => {
cfg.node_id = cfg.node_id + 1;
cfg.node_id
};
let pdesc_tbl_add cfg proc_name proc_desc => let pdesc_tbl_add cfg proc_name proc_desc =>
Procname.Hash.add cfg.name_pdesc_tbl proc_name proc_desc; Procname.Hash.add cfg.name_pdesc_tbl proc_name proc_desc;
let pdesc_tbl_remove cfg proc_name => Procname.Hash.remove cfg.name_pdesc_tbl proc_name; let pdesc_tbl_remove cfg proc_name => Procname.Hash.remove cfg.name_pdesc_tbl proc_name;
@ -160,9 +153,11 @@ let module Node = {
let compare node1 node2 => int_compare node1.nd_id node2.nd_id; let compare node1 node2 => int_compare node1.nd_id node2.nd_id;
let hash node => Hashtbl.hash node.nd_id; let hash node => Hashtbl.hash node.nd_id;
let equal node1 node2 => compare node1 node2 == 0; let equal node1 node2 => compare node1 node2 == 0;
let get_all_nodes cfg => cfg.node_list;
let create cfg loc kind instrs pdesc => { /** Create a new cfg node */
let node_id = node_id_gen cfg; let create loc kind instrs pdesc => {
pdesc.pd_nodes_num = pdesc.pd_nodes_num + 1;
let node_id = pdesc.pd_nodes_num;
let node = { let node = {
nd_id: node_id, nd_id: node_id,
nd_dist_exit: None, nd_dist_exit: None,
@ -174,7 +169,6 @@ let module Node = {
nd_succs: [], nd_succs: [],
nd_exn: [] nd_exn: []
}; };
cfg.node_list = [node, ...cfg.node_list];
pdesc.pd_nodes = [node, ...pdesc.pd_nodes]; pdesc.pd_nodes = [node, ...pdesc.pd_nodes];
node node
}; };
@ -251,12 +245,12 @@ let module Node = {
/** Set the successor and exception nodes. /** Set the successor and exception nodes.
If this is a join node right before the exit node, add an extra node in the middle, If this is a join node right before the exit node, add an extra node in the middle,
otherwise nullify and abstract instructions cannot be added after a conditional. */ otherwise nullify and abstract instructions cannot be added after a conditional. */
let set_succs_exn cfg node succs exn => let set_succs_exn node succs exn =>
switch (node.nd_kind, succs) { switch (node.nd_kind, succs) {
| (Join_node, [{nd_kind: Exit_node _} as exit_node]) => | (Join_node, [{nd_kind: Exit_node _} as exit_node]) =>
let kind = Stmt_node "between_join_and_exit"; let kind = Stmt_node "between_join_and_exit";
let pdesc = get_proc_desc node; let pdesc = get_proc_desc node;
let node' = create cfg node.nd_loc kind node.nd_instrs pdesc; let node' = create node.nd_loc kind node.nd_instrs pdesc;
set_succs_exn_base node [node'] exn; set_succs_exn_base node [node'] exn;
set_succs_exn_base node' [exit_node] exn set_succs_exn_base node' [exit_node] exn
| _ => set_succs_exn_base node succs exn | _ => set_succs_exn_base node succs exn
@ -383,26 +377,14 @@ let module Node = {
pd_attributes: proc_attributes, pd_attributes: proc_attributes,
pd_id: !proc_desc_id_counter, pd_id: !proc_desc_id_counter,
pd_nodes: [], pd_nodes: [],
pd_nodes_num: 0,
pd_start_node: dummy (), pd_start_node: dummy (),
pd_exit_node: dummy () pd_exit_node: dummy ()
}; };
pdesc_tbl_add cfg proc_attributes.ProcAttributes.proc_name pdesc; pdesc_tbl_add cfg proc_attributes.ProcAttributes.proc_name pdesc;
pdesc pdesc
}; };
let remove_node' filter_out_fun cfg => { let proc_desc_remove cfg name => pdesc_tbl_remove cfg name;
let remove_node_in_cfg nodes => IList.filter filter_out_fun nodes;
cfg.node_list = remove_node_in_cfg cfg.node_list
};
let remove_node_set cfg nodes => remove_node' (fun node' => not (NodeSet.mem node' nodes)) cfg;
let proc_desc_remove cfg name remove_nodes => {
if remove_nodes {
let pdesc = pdesc_tbl_find cfg name;
let proc_nodes =
IList.fold_right (fun node set => NodeSet.add node set) pdesc.pd_nodes NodeSet.empty;
remove_node_set cfg proc_nodes
};
pdesc_tbl_remove cfg name
};
let proc_desc_get_start_node proc_desc => proc_desc.pd_start_node; let proc_desc_get_start_node proc_desc => proc_desc.pd_start_node;
let proc_desc_get_err_log proc_desc => proc_desc.pd_attributes.ProcAttributes.err_log; let proc_desc_get_err_log proc_desc => proc_desc.pd_attributes.ProcAttributes.err_log;
let proc_desc_get_attributes proc_desc => proc_desc.pd_attributes; let proc_desc_get_attributes proc_desc => proc_desc.pd_attributes;
@ -611,11 +593,6 @@ let module Node = {
IList.fold_left (fun acc instr => f acc node instr) acc (get_instrs node); IList.fold_left (fun acc instr => f acc node instr) acc (get_instrs node);
proc_desc_fold_nodes fold_node acc proc_desc proc_desc_fold_nodes fold_node acc proc_desc
}; };
/*
let remove_node cfg node =
remove_node' (fun node' -> not (equal node node'))
cfg node
*/
/* clone a procedure description and apply the type substitutions where /* clone a procedure description and apply the type substitutions where
the parameters are used */ the parameters are used */
let proc_desc_specialize_types callee_proc_desc resolved_attributes substitutions => { let proc_desc_specialize_types callee_proc_desc resolved_attributes substitutions => {
@ -716,7 +693,7 @@ let module Node = {
let loc = get_loc node let loc = get_loc node
and kind = convert_node_kind (get_kind node) and kind = convert_node_kind (get_kind node)
and instrs = IList.fold_left convert_instr [] (get_instrs node) |> IList.rev; and instrs = IList.fold_left convert_instr [] (get_instrs node) |> IList.rev;
create cfg loc kind instrs resolved_proc_desc create loc kind instrs resolved_proc_desc
} }
and loop callee_nodes => and loop callee_nodes =>
switch callee_nodes { switch callee_nodes {
@ -735,7 +712,7 @@ let module Node = {
if (equal node callee_exit_node) { if (equal node callee_exit_node) {
proc_desc_set_exit_node resolved_proc_desc new_node proc_desc_set_exit_node resolved_proc_desc new_node
}; };
set_succs_exn cfg new_node (loop successors) (loop exn_nodes); set_succs_exn new_node (loop successors) (loop exn_nodes);
new_node new_node
}; };
[converted_node, ...loop other_node] [converted_node, ...loop other_node]
@ -807,11 +784,12 @@ let module IdMap = Node.IdMap;
let iter_proc_desc = Node.iter_proc_desc; let iter_proc_desc = Node.iter_proc_desc;
let rec pp_node_list f =>
fun /** Iterate over all the nodes in the cfg */
| [] => () let iter_all_nodes f (cfg: cfg) => {
| [node] => Node.pp f node let do_proc_desc _ (pdesc: Procdesc.t) => IList.iter (fun node => f pdesc node) pdesc.pd_nodes;
| [node, ...nodes] => F.fprintf f "%a, %a" Node.pp node pp_node_list nodes; iter_proc_desc cfg do_proc_desc
};
/** Get all the procdescs (defined and declared) */ /** Get all the procdescs (defined and declared) */

@ -50,9 +50,7 @@ let module Procdesc: {
/** [remove cfg name remove_nodes] remove the procdesc [name] /** [remove cfg name remove_nodes] remove the procdesc [name]
from the control flow graph [cfg]. */ from the control flow graph [cfg]. */
let remove: cfg => Procname.t => unit;
/** It also removes all the nodes from the procedure from the cfg if remove_nodes is true */
let remove: cfg => Procname.t => bool => unit;
/** Find the procdesc given the proc name. Return None if not found. */ /** Find the procdesc given the proc name. Return None if not found. */
let find_from_name: cfg => Procname.t => option t; let find_from_name: cfg => Procname.t => option t;
@ -168,10 +166,9 @@ let module Node: {
/** Compare two nodes */ /** Compare two nodes */
let compare: t => t => int; let compare: t => t => int;
/** [create cfg loc kind instrs proc_desc] create a new cfg node /** Create a new cfg node with the given location, kind, list of instructions,
with the given location, kind, list of instructions, and add it to the procdesc. */
procdesc */ let create: Location.t => nodekind => list Sil.instr => Procdesc.t => t;
let create: cfg => Location.t => nodekind => list Sil.instr => Procdesc.t => t;
/** create a new empty cfg */ /** create a new empty cfg */
let create_cfg: unit => cfg; let create_cfg: unit => cfg;
@ -185,9 +182,6 @@ let module Node: {
/** Check if two nodes are equal */ /** Check if two nodes are equal */
let equal: t => t => bool; let equal: t => t => bool;
/** Get all the nodes */
let get_all_nodes: cfg => list t;
/** Get the distance to the exit node, if it has been computed */ /** Get the distance to the exit node, if it has been computed */
let get_distance_to_exit: t => option int; let get_distance_to_exit: t => option int;
@ -255,7 +249,7 @@ let module Node: {
let replace_instrs: t => list Sil.instr => unit; let replace_instrs: t => list Sil.instr => unit;
/** Set the successor nodes and exception nodes, and build predecessor links */ /** Set the successor nodes and exception nodes, and build predecessor links */
let set_succs_exn: cfg => t => list t => list t => unit; let set_succs_exn: t => list t => list t => unit;
}; };
@ -270,8 +264,6 @@ let module NodeSet: Set.S with type elt = Node.t;
/** Map with node id keys. */ /** Map with node id keys. */
let module IdMap: Map.S with type key = Node.id; let module IdMap: Map.S with type key = Node.id;
let pp_node_list: Format.formatter => list Node.t => unit;
/** {2 Functions for manipulating an interprocedural CFG} */ /** {2 Functions for manipulating an interprocedural CFG} */
@ -287,6 +279,10 @@ let get_all_procs: cfg => list Procdesc.t;
let get_defined_procs: cfg => list Procdesc.t; let get_defined_procs: cfg => list Procdesc.t;
/** Iterate over all the nodes in the cfg */
let iter_all_nodes: (Procdesc.t => Node.t => unit) => cfg => unit;
/** checks whether a cfg is connected or not */ /** checks whether a cfg is connected or not */
let check_cfg_connectedness: cfg => unit; let check_cfg_connectedness: cfg => unit;

@ -936,8 +936,8 @@ let pp_proplist_parsed2dotty_file filename plist =
(********** Print control flow graph (in dot form) for fundec to *) (********** Print control flow graph (in dot form) for fundec to *)
(* channel. You have to compute an interprocedural cfg first *) (* channel. You have to compute an interprocedural cfg first *)
let pp_cfgnodename fmt (n : Cfg.Node.t) = let pp_cfgnodename pname fmt (n : Cfg.Node.t) =
F.fprintf fmt "%d" (Cfg.Node.get_id n :> int) F.fprintf fmt "\"%a%d\"" Procname.pp pname (Cfg.Node.get_id n :> int)
let pp_etlist fmt etl = let pp_etlist fmt etl =
IList.iter (fun (id, ty) -> IList.iter (fun (id, ty) ->
@ -983,16 +983,10 @@ let pp_cfgnodeshape fmt (n: Cfg.Node.t) =
| Cfg.Node.Stmt_node _ -> F.fprintf fmt "shape=\"box\"" | Cfg.Node.Stmt_node _ -> F.fprintf fmt "shape=\"box\""
| _ -> F.fprintf fmt "" | _ -> F.fprintf fmt ""
(*
let pp_cfgedge fmt src dest =
F.fprintf fmt "%a -> %a"
pp_cfgnodename src
pp_cfgnodename dest
*)
let pp_cfgnode pdesc fmt (n: Cfg.Node.t) = let pp_cfgnode pdesc fmt (n: Cfg.Node.t) =
let pname = Cfg.Procdesc.get_proc_name pdesc in
F.fprintf fmt "%a [label=\"%a\" %a]\n\t\n" F.fprintf fmt "%a [label=\"%a\" %a]\n\t\n"
pp_cfgnodename n (pp_cfgnodename pname) n
(pp_cfgnodelabel pdesc) n (pp_cfgnodelabel pdesc) n
pp_cfgnodeshape n; pp_cfgnodeshape n;
let print_edge n1 n2 is_exn = let print_edge n1 n2 is_exn =
@ -1001,9 +995,9 @@ let pp_cfgnode pdesc fmt (n: Cfg.Node.t) =
| Cfg.Node.Exit_node _ when is_exn = true -> (* don't print exception edges to the exit node *) | Cfg.Node.Exit_node _ when is_exn = true -> (* don't print exception edges to the exit node *)
() ()
| _ -> | _ ->
F.fprintf fmt "\n\t %d -> %d %s;" F.fprintf fmt "\n\t %a -> %a %s;"
(Cfg.Node.get_id n1 :> int) (pp_cfgnodename pname) n1
(Cfg.Node.get_id n2 :> int) (pp_cfgnodename pname) n2
color in color in
IList.iter (fun n' -> print_edge n n' false) (Cfg.Node.get_succs n); IList.iter (fun n' -> print_edge n n' false) (Cfg.Node.get_succs n);
IList.iter (fun n' -> print_edge n n' true) (Cfg.Node.get_exn n) IList.iter (fun n' -> print_edge n n' true) (Cfg.Node.get_exn n)
@ -1019,12 +1013,11 @@ let pp_cfgnode pdesc fmt (n: Cfg.Node.t) =
(* Print the extra information related to the inteprocedural aspect, ie., *) (* Print the extra information related to the inteprocedural aspect, ie., *)
(* special node, and call / return edges *) (* special node, and call / return edges *)
let print_icfg source fmt cfg = let print_icfg source fmt cfg =
let print_node node = let print_node pdesc node =
let loc = Cfg.Node.get_loc node in let loc = Cfg.Node.get_loc node in
let pdesc = Cfg.Node.get_proc_desc node in
if (Config.dotty_cfg_libs || DB.source_file_equal loc.Location.file source) then if (Config.dotty_cfg_libs || DB.source_file_equal loc.Location.file source) then
F.fprintf fmt "%a\n" (pp_cfgnode pdesc) node in F.fprintf fmt "%a\n" (pp_cfgnode pdesc) node in
IList.iter print_node (Cfg.Node.get_all_nodes cfg) Cfg.iter_all_nodes print_node cfg
let write_icfg_dotty_to_file source cfg fname = let write_icfg_dotty_to_file source cfg fname =
let chan = open_out fname in let chan = open_out fname in

@ -1513,8 +1513,10 @@ let do_analysis exe_env =
let visited_and_total_nodes cfg = let visited_and_total_nodes cfg =
let all_nodes = let all_nodes =
let add s n = Cfg.NodeSet.add n s in let set = ref Cfg.NodeSet.empty in
IList.fold_left add Cfg.NodeSet.empty (Cfg.Node.get_all_nodes cfg) in let add _ n = set := Cfg.NodeSet.add n !set in
Cfg.iter_all_nodes add cfg;
!set in
let filter_node n = let filter_node n =
Cfg.Procdesc.is_defined (Cfg.Node.get_proc_desc n) && Cfg.Procdesc.is_defined (Cfg.Node.get_proc_desc n) &&
match Cfg.Node.get_kind n with match Cfg.Node.get_kind n with

@ -39,7 +39,7 @@ struct
(Procname.to_string procname); (Procname.to_string procname);
let meth_body_nodes = T.instructions_trans context body extra_instrs exit_node in let meth_body_nodes = T.instructions_trans context body extra_instrs exit_node in
Cfg.Node.add_locals_ret_declaration start_node (Cfg.Procdesc.get_locals procdesc); Cfg.Node.add_locals_ret_declaration start_node (Cfg.Procdesc.get_locals procdesc);
Cfg.Node.set_succs_exn cfg start_node meth_body_nodes []; Cfg.Node.set_succs_exn start_node meth_body_nodes [];
Cg.add_defined_node (CContext.get_cg context) (Cfg.Procdesc.get_proc_name procdesc)) Cg.add_defined_node (CContext.get_cg context) (Cfg.Procdesc.get_proc_name procdesc))
| None -> ()) | None -> ())
with with
@ -50,7 +50,7 @@ struct
assert false assert false
| Assert_failure (file, line, column) -> | Assert_failure (file, line, column) ->
Logging.out "Fatal error: exception Assert_failure(%s, %d, %d)\n%!" file line column; Logging.out "Fatal error: exception Assert_failure(%s, %d, %d)\n%!" file line column;
Cfg.Procdesc.remove cfg procname true; Cfg.Procdesc.remove cfg procname;
CMethod_trans.create_external_procdesc cfg procname is_objc_method None; CMethod_trans.create_external_procdesc cfg procname is_objc_method None;
() ()

@ -332,7 +332,7 @@ let should_create_procdesc cfg procname defined =
| Some previous_procdesc -> | Some previous_procdesc ->
let is_defined_previous = Cfg.Procdesc.is_defined previous_procdesc in let is_defined_previous = Cfg.Procdesc.is_defined previous_procdesc in
if defined && (not is_defined_previous) then if defined && (not is_defined_previous) then
(Cfg.Procdesc.remove cfg (Cfg.Procdesc.get_proc_name previous_procdesc) true; (Cfg.Procdesc.remove cfg (Cfg.Procdesc.get_proc_name previous_procdesc);
true) true)
else false else false
| None -> true | None -> true
@ -423,9 +423,9 @@ let create_local_procdesc trans_unit_ctx cfg tenv ms fbody captured is_objc_inst
(if !Config.arc_mode then (if !Config.arc_mode then
Cfg.Procdesc.set_flag procdesc Mleak_buckets.objc_arc_flag "true"; Cfg.Procdesc.set_flag procdesc Mleak_buckets.objc_arc_flag "true";
let start_kind = Cfg.Node.Start_node proc_name in let start_kind = Cfg.Node.Start_node proc_name in
let start_node = Cfg.Node.create cfg loc_start start_kind [] procdesc in let start_node = Cfg.Node.create loc_start start_kind [] procdesc in
let exit_kind = Cfg.Node.Exit_node proc_name in let exit_kind = Cfg.Node.Exit_node proc_name in
let exit_node = Cfg.Node.create cfg loc_exit exit_kind [] procdesc in let exit_node = Cfg.Node.create loc_exit exit_kind [] procdesc in
Cfg.Procdesc.set_start_node procdesc start_node; Cfg.Procdesc.set_start_node procdesc start_node;
Cfg.Procdesc.set_exit_node procdesc exit_node) in Cfg.Procdesc.set_exit_node procdesc exit_node) in
if should_create_procdesc cfg proc_name defined then if should_create_procdesc cfg proc_name defined then

@ -599,7 +599,7 @@ struct
(* create the label root node into the hashtbl *) (* create the label root node into the hashtbl *)
let sil_loc = CLocation.get_sil_location stmt_info trans_state.context in let sil_loc = CLocation.get_sil_location stmt_info trans_state.context in
let root_node' = GotoLabel.find_goto_label trans_state.context label_name sil_loc in let root_node' = GotoLabel.find_goto_label trans_state.context label_name sil_loc in
Cfg.Node.set_succs_exn trans_state.context.cfg root_node' res_trans.root_nodes []; Cfg.Node.set_succs_exn root_node' res_trans.root_nodes [];
{ empty_res_trans with root_nodes = [root_node']; leaf_nodes = trans_state.succ_nodes } { empty_res_trans with root_nodes = [root_node']; leaf_nodes = trans_state.succ_nodes }
and var_deref_trans trans_state stmt_info (decl_ref : Clang_ast_t.decl_ref) = and var_deref_trans trans_state stmt_info (decl_ref : Clang_ast_t.decl_ref) =
@ -748,7 +748,7 @@ struct
if res_trans_idx.root_nodes <> [] if res_trans_idx.root_nodes <> []
then then
IList.iter IList.iter
(fun n -> Cfg.Node.set_succs_exn trans_state.context.cfg n res_trans_idx.root_nodes []) (fun n -> Cfg.Node.set_succs_exn n res_trans_idx.root_nodes [])
res_trans_a.leaf_nodes; res_trans_a.leaf_nodes;
(* Note the order of res_trans_idx.ids @ res_trans_a.ids is important. *) (* Note the order of res_trans_idx.ids @ res_trans_a.ids is important. *)
@ -1110,7 +1110,6 @@ struct
and conditionalOperator_trans trans_state stmt_info stmt_list expr_info = and conditionalOperator_trans trans_state stmt_info stmt_list expr_info =
let context = trans_state.context in let context = trans_state.context in
let cfg = context.cfg in
let succ_nodes = trans_state.succ_nodes in let succ_nodes = trans_state.succ_nodes in
let procdesc = context.CContext.procdesc in let procdesc = context.CContext.procdesc in
let sil_loc = CLocation.get_sil_location stmt_info context in let sil_loc = CLocation.get_sil_location stmt_info context in
@ -1130,7 +1129,7 @@ struct
"ConditinalStmt Branch" stmt_info all_res_trans in "ConditinalStmt Branch" stmt_info all_res_trans in
let prune_nodes_t, prune_nodes_f = IList.partition is_true_prune_node prune_nodes in let prune_nodes_t, prune_nodes_f = IList.partition is_true_prune_node prune_nodes in
let prune_nodes' = if branch then prune_nodes_t else prune_nodes_f in let prune_nodes' = if branch then prune_nodes_t else prune_nodes_f in
IList.iter (fun n -> Cfg.Node.set_succs_exn cfg n res_trans.root_nodes []) prune_nodes' in IList.iter (fun n -> Cfg.Node.set_succs_exn n res_trans.root_nodes []) prune_nodes' in
(match stmt_list with (match stmt_list with
| [cond; exp1; exp2] -> | [cond; exp1; exp2] ->
let typ = let typ =
@ -1138,7 +1137,7 @@ struct
context.CContext.tenv expr_info.Clang_ast_t.ei_type_ptr in context.CContext.tenv expr_info.Clang_ast_t.ei_type_ptr in
let var_typ = add_reference_if_glvalue typ expr_info in let var_typ = add_reference_if_glvalue typ expr_info in
let join_node = create_node (Cfg.Node.Join_node) [] sil_loc context in let join_node = create_node (Cfg.Node.Join_node) [] sil_loc context in
Cfg.Node.set_succs_exn cfg join_node succ_nodes []; Cfg.Node.set_succs_exn join_node succ_nodes [];
let pvar = mk_temp_sil_var procdesc "SIL_temp_conditional___" in let pvar = mk_temp_sil_var procdesc "SIL_temp_conditional___" in
Cfg.Procdesc.append_locals procdesc [(Pvar.get_name pvar, var_typ)]; Cfg.Procdesc.append_locals procdesc [(Pvar.get_name pvar, var_typ)];
let continuation' = mk_cond_continuation trans_state.continuation in let continuation' = mk_cond_continuation trans_state.continuation in
@ -1211,7 +1210,7 @@ struct
let prune_t = mk_prune_node true e' instrs' in let prune_t = mk_prune_node true e' instrs' in
let prune_f = mk_prune_node false e' instrs' in let prune_f = mk_prune_node false e' instrs' in
IList.iter IList.iter
(fun n' -> Cfg.Node.set_succs_exn context.cfg n' [prune_t; prune_f] []) (fun n' -> Cfg.Node.set_succs_exn n' [prune_t; prune_f] [])
res_trans_cond.leaf_nodes; res_trans_cond.leaf_nodes;
let rnodes = if (IList.length res_trans_cond.root_nodes) = 0 then let rnodes = if (IList.length res_trans_cond.root_nodes) = 0 then
[prune_t; prune_f] [prune_t; prune_f]
@ -1244,7 +1243,7 @@ struct
| Binop.LOr -> prune_nodes_f, prune_nodes_t | Binop.LOr -> prune_nodes_f, prune_nodes_t
| _ -> assert false) in | _ -> assert false) in
IList.iter IList.iter
(fun n -> Cfg.Node.set_succs_exn context.cfg n res_trans_s2.root_nodes []) (fun n -> Cfg.Node.set_succs_exn n res_trans_s2.root_nodes [])
prune_to_s2; prune_to_s2;
let root_nodes_to_parent = let root_nodes_to_parent =
if (IList.length res_trans_s1.root_nodes) = 0 if (IList.length res_trans_s1.root_nodes) = 0
@ -1285,7 +1284,7 @@ struct
let succ_nodes = trans_state.succ_nodes in let succ_nodes = trans_state.succ_nodes in
let sil_loc = CLocation.get_sil_location stmt_info context in let sil_loc = CLocation.get_sil_location stmt_info context in
let join_node = create_node (Cfg.Node.Join_node) [] sil_loc context in let join_node = create_node (Cfg.Node.Join_node) [] sil_loc context in
Cfg.Node.set_succs_exn context.cfg join_node succ_nodes []; Cfg.Node.set_succs_exn join_node succ_nodes [];
let trans_state' = { trans_state with succ_nodes = [join_node] } in let trans_state' = { trans_state with succ_nodes = [join_node] } in
let do_branch branch stmt_branch prune_nodes = let do_branch branch stmt_branch prune_nodes =
(* leaf nodes are ignored here as they will be already attached to join_node *) (* leaf nodes are ignored here as they will be already attached to join_node *)
@ -1298,7 +1297,7 @@ struct
res_trans_b.root_nodes) in res_trans_b.root_nodes) in
let prune_nodes_t, prune_nodes_f = IList.partition is_true_prune_node prune_nodes in let prune_nodes_t, prune_nodes_f = IList.partition is_true_prune_node prune_nodes in
let prune_nodes' = if branch then prune_nodes_t else prune_nodes_f in let prune_nodes' = if branch then prune_nodes_t else prune_nodes_f in
IList.iter (fun n -> Cfg.Node.set_succs_exn context.cfg n nodes_branch []) prune_nodes' in IList.iter (fun n -> Cfg.Node.set_succs_exn n nodes_branch []) prune_nodes' in
(match stmt_list with (match stmt_list with
| [_; decl_stmt; cond; stmt1; stmt2] -> | [_; decl_stmt; cond; stmt1; stmt2] ->
(* set the flat to inform that we are translating a condition of a if *) (* set the flat to inform that we are translating a condition of a if *)
@ -1334,7 +1333,7 @@ struct
let node_kind = Cfg.Node.Stmt_node "Switch_stmt" in let node_kind = Cfg.Node.Stmt_node "Switch_stmt" in
create_node node_kind res_trans_cond_tmp.instrs sil_loc context in create_node node_kind res_trans_cond_tmp.instrs sil_loc context in
IList.iter IList.iter
(fun n' -> Cfg.Node.set_succs_exn context.cfg n' [switch_special_cond_node] []) (fun n' -> Cfg.Node.set_succs_exn n' [switch_special_cond_node] [])
res_trans_cond_tmp.leaf_nodes; res_trans_cond_tmp.leaf_nodes;
let root_nodes = let root_nodes =
if res_trans_cond_tmp.root_nodes <> [] then res_trans_cond_tmp.root_nodes if res_trans_cond_tmp.root_nodes <> [] then res_trans_cond_tmp.root_nodes
@ -1432,8 +1431,8 @@ struct
let case_entry_point = connected_instruction (IList.rev case_content) last_nodes in let case_entry_point = connected_instruction (IList.rev case_content) last_nodes in
(* connects between cases, then continuation has priority about breaks *) (* connects between cases, then continuation has priority about breaks *)
let prune_node_t, prune_node_f = create_prune_nodes_for_case case in let prune_node_t, prune_node_f = create_prune_nodes_for_case case in
Cfg.Node.set_succs_exn context.cfg prune_node_t case_entry_point []; Cfg.Node.set_succs_exn prune_node_t case_entry_point [];
Cfg.Node.set_succs_exn context.cfg prune_node_f last_prune_nodes []; Cfg.Node.set_succs_exn prune_node_f last_prune_nodes [];
case_entry_point, [prune_node_t; prune_node_f] case_entry_point, [prune_node_t; prune_node_f]
| DefaultStmt(stmt_info, default_content) :: rest -> | DefaultStmt(stmt_info, default_content) :: rest ->
let sil_loc = CLocation.get_sil_location stmt_info context in let sil_loc = CLocation.get_sil_location stmt_info context in
@ -1443,13 +1442,13 @@ struct
translate_and_connect_cases rest next_nodes [placeholder_entry_point] in translate_and_connect_cases rest next_nodes [placeholder_entry_point] in
let default_entry_point = let default_entry_point =
connected_instruction (IList.rev default_content) last_nodes in connected_instruction (IList.rev default_content) last_nodes in
Cfg.Node.set_succs_exn context.cfg placeholder_entry_point default_entry_point []; Cfg.Node.set_succs_exn placeholder_entry_point default_entry_point [];
default_entry_point, last_prune_nodes default_entry_point, last_prune_nodes
| _ -> assert false in | _ -> assert false in
let top_entry_point, top_prune_nodes = let top_entry_point, top_prune_nodes =
translate_and_connect_cases list_of_cases succ_nodes succ_nodes in translate_and_connect_cases list_of_cases succ_nodes succ_nodes in
let _ = connected_instruction (IList.rev pre_case_stmts) top_entry_point in let _ = connected_instruction (IList.rev pre_case_stmts) top_entry_point in
Cfg.Node.set_succs_exn context.cfg switch_special_cond_node top_prune_nodes []; Cfg.Node.set_succs_exn switch_special_cond_node top_prune_nodes [];
let top_nodes = res_trans_decl.root_nodes in let top_nodes = res_trans_decl.root_nodes in
IList.iter IList.iter
(fun n' -> Cfg.Node.append_instrs n' []) succ_nodes; (fun n' -> Cfg.Node.append_instrs n' []) succ_nodes;
@ -1530,9 +1529,9 @@ struct
match loop_kind with match loop_kind with
| Loops.For _ | Loops.While _ -> res_trans_body.root_nodes | Loops.For _ | Loops.While _ -> res_trans_body.root_nodes
| Loops.DoWhile _ -> [join_node] in | Loops.DoWhile _ -> [join_node] in
Cfg.Node.set_succs_exn context.cfg join_node join_succ_nodes []; Cfg.Node.set_succs_exn join_node join_succ_nodes [];
IList.iter (fun n -> Cfg.Node.set_succs_exn context.cfg n prune_t_succ_nodes []) prune_nodes_t; IList.iter (fun n -> Cfg.Node.set_succs_exn n prune_t_succ_nodes []) prune_nodes_t;
IList.iter (fun n -> Cfg.Node.set_succs_exn context.cfg n succ_nodes []) prune_nodes_f; IList.iter (fun n -> Cfg.Node.set_succs_exn n succ_nodes []) prune_nodes_f;
let root_nodes = let root_nodes =
match loop_kind with match loop_kind with
| Loops.For _ -> | Loops.For _ ->
@ -1881,7 +1880,7 @@ struct
let mk_ret_node instrs = let mk_ret_node instrs =
let ret_node = create_node (Cfg.Node.Stmt_node "Return Stmt") instrs sil_loc context in let ret_node = create_node (Cfg.Node.Stmt_node "Return Stmt") instrs sil_loc context in
Cfg.Node.set_succs_exn Cfg.Node.set_succs_exn
context.cfg ret_node [(Cfg.Procdesc.get_exit_node context.CContext.procdesc)] []; ret_node [(Cfg.Procdesc.get_exit_node context.CContext.procdesc)] [];
ret_node in ret_node in
let trans_result = (match stmt_list with let trans_result = (match stmt_list with
| [stmt] -> (* return exp; *) | [stmt] -> (* return exp; *)
@ -1913,7 +1912,7 @@ struct
let instrs = var_instrs @ res_trans_stmt.instrs @ ret_instrs @ autorelease_instrs in let instrs = var_instrs @ res_trans_stmt.instrs @ ret_instrs @ autorelease_instrs in
let ret_node = mk_ret_node instrs in let ret_node = mk_ret_node instrs in
IList.iter IList.iter
(fun n -> Cfg.Node.set_succs_exn context.cfg n [ret_node] []) (fun n -> Cfg.Node.set_succs_exn n [ret_node] [])
res_trans_stmt.leaf_nodes; res_trans_stmt.leaf_nodes;
let root_nodes_to_parent = let root_nodes_to_parent =
if IList.length res_trans_stmt.root_nodes >0 if IList.length res_trans_stmt.root_nodes >0
@ -2000,7 +1999,7 @@ struct
autorelease_pool_vars, sil_loc, CallFlags.default) in autorelease_pool_vars, sil_loc, CallFlags.default) in
let node_kind = Cfg.Node.Stmt_node ("Release the autorelease pool") in let node_kind = Cfg.Node.Stmt_node ("Release the autorelease pool") in
let call_node = create_node node_kind [stmt_call] sil_loc context in let call_node = create_node node_kind [stmt_call] sil_loc context in
Cfg.Node.set_succs_exn context.cfg call_node trans_state.succ_nodes []; Cfg.Node.set_succs_exn call_node trans_state.succ_nodes [];
let trans_state'={ trans_state with continuation = None; succ_nodes =[call_node] } in let trans_state'={ trans_state with continuation = None; succ_nodes =[call_node] } in
instructions trans_state' stmts instructions trans_state' stmts
@ -2136,7 +2135,7 @@ struct
let (var_exp, typ) = var_exp_typ in let (var_exp, typ) = var_exp_typ in
let res_trans_init_list = initListExpr_initializers_trans trans_state_init var_exp 0 stmts let res_trans_init_list = initListExpr_initializers_trans trans_state_init var_exp 0 stmts
typ is_dyn_array stmt_info in typ is_dyn_array stmt_info in
CTrans_utils.collect_res_trans context.cfg res_trans_init_list CTrans_utils.collect_res_trans res_trans_init_list
else init_expr_trans trans_state_init var_exp_typ init_stmt_info stmt_opt in else init_expr_trans trans_state_init var_exp_typ init_stmt_info stmt_opt in
let all_res_trans = [res_trans_size; res_trans_new; res_trans_init] in let all_res_trans = [res_trans_size; res_trans_new; res_trans_init] in
let nname = "CXXNewExpr" in let nname = "CXXNewExpr" in

@ -54,7 +54,7 @@ struct
let create_node node_kind instrs loc context = let create_node node_kind instrs loc context =
let procdesc = CContext.get_procdesc context in let procdesc = CContext.get_procdesc context in
Cfg.Node.create (CContext.get_cfg context) loc node_kind instrs procdesc Cfg.Node.create loc node_kind instrs procdesc
let create_prune_node branch e_cond instrs_cond loc ik context = let create_prune_node branch e_cond instrs_cond loc ik context =
let (e_cond', _) = extract_exp_from_list e_cond let (e_cond', _) = extract_exp_from_list e_cond
@ -158,7 +158,7 @@ let empty_res_trans = {
let undefined_expression () = Exp.Var (Ident.create_fresh Ident.knormal) let undefined_expression () = Exp.Var (Ident.create_fresh Ident.knormal)
(** Collect the results of translating a list of instructions, and link up the nodes created. *) (** Collect the results of translating a list of instructions, and link up the nodes created. *)
let collect_res_trans cfg l = let collect_res_trans l =
let rec collect l rt = let rec collect l rt =
match l with match l with
| [] -> rt | [] -> rt
@ -170,7 +170,7 @@ let collect_res_trans cfg l =
if rt'.leaf_nodes <> [] then rt'.leaf_nodes if rt'.leaf_nodes <> [] then rt'.leaf_nodes
else rt.leaf_nodes in else rt.leaf_nodes in
if rt'.root_nodes <> [] then if rt'.root_nodes <> [] then
IList.iter (fun n -> Cfg.Node.set_succs_exn cfg n rt'.root_nodes []) rt.leaf_nodes; IList.iter (fun n -> Cfg.Node.set_succs_exn n rt'.root_nodes []) rt.leaf_nodes;
collect l' collect l'
{ root_nodes = root_nodes; { root_nodes = root_nodes;
leaf_nodes = leaf_nodes; leaf_nodes = leaf_nodes;
@ -238,15 +238,14 @@ struct
(* deals with creating or not a cfg node depending of owning the *) (* deals with creating or not a cfg node depending of owning the *)
(* priority_node. It returns nodes, ids, instrs that should be passed to parent *) (* priority_node. It returns nodes, ids, instrs that should be passed to parent *)
let compute_results_to_parent trans_state loc nd_name stmt_info res_states_children = let compute_results_to_parent trans_state loc nd_name stmt_info res_states_children =
let cfg = trans_state.context.cfg in let res_state = collect_res_trans res_states_children in
let res_state = collect_res_trans cfg res_states_children in
let create_node = own_priority_node trans_state.priority stmt_info && res_state.instrs <> [] in let create_node = own_priority_node trans_state.priority stmt_info && res_state.instrs <> [] in
if create_node then if create_node then
(* We need to create a node *) (* We need to create a node *)
let node_kind = Cfg.Node.Stmt_node (nd_name) in let node_kind = Cfg.Node.Stmt_node (nd_name) in
let node = Nodes.create_node node_kind res_state.instrs loc trans_state.context in let node = Nodes.create_node node_kind res_state.instrs loc trans_state.context in
Cfg.Node.set_succs_exn cfg node trans_state.succ_nodes []; Cfg.Node.set_succs_exn node trans_state.succ_nodes [];
IList.iter (fun leaf -> Cfg.Node.set_succs_exn cfg leaf [node] []) res_state.leaf_nodes; IList.iter (fun leaf -> Cfg.Node.set_succs_exn leaf [node] []) res_state.leaf_nodes;
(* Invariant: if root_nodes is empty then the params have not created a node.*) (* Invariant: if root_nodes is empty then the params have not created a node.*)
let root_nodes = (if res_state.root_nodes <> [] then res_state.root_nodes let root_nodes = (if res_state.root_nodes <> [] then res_state.root_nodes
else [node]) in else [node]) in
@ -446,13 +445,13 @@ let trans_assertion_failure sil_loc context =
let exit_node = Cfg.Procdesc.get_exit_node (CContext.get_procdesc context) let exit_node = Cfg.Procdesc.get_exit_node (CContext.get_procdesc context)
and failure_node = and failure_node =
Nodes.create_node (Cfg.Node.Stmt_node "Assertion failure") [call_instr] sil_loc context in Nodes.create_node (Cfg.Node.Stmt_node "Assertion failure") [call_instr] sil_loc context in
Cfg.Node.set_succs_exn context.CContext.cfg failure_node [exit_node] []; Cfg.Node.set_succs_exn failure_node [exit_node] [];
{ empty_res_trans with root_nodes = [failure_node]; } { empty_res_trans with root_nodes = [failure_node]; }
let trans_assume_false sil_loc context succ_nodes = let trans_assume_false sil_loc context succ_nodes =
let instrs_cond = [Sil.Prune (Exp.zero, sil_loc, true, Sil.Ik_land_lor)] in let instrs_cond = [Sil.Prune (Exp.zero, sil_loc, true, Sil.Ik_land_lor)] in
let prune_node = Nodes.create_node (Nodes.prune_kind true) instrs_cond sil_loc context in let prune_node = Nodes.create_node (Nodes.prune_kind true) instrs_cond sil_loc context in
Cfg.Node.set_succs_exn context.CContext.cfg prune_node succ_nodes []; Cfg.Node.set_succs_exn prune_node succ_nodes [];
{ empty_res_trans with root_nodes = [prune_node]; leaf_nodes = [prune_node] } { empty_res_trans with root_nodes = [prune_node]; leaf_nodes = [prune_node] }
let trans_assertion trans_state sil_loc = let trans_assertion trans_state sil_loc =

@ -44,7 +44,7 @@ val empty_res_trans: trans_result
val undefined_expression: unit -> Exp.t val undefined_expression: unit -> Exp.t
val collect_res_trans : Cfg.cfg -> trans_result list -> trans_result val collect_res_trans : trans_result list -> trans_result
val extract_var_exp_or_fail : trans_state -> Exp.t * Typ.t val extract_var_exp_or_fail : trans_state -> Exp.t * Typ.t

@ -249,17 +249,17 @@ let setup_harness_cfg harness_name env cg cfg =
(* important to reverse the list or there will be scoping issues! *) (* important to reverse the list or there will be scoping issues! *)
let instrs = (IList.rev env.instrs) in let instrs = (IList.rev env.instrs) in
let nodekind = Cfg.Node.Stmt_node "method_body" in let nodekind = Cfg.Node.Stmt_node "method_body" in
Cfg.Node.create cfg env.pc nodekind instrs procdesc in Cfg.Node.create env.pc nodekind instrs procdesc in
let (start_node, exit_node) = let (start_node, exit_node) =
let create_node kind = Cfg.Node.create cfg env.pc kind [] procdesc in let create_node kind = Cfg.Node.create env.pc kind [] procdesc in
let start_kind = Cfg.Node.Start_node procname in let start_kind = Cfg.Node.Start_node procname in
let exit_kind = Cfg.Node.Exit_node procname in let exit_kind = Cfg.Node.Exit_node procname in
(create_node start_kind, create_node exit_kind) in (create_node start_kind, create_node exit_kind) in
Cfg.Procdesc.set_start_node procdesc start_node; Cfg.Procdesc.set_start_node procdesc start_node;
Cfg.Procdesc.set_exit_node procdesc exit_node; Cfg.Procdesc.set_exit_node procdesc exit_node;
Cfg.Node.add_locals_ret_declaration start_node []; Cfg.Node.add_locals_ret_declaration start_node [];
Cfg.Node.set_succs_exn cfg start_node [harness_node] [exit_node]; Cfg.Node.set_succs_exn start_node [harness_node] [exit_node];
Cfg.Node.set_succs_exn cfg harness_node [exit_node] [exit_node]; Cfg.Node.set_succs_exn harness_node [exit_node] [exit_node];
add_harness_to_cg harness_name harness_node cg add_harness_to_cg harness_name harness_node cg
(** create a procedure named harness_name that calls each of the methods in trace in the specified (** create a procedure named harness_name that calls each of the methods in trace in the specified

@ -18,7 +18,6 @@ module L = Logging
let add_edges let add_edges
(context : JContext.t) start_node exn_node exit_nodes method_body_nodes impl super_call = (context : JContext.t) start_node exn_node exit_nodes method_body_nodes impl super_call =
let cfg = context.icfg.cfg in
let pc_nb = Array.length method_body_nodes in let pc_nb = Array.length method_body_nodes in
let last_pc = pc_nb - 1 in let last_pc = pc_nb - 1 in
let is_last pc = (pc = last_pc) in let is_last pc = (pc = last_pc) in
@ -49,7 +48,7 @@ let add_edges
if super_call then (fun _ -> exit_nodes) if super_call then (fun _ -> exit_nodes)
else JTransExn.create_exception_handlers context [exn_node] get_body_nodes impl in else JTransExn.create_exception_handlers context [exn_node] get_body_nodes impl in
let connect node pc = let connect node pc =
Cfg.Node.set_succs_exn cfg node (get_succ_nodes node pc) (get_exn_nodes pc) in Cfg.Node.set_succs_exn node (get_succ_nodes node pc) (get_exn_nodes pc) in
let connect_nodes pc translated_instruction = let connect_nodes pc translated_instruction =
match translated_instruction with match translated_instruction with
| JTrans.Skip -> () | JTrans.Skip -> ()
@ -58,7 +57,7 @@ let add_edges
connect node_true pc; connect node_true pc;
connect node_false pc connect node_false pc
| JTrans.Loop (join_node, node_true, node_false) -> | JTrans.Loop (join_node, node_true, node_false) ->
Cfg.Node.set_succs_exn cfg join_node [node_true; node_false] []; Cfg.Node.set_succs_exn join_node [node_true; node_false] [];
connect node_true pc; connect node_true pc;
connect node_false pc in connect node_false pc in
let first_nodes = let first_nodes =
@ -66,11 +65,11 @@ let add_edges
direct_successors (-1) in direct_successors (-1) in
(* the exceptions edges here are going directly to the exit node *) (* the exceptions edges here are going directly to the exit node *)
Cfg.Node.set_succs_exn cfg start_node first_nodes exit_nodes; Cfg.Node.set_succs_exn start_node first_nodes exit_nodes;
if not super_call then if not super_call then
(* the exceptions node is just before the exit node *) (* the exceptions node is just before the exit node *)
Cfg.Node.set_succs_exn cfg exn_node exit_nodes exit_nodes; Cfg.Node.set_succs_exn exn_node exit_nodes exit_nodes;
Array.iteri connect_nodes method_body_nodes Array.iteri connect_nodes method_body_nodes

@ -269,10 +269,10 @@ let create_procdesc source_file program linereader icfg m : Cfg.Procdesc.t optio
} in } in
Cfg.Procdesc.create cfg proc_attributes in Cfg.Procdesc.create cfg proc_attributes in
let start_kind = Cfg.Node.Start_node proc_name in let start_kind = Cfg.Node.Start_node proc_name in
let start_node = Cfg.Node.create cfg Location.dummy start_kind [] procdesc in let start_node = Cfg.Node.create Location.dummy start_kind [] procdesc in
let exit_kind = (Cfg.Node.Exit_node proc_name) in let exit_kind = (Cfg.Node.Exit_node proc_name) in
let exit_node = Cfg.Node.create cfg Location.dummy exit_kind [] procdesc in let exit_node = Cfg.Node.create Location.dummy exit_kind [] procdesc in
Cfg.Node.set_succs_exn cfg start_node [exit_node] [exit_node]; Cfg.Node.set_succs_exn start_node [exit_node] [exit_node];
Cfg.Procdesc.set_start_node procdesc start_node; Cfg.Procdesc.set_start_node procdesc start_node;
Cfg.Procdesc.set_exit_node procdesc exit_node; Cfg.Procdesc.set_exit_node procdesc exit_node;
procdesc procdesc
@ -321,11 +321,11 @@ let create_procdesc source_file program linereader icfg m : Cfg.Procdesc.t optio
} in } in
Cfg.Procdesc.create cfg proc_attributes in Cfg.Procdesc.create cfg proc_attributes in
let start_kind = Cfg.Node.Start_node proc_name in let start_kind = Cfg.Node.Start_node proc_name in
let start_node = Cfg.Node.create cfg loc_start start_kind [] procdesc in let start_node = Cfg.Node.create loc_start start_kind [] procdesc in
let exit_kind = (Cfg.Node.Exit_node proc_name) in let exit_kind = (Cfg.Node.Exit_node proc_name) in
let exit_node = Cfg.Node.create cfg loc_exit exit_kind [] procdesc in let exit_node = Cfg.Node.create loc_exit exit_kind [] procdesc in
let exn_kind = Cfg.Node.exn_sink_kind in let exn_kind = Cfg.Node.exn_sink_kind in
let exn_node = Cfg.Node.create cfg loc_exit exn_kind [] procdesc in let exn_node = Cfg.Node.create loc_exit exn_kind [] procdesc in
JContext.add_exn_node proc_name exn_node; JContext.add_exn_node proc_name exn_node;
Cfg.Procdesc.set_start_node procdesc start_node; Cfg.Procdesc.set_start_node procdesc start_node;
Cfg.Procdesc.set_exit_node procdesc exit_node; Cfg.Procdesc.set_exit_node procdesc exit_node;
@ -699,7 +699,6 @@ let assume_not_null loc sil_expr =
let rec instruction (context : JContext.t) pc instr : translation = let rec instruction (context : JContext.t) pc instr : translation =
let cfg = JContext.get_cfg context in
let tenv = JContext.get_tenv context in let tenv = JContext.get_tenv context in
let cg = JContext.get_cg context in let cg = JContext.get_cg context in
let program = context.program in let program = context.program in
@ -710,7 +709,7 @@ let rec instruction (context : JContext.t) pc instr : translation =
let file = loc.Location.file in let file = loc.Location.file in
let match_never_null = Inferconfig.never_return_null_matcher in let match_never_null = Inferconfig.never_return_null_matcher in
let create_node node_kind sil_instrs = let create_node node_kind sil_instrs =
Cfg.Node.create cfg loc node_kind sil_instrs context.procdesc in Cfg.Node.create loc node_kind sil_instrs context.procdesc in
let return_not_null () = let return_not_null () =
match_never_null loc.Location.file proc_name in match_never_null loc.Location.file proc_name in
let trans_monitor_enter_exit context expr pc loc builtin node_desc = let trans_monitor_enter_exit context expr pc loc builtin node_desc =

@ -30,8 +30,7 @@ let translate_exceptions (context : JContext.t) exit_nodes get_body_nodes handle
let catch_block_table = Hashtbl.create 1 in let catch_block_table = Hashtbl.create 1 in
let exn_message = "exception handler" in let exn_message = "exception handler" in
let procdesc = context.procdesc in let procdesc = context.procdesc in
let cfg = JContext.get_cfg context in let create_node loc node_kind instrs = Cfg.Node.create loc node_kind instrs procdesc in
let create_node loc node_kind instrs = Cfg.Node.create cfg loc node_kind instrs procdesc in
let ret_var = Cfg.Procdesc.get_ret_var procdesc in let ret_var = Cfg.Procdesc.get_ret_var procdesc in
let ret_type = Cfg.Procdesc.get_ret_type procdesc in let ret_type = Cfg.Procdesc.get_ret_type procdesc in
let id_ret_val = Ident.create_fresh Ident.knormal in let id_ret_val = Ident.create_fresh Ident.knormal in
@ -92,8 +91,8 @@ let translate_exceptions (context : JContext.t) exit_nodes get_body_nodes handle
let node_false = let node_false =
let instrs_false = [instr_call_instanceof; instr_prune_false] @ (if rethrow_exception then [instr_rethrow_exn] else []) in let instrs_false = [instr_call_instanceof; instr_prune_false] @ (if rethrow_exception then [instr_rethrow_exn] else []) in
create_node loc node_kind_false instrs_false in create_node loc node_kind_false instrs_false in
Cfg.Node.set_succs_exn cfg node_true catch_nodes exit_nodes; Cfg.Node.set_succs_exn node_true catch_nodes exit_nodes;
Cfg.Node.set_succs_exn cfg node_false succ_nodes exit_nodes; Cfg.Node.set_succs_exn node_false succ_nodes exit_nodes;
let is_finally = handler.JBir.e_catch_type = None in let is_finally = handler.JBir.e_catch_type = None in
if is_finally if is_finally
then [node_true] (* TODO (#4759480): clean up the translation so prune nodes are not created at all *) then [node_true] (* TODO (#4759480): clean up the translation so prune nodes are not created at all *)
@ -110,7 +109,7 @@ let translate_exceptions (context : JContext.t) exit_nodes get_body_nodes handle
| n:: _ -> Cfg.Node.get_loc n | n:: _ -> Cfg.Node.get_loc n
| [] -> Location.dummy in | [] -> Location.dummy in
let entry_node = create_entry_node loc in let entry_node = create_entry_node loc in
Cfg.Node.set_succs_exn cfg entry_node nodes_first_handler exit_nodes; Cfg.Node.set_succs_exn entry_node nodes_first_handler exit_nodes;
Hashtbl.add catch_block_table handler_list [entry_node] in Hashtbl.add catch_block_table handler_list [entry_node] in
Hashtbl.iter (fun _ handler_list -> create_entry_block handler_list) handler_table; Hashtbl.iter (fun _ handler_list -> create_entry_block handler_list) handler_table;
catch_block_table catch_block_table

@ -174,9 +174,9 @@ module Make
let pname = Cfg.Procdesc.get_proc_name pdesc in let pname = Cfg.Procdesc.get_proc_name pdesc in
let create_node kind cmds = let create_node kind cmds =
Cfg.Node.create cfg dummy_loc kind cmds pdesc in Cfg.Node.create dummy_loc kind cmds pdesc in
let set_succs cur_node succs ~exn_handlers= let set_succs cur_node succs ~exn_handlers=
Cfg.Node.set_succs_exn cfg cur_node succs exn_handlers in Cfg.Node.set_succs_exn cur_node succs exn_handlers in
let mk_prune_nodes_for_cond cond_exp if_kind = let mk_prune_nodes_for_cond cond_exp if_kind =
let mk_prune_node cond_exp if_kind true_branch = let mk_prune_node cond_exp if_kind true_branch =
let prune_instr = Sil.Prune (cond_exp, dummy_loc, true_branch, if_kind) in let prune_instr = Sil.Prune (cond_exp, dummy_loc, true_branch, if_kind) in

@ -27,19 +27,19 @@ let tests =
let instrs2 = [dummy_instr3] in let instrs2 = [dummy_instr3] in
let instrs3 = [dummy_instr4] in let instrs3 = [dummy_instr4] in
let instrs4 = [] in let instrs4 = [] in
let create_node cfg instrs = let create_node instrs =
Cfg.Node.create cfg Location.dummy (Cfg.Node.Stmt_node "") instrs test_pdesc in Cfg.Node.create Location.dummy (Cfg.Node.Stmt_node "") instrs test_pdesc in
let n1 = create_node cfg instrs1 in let n1 = create_node instrs1 in
let n2 = create_node cfg instrs2 in let n2 = create_node instrs2 in
let n3 = create_node cfg instrs3 in let n3 = create_node instrs3 in
let n4 = create_node cfg instrs4 in let n4 = create_node instrs4 in
Cfg.Procdesc.set_start_node test_pdesc n1; Cfg.Procdesc.set_start_node test_pdesc n1;
(* let -> represent normal transitions and -*-> represent exceptional transitions *) (* let -> represent normal transitions and -*-> represent exceptional transitions *)
(* creating graph n1 -> n2, n1 -*-> n3, n2 -> n4, n2 -*-> n3, n3 -> n4 , n3 -*> n4 *) (* creating graph n1 -> n2, n1 -*-> n3, n2 -> n4, n2 -*-> n3, n3 -> n4 , n3 -*> n4 *)
Cfg.Node.set_succs_exn cfg n1 [n2] [n3]; Cfg.Node.set_succs_exn n1 [n2] [n3];
Cfg.Node.set_succs_exn cfg n2 [n4] [n3]; Cfg.Node.set_succs_exn n2 [n4] [n3];
Cfg.Node.set_succs_exn cfg n3 [n4] [n4]; Cfg.Node.set_succs_exn n3 [n4] [n4];
let normal_proc_cfg = ProcCfg.Normal.from_pdesc test_pdesc in let normal_proc_cfg = ProcCfg.Normal.from_pdesc test_pdesc in
let exceptional_proc_cfg = ProcCfg.Exceptional.from_pdesc test_pdesc in let exceptional_proc_cfg = ProcCfg.Exceptional.from_pdesc test_pdesc in

@ -1,62 +1,62 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
15 [label="15: DeclStmt \n *&x:double =1.000000 [line 11]\n " shape="box"] "main15" [label="15: DeclStmt \n *&x:double =1.000000 [line 11]\n " shape="box"]
15 -> 14 ; "main15" -> "main14" ;
14 [label="14: BinaryOperatorStmt: AddAssign \n n$9=*&x:double [line 12]\n *&x:double =(n$9 + 1.000000) [line 12]\n " shape="box"] "main14" [label="14: BinaryOperatorStmt: AddAssign \n n$9=*&x:double [line 12]\n *&x:double =(n$9 + 1.000000) [line 12]\n " shape="box"]
14 -> 13 ; "main14" -> "main13" ;
13 [label="13: BinaryOperatorStmt: SubAssign \n n$8=*&x:double [line 13]\n *&x:double =(n$8 - 1.000000) [line 13]\n " shape="box"] "main13" [label="13: BinaryOperatorStmt: SubAssign \n n$8=*&x:double [line 13]\n *&x:double =(n$8 - 1.000000) [line 13]\n " shape="box"]
13 -> 12 ; "main13" -> "main12" ;
12 [label="12: BinaryOperatorStmt: DivAssign \n n$7=*&x:double [line 14]\n *&x:double =(n$7 / 1.000000) [line 14]\n " shape="box"] "main12" [label="12: BinaryOperatorStmt: DivAssign \n n$7=*&x:double [line 14]\n *&x:double =(n$7 / 1.000000) [line 14]\n " shape="box"]
12 -> 11 ; "main12" -> "main11" ;
11 [label="11: BinaryOperatorStmt: MulAssign \n n$6=*&x:double [line 15]\n *&x:double =(n$6 * 1.000000) [line 15]\n " shape="box"] "main11" [label="11: BinaryOperatorStmt: MulAssign \n n$6=*&x:double [line 15]\n *&x:double =(n$6 * 1.000000) [line 15]\n " shape="box"]
11 -> 10 ; "main11" -> "main10" ;
10 [label="10: DeclStmt \n *&b:int =1 [line 16]\n " shape="box"] "main10" [label="10: DeclStmt \n *&b:int =1 [line 16]\n " shape="box"]
10 -> 9 ; "main10" -> "main9" ;
9 [label="9: BinaryOperatorStmt: ShlAssign \n n$5=*&b:int [line 17]\n *&b:int =(n$5 << 1) [line 17]\n " shape="box"] "main9" [label="9: BinaryOperatorStmt: ShlAssign \n n$5=*&b:int [line 17]\n *&b:int =(n$5 << 1) [line 17]\n " shape="box"]
9 -> 8 ; "main9" -> "main8" ;
8 [label="8: BinaryOperatorStmt: ShrAssign \n n$4=*&b:int [line 18]\n *&b:int =(n$4 >> 1) [line 18]\n " shape="box"] "main8" [label="8: BinaryOperatorStmt: ShrAssign \n n$4=*&b:int [line 18]\n *&b:int =(n$4 >> 1) [line 18]\n " shape="box"]
8 -> 7 ; "main8" -> "main7" ;
7 [label="7: BinaryOperatorStmt: RemAssing \n n$3=*&b:int [line 19]\n *&b:int =(n$3 % 1) [line 19]\n " shape="box"] "main7" [label="7: BinaryOperatorStmt: RemAssing \n n$3=*&b:int [line 19]\n *&b:int =(n$3 % 1) [line 19]\n " shape="box"]
7 -> 6 ; "main7" -> "main6" ;
6 [label="6: BinaryOperatorStmt: AndAssign \n n$2=*&b:int [line 20]\n *&b:int =(n$2 & 1) [line 20]\n " shape="box"] "main6" [label="6: BinaryOperatorStmt: AndAssign \n n$2=*&b:int [line 20]\n *&b:int =(n$2 & 1) [line 20]\n " shape="box"]
6 -> 5 ; "main6" -> "main5" ;
5 [label="5: BinaryOperatorStmt: OrAssign \n n$1=*&b:int [line 21]\n *&b:int =(n$1 | 1) [line 21]\n " shape="box"] "main5" [label="5: BinaryOperatorStmt: OrAssign \n n$1=*&b:int [line 21]\n *&b:int =(n$1 | 1) [line 21]\n " shape="box"]
5 -> 4 ; "main5" -> "main4" ;
4 [label="4: BinaryOperatorStmt: XorAssign \n n$0=*&b:int [line 22]\n *&b:int =(n$0 ^ 1) [line 22]\n " shape="box"] "main4" [label="4: BinaryOperatorStmt: XorAssign \n n$0=*&b:int [line 22]\n *&b:int =(n$0 ^ 1) [line 22]\n " shape="box"]
4 -> 3 ; "main4" -> "main3" ;
3 [label="3: Return Stmt \n *&return:int =0 [line 23]\n " shape="box"] "main3" [label="3: Return Stmt \n *&return:int =0 [line 23]\n " shape="box"]
3 -> 2 ; "main3" -> "main2" ;
2 [label="2: Exit main \n " color=yellow style=filled] "main2" [label="2: Exit main \n " color=yellow style=filled]
1 [label="1: Start main\nFormals: \nLocals: b:int x:double \n DECLARE_LOCALS(&return,&b,&x); [line 10]\n " color=yellow style=filled] "main1" [label="1: Start main\nFormals: \nLocals: b:int x:double \n DECLARE_LOCALS(&return,&b,&x); [line 10]\n " color=yellow style=filled]
1 -> 15 ; "main1" -> "main15" ;
} }

@ -1,26 +1,26 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
6 [label="6: DeclStmt \n *&#GB<arithmetic/int_const.c>$main_kDuration:int =3 [line 17]\n " shape="box"] "main6" [label="6: DeclStmt \n *&#GB<arithmetic/int_const.c>$main_kDuration:int =3 [line 17]\n " shape="box"]
6 -> 5 ; "main6" -> "main5" ;
5 [label="5: DeclStmt \n *&large_int:int =9223372036854775807 [line 19]\n " shape="box"] "main5" [label="5: DeclStmt \n *&large_int:int =9223372036854775807 [line 19]\n " shape="box"]
5 -> 4 ; "main5" -> "main4" ;
4 [label="4: DeclStmt \n *&overflow_int:int =n$0 [line 20]\n " shape="box"] "main4" [label="4: DeclStmt \n *&overflow_int:int =n$0 [line 20]\n " shape="box"]
4 -> 3 ; "main4" -> "main3" ;
3 [label="3: Return Stmt \n *&return:int =0 [line 22]\n " shape="box"] "main3" [label="3: Return Stmt \n *&return:int =0 [line 22]\n " shape="box"]
3 -> 2 ; "main3" -> "main2" ;
2 [label="2: Exit main \n " color=yellow style=filled] "main2" [label="2: Exit main \n " color=yellow style=filled]
1 [label="1: Start main\nFormals: \nLocals: overflow_int:int large_int:int d:long double c:float * b:int * a:int \n DECLARE_LOCALS(&return,&overflow_int,&large_int,&d,&c,&b,&a); [line 10]\n " color=yellow style=filled] "main1" [label="1: Start main\nFormals: \nLocals: overflow_int:int large_int:int d:long double c:float * b:int * a:int \n DECLARE_LOCALS(&return,&overflow_int,&large_int,&d,&c,&b,&a); [line 10]\n " color=yellow style=filled]
1 -> 6 ; "main1" -> "main6" ;
} }

@ -1,99 +1,99 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
24 [label="24: Return Stmt \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 14]\n *&return:int =n$2 [line 14]\n " shape="box"] "neg_bool8" [label="8: Return Stmt \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 14]\n *&return:int =n$2 [line 14]\n " shape="box"]
24 -> 18 ; "neg_bool8" -> "neg_bool2" ;
23 [label="23: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =1 [line 14]\n " shape="box"] "neg_bool7" [label="7: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =1 [line 14]\n " shape="box"]
23 -> 19 ; "neg_bool7" -> "neg_bool3" ;
22 [label="22: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =0 [line 14]\n " shape="box"] "neg_bool6" [label="6: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =0 [line 14]\n " shape="box"]
22 -> 19 ; "neg_bool6" -> "neg_bool3" ;
21 [label="21: Prune (false branch) \n n$1=*&a:_Bool [line 14]\n PRUNE((n$1 == 0), false); [line 14]\n " shape="invhouse"] "neg_bool5" [label="5: Prune (false branch) \n n$1=*&a:_Bool [line 14]\n PRUNE((n$1 == 0), false); [line 14]\n " shape="invhouse"]
21 -> 23 ; "neg_bool5" -> "neg_bool7" ;
20 [label="20: Prune (true branch) \n n$1=*&a:_Bool [line 14]\n PRUNE((n$1 != 0), true); [line 14]\n " shape="invhouse"] "neg_bool4" [label="4: Prune (true branch) \n n$1=*&a:_Bool [line 14]\n PRUNE((n$1 != 0), true); [line 14]\n " shape="invhouse"]
20 -> 22 ; "neg_bool4" -> "neg_bool6" ;
19 [label="19: + \n " ] "neg_bool3" [label="3: + \n " ]
19 -> 24 ; "neg_bool3" -> "neg_bool8" ;
18 [label="18: Exit neg_bool \n " color=yellow style=filled] "neg_bool2" [label="2: Exit neg_bool \n " color=yellow style=filled]
17 [label="17: Start neg_bool\nFormals: a:_Bool \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0); [line 14]\n " color=yellow style=filled] "neg_bool1" [label="1: Start neg_bool\nFormals: a:_Bool \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0); [line 14]\n " color=yellow style=filled]
17 -> 20 ; "neg_bool1" -> "neg_bool4" ;
17 -> 21 ; "neg_bool1" -> "neg_bool5" ;
16 [label="16: Return Stmt \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 12]\n *&return:int =n$2 [line 12]\n " shape="box"] "neg_char8" [label="8: Return Stmt \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 12]\n *&return:int =n$2 [line 12]\n " shape="box"]
16 -> 10 ; "neg_char8" -> "neg_char2" ;
15 [label="15: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =1 [line 12]\n " shape="box"] "neg_char7" [label="7: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =1 [line 12]\n " shape="box"]
15 -> 11 ; "neg_char7" -> "neg_char3" ;
14 [label="14: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =0 [line 12]\n " shape="box"] "neg_char6" [label="6: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =0 [line 12]\n " shape="box"]
14 -> 11 ; "neg_char6" -> "neg_char3" ;
13 [label="13: Prune (false branch) \n n$1=*&a:char [line 12]\n PRUNE((n$1 == 0), false); [line 12]\n " shape="invhouse"] "neg_char5" [label="5: Prune (false branch) \n n$1=*&a:char [line 12]\n PRUNE((n$1 == 0), false); [line 12]\n " shape="invhouse"]
13 -> 15 ; "neg_char5" -> "neg_char7" ;
12 [label="12: Prune (true branch) \n n$1=*&a:char [line 12]\n PRUNE((n$1 != 0), true); [line 12]\n " shape="invhouse"] "neg_char4" [label="4: Prune (true branch) \n n$1=*&a:char [line 12]\n PRUNE((n$1 != 0), true); [line 12]\n " shape="invhouse"]
12 -> 14 ; "neg_char4" -> "neg_char6" ;
11 [label="11: + \n " ] "neg_char3" [label="3: + \n " ]
11 -> 16 ; "neg_char3" -> "neg_char8" ;
10 [label="10: Exit neg_char \n " color=yellow style=filled] "neg_char2" [label="2: Exit neg_char \n " color=yellow style=filled]
9 [label="9: Start neg_char\nFormals: a:char \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0); [line 12]\n " color=yellow style=filled] "neg_char1" [label="1: Start neg_char\nFormals: a:char \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0); [line 12]\n " color=yellow style=filled]
9 -> 12 ; "neg_char1" -> "neg_char4" ;
9 -> 13 ; "neg_char1" -> "neg_char5" ;
8 [label="8: Return Stmt \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 10]\n *&return:int =n$2 [line 10]\n " shape="box"] "neg_int8" [label="8: Return Stmt \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 10]\n *&return:int =n$2 [line 10]\n " shape="box"]
8 -> 2 ; "neg_int8" -> "neg_int2" ;
7 [label="7: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =1 [line 10]\n " shape="box"] "neg_int7" [label="7: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =1 [line 10]\n " shape="box"]
7 -> 3 ; "neg_int7" -> "neg_int3" ;
6 [label="6: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =0 [line 10]\n " shape="box"] "neg_int6" [label="6: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =0 [line 10]\n " shape="box"]
6 -> 3 ; "neg_int6" -> "neg_int3" ;
5 [label="5: Prune (false branch) \n n$1=*&a:int [line 10]\n PRUNE((n$1 == 0), false); [line 10]\n " shape="invhouse"] "neg_int5" [label="5: Prune (false branch) \n n$1=*&a:int [line 10]\n PRUNE((n$1 == 0), false); [line 10]\n " shape="invhouse"]
5 -> 7 ; "neg_int5" -> "neg_int7" ;
4 [label="4: Prune (true branch) \n n$1=*&a:int [line 10]\n PRUNE((n$1 != 0), true); [line 10]\n " shape="invhouse"] "neg_int4" [label="4: Prune (true branch) \n n$1=*&a:int [line 10]\n PRUNE((n$1 != 0), true); [line 10]\n " shape="invhouse"]
4 -> 6 ; "neg_int4" -> "neg_int6" ;
3 [label="3: + \n " ] "neg_int3" [label="3: + \n " ]
3 -> 8 ; "neg_int3" -> "neg_int8" ;
2 [label="2: Exit neg_int \n " color=yellow style=filled] "neg_int2" [label="2: Exit neg_int \n " color=yellow style=filled]
1 [label="1: Start neg_int\nFormals: a:int \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0); [line 10]\n " color=yellow style=filled] "neg_int1" [label="1: Start neg_int\nFormals: a:int \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0); [line 10]\n " color=yellow style=filled]
1 -> 4 ; "neg_int1" -> "neg_int4" ;
1 -> 5 ; "neg_int1" -> "neg_int5" ;
} }

@ -1,22 +1,22 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
5 [label="5: DeclStmt \n *&x:int =2 [line 11]\n " shape="box"] "main5" [label="5: DeclStmt \n *&x:int =2 [line 11]\n " shape="box"]
5 -> 4 ; "main5" -> "main4" ;
4 [label="4: DeclStmt \n *&z:int =3 [line 12]\n " shape="box"] "main4" [label="4: DeclStmt \n *&z:int =3 [line 12]\n " shape="box"]
4 -> 3 ; "main4" -> "main3" ;
3 [label="3: Return Stmt \n n$0=*&x:int [line 13]\n n$1=*&z:int [line 13]\n *&return:int =(n$0 + n$1) [line 13]\n " shape="box"] "main3" [label="3: Return Stmt \n n$0=*&x:int [line 13]\n n$1=*&z:int [line 13]\n *&return:int =(n$0 + n$1) [line 13]\n " shape="box"]
3 -> 2 ; "main3" -> "main2" ;
2 [label="2: Exit main \n " color=yellow style=filled] "main2" [label="2: Exit main \n " color=yellow style=filled]
1 [label="1: Start main\nFormals: \nLocals: z:int x:int \n DECLARE_LOCALS(&return,&z,&x); [line 10]\n " color=yellow style=filled] "main1" [label="1: Start main\nFormals: \nLocals: z:int x:int \n DECLARE_LOCALS(&return,&z,&x); [line 10]\n " color=yellow style=filled]
1 -> 5 ; "main1" -> "main5" ;
} }

@ -1,62 +1,62 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
15 [label="15: DeclStmt \n *&x:int =1 [line 11]\n " shape="box"] "main15" [label="15: DeclStmt \n *&x:int =1 [line 11]\n " shape="box"]
15 -> 14 ; "main15" -> "main14" ;
14 [label="14: BinaryOperatorStmt: Assign \n n$12=*&x:int [line 14]\n *&y:int =~n$12 [line 14]\n " shape="box"] "main14" [label="14: BinaryOperatorStmt: Assign \n n$12=*&x:int [line 14]\n *&y:int =~n$12 [line 14]\n " shape="box"]
14 -> 13 ; "main14" -> "main13" ;
13 [label="13: BinaryOperatorStmt: Assign \n n$11=*&x:int [line 15]\n *&y:int =-n$11 [line 15]\n " shape="box"] "main13" [label="13: BinaryOperatorStmt: Assign \n n$11=*&x:int [line 15]\n *&y:int =-n$11 [line 15]\n " shape="box"]
13 -> 12 ; "main13" -> "main12" ;
12 [label="12: BinaryOperatorStmt: Assign \n n$10=*&x:int [line 16]\n *&y:int =n$10 [line 16]\n " shape="box"] "main12" [label="12: BinaryOperatorStmt: Assign \n n$10=*&x:int [line 16]\n *&y:int =n$10 [line 16]\n " shape="box"]
12 -> 11 ; "main12" -> "main11" ;
11 [label="11: BinaryOperatorStmt: Assign \n n$9=*&x:int [line 18]\n *&x:int =(n$9 + 1) [line 18]\n *&y:int =n$9 [line 18]\n " shape="box"] "main11" [label="11: BinaryOperatorStmt: Assign \n n$9=*&x:int [line 18]\n *&x:int =(n$9 + 1) [line 18]\n *&y:int =n$9 [line 18]\n " shape="box"]
11 -> 10 ; "main11" -> "main10" ;
10 [label="10: BinaryOperatorStmt: Assign \n n$8=*&x:int [line 19]\n *&x:int =(n$8 + 1) [line 19]\n *&y:int =(n$8 + 1) [line 19]\n " shape="box"] "main10" [label="10: BinaryOperatorStmt: Assign \n n$8=*&x:int [line 19]\n *&x:int =(n$8 + 1) [line 19]\n *&y:int =(n$8 + 1) [line 19]\n " shape="box"]
10 -> 9 ; "main10" -> "main9" ;
9 [label="9: BinaryOperatorStmt: Assign \n n$7=*&x:int [line 21]\n *&x:int =(n$7 - 1) [line 21]\n *&y:int =(n$7 - 1) [line 21]\n " shape="box"] "main9" [label="9: BinaryOperatorStmt: Assign \n n$7=*&x:int [line 21]\n *&x:int =(n$7 - 1) [line 21]\n *&y:int =(n$7 - 1) [line 21]\n " shape="box"]
9 -> 8 ; "main9" -> "main8" ;
8 [label="8: BinaryOperatorStmt: Assign \n n$6=*&x:int [line 22]\n *&x:int =(n$6 - 1) [line 22]\n *&y:int =n$6 [line 22]\n " shape="box"] "main8" [label="8: BinaryOperatorStmt: Assign \n n$6=*&x:int [line 22]\n *&x:int =(n$6 - 1) [line 22]\n *&y:int =n$6 [line 22]\n " shape="box"]
8 -> 7 ; "main8" -> "main7" ;
7 [label="7: BinaryOperatorStmt: Assign \n *&b:int *=&a [line 27]\n " shape="box"] "main7" [label="7: BinaryOperatorStmt: Assign \n *&b:int *=&a [line 27]\n " shape="box"]
7 -> 6 ; "main7" -> "main6" ;
6 [label="6: BinaryOperatorStmt: Assign \n n$4=*&b:int * [line 28]\n n$5=*(n$4 + 1):int [line 28]\n *&a:int =n$5 [line 28]\n " shape="box"] "main6" [label="6: BinaryOperatorStmt: Assign \n n$4=*&b:int * [line 28]\n n$5=*(n$4 + 1):int [line 28]\n *&a:int =n$5 [line 28]\n " shape="box"]
6 -> 5 ; "main6" -> "main5" ;
5 [label="5: BinaryOperatorStmt: Assign \n n$1=*&b:int * [line 29]\n n$2=*&b:int * [line 29]\n n$3=*n$2:int [line 29]\n *n$1:int =(n$3 + 1) [line 29]\n " shape="box"] "main5" [label="5: BinaryOperatorStmt: Assign \n n$1=*&b:int * [line 29]\n n$2=*&b:int * [line 29]\n n$3=*n$2:int [line 29]\n *n$1:int =(n$3 + 1) [line 29]\n " shape="box"]
5 -> 4 ; "main5" -> "main4" ;
4 [label="4: BinaryOperatorStmt: Assign \n n$0=*&a:int [line 30]\n *&a:int =n$0 [line 30]\n " shape="box"] "main4" [label="4: BinaryOperatorStmt: Assign \n n$0=*&a:int [line 30]\n *&a:int =n$0 [line 30]\n " shape="box"]
4 -> 3 ; "main4" -> "main3" ;
3 [label="3: Return Stmt \n *&return:int =0 [line 32]\n " shape="box"] "main3" [label="3: Return Stmt \n *&return:int =0 [line 32]\n " shape="box"]
3 -> 2 ; "main3" -> "main2" ;
2 [label="2: Exit main \n " color=yellow style=filled] "main2" [label="2: Exit main \n " color=yellow style=filled]
1 [label="1: Start main\nFormals: \nLocals: b:int * a:int y:int x:int \n DECLARE_LOCALS(&return,&b,&a,&y,&x); [line 10]\n " color=yellow style=filled] "main1" [label="1: Start main\nFormals: \nLocals: b:int * a:int y:int x:int \n DECLARE_LOCALS(&return,&b,&a,&y,&x); [line 10]\n " color=yellow style=filled]
1 -> 15 ; "main1" -> "main15" ;
} }

@ -1,14 +1,14 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
3 [label="3: Return Stmt \n n$0=*&e:_Bool [line 12]\n *&return:_Bool =n$0 [line 12]\n " shape="box"] "revert3" [label="3: Return Stmt \n n$0=*&e:_Bool [line 12]\n *&return:_Bool =n$0 [line 12]\n " shape="box"]
3 -> 2 ; "revert3" -> "revert2" ;
2 [label="2: Exit revert \n " color=yellow style=filled] "revert2" [label="2: Exit revert \n " color=yellow style=filled]
1 [label="1: Start revert\nFormals: e:_Bool \nLocals: \n DECLARE_LOCALS(&return); [line 12]\n " color=yellow style=filled] "revert1" [label="1: Start revert\nFormals: e:_Bool \nLocals: \n DECLARE_LOCALS(&return); [line 12]\n " color=yellow style=filled]
1 -> 3 ; "revert1" -> "revert3" ;
} }

@ -1,25 +1,25 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
6 [label="6: DeclStmt \n *&x:int =3 [line 13]\n " shape="box"] "main4" [label="4: DeclStmt \n *&x:int =3 [line 13]\n " shape="box"]
6 -> 5 ; "main4" -> "main3" ;
5 [label="5: Call _fun_check \n n$0=*&x:int [line 14]\n _fun_check((n$0 < 2):int ) [line 14]\n " shape="box"] "main3" [label="3: Call _fun_check \n n$0=*&x:int [line 14]\n _fun_check((n$0 < 2):int ) [line 14]\n " shape="box"]
5 -> 4 ; "main3" -> "main2" ;
4 [label="4: Exit main \n " color=yellow style=filled] "main2" [label="2: Exit main \n " color=yellow style=filled]
3 [label="3: Start main\nFormals: \nLocals: x:int \n DECLARE_LOCALS(&return,&x); [line 12]\n " color=yellow style=filled] "main1" [label="1: Start main\nFormals: \nLocals: x:int \n DECLARE_LOCALS(&return,&x); [line 12]\n " color=yellow style=filled]
3 -> 6 ; "main1" -> "main4" ;
2 [label="2: Exit check \n " color=yellow style=filled] "check2" [label="2: Exit check \n " color=yellow style=filled]
1 [label="1: Start check\nFormals: x:int \nLocals: \n DECLARE_LOCALS(&return); [line 10]\n " color=yellow style=filled] "check1" [label="1: Start check\nFormals: x:int \nLocals: \n DECLARE_LOCALS(&return); [line 10]\n " color=yellow style=filled]
1 -> 2 ; "check1" -> "check2" ;
} }

@ -1,29 +1,29 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
7 [label="7: BinaryOperatorStmt: Assign \n n$0=_fun_sum(2:int ,3:int ) [line 20]\n *&total:int =n$0 [line 20]\n " shape="box"] "main4" [label="4: BinaryOperatorStmt: Assign \n n$0=_fun_sum(2:int ,3:int ) [line 20]\n *&total:int =n$0 [line 20]\n " shape="box"]
7 -> 3 ; "main4" -> "main3" ;
6 [label="6: Return Stmt \n n$0=*&a:int [line 25]\n n$1=*&b:int [line 25]\n *&return:int =(n$0 + n$1) [line 25]\n " shape="box"] "main3" [label="3: Return Stmt \n *&return:int =0 [line 22]\n " shape="box"]
6 -> 5 ; "main3" -> "main2" ;
5 [label="5: Exit sum \n " color=yellow style=filled] "main2" [label="2: Exit main \n " color=yellow style=filled]
4 [label="4: Start sum\nFormals: a:int b:int \nLocals: \n DECLARE_LOCALS(&return); [line 25]\n " color=yellow style=filled] "main1" [label="1: Start main\nFormals: \nLocals: total:int \n DECLARE_LOCALS(&return,&total); [line 17]\n " color=yellow style=filled]
4 -> 6 ; "main1" -> "main4" ;
3 [label="3: Return Stmt \n *&return:int =0 [line 22]\n " shape="box"] "sum3" [label="3: Return Stmt \n n$0=*&a:int [line 25]\n n$1=*&b:int [line 25]\n *&return:int =(n$0 + n$1) [line 25]\n " shape="box"]
3 -> 2 ; "sum3" -> "sum2" ;
2 [label="2: Exit main \n " color=yellow style=filled] "sum2" [label="2: Exit sum \n " color=yellow style=filled]
1 [label="1: Start main\nFormals: \nLocals: total:int \n DECLARE_LOCALS(&return,&total); [line 17]\n " color=yellow style=filled] "sum1" [label="1: Start sum\nFormals: a:int b:int \nLocals: \n DECLARE_LOCALS(&return); [line 25]\n " color=yellow style=filled]
1 -> 7 ; "sum1" -> "sum3" ;
} }

@ -1,76 +1,76 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
19 [label="19: DeclStmt \n *&a:int =9 [line 23]\n " shape="box"] "comma_16" [label="6: DeclStmt \n *&a:int =9 [line 11]\n " shape="box"]
19 -> 18 ; "comma_16" -> "comma_15" ;
18 [label="18: DeclStmt \n *&b:int =7 [line 23]\n " shape="box"] "comma_15" [label="5: DeclStmt \n *&b:int =7 [line 11]\n " shape="box"]
18 -> 17 ; "comma_15" -> "comma_14" ;
17 [label="17: DeclStmt \n *&c:int =3 [line 23]\n " shape="box"] "comma_14" [label="4: DeclStmt \n n$1=*&a:int [line 12]\n *&a:int =(n$1 * 2) [line 12]\n n$2=*&a:int [line 12]\n n$3=*&a:int [line 12]\n *&a:int =(n$3 + 1) [line 12]\n *&b:int =(7 * n$3) [line 12]\n n$4=*&b:int [line 12]\n *&d:int =n$4 [line 12]\n " shape="box"]
17 -> 16 ; "comma_14" -> "comma_13" ;
16 [label="16: DeclStmt \n n$1=*&a:int [line 24]\n *&a:int =(n$1 * 2) [line 24]\n n$2=*&a:int [line 24]\n n$3=*&a:int [line 24]\n *&a:int =(n$3 + 1) [line 24]\n *&b:int =(7 * n$3) [line 24]\n n$4=*&b:int [line 24]\n n$5=*&a:int [line 24]\n n$6=*&b:int [line 24]\n *&c:int =((n$5 + n$6) + 9) [line 24]\n n$7=*&c:int [line 24]\n n$8=*&c:int [line 24]\n *&d:int =n$8 [line 24]\n " shape="box"] "comma_13" [label="3: Return Stmt \n n$0=*&d:int [line 13]\n *&return:int =n$0 [line 13]\n " shape="box"]
16 -> 15 ; "comma_13" -> "comma_12" ;
15 [label="15: Return Stmt \n n$0=*&d:int [line 25]\n *&return:int =n$0 [line 25]\n " shape="box"] "comma_12" [label="2: Exit comma_1 \n " color=yellow style=filled]
15 -> 14 ; "comma_11" [label="1: Start comma_1\nFormals: \nLocals: d:int b:int a:int \n DECLARE_LOCALS(&return,&d,&b,&a); [line 10]\n " color=yellow style=filled]
14 [label="14: Exit comma_3 \n " color=yellow style=filled]
13 [label="13: Start comma_3\nFormals: \nLocals: d:int c:int b:int a:int \n DECLARE_LOCALS(&return,&d,&c,&b,&a); [line 22]\n " color=yellow style=filled] "comma_11" -> "comma_16" ;
"comma_26" [label="6: DeclStmt \n *&a:int =9 [line 17]\n " shape="box"]
13 -> 19 ; "comma_26" -> "comma_25" ;
12 [label="12: DeclStmt \n *&a:int =9 [line 17]\n " shape="box"] "comma_25" [label="5: DeclStmt \n *&b:int =7 [line 17]\n " shape="box"]
12 -> 11 ; "comma_25" -> "comma_24" ;
11 [label="11: DeclStmt \n *&b:int =7 [line 17]\n " shape="box"] "comma_24" [label="4: DeclStmt \n n$1=*&a:int [line 18]\n *&a:int =(n$1 * 2) [line 18]\n n$2=*&a:int [line 18]\n n$3=*&a:int [line 18]\n *&a:int =(n$3 + 1) [line 18]\n *&b:int =(7 * n$3) [line 18]\n n$4=*&b:int [line 18]\n n$5=*&a:int [line 18]\n n$6=*&b:int [line 18]\n *&d:int =((n$5 + n$6) + 9) [line 18]\n " shape="box"]
11 -> 10 ; "comma_24" -> "comma_23" ;
10 [label="10: DeclStmt \n n$1=*&a:int [line 18]\n *&a:int =(n$1 * 2) [line 18]\n n$2=*&a:int [line 18]\n n$3=*&a:int [line 18]\n *&a:int =(n$3 + 1) [line 18]\n *&b:int =(7 * n$3) [line 18]\n n$4=*&b:int [line 18]\n n$5=*&a:int [line 18]\n n$6=*&b:int [line 18]\n *&d:int =((n$5 + n$6) + 9) [line 18]\n " shape="box"] "comma_23" [label="3: Return Stmt \n n$0=*&d:int [line 19]\n *&return:int =n$0 [line 19]\n " shape="box"]
10 -> 9 ; "comma_23" -> "comma_22" ;
9 [label="9: Return Stmt \n n$0=*&d:int [line 19]\n *&return:int =n$0 [line 19]\n " shape="box"] "comma_22" [label="2: Exit comma_2 \n " color=yellow style=filled]
9 -> 8 ; "comma_21" [label="1: Start comma_2\nFormals: \nLocals: d:int b:int a:int \n DECLARE_LOCALS(&return,&d,&b,&a); [line 16]\n " color=yellow style=filled]
8 [label="8: Exit comma_2 \n " color=yellow style=filled]
7 [label="7: Start comma_2\nFormals: \nLocals: d:int b:int a:int \n DECLARE_LOCALS(&return,&d,&b,&a); [line 16]\n " color=yellow style=filled] "comma_21" -> "comma_26" ;
"comma_37" [label="7: DeclStmt \n *&a:int =9 [line 23]\n " shape="box"]
7 -> 12 ; "comma_37" -> "comma_36" ;
6 [label="6: DeclStmt \n *&a:int =9 [line 11]\n " shape="box"] "comma_36" [label="6: DeclStmt \n *&b:int =7 [line 23]\n " shape="box"]
6 -> 5 ; "comma_36" -> "comma_35" ;
5 [label="5: DeclStmt \n *&b:int =7 [line 11]\n " shape="box"] "comma_35" [label="5: DeclStmt \n *&c:int =3 [line 23]\n " shape="box"]
5 -> 4 ; "comma_35" -> "comma_34" ;
4 [label="4: DeclStmt \n n$1=*&a:int [line 12]\n *&a:int =(n$1 * 2) [line 12]\n n$2=*&a:int [line 12]\n n$3=*&a:int [line 12]\n *&a:int =(n$3 + 1) [line 12]\n *&b:int =(7 * n$3) [line 12]\n n$4=*&b:int [line 12]\n *&d:int =n$4 [line 12]\n " shape="box"] "comma_34" [label="4: DeclStmt \n n$1=*&a:int [line 24]\n *&a:int =(n$1 * 2) [line 24]\n n$2=*&a:int [line 24]\n n$3=*&a:int [line 24]\n *&a:int =(n$3 + 1) [line 24]\n *&b:int =(7 * n$3) [line 24]\n n$4=*&b:int [line 24]\n n$5=*&a:int [line 24]\n n$6=*&b:int [line 24]\n *&c:int =((n$5 + n$6) + 9) [line 24]\n n$7=*&c:int [line 24]\n n$8=*&c:int [line 24]\n *&d:int =n$8 [line 24]\n " shape="box"]
4 -> 3 ; "comma_34" -> "comma_33" ;
3 [label="3: Return Stmt \n n$0=*&d:int [line 13]\n *&return:int =n$0 [line 13]\n " shape="box"] "comma_33" [label="3: Return Stmt \n n$0=*&d:int [line 25]\n *&return:int =n$0 [line 25]\n " shape="box"]
3 -> 2 ; "comma_33" -> "comma_32" ;
2 [label="2: Exit comma_1 \n " color=yellow style=filled] "comma_32" [label="2: Exit comma_3 \n " color=yellow style=filled]
1 [label="1: Start comma_1\nFormals: \nLocals: d:int b:int a:int \n DECLARE_LOCALS(&return,&d,&b,&a); [line 10]\n " color=yellow style=filled] "comma_31" [label="1: Start comma_3\nFormals: \nLocals: d:int c:int b:int a:int \n DECLARE_LOCALS(&return,&d,&c,&b,&a); [line 22]\n " color=yellow style=filled]
1 -> 6 ; "comma_31" -> "comma_37" ;
} }

@ -1,82 +1,82 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
19 [label="19: Prune (false branch) \n n$14=*&p:int ** [line 11]\n n$15=*n$14[0]:int * [line 11]\n PRUNE((n$15 == 0), false); [line 11]\n " shape="invhouse"] "dereference_in_array_access19" [label="19: Prune (false branch) \n n$14=*&p:int ** [line 11]\n n$15=*n$14[0]:int * [line 11]\n PRUNE((n$15 == 0), false); [line 11]\n " shape="invhouse"]
19 -> 17 ; "dereference_in_array_access19" -> "dereference_in_array_access17" ;
18 [label="18: Prune (true branch) \n n$14=*&p:int ** [line 11]\n n$15=*n$14[0]:int * [line 11]\n PRUNE((n$15 != 0), true); [line 11]\n " shape="invhouse"] "dereference_in_array_access18" [label="18: Prune (true branch) \n n$14=*&p:int ** [line 11]\n n$15=*n$14[0]:int * [line 11]\n PRUNE((n$15 != 0), true); [line 11]\n " shape="invhouse"]
18 -> 17 ; "dereference_in_array_access18" -> "dereference_in_array_access17" ;
17 [label="17: + \n " ] "dereference_in_array_access17" [label="17: + \n " ]
17 -> 14 ; "dereference_in_array_access17" -> "dereference_in_array_access14" ;
16 [label="16: Prune (false branch) \n n$12=*n$11:int * [line 13]\n n$13=*n$12[1]:int [line 13]\n PRUNE((n$13 == 0), false); [line 13]\n " shape="invhouse"] "dereference_in_array_access16" [label="16: Prune (false branch) \n n$12=*n$11:int * [line 13]\n n$13=*n$12[1]:int [line 13]\n PRUNE((n$13 == 0), false); [line 13]\n " shape="invhouse"]
16 -> 13 ; "dereference_in_array_access16" -> "dereference_in_array_access13" ;
15 [label="15: Prune (true branch) \n n$12=*n$11:int * [line 13]\n n$13=*n$12[1]:int [line 13]\n PRUNE((n$13 != 0), true); [line 13]\n " shape="invhouse"] "dereference_in_array_access15" [label="15: Prune (true branch) \n n$12=*n$11:int * [line 13]\n n$13=*n$12[1]:int [line 13]\n PRUNE((n$13 != 0), true); [line 13]\n " shape="invhouse"]
15 -> 13 ; "dereference_in_array_access15" -> "dereference_in_array_access13" ;
14 [label="14: UnaryOperator \n n$11=*&p:int ** [line 13]\n " shape="box"] "dereference_in_array_access14" [label="14: UnaryOperator \n n$11=*&p:int ** [line 13]\n " shape="box"]
14 -> 15 ; "dereference_in_array_access14" -> "dereference_in_array_access15" ;
14 -> 16 ; "dereference_in_array_access14" -> "dereference_in_array_access16" ;
13 [label="13: + \n " ] "dereference_in_array_access13" [label="13: + \n " ]
13 -> 10 ; "dereference_in_array_access13" -> "dereference_in_array_access10" ;
12 [label="12: Prune (false branch) \n n$6=*&p:int ** [line 15]\n n$9=*n$8:int [line 15]\n n$10=*n$6[n$9]:int * [line 15]\n PRUNE((n$10 == 0), false); [line 15]\n " shape="invhouse"] "dereference_in_array_access12" [label="12: Prune (false branch) \n n$6=*&p:int ** [line 15]\n n$9=*n$8:int [line 15]\n n$10=*n$6[n$9]:int * [line 15]\n PRUNE((n$10 == 0), false); [line 15]\n " shape="invhouse"]
12 -> 9 ; "dereference_in_array_access12" -> "dereference_in_array_access9" ;
11 [label="11: Prune (true branch) \n n$6=*&p:int ** [line 15]\n n$9=*n$8:int [line 15]\n n$10=*n$6[n$9]:int * [line 15]\n PRUNE((n$10 != 0), true); [line 15]\n " shape="invhouse"] "dereference_in_array_access11" [label="11: Prune (true branch) \n n$6=*&p:int ** [line 15]\n n$9=*n$8:int [line 15]\n n$10=*n$6[n$9]:int * [line 15]\n PRUNE((n$10 != 0), true); [line 15]\n " shape="invhouse"]
11 -> 9 ; "dereference_in_array_access11" -> "dereference_in_array_access9" ;
10 [label="10: UnaryOperator \n n$7=*&p:int ** [line 15]\n n$8=*n$7:int * [line 15]\n " shape="box"] "dereference_in_array_access10" [label="10: UnaryOperator \n n$7=*&p:int ** [line 15]\n n$8=*n$7:int * [line 15]\n " shape="box"]
10 -> 11 ; "dereference_in_array_access10" -> "dereference_in_array_access11" ;
10 -> 12 ; "dereference_in_array_access10" -> "dereference_in_array_access12" ;
9 [label="9: + \n " ] "dereference_in_array_access9" [label="9: + \n " ]
9 -> 5 ; "dereference_in_array_access9" -> "dereference_in_array_access5" ;
8 [label="8: Prune (false branch) \n n$1=*n$0:int * [line 17]\n n$4=*n$3:int [line 17]\n n$5=*n$1[n$4]:int [line 17]\n PRUNE((n$5 == 0), false); [line 17]\n " shape="invhouse"] "dereference_in_array_access8" [label="8: Prune (false branch) \n n$1=*n$0:int * [line 17]\n n$4=*n$3:int [line 17]\n n$5=*n$1[n$4]:int [line 17]\n PRUNE((n$5 == 0), false); [line 17]\n " shape="invhouse"]
8 -> 3 ; "dereference_in_array_access8" -> "dereference_in_array_access3" ;
7 [label="7: Prune (true branch) \n n$1=*n$0:int * [line 17]\n n$4=*n$3:int [line 17]\n n$5=*n$1[n$4]:int [line 17]\n PRUNE((n$5 != 0), true); [line 17]\n " shape="invhouse"] "dereference_in_array_access7" [label="7: Prune (true branch) \n n$1=*n$0:int * [line 17]\n n$4=*n$3:int [line 17]\n n$5=*n$1[n$4]:int [line 17]\n PRUNE((n$5 != 0), true); [line 17]\n " shape="invhouse"]
7 -> 3 ; "dereference_in_array_access7" -> "dereference_in_array_access3" ;
6 [label="6: UnaryOperator \n n$2=*&p:int ** [line 17]\n n$3=*n$2:int * [line 17]\n " shape="box"] "dereference_in_array_access6" [label="6: UnaryOperator \n n$2=*&p:int ** [line 17]\n n$3=*n$2:int * [line 17]\n " shape="box"]
6 -> 7 ; "dereference_in_array_access6" -> "dereference_in_array_access7" ;
6 -> 8 ; "dereference_in_array_access6" -> "dereference_in_array_access8" ;
5 [label="5: UnaryOperator \n n$0=*&p:int ** [line 17]\n " shape="box"] "dereference_in_array_access5" [label="5: UnaryOperator \n n$0=*&p:int ** [line 17]\n " shape="box"]
5 -> 6 ; "dereference_in_array_access5" -> "dereference_in_array_access6" ;
4 [label="4: between_join_and_exit \n " shape="box"] "dereference_in_array_access4" [label="4: between_join_and_exit \n " shape="box"]
4 -> 2 ; "dereference_in_array_access4" -> "dereference_in_array_access2" ;
3 [label="3: + \n " ] "dereference_in_array_access3" [label="3: + \n " ]
3 -> 4 ; "dereference_in_array_access3" -> "dereference_in_array_access4" ;
2 [label="2: Exit dereference_in_array_access \n " color=yellow style=filled] "dereference_in_array_access2" [label="2: Exit dereference_in_array_access \n " color=yellow style=filled]
1 [label="1: Start dereference_in_array_access\nFormals: p:int **\nLocals: \n DECLARE_LOCALS(&return); [line 10]\n " color=yellow style=filled] "dereference_in_array_access1" [label="1: Start dereference_in_array_access\nFormals: p:int **\nLocals: \n DECLARE_LOCALS(&return); [line 10]\n " color=yellow style=filled]
1 -> 18 ; "dereference_in_array_access1" -> "dereference_in_array_access18" ;
1 -> 19 ; "dereference_in_array_access1" -> "dereference_in_array_access19" ;
} }

@ -1,202 +1,202 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
48 [label="48: BinaryOperatorStmt: Assign \n n$31=*&0$?%__sil_tmpSIL_temp_conditional___n$28:int [line 13]\n *&x1:int =(n$31 + 77) [line 13]\n " shape="box"] "binop_with_side_effects48" [label="48: BinaryOperatorStmt: Assign \n n$31=*&0$?%__sil_tmpSIL_temp_conditional___n$28:int [line 13]\n *&x1:int =(n$31 + 77) [line 13]\n " shape="box"]
48 -> 38 ; "binop_with_side_effects48" -> "binop_with_side_effects38" ;
48 -> 39 ; "binop_with_side_effects48" -> "binop_with_side_effects39" ;
47 [label="47: ConditinalStmt Branch \n n$30=*&z:int [line 13]\n *&0$?%__sil_tmpSIL_temp_conditional___n$28:int =n$30 [line 13]\n " shape="box"] "binop_with_side_effects47" [label="47: ConditinalStmt Branch \n n$30=*&z:int [line 13]\n *&0$?%__sil_tmpSIL_temp_conditional___n$28:int =n$30 [line 13]\n " shape="box"]
47 -> 43 ; "binop_with_side_effects47" -> "binop_with_side_effects43" ;
46 [label="46: ConditinalStmt Branch \n n$29=*&z:int [line 13]\n *&0$?%__sil_tmpSIL_temp_conditional___n$28:int =n$29 [line 13]\n " shape="box"] "binop_with_side_effects46" [label="46: ConditinalStmt Branch \n n$29=*&z:int [line 13]\n *&0$?%__sil_tmpSIL_temp_conditional___n$28:int =n$29 [line 13]\n " shape="box"]
46 -> 43 ; "binop_with_side_effects46" -> "binop_with_side_effects43" ;
45 [label="45: Prune (false branch) \n PRUNE((1 == 0), false); [line 13]\n " shape="invhouse"] "binop_with_side_effects45" [label="45: Prune (false branch) \n PRUNE((1 == 0), false); [line 13]\n " shape="invhouse"]
45 -> 47 ; "binop_with_side_effects45" -> "binop_with_side_effects47" ;
44 [label="44: Prune (true branch) \n PRUNE((1 != 0), true); [line 13]\n " shape="invhouse"] "binop_with_side_effects44" [label="44: Prune (true branch) \n PRUNE((1 != 0), true); [line 13]\n " shape="invhouse"]
44 -> 46 ; "binop_with_side_effects44" -> "binop_with_side_effects46" ;
43 [label="43: + \n " ] "binop_with_side_effects43" [label="43: + \n " ]
43 -> 48 ; "binop_with_side_effects43" -> "binop_with_side_effects48" ;
42 [label="42: BinaryOperatorStmt: Assign \n n$27=*&0$?%__sil_tmpSIL_temp_conditional___n$24:int [line 16]\n *&x2:int =(77 + n$27) [line 16]\n " shape="box"] "binop_with_side_effects42" [label="42: BinaryOperatorStmt: Assign \n n$27=*&0$?%__sil_tmpSIL_temp_conditional___n$24:int [line 16]\n *&x2:int =(77 + n$27) [line 16]\n " shape="box"]
42 -> 27 ; "binop_with_side_effects42" -> "binop_with_side_effects27" ;
42 -> 28 ; "binop_with_side_effects42" -> "binop_with_side_effects28" ;
41 [label="41: ConditinalStmt Branch \n n$26=*&z:int [line 16]\n *&0$?%__sil_tmpSIL_temp_conditional___n$24:int =n$26 [line 16]\n " shape="box"] "binop_with_side_effects41" [label="41: ConditinalStmt Branch \n n$26=*&z:int [line 16]\n *&0$?%__sil_tmpSIL_temp_conditional___n$24:int =n$26 [line 16]\n " shape="box"]
41 -> 37 ; "binop_with_side_effects41" -> "binop_with_side_effects37" ;
40 [label="40: ConditinalStmt Branch \n n$25=*&z:int [line 16]\n *&0$?%__sil_tmpSIL_temp_conditional___n$24:int =n$25 [line 16]\n " shape="box"] "binop_with_side_effects40" [label="40: ConditinalStmt Branch \n n$25=*&z:int [line 16]\n *&0$?%__sil_tmpSIL_temp_conditional___n$24:int =n$25 [line 16]\n " shape="box"]
40 -> 37 ; "binop_with_side_effects40" -> "binop_with_side_effects37" ;
39 [label="39: Prune (false branch) \n PRUNE((1 == 0), false); [line 16]\n " shape="invhouse"] "binop_with_side_effects39" [label="39: Prune (false branch) \n PRUNE((1 == 0), false); [line 16]\n " shape="invhouse"]
39 -> 41 ; "binop_with_side_effects39" -> "binop_with_side_effects41" ;
38 [label="38: Prune (true branch) \n PRUNE((1 != 0), true); [line 16]\n " shape="invhouse"] "binop_with_side_effects38" [label="38: Prune (true branch) \n PRUNE((1 != 0), true); [line 16]\n " shape="invhouse"]
38 -> 40 ; "binop_with_side_effects38" -> "binop_with_side_effects40" ;
37 [label="37: + \n " ] "binop_with_side_effects37" [label="37: + \n " ]
37 -> 42 ; "binop_with_side_effects37" -> "binop_with_side_effects42" ;
36 [label="36: BinaryOperatorStmt: Assign \n n$19=*&0$?%__sil_tmpSIL_temp_conditional___n$16:int [line 19]\n n$23=*&0$?%__sil_tmpSIL_temp_conditional___n$20:int [line 19]\n *&x3:int =(n$19 + n$23) [line 19]\n " shape="box"] "binop_with_side_effects36" [label="36: BinaryOperatorStmt: Assign \n n$19=*&0$?%__sil_tmpSIL_temp_conditional___n$16:int [line 19]\n n$23=*&0$?%__sil_tmpSIL_temp_conditional___n$20:int [line 19]\n *&x3:int =(n$19 + n$23) [line 19]\n " shape="box"]
36 -> 21 ; "binop_with_side_effects36" -> "binop_with_side_effects21" ;
36 -> 22 ; "binop_with_side_effects36" -> "binop_with_side_effects22" ;
35 [label="35: ConditinalStmt Branch \n n$22=*&z:int [line 19]\n *&0$?%__sil_tmpSIL_temp_conditional___n$20:int =n$22 [line 19]\n " shape="box"] "binop_with_side_effects35" [label="35: ConditinalStmt Branch \n n$22=*&z:int [line 19]\n *&0$?%__sil_tmpSIL_temp_conditional___n$20:int =n$22 [line 19]\n " shape="box"]
35 -> 31 ; "binop_with_side_effects35" -> "binop_with_side_effects31" ;
34 [label="34: ConditinalStmt Branch \n n$21=*&z:int [line 19]\n *&0$?%__sil_tmpSIL_temp_conditional___n$20:int =n$21 [line 19]\n " shape="box"] "binop_with_side_effects34" [label="34: ConditinalStmt Branch \n n$21=*&z:int [line 19]\n *&0$?%__sil_tmpSIL_temp_conditional___n$20:int =n$21 [line 19]\n " shape="box"]
34 -> 31 ; "binop_with_side_effects34" -> "binop_with_side_effects31" ;
33 [label="33: Prune (false branch) \n PRUNE((1 == 0), false); [line 19]\n " shape="invhouse"] "binop_with_side_effects33" [label="33: Prune (false branch) \n PRUNE((1 == 0), false); [line 19]\n " shape="invhouse"]
33 -> 35 ; "binop_with_side_effects33" -> "binop_with_side_effects35" ;
32 [label="32: Prune (true branch) \n PRUNE((1 != 0), true); [line 19]\n " shape="invhouse"] "binop_with_side_effects32" [label="32: Prune (true branch) \n PRUNE((1 != 0), true); [line 19]\n " shape="invhouse"]
32 -> 34 ; "binop_with_side_effects32" -> "binop_with_side_effects34" ;
31 [label="31: + \n " ] "binop_with_side_effects31" [label="31: + \n " ]
31 -> 36 ; "binop_with_side_effects31" -> "binop_with_side_effects36" ;
30 [label="30: ConditinalStmt Branch \n n$18=*&z:int [line 19]\n *&0$?%__sil_tmpSIL_temp_conditional___n$16:int =n$18 [line 19]\n " shape="box"] "binop_with_side_effects30" [label="30: ConditinalStmt Branch \n n$18=*&z:int [line 19]\n *&0$?%__sil_tmpSIL_temp_conditional___n$16:int =n$18 [line 19]\n " shape="box"]
30 -> 26 ; "binop_with_side_effects30" -> "binop_with_side_effects26" ;
29 [label="29: ConditinalStmt Branch \n n$17=*&z:int [line 19]\n *&0$?%__sil_tmpSIL_temp_conditional___n$16:int =n$17 [line 19]\n " shape="box"] "binop_with_side_effects29" [label="29: ConditinalStmt Branch \n n$17=*&z:int [line 19]\n *&0$?%__sil_tmpSIL_temp_conditional___n$16:int =n$17 [line 19]\n " shape="box"]
29 -> 26 ; "binop_with_side_effects29" -> "binop_with_side_effects26" ;
28 [label="28: Prune (false branch) \n PRUNE((1 == 0), false); [line 19]\n " shape="invhouse"] "binop_with_side_effects28" [label="28: Prune (false branch) \n PRUNE((1 == 0), false); [line 19]\n " shape="invhouse"]
28 -> 30 ; "binop_with_side_effects28" -> "binop_with_side_effects30" ;
27 [label="27: Prune (true branch) \n PRUNE((1 != 0), true); [line 19]\n " shape="invhouse"] "binop_with_side_effects27" [label="27: Prune (true branch) \n PRUNE((1 != 0), true); [line 19]\n " shape="invhouse"]
27 -> 29 ; "binop_with_side_effects27" -> "binop_with_side_effects29" ;
26 [label="26: + \n " ] "binop_with_side_effects26" [label="26: + \n " ]
26 -> 32 ; "binop_with_side_effects26" -> "binop_with_side_effects32" ;
26 -> 33 ; "binop_with_side_effects26" -> "binop_with_side_effects33" ;
25 [label="25: DeclStmt \n n$15=*&0$?%__sil_tmpSIL_temp_conditional___n$12:int [line 22]\n *&y1:int =(n$15 + 77) [line 22]\n " shape="box"] "binop_with_side_effects25" [label="25: DeclStmt \n n$15=*&0$?%__sil_tmpSIL_temp_conditional___n$12:int [line 22]\n *&y1:int =(n$15 + 77) [line 22]\n " shape="box"]
25 -> 15 ; "binop_with_side_effects25" -> "binop_with_side_effects15" ;
25 -> 16 ; "binop_with_side_effects25" -> "binop_with_side_effects16" ;
24 [label="24: ConditinalStmt Branch \n n$14=*&z:int [line 22]\n *&0$?%__sil_tmpSIL_temp_conditional___n$12:int =n$14 [line 22]\n " shape="box"] "binop_with_side_effects24" [label="24: ConditinalStmt Branch \n n$14=*&z:int [line 22]\n *&0$?%__sil_tmpSIL_temp_conditional___n$12:int =n$14 [line 22]\n " shape="box"]
24 -> 20 ; "binop_with_side_effects24" -> "binop_with_side_effects20" ;
23 [label="23: ConditinalStmt Branch \n n$13=*&z:int [line 22]\n *&0$?%__sil_tmpSIL_temp_conditional___n$12:int =n$13 [line 22]\n " shape="box"] "binop_with_side_effects23" [label="23: ConditinalStmt Branch \n n$13=*&z:int [line 22]\n *&0$?%__sil_tmpSIL_temp_conditional___n$12:int =n$13 [line 22]\n " shape="box"]
23 -> 20 ; "binop_with_side_effects23" -> "binop_with_side_effects20" ;
22 [label="22: Prune (false branch) \n PRUNE((1 == 0), false); [line 22]\n " shape="invhouse"] "binop_with_side_effects22" [label="22: Prune (false branch) \n PRUNE((1 == 0), false); [line 22]\n " shape="invhouse"]
22 -> 24 ; "binop_with_side_effects22" -> "binop_with_side_effects24" ;
21 [label="21: Prune (true branch) \n PRUNE((1 != 0), true); [line 22]\n " shape="invhouse"] "binop_with_side_effects21" [label="21: Prune (true branch) \n PRUNE((1 != 0), true); [line 22]\n " shape="invhouse"]
21 -> 23 ; "binop_with_side_effects21" -> "binop_with_side_effects23" ;
20 [label="20: + \n " ] "binop_with_side_effects20" [label="20: + \n " ]
20 -> 25 ; "binop_with_side_effects20" -> "binop_with_side_effects25" ;
19 [label="19: DeclStmt \n n$11=*&0$?%__sil_tmpSIL_temp_conditional___n$8:int [line 24]\n *&y2:int =(77 + n$11) [line 24]\n " shape="box"] "binop_with_side_effects19" [label="19: DeclStmt \n n$11=*&0$?%__sil_tmpSIL_temp_conditional___n$8:int [line 24]\n *&y2:int =(77 + n$11) [line 24]\n " shape="box"]
19 -> 4 ; "binop_with_side_effects19" -> "binop_with_side_effects4" ;
19 -> 5 ; "binop_with_side_effects19" -> "binop_with_side_effects5" ;
18 [label="18: ConditinalStmt Branch \n n$10=*&z:int [line 24]\n *&0$?%__sil_tmpSIL_temp_conditional___n$8:int =n$10 [line 24]\n " shape="box"] "binop_with_side_effects18" [label="18: ConditinalStmt Branch \n n$10=*&z:int [line 24]\n *&0$?%__sil_tmpSIL_temp_conditional___n$8:int =n$10 [line 24]\n " shape="box"]
18 -> 14 ; "binop_with_side_effects18" -> "binop_with_side_effects14" ;
17 [label="17: ConditinalStmt Branch \n n$9=*&z:int [line 24]\n *&0$?%__sil_tmpSIL_temp_conditional___n$8:int =n$9 [line 24]\n " shape="box"] "binop_with_side_effects17" [label="17: ConditinalStmt Branch \n n$9=*&z:int [line 24]\n *&0$?%__sil_tmpSIL_temp_conditional___n$8:int =n$9 [line 24]\n " shape="box"]
17 -> 14 ; "binop_with_side_effects17" -> "binop_with_side_effects14" ;
16 [label="16: Prune (false branch) \n PRUNE((1 == 0), false); [line 24]\n " shape="invhouse"] "binop_with_side_effects16" [label="16: Prune (false branch) \n PRUNE((1 == 0), false); [line 24]\n " shape="invhouse"]
16 -> 18 ; "binop_with_side_effects16" -> "binop_with_side_effects18" ;
15 [label="15: Prune (true branch) \n PRUNE((1 != 0), true); [line 24]\n " shape="invhouse"] "binop_with_side_effects15" [label="15: Prune (true branch) \n PRUNE((1 != 0), true); [line 24]\n " shape="invhouse"]
15 -> 17 ; "binop_with_side_effects15" -> "binop_with_side_effects17" ;
14 [label="14: + \n " ] "binop_with_side_effects14" [label="14: + \n " ]
14 -> 19 ; "binop_with_side_effects14" -> "binop_with_side_effects19" ;
13 [label="13: DeclStmt \n n$3=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 26]\n n$7=*&0$?%__sil_tmpSIL_temp_conditional___n$4:int [line 26]\n *&y3:int =(n$3 + n$7) [line 26]\n " shape="box"] "binop_with_side_effects13" [label="13: DeclStmt \n n$3=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 26]\n n$7=*&0$?%__sil_tmpSIL_temp_conditional___n$4:int [line 26]\n *&y3:int =(n$3 + n$7) [line 26]\n " shape="box"]
13 -> 2 ; "binop_with_side_effects13" -> "binop_with_side_effects2" ;
12 [label="12: ConditinalStmt Branch \n n$6=*&z:int [line 26]\n *&0$?%__sil_tmpSIL_temp_conditional___n$4:int =n$6 [line 26]\n " shape="box"] "binop_with_side_effects12" [label="12: ConditinalStmt Branch \n n$6=*&z:int [line 26]\n *&0$?%__sil_tmpSIL_temp_conditional___n$4:int =n$6 [line 26]\n " shape="box"]
12 -> 8 ; "binop_with_side_effects12" -> "binop_with_side_effects8" ;
11 [label="11: ConditinalStmt Branch \n n$5=*&z:int [line 26]\n *&0$?%__sil_tmpSIL_temp_conditional___n$4:int =n$5 [line 26]\n " shape="box"] "binop_with_side_effects11" [label="11: ConditinalStmt Branch \n n$5=*&z:int [line 26]\n *&0$?%__sil_tmpSIL_temp_conditional___n$4:int =n$5 [line 26]\n " shape="box"]
11 -> 8 ; "binop_with_side_effects11" -> "binop_with_side_effects8" ;
10 [label="10: Prune (false branch) \n PRUNE((1 == 0), false); [line 26]\n " shape="invhouse"] "binop_with_side_effects10" [label="10: Prune (false branch) \n PRUNE((1 == 0), false); [line 26]\n " shape="invhouse"]
10 -> 12 ; "binop_with_side_effects10" -> "binop_with_side_effects12" ;
9 [label="9: Prune (true branch) \n PRUNE((1 != 0), true); [line 26]\n " shape="invhouse"] "binop_with_side_effects9" [label="9: Prune (true branch) \n PRUNE((1 != 0), true); [line 26]\n " shape="invhouse"]
9 -> 11 ; "binop_with_side_effects9" -> "binop_with_side_effects11" ;
8 [label="8: + \n " ] "binop_with_side_effects8" [label="8: + \n " ]
8 -> 13 ; "binop_with_side_effects8" -> "binop_with_side_effects13" ;
7 [label="7: ConditinalStmt Branch \n n$2=*&z:int [line 26]\n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =n$2 [line 26]\n " shape="box"] "binop_with_side_effects7" [label="7: ConditinalStmt Branch \n n$2=*&z:int [line 26]\n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =n$2 [line 26]\n " shape="box"]
7 -> 3 ; "binop_with_side_effects7" -> "binop_with_side_effects3" ;
6 [label="6: ConditinalStmt Branch \n n$1=*&z:int [line 26]\n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =n$1 [line 26]\n " shape="box"] "binop_with_side_effects6" [label="6: ConditinalStmt Branch \n n$1=*&z:int [line 26]\n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =n$1 [line 26]\n " shape="box"]
6 -> 3 ; "binop_with_side_effects6" -> "binop_with_side_effects3" ;
5 [label="5: Prune (false branch) \n PRUNE((1 == 0), false); [line 26]\n " shape="invhouse"] "binop_with_side_effects5" [label="5: Prune (false branch) \n PRUNE((1 == 0), false); [line 26]\n " shape="invhouse"]
5 -> 7 ; "binop_with_side_effects5" -> "binop_with_side_effects7" ;
4 [label="4: Prune (true branch) \n PRUNE((1 != 0), true); [line 26]\n " shape="invhouse"] "binop_with_side_effects4" [label="4: Prune (true branch) \n PRUNE((1 != 0), true); [line 26]\n " shape="invhouse"]
4 -> 6 ; "binop_with_side_effects4" -> "binop_with_side_effects6" ;
3 [label="3: + \n " ] "binop_with_side_effects3" [label="3: + \n " ]
3 -> 9 ; "binop_with_side_effects3" -> "binop_with_side_effects9" ;
3 -> 10 ; "binop_with_side_effects3" -> "binop_with_side_effects10" ;
2 [label="2: Exit binop_with_side_effects \n " color=yellow style=filled] "binop_with_side_effects2" [label="2: Exit binop_with_side_effects \n " color=yellow style=filled]
1 [label="1: Start binop_with_side_effects\nFormals: z:int \nLocals: y3:int 0$?%__sil_tmpSIL_temp_conditional___n$0:int 0$?%__sil_tmpSIL_temp_conditional___n$4:int y2:int 0$?%__sil_tmpSIL_temp_conditional___n$8:int y1:int 0$?%__sil_tmpSIL_temp_conditional___n$12:int 0$?%__sil_tmpSIL_temp_conditional___n$16:int 0$?%__sil_tmpSIL_temp_conditional___n$20:int x3:int 0$?%__sil_tmpSIL_temp_conditional___n$24:int x2:int 0$?%__sil_tmpSIL_temp_conditional___n$28:int x1:int \n DECLARE_LOCALS(&return,&y3,&0$?%__sil_tmpSIL_temp_conditional___n$0,&0$?%__sil_tmpSIL_temp_conditional___n$4,&y2,&0$?%__sil_tmpSIL_temp_conditional___n$8,&y1,&0$?%__sil_tmpSIL_temp_conditional___n$12,&0$?%__sil_tmpSIL_temp_conditional___n$16,&0$?%__sil_tmpSIL_temp_conditional___n$20,&x3,&0$?%__sil_tmpSIL_temp_conditional___n$24,&x2,&0$?%__sil_tmpSIL_temp_conditional___n$28,&x1); [line 10]\n " color=yellow style=filled] "binop_with_side_effects1" [label="1: Start binop_with_side_effects\nFormals: z:int \nLocals: y3:int 0$?%__sil_tmpSIL_temp_conditional___n$0:int 0$?%__sil_tmpSIL_temp_conditional___n$4:int y2:int 0$?%__sil_tmpSIL_temp_conditional___n$8:int y1:int 0$?%__sil_tmpSIL_temp_conditional___n$12:int 0$?%__sil_tmpSIL_temp_conditional___n$16:int 0$?%__sil_tmpSIL_temp_conditional___n$20:int x3:int 0$?%__sil_tmpSIL_temp_conditional___n$24:int x2:int 0$?%__sil_tmpSIL_temp_conditional___n$28:int x1:int \n DECLARE_LOCALS(&return,&y3,&0$?%__sil_tmpSIL_temp_conditional___n$0,&0$?%__sil_tmpSIL_temp_conditional___n$4,&y2,&0$?%__sil_tmpSIL_temp_conditional___n$8,&y1,&0$?%__sil_tmpSIL_temp_conditional___n$12,&0$?%__sil_tmpSIL_temp_conditional___n$16,&0$?%__sil_tmpSIL_temp_conditional___n$20,&x3,&0$?%__sil_tmpSIL_temp_conditional___n$24,&x2,&0$?%__sil_tmpSIL_temp_conditional___n$28,&x1); [line 10]\n " color=yellow style=filled]
1 -> 44 ; "binop_with_side_effects1" -> "binop_with_side_effects44" ;
1 -> 45 ; "binop_with_side_effects1" -> "binop_with_side_effects45" ;
} }

@ -1,243 +1,243 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
58 [label="58: BinaryOperatorStmt: Assign \n n$9=*&0$?%__sil_tmpSIL_temp_conditional___n$5:int [line 23]\n *&y:int =n$9 [line 23]\n " shape="box"] "foo37" [label="37: DeclStmt \n *&x:int =5 [line 11]\n " shape="box"]
58 -> 42 ; "foo37" -> "foo31" ;
58 -> 43 ; "foo37" -> "foo32" ;
57 [label="57: ConditinalStmt Branch \n n$8=*&x:int [line 23]\n *&x:int =(n$8 - 1) [line 23]\n *&0$?%__sil_tmpSIL_temp_conditional___n$5:int =n$8 [line 23]\n " shape="box"] "foo36" [label="36: BinaryOperatorStmt: Assign \n *&x:int =0 [line 13]\n " shape="box"]
57 -> 52 ; "foo36" -> "foo30" ;
56 [label="56: ConditinalStmt Branch \n n$7=*&x:int [line 23]\n *&x:int =(n$7 + 1) [line 23]\n *&0$?%__sil_tmpSIL_temp_conditional___n$5:int =(n$7 + 1) [line 23]\n " shape="box"] "foo35" [label="35: Prune (false branch) \n PRUNE(((7 < n$10) == 0), false); [line 12]\n " shape="invhouse"]
56 -> 52 ; "foo35" -> "foo30" ;
55 [label="55: Prune (false branch) \n PRUNE(((n$6 > 1) == 0), false); [line 23]\n " shape="invhouse"] "foo34" [label="34: Prune (true branch) \n PRUNE(((7 < n$10) != 0), true); [line 12]\n " shape="invhouse"]
55 -> 57 ; "foo34" -> "foo36" ;
54 [label="54: Prune (true branch) \n PRUNE(((n$6 > 1) != 0), true); [line 23]\n " shape="invhouse"] "foo33" [label="33: BinaryOperatorStmt: LT \n n$10=*&x:int [line 12]\n *&x:int =(n$10 + 1) [line 12]\n " shape="box"]
54 -> 56 ; "foo33" -> "foo34" ;
53 [label="53: BinaryOperatorStmt: GT \n *&x:int =1 [line 23]\n n$6=*&x:int [line 23]\n " shape="box"] "foo33" -> "foo35" ;
"foo32" [label="32: Prune (false branch) \n PRUNE(((3 < 4) == 0), false); [line 12]\n " shape="invhouse"]
53 -> 54 ; "foo32" -> "foo33" ;
53 -> 55 ; "foo31" [label="31: Prune (true branch) \n PRUNE(((3 < 4) != 0), true); [line 12]\n " shape="invhouse"]
52 [label="52: + \n " ]
52 -> 58 ; "foo31" -> "foo36" ;
51 [label="51: Return Stmt \n n$4=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 24]\n *&return:int =(0 + n$4) [line 24]\n " shape="box"] "foo30" [label="30: + \n " ]
51 -> 39 ; "foo30" -> "foo29" ;
50 [label="50: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =0 [line 24]\n " shape="box"] "foo29" [label="29: DeclStmt \n *&y:int =19 [line 15]\n " shape="box"]
50 -> 40 ; "foo29" -> "foo21" ;
49 [label="49: ConditinalStmt Branch \n *&x:int =1 [line 24]\n n$3=*&x:int [line 24]\n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =n$3 [line 24]\n " shape="box"] "foo29" -> "foo22" ;
"foo28" [label="28: DeclStmt \n n$9=*&0$?%__sil_tmpSIL_temp_conditional___n$6:int [line 16]\n *&n:int =n$9 [line 16]\n " shape="box"]
49 -> 40 ; "foo28" -> "foo10" ;
48 [label="48: Prune (false branch) \n PRUNE(((n$2 > 1) == 0), false); [line 24]\n " shape="invhouse"] "foo28" -> "foo11" ;
"foo27" [label="27: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$6:int =2 [line 16]\n " shape="box"]
48 -> 50 ; "foo27" -> "foo20" ;
47 [label="47: Prune (true branch) \n PRUNE(((n$2 > 1) != 0), true); [line 24]\n " shape="invhouse"] "foo26" [label="26: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$6:int =1 [line 16]\n " shape="box"]
47 -> 49 ; "foo26" -> "foo20" ;
46 [label="46: BinaryOperatorStmt: GT \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$1:int [line 24]\n " shape="box"] "foo25" [label="25: Prune (false branch) \n PRUNE(((7 < (n$7 - n$8)) == 0), false); [line 16]\n " shape="invhouse"]
46 -> 47 ; "foo25" -> "foo27" ;
46 -> 48 ; "foo24" [label="24: Prune (true branch) \n PRUNE(((7 < (n$7 - n$8)) != 0), true); [line 16]\n " shape="invhouse"]
45 [label="45: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$1:int =2 [line 24]\n " shape="box"]
45 -> 41 ; "foo24" -> "foo26" ;
44 [label="44: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$1:int =1 [line 24]\n " shape="box"] "foo23" [label="23: BinaryOperatorStmt: LT \n n$7=*&x:int [line 16]\n *&x:int =(n$7 + 1) [line 16]\n n$8=*&y:int [line 16]\n " shape="box"]
44 -> 41 ; "foo23" -> "foo24" ;
43 [label="43: Prune (false branch) \n PRUNE(((3 > 4) == 0), false); [line 24]\n " shape="invhouse"] "foo23" -> "foo25" ;
"foo22" [label="22: Prune (false branch) \n PRUNE(((3 < 4) == 0), false); [line 16]\n " shape="invhouse"]
43 -> 45 ; "foo22" -> "foo23" ;
42 [label="42: Prune (true branch) \n PRUNE(((3 > 4) != 0), true); [line 24]\n " shape="invhouse"] "foo21" [label="21: Prune (true branch) \n PRUNE(((3 < 4) != 0), true); [line 16]\n " shape="invhouse"]
42 -> 44 ; "foo21" -> "foo26" ;
41 [label="41: + \n " ] "foo20" [label="20: + \n " ]
41 -> 46 ; "foo20" -> "foo28" ;
40 [label="40: + \n " ] "foo19" [label="19: BinaryOperatorStmt: Assign \n n$5=*&0$?%__sil_tmpSIL_temp_conditional___n$2:int [line 17]\n *&n:int =n$5 [line 17]\n " shape="box"]
40 -> 51 ; "foo19" -> "foo4" ;
39 [label="39: Exit bar \n " color=yellow style=filled] "foo19" -> "foo5" ;
"foo18" [label="18: ConditinalStmt Branch \n n$4=*&0$?%__sil_tmpSIL_temp_conditional___n$3:int [line 17]\n *&0$?%__sil_tmpSIL_temp_conditional___n$2:int =n$4 [line 17]\n " shape="box"]
38 [label="38: Start bar\nFormals: \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:int 0$?%__sil_tmpSIL_temp_conditional___n$1:int 0$?%__sil_tmpSIL_temp_conditional___n$5:int y:int x:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0,&0$?%__sil_tmpSIL_temp_conditional___n$1,&0$?%__sil_tmpSIL_temp_conditional___n$5,&y,&x); [line 21]\n " color=yellow style=filled] "foo18" -> "foo9" ;
"foo17" [label="17: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int =2 [line 17]\n " shape="box"]
38 -> 53 ; "foo17" -> "foo13" ;
37 [label="37: DeclStmt \n *&x:int =5 [line 11]\n " shape="box"] "foo16" [label="16: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int =1 [line 17]\n " shape="box"]
37 -> 31 ; "foo16" -> "foo13" ;
37 -> 32 ; "foo15" [label="15: Prune (false branch) \n PRUNE(((5 > 4) == 0), false); [line 17]\n " shape="invhouse"]
36 [label="36: BinaryOperatorStmt: Assign \n *&x:int =0 [line 13]\n " shape="box"]
36 -> 30 ; "foo15" -> "foo17" ;
35 [label="35: Prune (false branch) \n PRUNE(((7 < n$10) == 0), false); [line 12]\n " shape="invhouse"] "foo14" [label="14: Prune (true branch) \n PRUNE(((5 > 4) != 0), true); [line 17]\n " shape="invhouse"]
35 -> 30 ; "foo14" -> "foo16" ;
34 [label="34: Prune (true branch) \n PRUNE(((7 < n$10) != 0), true); [line 12]\n " shape="invhouse"] "foo13" [label="13: + \n " ]
34 -> 36 ; "foo13" -> "foo18" ;
33 [label="33: BinaryOperatorStmt: LT \n n$10=*&x:int [line 12]\n *&x:int =(n$10 + 1) [line 12]\n " shape="box"] "foo12" [label="12: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$2:int =1 [line 17]\n " shape="box"]
33 -> 34 ; "foo12" -> "foo9" ;
33 -> 35 ; "foo11" [label="11: Prune (false branch) \n PRUNE(((2 < 1) == 0), false); [line 17]\n " shape="invhouse"]
32 [label="32: Prune (false branch) \n PRUNE(((3 < 4) == 0), false); [line 12]\n " shape="invhouse"]
32 -> 33 ; "foo11" -> "foo14" ;
31 [label="31: Prune (true branch) \n PRUNE(((3 < 4) != 0), true); [line 12]\n " shape="invhouse"] "foo11" -> "foo15" ;
"foo10" [label="10: Prune (true branch) \n PRUNE(((2 < 1) != 0), true); [line 17]\n " shape="invhouse"]
31 -> 36 ; "foo10" -> "foo12" ;
30 [label="30: + \n " ] "foo9" [label="9: + \n " ]
30 -> 29 ; "foo9" -> "foo19" ;
29 [label="29: DeclStmt \n *&y:int =19 [line 15]\n " shape="box"] "foo8" [label="8: Return Stmt \n n$1=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 18]\n *&return:int =(0 + n$1) [line 18]\n " shape="box"]
29 -> 21 ; "foo8" -> "foo2" ;
29 -> 22 ; "foo7" [label="7: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =0 [line 18]\n " shape="box"]
28 [label="28: DeclStmt \n n$9=*&0$?%__sil_tmpSIL_temp_conditional___n$6:int [line 16]\n *&n:int =n$9 [line 16]\n " shape="box"]
28 -> 10 ; "foo7" -> "foo3" ;
28 -> 11 ; "foo6" [label="6: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =1 [line 18]\n " shape="box"]
27 [label="27: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$6:int =2 [line 16]\n " shape="box"]
27 -> 20 ; "foo6" -> "foo3" ;
26 [label="26: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$6:int =1 [line 16]\n " shape="box"] "foo5" [label="5: Prune (false branch) \n PRUNE(((7 > 9) == 0), false); [line 18]\n " shape="invhouse"]
26 -> 20 ; "foo5" -> "foo7" ;
25 [label="25: Prune (false branch) \n PRUNE(((7 < (n$7 - n$8)) == 0), false); [line 16]\n " shape="invhouse"] "foo4" [label="4: Prune (true branch) \n PRUNE(((7 > 9) != 0), true); [line 18]\n " shape="invhouse"]
25 -> 27 ; "foo4" -> "foo6" ;
24 [label="24: Prune (true branch) \n PRUNE(((7 < (n$7 - n$8)) != 0), true); [line 16]\n " shape="invhouse"] "foo3" [label="3: + \n " ]
24 -> 26 ; "foo3" -> "foo8" ;
23 [label="23: BinaryOperatorStmt: LT \n n$7=*&x:int [line 16]\n *&x:int =(n$7 + 1) [line 16]\n n$8=*&y:int [line 16]\n " shape="box"] "foo2" [label="2: Exit foo \n " color=yellow style=filled]
23 -> 24 ; "foo1" [label="1: Start foo\nFormals: \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:int 0$?%__sil_tmpSIL_temp_conditional___n$2:int 0$?%__sil_tmpSIL_temp_conditional___n$3:int n:int 0$?%__sil_tmpSIL_temp_conditional___n$6:int y:int x:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0,&0$?%__sil_tmpSIL_temp_conditional___n$2,&0$?%__sil_tmpSIL_temp_conditional___n$3,&n,&0$?%__sil_tmpSIL_temp_conditional___n$6,&y,&x); [line 10]\n " color=yellow style=filled]
23 -> 25 ;
22 [label="22: Prune (false branch) \n PRUNE(((3 < 4) == 0), false); [line 16]\n " shape="invhouse"]
22 -> 23 ; "foo1" -> "foo37" ;
21 [label="21: Prune (true branch) \n PRUNE(((3 < 4) != 0), true); [line 16]\n " shape="invhouse"] "bar21" [label="21: BinaryOperatorStmt: Assign \n n$9=*&0$?%__sil_tmpSIL_temp_conditional___n$5:int [line 23]\n *&y:int =n$9 [line 23]\n " shape="box"]
21 -> 26 ; "bar21" -> "bar5" ;
20 [label="20: + \n " ] "bar21" -> "bar6" ;
"bar20" [label="20: ConditinalStmt Branch \n n$8=*&x:int [line 23]\n *&x:int =(n$8 - 1) [line 23]\n *&0$?%__sil_tmpSIL_temp_conditional___n$5:int =n$8 [line 23]\n " shape="box"]
20 -> 28 ; "bar20" -> "bar15" ;
19 [label="19: BinaryOperatorStmt: Assign \n n$5=*&0$?%__sil_tmpSIL_temp_conditional___n$2:int [line 17]\n *&n:int =n$5 [line 17]\n " shape="box"] "bar19" [label="19: ConditinalStmt Branch \n n$7=*&x:int [line 23]\n *&x:int =(n$7 + 1) [line 23]\n *&0$?%__sil_tmpSIL_temp_conditional___n$5:int =(n$7 + 1) [line 23]\n " shape="box"]
19 -> 4 ; "bar19" -> "bar15" ;
19 -> 5 ; "bar18" [label="18: Prune (false branch) \n PRUNE(((n$6 > 1) == 0), false); [line 23]\n " shape="invhouse"]
18 [label="18: ConditinalStmt Branch \n n$4=*&0$?%__sil_tmpSIL_temp_conditional___n$3:int [line 17]\n *&0$?%__sil_tmpSIL_temp_conditional___n$2:int =n$4 [line 17]\n " shape="box"]
18 -> 9 ; "bar18" -> "bar20" ;
17 [label="17: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int =2 [line 17]\n " shape="box"] "bar17" [label="17: Prune (true branch) \n PRUNE(((n$6 > 1) != 0), true); [line 23]\n " shape="invhouse"]
17 -> 13 ; "bar17" -> "bar19" ;
16 [label="16: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int =1 [line 17]\n " shape="box"] "bar16" [label="16: BinaryOperatorStmt: GT \n *&x:int =1 [line 23]\n n$6=*&x:int [line 23]\n " shape="box"]
16 -> 13 ; "bar16" -> "bar17" ;
15 [label="15: Prune (false branch) \n PRUNE(((5 > 4) == 0), false); [line 17]\n " shape="invhouse"] "bar16" -> "bar18" ;
"bar15" [label="15: + \n " ]
15 -> 17 ; "bar15" -> "bar21" ;
14 [label="14: Prune (true branch) \n PRUNE(((5 > 4) != 0), true); [line 17]\n " shape="invhouse"] "bar14" [label="14: Return Stmt \n n$4=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 24]\n *&return:int =(0 + n$4) [line 24]\n " shape="box"]
14 -> 16 ; "bar14" -> "bar2" ;
13 [label="13: + \n " ] "bar13" [label="13: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =0 [line 24]\n " shape="box"]
13 -> 18 ; "bar13" -> "bar3" ;
12 [label="12: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$2:int =1 [line 17]\n " shape="box"] "bar12" [label="12: ConditinalStmt Branch \n *&x:int =1 [line 24]\n n$3=*&x:int [line 24]\n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =n$3 [line 24]\n " shape="box"]
12 -> 9 ; "bar12" -> "bar3" ;
11 [label="11: Prune (false branch) \n PRUNE(((2 < 1) == 0), false); [line 17]\n " shape="invhouse"] "bar11" [label="11: Prune (false branch) \n PRUNE(((n$2 > 1) == 0), false); [line 24]\n " shape="invhouse"]
11 -> 14 ; "bar11" -> "bar13" ;
11 -> 15 ; "bar10" [label="10: Prune (true branch) \n PRUNE(((n$2 > 1) != 0), true); [line 24]\n " shape="invhouse"]
10 [label="10: Prune (true branch) \n PRUNE(((2 < 1) != 0), true); [line 17]\n " shape="invhouse"]
10 -> 12 ; "bar10" -> "bar12" ;
9 [label="9: + \n " ] "bar9" [label="9: BinaryOperatorStmt: GT \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$1:int [line 24]\n " shape="box"]
9 -> 19 ; "bar9" -> "bar10" ;
8 [label="8: Return Stmt \n n$1=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 18]\n *&return:int =(0 + n$1) [line 18]\n " shape="box"] "bar9" -> "bar11" ;
"bar8" [label="8: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$1:int =2 [line 24]\n " shape="box"]
8 -> 2 ; "bar8" -> "bar4" ;
7 [label="7: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =0 [line 18]\n " shape="box"] "bar7" [label="7: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$1:int =1 [line 24]\n " shape="box"]
7 -> 3 ; "bar7" -> "bar4" ;
6 [label="6: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =1 [line 18]\n " shape="box"] "bar6" [label="6: Prune (false branch) \n PRUNE(((3 > 4) == 0), false); [line 24]\n " shape="invhouse"]
6 -> 3 ; "bar6" -> "bar8" ;
5 [label="5: Prune (false branch) \n PRUNE(((7 > 9) == 0), false); [line 18]\n " shape="invhouse"] "bar5" [label="5: Prune (true branch) \n PRUNE(((3 > 4) != 0), true); [line 24]\n " shape="invhouse"]
5 -> 7 ; "bar5" -> "bar7" ;
4 [label="4: Prune (true branch) \n PRUNE(((7 > 9) != 0), true); [line 18]\n " shape="invhouse"] "bar4" [label="4: + \n " ]
4 -> 6 ; "bar4" -> "bar9" ;
3 [label="3: + \n " ] "bar3" [label="3: + \n " ]
3 -> 8 ; "bar3" -> "bar14" ;
2 [label="2: Exit foo \n " color=yellow style=filled] "bar2" [label="2: Exit bar \n " color=yellow style=filled]
1 [label="1: Start foo\nFormals: \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:int 0$?%__sil_tmpSIL_temp_conditional___n$2:int 0$?%__sil_tmpSIL_temp_conditional___n$3:int n:int 0$?%__sil_tmpSIL_temp_conditional___n$6:int y:int x:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0,&0$?%__sil_tmpSIL_temp_conditional___n$2,&0$?%__sil_tmpSIL_temp_conditional___n$3,&n,&0$?%__sil_tmpSIL_temp_conditional___n$6,&y,&x); [line 10]\n " color=yellow style=filled] "bar1" [label="1: Start bar\nFormals: \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:int 0$?%__sil_tmpSIL_temp_conditional___n$1:int 0$?%__sil_tmpSIL_temp_conditional___n$5:int y:int x:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0,&0$?%__sil_tmpSIL_temp_conditional___n$1,&0$?%__sil_tmpSIL_temp_conditional___n$5,&y,&x); [line 21]\n " color=yellow style=filled]
1 -> 37 ; "bar1" -> "bar16" ;
} }

@ -1,266 +1,266 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
66 [label="66: Return Stmt \n n$3=*&0$?%__sil_tmpSIL_temp_conditional___n$2:int [line 35]\n *&return:int =n$3 [line 35]\n " shape="box"] "test310" [label="10: DeclStmt \n n$3=*&0$?%__sil_tmpSIL_temp_conditional___n$2:int [line 22]\n *&x:int =n$3 [line 22]\n " shape="box"]
66 -> 59 ; "test310" -> "test33" ;
65 [label="65: BinaryConditinalStmt Init \n n$0=_fun_test2(2:int ) [line 35]\n n$1=_fun_test2((2 + n$0):int ) [line 35]\n " shape="box"] "test39" [label="9: BinaryConditinalStmt Init \n n$1=*&b:int [line 22]\n " shape="box"]
65 -> 61 ; "test39" -> "test35" ;
65 -> 62 ; "test39" -> "test36" ;
64 [label="64: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$2:int =2 [line 35]\n " shape="box"] "test38" [label="8: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$2:int =1 [line 22]\n " shape="box"]
64 -> 60 ; "test38" -> "test34" ;
63 [label="63: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$2:int =n$1 [line 35]\n " shape="box"] "test37" [label="7: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$2:int =n$1 [line 22]\n " shape="box"]
63 -> 60 ; "test37" -> "test34" ;
62 [label="62: Prune (false branch) \n PRUNE((n$1 == 0), false); [line 35]\n " shape="invhouse"] "test36" [label="6: Prune (false branch) \n PRUNE((n$1 == 0), false); [line 22]\n " shape="invhouse"]
62 -> 64 ; "test36" -> "test38" ;
61 [label="61: Prune (true branch) \n PRUNE((n$1 != 0), true); [line 35]\n " shape="invhouse"] "test35" [label="5: Prune (true branch) \n PRUNE((n$1 != 0), true); [line 22]\n " shape="invhouse"]
61 -> 63 ; "test35" -> "test37" ;
60 [label="60: + \n " ] "test34" [label="4: + \n " ]
60 -> 66 ; "test34" -> "test310" ;
59 [label="59: Exit test7 \n " color=yellow style=filled] "test33" [label="3: Return Stmt \n n$0=*&x:int [line 23]\n *&return:int =n$0 [line 23]\n " shape="box"]
58 [label="58: Start test7\nFormals: b:int \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$2:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$2); [line 35]\n " color=yellow style=filled] "test33" -> "test32" ;
"test32" [label="2: Exit test3 \n " color=yellow style=filled]
58 -> 65 ; "test31" [label="1: Start test3\nFormals: b:int \nLocals: x:int 0$?%__sil_tmpSIL_temp_conditional___n$2:int \n DECLARE_LOCALS(&return,&x,&0$?%__sil_tmpSIL_temp_conditional___n$2); [line 21]\n " color=yellow style=filled]
57 [label="57: DeclStmt \n n$4=*&0$?%__sil_tmpSIL_temp_conditional___n$1:int [line 31]\n *&z:int =n$4 [line 31]\n " shape="box"]
57 -> 51 ; "test31" -> "test39" ;
56 [label="56: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$1:int =0 [line 31]\n " shape="box"] "test59" [label="9: Return Stmt \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$1:int [line 28]\n *&return:int =n$2 [line 28]\n " shape="box"]
56 -> 52 ; "test59" -> "test52" ;
55 [label="55: ConditinalStmt Branch \n n$2=*&p:int * [line 31]\n n$3=*n$2:int [line 31]\n *&0$?%__sil_tmpSIL_temp_conditional___n$1:int =n$3 [line 31]\n " shape="box"] "test58" [label="8: BinaryConditinalStmt Init \n n$0=*&b:int [line 28]\n " shape="box"]
55 -> 52 ; "test58" -> "test54" ;
54 [label="54: Prune (false branch) \n PRUNE((1 == 0), false); [line 31]\n " shape="invhouse"] "test58" -> "test55" ;
"test57" [label="7: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$1:int =1 [line 28]\n " shape="box"]
54 -> 56 ; "test57" -> "test53" ;
53 [label="53: Prune (true branch) \n PRUNE((1 != 0), true); [line 31]\n " shape="invhouse"] "test56" [label="6: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$1:int =n$0 [line 28]\n " shape="box"]
53 -> 55 ; "test56" -> "test53" ;
52 [label="52: + \n " ] "test55" [label="5: Prune (false branch) \n PRUNE((n$0 == 0), false); [line 28]\n " shape="invhouse"]
52 -> 57 ; "test55" -> "test57" ;
51 [label="51: Return Stmt \n n$0=*&z:int [line 32]\n *&return:int =n$0 [line 32]\n " shape="box"] "test54" [label="4: Prune (true branch) \n PRUNE((n$0 != 0), true); [line 28]\n " shape="invhouse"]
51 -> 50 ; "test54" -> "test56" ;
50 [label="50: Exit test6 \n " color=yellow style=filled] "test53" [label="3: + \n " ]
49 [label="49: Start test6\nFormals: p:int *\nLocals: z:int 0$?%__sil_tmpSIL_temp_conditional___n$1:int \n DECLARE_LOCALS(&return,&z,&0$?%__sil_tmpSIL_temp_conditional___n$1); [line 30]\n " color=yellow style=filled] "test53" -> "test59" ;
"test52" [label="2: Exit test5 \n " color=yellow style=filled]
49 -> 53 ; "test51" [label="1: Start test5\nFormals: b:int \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$1:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$1); [line 28]\n " color=yellow style=filled]
49 -> 54 ;
48 [label="48: Return Stmt \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$1:int [line 28]\n *&return:int =n$2 [line 28]\n " shape="box"]
48 -> 41 ; "test51" -> "test58" ;
47 [label="47: BinaryConditinalStmt Init \n n$0=*&b:int [line 28]\n " shape="box"] "test49" [label="9: Return Stmt \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$1:int [line 26]\n n$3=_fun_test2(n$2:int ) [line 26]\n *&return:int =n$3 [line 26]\n " shape="box"]
47 -> 43 ; "test49" -> "test42" ;
47 -> 44 ; "test48" [label="8: BinaryConditinalStmt Init \n n$0=*&b:int [line 26]\n " shape="box"]
46 [label="46: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$1:int =1 [line 28]\n " shape="box"]
46 -> 42 ; "test48" -> "test44" ;
45 [label="45: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$1:int =n$0 [line 28]\n " shape="box"] "test48" -> "test45" ;
"test47" [label="7: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$1:int =1 [line 26]\n " shape="box"]
45 -> 42 ; "test47" -> "test43" ;
44 [label="44: Prune (false branch) \n PRUNE((n$0 == 0), false); [line 28]\n " shape="invhouse"] "test46" [label="6: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$1:int =n$0 [line 26]\n " shape="box"]
44 -> 46 ; "test46" -> "test43" ;
43 [label="43: Prune (true branch) \n PRUNE((n$0 != 0), true); [line 28]\n " shape="invhouse"] "test45" [label="5: Prune (false branch) \n PRUNE((n$0 == 0), false); [line 26]\n " shape="invhouse"]
43 -> 45 ; "test45" -> "test47" ;
42 [label="42: + \n " ] "test44" [label="4: Prune (true branch) \n PRUNE((n$0 != 0), true); [line 26]\n " shape="invhouse"]
42 -> 48 ; "test44" -> "test46" ;
41 [label="41: Exit test5 \n " color=yellow style=filled] "test43" [label="3: + \n " ]
40 [label="40: Start test5\nFormals: b:int \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$1:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$1); [line 28]\n " color=yellow style=filled] "test43" -> "test49" ;
"test42" [label="2: Exit test4 \n " color=yellow style=filled]
40 -> 47 ; "test41" [label="1: Start test4\nFormals: b:int \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$1:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$1); [line 26]\n " color=yellow style=filled]
39 [label="39: Return Stmt \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$1:int [line 26]\n n$3=_fun_test2(n$2:int ) [line 26]\n *&return:int =n$3 [line 26]\n " shape="box"]
39 -> 32 ; "test41" -> "test48" ;
38 [label="38: BinaryConditinalStmt Init \n n$0=*&b:int [line 26]\n " shape="box"] "test23" [label="3: Return Stmt \n n$0=*&x:int [line 12]\n *&return:int =n$0 [line 12]\n " shape="box"]
38 -> 34 ; "test23" -> "test22" ;
38 -> 35 ; "test22" [label="2: Exit test2 \n " color=yellow style=filled]
37 [label="37: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$1:int =1 [line 26]\n " shape="box"]
37 -> 33 ; "test21" [label="1: Start test2\nFormals: x:int \nLocals: \n DECLARE_LOCALS(&return); [line 12]\n " color=yellow style=filled]
36 [label="36: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$1:int =n$0 [line 26]\n " shape="box"]
36 -> 33 ; "test21" -> "test23" ;
35 [label="35: Prune (false branch) \n PRUNE((n$0 == 0), false); [line 26]\n " shape="invhouse"] "test19" [label="9: DeclStmt \n n$4=*&0$?%__sil_tmpSIL_temp_conditional___n$1:int [line 17]\n *&x:int =n$4 [line 17]\n " shape="box"]
35 -> 37 ; "test19" -> "test13" ;
34 [label="34: Prune (true branch) \n PRUNE((n$0 != 0), true); [line 26]\n " shape="invhouse"] "test18" [label="8: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$1:int =1 [line 17]\n " shape="box"]
34 -> 36 ; "test18" -> "test14" ;
33 [label="33: + \n " ] "test17" [label="7: ConditinalStmt Branch \n n$3=*&b:int [line 17]\n *&0$?%__sil_tmpSIL_temp_conditional___n$1:int =n$3 [line 17]\n " shape="box"]
33 -> 39 ; "test17" -> "test14" ;
32 [label="32: Exit test4 \n " color=yellow style=filled] "test16" [label="6: Prune (false branch) \n n$2=*&b:int [line 17]\n PRUNE((n$2 == 0), false); [line 17]\n " shape="invhouse"]
31 [label="31: Start test4\nFormals: b:int \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$1:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$1); [line 26]\n " color=yellow style=filled] "test16" -> "test18" ;
"test15" [label="5: Prune (true branch) \n n$2=*&b:int [line 17]\n PRUNE((n$2 != 0), true); [line 17]\n " shape="invhouse"]
31 -> 38 ; "test15" -> "test17" ;
30 [label="30: DeclStmt \n n$3=*&0$?%__sil_tmpSIL_temp_conditional___n$2:int [line 22]\n *&x:int =n$3 [line 22]\n " shape="box"] "test14" [label="4: + \n " ]
30 -> 23 ; "test14" -> "test19" ;
29 [label="29: BinaryConditinalStmt Init \n n$1=*&b:int [line 22]\n " shape="box"] "test13" [label="3: Return Stmt \n n$0=*&x:int [line 18]\n *&return:int =n$0 [line 18]\n " shape="box"]
29 -> 25 ; "test13" -> "test12" ;
29 -> 26 ; "test12" [label="2: Exit test1 \n " color=yellow style=filled]
28 [label="28: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$2:int =1 [line 22]\n " shape="box"]
28 -> 24 ; "test11" [label="1: Start test1\nFormals: b:int \nLocals: x:int 0$?%__sil_tmpSIL_temp_conditional___n$1:int \n DECLARE_LOCALS(&return,&x,&0$?%__sil_tmpSIL_temp_conditional___n$1); [line 16]\n " color=yellow style=filled]
27 [label="27: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$2:int =n$1 [line 22]\n " shape="box"]
27 -> 24 ; "test11" -> "test15" ;
26 [label="26: Prune (false branch) \n PRUNE((n$1 == 0), false); [line 22]\n " shape="invhouse"] "test11" -> "test16" ;
"test79" [label="9: Return Stmt \n n$3=*&0$?%__sil_tmpSIL_temp_conditional___n$2:int [line 35]\n *&return:int =n$3 [line 35]\n " shape="box"]
26 -> 28 ; "test79" -> "test72" ;
25 [label="25: Prune (true branch) \n PRUNE((n$1 != 0), true); [line 22]\n " shape="invhouse"] "test78" [label="8: BinaryConditinalStmt Init \n n$0=_fun_test2(2:int ) [line 35]\n n$1=_fun_test2((2 + n$0):int ) [line 35]\n " shape="box"]
25 -> 27 ; "test78" -> "test74" ;
24 [label="24: + \n " ] "test78" -> "test75" ;
"test77" [label="7: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$2:int =2 [line 35]\n " shape="box"]
24 -> 30 ; "test77" -> "test73" ;
23 [label="23: Return Stmt \n n$0=*&x:int [line 23]\n *&return:int =n$0 [line 23]\n " shape="box"] "test76" [label="6: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$2:int =n$1 [line 35]\n " shape="box"]
23 -> 22 ; "test76" -> "test73" ;
22 [label="22: Exit test3 \n " color=yellow style=filled] "test75" [label="5: Prune (false branch) \n PRUNE((n$1 == 0), false); [line 35]\n " shape="invhouse"]
21 [label="21: Start test3\nFormals: b:int \nLocals: x:int 0$?%__sil_tmpSIL_temp_conditional___n$2:int \n DECLARE_LOCALS(&return,&x,&0$?%__sil_tmpSIL_temp_conditional___n$2); [line 21]\n " color=yellow style=filled] "test75" -> "test77" ;
"test74" [label="4: Prune (true branch) \n PRUNE((n$1 != 0), true); [line 35]\n " shape="invhouse"]
21 -> 29 ; "test74" -> "test76" ;
20 [label="20: DeclStmt \n n$4=*&0$?%__sil_tmpSIL_temp_conditional___n$1:int [line 17]\n *&x:int =n$4 [line 17]\n " shape="box"] "test73" [label="3: + \n " ]
20 -> 14 ; "test73" -> "test79" ;
19 [label="19: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$1:int =1 [line 17]\n " shape="box"] "test72" [label="2: Exit test7 \n " color=yellow style=filled]
19 -> 15 ; "test71" [label="1: Start test7\nFormals: b:int \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$2:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$2); [line 35]\n " color=yellow style=filled]
18 [label="18: ConditinalStmt Branch \n n$3=*&b:int [line 17]\n *&0$?%__sil_tmpSIL_temp_conditional___n$1:int =n$3 [line 17]\n " shape="box"]
18 -> 15 ; "test71" -> "test78" ;
17 [label="17: Prune (false branch) \n n$2=*&b:int [line 17]\n PRUNE((n$2 == 0), false); [line 17]\n " shape="invhouse"] "test69" [label="9: DeclStmt \n n$4=*&0$?%__sil_tmpSIL_temp_conditional___n$1:int [line 31]\n *&z:int =n$4 [line 31]\n " shape="box"]
17 -> 19 ; "test69" -> "test63" ;
16 [label="16: Prune (true branch) \n n$2=*&b:int [line 17]\n PRUNE((n$2 != 0), true); [line 17]\n " shape="invhouse"] "test68" [label="8: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$1:int =0 [line 31]\n " shape="box"]
16 -> 18 ; "test68" -> "test64" ;
15 [label="15: + \n " ] "test67" [label="7: ConditinalStmt Branch \n n$2=*&p:int * [line 31]\n n$3=*n$2:int [line 31]\n *&0$?%__sil_tmpSIL_temp_conditional___n$1:int =n$3 [line 31]\n " shape="box"]
15 -> 20 ; "test67" -> "test64" ;
14 [label="14: Return Stmt \n n$0=*&x:int [line 18]\n *&return:int =n$0 [line 18]\n " shape="box"] "test66" [label="6: Prune (false branch) \n PRUNE((1 == 0), false); [line 31]\n " shape="invhouse"]
14 -> 13 ; "test66" -> "test68" ;
13 [label="13: Exit test1 \n " color=yellow style=filled] "test65" [label="5: Prune (true branch) \n PRUNE((1 != 0), true); [line 31]\n " shape="invhouse"]
12 [label="12: Start test1\nFormals: b:int \nLocals: x:int 0$?%__sil_tmpSIL_temp_conditional___n$1:int \n DECLARE_LOCALS(&return,&x,&0$?%__sil_tmpSIL_temp_conditional___n$1); [line 16]\n " color=yellow style=filled] "test65" -> "test67" ;
"test64" [label="4: + \n " ]
12 -> 16 ; "test64" -> "test69" ;
12 -> 17 ; "test63" [label="3: Return Stmt \n n$0=*&z:int [line 32]\n *&return:int =n$0 [line 32]\n " shape="box"]
11 [label="11: Return Stmt \n n$3=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 14]\n n$4=_fun_test2(n$3:int ) [line 14]\n *&return:int =n$4 [line 14]\n " shape="box"]
11 -> 5 ; "test63" -> "test62" ;
10 [label="10: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =1 [line 14]\n " shape="box"] "test62" [label="2: Exit test6 \n " color=yellow style=filled]
10 -> 6 ; "test61" [label="1: Start test6\nFormals: p:int *\nLocals: z:int 0$?%__sil_tmpSIL_temp_conditional___n$1:int \n DECLARE_LOCALS(&return,&z,&0$?%__sil_tmpSIL_temp_conditional___n$1); [line 30]\n " color=yellow style=filled]
9 [label="9: ConditinalStmt Branch \n n$2=*&b:int [line 14]\n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =n$2 [line 14]\n " shape="box"]
9 -> 6 ; "test61" -> "test65" ;
8 [label="8: Prune (false branch) \n n$1=*&b:int [line 14]\n PRUNE((n$1 == 0), false); [line 14]\n " shape="invhouse"] "test61" -> "test66" ;
"test8" [label="8: Return Stmt \n n$3=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 14]\n n$4=_fun_test2(n$3:int ) [line 14]\n *&return:int =n$4 [line 14]\n " shape="box"]
8 -> 10 ; "test8" -> "test2" ;
7 [label="7: Prune (true branch) \n n$1=*&b:int [line 14]\n PRUNE((n$1 != 0), true); [line 14]\n " shape="invhouse"] "test7" [label="7: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =1 [line 14]\n " shape="box"]
7 -> 9 ; "test7" -> "test3" ;
6 [label="6: + \n " ] "test6" [label="6: ConditinalStmt Branch \n n$2=*&b:int [line 14]\n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =n$2 [line 14]\n " shape="box"]
6 -> 11 ; "test6" -> "test3" ;
5 [label="5: Exit test \n " color=yellow style=filled] "test5" [label="5: Prune (false branch) \n n$1=*&b:int [line 14]\n PRUNE((n$1 == 0), false); [line 14]\n " shape="invhouse"]
4 [label="4: Start test\nFormals: b:int \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0); [line 14]\n " color=yellow style=filled] "test5" -> "test7" ;
"test4" [label="4: Prune (true branch) \n n$1=*&b:int [line 14]\n PRUNE((n$1 != 0), true); [line 14]\n " shape="invhouse"]
4 -> 7 ; "test4" -> "test6" ;
4 -> 8 ; "test3" [label="3: + \n " ]
3 [label="3: Return Stmt \n n$0=*&x:int [line 12]\n *&return:int =n$0 [line 12]\n " shape="box"]
3 -> 2 ; "test3" -> "test8" ;
2 [label="2: Exit test2 \n " color=yellow style=filled] "test2" [label="2: Exit test \n " color=yellow style=filled]
1 [label="1: Start test2\nFormals: x:int \nLocals: \n DECLARE_LOCALS(&return); [line 12]\n " color=yellow style=filled] "test1" [label="1: Start test\nFormals: b:int \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0); [line 14]\n " color=yellow style=filled]
1 -> 3 ; "test1" -> "test4" ;
"test1" -> "test5" ;
} }

@ -1,278 +1,278 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
67 [label="67: Call n$1 \n n$1=*&0$?%__sil_tmpSIL_temp_conditional___n$0:_fn_ (*) [line 20]\n n$3=*&0$?%__sil_tmpSIL_temp_conditional___n$2:int [line 20]\n n$5=*&0$?%__sil_tmpSIL_temp_conditional___n$4:int [line 20]\n n$1(n$3:int ,2:int ,n$5:int ) [line 20]\n " shape="box"] "fun_ifthenelse223" [label="23: Call n$1 \n n$1=*&0$?%__sil_tmpSIL_temp_conditional___n$0:_fn_ (*) [line 15]\n n$3=*&0$?%__sil_tmpSIL_temp_conditional___n$2:int [line 15]\n n$5=*&0$?%__sil_tmpSIL_temp_conditional___n$4:int [line 15]\n n$7=*&0$?%__sil_tmpSIL_temp_conditional___n$6:int [line 15]\n n$1(n$3:int ,n$5:int ,n$7:int ) [line 15]\n " shape="box"]
67 -> 51 ; "fun_ifthenelse223" -> "fun_ifthenelse22" ;
66 [label="66: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$4:int =3 [line 20]\n " shape="box"] "fun_ifthenelse222" [label="22: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$6:int =3 [line 15]\n " shape="box"]
66 -> 62 ; "fun_ifthenelse222" -> "fun_ifthenelse218" ;
65 [label="65: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$4:int =3 [line 20]\n " shape="box"] "fun_ifthenelse221" [label="21: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$6:int =3 [line 15]\n " shape="box"]
65 -> 62 ; "fun_ifthenelse221" -> "fun_ifthenelse218" ;
64 [label="64: Prune (false branch) \n PRUNE((0 == 0), false); [line 20]\n " shape="invhouse"] "fun_ifthenelse220" [label="20: Prune (false branch) \n PRUNE((0 == 0), false); [line 15]\n " shape="invhouse"]
64 -> 66 ; "fun_ifthenelse220" -> "fun_ifthenelse222" ;
63 [label="63: Prune (true branch) \n PRUNE((0 != 0), true); [line 20]\n " shape="invhouse"] "fun_ifthenelse219" [label="19: Prune (true branch) \n PRUNE((0 != 0), true); [line 15]\n " shape="invhouse"]
63 -> 65 ; "fun_ifthenelse219" -> "fun_ifthenelse221" ;
62 [label="62: + \n " ] "fun_ifthenelse218" [label="18: + \n " ]
62 -> 67 ; "fun_ifthenelse218" -> "fun_ifthenelse223" ;
61 [label="61: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$2:int =1 [line 20]\n " shape="box"] "fun_ifthenelse217" [label="17: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$4:int =2 [line 15]\n " shape="box"]
61 -> 57 ; "fun_ifthenelse217" -> "fun_ifthenelse213" ;
60 [label="60: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$2:int =1 [line 20]\n " shape="box"] "fun_ifthenelse216" [label="16: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$4:int =2 [line 15]\n " shape="box"]
60 -> 57 ; "fun_ifthenelse216" -> "fun_ifthenelse213" ;
59 [label="59: Prune (false branch) \n PRUNE((0 == 0), false); [line 20]\n " shape="invhouse"] "fun_ifthenelse215" [label="15: Prune (false branch) \n PRUNE((0 == 0), false); [line 15]\n " shape="invhouse"]
59 -> 61 ; "fun_ifthenelse215" -> "fun_ifthenelse217" ;
58 [label="58: Prune (true branch) \n PRUNE((0 != 0), true); [line 20]\n " shape="invhouse"] "fun_ifthenelse214" [label="14: Prune (true branch) \n PRUNE((0 != 0), true); [line 15]\n " shape="invhouse"]
58 -> 60 ; "fun_ifthenelse214" -> "fun_ifthenelse216" ;
57 [label="57: + \n " ] "fun_ifthenelse213" [label="13: + \n " ]
57 -> 63 ; "fun_ifthenelse213" -> "fun_ifthenelse219" ;
57 -> 64 ; "fun_ifthenelse213" -> "fun_ifthenelse220" ;
56 [label="56: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:_fn_ (*)=_fun_some_f [line 20]\n " shape="box"] "fun_ifthenelse212" [label="12: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$2:int =1 [line 15]\n " shape="box"]
56 -> 52 ; "fun_ifthenelse212" -> "fun_ifthenelse28" ;
55 [label="55: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:_fn_ (*)=_fun_some_f [line 20]\n " shape="box"] "fun_ifthenelse211" [label="11: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$2:int =1 [line 15]\n " shape="box"]
55 -> 52 ; "fun_ifthenelse211" -> "fun_ifthenelse28" ;
54 [label="54: Prune (false branch) \n PRUNE((1 == 0), false); [line 20]\n " shape="invhouse"] "fun_ifthenelse210" [label="10: Prune (false branch) \n PRUNE((0 == 0), false); [line 15]\n " shape="invhouse"]
54 -> 56 ; "fun_ifthenelse210" -> "fun_ifthenelse212" ;
53 [label="53: Prune (true branch) \n PRUNE((1 != 0), true); [line 20]\n " shape="invhouse"] "fun_ifthenelse29" [label="9: Prune (true branch) \n PRUNE((0 != 0), true); [line 15]\n " shape="invhouse"]
53 -> 55 ; "fun_ifthenelse29" -> "fun_ifthenelse211" ;
52 [label="52: + \n " ] "fun_ifthenelse28" [label="8: + \n " ]
52 -> 58 ; "fun_ifthenelse28" -> "fun_ifthenelse214" ;
52 -> 59 ; "fun_ifthenelse28" -> "fun_ifthenelse215" ;
51 [label="51: Exit fun_ifthenelse4 \n " color=yellow style=filled] "fun_ifthenelse27" [label="7: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:_fn_ (*)=_fun_some_f [line 15]\n " shape="box"]
50 [label="50: Start fun_ifthenelse4\nFormals: \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:_fn_ (*) 0$?%__sil_tmpSIL_temp_conditional___n$2:int 0$?%__sil_tmpSIL_temp_conditional___n$4:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0,&0$?%__sil_tmpSIL_temp_conditional___n$2,&0$?%__sil_tmpSIL_temp_conditional___n$4); [line 20]\n " color=yellow style=filled] "fun_ifthenelse27" -> "fun_ifthenelse23" ;
"fun_ifthenelse26" [label="6: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:_fn_ (*)=_fun_some_f [line 15]\n " shape="box"]
50 -> 53 ; "fun_ifthenelse26" -> "fun_ifthenelse23" ;
50 -> 54 ; "fun_ifthenelse25" [label="5: Prune (false branch) \n PRUNE((1 == 0), false); [line 15]\n " shape="invhouse"]
49 [label="49: Call _fun_some_f \n n$1=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 18]\n n$3=*&0$?%__sil_tmpSIL_temp_conditional___n$2:int [line 18]\n n$5=*&0$?%__sil_tmpSIL_temp_conditional___n$4:int [line 18]\n _fun_some_f(n$1:int ,n$3:int ,n$5:int ) [line 18]\n " shape="box"]
49 -> 33 ; "fun_ifthenelse25" -> "fun_ifthenelse27" ;
48 [label="48: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$4:int =3 [line 18]\n " shape="box"] "fun_ifthenelse24" [label="4: Prune (true branch) \n PRUNE((1 != 0), true); [line 15]\n " shape="invhouse"]
48 -> 44 ; "fun_ifthenelse24" -> "fun_ifthenelse26" ;
47 [label="47: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$4:int =3 [line 18]\n " shape="box"] "fun_ifthenelse23" [label="3: + \n " ]
47 -> 44 ; "fun_ifthenelse23" -> "fun_ifthenelse29" ;
46 [label="46: Prune (false branch) \n PRUNE((0 == 0), false); [line 18]\n " shape="invhouse"] "fun_ifthenelse23" -> "fun_ifthenelse210" ;
"fun_ifthenelse22" [label="2: Exit fun_ifthenelse2 \n " color=yellow style=filled]
46 -> 48 ; "fun_ifthenelse21" [label="1: Start fun_ifthenelse2\nFormals: \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:_fn_ (*) 0$?%__sil_tmpSIL_temp_conditional___n$2:int 0$?%__sil_tmpSIL_temp_conditional___n$4:int 0$?%__sil_tmpSIL_temp_conditional___n$6:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0,&0$?%__sil_tmpSIL_temp_conditional___n$2,&0$?%__sil_tmpSIL_temp_conditional___n$4,&0$?%__sil_tmpSIL_temp_conditional___n$6); [line 14]\n " color=yellow style=filled]
45 [label="45: Prune (true branch) \n PRUNE((0 != 0), true); [line 18]\n " shape="invhouse"]
45 -> 47 ; "fun_ifthenelse21" -> "fun_ifthenelse24" ;
44 [label="44: + \n " ] "fun_ifthenelse21" -> "fun_ifthenelse25" ;
"fun_ifthenelse418" [label="18: Call n$1 \n n$1=*&0$?%__sil_tmpSIL_temp_conditional___n$0:_fn_ (*) [line 20]\n n$3=*&0$?%__sil_tmpSIL_temp_conditional___n$2:int [line 20]\n n$5=*&0$?%__sil_tmpSIL_temp_conditional___n$4:int [line 20]\n n$1(n$3:int ,2:int ,n$5:int ) [line 20]\n " shape="box"]
44 -> 49 ; "fun_ifthenelse418" -> "fun_ifthenelse42" ;
43 [label="43: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$2:int =2 [line 18]\n " shape="box"] "fun_ifthenelse417" [label="17: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$4:int =3 [line 20]\n " shape="box"]
43 -> 39 ; "fun_ifthenelse417" -> "fun_ifthenelse413" ;
42 [label="42: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$2:int =2 [line 18]\n " shape="box"] "fun_ifthenelse416" [label="16: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$4:int =3 [line 20]\n " shape="box"]
42 -> 39 ; "fun_ifthenelse416" -> "fun_ifthenelse413" ;
41 [label="41: Prune (false branch) \n PRUNE((0 == 0), false); [line 18]\n " shape="invhouse"] "fun_ifthenelse415" [label="15: Prune (false branch) \n PRUNE((0 == 0), false); [line 20]\n " shape="invhouse"]
41 -> 43 ; "fun_ifthenelse415" -> "fun_ifthenelse417" ;
40 [label="40: Prune (true branch) \n PRUNE((0 != 0), true); [line 18]\n " shape="invhouse"] "fun_ifthenelse414" [label="14: Prune (true branch) \n PRUNE((0 != 0), true); [line 20]\n " shape="invhouse"]
40 -> 42 ; "fun_ifthenelse414" -> "fun_ifthenelse416" ;
39 [label="39: + \n " ] "fun_ifthenelse413" [label="13: + \n " ]
39 -> 45 ; "fun_ifthenelse413" -> "fun_ifthenelse418" ;
39 -> 46 ; "fun_ifthenelse412" [label="12: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$2:int =1 [line 20]\n " shape="box"]
38 [label="38: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =1 [line 18]\n " shape="box"]
38 -> 34 ; "fun_ifthenelse412" -> "fun_ifthenelse48" ;
37 [label="37: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =1 [line 18]\n " shape="box"] "fun_ifthenelse411" [label="11: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$2:int =1 [line 20]\n " shape="box"]
37 -> 34 ; "fun_ifthenelse411" -> "fun_ifthenelse48" ;
36 [label="36: Prune (false branch) \n PRUNE((0 == 0), false); [line 18]\n " shape="invhouse"] "fun_ifthenelse410" [label="10: Prune (false branch) \n PRUNE((0 == 0), false); [line 20]\n " shape="invhouse"]
36 -> 38 ; "fun_ifthenelse410" -> "fun_ifthenelse412" ;
35 [label="35: Prune (true branch) \n PRUNE((0 != 0), true); [line 18]\n " shape="invhouse"] "fun_ifthenelse49" [label="9: Prune (true branch) \n PRUNE((0 != 0), true); [line 20]\n " shape="invhouse"]
35 -> 37 ; "fun_ifthenelse49" -> "fun_ifthenelse411" ;
34 [label="34: + \n " ] "fun_ifthenelse48" [label="8: + \n " ]
34 -> 40 ; "fun_ifthenelse48" -> "fun_ifthenelse414" ;
34 -> 41 ; "fun_ifthenelse48" -> "fun_ifthenelse415" ;
33 [label="33: Exit fun_ifthenelse3 \n " color=yellow style=filled] "fun_ifthenelse47" [label="7: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:_fn_ (*)=_fun_some_f [line 20]\n " shape="box"]
32 [label="32: Start fun_ifthenelse3\nFormals: \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:int 0$?%__sil_tmpSIL_temp_conditional___n$2:int 0$?%__sil_tmpSIL_temp_conditional___n$4:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0,&0$?%__sil_tmpSIL_temp_conditional___n$2,&0$?%__sil_tmpSIL_temp_conditional___n$4); [line 18]\n " color=yellow style=filled] "fun_ifthenelse47" -> "fun_ifthenelse43" ;
"fun_ifthenelse46" [label="6: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:_fn_ (*)=_fun_some_f [line 20]\n " shape="box"]
32 -> 35 ; "fun_ifthenelse46" -> "fun_ifthenelse43" ;
32 -> 36 ; "fun_ifthenelse45" [label="5: Prune (false branch) \n PRUNE((1 == 0), false); [line 20]\n " shape="invhouse"]
31 [label="31: Call n$1 \n n$1=*&0$?%__sil_tmpSIL_temp_conditional___n$0:_fn_ (*) [line 15]\n n$3=*&0$?%__sil_tmpSIL_temp_conditional___n$2:int [line 15]\n n$5=*&0$?%__sil_tmpSIL_temp_conditional___n$4:int [line 15]\n n$7=*&0$?%__sil_tmpSIL_temp_conditional___n$6:int [line 15]\n n$1(n$3:int ,n$5:int ,n$7:int ) [line 15]\n " shape="box"]
31 -> 10 ; "fun_ifthenelse45" -> "fun_ifthenelse47" ;
30 [label="30: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$6:int =3 [line 15]\n " shape="box"] "fun_ifthenelse44" [label="4: Prune (true branch) \n PRUNE((1 != 0), true); [line 20]\n " shape="invhouse"]
30 -> 26 ; "fun_ifthenelse44" -> "fun_ifthenelse46" ;
29 [label="29: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$6:int =3 [line 15]\n " shape="box"] "fun_ifthenelse43" [label="3: + \n " ]
29 -> 26 ; "fun_ifthenelse43" -> "fun_ifthenelse49" ;
28 [label="28: Prune (false branch) \n PRUNE((0 == 0), false); [line 15]\n " shape="invhouse"] "fun_ifthenelse43" -> "fun_ifthenelse410" ;
"fun_ifthenelse42" [label="2: Exit fun_ifthenelse4 \n " color=yellow style=filled]
28 -> 30 ; "fun_ifthenelse41" [label="1: Start fun_ifthenelse4\nFormals: \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:_fn_ (*) 0$?%__sil_tmpSIL_temp_conditional___n$2:int 0$?%__sil_tmpSIL_temp_conditional___n$4:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0,&0$?%__sil_tmpSIL_temp_conditional___n$2,&0$?%__sil_tmpSIL_temp_conditional___n$4); [line 20]\n " color=yellow style=filled]
27 [label="27: Prune (true branch) \n PRUNE((0 != 0), true); [line 15]\n " shape="invhouse"]
27 -> 29 ; "fun_ifthenelse41" -> "fun_ifthenelse44" ;
26 [label="26: + \n " ] "fun_ifthenelse41" -> "fun_ifthenelse45" ;
"fun_ifthenelse318" [label="18: Call _fun_some_f \n n$1=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 18]\n n$3=*&0$?%__sil_tmpSIL_temp_conditional___n$2:int [line 18]\n n$5=*&0$?%__sil_tmpSIL_temp_conditional___n$4:int [line 18]\n _fun_some_f(n$1:int ,n$3:int ,n$5:int ) [line 18]\n " shape="box"]
26 -> 31 ; "fun_ifthenelse318" -> "fun_ifthenelse32" ;
25 [label="25: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$4:int =2 [line 15]\n " shape="box"] "fun_ifthenelse317" [label="17: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$4:int =3 [line 18]\n " shape="box"]
25 -> 21 ; "fun_ifthenelse317" -> "fun_ifthenelse313" ;
24 [label="24: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$4:int =2 [line 15]\n " shape="box"] "fun_ifthenelse316" [label="16: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$4:int =3 [line 18]\n " shape="box"]
24 -> 21 ; "fun_ifthenelse316" -> "fun_ifthenelse313" ;
23 [label="23: Prune (false branch) \n PRUNE((0 == 0), false); [line 15]\n " shape="invhouse"] "fun_ifthenelse315" [label="15: Prune (false branch) \n PRUNE((0 == 0), false); [line 18]\n " shape="invhouse"]
23 -> 25 ; "fun_ifthenelse315" -> "fun_ifthenelse317" ;
22 [label="22: Prune (true branch) \n PRUNE((0 != 0), true); [line 15]\n " shape="invhouse"] "fun_ifthenelse314" [label="14: Prune (true branch) \n PRUNE((0 != 0), true); [line 18]\n " shape="invhouse"]
22 -> 24 ; "fun_ifthenelse314" -> "fun_ifthenelse316" ;
21 [label="21: + \n " ] "fun_ifthenelse313" [label="13: + \n " ]
21 -> 27 ; "fun_ifthenelse313" -> "fun_ifthenelse318" ;
21 -> 28 ; "fun_ifthenelse312" [label="12: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$2:int =2 [line 18]\n " shape="box"]
20 [label="20: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$2:int =1 [line 15]\n " shape="box"]
20 -> 16 ; "fun_ifthenelse312" -> "fun_ifthenelse38" ;
19 [label="19: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$2:int =1 [line 15]\n " shape="box"] "fun_ifthenelse311" [label="11: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$2:int =2 [line 18]\n " shape="box"]
19 -> 16 ; "fun_ifthenelse311" -> "fun_ifthenelse38" ;
18 [label="18: Prune (false branch) \n PRUNE((0 == 0), false); [line 15]\n " shape="invhouse"] "fun_ifthenelse310" [label="10: Prune (false branch) \n PRUNE((0 == 0), false); [line 18]\n " shape="invhouse"]
18 -> 20 ; "fun_ifthenelse310" -> "fun_ifthenelse312" ;
17 [label="17: Prune (true branch) \n PRUNE((0 != 0), true); [line 15]\n " shape="invhouse"] "fun_ifthenelse39" [label="9: Prune (true branch) \n PRUNE((0 != 0), true); [line 18]\n " shape="invhouse"]
17 -> 19 ; "fun_ifthenelse39" -> "fun_ifthenelse311" ;
16 [label="16: + \n " ] "fun_ifthenelse38" [label="8: + \n " ]
16 -> 22 ; "fun_ifthenelse38" -> "fun_ifthenelse314" ;
16 -> 23 ; "fun_ifthenelse38" -> "fun_ifthenelse315" ;
15 [label="15: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:_fn_ (*)=_fun_some_f [line 15]\n " shape="box"] "fun_ifthenelse37" [label="7: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =1 [line 18]\n " shape="box"]
15 -> 11 ; "fun_ifthenelse37" -> "fun_ifthenelse33" ;
14 [label="14: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:_fn_ (*)=_fun_some_f [line 15]\n " shape="box"] "fun_ifthenelse36" [label="6: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =1 [line 18]\n " shape="box"]
14 -> 11 ; "fun_ifthenelse36" -> "fun_ifthenelse33" ;
13 [label="13: Prune (false branch) \n PRUNE((1 == 0), false); [line 15]\n " shape="invhouse"] "fun_ifthenelse35" [label="5: Prune (false branch) \n PRUNE((0 == 0), false); [line 18]\n " shape="invhouse"]
13 -> 15 ; "fun_ifthenelse35" -> "fun_ifthenelse37" ;
12 [label="12: Prune (true branch) \n PRUNE((1 != 0), true); [line 15]\n " shape="invhouse"] "fun_ifthenelse34" [label="4: Prune (true branch) \n PRUNE((0 != 0), true); [line 18]\n " shape="invhouse"]
12 -> 14 ; "fun_ifthenelse34" -> "fun_ifthenelse36" ;
11 [label="11: + \n " ] "fun_ifthenelse33" [label="3: + \n " ]
11 -> 17 ; "fun_ifthenelse33" -> "fun_ifthenelse39" ;
11 -> 18 ; "fun_ifthenelse33" -> "fun_ifthenelse310" ;
10 [label="10: Exit fun_ifthenelse2 \n " color=yellow style=filled] "fun_ifthenelse32" [label="2: Exit fun_ifthenelse3 \n " color=yellow style=filled]
9 [label="9: Start fun_ifthenelse2\nFormals: \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:_fn_ (*) 0$?%__sil_tmpSIL_temp_conditional___n$2:int 0$?%__sil_tmpSIL_temp_conditional___n$4:int 0$?%__sil_tmpSIL_temp_conditional___n$6:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0,&0$?%__sil_tmpSIL_temp_conditional___n$2,&0$?%__sil_tmpSIL_temp_conditional___n$4,&0$?%__sil_tmpSIL_temp_conditional___n$6); [line 14]\n " color=yellow style=filled] "fun_ifthenelse31" [label="1: Start fun_ifthenelse3\nFormals: \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:int 0$?%__sil_tmpSIL_temp_conditional___n$2:int 0$?%__sil_tmpSIL_temp_conditional___n$4:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0,&0$?%__sil_tmpSIL_temp_conditional___n$2,&0$?%__sil_tmpSIL_temp_conditional___n$4); [line 18]\n " color=yellow style=filled]
9 -> 12 ; "fun_ifthenelse31" -> "fun_ifthenelse34" ;
9 -> 13 ; "fun_ifthenelse31" -> "fun_ifthenelse35" ;
8 [label="8: Call n$1 \n n$1=*&0$?%__sil_tmpSIL_temp_conditional___n$0:_fn_ (*) [line 12]\n n$1(1:int ,2:int ,3:int ) [line 12]\n " shape="box"] "fun_ifthenelse18" [label="8: Call n$1 \n n$1=*&0$?%__sil_tmpSIL_temp_conditional___n$0:_fn_ (*) [line 12]\n n$1(1:int ,2:int ,3:int ) [line 12]\n " shape="box"]
8 -> 2 ; "fun_ifthenelse18" -> "fun_ifthenelse12" ;
7 [label="7: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:_fn_ (*)=_fun_some_f [line 12]\n " shape="box"] "fun_ifthenelse17" [label="7: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:_fn_ (*)=_fun_some_f [line 12]\n " shape="box"]
7 -> 3 ; "fun_ifthenelse17" -> "fun_ifthenelse13" ;
6 [label="6: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:_fn_ (*)=_fun_some_f [line 12]\n " shape="box"] "fun_ifthenelse16" [label="6: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:_fn_ (*)=_fun_some_f [line 12]\n " shape="box"]
6 -> 3 ; "fun_ifthenelse16" -> "fun_ifthenelse13" ;
5 [label="5: Prune (false branch) \n PRUNE((1 == 0), false); [line 12]\n " shape="invhouse"] "fun_ifthenelse15" [label="5: Prune (false branch) \n PRUNE((1 == 0), false); [line 12]\n " shape="invhouse"]
5 -> 7 ; "fun_ifthenelse15" -> "fun_ifthenelse17" ;
4 [label="4: Prune (true branch) \n PRUNE((1 != 0), true); [line 12]\n " shape="invhouse"] "fun_ifthenelse14" [label="4: Prune (true branch) \n PRUNE((1 != 0), true); [line 12]\n " shape="invhouse"]
4 -> 6 ; "fun_ifthenelse14" -> "fun_ifthenelse16" ;
3 [label="3: + \n " ] "fun_ifthenelse13" [label="3: + \n " ]
3 -> 8 ; "fun_ifthenelse13" -> "fun_ifthenelse18" ;
2 [label="2: Exit fun_ifthenelse1 \n " color=yellow style=filled] "fun_ifthenelse12" [label="2: Exit fun_ifthenelse1 \n " color=yellow style=filled]
1 [label="1: Start fun_ifthenelse1\nFormals: \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:_fn_ (*) \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0); [line 12]\n " color=yellow style=filled] "fun_ifthenelse11" [label="1: Start fun_ifthenelse1\nFormals: \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:_fn_ (*) \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0); [line 12]\n " color=yellow style=filled]
1 -> 4 ; "fun_ifthenelse11" -> "fun_ifthenelse14" ;
1 -> 5 ; "fun_ifthenelse11" -> "fun_ifthenelse15" ;
} }

@ -1,398 +1,398 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
95 [label="95: BinaryOperatorStmt: Assign \n n$13=_fun_getenv(\"BLOCK\":char *) [line 47]\n *&spec:char *=n$13 [line 47]\n " shape="box"] "shortcircuit_or12" [label="12: BinaryOperatorStmt: Assign \n *&x:int *=32 [line 17]\n " shape="box"]
95 -> 67 ; "shortcircuit_or12" -> "shortcircuit_or3" ;
95 -> 68 ; "shortcircuit_or11" [label="11: BinaryOperatorStmt: Assign \n *&x:int *=17 [line 15]\n " shape="box"]
94 [label="94: BinaryOperatorStmt: Assign \n *&block_size:char *=0 [line 53]\n " shape="box"]
94 -> 90 ; "shortcircuit_or11" -> "shortcircuit_or3" ;
93 [label="93: Prune (false branch) \n PRUNE(((n$12 == 39) == 0), false); [line 52]\n " shape="invhouse"] "shortcircuit_or10" [label="10: Prune (false branch) \n PRUNE(((n$2 == 2) == 0), false); [line 14]\n " shape="invhouse"]
93 -> 90 ; "shortcircuit_or10" -> "shortcircuit_or12" ;
92 [label="92: Prune (true branch) \n PRUNE(((n$12 == 39) != 0), true); [line 52]\n " shape="invhouse"] "shortcircuit_or9" [label="9: Prune (true branch) \n PRUNE(((n$2 == 2) != 0), true); [line 14]\n " shape="invhouse"]
92 -> 94 ; "shortcircuit_or9" -> "shortcircuit_or11" ;
91 [label="91: BinaryOperatorStmt: EQ \n n$11=*&spec:char * [line 52]\n n$12=*n$11:char [line 52]\n " shape="box"] "shortcircuit_or8" [label="8: BinaryOperatorStmt: EQ \n n$1=*&x:int * [line 14]\n n$2=*n$1:int [line 14]\n " shape="box"]
91 -> 92 ; "shortcircuit_or8" -> "shortcircuit_or9" ;
91 -> 93 ; "shortcircuit_or8" -> "shortcircuit_or10" ;
90 [label="90: + \n " ] "shortcircuit_or7" [label="7: Prune (false branch) \n PRUNE(((n$0 == 0) == 0), false); [line 14]\n " shape="invhouse"]
90 -> 65 ; "shortcircuit_or7" -> "shortcircuit_or8" ;
89 [label="89: BinaryOperatorStmt: Assign \n *&block_size:char *=0 [line 50]\n " shape="box"] "shortcircuit_or6" [label="6: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 14]\n " shape="invhouse"]
89 -> 65 ; "shortcircuit_or6" -> "shortcircuit_or11" ;
88 [label="88: Prune (false branch) \n n$10=*&0$?%__sil_tmpSIL_temp_conditional___n$7:int [line 49]\n PRUNE((n$10 == 0), false); [line 49]\n " shape="invhouse"] "shortcircuit_or5" [label="5: BinaryOperatorStmt: EQ \n n$0=*&x:int * [line 14]\n " shape="box"]
88 -> 91 ; "shortcircuit_or5" -> "shortcircuit_or6" ;
87 [label="87: Prune (true branch) \n n$10=*&0$?%__sil_tmpSIL_temp_conditional___n$7:int [line 49]\n PRUNE((n$10 != 0), true); [line 49]\n " shape="invhouse"] "shortcircuit_or5" -> "shortcircuit_or7" ;
"shortcircuit_or4" [label="4: between_join_and_exit \n " shape="box"]
87 -> 89 ; "shortcircuit_or4" -> "shortcircuit_or2" ;
86 [label="86: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$7:int =1 [line 49]\n " shape="box"] "shortcircuit_or3" [label="3: + \n " ]
86 -> 81 ; "shortcircuit_or3" -> "shortcircuit_or4" ;
85 [label="85: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$7:int =0 [line 49]\n " shape="box"] "shortcircuit_or2" [label="2: Exit shortcircuit_or \n " color=yellow style=filled]
85 -> 81 ; "shortcircuit_or1" [label="1: Start shortcircuit_or\nFormals: x:int *\nLocals: \n DECLARE_LOCALS(&return); [line 12]\n " color=yellow style=filled]
84 [label="84: Prune (false branch) \n PRUNE((n$9 == 0), false); [line 49]\n " shape="invhouse"]
84 -> 86 ; "shortcircuit_or1" -> "shortcircuit_or5" ;
83 [label="83: Prune (true branch) \n PRUNE((n$9 != 0), true); [line 49]\n " shape="invhouse"] "shortcircuit_and21" [label="21: BinaryOperatorStmt: Assign \n n$7=*&x:int * [line 25]\n *n$7:int =32 [line 25]\n " shape="box"]
83 -> 85 ; "shortcircuit_and21" -> "shortcircuit_and3" ;
82 [label="82: BinaryOperatorStmt: Assign \n n$8=_fun_getenv(\"BLOCKSIZE\":char *) [line 49]\n *&spec:char *=n$8 [line 49]\n n$9=*&spec:char * [line 49]\n " shape="box"] "shortcircuit_and20" [label="20: BinaryOperatorStmt: Assign \n *&x:int *=17 [line 23]\n " shape="box"]
82 -> 83 ; "shortcircuit_and20" -> "shortcircuit_and3" ;
82 -> 84 ; "shortcircuit_and19" [label="19: Prune (false branch) \n n$6=*&0$?%__sil_tmpSIL_temp_conditional___n$3:int [line 22]\n PRUNE((n$6 == 0), false); [line 22]\n " shape="invhouse"]
81 [label="81: + \n " ]
81 -> 87 ; "shortcircuit_and19" -> "shortcircuit_and21" ;
81 -> 88 ; "shortcircuit_and18" [label="18: Prune (true branch) \n n$6=*&0$?%__sil_tmpSIL_temp_conditional___n$3:int [line 22]\n PRUNE((n$6 != 0), true); [line 22]\n " shape="invhouse"]
80 [label="80: Prune (false branch) \n n$6=*&0$?%__sil_tmpSIL_temp_conditional___n$3:int [line 49]\n PRUNE((n$6 == 0), false); [line 49]\n " shape="invhouse"]
80 -> 91 ; "shortcircuit_and18" -> "shortcircuit_and20" ;
79 [label="79: Prune (true branch) \n n$6=*&0$?%__sil_tmpSIL_temp_conditional___n$3:int [line 49]\n PRUNE((n$6 != 0), true); [line 49]\n " shape="invhouse"] "shortcircuit_and17" [label="17: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int =1 [line 22]\n " shape="box"]
79 -> 82 ; "shortcircuit_and17" -> "shortcircuit_and12" ;
78 [label="78: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int =1 [line 49]\n " shape="box"] "shortcircuit_and16" [label="16: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int =0 [line 22]\n " shape="box"]
78 -> 73 ; "shortcircuit_and16" -> "shortcircuit_and12" ;
77 [label="77: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int =0 [line 49]\n " shape="box"] "shortcircuit_and15" [label="15: Prune (false branch) \n PRUNE((n$5 == 0), false); [line 22]\n " shape="invhouse"]
77 -> 73 ; "shortcircuit_and15" -> "shortcircuit_and17" ;
76 [label="76: Prune (false branch) \n PRUNE((n$5 == 0), false); [line 49]\n " shape="invhouse"] "shortcircuit_and14" [label="14: Prune (true branch) \n PRUNE((n$5 != 0), true); [line 22]\n " shape="invhouse"]
76 -> 78 ; "shortcircuit_and14" -> "shortcircuit_and16" ;
75 [label="75: Prune (true branch) \n PRUNE((n$5 != 0), true); [line 49]\n " shape="invhouse"] "shortcircuit_and13" [label="13: BinaryOperatorStmt: Assign \n n$4=_fun_getenv(\"BLOCK\":char *) [line 22]\n *&x:int *=n$4 [line 22]\n n$5=*&x:int * [line 22]\n " shape="box"]
75 -> 77 ; "shortcircuit_and13" -> "shortcircuit_and14" ;
74 [label="74: BinaryOperatorStmt: Assign \n n$4=_fun_getenv(\"BLOCK_SIZE\":char *) [line 49]\n *&spec:char *=n$4 [line 49]\n n$5=*&spec:char * [line 49]\n " shape="box"] "shortcircuit_and13" -> "shortcircuit_and15" ;
"shortcircuit_and12" [label="12: + \n " ]
74 -> 75 ; "shortcircuit_and12" -> "shortcircuit_and18" ;
74 -> 76 ; "shortcircuit_and12" -> "shortcircuit_and19" ;
73 [label="73: + \n " ] "shortcircuit_and11" [label="11: Prune (false branch) \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 22]\n PRUNE((n$2 == 0), false); [line 22]\n " shape="invhouse"]
73 -> 79 ; "shortcircuit_and11" -> "shortcircuit_and21" ;
73 -> 80 ; "shortcircuit_and10" [label="10: Prune (true branch) \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 22]\n PRUNE((n$2 != 0), true); [line 22]\n " shape="invhouse"]
72 [label="72: Prune (false branch) \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 49]\n PRUNE((n$2 == 0), false); [line 49]\n " shape="invhouse"]
72 -> 91 ; "shortcircuit_and10" -> "shortcircuit_and13" ;
71 [label="71: Prune (true branch) \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 49]\n PRUNE((n$2 != 0), true); [line 49]\n " shape="invhouse"] "shortcircuit_and9" [label="9: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =1 [line 22]\n " shape="box"]
71 -> 74 ; "shortcircuit_and9" -> "shortcircuit_and5" ;
70 [label="70: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =1 [line 49]\n " shape="box"] "shortcircuit_and8" [label="8: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =0 [line 22]\n " shape="box"]
70 -> 66 ; "shortcircuit_and8" -> "shortcircuit_and5" ;
69 [label="69: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =0 [line 49]\n " shape="box"] "shortcircuit_and7" [label="7: Prune (false branch) \n n$1=*&x:int * [line 22]\n PRUNE((n$1 == 0), false); [line 22]\n " shape="invhouse"]
69 -> 66 ; "shortcircuit_and7" -> "shortcircuit_and9" ;
68 [label="68: Prune (false branch) \n n$1=*&spec:char * [line 49]\n PRUNE((n$1 == 0), false); [line 49]\n " shape="invhouse"] "shortcircuit_and6" [label="6: Prune (true branch) \n n$1=*&x:int * [line 22]\n PRUNE((n$1 != 0), true); [line 22]\n " shape="invhouse"]
68 -> 70 ; "shortcircuit_and6" -> "shortcircuit_and8" ;
67 [label="67: Prune (true branch) \n n$1=*&spec:char * [line 49]\n PRUNE((n$1 != 0), true); [line 49]\n " shape="invhouse"] "shortcircuit_and5" [label="5: + \n " ]
67 -> 69 ; "shortcircuit_and5" -> "shortcircuit_and10" ;
66 [label="66: + \n " ] "shortcircuit_and5" -> "shortcircuit_and11" ;
"shortcircuit_and4" [label="4: between_join_and_exit \n " shape="box"]
66 -> 71 ; "shortcircuit_and4" -> "shortcircuit_and2" ;
66 -> 72 ; "shortcircuit_and3" [label="3: + \n " ]
65 [label="65: + \n " ]
65 -> 64 ; "shortcircuit_and3" -> "shortcircuit_and4" ;
64 [label="64: Return Stmt \n *&return:int =0 [line 56]\n " shape="box"] "shortcircuit_and2" [label="2: Exit shortcircuit_and \n " color=yellow style=filled]
64 -> 63 ; "shortcircuit_and1" [label="1: Start shortcircuit_and\nFormals: x:int *\nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:int 0$?%__sil_tmpSIL_temp_conditional___n$3:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0,&0$?%__sil_tmpSIL_temp_conditional___n$3); [line 21]\n " color=yellow style=filled]
63 [label="63: Exit main \n " color=yellow style=filled]
62 [label="62: Start main\nFormals: \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:int 0$?%__sil_tmpSIL_temp_conditional___n$3:int 0$?%__sil_tmpSIL_temp_conditional___n$7:int block_size:char * spec:char * \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0,&0$?%__sil_tmpSIL_temp_conditional___n$3,&0$?%__sil_tmpSIL_temp_conditional___n$7,&block_size,&spec); [line 42]\n " color=yellow style=filled] "shortcircuit_and1" -> "shortcircuit_and6" ;
"shortcircuit_and1" -> "shortcircuit_and7" ;
"test_loop28" [label="28: BinaryOperatorStmt: Assign \n n$11=_fun_getenv(\"BLOCK\":char *) [line 34]\n *&spec:char *=n$11 [line 34]\n " shape="box"]
62 -> 95 ; "test_loop28" -> "test_loop3" ;
61 [label="61: BinaryOperatorStmt: Assign \n n$11=_fun_getenv(\"BLOCK\":char *) [line 34]\n *&spec:char *=n$11 [line 34]\n " shape="box"] "test_loop27" [label="27: BinaryOperatorStmt: Assign \n *&block_size:char *=0 [line 38]\n " shape="box"]
61 -> 36 ; "test_loop27" -> "test_loop3" ;
60 [label="60: BinaryOperatorStmt: Assign \n *&block_size:char *=0 [line 38]\n " shape="box"] "test_loop26" [label="26: Prune (false branch) \n n$10=*&0$?%__sil_tmpSIL_temp_conditional___n$7:int [line 37]\n PRUNE((n$10 == 0), false); [line 37]\n " shape="invhouse"]
60 -> 36 ; "test_loop26" -> "test_loop2" ;
59 [label="59: Prune (false branch) \n n$10=*&0$?%__sil_tmpSIL_temp_conditional___n$7:int [line 37]\n PRUNE((n$10 == 0), false); [line 37]\n " shape="invhouse"] "test_loop25" [label="25: Prune (true branch) \n n$10=*&0$?%__sil_tmpSIL_temp_conditional___n$7:int [line 37]\n PRUNE((n$10 != 0), true); [line 37]\n " shape="invhouse"]
59 -> 35 ; "test_loop25" -> "test_loop27" ;
58 [label="58: Prune (true branch) \n n$10=*&0$?%__sil_tmpSIL_temp_conditional___n$7:int [line 37]\n PRUNE((n$10 != 0), true); [line 37]\n " shape="invhouse"] "test_loop24" [label="24: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$7:int =1 [line 37]\n " shape="box"]
58 -> 60 ; "test_loop24" -> "test_loop19" ;
57 [label="57: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$7:int =1 [line 37]\n " shape="box"] "test_loop23" [label="23: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$7:int =0 [line 37]\n " shape="box"]
57 -> 52 ; "test_loop23" -> "test_loop19" ;
56 [label="56: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$7:int =0 [line 37]\n " shape="box"] "test_loop22" [label="22: Prune (false branch) \n PRUNE((n$9 == 0), false); [line 37]\n " shape="invhouse"]
56 -> 52 ; "test_loop22" -> "test_loop24" ;
55 [label="55: Prune (false branch) \n PRUNE((n$9 == 0), false); [line 37]\n " shape="invhouse"] "test_loop21" [label="21: Prune (true branch) \n PRUNE((n$9 != 0), true); [line 37]\n " shape="invhouse"]
55 -> 57 ; "test_loop21" -> "test_loop23" ;
54 [label="54: Prune (true branch) \n PRUNE((n$9 != 0), true); [line 37]\n " shape="invhouse"] "test_loop20" [label="20: BinaryOperatorStmt: Assign \n n$8=_fun_getenv(\"BLOCKSIZE\":char *) [line 37]\n *&spec:char *=n$8 [line 37]\n n$9=*&spec:char * [line 37]\n " shape="box"]
54 -> 56 ; "test_loop20" -> "test_loop21" ;
53 [label="53: BinaryOperatorStmt: Assign \n n$8=_fun_getenv(\"BLOCKSIZE\":char *) [line 37]\n *&spec:char *=n$8 [line 37]\n n$9=*&spec:char * [line 37]\n " shape="box"] "test_loop20" -> "test_loop22" ;
"test_loop19" [label="19: + \n " ]
53 -> 54 ; "test_loop19" -> "test_loop25" ;
53 -> 55 ; "test_loop19" -> "test_loop26" ;
52 [label="52: + \n " ] "test_loop18" [label="18: Prune (false branch) \n n$6=*&0$?%__sil_tmpSIL_temp_conditional___n$3:int [line 36]\n PRUNE((n$6 == 0), false); [line 36]\n " shape="invhouse"]
52 -> 58 ; "test_loop18" -> "test_loop2" ;
52 -> 59 ; "test_loop17" [label="17: Prune (true branch) \n n$6=*&0$?%__sil_tmpSIL_temp_conditional___n$3:int [line 36]\n PRUNE((n$6 != 0), true); [line 36]\n " shape="invhouse"]
51 [label="51: Prune (false branch) \n n$6=*&0$?%__sil_tmpSIL_temp_conditional___n$3:int [line 36]\n PRUNE((n$6 == 0), false); [line 36]\n " shape="invhouse"]
51 -> 35 ; "test_loop17" -> "test_loop20" ;
50 [label="50: Prune (true branch) \n n$6=*&0$?%__sil_tmpSIL_temp_conditional___n$3:int [line 36]\n PRUNE((n$6 != 0), true); [line 36]\n " shape="invhouse"] "test_loop16" [label="16: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int =1 [line 36]\n " shape="box"]
50 -> 53 ; "test_loop16" -> "test_loop11" ;
49 [label="49: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int =1 [line 36]\n " shape="box"] "test_loop15" [label="15: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int =0 [line 36]\n " shape="box"]
49 -> 44 ; "test_loop15" -> "test_loop11" ;
48 [label="48: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int =0 [line 36]\n " shape="box"] "test_loop14" [label="14: Prune (false branch) \n PRUNE((n$5 == 0), false); [line 36]\n " shape="invhouse"]
48 -> 44 ; "test_loop14" -> "test_loop16" ;
47 [label="47: Prune (false branch) \n PRUNE((n$5 == 0), false); [line 36]\n " shape="invhouse"] "test_loop13" [label="13: Prune (true branch) \n PRUNE((n$5 != 0), true); [line 36]\n " shape="invhouse"]
47 -> 49 ; "test_loop13" -> "test_loop15" ;
46 [label="46: Prune (true branch) \n PRUNE((n$5 != 0), true); [line 36]\n " shape="invhouse"] "test_loop12" [label="12: BinaryOperatorStmt: Assign \n n$4=_fun_getenv(\"BLOCK_SIZE\":char *) [line 36]\n *&spec:char *=n$4 [line 36]\n n$5=*&spec:char * [line 36]\n " shape="box"]
46 -> 48 ; "test_loop12" -> "test_loop13" ;
45 [label="45: BinaryOperatorStmt: Assign \n n$4=_fun_getenv(\"BLOCK_SIZE\":char *) [line 36]\n *&spec:char *=n$4 [line 36]\n n$5=*&spec:char * [line 36]\n " shape="box"] "test_loop12" -> "test_loop14" ;
"test_loop11" [label="11: + \n " ]
45 -> 46 ; "test_loop11" -> "test_loop17" ;
45 -> 47 ; "test_loop11" -> "test_loop18" ;
44 [label="44: + \n " ] "test_loop10" [label="10: Prune (false branch) \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 36]\n PRUNE((n$2 == 0), false); [line 36]\n " shape="invhouse"]
44 -> 50 ; "test_loop10" -> "test_loop2" ;
44 -> 51 ; "test_loop9" [label="9: Prune (true branch) \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 36]\n PRUNE((n$2 != 0), true); [line 36]\n " shape="invhouse"]
43 [label="43: Prune (false branch) \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 36]\n PRUNE((n$2 == 0), false); [line 36]\n " shape="invhouse"]
43 -> 35 ; "test_loop9" -> "test_loop12" ;
42 [label="42: Prune (true branch) \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 36]\n PRUNE((n$2 != 0), true); [line 36]\n " shape="invhouse"] "test_loop8" [label="8: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =1 [line 36]\n " shape="box"]
42 -> 45 ; "test_loop8" -> "test_loop4" ;
41 [label="41: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =1 [line 36]\n " shape="box"] "test_loop7" [label="7: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =0 [line 36]\n " shape="box"]
41 -> 37 ; "test_loop7" -> "test_loop4" ;
40 [label="40: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =0 [line 36]\n " shape="box"] "test_loop6" [label="6: Prune (false branch) \n n$1=*&spec:char * [line 36]\n PRUNE((n$1 == 0), false); [line 36]\n " shape="invhouse"]
40 -> 37 ; "test_loop6" -> "test_loop8" ;
39 [label="39: Prune (false branch) \n n$1=*&spec:char * [line 36]\n PRUNE((n$1 == 0), false); [line 36]\n " shape="invhouse"] "test_loop5" [label="5: Prune (true branch) \n n$1=*&spec:char * [line 36]\n PRUNE((n$1 != 0), true); [line 36]\n " shape="invhouse"]
39 -> 41 ; "test_loop5" -> "test_loop7" ;
38 [label="38: Prune (true branch) \n n$1=*&spec:char * [line 36]\n PRUNE((n$1 != 0), true); [line 36]\n " shape="invhouse"] "test_loop4" [label="4: + \n " ]
38 -> 40 ; "test_loop4" -> "test_loop9" ;
37 [label="37: + \n " ] "test_loop4" -> "test_loop10" ;
"test_loop3" [label="3: + \n " ]
37 -> 42 ; "test_loop3" -> "test_loop5" ;
37 -> 43 ; "test_loop3" -> "test_loop6" ;
36 [label="36: + \n " ] "test_loop2" [label="2: Exit test_loop \n " color=yellow style=filled]
36 -> 38 ; "test_loop1" [label="1: Start test_loop\nFormals: \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:int 0$?%__sil_tmpSIL_temp_conditional___n$3:int 0$?%__sil_tmpSIL_temp_conditional___n$7:int block_size:char * spec:char * \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0,&0$?%__sil_tmpSIL_temp_conditional___n$3,&0$?%__sil_tmpSIL_temp_conditional___n$7,&block_size,&spec); [line 29]\n " color=yellow style=filled]
36 -> 39 ;
35 [label="35: Exit test_loop \n " color=yellow style=filled]
34 [label="34: Start test_loop\nFormals: \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:int 0$?%__sil_tmpSIL_temp_conditional___n$3:int 0$?%__sil_tmpSIL_temp_conditional___n$7:int block_size:char * spec:char * \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0,&0$?%__sil_tmpSIL_temp_conditional___n$3,&0$?%__sil_tmpSIL_temp_conditional___n$7,&block_size,&spec); [line 29]\n " color=yellow style=filled] "test_loop1" -> "test_loop28" ;
"main34" [label="34: BinaryOperatorStmt: Assign \n n$13=_fun_getenv(\"BLOCK\":char *) [line 47]\n *&spec:char *=n$13 [line 47]\n " shape="box"]
34 -> 61 ; "main34" -> "main6" ;
33 [label="33: BinaryOperatorStmt: Assign \n n$7=*&x:int * [line 25]\n *n$7:int =32 [line 25]\n " shape="box"] "main34" -> "main7" ;
"main33" [label="33: BinaryOperatorStmt: Assign \n *&block_size:char *=0 [line 53]\n " shape="box"]
33 -> 15 ; "main33" -> "main29" ;
32 [label="32: BinaryOperatorStmt: Assign \n *&x:int *=17 [line 23]\n " shape="box"] "main32" [label="32: Prune (false branch) \n PRUNE(((n$12 == 39) == 0), false); [line 52]\n " shape="invhouse"]
32 -> 15 ; "main32" -> "main29" ;
31 [label="31: Prune (false branch) \n n$6=*&0$?%__sil_tmpSIL_temp_conditional___n$3:int [line 22]\n PRUNE((n$6 == 0), false); [line 22]\n " shape="invhouse"] "main31" [label="31: Prune (true branch) \n PRUNE(((n$12 == 39) != 0), true); [line 52]\n " shape="invhouse"]
31 -> 33 ; "main31" -> "main33" ;
30 [label="30: Prune (true branch) \n n$6=*&0$?%__sil_tmpSIL_temp_conditional___n$3:int [line 22]\n PRUNE((n$6 != 0), true); [line 22]\n " shape="invhouse"] "main30" [label="30: BinaryOperatorStmt: EQ \n n$11=*&spec:char * [line 52]\n n$12=*n$11:char [line 52]\n " shape="box"]
30 -> 32 ; "main30" -> "main31" ;
29 [label="29: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int =1 [line 22]\n " shape="box"] "main30" -> "main32" ;
"main29" [label="29: + \n " ]
29 -> 24 ; "main29" -> "main4" ;
28 [label="28: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int =0 [line 22]\n " shape="box"] "main28" [label="28: BinaryOperatorStmt: Assign \n *&block_size:char *=0 [line 50]\n " shape="box"]
28 -> 24 ; "main28" -> "main4" ;
27 [label="27: Prune (false branch) \n PRUNE((n$5 == 0), false); [line 22]\n " shape="invhouse"] "main27" [label="27: Prune (false branch) \n n$10=*&0$?%__sil_tmpSIL_temp_conditional___n$7:int [line 49]\n PRUNE((n$10 == 0), false); [line 49]\n " shape="invhouse"]
27 -> 29 ; "main27" -> "main30" ;
26 [label="26: Prune (true branch) \n PRUNE((n$5 != 0), true); [line 22]\n " shape="invhouse"] "main26" [label="26: Prune (true branch) \n n$10=*&0$?%__sil_tmpSIL_temp_conditional___n$7:int [line 49]\n PRUNE((n$10 != 0), true); [line 49]\n " shape="invhouse"]
26 -> 28 ; "main26" -> "main28" ;
25 [label="25: BinaryOperatorStmt: Assign \n n$4=_fun_getenv(\"BLOCK\":char *) [line 22]\n *&x:int *=n$4 [line 22]\n n$5=*&x:int * [line 22]\n " shape="box"] "main25" [label="25: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$7:int =1 [line 49]\n " shape="box"]
25 -> 26 ; "main25" -> "main20" ;
25 -> 27 ; "main24" [label="24: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$7:int =0 [line 49]\n " shape="box"]
24 [label="24: + \n " ]
24 -> 30 ; "main24" -> "main20" ;
24 -> 31 ; "main23" [label="23: Prune (false branch) \n PRUNE((n$9 == 0), false); [line 49]\n " shape="invhouse"]
23 [label="23: Prune (false branch) \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 22]\n PRUNE((n$2 == 0), false); [line 22]\n " shape="invhouse"]
23 -> 33 ; "main23" -> "main25" ;
22 [label="22: Prune (true branch) \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 22]\n PRUNE((n$2 != 0), true); [line 22]\n " shape="invhouse"] "main22" [label="22: Prune (true branch) \n PRUNE((n$9 != 0), true); [line 49]\n " shape="invhouse"]
22 -> 25 ; "main22" -> "main24" ;
21 [label="21: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =1 [line 22]\n " shape="box"] "main21" [label="21: BinaryOperatorStmt: Assign \n n$8=_fun_getenv(\"BLOCKSIZE\":char *) [line 49]\n *&spec:char *=n$8 [line 49]\n n$9=*&spec:char * [line 49]\n " shape="box"]
21 -> 17 ; "main21" -> "main22" ;
20 [label="20: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =0 [line 22]\n " shape="box"] "main21" -> "main23" ;
"main20" [label="20: + \n " ]
20 -> 17 ; "main20" -> "main26" ;
19 [label="19: Prune (false branch) \n n$1=*&x:int * [line 22]\n PRUNE((n$1 == 0), false); [line 22]\n " shape="invhouse"] "main20" -> "main27" ;
"main19" [label="19: Prune (false branch) \n n$6=*&0$?%__sil_tmpSIL_temp_conditional___n$3:int [line 49]\n PRUNE((n$6 == 0), false); [line 49]\n " shape="invhouse"]
19 -> 21 ; "main19" -> "main30" ;
18 [label="18: Prune (true branch) \n n$1=*&x:int * [line 22]\n PRUNE((n$1 != 0), true); [line 22]\n " shape="invhouse"] "main18" [label="18: Prune (true branch) \n n$6=*&0$?%__sil_tmpSIL_temp_conditional___n$3:int [line 49]\n PRUNE((n$6 != 0), true); [line 49]\n " shape="invhouse"]
18 -> 20 ; "main18" -> "main21" ;
17 [label="17: + \n " ] "main17" [label="17: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int =1 [line 49]\n " shape="box"]
17 -> 22 ; "main17" -> "main12" ;
17 -> 23 ; "main16" [label="16: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int =0 [line 49]\n " shape="box"]
16 [label="16: between_join_and_exit \n " shape="box"]
16 -> 14 ; "main16" -> "main12" ;
15 [label="15: + \n " ] "main15" [label="15: Prune (false branch) \n PRUNE((n$5 == 0), false); [line 49]\n " shape="invhouse"]
15 -> 16 ; "main15" -> "main17" ;
14 [label="14: Exit shortcircuit_and \n " color=yellow style=filled] "main14" [label="14: Prune (true branch) \n PRUNE((n$5 != 0), true); [line 49]\n " shape="invhouse"]
13 [label="13: Start shortcircuit_and\nFormals: x:int *\nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:int 0$?%__sil_tmpSIL_temp_conditional___n$3:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0,&0$?%__sil_tmpSIL_temp_conditional___n$3); [line 21]\n " color=yellow style=filled] "main14" -> "main16" ;
"main13" [label="13: BinaryOperatorStmt: Assign \n n$4=_fun_getenv(\"BLOCK_SIZE\":char *) [line 49]\n *&spec:char *=n$4 [line 49]\n n$5=*&spec:char * [line 49]\n " shape="box"]
13 -> 18 ; "main13" -> "main14" ;
13 -> 19 ; "main13" -> "main15" ;
12 [label="12: BinaryOperatorStmt: Assign \n *&x:int *=32 [line 17]\n " shape="box"] "main12" [label="12: + \n " ]
12 -> 3 ; "main12" -> "main18" ;
11 [label="11: BinaryOperatorStmt: Assign \n *&x:int *=17 [line 15]\n " shape="box"] "main12" -> "main19" ;
"main11" [label="11: Prune (false branch) \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 49]\n PRUNE((n$2 == 0), false); [line 49]\n " shape="invhouse"]
11 -> 3 ; "main11" -> "main30" ;
10 [label="10: Prune (false branch) \n PRUNE(((n$2 == 2) == 0), false); [line 14]\n " shape="invhouse"] "main10" [label="10: Prune (true branch) \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 49]\n PRUNE((n$2 != 0), true); [line 49]\n " shape="invhouse"]
10 -> 12 ; "main10" -> "main13" ;
9 [label="9: Prune (true branch) \n PRUNE(((n$2 == 2) != 0), true); [line 14]\n " shape="invhouse"] "main9" [label="9: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =1 [line 49]\n " shape="box"]
9 -> 11 ; "main9" -> "main5" ;
8 [label="8: BinaryOperatorStmt: EQ \n n$1=*&x:int * [line 14]\n n$2=*n$1:int [line 14]\n " shape="box"] "main8" [label="8: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =0 [line 49]\n " shape="box"]
8 -> 9 ; "main8" -> "main5" ;
8 -> 10 ; "main7" [label="7: Prune (false branch) \n n$1=*&spec:char * [line 49]\n PRUNE((n$1 == 0), false); [line 49]\n " shape="invhouse"]
7 [label="7: Prune (false branch) \n PRUNE(((n$0 == 0) == 0), false); [line 14]\n " shape="invhouse"]
7 -> 8 ; "main7" -> "main9" ;
6 [label="6: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 14]\n " shape="invhouse"] "main6" [label="6: Prune (true branch) \n n$1=*&spec:char * [line 49]\n PRUNE((n$1 != 0), true); [line 49]\n " shape="invhouse"]
6 -> 11 ; "main6" -> "main8" ;
5 [label="5: BinaryOperatorStmt: EQ \n n$0=*&x:int * [line 14]\n " shape="box"] "main5" [label="5: + \n " ]
5 -> 6 ; "main5" -> "main10" ;
5 -> 7 ; "main5" -> "main11" ;
4 [label="4: between_join_and_exit \n " shape="box"] "main4" [label="4: + \n " ]
4 -> 2 ; "main4" -> "main3" ;
3 [label="3: + \n " ] "main3" [label="3: Return Stmt \n *&return:int =0 [line 56]\n " shape="box"]
3 -> 4 ; "main3" -> "main2" ;
2 [label="2: Exit shortcircuit_or \n " color=yellow style=filled] "main2" [label="2: Exit main \n " color=yellow style=filled]
1 [label="1: Start shortcircuit_or\nFormals: x:int *\nLocals: \n DECLARE_LOCALS(&return); [line 12]\n " color=yellow style=filled] "main1" [label="1: Start main\nFormals: \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:int 0$?%__sil_tmpSIL_temp_conditional___n$3:int 0$?%__sil_tmpSIL_temp_conditional___n$7:int block_size:char * spec:char * \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0,&0$?%__sil_tmpSIL_temp_conditional___n$3,&0$?%__sil_tmpSIL_temp_conditional___n$7,&block_size,&spec); [line 42]\n " color=yellow style=filled]
1 -> 5 ; "main1" -> "main34" ;
} }

@ -1,139 +1,139 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
34 [label="34: Return Stmt \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 29]\n *&return:int =n$2 [line 29]\n " shape="box"] "neg8" [label="8: Return Stmt \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 29]\n *&return:int =n$2 [line 29]\n " shape="box"]
34 -> 28 ; "neg8" -> "neg2" ;
33 [label="33: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =1 [line 29]\n " shape="box"] "neg7" [label="7: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =1 [line 29]\n " shape="box"]
33 -> 29 ; "neg7" -> "neg3" ;
32 [label="32: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =0 [line 29]\n " shape="box"] "neg6" [label="6: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =0 [line 29]\n " shape="box"]
32 -> 29 ; "neg6" -> "neg3" ;
31 [label="31: Prune (false branch) \n n$1=*&x:int [line 29]\n PRUNE((n$1 == 0), false); [line 29]\n " shape="invhouse"] "neg5" [label="5: Prune (false branch) \n n$1=*&x:int [line 29]\n PRUNE((n$1 == 0), false); [line 29]\n " shape="invhouse"]
31 -> 33 ; "neg5" -> "neg7" ;
30 [label="30: Prune (true branch) \n n$1=*&x:int [line 29]\n PRUNE((n$1 != 0), true); [line 29]\n " shape="invhouse"] "neg4" [label="4: Prune (true branch) \n n$1=*&x:int [line 29]\n PRUNE((n$1 != 0), true); [line 29]\n " shape="invhouse"]
30 -> 32 ; "neg4" -> "neg6" ;
29 [label="29: + \n " ] "neg3" [label="3: + \n " ]
29 -> 34 ; "neg3" -> "neg8" ;
28 [label="28: Exit neg \n " color=yellow style=filled] "neg2" [label="2: Exit neg \n " color=yellow style=filled]
27 [label="27: Start neg\nFormals: x:int \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0); [line 29]\n " color=yellow style=filled] "neg1" [label="1: Start neg\nFormals: x:int \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0); [line 29]\n " color=yellow style=filled]
27 -> 30 ; "neg1" -> "neg4" ;
27 -> 31 ; "neg1" -> "neg5" ;
26 [label="26: Return Stmt \n *&return:int =0 [line 25]\n " shape="box"] "baz14" [label="14: Return Stmt \n *&return:int =0 [line 25]\n " shape="box"]
26 -> 14 ; "baz14" -> "baz2" ;
25 [label="25: Return Stmt \n *&return:int =1 [line 23]\n " shape="box"] "baz13" [label="13: Return Stmt \n *&return:int =1 [line 23]\n " shape="box"]
25 -> 14 ; "baz13" -> "baz2" ;
24 [label="24: Prune (false branch) \n PRUNE((n$3 == 0), false); [line 22]\n " shape="invhouse"] "baz12" [label="12: Prune (false branch) \n PRUNE((n$3 == 0), false); [line 22]\n " shape="invhouse"]
24 -> 26 ; "baz12" -> "baz14" ;
23 [label="23: Prune (true branch) \n PRUNE((n$3 != 0), true); [line 22]\n " shape="invhouse"] "baz11" [label="11: Prune (true branch) \n PRUNE((n$3 != 0), true); [line 22]\n " shape="invhouse"]
23 -> 25 ; "baz11" -> "baz13" ;
22 [label="22: Call _fun_identity \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 22]\n n$3=_fun_identity(n$2:int ) [line 22]\n " shape="box"] "baz10" [label="10: Call _fun_identity \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 22]\n n$3=_fun_identity(n$2:int ) [line 22]\n " shape="box"]
22 -> 23 ; "baz10" -> "baz11" ;
22 -> 24 ; "baz10" -> "baz12" ;
21 [label="21: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =1 [line 22]\n " shape="box"] "baz9" [label="9: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =1 [line 22]\n " shape="box"]
21 -> 17 ; "baz9" -> "baz5" ;
20 [label="20: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =0 [line 22]\n " shape="box"] "baz8" [label="8: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =0 [line 22]\n " shape="box"]
20 -> 17 ; "baz8" -> "baz5" ;
19 [label="19: Prune (false branch) \n n$1=*&x:int [line 22]\n PRUNE((n$1 == 0), false); [line 22]\n " shape="invhouse"] "baz7" [label="7: Prune (false branch) \n n$1=*&x:int [line 22]\n PRUNE((n$1 == 0), false); [line 22]\n " shape="invhouse"]
19 -> 21 ; "baz7" -> "baz9" ;
18 [label="18: Prune (true branch) \n n$1=*&x:int [line 22]\n PRUNE((n$1 != 0), true); [line 22]\n " shape="invhouse"] "baz6" [label="6: Prune (true branch) \n n$1=*&x:int [line 22]\n PRUNE((n$1 != 0), true); [line 22]\n " shape="invhouse"]
18 -> 20 ; "baz6" -> "baz8" ;
17 [label="17: + \n " ] "baz5" [label="5: + \n " ]
17 -> 22 ; "baz5" -> "baz10" ;
16 [label="16: between_join_and_exit \n " shape="box"] "baz4" [label="4: between_join_and_exit \n " shape="box"]
16 -> 14 ; "baz4" -> "baz2" ;
15 [label="15: + \n " ] "baz3" [label="3: + \n " ]
15 -> 16 ; "baz3" -> "baz4" ;
14 [label="14: Exit baz \n " color=yellow style=filled] "baz2" [label="2: Exit baz \n " color=yellow style=filled]
13 [label="13: Start baz\nFormals: x:int \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0); [line 20]\n " color=yellow style=filled] "baz1" [label="1: Start baz\nFormals: x:int \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0); [line 20]\n " color=yellow style=filled]
13 -> 18 ; "baz1" -> "baz6" ;
13 -> 19 ; "baz1" -> "baz7" ;
12 [label="12: Return Stmt \n *&return:int =0 [line 16]\n " shape="box"] "identity3" [label="3: Return Stmt \n n$0=*&x:int [line 10]\n *&return:int =n$0 [line 10]\n " shape="box"]
12 -> 5 ; "identity3" -> "identity2" ;
11 [label="11: Return Stmt \n *&return:int =1 [line 14]\n " shape="box"] "identity2" [label="2: Exit identity \n " color=yellow style=filled]
11 -> 5 ; "identity1" [label="1: Start identity\nFormals: x:int \nLocals: \n DECLARE_LOCALS(&return); [line 10]\n " color=yellow style=filled]
10 [label="10: Prune (false branch) \n PRUNE((n$1 == 0), false); [line 13]\n " shape="invhouse"]
10 -> 12 ; "identity1" -> "identity3" ;
9 [label="9: Prune (true branch) \n PRUNE((n$1 != 0), true); [line 13]\n " shape="invhouse"] "bar9" [label="9: Return Stmt \n *&return:int =0 [line 16]\n " shape="box"]
9 -> 11 ; "bar9" -> "bar2" ;
8 [label="8: Call _fun_identity \n n$0=*&x:int [line 13]\n n$1=_fun_identity(n$0:int ) [line 13]\n " shape="box"] "bar8" [label="8: Return Stmt \n *&return:int =1 [line 14]\n " shape="box"]
8 -> 9 ; "bar8" -> "bar2" ;
8 -> 10 ; "bar7" [label="7: Prune (false branch) \n PRUNE((n$1 == 0), false); [line 13]\n " shape="invhouse"]
7 [label="7: between_join_and_exit \n " shape="box"]
7 -> 5 ; "bar7" -> "bar9" ;
6 [label="6: + \n " ] "bar6" [label="6: Prune (true branch) \n PRUNE((n$1 != 0), true); [line 13]\n " shape="invhouse"]
6 -> 7 ; "bar6" -> "bar8" ;
5 [label="5: Exit bar \n " color=yellow style=filled] "bar5" [label="5: Call _fun_identity \n n$0=*&x:int [line 13]\n n$1=_fun_identity(n$0:int ) [line 13]\n " shape="box"]
4 [label="4: Start bar\nFormals: x:int \nLocals: \n DECLARE_LOCALS(&return); [line 12]\n " color=yellow style=filled] "bar5" -> "bar6" ;
"bar5" -> "bar7" ;
"bar4" [label="4: between_join_and_exit \n " shape="box"]
4 -> 8 ; "bar4" -> "bar2" ;
3 [label="3: Return Stmt \n n$0=*&x:int [line 10]\n *&return:int =n$0 [line 10]\n " shape="box"] "bar3" [label="3: + \n " ]
3 -> 2 ; "bar3" -> "bar4" ;
2 [label="2: Exit identity \n " color=yellow style=filled] "bar2" [label="2: Exit bar \n " color=yellow style=filled]
1 [label="1: Start identity\nFormals: x:int \nLocals: \n DECLARE_LOCALS(&return); [line 10]\n " color=yellow style=filled] "bar1" [label="1: Start bar\nFormals: x:int \nLocals: \n DECLARE_LOCALS(&return); [line 12]\n " color=yellow style=filled]
1 -> 3 ; "bar1" -> "bar5" ;
} }

@ -1,99 +1,99 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
24 [label="24: DeclStmt \n n$3=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 22]\n *&z:int =n$3 [line 22]\n " shape="box"] "access_field_in_ife_branch8" [label="8: DeclStmt \n n$3=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 22]\n *&z:int =n$3 [line 22]\n " shape="box"]
24 -> 18 ; "access_field_in_ife_branch8" -> "access_field_in_ife_branch2" ;
23 [label="23: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =0 [line 22]\n " shape="box"] "access_field_in_ife_branch7" [label="7: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =0 [line 22]\n " shape="box"]
23 -> 19 ; "access_field_in_ife_branch7" -> "access_field_in_ife_branch3" ;
22 [label="22: ConditinalStmt Branch \n n$1=_fun_ret_ptr(4:int ) [line 22]\n n$2=*n$1.field:int [line 22]\n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =n$2 [line 22]\n " shape="box"] "access_field_in_ife_branch6" [label="6: ConditinalStmt Branch \n n$1=_fun_ret_ptr(4:int ) [line 22]\n n$2=*n$1.field:int [line 22]\n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =n$2 [line 22]\n " shape="box"]
22 -> 19 ; "access_field_in_ife_branch6" -> "access_field_in_ife_branch3" ;
21 [label="21: Prune (false branch) \n PRUNE((1 == 0), false); [line 22]\n " shape="invhouse"] "access_field_in_ife_branch5" [label="5: Prune (false branch) \n PRUNE((1 == 0), false); [line 22]\n " shape="invhouse"]
21 -> 23 ; "access_field_in_ife_branch5" -> "access_field_in_ife_branch7" ;
20 [label="20: Prune (true branch) \n PRUNE((1 != 0), true); [line 22]\n " shape="invhouse"] "access_field_in_ife_branch4" [label="4: Prune (true branch) \n PRUNE((1 != 0), true); [line 22]\n " shape="invhouse"]
20 -> 22 ; "access_field_in_ife_branch4" -> "access_field_in_ife_branch6" ;
19 [label="19: + \n " ] "access_field_in_ife_branch3" [label="3: + \n " ]
19 -> 24 ; "access_field_in_ife_branch3" -> "access_field_in_ife_branch8" ;
18 [label="18: Exit access_field_in_ife_branch \n " color=yellow style=filled] "access_field_in_ife_branch2" [label="2: Exit access_field_in_ife_branch \n " color=yellow style=filled]
17 [label="17: Start access_field_in_ife_branch\nFormals: \nLocals: z:int 0$?%__sil_tmpSIL_temp_conditional___n$0:int \n DECLARE_LOCALS(&return,&z,&0$?%__sil_tmpSIL_temp_conditional___n$0); [line 22]\n " color=yellow style=filled] "access_field_in_ife_branch1" [label="1: Start access_field_in_ife_branch\nFormals: \nLocals: z:int 0$?%__sil_tmpSIL_temp_conditional___n$0:int \n DECLARE_LOCALS(&return,&z,&0$?%__sil_tmpSIL_temp_conditional___n$0); [line 22]\n " color=yellow style=filled]
17 -> 20 ; "access_field_in_ife_branch1" -> "access_field_in_ife_branch4" ;
17 -> 21 ; "access_field_in_ife_branch1" -> "access_field_in_ife_branch5" ;
16 [label="16: DeclStmt \n n$1=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 20]\n n$2=_fun_ret_ptr(n$1:int ) [line 20]\n n$3=*n$2.field:int [line 20]\n *&z:int =n$3 [line 20]\n " shape="box"] "call_ife_then_access_field8" [label="8: DeclStmt \n n$1=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 20]\n n$2=_fun_ret_ptr(n$1:int ) [line 20]\n n$3=*n$2.field:int [line 20]\n *&z:int =n$3 [line 20]\n " shape="box"]
16 -> 10 ; "call_ife_then_access_field8" -> "call_ife_then_access_field2" ;
15 [label="15: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =3 [line 20]\n " shape="box"] "call_ife_then_access_field7" [label="7: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =3 [line 20]\n " shape="box"]
15 -> 11 ; "call_ife_then_access_field7" -> "call_ife_then_access_field3" ;
14 [label="14: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =2 [line 20]\n " shape="box"] "call_ife_then_access_field6" [label="6: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =2 [line 20]\n " shape="box"]
14 -> 11 ; "call_ife_then_access_field6" -> "call_ife_then_access_field3" ;
13 [label="13: Prune (false branch) \n PRUNE((1 == 0), false); [line 20]\n " shape="invhouse"] "call_ife_then_access_field5" [label="5: Prune (false branch) \n PRUNE((1 == 0), false); [line 20]\n " shape="invhouse"]
13 -> 15 ; "call_ife_then_access_field5" -> "call_ife_then_access_field7" ;
12 [label="12: Prune (true branch) \n PRUNE((1 != 0), true); [line 20]\n " shape="invhouse"] "call_ife_then_access_field4" [label="4: Prune (true branch) \n PRUNE((1 != 0), true); [line 20]\n " shape="invhouse"]
12 -> 14 ; "call_ife_then_access_field4" -> "call_ife_then_access_field6" ;
11 [label="11: + \n " ] "call_ife_then_access_field3" [label="3: + \n " ]
11 -> 16 ; "call_ife_then_access_field3" -> "call_ife_then_access_field8" ;
10 [label="10: Exit call_ife_then_access_field \n " color=yellow style=filled] "call_ife_then_access_field2" [label="2: Exit call_ife_then_access_field \n " color=yellow style=filled]
9 [label="9: Start call_ife_then_access_field\nFormals: \nLocals: z:int 0$?%__sil_tmpSIL_temp_conditional___n$0:int \n DECLARE_LOCALS(&return,&z,&0$?%__sil_tmpSIL_temp_conditional___n$0); [line 20]\n " color=yellow style=filled] "call_ife_then_access_field1" [label="1: Start call_ife_then_access_field\nFormals: \nLocals: z:int 0$?%__sil_tmpSIL_temp_conditional___n$0:int \n DECLARE_LOCALS(&return,&z,&0$?%__sil_tmpSIL_temp_conditional___n$0); [line 20]\n " color=yellow style=filled]
9 -> 12 ; "call_ife_then_access_field1" -> "call_ife_then_access_field4" ;
9 -> 13 ; "call_ife_then_access_field1" -> "call_ife_then_access_field5" ;
8 [label="8: DeclStmt \n n$3=*&0$?%__sil_tmpSIL_temp_conditional___n$0:struct s * [line 17]\n n$4=*n$3.field:int [line 17]\n *&z:int =n$4 [line 17]\n " shape="box"] "ife_then_access_field8" [label="8: DeclStmt \n n$3=*&0$?%__sil_tmpSIL_temp_conditional___n$0:struct s * [line 17]\n n$4=*n$3.field:int [line 17]\n *&z:int =n$4 [line 17]\n " shape="box"]
8 -> 2 ; "ife_then_access_field8" -> "ife_then_access_field2" ;
7 [label="7: ConditinalStmt Branch \n n$2=*&q:struct s * [line 17]\n *&0$?%__sil_tmpSIL_temp_conditional___n$0:struct s *=n$2 [line 17]\n " shape="box"] "ife_then_access_field7" [label="7: ConditinalStmt Branch \n n$2=*&q:struct s * [line 17]\n *&0$?%__sil_tmpSIL_temp_conditional___n$0:struct s *=n$2 [line 17]\n " shape="box"]
7 -> 3 ; "ife_then_access_field7" -> "ife_then_access_field3" ;
6 [label="6: ConditinalStmt Branch \n n$1=*&p:struct s * [line 17]\n *&0$?%__sil_tmpSIL_temp_conditional___n$0:struct s *=n$1 [line 17]\n " shape="box"] "ife_then_access_field6" [label="6: ConditinalStmt Branch \n n$1=*&p:struct s * [line 17]\n *&0$?%__sil_tmpSIL_temp_conditional___n$0:struct s *=n$1 [line 17]\n " shape="box"]
6 -> 3 ; "ife_then_access_field6" -> "ife_then_access_field3" ;
5 [label="5: Prune (false branch) \n PRUNE((1 == 0), false); [line 17]\n " shape="invhouse"] "ife_then_access_field5" [label="5: Prune (false branch) \n PRUNE((1 == 0), false); [line 17]\n " shape="invhouse"]
5 -> 7 ; "ife_then_access_field5" -> "ife_then_access_field7" ;
4 [label="4: Prune (true branch) \n PRUNE((1 != 0), true); [line 17]\n " shape="invhouse"] "ife_then_access_field4" [label="4: Prune (true branch) \n PRUNE((1 != 0), true); [line 17]\n " shape="invhouse"]
4 -> 6 ; "ife_then_access_field4" -> "ife_then_access_field6" ;
3 [label="3: + \n " ] "ife_then_access_field3" [label="3: + \n " ]
3 -> 8 ; "ife_then_access_field3" -> "ife_then_access_field8" ;
2 [label="2: Exit ife_then_access_field \n " color=yellow style=filled] "ife_then_access_field2" [label="2: Exit ife_then_access_field \n " color=yellow style=filled]
1 [label="1: Start ife_then_access_field\nFormals: p:struct s * q:struct s *\nLocals: z:int 0$?%__sil_tmpSIL_temp_conditional___n$0:struct s * \n DECLARE_LOCALS(&return,&z,&0$?%__sil_tmpSIL_temp_conditional___n$0); [line 16]\n " color=yellow style=filled] "ife_then_access_field1" [label="1: Start ife_then_access_field\nFormals: p:struct s * q:struct s *\nLocals: z:int 0$?%__sil_tmpSIL_temp_conditional___n$0:struct s * \n DECLARE_LOCALS(&return,&z,&0$?%__sil_tmpSIL_temp_conditional___n$0); [line 16]\n " color=yellow style=filled]
1 -> 4 ; "ife_then_access_field1" -> "ife_then_access_field4" ;
1 -> 5 ; "ife_then_access_field1" -> "ife_then_access_field5" ;
} }

@ -1,110 +1,110 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
26 [label="26: BinaryOperatorStmt: AddAssign \n n$16=*&p:struct s * [line 15]\n n$17=*n$16.x:int [line 15]\n *n$16.x:int =(n$17 + 1) [line 15]\n " shape="box"] "preincrement26" [label="26: BinaryOperatorStmt: AddAssign \n n$16=*&p:struct s * [line 15]\n n$17=*n$16.x:int [line 15]\n *n$16.x:int =(n$17 + 1) [line 15]\n " shape="box"]
26 -> 21 ; "preincrement26" -> "preincrement21" ;
26 -> 22 ; "preincrement26" -> "preincrement22" ;
25 [label="25: BinaryOperatorStmt: AddAssign \n n$14=*&0$?%__sil_tmpSIL_temp_conditional___n$11:struct s * [line 16]\n n$15=*n$14.x:int [line 16]\n *n$14.x:int =(n$15 + 1) [line 16]\n " shape="box"] "preincrement25" [label="25: BinaryOperatorStmt: AddAssign \n n$14=*&0$?%__sil_tmpSIL_temp_conditional___n$11:struct s * [line 16]\n n$15=*n$14.x:int [line 16]\n *n$14.x:int =(n$15 + 1) [line 16]\n " shape="box"]
25 -> 15 ; "preincrement25" -> "preincrement15" ;
25 -> 16 ; "preincrement25" -> "preincrement16" ;
24 [label="24: ConditinalStmt Branch \n n$13=*&p:struct s * [line 16]\n *&0$?%__sil_tmpSIL_temp_conditional___n$11:struct s *=n$13 [line 16]\n " shape="box"] "preincrement24" [label="24: ConditinalStmt Branch \n n$13=*&p:struct s * [line 16]\n *&0$?%__sil_tmpSIL_temp_conditional___n$11:struct s *=n$13 [line 16]\n " shape="box"]
24 -> 20 ; "preincrement24" -> "preincrement20" ;
23 [label="23: ConditinalStmt Branch \n n$12=*&p:struct s * [line 16]\n *&0$?%__sil_tmpSIL_temp_conditional___n$11:struct s *=n$12 [line 16]\n " shape="box"] "preincrement23" [label="23: ConditinalStmt Branch \n n$12=*&p:struct s * [line 16]\n *&0$?%__sil_tmpSIL_temp_conditional___n$11:struct s *=n$12 [line 16]\n " shape="box"]
23 -> 20 ; "preincrement23" -> "preincrement20" ;
22 [label="22: Prune (false branch) \n PRUNE((1 == 0), false); [line 16]\n " shape="invhouse"] "preincrement22" [label="22: Prune (false branch) \n PRUNE((1 == 0), false); [line 16]\n " shape="invhouse"]
22 -> 24 ; "preincrement22" -> "preincrement24" ;
21 [label="21: Prune (true branch) \n PRUNE((1 != 0), true); [line 16]\n " shape="invhouse"] "preincrement21" [label="21: Prune (true branch) \n PRUNE((1 != 0), true); [line 16]\n " shape="invhouse"]
21 -> 23 ; "preincrement21" -> "preincrement23" ;
20 [label="20: + \n " ] "preincrement20" [label="20: + \n " ]
20 -> 25 ; "preincrement20" -> "preincrement25" ;
19 [label="19: BinaryOperatorStmt: AddAssign \n n$7=*&p:struct s * [line 17]\n n$9=*&0$?%__sil_tmpSIL_temp_conditional___n$8:int [line 17]\n n$10=*n$7.x:int [line 17]\n *n$7.x:int =(n$10 + n$9) [line 17]\n " shape="box"] "preincrement19" [label="19: BinaryOperatorStmt: AddAssign \n n$7=*&p:struct s * [line 17]\n n$9=*&0$?%__sil_tmpSIL_temp_conditional___n$8:int [line 17]\n n$10=*n$7.x:int [line 17]\n *n$7.x:int =(n$10 + n$9) [line 17]\n " shape="box"]
19 -> 4 ; "preincrement19" -> "preincrement4" ;
19 -> 5 ; "preincrement19" -> "preincrement5" ;
18 [label="18: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$8:int =7 [line 17]\n " shape="box"] "preincrement18" [label="18: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$8:int =7 [line 17]\n " shape="box"]
18 -> 14 ; "preincrement18" -> "preincrement14" ;
17 [label="17: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$8:int =3 [line 17]\n " shape="box"] "preincrement17" [label="17: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$8:int =3 [line 17]\n " shape="box"]
17 -> 14 ; "preincrement17" -> "preincrement14" ;
16 [label="16: Prune (false branch) \n PRUNE((1 == 0), false); [line 17]\n " shape="invhouse"] "preincrement16" [label="16: Prune (false branch) \n PRUNE((1 == 0), false); [line 17]\n " shape="invhouse"]
16 -> 18 ; "preincrement16" -> "preincrement18" ;
15 [label="15: Prune (true branch) \n PRUNE((1 != 0), true); [line 17]\n " shape="invhouse"] "preincrement15" [label="15: Prune (true branch) \n PRUNE((1 != 0), true); [line 17]\n " shape="invhouse"]
15 -> 17 ; "preincrement15" -> "preincrement17" ;
14 [label="14: + \n " ] "preincrement14" [label="14: + \n " ]
14 -> 19 ; "preincrement14" -> "preincrement19" ;
13 [label="13: BinaryOperatorStmt: AddAssign \n n$3=*&0$?%__sil_tmpSIL_temp_conditional___n$0:struct s * [line 18]\n n$5=*&0$?%__sil_tmpSIL_temp_conditional___n$4:int [line 18]\n n$6=*n$3.x:int [line 18]\n *n$3.x:int =(n$6 + n$5) [line 18]\n " shape="box"] "preincrement13" [label="13: BinaryOperatorStmt: AddAssign \n n$3=*&0$?%__sil_tmpSIL_temp_conditional___n$0:struct s * [line 18]\n n$5=*&0$?%__sil_tmpSIL_temp_conditional___n$4:int [line 18]\n n$6=*n$3.x:int [line 18]\n *n$3.x:int =(n$6 + n$5) [line 18]\n " shape="box"]
13 -> 2 ; "preincrement13" -> "preincrement2" ;
12 [label="12: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$4:int =7 [line 18]\n " shape="box"] "preincrement12" [label="12: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$4:int =7 [line 18]\n " shape="box"]
12 -> 8 ; "preincrement12" -> "preincrement8" ;
11 [label="11: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$4:int =3 [line 18]\n " shape="box"] "preincrement11" [label="11: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$4:int =3 [line 18]\n " shape="box"]
11 -> 8 ; "preincrement11" -> "preincrement8" ;
10 [label="10: Prune (false branch) \n PRUNE((1 == 0), false); [line 18]\n " shape="invhouse"] "preincrement10" [label="10: Prune (false branch) \n PRUNE((1 == 0), false); [line 18]\n " shape="invhouse"]
10 -> 12 ; "preincrement10" -> "preincrement12" ;
9 [label="9: Prune (true branch) \n PRUNE((1 != 0), true); [line 18]\n " shape="invhouse"] "preincrement9" [label="9: Prune (true branch) \n PRUNE((1 != 0), true); [line 18]\n " shape="invhouse"]
9 -> 11 ; "preincrement9" -> "preincrement11" ;
8 [label="8: + \n " ] "preincrement8" [label="8: + \n " ]
8 -> 13 ; "preincrement8" -> "preincrement13" ;
7 [label="7: ConditinalStmt Branch \n n$2=*&p:struct s * [line 18]\n *&0$?%__sil_tmpSIL_temp_conditional___n$0:struct s *=n$2 [line 18]\n " shape="box"] "preincrement7" [label="7: ConditinalStmt Branch \n n$2=*&p:struct s * [line 18]\n *&0$?%__sil_tmpSIL_temp_conditional___n$0:struct s *=n$2 [line 18]\n " shape="box"]
7 -> 3 ; "preincrement7" -> "preincrement3" ;
6 [label="6: ConditinalStmt Branch \n n$1=*&p:struct s * [line 18]\n *&0$?%__sil_tmpSIL_temp_conditional___n$0:struct s *=n$1 [line 18]\n " shape="box"] "preincrement6" [label="6: ConditinalStmt Branch \n n$1=*&p:struct s * [line 18]\n *&0$?%__sil_tmpSIL_temp_conditional___n$0:struct s *=n$1 [line 18]\n " shape="box"]
6 -> 3 ; "preincrement6" -> "preincrement3" ;
5 [label="5: Prune (false branch) \n PRUNE((1 == 0), false); [line 18]\n " shape="invhouse"] "preincrement5" [label="5: Prune (false branch) \n PRUNE((1 == 0), false); [line 18]\n " shape="invhouse"]
5 -> 7 ; "preincrement5" -> "preincrement7" ;
4 [label="4: Prune (true branch) \n PRUNE((1 != 0), true); [line 18]\n " shape="invhouse"] "preincrement4" [label="4: Prune (true branch) \n PRUNE((1 != 0), true); [line 18]\n " shape="invhouse"]
4 -> 6 ; "preincrement4" -> "preincrement6" ;
3 [label="3: + \n " ] "preincrement3" [label="3: + \n " ]
3 -> 9 ; "preincrement3" -> "preincrement9" ;
3 -> 10 ; "preincrement3" -> "preincrement10" ;
2 [label="2: Exit preincrement \n " color=yellow style=filled] "preincrement2" [label="2: Exit preincrement \n " color=yellow style=filled]
1 [label="1: Start preincrement\nFormals: p:struct s *\nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:struct s * 0$?%__sil_tmpSIL_temp_conditional___n$4:int 0$?%__sil_tmpSIL_temp_conditional___n$8:int 0$?%__sil_tmpSIL_temp_conditional___n$11:struct s * \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0,&0$?%__sil_tmpSIL_temp_conditional___n$4,&0$?%__sil_tmpSIL_temp_conditional___n$8,&0$?%__sil_tmpSIL_temp_conditional___n$11); [line 14]\n " color=yellow style=filled] "preincrement1" [label="1: Start preincrement\nFormals: p:struct s *\nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:struct s * 0$?%__sil_tmpSIL_temp_conditional___n$4:int 0$?%__sil_tmpSIL_temp_conditional___n$8:int 0$?%__sil_tmpSIL_temp_conditional___n$11:struct s * \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0,&0$?%__sil_tmpSIL_temp_conditional___n$4,&0$?%__sil_tmpSIL_temp_conditional___n$8,&0$?%__sil_tmpSIL_temp_conditional___n$11); [line 14]\n " color=yellow style=filled]
1 -> 26 ; "preincrement1" -> "preincrement26" ;
} }

@ -1,85 +1,85 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
20 [label="20: BinaryOperatorStmt: Assign \n n$13=*&0$?%__sil_tmpSIL_temp_conditional___n$10:int * [line 12]\n n$14=*n$13:int [line 12]\n *&x:int =n$14 [line 12]\n " shape="box"] "dereference_ifthenelse20" [label="20: BinaryOperatorStmt: Assign \n n$13=*&0$?%__sil_tmpSIL_temp_conditional___n$10:int * [line 12]\n n$14=*n$13:int [line 12]\n *&x:int =n$14 [line 12]\n " shape="box"]
20 -> 10 ; "dereference_ifthenelse20" -> "dereference_ifthenelse10" ;
20 -> 11 ; "dereference_ifthenelse20" -> "dereference_ifthenelse11" ;
19 [label="19: ConditinalStmt Branch \n n$12=*&p:int * [line 12]\n *&0$?%__sil_tmpSIL_temp_conditional___n$10:int *=n$12 [line 12]\n " shape="box"] "dereference_ifthenelse19" [label="19: ConditinalStmt Branch \n n$12=*&p:int * [line 12]\n *&0$?%__sil_tmpSIL_temp_conditional___n$10:int *=n$12 [line 12]\n " shape="box"]
19 -> 15 ; "dereference_ifthenelse19" -> "dereference_ifthenelse15" ;
18 [label="18: ConditinalStmt Branch \n n$11=*&p:int * [line 12]\n *&0$?%__sil_tmpSIL_temp_conditional___n$10:int *=n$11 [line 12]\n " shape="box"] "dereference_ifthenelse18" [label="18: ConditinalStmt Branch \n n$11=*&p:int * [line 12]\n *&0$?%__sil_tmpSIL_temp_conditional___n$10:int *=n$11 [line 12]\n " shape="box"]
18 -> 15 ; "dereference_ifthenelse18" -> "dereference_ifthenelse15" ;
17 [label="17: Prune (false branch) \n PRUNE((1 == 0), false); [line 12]\n " shape="invhouse"] "dereference_ifthenelse17" [label="17: Prune (false branch) \n PRUNE((1 == 0), false); [line 12]\n " shape="invhouse"]
17 -> 19 ; "dereference_ifthenelse17" -> "dereference_ifthenelse19" ;
16 [label="16: Prune (true branch) \n PRUNE((1 != 0), true); [line 12]\n " shape="invhouse"] "dereference_ifthenelse16" [label="16: Prune (true branch) \n PRUNE((1 != 0), true); [line 12]\n " shape="invhouse"]
16 -> 18 ; "dereference_ifthenelse16" -> "dereference_ifthenelse18" ;
15 [label="15: + \n " ] "dereference_ifthenelse15" [label="15: + \n " ]
15 -> 20 ; "dereference_ifthenelse15" -> "dereference_ifthenelse20" ;
14 [label="14: DeclStmt \n n$8=*&0$?%__sil_tmpSIL_temp_conditional___n$5:int * [line 14]\n n$9=*n$8:int [line 14]\n *&y:int =n$9 [line 14]\n " shape="box"] "dereference_ifthenelse14" [label="14: DeclStmt \n n$8=*&0$?%__sil_tmpSIL_temp_conditional___n$5:int * [line 14]\n n$9=*n$8:int [line 14]\n *&y:int =n$9 [line 14]\n " shape="box"]
14 -> 4 ; "dereference_ifthenelse14" -> "dereference_ifthenelse4" ;
14 -> 5 ; "dereference_ifthenelse14" -> "dereference_ifthenelse5" ;
13 [label="13: ConditinalStmt Branch \n n$7=*&p:int * [line 14]\n *&0$?%__sil_tmpSIL_temp_conditional___n$5:int *=n$7 [line 14]\n " shape="box"] "dereference_ifthenelse13" [label="13: ConditinalStmt Branch \n n$7=*&p:int * [line 14]\n *&0$?%__sil_tmpSIL_temp_conditional___n$5:int *=n$7 [line 14]\n " shape="box"]
13 -> 9 ; "dereference_ifthenelse13" -> "dereference_ifthenelse9" ;
12 [label="12: ConditinalStmt Branch \n n$6=*&p:int * [line 14]\n *&0$?%__sil_tmpSIL_temp_conditional___n$5:int *=n$6 [line 14]\n " shape="box"] "dereference_ifthenelse12" [label="12: ConditinalStmt Branch \n n$6=*&p:int * [line 14]\n *&0$?%__sil_tmpSIL_temp_conditional___n$5:int *=n$6 [line 14]\n " shape="box"]
12 -> 9 ; "dereference_ifthenelse12" -> "dereference_ifthenelse9" ;
11 [label="11: Prune (false branch) \n PRUNE((1 == 0), false); [line 14]\n " shape="invhouse"] "dereference_ifthenelse11" [label="11: Prune (false branch) \n PRUNE((1 == 0), false); [line 14]\n " shape="invhouse"]
11 -> 13 ; "dereference_ifthenelse11" -> "dereference_ifthenelse13" ;
10 [label="10: Prune (true branch) \n PRUNE((1 != 0), true); [line 14]\n " shape="invhouse"] "dereference_ifthenelse10" [label="10: Prune (true branch) \n PRUNE((1 != 0), true); [line 14]\n " shape="invhouse"]
10 -> 12 ; "dereference_ifthenelse10" -> "dereference_ifthenelse12" ;
9 [label="9: + \n " ] "dereference_ifthenelse9" [label="9: + \n " ]
9 -> 14 ; "dereference_ifthenelse9" -> "dereference_ifthenelse14" ;
8 [label="8: UnaryOperator \n n$3=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int * [line 16]\n " shape="box"] "dereference_ifthenelse8" [label="8: UnaryOperator \n n$3=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int * [line 16]\n " shape="box"]
8 -> 2 ; "dereference_ifthenelse8" -> "dereference_ifthenelse2" ;
7 [label="7: ConditinalStmt Branch \n n$2=*&p:int * [line 16]\n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int *=n$2 [line 16]\n " shape="box"] "dereference_ifthenelse7" [label="7: ConditinalStmt Branch \n n$2=*&p:int * [line 16]\n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int *=n$2 [line 16]\n " shape="box"]
7 -> 3 ; "dereference_ifthenelse7" -> "dereference_ifthenelse3" ;
6 [label="6: ConditinalStmt Branch \n n$1=*&p:int * [line 16]\n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int *=n$1 [line 16]\n " shape="box"] "dereference_ifthenelse6" [label="6: ConditinalStmt Branch \n n$1=*&p:int * [line 16]\n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int *=n$1 [line 16]\n " shape="box"]
6 -> 3 ; "dereference_ifthenelse6" -> "dereference_ifthenelse3" ;
5 [label="5: Prune (false branch) \n PRUNE((1 == 0), false); [line 16]\n " shape="invhouse"] "dereference_ifthenelse5" [label="5: Prune (false branch) \n PRUNE((1 == 0), false); [line 16]\n " shape="invhouse"]
5 -> 7 ; "dereference_ifthenelse5" -> "dereference_ifthenelse7" ;
4 [label="4: Prune (true branch) \n PRUNE((1 != 0), true); [line 16]\n " shape="invhouse"] "dereference_ifthenelse4" [label="4: Prune (true branch) \n PRUNE((1 != 0), true); [line 16]\n " shape="invhouse"]
4 -> 6 ; "dereference_ifthenelse4" -> "dereference_ifthenelse6" ;
3 [label="3: + \n " ] "dereference_ifthenelse3" [label="3: + \n " ]
3 -> 8 ; "dereference_ifthenelse3" -> "dereference_ifthenelse8" ;
2 [label="2: Exit dereference_ifthenelse \n " color=yellow style=filled] "dereference_ifthenelse2" [label="2: Exit dereference_ifthenelse \n " color=yellow style=filled]
1 [label="1: Start dereference_ifthenelse\nFormals: p:int *\nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:int * y:int 0$?%__sil_tmpSIL_temp_conditional___n$5:int * 0$?%__sil_tmpSIL_temp_conditional___n$10:int * x:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0,&y,&0$?%__sil_tmpSIL_temp_conditional___n$5,&0$?%__sil_tmpSIL_temp_conditional___n$10,&x); [line 10]\n " color=yellow style=filled] "dereference_ifthenelse1" [label="1: Start dereference_ifthenelse\nFormals: p:int *\nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:int * y:int 0$?%__sil_tmpSIL_temp_conditional___n$5:int * 0$?%__sil_tmpSIL_temp_conditional___n$10:int * x:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0,&y,&0$?%__sil_tmpSIL_temp_conditional___n$5,&0$?%__sil_tmpSIL_temp_conditional___n$10,&x); [line 10]\n " color=yellow style=filled]
1 -> 16 ; "dereference_ifthenelse1" -> "dereference_ifthenelse16" ;
1 -> 17 ; "dereference_ifthenelse1" -> "dereference_ifthenelse17" ;
} }

@ -1,34 +1,34 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
8 [label="8: BinaryOperatorStmt: Assign \n *&today:int =0 [line 22]\n " shape="box"] "main8" [label="8: BinaryOperatorStmt: Assign \n *&today:int =0 [line 22]\n " shape="box"]
8 -> 7 ; "main8" -> "main7" ;
7 [label="7: BinaryOperatorStmt: Assign \n *&today:int =1 [line 23]\n " shape="box"] "main7" [label="7: BinaryOperatorStmt: Assign \n *&today:int =1 [line 23]\n " shape="box"]
7 -> 6 ; "main7" -> "main6" ;
6 [label="6: BinaryOperatorStmt: Assign \n n$0=*&today:int [line 24]\n *&today:int =(n$0 + 4) [line 24]\n " shape="box"] "main6" [label="6: BinaryOperatorStmt: Assign \n n$0=*&today:int [line 24]\n *&today:int =(n$0 + 4) [line 24]\n " shape="box"]
6 -> 5 ; "main6" -> "main5" ;
5 [label="5: BinaryOperatorStmt: Assign \n *&today:int =(2 + 1) [line 25]\n " shape="box"] "main5" [label="5: BinaryOperatorStmt: Assign \n *&today:int =(2 + 1) [line 25]\n " shape="box"]
5 -> 4 ; "main5" -> "main4" ;
4 [label="4: DeclStmt \n *&i:int =(2 + (2 - 0)) [line 26]\n " shape="box"] "main4" [label="4: DeclStmt \n *&i:int =(2 + (2 - 0)) [line 26]\n " shape="box"]
4 -> 3 ; "main4" -> "main3" ;
3 [label="3: Return Stmt \n *&return:int =0 [line 27]\n " shape="box"] "main3" [label="3: Return Stmt \n *&return:int =0 [line 27]\n " shape="box"]
3 -> 2 ; "main3" -> "main2" ;
2 [label="2: Exit main \n " color=yellow style=filled] "main2" [label="2: Exit main \n " color=yellow style=filled]
1 [label="1: Start main\nFormals: \nLocals: i:int today:int \n DECLARE_LOCALS(&return,&i,&today); [line 20]\n " color=yellow style=filled] "main1" [label="1: Start main\nFormals: \nLocals: i:int today:int \n DECLARE_LOCALS(&return,&i,&today); [line 20]\n " color=yellow style=filled]
1 -> 8 ; "main1" -> "main8" ;
} }

@ -1,18 +1,18 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
4 [label="4: DeclStmt \n *&option1:int =(1 << 0) [line 16]\n " shape="box"] "main4" [label="4: DeclStmt \n *&option1:int =(1 << 0) [line 16]\n " shape="box"]
4 -> 3 ; "main4" -> "main3" ;
3 [label="3: DeclStmt \n *&option2:int =(1 << 1) [line 17]\n " shape="box"] "main3" [label="3: DeclStmt \n *&option2:int =(1 << 1) [line 17]\n " shape="box"]
3 -> 2 ; "main3" -> "main2" ;
2 [label="2: Exit main \n " color=yellow style=filled] "main2" [label="2: Exit main \n " color=yellow style=filled]
1 [label="1: Start main\nFormals: \nLocals: option2:int option1:int \n DECLARE_LOCALS(&return,&option2,&option1); [line 15]\n " color=yellow style=filled] "main1" [label="1: Start main\nFormals: \nLocals: option2:int option1:int \n DECLARE_LOCALS(&return,&option2,&option1); [line 15]\n " color=yellow style=filled]
1 -> 4 ; "main1" -> "main4" ;
} }

@ -1,82 +1,82 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
20 [label="20: DeclStmt \n *&foo_g:int =(2 + 10) [line 23]\n " shape="box"] "other_enum_test11" [label="11: DeclStmt \n *&foo_g:int =(2 + 10) [line 23]\n " shape="box"]
20 -> 19 ; "other_enum_test11" -> "other_enum_test10" ;
19 [label="19: DeclStmt \n *&foo_a:int =0 [line 24]\n " shape="box"] "other_enum_test10" [label="10: DeclStmt \n *&foo_a:int =0 [line 24]\n " shape="box"]
19 -> 14 ; "other_enum_test10" -> "other_enum_test5" ;
18 [label="18: Return Stmt \n *&return:int =0 [line 28]\n " shape="box"] "other_enum_test9" [label="9: Return Stmt \n *&return:int =0 [line 28]\n " shape="box"]
18 -> 11 ; "other_enum_test9" -> "other_enum_test2" ;
17 [label="17: Return Stmt \n n$1=*&foo_g:int [line 26]\n n$2=*&foo_a:int [line 26]\n *&return:int =(n$1 / n$2) [line 26]\n " shape="box"] "other_enum_test8" [label="8: Return Stmt \n n$1=*&foo_g:int [line 26]\n n$2=*&foo_a:int [line 26]\n *&return:int =(n$1 / n$2) [line 26]\n " shape="box"]
17 -> 11 ; "other_enum_test8" -> "other_enum_test2" ;
16 [label="16: Prune (false branch) \n PRUNE(((n$0 == 12) == 0), false); [line 25]\n " shape="invhouse"] "other_enum_test7" [label="7: Prune (false branch) \n PRUNE(((n$0 == 12) == 0), false); [line 25]\n " shape="invhouse"]
16 -> 18 ; "other_enum_test7" -> "other_enum_test9" ;
15 [label="15: Prune (true branch) \n PRUNE(((n$0 == 12) != 0), true); [line 25]\n " shape="invhouse"] "other_enum_test6" [label="6: Prune (true branch) \n PRUNE(((n$0 == 12) != 0), true); [line 25]\n " shape="invhouse"]
15 -> 17 ; "other_enum_test6" -> "other_enum_test8" ;
14 [label="14: BinaryOperatorStmt: EQ \n n$0=*&foo_g:int [line 25]\n " shape="box"] "other_enum_test5" [label="5: BinaryOperatorStmt: EQ \n n$0=*&foo_g:int [line 25]\n " shape="box"]
14 -> 15 ; "other_enum_test5" -> "other_enum_test6" ;
14 -> 16 ; "other_enum_test5" -> "other_enum_test7" ;
13 [label="13: between_join_and_exit \n " shape="box"] "other_enum_test4" [label="4: between_join_and_exit \n " shape="box"]
13 -> 11 ; "other_enum_test4" -> "other_enum_test2" ;
12 [label="12: + \n " ] "other_enum_test3" [label="3: + \n " ]
12 -> 13 ; "other_enum_test3" -> "other_enum_test4" ;
11 [label="11: Exit other_enum_test \n " color=yellow style=filled] "other_enum_test2" [label="2: Exit other_enum_test \n " color=yellow style=filled]
10 [label="10: Start other_enum_test\nFormals: \nLocals: foo_a:int foo_g:int \n DECLARE_LOCALS(&return,&foo_a,&foo_g); [line 22]\n " color=yellow style=filled] "other_enum_test1" [label="1: Start other_enum_test\nFormals: \nLocals: foo_a:int foo_g:int \n DECLARE_LOCALS(&return,&foo_a,&foo_g); [line 22]\n " color=yellow style=filled]
10 -> 20 ; "other_enum_test1" -> "other_enum_test11" ;
9 [label="9: DeclStmt \n *&foo_a:int =0 [line 13]\n " shape="box"] "other_enum_main9" [label="9: DeclStmt \n *&foo_a:int =0 [line 13]\n " shape="box"]
9 -> 8 ; "other_enum_main9" -> "other_enum_main8" ;
8 [label="8: DeclStmt \n *&foo_b:int =1 [line 14]\n " shape="box"] "other_enum_main8" [label="8: DeclStmt \n *&foo_b:int =1 [line 14]\n " shape="box"]
8 -> 7 ; "other_enum_main8" -> "other_enum_main7" ;
7 [label="7: DeclStmt \n *&foo_c:int =10 [line 15]\n " shape="box"] "other_enum_main7" [label="7: DeclStmt \n *&foo_c:int =10 [line 15]\n " shape="box"]
7 -> 6 ; "other_enum_main7" -> "other_enum_main6" ;
6 [label="6: DeclStmt \n *&foo_d:int =11 [line 16]\n " shape="box"] "other_enum_main6" [label="6: DeclStmt \n *&foo_d:int =11 [line 16]\n " shape="box"]
6 -> 5 ; "other_enum_main6" -> "other_enum_main5" ;
5 [label="5: DeclStmt \n *&foo_e:int =1 [line 17]\n " shape="box"] "other_enum_main5" [label="5: DeclStmt \n *&foo_e:int =1 [line 17]\n " shape="box"]
5 -> 4 ; "other_enum_main5" -> "other_enum_main4" ;
4 [label="4: DeclStmt \n *&foo_f:int =2 [line 18]\n " shape="box"] "other_enum_main4" [label="4: DeclStmt \n *&foo_f:int =2 [line 18]\n " shape="box"]
4 -> 3 ; "other_enum_main4" -> "other_enum_main3" ;
3 [label="3: DeclStmt \n *&foo_g:int =(2 + 10) [line 19]\n " shape="box"] "other_enum_main3" [label="3: DeclStmt \n *&foo_g:int =(2 + 10) [line 19]\n " shape="box"]
3 -> 2 ; "other_enum_main3" -> "other_enum_main2" ;
2 [label="2: Exit other_enum_main \n " color=yellow style=filled] "other_enum_main2" [label="2: Exit other_enum_main \n " color=yellow style=filled]
1 [label="1: Start other_enum_main\nFormals: \nLocals: foo_g:int foo_f:int foo_e:int foo_d:int foo_c:int foo_b:int foo_a:int \n DECLARE_LOCALS(&return,&foo_g,&foo_f,&foo_e,&foo_d,&foo_c,&foo_b,&foo_a); [line 12]\n " color=yellow style=filled] "other_enum_main1" [label="1: Start other_enum_main\nFormals: \nLocals: foo_g:int foo_f:int foo_e:int foo_d:int foo_c:int foo_b:int foo_a:int \n DECLARE_LOCALS(&return,&foo_g,&foo_f,&foo_e,&foo_d,&foo_c,&foo_b,&foo_a); [line 12]\n " color=yellow style=filled]
1 -> 9 ; "other_enum_main1" -> "other_enum_main9" ;
} }

File diff suppressed because it is too large Load Diff

@ -1,14 +1,14 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
3 [label="3: DeclStmt \n n$0=*&z:int [line 12]\n *&a[0][0]:int =(n$0 + 1) [line 12]\n *&a[0][1]:int =2 [line 12]\n *&a[0][2]:int =3 [line 12]\n *&a[1][0]:int =5 [line 12]\n *&a[1][1]:int =6 [line 12]\n *&a[1][2]:int =7 [line 12]\n " shape="box"] "main3" [label="3: DeclStmt \n n$0=*&z:int [line 12]\n *&a[0][0]:int =(n$0 + 1) [line 12]\n *&a[0][1]:int =2 [line 12]\n *&a[0][2]:int =3 [line 12]\n *&a[1][0]:int =5 [line 12]\n *&a[1][1]:int =6 [line 12]\n *&a[1][2]:int =7 [line 12]\n " shape="box"]
3 -> 2 ; "main3" -> "main2" ;
2 [label="2: Exit main \n " color=yellow style=filled] "main2" [label="2: Exit main \n " color=yellow style=filled]
1 [label="1: Start main\nFormals: \nLocals: a:int [2][3] z:int \n DECLARE_LOCALS(&return,&a,&z); [line 10]\n " color=yellow style=filled] "main1" [label="1: Start main\nFormals: \nLocals: a:int [2][3] z:int \n DECLARE_LOCALS(&return,&a,&z); [line 10]\n " color=yellow style=filled]
1 -> 3 ; "main1" -> "main3" ;
} }

@ -1,29 +1,29 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
7 [label="7: DeclStmt \n *&p.x:int =32 [line 18]\n *&p.y:int =52 [line 18]\n n$1=*&p:struct point [line 18]\n " shape="box"] "init_with_compound_literal4" [label="4: DeclStmt \n *&p.x:int =32 [line 18]\n *&p.y:int =52 [line 18]\n n$1=*&p:struct point [line 18]\n " shape="box"]
7 -> 6 ; "init_with_compound_literal4" -> "init_with_compound_literal3" ;
6 [label="6: Return Stmt \n n$0=*&p.x:int [line 19]\n *&return:int =(1 / (n$0 - 32)) [line 19]\n " shape="box"] "init_with_compound_literal3" [label="3: Return Stmt \n n$0=*&p.x:int [line 19]\n *&return:int =(1 / (n$0 - 32)) [line 19]\n " shape="box"]
6 -> 5 ; "init_with_compound_literal3" -> "init_with_compound_literal2" ;
5 [label="5: Exit init_with_compound_literal \n " color=yellow style=filled] "init_with_compound_literal2" [label="2: Exit init_with_compound_literal \n " color=yellow style=filled]
4 [label="4: Start init_with_compound_literal\nFormals: \nLocals: p:struct point \n DECLARE_LOCALS(&return,&p); [line 17]\n " color=yellow style=filled] "init_with_compound_literal1" [label="1: Start init_with_compound_literal\nFormals: \nLocals: p:struct point \n DECLARE_LOCALS(&return,&p); [line 17]\n " color=yellow style=filled]
4 -> 7 ; "init_with_compound_literal1" -> "init_with_compound_literal4" ;
3 [label="3: Return Stmt \n *&0$?%__sil_tmpSIL_compound_literal__n$0.x:int =52 [line 15]\n *&0$?%__sil_tmpSIL_compound_literal__n$0.y:int =32 [line 15]\n n$1=*&0$?%__sil_tmpSIL_compound_literal__n$0.x:int [line 15]\n *&return:int =n$1 [line 15]\n " shape="box"] "compound_literal_expr3" [label="3: Return Stmt \n *&0$?%__sil_tmpSIL_compound_literal__n$0.x:int =52 [line 15]\n *&0$?%__sil_tmpSIL_compound_literal__n$0.y:int =32 [line 15]\n n$1=*&0$?%__sil_tmpSIL_compound_literal__n$0.x:int [line 15]\n *&return:int =n$1 [line 15]\n " shape="box"]
3 -> 2 ; "compound_literal_expr3" -> "compound_literal_expr2" ;
2 [label="2: Exit compound_literal_expr \n " color=yellow style=filled] "compound_literal_expr2" [label="2: Exit compound_literal_expr \n " color=yellow style=filled]
1 [label="1: Start compound_literal_expr\nFormals: \nLocals: 0$?%__sil_tmpSIL_compound_literal__n$0:struct point \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_compound_literal__n$0); [line 15]\n " color=yellow style=filled] "compound_literal_expr1" [label="1: Start compound_literal_expr\nFormals: \nLocals: 0$?%__sil_tmpSIL_compound_literal__n$0:struct point \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_compound_literal__n$0); [line 15]\n " color=yellow style=filled]
1 -> 3 ; "compound_literal_expr1" -> "compound_literal_expr3" ;
} }

@ -1,70 +1,70 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
18 [label="18: BinaryOperatorStmt: Assign \n *&imageDrawRect.origin.x.a:int =0 [line 58]\n *&imageDrawRect.origin.x.b:int =0 [line 58]\n *&imageDrawRect.origin.y:int =0 [line 58]\n *&imageDrawRect.z:int =0 [line 58]\n *&imageDrawRect.size:int =5 [line 58]\n n$1=*&imageDrawRect:struct rect [line 58]\n " shape="box"] "implicit_expr_set_correctly4" [label="4: BinaryOperatorStmt: Assign \n *&imageDrawRect.origin.x.a:int =0 [line 58]\n *&imageDrawRect.origin.x.b:int =0 [line 58]\n *&imageDrawRect.origin.y:int =0 [line 58]\n *&imageDrawRect.z:int =0 [line 58]\n *&imageDrawRect.size:int =5 [line 58]\n n$1=*&imageDrawRect:struct rect [line 58]\n " shape="box"]
18 -> 17 ; "implicit_expr_set_correctly4" -> "implicit_expr_set_correctly3" ;
17 [label="17: Return Stmt \n n$0=*&imageDrawRect.origin.x.a:int [line 59]\n *&return:int =(1 / n$0) [line 59]\n " shape="box"] "implicit_expr_set_correctly3" [label="3: Return Stmt \n n$0=*&imageDrawRect.origin.x.a:int [line 59]\n *&return:int =(1 / n$0) [line 59]\n " shape="box"]
17 -> 16 ; "implicit_expr_set_correctly3" -> "implicit_expr_set_correctly2" ;
16 [label="16: Exit implicit_expr_set_correctly \n " color=yellow style=filled] "implicit_expr_set_correctly2" [label="2: Exit implicit_expr_set_correctly \n " color=yellow style=filled]
15 [label="15: Start implicit_expr_set_correctly\nFormals: \nLocals: imageDrawRect:struct rect \n DECLARE_LOCALS(&return,&imageDrawRect); [line 56]\n " color=yellow style=filled] "implicit_expr_set_correctly1" [label="1: Start implicit_expr_set_correctly\nFormals: \nLocals: imageDrawRect:struct rect \n DECLARE_LOCALS(&return,&imageDrawRect); [line 56]\n " color=yellow style=filled]
15 -> 18 ; "implicit_expr_set_correctly1" -> "implicit_expr_set_correctly4" ;
14 [label="14: DeclStmt \n *&e.ssn:int =12 [line 35]\n *&e.salary:float =3000.500000 [line 35]\n *&e.doj.date:int =12 [line 35]\n *&e.doj.month:int =12 [line 35]\n *&e.doj.year:int =2010 [line 35]\n " shape="box"] "main3" [label="3: DeclStmt \n n$0=_fun_foo() [line 17]\n *&p.x:int =1 [line 17]\n *&p.y:int =(n$0 + 3) [line 17]\n " shape="box"]
14 -> 13 ; "main3" -> "main2" ;
13 [label="13: Return Stmt \n n$0=*&e.ssn:int [line 36]\n *&return:int =(1 / (n$0 - 12)) [line 36]\n " shape="box"] "main2" [label="2: Exit main \n " color=yellow style=filled]
13 -> 12 ; "main1" [label="1: Start main\nFormals: \nLocals: p:struct Point \n DECLARE_LOCALS(&return,&p); [line 17]\n " color=yellow style=filled]
12 [label="12: Exit field_set_correctly \n " color=yellow style=filled]
11 [label="11: Start field_set_correctly\nFormals: \nLocals: e:struct Employee \n DECLARE_LOCALS(&return,&e); [line 34]\n " color=yellow style=filled] "main1" -> "main3" ;
"foo3" [label="3: Return Stmt \n *&return:int =5 [line 15]\n " shape="box"]
11 -> 14 ; "foo3" -> "foo2" ;
10 [label="10: BinaryOperatorStmt: Assign \n n$2=*&p:struct Point * [line 20]\n *n$2.x:int =4 [line 20]\n *n$2.y:int =5 [line 20]\n n$3=*n$2:struct Point [line 20]\n " shape="box"] "foo2" [label="2: Exit foo \n " color=yellow style=filled]
10 -> 9 ; "foo1" [label="1: Start foo\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 15]\n " color=yellow style=filled]
9 [label="9: Return Stmt \n n$0=*&p:struct Point * [line 21]\n n$1=*n$0.x:int [line 21]\n *&return:int =(1 / (n$1 - 4)) [line 21]\n " shape="box"]
9 -> 8 ; "foo1" -> "foo3" ;
8 [label="8: Exit point_coords_set_correctly \n " color=yellow style=filled] "point_coords_set_correctly4" [label="4: BinaryOperatorStmt: Assign \n n$2=*&p:struct Point * [line 20]\n *n$2.x:int =4 [line 20]\n *n$2.y:int =5 [line 20]\n n$3=*n$2:struct Point [line 20]\n " shape="box"]
7 [label="7: Start point_coords_set_correctly\nFormals: p:struct Point *\nLocals: \n DECLARE_LOCALS(&return); [line 19]\n " color=yellow style=filled] "point_coords_set_correctly4" -> "point_coords_set_correctly3" ;
"point_coords_set_correctly3" [label="3: Return Stmt \n n$0=*&p:struct Point * [line 21]\n n$1=*n$0.x:int [line 21]\n *&return:int =(1 / (n$1 - 4)) [line 21]\n " shape="box"]
7 -> 10 ; "point_coords_set_correctly3" -> "point_coords_set_correctly2" ;
6 [label="6: DeclStmt \n n$0=_fun_foo() [line 17]\n *&p.x:int =1 [line 17]\n *&p.y:int =(n$0 + 3) [line 17]\n " shape="box"] "point_coords_set_correctly2" [label="2: Exit point_coords_set_correctly \n " color=yellow style=filled]
6 -> 5 ; "point_coords_set_correctly1" [label="1: Start point_coords_set_correctly\nFormals: p:struct Point *\nLocals: \n DECLARE_LOCALS(&return); [line 19]\n " color=yellow style=filled]
5 [label="5: Exit main \n " color=yellow style=filled]
4 [label="4: Start main\nFormals: \nLocals: p:struct Point \n DECLARE_LOCALS(&return,&p); [line 17]\n " color=yellow style=filled] "point_coords_set_correctly1" -> "point_coords_set_correctly4" ;
"field_set_correctly4" [label="4: DeclStmt \n *&e.ssn:int =12 [line 35]\n *&e.salary:float =3000.500000 [line 35]\n *&e.doj.date:int =12 [line 35]\n *&e.doj.month:int =12 [line 35]\n *&e.doj.year:int =2010 [line 35]\n " shape="box"]
4 -> 6 ; "field_set_correctly4" -> "field_set_correctly3" ;
3 [label="3: Return Stmt \n *&return:int =5 [line 15]\n " shape="box"] "field_set_correctly3" [label="3: Return Stmt \n n$0=*&e.ssn:int [line 36]\n *&return:int =(1 / (n$0 - 12)) [line 36]\n " shape="box"]
3 -> 2 ; "field_set_correctly3" -> "field_set_correctly2" ;
2 [label="2: Exit foo \n " color=yellow style=filled] "field_set_correctly2" [label="2: Exit field_set_correctly \n " color=yellow style=filled]
1 [label="1: Start foo\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 15]\n " color=yellow style=filled] "field_set_correctly1" [label="1: Start field_set_correctly\nFormals: \nLocals: e:struct Employee \n DECLARE_LOCALS(&return,&e); [line 34]\n " color=yellow style=filled]
1 -> 3 ; "field_set_correctly1" -> "field_set_correctly4" ;
} }

@ -1,43 +1,43 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
10 [label="10: DeclStmt \n *&a:int =10 [line 11]\n " shape="box"] "main10" [label="10: DeclStmt \n *&a:int =10 [line 11]\n " shape="box"]
10 -> 9 ; "main10" -> "main9" ;
9 [label="9: DeclStmt \n *&b:int =0 [line 12]\n " shape="box"] "main9" [label="9: DeclStmt \n *&b:int =0 [line 12]\n " shape="box"]
9 -> 4 ; "main9" -> "main4" ;
8 [label="8: BinaryOperatorStmt: Assign \n *&a:int =1 [line 14]\n " shape="box"] "main8" [label="8: BinaryOperatorStmt: Assign \n *&a:int =1 [line 14]\n " shape="box"]
8 -> 5 ; "main8" -> "main5" ;
7 [label="7: Prune (false branch) \n PRUNE(((n$0 < 20) == 0), false); [line 15]\n " shape="invhouse"] "main7" [label="7: Prune (false branch) \n PRUNE(((n$0 < 20) == 0), false); [line 15]\n " shape="invhouse"]
7 -> 3 ; "main7" -> "main3" ;
6 [label="6: Prune (true branch) \n PRUNE(((n$0 < 20) != 0), true); [line 15]\n " shape="invhouse"] "main6" [label="6: Prune (true branch) \n PRUNE(((n$0 < 20) != 0), true); [line 15]\n " shape="invhouse"]
6 -> 4 ; "main6" -> "main4" ;
5 [label="5: BinaryOperatorStmt: LT \n n$0=*&b:int [line 15]\n " shape="box"] "main5" [label="5: BinaryOperatorStmt: LT \n n$0=*&b:int [line 15]\n " shape="box"]
5 -> 6 ; "main5" -> "main6" ;
5 -> 7 ; "main5" -> "main7" ;
4 [label="4: + \n " ] "main4" [label="4: + \n " ]
4 -> 8 ; "main4" -> "main8" ;
3 [label="3: Return Stmt \n *&return:int =0 [line 17]\n " shape="box"] "main3" [label="3: Return Stmt \n *&return:int =0 [line 17]\n " shape="box"]
3 -> 2 ; "main3" -> "main2" ;
2 [label="2: Exit main \n " color=yellow style=filled] "main2" [label="2: Exit main \n " color=yellow style=filled]
1 [label="1: Start main\nFormals: \nLocals: b:int a:int \n DECLARE_LOCALS(&return,&b,&a); [line 10]\n " color=yellow style=filled] "main1" [label="1: Start main\nFormals: \nLocals: b:int a:int \n DECLARE_LOCALS(&return,&b,&a); [line 10]\n " color=yellow style=filled]
1 -> 10 ; "main1" -> "main10" ;
} }

@ -1,43 +1,43 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
10 [label="10: DeclStmt \n *&a:int =10 [line 11]\n " shape="box"] "main10" [label="10: DeclStmt \n *&a:int =10 [line 11]\n " shape="box"]
10 -> 9 ; "main10" -> "main9" ;
9 [label="9: DeclStmt \n *&b:int =0 [line 12]\n " shape="box"] "main9" [label="9: DeclStmt \n *&b:int =0 [line 12]\n " shape="box"]
9 -> 4 ; "main9" -> "main4" ;
8 [label="8: BinaryOperatorStmt: Assign \n *&a:int =1 [line 14]\n " shape="box"] "main8" [label="8: BinaryOperatorStmt: Assign \n *&a:int =1 [line 14]\n " shape="box"]
8 -> 5 ; "main8" -> "main5" ;
7 [label="7: Prune (false branch) \n PRUNE((n$0 == 0), false); [line 15]\n " shape="invhouse"] "main7" [label="7: Prune (false branch) \n PRUNE((n$0 == 0), false); [line 15]\n " shape="invhouse"]
7 -> 3 ; "main7" -> "main3" ;
6 [label="6: Prune (true branch) \n PRUNE((n$0 != 0), true); [line 15]\n " shape="invhouse"] "main6" [label="6: Prune (true branch) \n PRUNE((n$0 != 0), true); [line 15]\n " shape="invhouse"]
6 -> 4 ; "main6" -> "main4" ;
5 [label="5: BinaryOperatorStmt: Assign \n *&b:int =40 [line 15]\n n$0=*&b:int [line 15]\n " shape="box"] "main5" [label="5: BinaryOperatorStmt: Assign \n *&b:int =40 [line 15]\n n$0=*&b:int [line 15]\n " shape="box"]
5 -> 6 ; "main5" -> "main6" ;
5 -> 7 ; "main5" -> "main7" ;
4 [label="4: + \n " ] "main4" [label="4: + \n " ]
4 -> 8 ; "main4" -> "main8" ;
3 [label="3: Return Stmt \n *&return:int =0 [line 17]\n " shape="box"] "main3" [label="3: Return Stmt \n *&return:int =0 [line 17]\n " shape="box"]
3 -> 2 ; "main3" -> "main2" ;
2 [label="2: Exit main \n " color=yellow style=filled] "main2" [label="2: Exit main \n " color=yellow style=filled]
1 [label="1: Start main\nFormals: \nLocals: b:int a:int \n DECLARE_LOCALS(&return,&b,&a); [line 10]\n " color=yellow style=filled] "main1" [label="1: Start main\nFormals: \nLocals: b:int a:int \n DECLARE_LOCALS(&return,&b,&a); [line 10]\n " color=yellow style=filled]
1 -> 10 ; "main1" -> "main10" ;
} }

@ -1,64 +1,64 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
15 [label="15: DeclStmt \n *&a:int =10 [line 11]\n " shape="box"] "main15" [label="15: DeclStmt \n *&a:int =10 [line 11]\n " shape="box"]
15 -> 14 ; "main15" -> "main14" ;
14 [label="14: DeclStmt \n *&b:int =0 [line 12]\n " shape="box"] "main14" [label="14: DeclStmt \n *&b:int =0 [line 12]\n " shape="box"]
14 -> 4 ; "main14" -> "main4" ;
13 [label="13: BinaryOperatorStmt: Assign \n *&a:int =1 [line 14]\n " shape="box"] "main13" [label="13: BinaryOperatorStmt: Assign \n *&a:int =1 [line 14]\n " shape="box"]
13 -> 8 ; "main13" -> "main8" ;
12 [label="12: BinaryOperatorStmt: Assign \n *&a:int =2 [line 16]\n " shape="box"] "main12" [label="12: BinaryOperatorStmt: Assign \n *&a:int =2 [line 16]\n " shape="box"]
12 -> 9 ; "main12" -> "main9" ;
11 [label="11: Prune (false branch) \n PRUNE(((n$1 < 30) == 0), false); [line 17]\n " shape="invhouse"] "main11" [label="11: Prune (false branch) \n PRUNE(((n$1 < 30) == 0), false); [line 17]\n " shape="invhouse"]
11 -> 5 ; "main11" -> "main5" ;
10 [label="10: Prune (true branch) \n PRUNE(((n$1 < 30) != 0), true); [line 17]\n " shape="invhouse"] "main10" [label="10: Prune (true branch) \n PRUNE(((n$1 < 30) != 0), true); [line 17]\n " shape="invhouse"]
10 -> 8 ; "main10" -> "main8" ;
9 [label="9: BinaryOperatorStmt: LT \n n$1=*&b:int [line 17]\n " shape="box"] "main9" [label="9: BinaryOperatorStmt: LT \n n$1=*&b:int [line 17]\n " shape="box"]
9 -> 10 ; "main9" -> "main10" ;
9 -> 11 ; "main9" -> "main11" ;
8 [label="8: + \n " ] "main8" [label="8: + \n " ]
8 -> 12 ; "main8" -> "main12" ;
7 [label="7: Prune (false branch) \n PRUNE(((n$0 < 20) == 0), false); [line 18]\n " shape="invhouse"] "main7" [label="7: Prune (false branch) \n PRUNE(((n$0 < 20) == 0), false); [line 18]\n " shape="invhouse"]
7 -> 3 ; "main7" -> "main3" ;
6 [label="6: Prune (true branch) \n PRUNE(((n$0 < 20) != 0), true); [line 18]\n " shape="invhouse"] "main6" [label="6: Prune (true branch) \n PRUNE(((n$0 < 20) != 0), true); [line 18]\n " shape="invhouse"]
6 -> 4 ; "main6" -> "main4" ;
5 [label="5: BinaryOperatorStmt: LT \n n$0=*&b:int [line 18]\n " shape="box"] "main5" [label="5: BinaryOperatorStmt: LT \n n$0=*&b:int [line 18]\n " shape="box"]
5 -> 6 ; "main5" -> "main6" ;
5 -> 7 ; "main5" -> "main7" ;
4 [label="4: + \n " ] "main4" [label="4: + \n " ]
4 -> 13 ; "main4" -> "main13" ;
3 [label="3: Return Stmt \n *&return:int =0 [line 20]\n " shape="box"] "main3" [label="3: Return Stmt \n *&return:int =0 [line 20]\n " shape="box"]
3 -> 2 ; "main3" -> "main2" ;
2 [label="2: Exit main \n " color=yellow style=filled] "main2" [label="2: Exit main \n " color=yellow style=filled]
1 [label="1: Start main\nFormals: \nLocals: b:int a:int \n DECLARE_LOCALS(&return,&b,&a); [line 10]\n " color=yellow style=filled] "main1" [label="1: Start main\nFormals: \nLocals: b:int a:int \n DECLARE_LOCALS(&return,&b,&a); [line 10]\n " color=yellow style=filled]
1 -> 15 ; "main1" -> "main15" ;
} }

@ -1,51 +1,51 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
12 [label="12: DeclStmt \n *&j:int =0 [line 11]\n " shape="box"] "main12" [label="12: DeclStmt \n *&j:int =0 [line 11]\n " shape="box"]
12 -> 11 ; "main12" -> "main11" ;
11 [label="11: DeclStmt \n *&i:int =0 [line 12]\n " shape="box"] "main11" [label="11: DeclStmt \n *&i:int =0 [line 12]\n " shape="box"]
11 -> 5 ; "main11" -> "main5" ;
10 [label="10: BinaryOperatorStmt: AddAssign \n n$2=*&j:int [line 14]\n n$3=*&j:int [line 14]\n *&j:int =(n$3 + n$2) [line 14]\n " shape="box"] "main10" [label="10: BinaryOperatorStmt: AddAssign \n n$2=*&j:int [line 14]\n n$3=*&j:int [line 14]\n *&j:int =(n$3 + n$2) [line 14]\n " shape="box"]
10 -> 6 ; "main10" -> "main6" ;
9 [label="9: Prune (false branch) \n PRUNE((n$1 == 0), false); [line 13]\n " shape="invhouse"] "main9" [label="9: Prune (false branch) \n PRUNE((n$1 == 0), false); [line 13]\n " shape="invhouse"]
9 -> 3 ; "main9" -> "main3" ;
8 [label="8: Prune (true branch) \n PRUNE((n$1 != 0), true); [line 13]\n " shape="invhouse"] "main8" [label="8: Prune (true branch) \n PRUNE((n$1 != 0), true); [line 13]\n " shape="invhouse"]
8 -> 10 ; "main8" -> "main10" ;
7 [label="7: BinaryOperatorStmt: Assign \n *&b:int =10 [line 13]\n n$1=*&b:int [line 13]\n " shape="box"] "main7" [label="7: BinaryOperatorStmt: Assign \n *&b:int =10 [line 13]\n n$1=*&b:int [line 13]\n " shape="box"]
7 -> 8 ; "main7" -> "main8" ;
7 -> 9 ; "main7" -> "main9" ;
6 [label="6: UnaryOperator \n n$0=*&i:int [line 13]\n *&i:int =(n$0 + 1) [line 13]\n " shape="box"] "main6" [label="6: UnaryOperator \n n$0=*&i:int [line 13]\n *&i:int =(n$0 + 1) [line 13]\n " shape="box"]
6 -> 4 ; "main6" -> "main4" ;
5 [label="5: DeclStmt \n *&b:int =3 [line 13]\n " shape="box"] "main5" [label="5: DeclStmt \n *&b:int =3 [line 13]\n " shape="box"]
5 -> 4 ; "main5" -> "main4" ;
4 [label="4: + \n " ] "main4" [label="4: + \n " ]
4 -> 7 ; "main4" -> "main7" ;
3 [label="3: Return Stmt \n *&return:int =0 [line 16]\n " shape="box"] "main3" [label="3: Return Stmt \n *&return:int =0 [line 16]\n " shape="box"]
3 -> 2 ; "main3" -> "main2" ;
2 [label="2: Exit main \n " color=yellow style=filled] "main2" [label="2: Exit main \n " color=yellow style=filled]
1 [label="1: Start main\nFormals: \nLocals: b:int i:int j:int \n DECLARE_LOCALS(&return,&b,&i,&j); [line 10]\n " color=yellow style=filled] "main1" [label="1: Start main\nFormals: \nLocals: b:int i:int j:int \n DECLARE_LOCALS(&return,&b,&i,&j); [line 10]\n " color=yellow style=filled]
1 -> 12 ; "main1" -> "main12" ;
} }

@ -1,72 +1,72 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
17 [label="17: DeclStmt \n *&k:int =0 [line 11]\n " shape="box"] "main17" [label="17: DeclStmt \n *&k:int =0 [line 11]\n " shape="box"]
17 -> 5 ; "main17" -> "main5" ;
16 [label="16: BinaryOperatorStmt: Assign \n n$5=*&k:int [line 14]\n n$6=*&i:int [line 14]\n *&k:int =(n$5 + n$6) [line 14]\n " shape="box"] "main16" [label="16: BinaryOperatorStmt: Assign \n n$5=*&k:int [line 14]\n n$6=*&i:int [line 14]\n *&k:int =(n$5 + n$6) [line 14]\n " shape="box"]
16 -> 12 ; "main16" -> "main12" ;
15 [label="15: Prune (false branch) \n PRUNE(((n$4 < 10) == 0), false); [line 13]\n " shape="invhouse"] "main15" [label="15: Prune (false branch) \n PRUNE(((n$4 < 10) == 0), false); [line 13]\n " shape="invhouse"]
15 -> 6 ; "main15" -> "main6" ;
14 [label="14: Prune (true branch) \n PRUNE(((n$4 < 10) != 0), true); [line 13]\n " shape="invhouse"] "main14" [label="14: Prune (true branch) \n PRUNE(((n$4 < 10) != 0), true); [line 13]\n " shape="invhouse"]
14 -> 16 ; "main14" -> "main16" ;
13 [label="13: BinaryOperatorStmt: LT \n n$4=*&j:int [line 13]\n " shape="box"] "main13" [label="13: BinaryOperatorStmt: LT \n n$4=*&j:int [line 13]\n " shape="box"]
13 -> 14 ; "main13" -> "main14" ;
13 -> 15 ; "main13" -> "main15" ;
12 [label="12: UnaryOperator \n n$3=*&j:int [line 13]\n *&j:int =(n$3 + 1) [line 13]\n " shape="box"] "main12" [label="12: UnaryOperator \n n$3=*&j:int [line 13]\n *&j:int =(n$3 + 1) [line 13]\n " shape="box"]
12 -> 10 ; "main12" -> "main10" ;
11 [label="11: DeclStmt \n *&j:int =0 [line 13]\n " shape="box"] "main11" [label="11: DeclStmt \n *&j:int =0 [line 13]\n " shape="box"]
11 -> 10 ; "main11" -> "main10" ;
10 [label="10: + \n " ] "main10" [label="10: + \n " ]
10 -> 13 ; "main10" -> "main13" ;
9 [label="9: Prune (false branch) \n PRUNE(((n$2 < 10) == 0), false); [line 12]\n " shape="invhouse"] "main9" [label="9: Prune (false branch) \n PRUNE(((n$2 < 10) == 0), false); [line 12]\n " shape="invhouse"]
9 -> 3 ; "main9" -> "main3" ;
8 [label="8: Prune (true branch) \n PRUNE(((n$2 < 10) != 0), true); [line 12]\n " shape="invhouse"] "main8" [label="8: Prune (true branch) \n PRUNE(((n$2 < 10) != 0), true); [line 12]\n " shape="invhouse"]
8 -> 11 ; "main8" -> "main11" ;
7 [label="7: BinaryOperatorStmt: LT \n n$2=*&i:int [line 12]\n " shape="box"] "main7" [label="7: BinaryOperatorStmt: LT \n n$2=*&i:int [line 12]\n " shape="box"]
7 -> 8 ; "main7" -> "main8" ;
7 -> 9 ; "main7" -> "main9" ;
6 [label="6: UnaryOperator \n n$1=*&i:int [line 12]\n *&i:int =(n$1 + 1) [line 12]\n " shape="box"] "main6" [label="6: UnaryOperator \n n$1=*&i:int [line 12]\n *&i:int =(n$1 + 1) [line 12]\n " shape="box"]
6 -> 4 ; "main6" -> "main4" ;
5 [label="5: DeclStmt \n *&i:int =0 [line 12]\n " shape="box"] "main5" [label="5: DeclStmt \n *&i:int =0 [line 12]\n " shape="box"]
5 -> 4 ; "main5" -> "main4" ;
4 [label="4: + \n " ] "main4" [label="4: + \n " ]
4 -> 7 ; "main4" -> "main7" ;
3 [label="3: Return Stmt \n n$0=*&k:int [line 17]\n *&return:int =n$0 [line 17]\n " shape="box"] "main3" [label="3: Return Stmt \n n$0=*&k:int [line 17]\n *&return:int =n$0 [line 17]\n " shape="box"]
3 -> 2 ; "main3" -> "main2" ;
2 [label="2: Exit main \n " color=yellow style=filled] "main2" [label="2: Exit main \n " color=yellow style=filled]
1 [label="1: Start main\nFormals: \nLocals: i:int j:int k:int \n DECLARE_LOCALS(&return,&i,&j,&k); [line 10]\n " color=yellow style=filled] "main1" [label="1: Start main\nFormals: \nLocals: i:int j:int k:int \n DECLARE_LOCALS(&return,&i,&j,&k); [line 10]\n " color=yellow style=filled]
1 -> 17 ; "main1" -> "main17" ;
} }

@ -1,43 +1,43 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
10 [label="10: DeclStmt \n *&j:int =0 [line 11]\n " shape="box"] "main10" [label="10: DeclStmt \n *&j:int =0 [line 11]\n " shape="box"]
10 -> 5 ; "main10" -> "main5" ;
9 [label="9: BinaryOperatorStmt: AddAssign \n n$1=*&j:int [line 13]\n n$2=*&j:int [line 13]\n *&j:int =(n$2 + n$1) [line 13]\n " shape="box"] "main9" [label="9: BinaryOperatorStmt: AddAssign \n n$1=*&j:int [line 13]\n n$2=*&j:int [line 13]\n *&j:int =(n$2 + n$1) [line 13]\n " shape="box"]
9 -> 6 ; "main9" -> "main6" ;
8 [label="8: Prune (false branch) \n PRUNE((1 == 0), false); [line 12]\n " shape="invhouse"] "main8" [label="8: Prune (false branch) \n PRUNE((1 == 0), false); [line 12]\n " shape="invhouse"]
8 -> 3 ; "main8" -> "main3" ;
7 [label="7: Prune (true branch) \n PRUNE((1 != 0), true); [line 12]\n " shape="invhouse"] "main7" [label="7: Prune (true branch) \n PRUNE((1 != 0), true); [line 12]\n " shape="invhouse"]
7 -> 9 ; "main7" -> "main9" ;
6 [label="6: UnaryOperator \n n$0=*&b:int [line 12]\n *&b:int =(n$0 + 1) [line 12]\n " shape="box"] "main6" [label="6: UnaryOperator \n n$0=*&b:int [line 12]\n *&b:int =(n$0 + 1) [line 12]\n " shape="box"]
6 -> 4 ; "main6" -> "main4" ;
5 [label="5: DeclStmt \n *&b:int =0 [line 12]\n " shape="box"] "main5" [label="5: DeclStmt \n *&b:int =0 [line 12]\n " shape="box"]
5 -> 4 ; "main5" -> "main4" ;
4 [label="4: + \n " ] "main4" [label="4: + \n " ]
4 -> 7 ; "main4" -> "main7" ;
4 -> 8 ; "main4" -> "main8" ;
3 [label="3: Return Stmt \n *&return:int =0 [line 15]\n " shape="box"] "main3" [label="3: Return Stmt \n *&return:int =0 [line 15]\n " shape="box"]
3 -> 2 ; "main3" -> "main2" ;
2 [label="2: Exit main \n " color=yellow style=filled] "main2" [label="2: Exit main \n " color=yellow style=filled]
1 [label="1: Start main\nFormals: \nLocals: b:int j:int \n DECLARE_LOCALS(&return,&b,&j); [line 10]\n " color=yellow style=filled] "main1" [label="1: Start main\nFormals: \nLocals: b:int j:int \n DECLARE_LOCALS(&return,&b,&j); [line 10]\n " color=yellow style=filled]
1 -> 10 ; "main1" -> "main10" ;
} }

@ -1,39 +1,39 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
9 [label="9: DeclStmt \n *&j:int =0 [line 11]\n " shape="box"] "main9" [label="9: DeclStmt \n *&j:int =0 [line 11]\n " shape="box"]
9 -> 5 ; "main9" -> "main5" ;
8 [label="8: BinaryOperatorStmt: AddAssign \n n$0=*&j:int [line 13]\n n$1=*&j:int [line 13]\n *&j:int =(n$1 + n$0) [line 13]\n " shape="box"] "main8" [label="8: BinaryOperatorStmt: AddAssign \n n$0=*&j:int [line 13]\n n$1=*&j:int [line 13]\n *&j:int =(n$1 + n$0) [line 13]\n " shape="box"]
8 -> 4 ; "main8" -> "main4" ;
7 [label="7: Prune (false branch) \n PRUNE((1 == 0), false); [line 12]\n " shape="invhouse"] "main7" [label="7: Prune (false branch) \n PRUNE((1 == 0), false); [line 12]\n " shape="invhouse"]
7 -> 3 ; "main7" -> "main3" ;
6 [label="6: Prune (true branch) \n PRUNE((1 != 0), true); [line 12]\n " shape="invhouse"] "main6" [label="6: Prune (true branch) \n PRUNE((1 != 0), true); [line 12]\n " shape="invhouse"]
6 -> 8 ; "main6" -> "main8" ;
5 [label="5: DeclStmt \n *&b:int =0 [line 12]\n " shape="box"] "main5" [label="5: DeclStmt \n *&b:int =0 [line 12]\n " shape="box"]
5 -> 4 ; "main5" -> "main4" ;
4 [label="4: + \n " ] "main4" [label="4: + \n " ]
4 -> 6 ; "main4" -> "main6" ;
4 -> 7 ; "main4" -> "main7" ;
3 [label="3: Return Stmt \n *&return:int =0 [line 15]\n " shape="box"] "main3" [label="3: Return Stmt \n *&return:int =0 [line 15]\n " shape="box"]
3 -> 2 ; "main3" -> "main2" ;
2 [label="2: Exit main \n " color=yellow style=filled] "main2" [label="2: Exit main \n " color=yellow style=filled]
1 [label="1: Start main\nFormals: \nLocals: b:int j:int \n DECLARE_LOCALS(&return,&b,&j); [line 10]\n " color=yellow style=filled] "main1" [label="1: Start main\nFormals: \nLocals: b:int j:int \n DECLARE_LOCALS(&return,&b,&j); [line 10]\n " color=yellow style=filled]
1 -> 9 ; "main1" -> "main9" ;
} }

@ -1,35 +1,35 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
8 [label="8: DeclStmt \n *&d:int =0 [line 11]\n " shape="box"] "main8" [label="8: DeclStmt \n *&d:int =0 [line 11]\n " shape="box"]
8 -> 5 ; "main8" -> "main5" ;
7 [label="7: Prune (false branch) \n PRUNE((1 == 0), false); [line 12]\n " shape="invhouse"] "main7" [label="7: Prune (false branch) \n PRUNE((1 == 0), false); [line 12]\n " shape="invhouse"]
7 -> 3 ; "main7" -> "main3" ;
6 [label="6: Prune (true branch) \n PRUNE((1 != 0), true); [line 12]\n " shape="invhouse"] "main6" [label="6: Prune (true branch) \n PRUNE((1 != 0), true); [line 12]\n " shape="invhouse"]
6 -> 4 ; "main6" -> "main4" ;
5 [label="5: BinaryOperatorStmt: Assign \n *&d:int =0 [line 12]\n " shape="box"] "main5" [label="5: BinaryOperatorStmt: Assign \n *&d:int =0 [line 12]\n " shape="box"]
5 -> 4 ; "main5" -> "main4" ;
4 [label="4: + \n " ] "main4" [label="4: + \n " ]
4 -> 6 ; "main4" -> "main6" ;
4 -> 7 ; "main4" -> "main7" ;
3 [label="3: Return Stmt \n *&return:int =0 [line 14]\n " shape="box"] "main3" [label="3: Return Stmt \n *&return:int =0 [line 14]\n " shape="box"]
3 -> 2 ; "main3" -> "main2" ;
2 [label="2: Exit main \n " color=yellow style=filled] "main2" [label="2: Exit main \n " color=yellow style=filled]
1 [label="1: Start main\nFormals: \nLocals: d:int \n DECLARE_LOCALS(&return,&d); [line 10]\n " color=yellow style=filled] "main1" [label="1: Start main\nFormals: \nLocals: d:int \n DECLARE_LOCALS(&return,&d); [line 10]\n " color=yellow style=filled]
1 -> 8 ; "main1" -> "main8" ;
} }

@ -1,35 +1,35 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
8 [label="8: DeclStmt \n *&i:int =0 [line 11]\n " shape="box"] "main8" [label="8: DeclStmt \n *&i:int =0 [line 11]\n " shape="box"]
8 -> 4 ; "main8" -> "main4" ;
7 [label="7: UnaryOperator \n n$0=*&i:int [line 13]\n *&i:int =(n$0 + 1) [line 13]\n " shape="box"] "main7" [label="7: UnaryOperator \n n$0=*&i:int [line 13]\n *&i:int =(n$0 + 1) [line 13]\n " shape="box"]
7 -> 4 ; "main7" -> "main4" ;
6 [label="6: Prune (false branch) \n PRUNE((1 == 0), false); [line 14]\n " shape="invhouse"] "main6" [label="6: Prune (false branch) \n PRUNE((1 == 0), false); [line 14]\n " shape="invhouse"]
6 -> 3 ; "main6" -> "main3" ;
5 [label="5: Prune (true branch) \n PRUNE((1 != 0), true); [line 14]\n " shape="invhouse"] "main5" [label="5: Prune (true branch) \n PRUNE((1 != 0), true); [line 14]\n " shape="invhouse"]
5 -> 7 ; "main5" -> "main7" ;
4 [label="4: + \n " ] "main4" [label="4: + \n " ]
4 -> 5 ; "main4" -> "main5" ;
4 -> 6 ; "main4" -> "main6" ;
3 [label="3: Return Stmt \n *&return:int =0 [line 15]\n " shape="box"] "main3" [label="3: Return Stmt \n *&return:int =0 [line 15]\n " shape="box"]
3 -> 2 ; "main3" -> "main2" ;
2 [label="2: Exit main \n " color=yellow style=filled] "main2" [label="2: Exit main \n " color=yellow style=filled]
1 [label="1: Start main\nFormals: \nLocals: i:int \n DECLARE_LOCALS(&return,&i); [line 10]\n " color=yellow style=filled] "main1" [label="1: Start main\nFormals: \nLocals: i:int \n DECLARE_LOCALS(&return,&i); [line 10]\n " color=yellow style=filled]
1 -> 8 ; "main1" -> "main8" ;
} }

@ -1,47 +1,47 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
11 [label="11: DeclStmt \n *&j:int =0 [line 11]\n " shape="box"] "main11" [label="11: DeclStmt \n *&j:int =0 [line 11]\n " shape="box"]
11 -> 5 ; "main11" -> "main5" ;
10 [label="10: BinaryOperatorStmt: AddAssign \n n$2=*&j:int [line 13]\n n$3=*&j:int [line 13]\n *&j:int =(n$3 + n$2) [line 13]\n " shape="box"] "main10" [label="10: BinaryOperatorStmt: AddAssign \n n$2=*&j:int [line 13]\n n$3=*&j:int [line 13]\n *&j:int =(n$3 + n$2) [line 13]\n " shape="box"]
10 -> 6 ; "main10" -> "main6" ;
9 [label="9: Prune (false branch) \n PRUNE(((n$1 < 10) == 0), false); [line 12]\n " shape="invhouse"] "main9" [label="9: Prune (false branch) \n PRUNE(((n$1 < 10) == 0), false); [line 12]\n " shape="invhouse"]
9 -> 3 ; "main9" -> "main3" ;
8 [label="8: Prune (true branch) \n PRUNE(((n$1 < 10) != 0), true); [line 12]\n " shape="invhouse"] "main8" [label="8: Prune (true branch) \n PRUNE(((n$1 < 10) != 0), true); [line 12]\n " shape="invhouse"]
8 -> 10 ; "main8" -> "main10" ;
7 [label="7: BinaryOperatorStmt: LT \n n$1=*&i:int [line 12]\n " shape="box"] "main7" [label="7: BinaryOperatorStmt: LT \n n$1=*&i:int [line 12]\n " shape="box"]
7 -> 8 ; "main7" -> "main8" ;
7 -> 9 ; "main7" -> "main9" ;
6 [label="6: UnaryOperator \n n$0=*&i:int [line 12]\n *&i:int =(n$0 + 1) [line 12]\n " shape="box"] "main6" [label="6: UnaryOperator \n n$0=*&i:int [line 12]\n *&i:int =(n$0 + 1) [line 12]\n " shape="box"]
6 -> 4 ; "main6" -> "main4" ;
5 [label="5: DeclStmt \n *&i:int =0 [line 12]\n " shape="box"] "main5" [label="5: DeclStmt \n *&i:int =0 [line 12]\n " shape="box"]
5 -> 4 ; "main5" -> "main4" ;
4 [label="4: + \n " ] "main4" [label="4: + \n " ]
4 -> 7 ; "main4" -> "main7" ;
3 [label="3: Return Stmt \n *&return:int =0 [line 15]\n " shape="box"] "main3" [label="3: Return Stmt \n *&return:int =0 [line 15]\n " shape="box"]
3 -> 2 ; "main3" -> "main2" ;
2 [label="2: Exit main \n " color=yellow style=filled] "main2" [label="2: Exit main \n " color=yellow style=filled]
1 [label="1: Start main\nFormals: \nLocals: i:int j:int \n DECLARE_LOCALS(&return,&i,&j); [line 10]\n " color=yellow style=filled] "main1" [label="1: Start main\nFormals: \nLocals: i:int j:int \n DECLARE_LOCALS(&return,&i,&j); [line 10]\n " color=yellow style=filled]
1 -> 11 ; "main1" -> "main11" ;
} }

@ -1,64 +1,64 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
15 [label="15: DeclStmt \n *&k:int =0 [line 11]\n " shape="box"] "main15" [label="15: DeclStmt \n *&k:int =0 [line 11]\n " shape="box"]
15 -> 5 ; "main15" -> "main5" ;
14 [label="14: UnaryOperator \n n$4=*&k:int [line 14]\n *&k:int =(n$4 + 1) [line 14]\n " shape="box"] "main14" [label="14: UnaryOperator \n n$4=*&k:int [line 14]\n *&k:int =(n$4 + 1) [line 14]\n " shape="box"]
14 -> 10 ; "main14" -> "main10" ;
13 [label="13: Prune (false branch) \n PRUNE(((n$3 < 10) == 0), false); [line 13]\n " shape="invhouse"] "main13" [label="13: Prune (false branch) \n PRUNE(((n$3 < 10) == 0), false); [line 13]\n " shape="invhouse"]
13 -> 6 ; "main13" -> "main6" ;
12 [label="12: Prune (true branch) \n PRUNE(((n$3 < 10) != 0), true); [line 13]\n " shape="invhouse"] "main12" [label="12: Prune (true branch) \n PRUNE(((n$3 < 10) != 0), true); [line 13]\n " shape="invhouse"]
12 -> 14 ; "main12" -> "main14" ;
11 [label="11: BinaryOperatorStmt: LT \n n$3=*&k:int [line 13]\n " shape="box"] "main11" [label="11: BinaryOperatorStmt: LT \n n$3=*&k:int [line 13]\n " shape="box"]
11 -> 12 ; "main11" -> "main12" ;
11 -> 13 ; "main11" -> "main13" ;
10 [label="10: + \n " ] "main10" [label="10: + \n " ]
10 -> 11 ; "main10" -> "main11" ;
9 [label="9: Prune (false branch) \n PRUNE(((n$2 < 10) == 0), false); [line 12]\n " shape="invhouse"] "main9" [label="9: Prune (false branch) \n PRUNE(((n$2 < 10) == 0), false); [line 12]\n " shape="invhouse"]
9 -> 3 ; "main9" -> "main3" ;
8 [label="8: Prune (true branch) \n PRUNE(((n$2 < 10) != 0), true); [line 12]\n " shape="invhouse"] "main8" [label="8: Prune (true branch) \n PRUNE(((n$2 < 10) != 0), true); [line 12]\n " shape="invhouse"]
8 -> 10 ; "main8" -> "main10" ;
7 [label="7: BinaryOperatorStmt: LT \n n$2=*&i:int [line 12]\n " shape="box"] "main7" [label="7: BinaryOperatorStmt: LT \n n$2=*&i:int [line 12]\n " shape="box"]
7 -> 8 ; "main7" -> "main8" ;
7 -> 9 ; "main7" -> "main9" ;
6 [label="6: UnaryOperator \n n$1=*&i:int [line 12]\n *&i:int =(n$1 + 1) [line 12]\n " shape="box"] "main6" [label="6: UnaryOperator \n n$1=*&i:int [line 12]\n *&i:int =(n$1 + 1) [line 12]\n " shape="box"]
6 -> 4 ; "main6" -> "main4" ;
5 [label="5: DeclStmt \n *&i:int =0 [line 12]\n " shape="box"] "main5" [label="5: DeclStmt \n *&i:int =0 [line 12]\n " shape="box"]
5 -> 4 ; "main5" -> "main4" ;
4 [label="4: + \n " ] "main4" [label="4: + \n " ]
4 -> 7 ; "main4" -> "main7" ;
3 [label="3: Return Stmt \n n$0=*&k:int [line 17]\n *&return:int =n$0 [line 17]\n " shape="box"] "main3" [label="3: Return Stmt \n n$0=*&k:int [line 17]\n *&return:int =n$0 [line 17]\n " shape="box"]
3 -> 2 ; "main3" -> "main2" ;
2 [label="2: Exit main \n " color=yellow style=filled] "main2" [label="2: Exit main \n " color=yellow style=filled]
1 [label="1: Start main\nFormals: \nLocals: i:int k:int \n DECLARE_LOCALS(&return,&i,&k); [line 10]\n " color=yellow style=filled] "main1" [label="1: Start main\nFormals: \nLocals: i:int k:int \n DECLARE_LOCALS(&return,&i,&k); [line 10]\n " color=yellow style=filled]
1 -> 15 ; "main1" -> "main15" ;
} }

@ -1,39 +1,39 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
9 [label="9: DeclStmt \n *&i:int =0 [line 11]\n " shape="box"] "main9" [label="9: DeclStmt \n *&i:int =0 [line 11]\n " shape="box"]
9 -> 4 ; "main9" -> "main4" ;
8 [label="8: UnaryOperator \n n$1=*&i:int [line 13]\n *&i:int =(n$1 + 1) [line 13]\n " shape="box"] "main8" [label="8: UnaryOperator \n n$1=*&i:int [line 13]\n *&i:int =(n$1 + 1) [line 13]\n " shape="box"]
8 -> 4 ; "main8" -> "main4" ;
7 [label="7: Prune (false branch) \n PRUNE(((n$0 <= 10) == 0), false); [line 12]\n " shape="invhouse"] "main7" [label="7: Prune (false branch) \n PRUNE(((n$0 <= 10) == 0), false); [line 12]\n " shape="invhouse"]
7 -> 3 ; "main7" -> "main3" ;
6 [label="6: Prune (true branch) \n PRUNE(((n$0 <= 10) != 0), true); [line 12]\n " shape="invhouse"] "main6" [label="6: Prune (true branch) \n PRUNE(((n$0 <= 10) != 0), true); [line 12]\n " shape="invhouse"]
6 -> 8 ; "main6" -> "main8" ;
5 [label="5: BinaryOperatorStmt: LE \n n$0=*&i:int [line 12]\n " shape="box"] "main5" [label="5: BinaryOperatorStmt: LE \n n$0=*&i:int [line 12]\n " shape="box"]
5 -> 6 ; "main5" -> "main6" ;
5 -> 7 ; "main5" -> "main7" ;
4 [label="4: + \n " ] "main4" [label="4: + \n " ]
4 -> 5 ; "main4" -> "main5" ;
3 [label="3: Return Stmt \n *&return:int =0 [line 15]\n " shape="box"] "main3" [label="3: Return Stmt \n *&return:int =0 [line 15]\n " shape="box"]
3 -> 2 ; "main3" -> "main2" ;
2 [label="2: Exit main \n " color=yellow style=filled] "main2" [label="2: Exit main \n " color=yellow style=filled]
1 [label="1: Start main\nFormals: \nLocals: i:int \n DECLARE_LOCALS(&return,&i); [line 10]\n " color=yellow style=filled] "main1" [label="1: Start main\nFormals: \nLocals: i:int \n DECLARE_LOCALS(&return,&i); [line 10]\n " color=yellow style=filled]
1 -> 9 ; "main1" -> "main9" ;
} }

@ -1,39 +1,39 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
9 [label="9: DeclStmt \n *&i:int =0 [line 11]\n " shape="box"] "main9" [label="9: DeclStmt \n *&i:int =0 [line 11]\n " shape="box"]
9 -> 4 ; "main9" -> "main4" ;
8 [label="8: UnaryOperator \n n$1=*&i:int [line 13]\n *&i:int =(n$1 + 1) [line 13]\n " shape="box"] "main8" [label="8: UnaryOperator \n n$1=*&i:int [line 13]\n *&i:int =(n$1 + 1) [line 13]\n " shape="box"]
8 -> 4 ; "main8" -> "main4" ;
7 [label="7: Prune (false branch) \n PRUNE((n$0 == 0), false); [line 12]\n " shape="invhouse"] "main7" [label="7: Prune (false branch) \n PRUNE((n$0 == 0), false); [line 12]\n " shape="invhouse"]
7 -> 3 ; "main7" -> "main3" ;
6 [label="6: Prune (true branch) \n PRUNE((n$0 != 0), true); [line 12]\n " shape="invhouse"] "main6" [label="6: Prune (true branch) \n PRUNE((n$0 != 0), true); [line 12]\n " shape="invhouse"]
6 -> 8 ; "main6" -> "main8" ;
5 [label="5: BinaryOperatorStmt: Assign \n *&i:int =10 [line 12]\n n$0=*&i:int [line 12]\n " shape="box"] "main5" [label="5: BinaryOperatorStmt: Assign \n *&i:int =10 [line 12]\n n$0=*&i:int [line 12]\n " shape="box"]
5 -> 6 ; "main5" -> "main6" ;
5 -> 7 ; "main5" -> "main7" ;
4 [label="4: + \n " ] "main4" [label="4: + \n " ]
4 -> 5 ; "main4" -> "main5" ;
3 [label="3: Return Stmt \n *&return:int =0 [line 15]\n " shape="box"] "main3" [label="3: Return Stmt \n *&return:int =0 [line 15]\n " shape="box"]
3 -> 2 ; "main3" -> "main2" ;
2 [label="2: Exit main \n " color=yellow style=filled] "main2" [label="2: Exit main \n " color=yellow style=filled]
1 [label="1: Start main\nFormals: \nLocals: i:int \n DECLARE_LOCALS(&return,&i); [line 10]\n " color=yellow style=filled] "main1" [label="1: Start main\nFormals: \nLocals: i:int \n DECLARE_LOCALS(&return,&i); [line 10]\n " color=yellow style=filled]
1 -> 9 ; "main1" -> "main9" ;
} }

@ -1,64 +1,64 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
15 [label="15: DeclStmt \n *&i:int =0 [line 11]\n " shape="box"] "main15" [label="15: DeclStmt \n *&i:int =0 [line 11]\n " shape="box"]
15 -> 14 ; "main15" -> "main14" ;
14 [label="14: DeclStmt \n *&k:int =0 [line 12]\n " shape="box"] "main14" [label="14: DeclStmt \n *&k:int =0 [line 12]\n " shape="box"]
14 -> 4 ; "main14" -> "main4" ;
13 [label="13: UnaryOperator \n n$3=*&k:int [line 15]\n *&k:int =(n$3 + 1) [line 15]\n " shape="box"] "main13" [label="13: UnaryOperator \n n$3=*&k:int [line 15]\n *&k:int =(n$3 + 1) [line 15]\n " shape="box"]
13 -> 9 ; "main13" -> "main9" ;
12 [label="12: Prune (false branch) \n PRUNE(((n$2 <= 5) == 0), false); [line 14]\n " shape="invhouse"] "main12" [label="12: Prune (false branch) \n PRUNE(((n$2 <= 5) == 0), false); [line 14]\n " shape="invhouse"]
12 -> 8 ; "main12" -> "main8" ;
11 [label="11: Prune (true branch) \n PRUNE(((n$2 <= 5) != 0), true); [line 14]\n " shape="invhouse"] "main11" [label="11: Prune (true branch) \n PRUNE(((n$2 <= 5) != 0), true); [line 14]\n " shape="invhouse"]
11 -> 13 ; "main11" -> "main13" ;
10 [label="10: BinaryOperatorStmt: LE \n n$2=*&k:int [line 14]\n " shape="box"] "main10" [label="10: BinaryOperatorStmt: LE \n n$2=*&k:int [line 14]\n " shape="box"]
10 -> 11 ; "main10" -> "main11" ;
10 -> 12 ; "main10" -> "main12" ;
9 [label="9: + \n " ] "main9" [label="9: + \n " ]
9 -> 10 ; "main9" -> "main10" ;
8 [label="8: UnaryOperator \n n$1=*&i:int [line 17]\n *&i:int =(n$1 + 1) [line 17]\n " shape="box"] "main8" [label="8: UnaryOperator \n n$1=*&i:int [line 17]\n *&i:int =(n$1 + 1) [line 17]\n " shape="box"]
8 -> 4 ; "main8" -> "main4" ;
7 [label="7: Prune (false branch) \n PRUNE(((n$0 <= 10) == 0), false); [line 13]\n " shape="invhouse"] "main7" [label="7: Prune (false branch) \n PRUNE(((n$0 <= 10) == 0), false); [line 13]\n " shape="invhouse"]
7 -> 3 ; "main7" -> "main3" ;
6 [label="6: Prune (true branch) \n PRUNE(((n$0 <= 10) != 0), true); [line 13]\n " shape="invhouse"] "main6" [label="6: Prune (true branch) \n PRUNE(((n$0 <= 10) != 0), true); [line 13]\n " shape="invhouse"]
6 -> 9 ; "main6" -> "main9" ;
5 [label="5: BinaryOperatorStmt: LE \n n$0=*&i:int [line 13]\n " shape="box"] "main5" [label="5: BinaryOperatorStmt: LE \n n$0=*&i:int [line 13]\n " shape="box"]
5 -> 6 ; "main5" -> "main6" ;
5 -> 7 ; "main5" -> "main7" ;
4 [label="4: + \n " ] "main4" [label="4: + \n " ]
4 -> 5 ; "main4" -> "main5" ;
3 [label="3: Return Stmt \n *&return:int =0 [line 19]\n " shape="box"] "main3" [label="3: Return Stmt \n *&return:int =0 [line 19]\n " shape="box"]
3 -> 2 ; "main3" -> "main2" ;
2 [label="2: Exit main \n " color=yellow style=filled] "main2" [label="2: Exit main \n " color=yellow style=filled]
1 [label="1: Start main\nFormals: \nLocals: k:int i:int \n DECLARE_LOCALS(&return,&k,&i); [line 10]\n " color=yellow style=filled] "main1" [label="1: Start main\nFormals: \nLocals: k:int i:int \n DECLARE_LOCALS(&return,&k,&i); [line 10]\n " color=yellow style=filled]
1 -> 15 ; "main1" -> "main15" ;
} }

@ -1,27 +1,27 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
6 [label="6: Prune (false branch) \n PRUNE((1 == 0), false); [line 11]\n " shape="invhouse"] "main6" [label="6: Prune (false branch) \n PRUNE((1 == 0), false); [line 11]\n " shape="invhouse"]
6 -> 3 ; "main6" -> "main3" ;
5 [label="5: Prune (true branch) \n PRUNE((1 != 0), true); [line 11]\n " shape="invhouse"] "main5" [label="5: Prune (true branch) \n PRUNE((1 != 0), true); [line 11]\n " shape="invhouse"]
5 -> 4 ; "main5" -> "main4" ;
4 [label="4: + \n " ] "main4" [label="4: + \n " ]
4 -> 5 ; "main4" -> "main5" ;
4 -> 6 ; "main4" -> "main6" ;
3 [label="3: Return Stmt \n *&return:int =0 [line 13]\n " shape="box"] "main3" [label="3: Return Stmt \n *&return:int =0 [line 13]\n " shape="box"]
3 -> 2 ; "main3" -> "main2" ;
2 [label="2: Exit main \n " color=yellow style=filled] "main2" [label="2: Exit main \n " color=yellow style=filled]
1 [label="1: Start main\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 10]\n " color=yellow style=filled] "main1" [label="1: Start main\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 10]\n " color=yellow style=filled]
1 -> 4 ; "main1" -> "main4" ;
} }

@ -1,82 +1,82 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
19 [label="19: DeclStmt \n *&x:int =0 [line 11]\n " shape="box"] "main19" [label="19: DeclStmt \n *&x:int =0 [line 11]\n " shape="box"]
19 -> 4 ; "main19" -> "main4" ;
18 [label="18: BinaryOperatorStmt: AddAssign \n n$2=*&x:int [line 14]\n *&x:int =(n$2 + 1) [line 14]\n " shape="box"] "main18" [label="18: BinaryOperatorStmt: AddAssign \n n$2=*&x:int [line 14]\n *&x:int =(n$2 + 1) [line 14]\n " shape="box"]
18 -> 15 ; "main18" -> "main15" ;
17 [label="17: Prune (false branch) \n PRUNE(((n$1 > 5) == 0), false); [line 15]\n " shape="invhouse"] "main17" [label="17: Prune (false branch) \n PRUNE(((n$1 > 5) == 0), false); [line 15]\n " shape="invhouse"]
17 -> 14 ; "main17" -> "main14" ;
16 [label="16: Prune (true branch) \n PRUNE(((n$1 > 5) != 0), true); [line 15]\n " shape="invhouse"] "main16" [label="16: Prune (true branch) \n PRUNE(((n$1 > 5) != 0), true); [line 15]\n " shape="invhouse"]
16 -> 8 ; "main16" -> "main8" ;
15 [label="15: BinaryOperatorStmt: GT \n n$1=*&x:int [line 15]\n " shape="box"] "main15" [label="15: BinaryOperatorStmt: GT \n n$1=*&x:int [line 15]\n " shape="box"]
15 -> 16 ; "main15" -> "main16" ;
15 -> 17 ; "main15" -> "main17" ;
14 [label="14: + \n " ] "main14" [label="14: + \n " ]
14 -> 11 ; "main14" -> "main11" ;
13 [label="13: Prune (false branch) \n PRUNE((2 == 0), false); [line 13]\n " shape="invhouse"] "main13" [label="13: Prune (false branch) \n PRUNE((2 == 0), false); [line 13]\n " shape="invhouse"]
13 -> 8 ; "main13" -> "main8" ;
12 [label="12: Prune (true branch) \n PRUNE((2 != 0), true); [line 13]\n " shape="invhouse"] "main12" [label="12: Prune (true branch) \n PRUNE((2 != 0), true); [line 13]\n " shape="invhouse"]
12 -> 18 ; "main12" -> "main18" ;
11 [label="11: + \n " ] "main11" [label="11: + \n " ]
11 -> 12 ; "main11" -> "main12" ;
11 -> 13 ; "main11" -> "main13" ;
10 [label="10: Prune (false branch) \n PRUNE(((n$0 == 2) == 0), false); [line 19]\n " shape="invhouse"] "main10" [label="10: Prune (false branch) \n PRUNE(((n$0 == 2) == 0), false); [line 19]\n " shape="invhouse"]
10 -> 7 ; "main10" -> "main7" ;
9 [label="9: Prune (true branch) \n PRUNE(((n$0 == 2) != 0), true); [line 19]\n " shape="invhouse"] "main9" [label="9: Prune (true branch) \n PRUNE(((n$0 == 2) != 0), true); [line 19]\n " shape="invhouse"]
9 -> 4 ; "main9" -> "main4" ;
8 [label="8: BinaryOperatorStmt: EQ \n n$0=*&x:int [line 19]\n " shape="box"] "main8" [label="8: BinaryOperatorStmt: EQ \n n$0=*&x:int [line 19]\n " shape="box"]
8 -> 9 ; "main8" -> "main9" ;
8 -> 10 ; "main8" -> "main10" ;
7 [label="7: + \n " ] "main7" [label="7: + \n " ]
7 -> 4 ; "main7" -> "main4" ;
6 [label="6: Prune (false branch) \n PRUNE((1 == 0), false); [line 12]\n " shape="invhouse"] "main6" [label="6: Prune (false branch) \n PRUNE((1 == 0), false); [line 12]\n " shape="invhouse"]
6 -> 3 ; "main6" -> "main3" ;
5 [label="5: Prune (true branch) \n PRUNE((1 != 0), true); [line 12]\n " shape="invhouse"] "main5" [label="5: Prune (true branch) \n PRUNE((1 != 0), true); [line 12]\n " shape="invhouse"]
5 -> 11 ; "main5" -> "main11" ;
4 [label="4: + \n " ] "main4" [label="4: + \n " ]
4 -> 5 ; "main4" -> "main5" ;
4 -> 6 ; "main4" -> "main6" ;
3 [label="3: Return Stmt \n *&return:int =0 [line 23]\n " shape="box"] "main3" [label="3: Return Stmt \n *&return:int =0 [line 23]\n " shape="box"]
3 -> 2 ; "main3" -> "main2" ;
2 [label="2: Exit main \n " color=yellow style=filled] "main2" [label="2: Exit main \n " color=yellow style=filled]
1 [label="1: Start main\nFormals: \nLocals: x:int \n DECLARE_LOCALS(&return,&x); [line 10]\n " color=yellow style=filled] "main1" [label="1: Start main\nFormals: \nLocals: x:int \n DECLARE_LOCALS(&return,&x); [line 10]\n " color=yellow style=filled]
1 -> 19 ; "main1" -> "main19" ;
} }

@ -1,35 +1,35 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
8 [label="8: Return Stmt \n *&return:int =32 [line 12]\n " shape="box"] "foo8" [label="8: Return Stmt \n *&return:int =32 [line 12]\n " shape="box"]
8 -> 2 ; "foo8" -> "foo2" ;
7 [label="7: Prune (false branch) \n PRUNE((n$1 == 0), false); [line 11]\n " shape="invhouse"] "foo7" [label="7: Prune (false branch) \n PRUNE((n$1 == 0), false); [line 11]\n " shape="invhouse"]
7 -> 4 ; "foo7" -> "foo4" ;
6 [label="6: Prune (true branch) \n PRUNE((n$1 != 0), true); [line 11]\n " shape="invhouse"] "foo6" [label="6: Prune (true branch) \n PRUNE((n$1 != 0), true); [line 11]\n " shape="invhouse"]
6 -> 8 ; "foo6" -> "foo8" ;
5 [label="5: BinaryOperatorStmt: Assign \n n$0=*&p:int * [line 11]\n *n$0:int =0 [line 11]\n n$1=*n$0:int [line 11]\n " shape="box"] "foo5" [label="5: BinaryOperatorStmt: Assign \n n$0=*&p:int * [line 11]\n *n$0:int =0 [line 11]\n n$1=*n$0:int [line 11]\n " shape="box"]
5 -> 6 ; "foo5" -> "foo6" ;
5 -> 7 ; "foo5" -> "foo7" ;
4 [label="4: + \n " ] "foo4" [label="4: + \n " ]
4 -> 3 ; "foo4" -> "foo3" ;
3 [label="3: Return Stmt \n *&return:int =52 [line 14]\n " shape="box"] "foo3" [label="3: Return Stmt \n *&return:int =52 [line 14]\n " shape="box"]
3 -> 2 ; "foo3" -> "foo2" ;
2 [label="2: Exit foo \n " color=yellow style=filled] "foo2" [label="2: Exit foo \n " color=yellow style=filled]
1 [label="1: Start foo\nFormals: p:int *\nLocals: \n DECLARE_LOCALS(&return); [line 10]\n " color=yellow style=filled] "foo1" [label="1: Start foo\nFormals: p:int *\nLocals: \n DECLARE_LOCALS(&return); [line 10]\n " color=yellow style=filled]
1 -> 5 ; "foo1" -> "foo5" ;
} }

@ -1,35 +1,35 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
8 [label="8: Return Stmt \n *&return:int =32 [line 12]\n " shape="box"] "foo8" [label="8: Return Stmt \n *&return:int =32 [line 12]\n " shape="box"]
8 -> 2 ; "foo8" -> "foo2" ;
7 [label="7: Prune (false branch) \n n$1=*n$0:int [line 11]\n PRUNE((n$1 == 0), false); [line 11]\n " shape="invhouse"] "foo7" [label="7: Prune (false branch) \n n$1=*n$0:int [line 11]\n PRUNE((n$1 == 0), false); [line 11]\n " shape="invhouse"]
7 -> 4 ; "foo7" -> "foo4" ;
6 [label="6: Prune (true branch) \n n$1=*n$0:int [line 11]\n PRUNE((n$1 != 0), true); [line 11]\n " shape="invhouse"] "foo6" [label="6: Prune (true branch) \n n$1=*n$0:int [line 11]\n PRUNE((n$1 != 0), true); [line 11]\n " shape="invhouse"]
6 -> 8 ; "foo6" -> "foo8" ;
5 [label="5: BinaryOperatorStmt: Assign \n n$0=*&p:int * [line 11]\n *n$0:int =0 [line 11]\n " shape="box"] "foo5" [label="5: BinaryOperatorStmt: Assign \n n$0=*&p:int * [line 11]\n *n$0:int =0 [line 11]\n " shape="box"]
5 -> 6 ; "foo5" -> "foo6" ;
5 -> 7 ; "foo5" -> "foo7" ;
4 [label="4: + \n " ] "foo4" [label="4: + \n " ]
4 -> 3 ; "foo4" -> "foo3" ;
3 [label="3: Return Stmt \n *&return:int =52 [line 14]\n " shape="box"] "foo3" [label="3: Return Stmt \n *&return:int =52 [line 14]\n " shape="box"]
3 -> 2 ; "foo3" -> "foo2" ;
2 [label="2: Exit foo \n " color=yellow style=filled] "foo2" [label="2: Exit foo \n " color=yellow style=filled]
1 [label="1: Start foo\nFormals: p:int *\nLocals: \n DECLARE_LOCALS(&return); [line 10]\n " color=yellow style=filled] "foo1" [label="1: Start foo\nFormals: p:int *\nLocals: \n DECLARE_LOCALS(&return); [line 10]\n " color=yellow style=filled]
1 -> 5 ; "foo1" -> "foo5" ;
} }

@ -1,30 +1,30 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
7 [label="7: DeclStmt \n *&a:int =3 [line 11]\n " shape="box"] "test7" [label="7: DeclStmt \n *&a:int =3 [line 11]\n " shape="box"]
7 -> 6 ; "test7" -> "test6" ;
6 [label="6: DeclStmt \n n$3=*&a:int [line 12]\n *&a:int =(n$3 + 1) [line 12]\n *&b:int =(n$3 + 1) [line 12]\n " shape="box"] "test6" [label="6: DeclStmt \n n$3=*&a:int [line 12]\n *&a:int =(n$3 + 1) [line 12]\n *&b:int =(n$3 + 1) [line 12]\n " shape="box"]
6 -> 5 ; "test6" -> "test5" ;
5 [label="5: DeclStmt \n n$2=*&a:int [line 13]\n *&a:int =(n$2 + 1) [line 13]\n *&c:int =n$2 [line 13]\n " shape="box"] "test5" [label="5: DeclStmt \n n$2=*&a:int [line 13]\n *&a:int =(n$2 + 1) [line 13]\n *&c:int =n$2 [line 13]\n " shape="box"]
5 -> 4 ; "test5" -> "test4" ;
4 [label="4: DeclStmt \n n$1=*&a:int [line 14]\n *&a:int =(n$1 - 1) [line 14]\n *&d:int =(n$1 - 1) [line 14]\n " shape="box"] "test4" [label="4: DeclStmt \n n$1=*&a:int [line 14]\n *&a:int =(n$1 - 1) [line 14]\n *&d:int =(n$1 - 1) [line 14]\n " shape="box"]
4 -> 3 ; "test4" -> "test3" ;
3 [label="3: DeclStmt \n n$0=*&a:int [line 15]\n *&a:int =(n$0 - 1) [line 15]\n *&e:int =n$0 [line 15]\n " shape="box"] "test3" [label="3: DeclStmt \n n$0=*&a:int [line 15]\n *&a:int =(n$0 - 1) [line 15]\n *&e:int =n$0 [line 15]\n " shape="box"]
3 -> 2 ; "test3" -> "test2" ;
2 [label="2: Exit test \n " color=yellow style=filled] "test2" [label="2: Exit test \n " color=yellow style=filled]
1 [label="1: Start test\nFormals: \nLocals: e:int d:int c:int b:int a:int \n DECLARE_LOCALS(&return,&e,&d,&c,&b,&a); [line 10]\n " color=yellow style=filled] "test1" [label="1: Start test\nFormals: \nLocals: e:int d:int c:int b:int a:int \n DECLARE_LOCALS(&return,&e,&d,&c,&b,&a); [line 10]\n " color=yellow style=filled]
1 -> 7 ; "test1" -> "test7" ;
} }

@ -1,30 +1,30 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
7 [label="7: DeclStmt \n *&a:int =3 [line 11]\n " shape="box"] "test7" [label="7: DeclStmt \n *&a:int =3 [line 11]\n " shape="box"]
7 -> 6 ; "test7" -> "test6" ;
6 [label="6: DeclStmt \n n$4=*&a:int [line 12]\n *&a:int =(n$4 + 1) [line 12]\n n$5=*&a:int [line 12]\n *&b:int =n$5 [line 12]\n " shape="box"] "test6" [label="6: DeclStmt \n n$4=*&a:int [line 12]\n *&a:int =(n$4 + 1) [line 12]\n n$5=*&a:int [line 12]\n *&b:int =n$5 [line 12]\n " shape="box"]
6 -> 5 ; "test6" -> "test5" ;
5 [label="5: DeclStmt \n n$3=*&a:int [line 13]\n *&a:int =(n$3 + 1) [line 13]\n *&c:int =n$3 [line 13]\n " shape="box"] "test5" [label="5: DeclStmt \n n$3=*&a:int [line 13]\n *&a:int =(n$3 + 1) [line 13]\n *&c:int =n$3 [line 13]\n " shape="box"]
5 -> 4 ; "test5" -> "test4" ;
4 [label="4: DeclStmt \n n$1=*&a:int [line 14]\n *&a:int =(n$1 - 1) [line 14]\n n$2=*&a:int [line 14]\n *&d:int =n$2 [line 14]\n " shape="box"] "test4" [label="4: DeclStmt \n n$1=*&a:int [line 14]\n *&a:int =(n$1 - 1) [line 14]\n n$2=*&a:int [line 14]\n *&d:int =n$2 [line 14]\n " shape="box"]
4 -> 3 ; "test4" -> "test3" ;
3 [label="3: DeclStmt \n n$0=*&a:int [line 15]\n *&a:int =(n$0 - 1) [line 15]\n *&e:int =n$0 [line 15]\n " shape="box"] "test3" [label="3: DeclStmt \n n$0=*&a:int [line 15]\n *&a:int =(n$0 - 1) [line 15]\n *&e:int =n$0 [line 15]\n " shape="box"]
3 -> 2 ; "test3" -> "test2" ;
2 [label="2: Exit test \n " color=yellow style=filled] "test2" [label="2: Exit test \n " color=yellow style=filled]
1 [label="1: Start test\nFormals: \nLocals: e:int d:int c:int b:int a:int \n DECLARE_LOCALS(&return,&e,&d,&c,&b,&a); [line 10]\n " color=yellow style=filled] "test1" [label="1: Start test\nFormals: \nLocals: e:int d:int c:int b:int a:int \n DECLARE_LOCALS(&return,&e,&d,&c,&b,&a); [line 10]\n " color=yellow style=filled]
1 -> 7 ; "test1" -> "test7" ;
} }

@ -1,33 +1,33 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
8 [label="8: Return Stmt \n n$2=*&p:int * [line 22]\n n$3=*n$2:int [line 22]\n *&x:int =n$3 [line 22]\n *&y:int =1 [line 23]\n n$0=*&x:int [line 24]\n n$1=*&y:int [line 24]\n *&return:int =(n$0 + n$1) [line 21]\n " shape="box"] "main5" [label="5: DeclStmt \n *&y:int =3 [line 11]\n " shape="box"]
8 -> 7 ; "main5" -> "main4" ;
7 [label="7: Exit test \n " color=yellow style=filled] "main4" [label="4: BinaryOperatorStmt: Assign \n *&X:int =4 [line 14]\n n$0=*&X:int [line 15]\n *&y:int =n$0 [line 13]\n " shape="box"]
6 [label="6: Start test\nFormals: p:int *\nLocals: y:int x:int \n DECLARE_LOCALS(&return,&y,&x); [line 20]\n " color=yellow style=filled] "main4" -> "main3" ;
"main3" [label="3: Return Stmt \n *&return:int =0 [line 17]\n " shape="box"]
6 -> 8 ; "main3" -> "main2" ;
5 [label="5: DeclStmt \n *&y:int =3 [line 11]\n " shape="box"] "main2" [label="2: Exit main \n " color=yellow style=filled]
5 -> 4 ; "main1" [label="1: Start main\nFormals: \nLocals: X:int y:int \n DECLARE_LOCALS(&return,&X,&y); [line 10]\n " color=yellow style=filled]
4 [label="4: BinaryOperatorStmt: Assign \n *&X:int =4 [line 14]\n n$0=*&X:int [line 15]\n *&y:int =n$0 [line 13]\n " shape="box"]
4 -> 3 ; "main1" -> "main5" ;
3 [label="3: Return Stmt \n *&return:int =0 [line 17]\n " shape="box"] "test3" [label="3: Return Stmt \n n$2=*&p:int * [line 22]\n n$3=*n$2:int [line 22]\n *&x:int =n$3 [line 22]\n *&y:int =1 [line 23]\n n$0=*&x:int [line 24]\n n$1=*&y:int [line 24]\n *&return:int =(n$0 + n$1) [line 21]\n " shape="box"]
3 -> 2 ; "test3" -> "test2" ;
2 [label="2: Exit main \n " color=yellow style=filled] "test2" [label="2: Exit test \n " color=yellow style=filled]
1 [label="1: Start main\nFormals: \nLocals: X:int y:int \n DECLARE_LOCALS(&return,&X,&y); [line 10]\n " color=yellow style=filled] "test1" [label="1: Start test\nFormals: p:int *\nLocals: y:int x:int \n DECLARE_LOCALS(&return,&y,&x); [line 20]\n " color=yellow style=filled]
1 -> 5 ; "test1" -> "test3" ;
} }

@ -1,38 +1,38 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
9 [label="9: DeclStmt \n *&x:double =1.000000 [line 11]\n " shape="box"] "main9" [label="9: DeclStmt \n *&x:double =1.000000 [line 11]\n " shape="box"]
9 -> 8 ; "main9" -> "main8" ;
8 [label="8: BinaryOperatorStmt: Assign \n n$11=*&s:double [line 13]\n *&x:double =n$11 [line 13]\n " shape="box"] "main8" [label="8: BinaryOperatorStmt: Assign \n n$11=*&s:double [line 13]\n *&x:double =n$11 [line 13]\n " shape="box"]
8 -> 7 ; "main8" -> "main7" ;
7 [label="7: BinaryOperatorStmt: Assign \n *&x:double =3 [line 14]\n n$10=*&x:double [line 14]\n *&q:double =n$10 [line 14]\n " shape="box"] "main7" [label="7: BinaryOperatorStmt: Assign \n *&x:double =3 [line 14]\n n$10=*&x:double [line 14]\n *&q:double =n$10 [line 14]\n " shape="box"]
7 -> 6 ; "main7" -> "main6" ;
6 [label="6: BinaryOperatorStmt: AddAssign \n n$9=*&x:double [line 15]\n *&x:double =(n$9 + 7) [line 15]\n " shape="box"] "main6" [label="6: BinaryOperatorStmt: AddAssign \n n$9=*&x:double [line 15]\n *&x:double =(n$9 + 7) [line 15]\n " shape="box"]
6 -> 5 ; "main6" -> "main5" ;
5 [label="5: BinaryOperatorStmt: Assign \n n$7=*&x:double [line 16]\n *&x:double =(n$7 + 1.000000) [line 16]\n n$8=*&x:double [line 16]\n *&q:double =n$8 [line 16]\n " shape="box"] "main5" [label="5: BinaryOperatorStmt: Assign \n n$7=*&x:double [line 16]\n *&x:double =(n$7 + 1.000000) [line 16]\n n$8=*&x:double [line 16]\n *&q:double =n$8 [line 16]\n " shape="box"]
5 -> 4 ; "main5" -> "main4" ;
4 [label="4: BinaryOperatorStmt: Assign \n n$0=*&t:double [line 17]\n n$1=*&s:double [line 17]\n *&s:double =(n$1 + n$0) [line 17]\n n$2=*&s:double [line 17]\n n$3=*&r:double [line 17]\n *&r:double =(n$3 + n$2) [line 17]\n n$4=*&r:double [line 17]\n n$5=*&x:double [line 17]\n *&x:double =(n$5 + n$4) [line 17]\n n$6=*&x:double [line 17]\n *&q:double =n$6 [line 17]\n " shape="box"] "main4" [label="4: BinaryOperatorStmt: Assign \n n$0=*&t:double [line 17]\n n$1=*&s:double [line 17]\n *&s:double =(n$1 + n$0) [line 17]\n n$2=*&s:double [line 17]\n n$3=*&r:double [line 17]\n *&r:double =(n$3 + n$2) [line 17]\n n$4=*&r:double [line 17]\n n$5=*&x:double [line 17]\n *&x:double =(n$5 + n$4) [line 17]\n n$6=*&x:double [line 17]\n *&q:double =n$6 [line 17]\n " shape="box"]
4 -> 3 ; "main4" -> "main3" ;
3 [label="3: Return Stmt \n *&return:int =0 [line 18]\n " shape="box"] "main3" [label="3: Return Stmt \n *&return:int =0 [line 18]\n " shape="box"]
3 -> 2 ; "main3" -> "main2" ;
2 [label="2: Exit main \n " color=yellow style=filled] "main2" [label="2: Exit main \n " color=yellow style=filled]
1 [label="1: Start main\nFormals: \nLocals: t:double s:double r:double q:double x:double \n DECLARE_LOCALS(&return,&t,&s,&r,&q,&x); [line 10]\n " color=yellow style=filled] "main1" [label="1: Start main\nFormals: \nLocals: t:double s:double r:double q:double x:double \n DECLARE_LOCALS(&return,&t,&s,&r,&q,&x); [line 10]\n " color=yellow style=filled]
1 -> 9 ; "main1" -> "main9" ;
} }

@ -1,30 +1,30 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
7 [label="7: BinaryOperatorStmt: Assign \n n$3=*&#GB<nestedoperators/union.c>$x:struct anonymous_struct_nestedoperators_union.c:12:1 * [line 32]\n *n$3.a:int =1 [line 32]\n " shape="box"] "main7" [label="7: BinaryOperatorStmt: Assign \n n$3=*&#GB<nestedoperators/union.c>$x:struct anonymous_struct_nestedoperators_union.c:12:1 * [line 32]\n *n$3.a:int =1 [line 32]\n " shape="box"]
7 -> 6 ; "main7" -> "main6" ;
6 [label="6: BinaryOperatorStmt: Assign \n *&#GB<nestedoperators/union.c>$y.f:int =7 [line 33]\n " shape="box"] "main6" [label="6: BinaryOperatorStmt: Assign \n *&#GB<nestedoperators/union.c>$y.f:int =7 [line 33]\n " shape="box"]
6 -> 5 ; "main6" -> "main5" ;
5 [label="5: BinaryOperatorStmt: Assign \n n$2=*&#GB<nestedoperators/union.c>$y.f:int [line 34]\n *&#GB<nestedoperators/union.c>$y.g.u:int =n$2 [line 34]\n " shape="box"] "main5" [label="5: BinaryOperatorStmt: Assign \n n$2=*&#GB<nestedoperators/union.c>$y.f:int [line 34]\n *&#GB<nestedoperators/union.c>$y.g.u:int =n$2 [line 34]\n " shape="box"]
5 -> 4 ; "main5" -> "main4" ;
4 [label="4: BinaryOperatorStmt: Assign \n n$0=*&#GB<nestedoperators/union.c>$x:struct anonymous_struct_nestedoperators_union.c:12:1 * [line 36]\n n$1=*n$0.b:int [line 36]\n *&#GB<nestedoperators/union.c>$y.g.w:int =n$1 [line 36]\n " shape="box"] "main4" [label="4: BinaryOperatorStmt: Assign \n n$0=*&#GB<nestedoperators/union.c>$x:struct anonymous_struct_nestedoperators_union.c:12:1 * [line 36]\n n$1=*n$0.b:int [line 36]\n *&#GB<nestedoperators/union.c>$y.g.w:int =n$1 [line 36]\n " shape="box"]
4 -> 3 ; "main4" -> "main3" ;
3 [label="3: Return Stmt \n *&return:int =0 [line 37]\n " shape="box"] "main3" [label="3: Return Stmt \n *&return:int =0 [line 37]\n " shape="box"]
3 -> 2 ; "main3" -> "main2" ;
2 [label="2: Exit main \n " color=yellow style=filled] "main2" [label="2: Exit main \n " color=yellow style=filled]
1 [label="1: Start main\nFormals: \nLocals: l:int \n DECLARE_LOCALS(&return,&l); [line 29]\n " color=yellow style=filled] "main1" [label="1: Start main\nFormals: \nLocals: l:int \n DECLARE_LOCALS(&return,&l); [line 29]\n " color=yellow style=filled]
1 -> 7 ; "main1" -> "main7" ;
} }

@ -1,48 +1,48 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
12 [label="12: BinaryOperatorStmt: Assign \n n$3=*&#GB<nestedoperators/union.cpp>$x:class anonymous_struct_nestedoperators_union.cpp:12:1 * [line 32]\n *n$3.a:int =1 [line 32]\n " shape="box"] "main7" [label="7: BinaryOperatorStmt: Assign \n n$3=*&#GB<nestedoperators/union.cpp>$x:class anonymous_struct_nestedoperators_union.cpp:12:1 * [line 32]\n *n$3.a:int =1 [line 32]\n " shape="box"]
12 -> 11 ; "main7" -> "main6" ;
11 [label="11: BinaryOperatorStmt: Assign \n *&#GB<nestedoperators/union.cpp>$y.f:int =7 [line 33]\n " shape="box"] "main6" [label="6: BinaryOperatorStmt: Assign \n *&#GB<nestedoperators/union.cpp>$y.f:int =7 [line 33]\n " shape="box"]
11 -> 10 ; "main6" -> "main5" ;
10 [label="10: BinaryOperatorStmt: Assign \n n$2=*&#GB<nestedoperators/union.cpp>$y.f:int [line 34]\n *&#GB<nestedoperators/union.cpp>$y.g.u:int =n$2 [line 34]\n " shape="box"] "main5" [label="5: BinaryOperatorStmt: Assign \n n$2=*&#GB<nestedoperators/union.cpp>$y.f:int [line 34]\n *&#GB<nestedoperators/union.cpp>$y.g.u:int =n$2 [line 34]\n " shape="box"]
10 -> 9 ; "main5" -> "main4" ;
9 [label="9: BinaryOperatorStmt: Assign \n n$0=*&#GB<nestedoperators/union.cpp>$x:class anonymous_struct_nestedoperators_union.cpp:12:1 * [line 36]\n n$1=*n$0.b:int [line 36]\n *&#GB<nestedoperators/union.cpp>$y.g.w:int =n$1 [line 36]\n " shape="box"] "main4" [label="4: BinaryOperatorStmt: Assign \n n$0=*&#GB<nestedoperators/union.cpp>$x:class anonymous_struct_nestedoperators_union.cpp:12:1 * [line 36]\n n$1=*n$0.b:int [line 36]\n *&#GB<nestedoperators/union.cpp>$y.g.w:int =n$1 [line 36]\n " shape="box"]
9 -> 8 ; "main4" -> "main3" ;
8 [label="8: Return Stmt \n *&return:int =0 [line 37]\n " shape="box"] "main3" [label="3: Return Stmt \n *&return:int =0 [line 37]\n " shape="box"]
8 -> 7 ; "main3" -> "main2" ;
7 [label="7: Exit main \n " color=yellow style=filled] "main2" [label="2: Exit main \n " color=yellow style=filled]
6 [label="6: Start main\nFormals: \nLocals: l:int \n DECLARE_LOCALS(&return,&l); [line 29]\n " color=yellow style=filled] "main1" [label="1: Start main\nFormals: \nLocals: l:int \n DECLARE_LOCALS(&return,&l); [line 29]\n " color=yellow style=filled]
6 -> 12 ; "main1" -> "main7" ;
5 [label="5: DeclStmt \n _fun_anonymous_union_nestedoperators_union.cpp:17:1_(&#GB<nestedoperators/union.cpp>$y:class anonymous_union_nestedoperators_union.cpp:17:1 *) [line 27]\n " shape="box"] "anonymous_union_nestedoperators_union.cpp:17:1_2" [label="2: Exit anonymous_union_nestedoperators_union.cpp:17:1_ \n " color=yellow style=filled]
5 -> 4 ; "anonymous_union_nestedoperators_union.cpp:17:1_1" [label="1: Start anonymous_union_nestedoperators_union.cpp:17:1_\nFormals: this:class anonymous_union_nestedoperators_union.cpp:17:1 *\nLocals: \n DECLARE_LOCALS(&return); [line 17]\n " color=yellow style=filled]
4 [label="4: Exit __infer_globals_initializer_y \n " color=yellow style=filled]
3 [label="3: Start __infer_globals_initializer_y\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 17]\n " color=yellow style=filled] "anonymous_union_nestedoperators_union.cpp:17:1_1" -> "anonymous_union_nestedoperators_union.cpp:17:1_2" ;
"__infer_globals_initializer_y3" [label="3: DeclStmt \n _fun_anonymous_union_nestedoperators_union.cpp:17:1_(&#GB<nestedoperators/union.cpp>$y:class anonymous_union_nestedoperators_union.cpp:17:1 *) [line 27]\n " shape="box"]
3 -> 5 ; "__infer_globals_initializer_y3" -> "__infer_globals_initializer_y2" ;
2 [label="2: Exit anonymous_union_nestedoperators_union.cpp:17:1_ \n " color=yellow style=filled] "__infer_globals_initializer_y2" [label="2: Exit __infer_globals_initializer_y \n " color=yellow style=filled]
1 [label="1: Start anonymous_union_nestedoperators_union.cpp:17:1_\nFormals: this:class anonymous_union_nestedoperators_union.cpp:17:1 *\nLocals: \n DECLARE_LOCALS(&return); [line 17]\n " color=yellow style=filled] "__infer_globals_initializer_y1" [label="1: Start __infer_globals_initializer_y\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 17]\n " color=yellow style=filled]
1 -> 2 ; "__infer_globals_initializer_y1" -> "__infer_globals_initializer_y3" ;
} }

@ -1,43 +1,43 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
10 [label="10: DeclStmt \n *&i:int =n$1 [line 19]\n " shape="box"] "test_offsetof_expr10" [label="10: DeclStmt \n *&i:int =n$1 [line 19]\n " shape="box"]
10 -> 5 ; "test_offsetof_expr10" -> "test_offsetof_expr5" ;
9 [label="9: Return Stmt \n *&return:int =(4 / 0) [line 23]\n " shape="box"] "test_offsetof_expr9" [label="9: Return Stmt \n *&return:int =(4 / 0) [line 23]\n " shape="box"]
9 -> 2 ; "test_offsetof_expr9" -> "test_offsetof_expr2" ;
8 [label="8: Return Stmt \n *&return:int =(9 / 0) [line 21]\n " shape="box"] "test_offsetof_expr8" [label="8: Return Stmt \n *&return:int =(9 / 0) [line 21]\n " shape="box"]
8 -> 2 ; "test_offsetof_expr8" -> "test_offsetof_expr2" ;
7 [label="7: Prune (false branch) \n PRUNE(((n$0 == 9) == 0), false); [line 20]\n " shape="invhouse"] "test_offsetof_expr7" [label="7: Prune (false branch) \n PRUNE(((n$0 == 9) == 0), false); [line 20]\n " shape="invhouse"]
7 -> 9 ; "test_offsetof_expr7" -> "test_offsetof_expr9" ;
6 [label="6: Prune (true branch) \n PRUNE(((n$0 == 9) != 0), true); [line 20]\n " shape="invhouse"] "test_offsetof_expr6" [label="6: Prune (true branch) \n PRUNE(((n$0 == 9) != 0), true); [line 20]\n " shape="invhouse"]
6 -> 8 ; "test_offsetof_expr6" -> "test_offsetof_expr8" ;
5 [label="5: BinaryOperatorStmt: EQ \n n$0=*&i:int [line 20]\n " shape="box"] "test_offsetof_expr5" [label="5: BinaryOperatorStmt: EQ \n n$0=*&i:int [line 20]\n " shape="box"]
5 -> 6 ; "test_offsetof_expr5" -> "test_offsetof_expr6" ;
5 -> 7 ; "test_offsetof_expr5" -> "test_offsetof_expr7" ;
4 [label="4: between_join_and_exit \n " shape="box"] "test_offsetof_expr4" [label="4: between_join_and_exit \n " shape="box"]
4 -> 2 ; "test_offsetof_expr4" -> "test_offsetof_expr2" ;
3 [label="3: + \n " ] "test_offsetof_expr3" [label="3: + \n " ]
3 -> 4 ; "test_offsetof_expr3" -> "test_offsetof_expr4" ;
2 [label="2: Exit test_offsetof_expr \n " color=yellow style=filled] "test_offsetof_expr2" [label="2: Exit test_offsetof_expr \n " color=yellow style=filled]
1 [label="1: Start test_offsetof_expr\nFormals: \nLocals: i:int \n DECLARE_LOCALS(&return,&i); [line 18]\n " color=yellow style=filled] "test_offsetof_expr1" [label="1: Start test_offsetof_expr\nFormals: \nLocals: i:int \n DECLARE_LOCALS(&return,&i); [line 18]\n " color=yellow style=filled]
1 -> 10 ; "test_offsetof_expr1" -> "test_offsetof_expr10" ;
} }

@ -1,18 +1,18 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
4 [label="4: BinaryOperatorStmt: Assign \n *&x.a:int =10 [line 17]\n " shape="box"] "test4" [label="4: BinaryOperatorStmt: Assign \n *&x.a:int =10 [line 17]\n " shape="box"]
4 -> 3 ; "test4" -> "test3" ;
3 [label="3: BinaryOperatorStmt: Assign \n *&x.b:int =20 [line 18]\n " shape="box"] "test3" [label="3: BinaryOperatorStmt: Assign \n *&x.b:int =20 [line 18]\n " shape="box"]
3 -> 2 ; "test3" -> "test2" ;
2 [label="2: Exit test \n " color=yellow style=filled] "test2" [label="2: Exit test \n " color=yellow style=filled]
1 [label="1: Start test\nFormals: \nLocals: x:struct X \n DECLARE_LOCALS(&return,&x); [line 15]\n " color=yellow style=filled] "test1" [label="1: Start test\nFormals: \nLocals: x:struct X \n DECLARE_LOCALS(&return,&x); [line 15]\n " color=yellow style=filled]
1 -> 4 ; "test1" -> "test4" ;
} }

@ -1,18 +1,18 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
4 [label="4: DeclStmt \n *&x:void =_t$1 [line 15]\n " shape="box"] "test_typename4" [label="4: DeclStmt \n *&x:void =_t$1 [line 15]\n " shape="box"]
4 -> 3 ; "test_typename4" -> "test_typename3" ;
3 [label="3: DeclStmt \n *&z:void =_t$0 [line 16]\n " shape="box"] "test_typename3" [label="3: DeclStmt \n *&z:void =_t$0 [line 16]\n " shape="box"]
3 -> 2 ; "test_typename3" -> "test_typename2" ;
2 [label="2: Exit test_typename \n " color=yellow style=filled] "test_typename2" [label="2: Exit test_typename \n " color=yellow style=filled]
1 [label="1: Start test_typename\nFormals: \nLocals: z:int x:int y:int s:char \n DECLARE_LOCALS(&return,&z,&x,&y,&s); [line 12]\n " color=yellow style=filled] "test_typename1" [label="1: Start test_typename\nFormals: \nLocals: z:int x:int y:int s:char \n DECLARE_LOCALS(&return,&z,&x,&y,&s); [line 12]\n " color=yellow style=filled]
1 -> 4 ; "test_typename1" -> "test_typename4" ;
} }

@ -1,37 +1,37 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
9 [label="9: DeclStmt \n *&src:int =1 [line 20]\n " shape="box"] "main5" [label="5: DeclStmt \n *&src:int =1 [line 20]\n " shape="box"]
9 -> 8 ; "main5" -> "main4" ;
8 [label="8: GCCAsmStmt \n n$0=*&src:int [line 27]\n _fun___infer_skip_gcc_asm_stmt(&dst:int &,n$0:int ) [line 23]\n " shape="box"] "main4" [label="4: GCCAsmStmt \n n$0=*&src:int [line 27]\n _fun___infer_skip_gcc_asm_stmt(&dst:int &,n$0:int ) [line 23]\n " shape="box"]
8 -> 7 ; "main4" -> "main3" ;
7 [label="7: Return Stmt \n *&return:int =0 [line 28]\n " shape="box"] "main3" [label="3: Return Stmt \n *&return:int =0 [line 28]\n " shape="box"]
7 -> 6 ; "main3" -> "main2" ;
6 [label="6: Exit main \n " color=yellow style=filled] "main2" [label="2: Exit main \n " color=yellow style=filled]
5 [label="5: Start main\nFormals: \nLocals: dst:int src:int \n DECLARE_LOCALS(&return,&dst,&src); [line 19]\n " color=yellow style=filled] "main1" [label="1: Start main\nFormals: \nLocals: dst:int src:int \n DECLARE_LOCALS(&return,&dst,&src); [line 19]\n " color=yellow style=filled]
5 -> 9 ; "main1" -> "main5" ;
4 [label="4: GCCAsmStmt \n _fun___infer_skip_gcc_asm_stmt(&x:int &,&y:int &,&z:int &,&h:int &,0:int ) [line 15]\n " shape="box"] "test4" [label="4: GCCAsmStmt \n _fun___infer_skip_gcc_asm_stmt(&x:int &,&y:int &,&z:int &,&h:int &,0:int ) [line 15]\n " shape="box"]
4 -> 3 ; "test4" -> "test3" ;
3 [label="3: Return Stmt \n *&return:int =0 [line 16]\n " shape="box"] "test3" [label="3: Return Stmt \n *&return:int =0 [line 16]\n " shape="box"]
3 -> 2 ; "test3" -> "test2" ;
2 [label="2: Exit test \n " color=yellow style=filled] "test2" [label="2: Exit test \n " color=yellow style=filled]
1 [label="1: Start test\nFormals: \nLocals: h:int z:int y:int x:int \n DECLARE_LOCALS(&return,&h,&z,&y,&x); [line 10]\n " color=yellow style=filled] "test1" [label="1: Start test\nFormals: \nLocals: h:int z:int y:int x:int \n DECLARE_LOCALS(&return,&h,&z,&y,&x); [line 10]\n " color=yellow style=filled]
1 -> 4 ; "test1" -> "test4" ;
} }

@ -1,51 +1,51 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
12 [label="12: Call _fun___builtin_va_start \n _fun___builtin_va_start(&valist:void *,&x:int &) [line 14]\n " shape="box"] "vaarg_foo12" [label="12: Call _fun___builtin_va_start \n _fun___builtin_va_start(&valist:void *,&x:int &) [line 14]\n " shape="box"]
12 -> 11 ; "vaarg_foo12" -> "vaarg_foo11" ;
11 [label="11: DeclStmt \n *&i:int =n$2 [line 15]\n " shape="box"] "vaarg_foo11" [label="11: DeclStmt \n *&i:int =n$2 [line 15]\n " shape="box"]
11 -> 6 ; "vaarg_foo11" -> "vaarg_foo6" ;
10 [label="10: BinaryOperatorStmt: Assign \n *&val:int =(4 / 0) [line 20]\n " shape="box"] "vaarg_foo10" [label="10: BinaryOperatorStmt: Assign \n *&val:int =(4 / 0) [line 20]\n " shape="box"]
10 -> 5 ; "vaarg_foo10" -> "vaarg_foo5" ;
9 [label="9: BinaryOperatorStmt: Assign \n *&val:int =(9 / 0) [line 18]\n " shape="box"] "vaarg_foo9" [label="9: BinaryOperatorStmt: Assign \n *&val:int =(9 / 0) [line 18]\n " shape="box"]
9 -> 5 ; "vaarg_foo9" -> "vaarg_foo5" ;
8 [label="8: Prune (false branch) \n PRUNE(((n$1 == 9) == 0), false); [line 17]\n " shape="invhouse"] "vaarg_foo8" [label="8: Prune (false branch) \n PRUNE(((n$1 == 9) == 0), false); [line 17]\n " shape="invhouse"]
8 -> 10 ; "vaarg_foo8" -> "vaarg_foo10" ;
7 [label="7: Prune (true branch) \n PRUNE(((n$1 == 9) != 0), true); [line 17]\n " shape="invhouse"] "vaarg_foo7" [label="7: Prune (true branch) \n PRUNE(((n$1 == 9) != 0), true); [line 17]\n " shape="invhouse"]
7 -> 9 ; "vaarg_foo7" -> "vaarg_foo9" ;
6 [label="6: BinaryOperatorStmt: EQ \n n$1=*&i:int [line 17]\n " shape="box"] "vaarg_foo6" [label="6: BinaryOperatorStmt: EQ \n n$1=*&i:int [line 17]\n " shape="box"]
6 -> 7 ; "vaarg_foo6" -> "vaarg_foo7" ;
6 -> 8 ; "vaarg_foo6" -> "vaarg_foo8" ;
5 [label="5: + \n " ] "vaarg_foo5" [label="5: + \n " ]
5 -> 4 ; "vaarg_foo5" -> "vaarg_foo4" ;
4 [label="4: Call _fun___builtin_va_end \n _fun___builtin_va_end(&valist:void *) [line 22]\n " shape="box"] "vaarg_foo4" [label="4: Call _fun___builtin_va_end \n _fun___builtin_va_end(&valist:void *) [line 22]\n " shape="box"]
4 -> 3 ; "vaarg_foo4" -> "vaarg_foo3" ;
3 [label="3: Return Stmt \n n$0=*&val:int [line 23]\n *&return:int =n$0 [line 23]\n " shape="box"] "vaarg_foo3" [label="3: Return Stmt \n n$0=*&val:int [line 23]\n *&return:int =n$0 [line 23]\n " shape="box"]
3 -> 2 ; "vaarg_foo3" -> "vaarg_foo2" ;
2 [label="2: Exit vaarg_foo \n " color=yellow style=filled] "vaarg_foo2" [label="2: Exit vaarg_foo \n " color=yellow style=filled]
1 [label="1: Start vaarg_foo\nFormals: x:int \nLocals: val:int i:int valist:void [1] \n DECLARE_LOCALS(&return,&val,&i,&valist); [line 12]\n " color=yellow style=filled] "vaarg_foo1" [label="1: Start vaarg_foo\nFormals: x:int \nLocals: val:int i:int valist:void [1] \n DECLARE_LOCALS(&return,&val,&i,&valist); [line 12]\n " color=yellow style=filled]
1 -> 12 ; "vaarg_foo1" -> "vaarg_foo12" ;
} }

@ -1,84 +1,84 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
20 [label="20: Return Stmt \n n$0=_fun_switch_with_fallthrough(66:int ) [line 27]\n *&return:int =(1 / (n$0 - 3)) [line 27]\n " shape="box"] "h3" [label="3: Return Stmt \n *&return:int =3 [line 10]\n " shape="box"]
20 -> 19 ; "h3" -> "h2" ;
19 [label="19: Exit test_fallthrough \n " color=yellow style=filled] "h2" [label="2: Exit h \n " color=yellow style=filled]
18 [label="18: Start test_fallthrough\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 27]\n " color=yellow style=filled] "h1" [label="1: Start h\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 10]\n " color=yellow style=filled]
18 -> 20 ; "h1" -> "h3" ;
17 [label="17: DeclStmt \n *&res:int =5 [line 13]\n " shape="box"] "switch_with_fallthrough14" [label="14: DeclStmt \n *&res:int =5 [line 13]\n " shape="box"]
17 -> 7 ; "switch_with_fallthrough14" -> "switch_with_fallthrough4" ;
16 [label="16: Prune (false branch) \n PRUNE(((n$1 == 22) == 0), false); [line 15]\n " shape="invhouse"] "switch_with_fallthrough13" [label="13: Prune (false branch) \n PRUNE(((n$1 == 22) == 0), false); [line 15]\n " shape="invhouse"]
16 -> 13 ; "switch_with_fallthrough13" -> "switch_with_fallthrough10" ;
16 -> 14 ; "switch_with_fallthrough13" -> "switch_with_fallthrough11" ;
15 [label="15: Prune (true branch) \n PRUNE(((n$1 == 22) != 0), true); [line 15]\n " shape="invhouse"] "switch_with_fallthrough12" [label="12: Prune (true branch) \n PRUNE(((n$1 == 22) != 0), true); [line 15]\n " shape="invhouse"]
15 -> 8 ; "switch_with_fallthrough12" -> "switch_with_fallthrough5" ;
14 [label="14: Prune (false branch) \n PRUNE(((n$1 == 33) == 0), false); [line 16]\n " shape="invhouse"] "switch_with_fallthrough11" [label="11: Prune (false branch) \n PRUNE(((n$1 == 33) == 0), false); [line 16]\n " shape="invhouse"]
14 -> 11 ; "switch_with_fallthrough11" -> "switch_with_fallthrough8" ;
14 -> 12 ; "switch_with_fallthrough11" -> "switch_with_fallthrough9" ;
13 [label="13: Prune (true branch) \n PRUNE(((n$1 == 33) != 0), true); [line 16]\n " shape="invhouse"] "switch_with_fallthrough10" [label="10: Prune (true branch) \n PRUNE(((n$1 == 33) != 0), true); [line 16]\n " shape="invhouse"]
13 -> 8 ; "switch_with_fallthrough10" -> "switch_with_fallthrough5" ;
12 [label="12: Prune (false branch) \n PRUNE(((n$1 == 66) == 0), false); [line 18]\n " shape="invhouse"] "switch_with_fallthrough9" [label="9: Prune (false branch) \n PRUNE(((n$1 == 66) == 0), false); [line 18]\n " shape="invhouse"]
12 -> 9 ; "switch_with_fallthrough9" -> "switch_with_fallthrough6" ;
12 -> 10 ; "switch_with_fallthrough9" -> "switch_with_fallthrough7" ;
11 [label="11: Prune (true branch) \n PRUNE(((n$1 == 66) != 0), true); [line 18]\n " shape="invhouse"] "switch_with_fallthrough8" [label="8: Prune (true branch) \n PRUNE(((n$1 == 66) != 0), true); [line 18]\n " shape="invhouse"]
11 -> 8 ; "switch_with_fallthrough8" -> "switch_with_fallthrough5" ;
10 [label="10: Prune (false branch) \n PRUNE(((n$1 == 77) == 0), false); [line 20]\n " shape="invhouse"] "switch_with_fallthrough7" [label="7: Prune (false branch) \n PRUNE(((n$1 == 77) == 0), false); [line 20]\n " shape="invhouse"]
10 -> 6 ; "switch_with_fallthrough7" -> "switch_with_fallthrough3" ;
9 [label="9: Prune (true branch) \n PRUNE(((n$1 == 77) != 0), true); [line 20]\n " shape="invhouse"] "switch_with_fallthrough6" [label="6: Prune (true branch) \n PRUNE(((n$1 == 77) != 0), true); [line 20]\n " shape="invhouse"]
9 -> 8 ; "switch_with_fallthrough6" -> "switch_with_fallthrough5" ;
8 [label="8: BinaryOperatorStmt: Assign \n n$2=_fun_h() [line 21]\n *&res:int =n$2 [line 21]\n " shape="box"] "switch_with_fallthrough5" [label="5: BinaryOperatorStmt: Assign \n n$2=_fun_h() [line 21]\n *&res:int =n$2 [line 21]\n " shape="box"]
8 -> 6 ; "switch_with_fallthrough5" -> "switch_with_fallthrough3" ;
7 [label="7: Switch_stmt \n n$1=*&n:int [line 14]\n " shape="box"] "switch_with_fallthrough4" [label="4: Switch_stmt \n n$1=*&n:int [line 14]\n " shape="box"]
7 -> 15 ; "switch_with_fallthrough4" -> "switch_with_fallthrough12" ;
7 -> 16 ; "switch_with_fallthrough4" -> "switch_with_fallthrough13" ;
6 [label="6: Return Stmt \n n$0=*&res:int [line 24]\n *&return:int =n$0 [line 24]\n " shape="box"] "switch_with_fallthrough3" [label="3: Return Stmt \n n$0=*&res:int [line 24]\n *&return:int =n$0 [line 24]\n " shape="box"]
6 -> 5 ; "switch_with_fallthrough3" -> "switch_with_fallthrough2" ;
5 [label="5: Exit switch_with_fallthrough \n " color=yellow style=filled] "switch_with_fallthrough2" [label="2: Exit switch_with_fallthrough \n " color=yellow style=filled]
4 [label="4: Start switch_with_fallthrough\nFormals: n:int \nLocals: res:int \n DECLARE_LOCALS(&return,&res); [line 12]\n " color=yellow style=filled] "switch_with_fallthrough1" [label="1: Start switch_with_fallthrough\nFormals: n:int \nLocals: res:int \n DECLARE_LOCALS(&return,&res); [line 12]\n " color=yellow style=filled]
4 -> 17 ; "switch_with_fallthrough1" -> "switch_with_fallthrough14" ;
3 [label="3: Return Stmt \n *&return:int =3 [line 10]\n " shape="box"] "test_fallthrough3" [label="3: Return Stmt \n n$0=_fun_switch_with_fallthrough(66:int ) [line 27]\n *&return:int =(1 / (n$0 - 3)) [line 27]\n " shape="box"]
3 -> 2 ; "test_fallthrough3" -> "test_fallthrough2" ;
2 [label="2: Exit h \n " color=yellow style=filled] "test_fallthrough2" [label="2: Exit test_fallthrough \n " color=yellow style=filled]
1 [label="1: Start h\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 10]\n " color=yellow style=filled] "test_fallthrough1" [label="1: Start test_fallthrough\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 27]\n " color=yellow style=filled]
1 -> 3 ; "test_fallthrough1" -> "test_fallthrough3" ;
} }

@ -1,26 +1,26 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
6 [label="6: DeclStmt \n *&x:int =2 [line 11]\n " shape="box"] "test6" [label="6: DeclStmt \n *&x:int =2 [line 11]\n " shape="box"]
6 -> 5 ; "test6" -> "test5" ;
5 [label="5: DeclStmt \n n$2=_fun___new(sizeof(int ):unsigned long ) [line 12]\n *&i:int *=n$2 [line 12]\n " shape="box"] "test5" [label="5: DeclStmt \n n$2=_fun___new(sizeof(int ):unsigned long ) [line 12]\n *&i:int *=n$2 [line 12]\n " shape="box"]
5 -> 4 ; "test5" -> "test4" ;
4 [label="4: CXXNewExpr \n n$1=_fun___new(sizeof(int ):unsigned long ) [line 13]\n " shape="box"] "test4" [label="4: CXXNewExpr \n n$1=_fun___new(sizeof(int ):unsigned long ) [line 13]\n " shape="box"]
4 -> 3 ; "test4" -> "test3" ;
3 [label="3: Call delete \n n$0=*&i:int * [line 14]\n _fun___delete(n$0:int *) [line 14]\n " shape="box"] "test3" [label="3: Call delete \n n$0=*&i:int * [line 14]\n _fun___delete(n$0:int *) [line 14]\n " shape="box"]
3 -> 2 ; "test3" -> "test2" ;
2 [label="2: Exit test \n " color=yellow style=filled] "test2" [label="2: Exit test \n " color=yellow style=filled]
1 [label="1: Start test\nFormals: \nLocals: i:int * x:int \n DECLARE_LOCALS(&return,&i,&x); [line 10]\n " color=yellow style=filled] "test1" [label="1: Start test\nFormals: \nLocals: i:int * x:int \n DECLARE_LOCALS(&return,&i,&x); [line 10]\n " color=yellow style=filled]
1 -> 6 ; "test1" -> "test6" ;
} }

@ -1,14 +1,14 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
3 [label="3: Call _fun_Person_~Person \n n$0=*&p:class Person * [line 15]\n _=*n$0:class Person [line 15]\n _fun_Person_~Person(n$0:class Person *) [line 15]\n " shape="box"] "f3" [label="3: Call _fun_Person_~Person \n n$0=*&p:class Person * [line 15]\n _=*n$0:class Person [line 15]\n _fun_Person_~Person(n$0:class Person *) [line 15]\n " shape="box"]
3 -> 2 ; "f3" -> "f2" ;
2 [label="2: Exit f \n " color=yellow style=filled] "f2" [label="2: Exit f \n " color=yellow style=filled]
1 [label="1: Start f\nFormals: p:class Person *\nLocals: \n DECLARE_LOCALS(&return); [line 15]\n " color=yellow style=filled] "f1" [label="1: Start f\nFormals: p:class Person *\nLocals: \n DECLARE_LOCALS(&return); [line 15]\n " color=yellow style=filled]
1 -> 3 ; "f1" -> "f3" ;
} }

@ -1,32 +1,32 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
8 [label="8: Call delete \n n$0=*&x:int * [line 16]\n _fun___delete(n$0:int *) [line 16]\n " shape="box"] "deleteInt3" [label="3: Call delete \n n$0=*&x:int * [line 16]\n _fun___delete(n$0:int *) [line 16]\n " shape="box"]
8 -> 7 ; "deleteInt3" -> "deleteInt2" ;
7 [label="7: Exit deleteInt \n " color=yellow style=filled] "deleteInt2" [label="2: Exit deleteInt \n " color=yellow style=filled]
6 [label="6: Start deleteInt\nFormals: x:int *\nLocals: \n DECLARE_LOCALS(&return); [line 16]\n " color=yellow style=filled] "deleteInt1" [label="1: Start deleteInt\nFormals: x:int *\nLocals: \n DECLARE_LOCALS(&return); [line 16]\n " color=yellow style=filled]
6 -> 8 ; "deleteInt1" -> "deleteInt3" ;
5 [label="5: Call delete \n n$0=*&x:class X * [line 14]\n _fun___delete(n$0:class X *) [line 14]\n " shape="box"] "X_~X2" [label="2: Exit X_~X \n " color=yellow style=filled]
5 -> 4 ; "X_~X1" [label="1: Start X_~X\nFormals: this:class X *\nLocals: \n DECLARE_LOCALS(&return); [line 11]\n " color=yellow style=filled]
4 [label="4: Exit deleteX \n " color=yellow style=filled]
3 [label="3: Start deleteX\nFormals: x:class X *\nLocals: \n DECLARE_LOCALS(&return); [line 14]\n " color=yellow style=filled] "X_~X1" -> "X_~X2" ;
"deleteX3" [label="3: Call delete \n n$0=*&x:class X * [line 14]\n _fun___delete(n$0:class X *) [line 14]\n " shape="box"]
3 -> 5 ; "deleteX3" -> "deleteX2" ;
2 [label="2: Exit X_~X \n " color=yellow style=filled] "deleteX2" [label="2: Exit deleteX \n " color=yellow style=filled]
1 [label="1: Start X_~X\nFormals: this:class X *\nLocals: \n DECLARE_LOCALS(&return); [line 11]\n " color=yellow style=filled] "deleteX1" [label="1: Start deleteX\nFormals: x:class X *\nLocals: \n DECLARE_LOCALS(&return); [line 14]\n " color=yellow style=filled]
1 -> 2 ; "deleteX1" -> "deleteX3" ;
} }

@ -1,52 +1,52 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
13 [label="13: DeclStmt \n *&t:int *=0 [line 24]\n " shape="box"] "test4" [label="4: DeclStmt \n *&t:int *=0 [line 24]\n " shape="box"]
13 -> 12 ; "test4" -> "test3" ;
12 [label="12: Call _fun_destroy<int_*> \n n$0=_fun_destroy<int_*>(&t:int **) [line 25]\n " shape="box"] "test3" [label="3: Call _fun_destroy<int_*> \n n$0=_fun_destroy<int_*>(&t:int **) [line 25]\n " shape="box"]
12 -> 11 ; "test3" -> "test2" ;
11 [label="11: Exit test \n " color=yellow style=filled] "test2" [label="2: Exit test \n " color=yellow style=filled]
10 [label="10: Start test\nFormals: \nLocals: t:int * \n DECLARE_LOCALS(&return,&t); [line 23]\n " color=yellow style=filled] "test1" [label="1: Start test\nFormals: \nLocals: t:int * \n DECLARE_LOCALS(&return,&t); [line 23]\n " color=yellow style=filled]
10 -> 13 ; "test1" -> "test4" ;
9 [label="9: Call _fun___infer_skip_function \n _fun___infer_skip_function() [line 19]\n " shape="box"] "f5" [label="5: DeclStmt \n n$1=*&p:int * [line 12]\n n$2=*n$1:int [line 12]\n *&x:int =n$2 [line 12]\n " shape="box"]
9 -> 8 ; "f5" -> "f4" ;
8 [label="8: Return Stmt \n *&return:int =0 [line 20]\n " shape="box"] "f4" [label="4: Call _fun___infer_skip_function \n _fun___infer_skip_function() [line 13]\n " shape="box"]
8 -> 7 ; "f4" -> "f3" ;
7 [label="7: Exit destroy<int_*> \n " color=yellow style=filled] "f3" [label="3: Return Stmt \n n$0=*&x:int [line 14]\n *&return:int =n$0 [line 14]\n " shape="box"]
6 [label="6: Start destroy<int_*>\nFormals: ptr:int **\nLocals: \n DECLARE_LOCALS(&return); [line 18]\n " color=yellow style=filled] "f3" -> "f2" ;
"f2" [label="2: Exit f \n " color=yellow style=filled]
6 -> 9 ; "f1" [label="1: Start f\nFormals: p:int *\nLocals: x:int \n DECLARE_LOCALS(&return,&x); [line 11]\n " color=yellow style=filled]
5 [label="5: DeclStmt \n n$1=*&p:int * [line 12]\n n$2=*n$1:int [line 12]\n *&x:int =n$2 [line 12]\n " shape="box"]
5 -> 4 ; "f1" -> "f5" ;
4 [label="4: Call _fun___infer_skip_function \n _fun___infer_skip_function() [line 13]\n " shape="box"] "destroy<int_*>4" [label="4: Call _fun___infer_skip_function \n _fun___infer_skip_function() [line 19]\n " shape="box"]
4 -> 3 ; "destroy<int_*>4" -> "destroy<int_*>3" ;
3 [label="3: Return Stmt \n n$0=*&x:int [line 14]\n *&return:int =n$0 [line 14]\n " shape="box"] "destroy<int_*>3" [label="3: Return Stmt \n *&return:int =0 [line 20]\n " shape="box"]
3 -> 2 ; "destroy<int_*>3" -> "destroy<int_*>2" ;
2 [label="2: Exit f \n " color=yellow style=filled] "destroy<int_*>2" [label="2: Exit destroy<int_*> \n " color=yellow style=filled]
1 [label="1: Start f\nFormals: p:int *\nLocals: x:int \n DECLARE_LOCALS(&return,&x); [line 11]\n " color=yellow style=filled] "destroy<int_*>1" [label="1: Start destroy<int_*>\nFormals: ptr:int **\nLocals: \n DECLARE_LOCALS(&return); [line 18]\n " color=yellow style=filled]
1 -> 5 ; "destroy<int_*>1" -> "destroy<int_*>4" ;
} }

@ -1,25 +1,25 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
6 [label="6: BinaryOperatorStmt: Assign \n n$0=*&this:class B * [line 20]\n *n$0.f:int =1 [line 20]\n " shape="box"] "B_~B3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class B * [line 20]\n *n$0.f:int =1 [line 20]\n " shape="box"]
6 -> 5 ; "B_~B3" -> "B_~B2" ;
5 [label="5: Exit B_~B \n " color=yellow style=filled] "B_~B2" [label="2: Exit B_~B \n " color=yellow style=filled]
4 [label="4: Start B_~B\nFormals: this:class B *\nLocals: \n DECLARE_LOCALS(&return); [line 20]\n " color=yellow style=filled] "B_~B1" [label="1: Start B_~B\nFormals: this:class B *\nLocals: \n DECLARE_LOCALS(&return); [line 20]\n " color=yellow style=filled]
4 -> 6 ; "B_~B1" -> "B_~B3" ;
3 [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class A * [line 12]\n *n$0.f:int =0 [line 12]\n " shape="box"] "A_~A3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class A * [line 12]\n *n$0.f:int =0 [line 12]\n " shape="box"]
3 -> 2 ; "A_~A3" -> "A_~A2" ;
2 [label="2: Exit A_~A \n " color=yellow style=filled] "A_~A2" [label="2: Exit A_~A \n " color=yellow style=filled]
1 [label="1: Start A_~A\nFormals: this:class A *\nLocals: \n DECLARE_LOCALS(&return); [line 12]\n " color=yellow style=filled] "A_~A1" [label="1: Start A_~A\nFormals: this:class A *\nLocals: \n DECLARE_LOCALS(&return); [line 12]\n " color=yellow style=filled]
1 -> 3 ; "A_~A1" -> "A_~A3" ;
} }

@ -1,65 +1,65 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
17 [label="17: DeclStmt \n *&#GB<globals/global_const1.cpp>$v:int =2 [line 20]\n n$1=*&#GB<globals/global_const1.cpp>$v:int [line 20]\n *&local:int =n$1 [line 20]\n " shape="box"] "__infer_globals_initializer_global3" [label="3: DeclStmt \n _fun_X_X(&#GB<globals/global_const1.cpp>$global:class X *) [line 13]\n " shape="box"]
17 -> 16 ; "__infer_globals_initializer_global3" -> "__infer_globals_initializer_global2" ;
16 [label="16: Return Stmt \n *&#GB<globals/global_const1.cpp>$v:int =2 [line 21]\n n$0=*&#GB<globals/global_const1.cpp>$v:int [line 21]\n *&return:int =n$0 [line 21]\n " shape="box"] "__infer_globals_initializer_global2" [label="2: Exit __infer_globals_initializer_global \n " color=yellow style=filled]
16 -> 15 ; "__infer_globals_initializer_global1" [label="1: Start __infer_globals_initializer_global\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 13]\n " color=yellow style=filled]
15 [label="15: Exit test2 \n " color=yellow style=filled]
14 [label="14: Start test2\nFormals: \nLocals: local:int \n DECLARE_LOCALS(&return,&local); [line 19]\n " color=yellow style=filled] "__infer_globals_initializer_global1" -> "__infer_globals_initializer_global3" ;
"X_X2" [label="2: Exit X_X \n " color=yellow style=filled]
14 -> 17 ; "X_X1" [label="1: Start X_X\nFormals: this:class X * __param_0:class X &\nLocals: \n DECLARE_LOCALS(&return); [line 10]\n " color=yellow style=filled]
13 [label="13: DeclStmt \n *&#GB<globals/global_const1.cpp>$v:int =2 [line 17]\n " shape="box"]
13 -> 12 ; "X_X1" -> "X_X2" ;
12 [label="12: Exit __infer_globals_initializer_v \n " color=yellow style=filled] "test3" [label="3: Return Stmt \n n$0=*&__return_param:class X * [line 15]\n _fun_X_X(&#GB<globals/global_const1.cpp>$global:class X *) [line 13]\n _fun_X_X(n$0:class X *,&#GB<globals/global_const1.cpp>$global:class X &) [line 15]\n " shape="box"]
11 [label="11: Start __infer_globals_initializer_v\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 17]\n " color=yellow style=filled] "test3" -> "test2" ;
"test2" [label="2: Exit test \n " color=yellow style=filled]
11 -> 13 ; "test1" [label="1: Start test\nFormals: __return_param:class X *\nLocals: \n DECLARE_LOCALS(&return); [line 15]\n " color=yellow style=filled]
10 [label="10: Return Stmt \n n$0=*&__return_param:class X * [line 15]\n _fun_X_X(&#GB<globals/global_const1.cpp>$global:class X *) [line 13]\n _fun_X_X(n$0:class X *,&#GB<globals/global_const1.cpp>$global:class X &) [line 15]\n " shape="box"]
10 -> 9 ; "test1" -> "test3" ;
9 [label="9: Exit test \n " color=yellow style=filled] "X_X2" [label="2: Exit X_X \n " color=yellow style=filled]
8 [label="8: Start test\nFormals: __return_param:class X *\nLocals: \n DECLARE_LOCALS(&return); [line 15]\n " color=yellow style=filled] "X_X1" [label="1: Start X_X\nFormals: this:class X *\nLocals: \n DECLARE_LOCALS(&return); [line 11]\n " color=yellow style=filled]
8 -> 10 ; "X_X1" -> "X_X2" ;
7 [label="7: DeclStmt \n _fun_X_X(&#GB<globals/global_const1.cpp>$global:class X *) [line 13]\n " shape="box"] "__infer_globals_initializer_v3" [label="3: DeclStmt \n *&#GB<globals/global_const1.cpp>$v:int =2 [line 17]\n " shape="box"]
7 -> 6 ; "__infer_globals_initializer_v3" -> "__infer_globals_initializer_v2" ;
6 [label="6: Exit __infer_globals_initializer_global \n " color=yellow style=filled] "__infer_globals_initializer_v2" [label="2: Exit __infer_globals_initializer_v \n " color=yellow style=filled]
5 [label="5: Start __infer_globals_initializer_global\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 13]\n " color=yellow style=filled] "__infer_globals_initializer_v1" [label="1: Start __infer_globals_initializer_v\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 17]\n " color=yellow style=filled]
5 -> 7 ; "__infer_globals_initializer_v1" -> "__infer_globals_initializer_v3" ;
4 [label="4: Exit X_X \n " color=yellow style=filled] "test24" [label="4: DeclStmt \n *&#GB<globals/global_const1.cpp>$v:int =2 [line 20]\n n$1=*&#GB<globals/global_const1.cpp>$v:int [line 20]\n *&local:int =n$1 [line 20]\n " shape="box"]
3 [label="3: Start X_X\nFormals: this:class X * __param_0:class X &\nLocals: \n DECLARE_LOCALS(&return); [line 10]\n " color=yellow style=filled] "test24" -> "test23" ;
"test23" [label="3: Return Stmt \n *&#GB<globals/global_const1.cpp>$v:int =2 [line 21]\n n$0=*&#GB<globals/global_const1.cpp>$v:int [line 21]\n *&return:int =n$0 [line 21]\n " shape="box"]
3 -> 4 ; "test23" -> "test22" ;
2 [label="2: Exit X_X \n " color=yellow style=filled] "test22" [label="2: Exit test2 \n " color=yellow style=filled]
1 [label="1: Start X_X\nFormals: this:class X *\nLocals: \n DECLARE_LOCALS(&return); [line 11]\n " color=yellow style=filled] "test21" [label="1: Start test2\nFormals: \nLocals: local:int \n DECLARE_LOCALS(&return,&local); [line 19]\n " color=yellow style=filled]
1 -> 2 ; "test21" -> "test24" ;
} }

@ -1,67 +1,67 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
16 [label="16: Return Stmt \n n$1=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 10]\n *&#GB<globals/global_const2.cpp>$global:int =n$1 [line 11]\n n$2=*&#GB<globals/global_const2.cpp>$global:int [line 11]\n *&return:int =n$2 [line 11]\n " shape="box"] "__infer_globals_initializer_global8" [label="8: DeclStmt \n n$1=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 10]\n *&#GB<globals/global_const2.cpp>$global:int =n$1 [line 10]\n " shape="box"]
16 -> 10 ; "__infer_globals_initializer_global8" -> "__infer_globals_initializer_global2" ;
15 [label="15: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =3 [line 10]\n " shape="box"] "__infer_globals_initializer_global7" [label="7: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =3 [line 10]\n " shape="box"]
15 -> 11 ; "__infer_globals_initializer_global7" -> "__infer_globals_initializer_global3" ;
14 [label="14: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =2 [line 10]\n " shape="box"] "__infer_globals_initializer_global6" [label="6: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =2 [line 10]\n " shape="box"]
14 -> 11 ; "__infer_globals_initializer_global6" -> "__infer_globals_initializer_global3" ;
13 [label="13: Prune (false branch) \n PRUNE((1 == 0), false); [line 10]\n " shape="invhouse"] "__infer_globals_initializer_global5" [label="5: Prune (false branch) \n PRUNE((1 == 0), false); [line 10]\n " shape="invhouse"]
13 -> 15 ; "__infer_globals_initializer_global5" -> "__infer_globals_initializer_global7" ;
12 [label="12: Prune (true branch) \n PRUNE((1 != 0), true); [line 10]\n " shape="invhouse"] "__infer_globals_initializer_global4" [label="4: Prune (true branch) \n PRUNE((1 != 0), true); [line 10]\n " shape="invhouse"]
12 -> 14 ; "__infer_globals_initializer_global4" -> "__infer_globals_initializer_global6" ;
11 [label="11: + \n " ] "__infer_globals_initializer_global3" [label="3: + \n " ]
11 -> 16 ; "__infer_globals_initializer_global3" -> "__infer_globals_initializer_global8" ;
10 [label="10: Exit test \n " color=yellow style=filled] "__infer_globals_initializer_global2" [label="2: Exit __infer_globals_initializer_global \n " color=yellow style=filled]
9 [label="9: Start test\nFormals: \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0); [line 11]\n " color=yellow style=filled] "__infer_globals_initializer_global1" [label="1: Start __infer_globals_initializer_global\nFormals: \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0); [line 10]\n " color=yellow style=filled]
9 -> 12 ; "__infer_globals_initializer_global1" -> "__infer_globals_initializer_global4" ;
9 -> 13 ; "__infer_globals_initializer_global1" -> "__infer_globals_initializer_global5" ;
8 [label="8: DeclStmt \n n$1=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 10]\n *&#GB<globals/global_const2.cpp>$global:int =n$1 [line 10]\n " shape="box"] "test8" [label="8: Return Stmt \n n$1=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 10]\n *&#GB<globals/global_const2.cpp>$global:int =n$1 [line 11]\n n$2=*&#GB<globals/global_const2.cpp>$global:int [line 11]\n *&return:int =n$2 [line 11]\n " shape="box"]
8 -> 2 ; "test8" -> "test2" ;
7 [label="7: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =3 [line 10]\n " shape="box"] "test7" [label="7: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =3 [line 10]\n " shape="box"]
7 -> 3 ; "test7" -> "test3" ;
6 [label="6: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =2 [line 10]\n " shape="box"] "test6" [label="6: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =2 [line 10]\n " shape="box"]
6 -> 3 ; "test6" -> "test3" ;
5 [label="5: Prune (false branch) \n PRUNE((1 == 0), false); [line 10]\n " shape="invhouse"] "test5" [label="5: Prune (false branch) \n PRUNE((1 == 0), false); [line 10]\n " shape="invhouse"]
5 -> 7 ; "test5" -> "test7" ;
4 [label="4: Prune (true branch) \n PRUNE((1 != 0), true); [line 10]\n " shape="invhouse"] "test4" [label="4: Prune (true branch) \n PRUNE((1 != 0), true); [line 10]\n " shape="invhouse"]
4 -> 6 ; "test4" -> "test6" ;
3 [label="3: + \n " ] "test3" [label="3: + \n " ]
3 -> 8 ; "test3" -> "test8" ;
2 [label="2: Exit __infer_globals_initializer_global \n " color=yellow style=filled] "test2" [label="2: Exit test \n " color=yellow style=filled]
1 [label="1: Start __infer_globals_initializer_global\nFormals: \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0); [line 10]\n " color=yellow style=filled] "test1" [label="1: Start test\nFormals: \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0); [line 11]\n " color=yellow style=filled]
1 -> 4 ; "test1" -> "test4" ;
1 -> 5 ; "test1" -> "test5" ;
} }

@ -1,25 +1,25 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
6 [label="6: DeclStmt \n n$0=*&#GB<globals/initializer.cpp>$x:int [line 15]\n n$1=*&#GB<globals/initializer.cpp>$z:int [line 15]\n *&#GB<globals/initializer.cpp>$y:int =((n$0 + n$1) + 1) [line 15]\n " shape="box"] "__infer_globals_initializer_x3" [label="3: DeclStmt \n n$0=_fun_foo() [line 14]\n *&#GB<globals/initializer.cpp>$x:int =(n$0 + 5) [line 14]\n " shape="box"]
6 -> 5 ; "__infer_globals_initializer_x3" -> "__infer_globals_initializer_x2" ;
5 [label="5: Exit __infer_globals_initializer_y \n " color=yellow style=filled] "__infer_globals_initializer_x2" [label="2: Exit __infer_globals_initializer_x \n " color=yellow style=filled]
4 [label="4: Start __infer_globals_initializer_y\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 15]\n " color=yellow style=filled] "__infer_globals_initializer_x1" [label="1: Start __infer_globals_initializer_x\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 14]\n " color=yellow style=filled]
4 -> 6 ; "__infer_globals_initializer_x1" -> "__infer_globals_initializer_x3" ;
3 [label="3: DeclStmt \n n$0=_fun_foo() [line 14]\n *&#GB<globals/initializer.cpp>$x:int =(n$0 + 5) [line 14]\n " shape="box"] "__infer_globals_initializer_y3" [label="3: DeclStmt \n n$0=*&#GB<globals/initializer.cpp>$x:int [line 15]\n n$1=*&#GB<globals/initializer.cpp>$z:int [line 15]\n *&#GB<globals/initializer.cpp>$y:int =((n$0 + n$1) + 1) [line 15]\n " shape="box"]
3 -> 2 ; "__infer_globals_initializer_y3" -> "__infer_globals_initializer_y2" ;
2 [label="2: Exit __infer_globals_initializer_x \n " color=yellow style=filled] "__infer_globals_initializer_y2" [label="2: Exit __infer_globals_initializer_y \n " color=yellow style=filled]
1 [label="1: Start __infer_globals_initializer_x\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 14]\n " color=yellow style=filled] "__infer_globals_initializer_y1" [label="1: Start __infer_globals_initializer_y\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 15]\n " color=yellow style=filled]
1 -> 3 ; "__infer_globals_initializer_y1" -> "__infer_globals_initializer_y3" ;
} }

@ -1,25 +1,25 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
6 [label="6: Return Stmt \n *&return:int =(1 / 0) [line 19]\n " shape="box"] "div0_fun3" [label="3: Return Stmt \n *&return:int =(1 / 0) [line 19]\n " shape="box"]
6 -> 5 ; "div0_fun3" -> "div0_fun2" ;
5 [label="5: Exit div0_fun \n " color=yellow style=filled] "div0_fun2" [label="2: Exit div0_fun \n " color=yellow style=filled]
4 [label="4: Start div0_fun\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 19]\n " color=yellow style=filled] "div0_fun1" [label="1: Start div0_fun\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 19]\n " color=yellow style=filled]
4 -> 6 ; "div0_fun1" -> "div0_fun3" ;
3 [label="3: Return Stmt \n *&return:int =(1 / 0) [line 11]\n " shape="box"] "A_div03" [label="3: Return Stmt \n *&return:int =(1 / 0) [line 11]\n " shape="box"]
3 -> 2 ; "A_div03" -> "A_div02" ;
2 [label="2: Exit A_div0 \n " color=yellow style=filled] "A_div02" [label="2: Exit A_div0 \n " color=yellow style=filled]
1 [label="1: Start A_div0\nFormals: this:class A *\nLocals: \n DECLARE_LOCALS(&return); [line 11]\n " color=yellow style=filled] "A_div01" [label="1: Start A_div0\nFormals: this:class A *\nLocals: \n DECLARE_LOCALS(&return); [line 11]\n " color=yellow style=filled]
1 -> 3 ; "A_div01" -> "A_div03" ;
} }

@ -1,135 +1,135 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
36 [label="36: Call _fun_div0_templ<A> \n n$0=_fun_div0_templ<A>() [line 25]\n " shape="box"] "div0_templ<A>3" [label="3: Return Stmt \n *&return:int =(1 / 0) [line 23]\n " shape="box"]
36 -> 35 ; "div0_templ<A>3" -> "div0_templ<A>2" ;
35 [label="35: Exit div0_templ_A \n " color=yellow style=filled] "div0_templ<A>2" [label="2: Exit div0_templ<A> \n " color=yellow style=filled]
34 [label="34: Start div0_templ_A\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 25]\n " color=yellow style=filled] "div0_templ<A>1" [label="1: Start div0_templ<A>\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 22]\n " color=yellow style=filled]
34 -> 36 ; "div0_templ<A>1" -> "div0_templ<A>3" ;
33 [label="33: Call _fun_div0_templ<int> \n n$0=_fun_div0_templ<int>() [line 23]\n " shape="box"] "div0_fun3" [label="3: Return Stmt \n *&return:int =(1 / 0) [line 19]\n " shape="box"]
33 -> 32 ; "div0_fun3" -> "div0_fun2" ;
32 [label="32: Exit div0_templ_int \n " color=yellow style=filled] "div0_fun2" [label="2: Exit div0_fun \n " color=yellow style=filled]
31 [label="31: Start div0_templ_int\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 23]\n " color=yellow style=filled] "div0_fun1" [label="1: Start div0_fun\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 19]\n " color=yellow style=filled]
31 -> 33 ; "div0_fun1" -> "div0_fun3" ;
30 [label="30: DeclStmt \n _fun_B<A>_B(&b:class B<A> *) [line 19]\n " shape="box"] "B<int>_B2" [label="2: Exit B<int>_B \n " color=yellow style=filled]
30 -> 29 ; "B<int>_B1" [label="1: Start B<int>_B\nFormals: this:class B<int> *\nLocals: \n DECLARE_LOCALS(&return); [line 15]\n " color=yellow style=filled]
29 [label="29: Call _fun_B<A>_div0 \n _=*&b:class B<A> [line 20]\n n$1=_fun_B<A>_div0(&b:class B<A> &) [line 20]\n " shape="box"]
29 -> 28 ; "B<int>_B1" -> "B<int>_B2" ;
28 [label="28: Exit div0_B_A \n " color=yellow style=filled] "div0_templ_A3" [label="3: Call _fun_div0_templ<A> \n n$0=_fun_div0_templ<A>() [line 25]\n " shape="box"]
27 [label="27: Start div0_B_A\nFormals: \nLocals: b:class B<A> \n DECLARE_LOCALS(&return,&b); [line 18]\n " color=yellow style=filled] "div0_templ_A3" -> "div0_templ_A2" ;
"div0_templ_A2" [label="2: Exit div0_templ_A \n " color=yellow style=filled]
27 -> 30 ; "div0_templ_A1" [label="1: Start div0_templ_A\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 25]\n " color=yellow style=filled]
26 [label="26: DeclStmt \n _fun_B<int>_B(&b:class B<int> *) [line 14]\n " shape="box"]
26 -> 25 ; "div0_templ_A1" -> "div0_templ_A3" ;
25 [label="25: Call _fun_B<int>_div0 \n _=*&b:class B<int> [line 15]\n n$1=_fun_B<int>_div0(&b:class B<int> &) [line 15]\n " shape="box"] "B<A>_div03" [label="3: Return Stmt \n *&return:int =(1 / 0) [line 16]\n " shape="box"]
25 -> 24 ; "B<A>_div03" -> "B<A>_div02" ;
24 [label="24: Exit div0_B_int \n " color=yellow style=filled] "B<A>_div02" [label="2: Exit B<A>_div0 \n " color=yellow style=filled]
23 [label="23: Start div0_B_int\nFormals: \nLocals: b:class B<int> \n DECLARE_LOCALS(&return,&b); [line 13]\n " color=yellow style=filled] "B<A>_div01" [label="1: Start B<A>_div0\nFormals: this:class B<A> *\nLocals: \n DECLARE_LOCALS(&return); [line 16]\n " color=yellow style=filled]
23 -> 26 ; "B<A>_div01" -> "B<A>_div03" ;
22 [label="22: Return Stmt \n *&return:int =(1 / 0) [line 23]\n " shape="box"] "div0_templ_int3" [label="3: Call _fun_div0_templ<int> \n n$0=_fun_div0_templ<int>() [line 23]\n " shape="box"]
22 -> 21 ; "div0_templ_int3" -> "div0_templ_int2" ;
21 [label="21: Exit div0_templ<A> \n " color=yellow style=filled] "div0_templ_int2" [label="2: Exit div0_templ_int \n " color=yellow style=filled]
20 [label="20: Start div0_templ<A>\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 22]\n " color=yellow style=filled] "div0_templ_int1" [label="1: Start div0_templ_int\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 23]\n " color=yellow style=filled]
20 -> 22 ; "div0_templ_int1" -> "div0_templ_int3" ;
19 [label="19: Return Stmt \n *&return:int =(1 / 0) [line 23]\n " shape="box"] "A_div03" [label="3: Return Stmt \n *&return:int =(1 / 0) [line 11]\n " shape="box"]
19 -> 18 ; "A_div03" -> "A_div02" ;
18 [label="18: Exit div0_templ<int> \n " color=yellow style=filled] "A_div02" [label="2: Exit A_div0 \n " color=yellow style=filled]
17 [label="17: Start div0_templ<int>\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 22]\n " color=yellow style=filled] "A_div01" [label="1: Start A_div0\nFormals: this:class A *\nLocals: \n DECLARE_LOCALS(&return); [line 11]\n " color=yellow style=filled]
17 -> 19 ; "A_div01" -> "A_div03" ;
16 [label="16: Return Stmt \n *&return:int =(1 / 0) [line 19]\n " shape="box"] "div0_B_A4" [label="4: DeclStmt \n _fun_B<A>_B(&b:class B<A> *) [line 19]\n " shape="box"]
16 -> 15 ; "div0_B_A4" -> "div0_B_A3" ;
15 [label="15: Exit div0_fun \n " color=yellow style=filled] "div0_B_A3" [label="3: Call _fun_B<A>_div0 \n _=*&b:class B<A> [line 20]\n n$1=_fun_B<A>_div0(&b:class B<A> &) [line 20]\n " shape="box"]
14 [label="14: Start div0_fun\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 19]\n " color=yellow style=filled] "div0_B_A3" -> "div0_B_A2" ;
"div0_B_A2" [label="2: Exit div0_B_A \n " color=yellow style=filled]
14 -> 16 ; "div0_B_A1" [label="1: Start div0_B_A\nFormals: \nLocals: b:class B<A> \n DECLARE_LOCALS(&return,&b); [line 18]\n " color=yellow style=filled]
13 [label="13: Exit B<A>_B \n " color=yellow style=filled]
12 [label="12: Start B<A>_B\nFormals: this:class B<A> *\nLocals: \n DECLARE_LOCALS(&return); [line 15]\n " color=yellow style=filled] "div0_B_A1" -> "div0_B_A4" ;
"div0_B_int4" [label="4: DeclStmt \n _fun_B<int>_B(&b:class B<int> *) [line 14]\n " shape="box"]
12 -> 13 ; "div0_B_int4" -> "div0_B_int3" ;
11 [label="11: Return Stmt \n *&return:int =(1 / 0) [line 16]\n " shape="box"] "div0_B_int3" [label="3: Call _fun_B<int>_div0 \n _=*&b:class B<int> [line 15]\n n$1=_fun_B<int>_div0(&b:class B<int> &) [line 15]\n " shape="box"]
11 -> 10 ; "div0_B_int3" -> "div0_B_int2" ;
10 [label="10: Exit B<A>_div0 \n " color=yellow style=filled] "div0_B_int2" [label="2: Exit div0_B_int \n " color=yellow style=filled]
9 [label="9: Start B<A>_div0\nFormals: this:class B<A> *\nLocals: \n DECLARE_LOCALS(&return); [line 16]\n " color=yellow style=filled] "div0_B_int1" [label="1: Start div0_B_int\nFormals: \nLocals: b:class B<int> \n DECLARE_LOCALS(&return,&b); [line 13]\n " color=yellow style=filled]
9 -> 11 ; "div0_B_int1" -> "div0_B_int4" ;
8 [label="8: Exit B<int>_B \n " color=yellow style=filled] "B<A>_B2" [label="2: Exit B<A>_B \n " color=yellow style=filled]
7 [label="7: Start B<int>_B\nFormals: this:class B<int> *\nLocals: \n DECLARE_LOCALS(&return); [line 15]\n " color=yellow style=filled] "B<A>_B1" [label="1: Start B<A>_B\nFormals: this:class B<A> *\nLocals: \n DECLARE_LOCALS(&return); [line 15]\n " color=yellow style=filled]
7 -> 8 ; "B<A>_B1" -> "B<A>_B2" ;
6 [label="6: Return Stmt \n *&return:int =(1 / 0) [line 16]\n " shape="box"] "div0_templ<int>3" [label="3: Return Stmt \n *&return:int =(1 / 0) [line 23]\n " shape="box"]
6 -> 5 ; "div0_templ<int>3" -> "div0_templ<int>2" ;
5 [label="5: Exit B<int>_div0 \n " color=yellow style=filled] "div0_templ<int>2" [label="2: Exit div0_templ<int> \n " color=yellow style=filled]
4 [label="4: Start B<int>_div0\nFormals: this:class B<int> *\nLocals: \n DECLARE_LOCALS(&return); [line 16]\n " color=yellow style=filled] "div0_templ<int>1" [label="1: Start div0_templ<int>\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 22]\n " color=yellow style=filled]
4 -> 6 ; "div0_templ<int>1" -> "div0_templ<int>3" ;
3 [label="3: Return Stmt \n *&return:int =(1 / 0) [line 11]\n " shape="box"] "B<int>_div03" [label="3: Return Stmt \n *&return:int =(1 / 0) [line 16]\n " shape="box"]
3 -> 2 ; "B<int>_div03" -> "B<int>_div02" ;
2 [label="2: Exit A_div0 \n " color=yellow style=filled] "B<int>_div02" [label="2: Exit B<int>_div0 \n " color=yellow style=filled]
1 [label="1: Start A_div0\nFormals: this:class A *\nLocals: \n DECLARE_LOCALS(&return); [line 11]\n " color=yellow style=filled] "B<int>_div01" [label="1: Start B<int>_div0\nFormals: this:class B<int> *\nLocals: \n DECLARE_LOCALS(&return); [line 16]\n " color=yellow style=filled]
1 -> 3 ; "B<int>_div01" -> "B<int>_div03" ;
} }

@ -1,36 +1,36 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
9 [label="9: Return Stmt \n n$0=*&a:class A * [line 17]\n _=*n$0:class A [line 17]\n n$2=_fun_A_meth_with_self(n$0:class A *,1:int ,2:int ) [line 17]\n n$3=_fun_fun_with_self(10:int ) [line 17]\n *&return:int =(n$2 + n$3) [line 17]\n " shape="box"] "test3" [label="3: Return Stmt \n n$0=*&a:class A * [line 17]\n _=*n$0:class A [line 17]\n n$2=_fun_A_meth_with_self(n$0:class A *,1:int ,2:int ) [line 17]\n n$3=_fun_fun_with_self(10:int ) [line 17]\n *&return:int =(n$2 + n$3) [line 17]\n " shape="box"]
9 -> 8 ; "test3" -> "test2" ;
8 [label="8: Exit test \n " color=yellow style=filled] "test2" [label="2: Exit test \n " color=yellow style=filled]
7 [label="7: Start test\nFormals: a:class A *\nLocals: \n DECLARE_LOCALS(&return); [line 17]\n " color=yellow style=filled] "test1" [label="1: Start test\nFormals: a:class A *\nLocals: \n DECLARE_LOCALS(&return); [line 17]\n " color=yellow style=filled]
7 -> 9 ; "test1" -> "test3" ;
6 [label="6: Return Stmt \n n$0=*&self:int [line 15]\n *&return:int =n$0 [line 15]\n " shape="box"] "A_meth_with_self3" [label="3: Return Stmt \n n$0=*&self:int [line 12]\n n$1=*&b:int [line 12]\n *&return:int =(n$0 + n$1) [line 12]\n " shape="box"]
6 -> 5 ; "A_meth_with_self3" -> "A_meth_with_self2" ;
5 [label="5: Exit fun_with_self \n " color=yellow style=filled] "A_meth_with_self2" [label="2: Exit A_meth_with_self \n " color=yellow style=filled]
4 [label="4: Start fun_with_self\nFormals: self:int \nLocals: \n DECLARE_LOCALS(&return); [line 15]\n " color=yellow style=filled] "A_meth_with_self1" [label="1: Start A_meth_with_self\nFormals: this:class A * self:int b:int \nLocals: \n DECLARE_LOCALS(&return); [line 12]\n " color=yellow style=filled]
4 -> 6 ; "A_meth_with_self1" -> "A_meth_with_self3" ;
3 [label="3: Return Stmt \n n$0=*&self:int [line 12]\n n$1=*&b:int [line 12]\n *&return:int =(n$0 + n$1) [line 12]\n " shape="box"] "fun_with_self3" [label="3: Return Stmt \n n$0=*&self:int [line 15]\n *&return:int =n$0 [line 15]\n " shape="box"]
3 -> 2 ; "fun_with_self3" -> "fun_with_self2" ;
2 [label="2: Exit A_meth_with_self \n " color=yellow style=filled] "fun_with_self2" [label="2: Exit fun_with_self \n " color=yellow style=filled]
1 [label="1: Start A_meth_with_self\nFormals: this:class A * self:int b:int \nLocals: \n DECLARE_LOCALS(&return); [line 12]\n " color=yellow style=filled] "fun_with_self1" [label="1: Start fun_with_self\nFormals: self:int \nLocals: \n DECLARE_LOCALS(&return); [line 15]\n " color=yellow style=filled]
1 -> 3 ; "fun_with_self1" -> "fun_with_self3" ;
} }

@ -1,14 +1,14 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
3 [label="3: Return Stmt \n *&return:int *=null [line 10]\n " shape="box"] "getPtr3" [label="3: Return Stmt \n *&return:int *=null [line 10]\n " shape="box"]
3 -> 2 ; "getPtr3" -> "getPtr2" ;
2 [label="2: Exit getPtr \n " color=yellow style=filled] "getPtr2" [label="2: Exit getPtr \n " color=yellow style=filled]
1 [label="1: Start getPtr\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 10]\n " color=yellow style=filled] "getPtr1" [label="1: Start getPtr\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 10]\n " color=yellow style=filled]
1 -> 3 ; "getPtr1" -> "getPtr3" ;
} }

@ -1,89 +1,89 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
23 [label="23: DeclStmt \n n$3=_fun_get<int>() [line 18]\n *&i:int =n$3 [line 18]\n " shape="box"] "get<ENUM>3" [label="3: Return Stmt \n *&return:int =0 [line 14]\n " shape="box"]
23 -> 22 ; "get<ENUM>3" -> "get<ENUM>2" ;
22 [label="22: DeclStmt \n n$2=_fun_get<float>() [line 19]\n *&f:float =n$2 [line 19]\n " shape="box"] "get<ENUM>2" [label="2: Exit get<ENUM> \n " color=yellow style=filled]
22 -> 21 ; "get<ENUM>1" [label="1: Start get<ENUM>\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 13]\n " color=yellow style=filled]
21 [label="21: DeclStmt \n n$1=_fun_get<float_*>() [line 20]\n *&fp:float *=n$1 [line 20]\n " shape="box"]
21 -> 20 ; "get<ENUM>1" -> "get<ENUM>3" ;
20 [label="20: Call _fun_get<void> \n _fun_get<void>() [line 21]\n " shape="box"] "test8" [label="8: DeclStmt \n n$3=_fun_get<int>() [line 18]\n *&i:int =n$3 [line 18]\n " shape="box"]
20 -> 19 ; "test8" -> "test7" ;
19 [label="19: DeclStmt \n n$0=_fun_get<ENUM>() [line 22]\n *&x:int =n$0 [line 22]\n " shape="box"] "test7" [label="7: DeclStmt \n n$2=_fun_get<float>() [line 19]\n *&f:float =n$2 [line 19]\n " shape="box"]
19 -> 18 ; "test7" -> "test6" ;
18 [label="18: DeclStmt \n *&f2:float =0.000000 [line 23]\n " shape="box"] "test6" [label="6: DeclStmt \n n$1=_fun_get<float_*>() [line 20]\n *&fp:float *=n$1 [line 20]\n " shape="box"]
18 -> 17 ; "test6" -> "test5" ;
17 [label="17: Exit test \n " color=yellow style=filled] "test5" [label="5: Call _fun_get<void> \n _fun_get<void>() [line 21]\n " shape="box"]
16 [label="16: Start test\nFormals: \nLocals: f2:float x:int fp:float * f:float i:int \n DECLARE_LOCALS(&return,&f2,&x,&fp,&f,&i); [line 17]\n " color=yellow style=filled] "test5" -> "test4" ;
"test4" [label="4: DeclStmt \n n$0=_fun_get<ENUM>() [line 22]\n *&x:int =n$0 [line 22]\n " shape="box"]
16 -> 23 ; "test4" -> "test3" ;
15 [label="15: Return Stmt \n *&return:int =0 [line 14]\n " shape="box"] "test3" [label="3: DeclStmt \n *&f2:float =0.000000 [line 23]\n " shape="box"]
15 -> 14 ; "test3" -> "test2" ;
14 [label="14: Exit get<ENUM> \n " color=yellow style=filled] "test2" [label="2: Exit test \n " color=yellow style=filled]
13 [label="13: Start get<ENUM>\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 13]\n " color=yellow style=filled] "test1" [label="1: Start test\nFormals: \nLocals: f2:float x:int fp:float * f:float i:int \n DECLARE_LOCALS(&return,&f2,&x,&fp,&f,&i); [line 17]\n " color=yellow style=filled]
13 -> 15 ; "test1" -> "test8" ;
12 [label="12: Return Stmt \n *&return:void =-1 [line 14]\n " shape="box"] "get<void>3" [label="3: Return Stmt \n *&return:void =-1 [line 14]\n " shape="box"]
12 -> 11 ; "get<void>3" -> "get<void>2" ;
11 [label="11: Exit get<void> \n " color=yellow style=filled] "get<void>2" [label="2: Exit get<void> \n " color=yellow style=filled]
10 [label="10: Start get<void>\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 13]\n " color=yellow style=filled] "get<void>1" [label="1: Start get<void>\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 13]\n " color=yellow style=filled]
10 -> 12 ; "get<void>1" -> "get<void>3" ;
9 [label="9: Return Stmt \n *&return:float *=null [line 14]\n " shape="box"] "get<float>3" [label="3: Return Stmt \n *&return:float =0.000000 [line 14]\n " shape="box"]
9 -> 8 ; "get<float>3" -> "get<float>2" ;
8 [label="8: Exit get<float_*> \n " color=yellow style=filled] "get<float>2" [label="2: Exit get<float> \n " color=yellow style=filled]
7 [label="7: Start get<float_*>\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 13]\n " color=yellow style=filled] "get<float>1" [label="1: Start get<float>\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 13]\n " color=yellow style=filled]
7 -> 9 ; "get<float>1" -> "get<float>3" ;
6 [label="6: Return Stmt \n *&return:float =0.000000 [line 14]\n " shape="box"] "get<int>3" [label="3: Return Stmt \n *&return:int =0 [line 14]\n " shape="box"]
6 -> 5 ; "get<int>3" -> "get<int>2" ;
5 [label="5: Exit get<float> \n " color=yellow style=filled] "get<int>2" [label="2: Exit get<int> \n " color=yellow style=filled]
4 [label="4: Start get<float>\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 13]\n " color=yellow style=filled] "get<int>1" [label="1: Start get<int>\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 13]\n " color=yellow style=filled]
4 -> 6 ; "get<int>1" -> "get<int>3" ;
3 [label="3: Return Stmt \n *&return:int =0 [line 14]\n " shape="box"] "get<float_*>3" [label="3: Return Stmt \n *&return:float *=null [line 14]\n " shape="box"]
3 -> 2 ; "get<float_*>3" -> "get<float_*>2" ;
2 [label="2: Exit get<int> \n " color=yellow style=filled] "get<float_*>2" [label="2: Exit get<float_*> \n " color=yellow style=filled]
1 [label="1: Start get<int>\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 13]\n " color=yellow style=filled] "get<float_*>1" [label="1: Start get<float_*>\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 13]\n " color=yellow style=filled]
1 -> 3 ; "get<float_*>1" -> "get<float_*>3" ;
} }

@ -1,166 +1,166 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
43 [label="43: DeclStmt \n _fun_vec_vec(&vector:class vec *,10:int ) [line 36]\n " shape="box"] "vec_vec6" [label="6: Constructor Init \n n$4=*&this:class vec * [line 24]\n _fun_iterator_iterator(n$4.begin_:class iterator *) [line 24]\n " shape="box"]
43 -> 42 ; "vec_vec6" -> "vec_vec5" ;
42 [label="42: DeclStmt \n *&__range:class vec &=&vector [line 37]\n " shape="box"] "vec_vec5" [label="5: Constructor Init \n n$3=*&this:class vec * [line 24]\n _fun_iterator_iterator(n$3.end_:class iterator *) [line 24]\n " shape="box"]
42 -> 35 ; "vec_vec5" -> "vec_vec4" ;
41 [label="41: DeclStmt \n n$15=_fun_iterator_operator*(&__begin:class iterator &) [line 37]\n *&value:int =n$15 [line 37]\n " shape="box"] "vec_vec4" [label="4: BinaryOperatorStmt: Assign \n n$2=*&this:class vec * [line 25]\n *n$2.begin_.val:int =0 [line 25]\n " shape="box"]
41 -> 40 ; "vec_vec4" -> "vec_vec3" ;
40 [label="40: DeclStmt \n n$13=*&value:int [line 38]\n n$14=*&value:int [line 38]\n *&temp:int =((n$13 * n$14) + 10) [line 38]\n " shape="box"] "vec_vec3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class vec * [line 26]\n n$1=*&size:int [line 26]\n *n$0.end_.val:int =n$1 [line 26]\n " shape="box"]
40 -> 36 ; "vec_vec3" -> "vec_vec2" ;
39 [label="39: Prune (false branch) \n PRUNE((n$12 == 0), false); [line 37]\n " shape="invhouse"] "vec_vec2" [label="2: Exit vec_vec \n " color=yellow style=filled]
39 -> 32 ; "vec_vec1" [label="1: Start vec_vec\nFormals: this:class vec * size:int \nLocals: \n DECLARE_LOCALS(&return); [line 24]\n " color=yellow style=filled]
38 [label="38: Prune (true branch) \n PRUNE((n$12 != 0), true); [line 37]\n " shape="invhouse"]
38 -> 41 ; "vec_vec1" -> "vec_vec6" ;
37 [label="37: Call _fun_operator!= \n _fun_iterator_iterator(&0$?%__sil_tmp__temp_construct_n$10:class iterator *,&__begin:class iterator &) [line 37]\n _fun_iterator_iterator(&0$?%__sil_tmp__temp_construct_n$11:class iterator *,&__end:class iterator &) [line 37]\n n$12=_fun_operator!=(&0$?%__sil_tmp__temp_construct_n$10:class iterator ,&0$?%__sil_tmp__temp_construct_n$11:class iterator ) [line 37]\n " shape="box"] "test13" [label="13: DeclStmt \n _fun_vec_vec(&vector:class vec *,10:int ) [line 36]\n " shape="box"]
37 -> 38 ; "test13" -> "test12" ;
37 -> 39 ; "test12" [label="12: DeclStmt \n *&__range:class vec &=&vector [line 37]\n " shape="box"]
36 [label="36: Call _fun_iterator_operator++ \n _fun_iterator_operator++(&__begin:class iterator &,&0$?%__sil_tmp__temp_return_n$9:class iterator *) [line 37]\n " shape="box"]
36 -> 33 ; "test12" -> "test5" ;
35 [label="35: DeclStmt \n n$5=*&__range:class vec & [line 37]\n _=*n$5:class vec [line 37]\n _fun_vec_begin(n$5:class vec &,&0$?%__sil_tmpSIL_materialize_temp__n$4:class iterator *) [line 37]\n _fun_iterator_iterator(&__begin:class iterator *,&0$?%__sil_tmpSIL_materialize_temp__n$4:class iterator &) [line 37]\n " shape="box"] "test11" [label="11: DeclStmt \n n$15=_fun_iterator_operator*(&__begin:class iterator &) [line 37]\n *&value:int =n$15 [line 37]\n " shape="box"]
35 -> 34 ; "test11" -> "test10" ;
34 [label="34: DeclStmt \n n$1=*&__range:class vec & [line 37]\n _=*n$1:class vec [line 37]\n _fun_vec_end(n$1:class vec &,&0$?%__sil_tmpSIL_materialize_temp__n$0:class iterator *) [line 37]\n _fun_iterator_iterator(&__end:class iterator *,&0$?%__sil_tmpSIL_materialize_temp__n$0:class iterator &) [line 37]\n " shape="box"] "test10" [label="10: DeclStmt \n n$13=*&value:int [line 38]\n n$14=*&value:int [line 38]\n *&temp:int =((n$13 * n$14) + 10) [line 38]\n " shape="box"]
34 -> 33 ; "test10" -> "test6" ;
33 [label="33: + \n " ] "test9" [label="9: Prune (false branch) \n PRUNE((n$12 == 0), false); [line 37]\n " shape="invhouse"]
33 -> 37 ; "test9" -> "test2" ;
32 [label="32: Exit test \n " color=yellow style=filled] "test8" [label="8: Prune (true branch) \n PRUNE((n$12 != 0), true); [line 37]\n " shape="invhouse"]
31 [label="31: Start test\nFormals: \nLocals: __end:class iterator 0$?%__sil_tmpSIL_materialize_temp__n$0:class iterator __begin:class iterator 0$?%__sil_tmpSIL_materialize_temp__n$4:class iterator 0$?%__sil_tmp__temp_return_n$9:class iterator 0$?%__sil_tmp__temp_construct_n$10:class iterator 0$?%__sil_tmp__temp_construct_n$11:class iterator temp:int value:int __range:class vec & vector:class vec \n DECLARE_LOCALS(&return,&__end,&0$?%__sil_tmpSIL_materialize_temp__n$0,&__begin,&0$?%__sil_tmpSIL_materialize_temp__n$4,&0$?%__sil_tmp__temp_return_n$9,&0$?%__sil_tmp__temp_construct_n$10,&0$?%__sil_tmp__temp_construct_n$11,&temp,&value,&__range,&vector); [line 35]\n " color=yellow style=filled] "test8" -> "test11" ;
"test7" [label="7: Call _fun_operator!= \n _fun_iterator_iterator(&0$?%__sil_tmp__temp_construct_n$10:class iterator *,&__begin:class iterator &) [line 37]\n _fun_iterator_iterator(&0$?%__sil_tmp__temp_construct_n$11:class iterator *,&__end:class iterator &) [line 37]\n n$12=_fun_operator!=(&0$?%__sil_tmp__temp_construct_n$10:class iterator ,&0$?%__sil_tmp__temp_construct_n$11:class iterator ) [line 37]\n " shape="box"]
31 -> 43 ; "test7" -> "test8" ;
30 [label="30: Return Stmt \n n$0=*&__return_param:class iterator * [line 29]\n n$1=*&this:class vec * [line 29]\n _fun_iterator_iterator(n$0:class iterator *,n$1.end_:class iterator &) [line 29]\n " shape="box"] "test7" -> "test9" ;
"test6" [label="6: Call _fun_iterator_operator++ \n _fun_iterator_operator++(&__begin:class iterator &,&0$?%__sil_tmp__temp_return_n$9:class iterator *) [line 37]\n " shape="box"]
30 -> 29 ; "test6" -> "test3" ;
29 [label="29: Exit vec_end \n " color=yellow style=filled] "test5" [label="5: DeclStmt \n n$5=*&__range:class vec & [line 37]\n _=*n$5:class vec [line 37]\n _fun_vec_begin(n$5:class vec &,&0$?%__sil_tmpSIL_materialize_temp__n$4:class iterator *) [line 37]\n _fun_iterator_iterator(&__begin:class iterator *,&0$?%__sil_tmpSIL_materialize_temp__n$4:class iterator &) [line 37]\n " shape="box"]
28 [label="28: Start vec_end\nFormals: this:class vec * __return_param:class iterator *\nLocals: \n DECLARE_LOCALS(&return); [line 29]\n " color=yellow style=filled] "test5" -> "test4" ;
"test4" [label="4: DeclStmt \n n$1=*&__range:class vec & [line 37]\n _=*n$1:class vec [line 37]\n _fun_vec_end(n$1:class vec &,&0$?%__sil_tmpSIL_materialize_temp__n$0:class iterator *) [line 37]\n _fun_iterator_iterator(&__end:class iterator *,&0$?%__sil_tmpSIL_materialize_temp__n$0:class iterator &) [line 37]\n " shape="box"]
28 -> 30 ; "test4" -> "test3" ;
27 [label="27: Return Stmt \n n$0=*&__return_param:class iterator * [line 28]\n n$1=*&this:class vec * [line 28]\n _fun_iterator_iterator(n$0:class iterator *,n$1.begin_:class iterator &) [line 28]\n " shape="box"] "test3" [label="3: + \n " ]
27 -> 26 ; "test3" -> "test7" ;
26 [label="26: Exit vec_begin \n " color=yellow style=filled] "test2" [label="2: Exit test \n " color=yellow style=filled]
25 [label="25: Start vec_begin\nFormals: this:class vec * __return_param:class iterator *\nLocals: \n DECLARE_LOCALS(&return); [line 28]\n " color=yellow style=filled] "test1" [label="1: Start test\nFormals: \nLocals: __end:class iterator 0$?%__sil_tmpSIL_materialize_temp__n$0:class iterator __begin:class iterator 0$?%__sil_tmpSIL_materialize_temp__n$4:class iterator 0$?%__sil_tmp__temp_return_n$9:class iterator 0$?%__sil_tmp__temp_construct_n$10:class iterator 0$?%__sil_tmp__temp_construct_n$11:class iterator temp:int value:int __range:class vec & vector:class vec \n DECLARE_LOCALS(&return,&__end,&0$?%__sil_tmpSIL_materialize_temp__n$0,&__begin,&0$?%__sil_tmpSIL_materialize_temp__n$4,&0$?%__sil_tmp__temp_return_n$9,&0$?%__sil_tmp__temp_construct_n$10,&0$?%__sil_tmp__temp_construct_n$11,&temp,&value,&__range,&vector); [line 35]\n " color=yellow style=filled]
25 -> 27 ; "test1" -> "test13" ;
24 [label="24: Constructor Init \n n$4=*&this:class vec * [line 24]\n _fun_iterator_iterator(n$4.begin_:class iterator *) [line 24]\n " shape="box"] "iterator_iterator2" [label="2: Exit iterator_iterator \n " color=yellow style=filled]
24 -> 23 ; "iterator_iterator1" [label="1: Start iterator_iterator\nFormals: this:class iterator *\nLocals: \n DECLARE_LOCALS(&return); [line 11]\n " color=yellow style=filled]
23 [label="23: Constructor Init \n n$3=*&this:class vec * [line 24]\n _fun_iterator_iterator(n$3.end_:class iterator *) [line 24]\n " shape="box"]
23 -> 22 ; "iterator_iterator1" -> "iterator_iterator2" ;
22 [label="22: BinaryOperatorStmt: Assign \n n$2=*&this:class vec * [line 25]\n *n$2.begin_.val:int =0 [line 25]\n " shape="box"] "vec_end3" [label="3: Return Stmt \n n$0=*&__return_param:class iterator * [line 29]\n n$1=*&this:class vec * [line 29]\n _fun_iterator_iterator(n$0:class iterator *,n$1.end_:class iterator &) [line 29]\n " shape="box"]
22 -> 21 ; "vec_end3" -> "vec_end2" ;
21 [label="21: BinaryOperatorStmt: Assign \n n$0=*&this:class vec * [line 26]\n n$1=*&size:int [line 26]\n *n$0.end_.val:int =n$1 [line 26]\n " shape="box"] "vec_end2" [label="2: Exit vec_end \n " color=yellow style=filled]
21 -> 20 ; "vec_end1" [label="1: Start vec_end\nFormals: this:class vec * __return_param:class iterator *\nLocals: \n DECLARE_LOCALS(&return); [line 29]\n " color=yellow style=filled]
20 [label="20: Exit vec_vec \n " color=yellow style=filled]
19 [label="19: Start vec_vec\nFormals: this:class vec * size:int \nLocals: \n DECLARE_LOCALS(&return); [line 24]\n " color=yellow style=filled] "vec_end1" -> "vec_end3" ;
"iterator_operator++4" [label="4: BinaryOperatorStmt: AddAssign \n n$2=*&this:class iterator * [line 14]\n n$3=*n$2.val:int [line 14]\n *n$2.val:int =(n$3 + 1) [line 14]\n " shape="box"]
19 -> 24 ; "iterator_operator++4" -> "iterator_operator++3" ;
18 [label="18: Return Stmt \n n$0=*&i1:class iterator & [line 21]\n n$1=*n$0.val:int [line 21]\n n$2=*&i2:class iterator & [line 21]\n n$3=*n$2.val:int [line 21]\n *&return:_Bool =(n$1 != n$3) [line 21]\n " shape="box"] "iterator_operator++3" [label="3: Return Stmt \n n$0=*&__return_param:class iterator * [line 15]\n n$1=*&this:class iterator * [line 15]\n _fun_iterator_iterator(n$0:class iterator *,n$1:class iterator &) [line 15]\n " shape="box"]
18 -> 17 ; "iterator_operator++3" -> "iterator_operator++2" ;
17 [label="17: Exit operator!= \n " color=yellow style=filled] "iterator_operator++2" [label="2: Exit iterator_operator++ \n " color=yellow style=filled]
16 [label="16: Start operator!=\nFormals: i1:class iterator & i2:class iterator &\nLocals: \n DECLARE_LOCALS(&return); [line 21]\n " color=yellow style=filled] "iterator_operator++1" [label="1: Start iterator_operator++\nFormals: this:class iterator * __return_param:class iterator *\nLocals: \n DECLARE_LOCALS(&return); [line 13]\n " color=yellow style=filled]
16 -> 18 ; "iterator_operator++1" -> "iterator_operator++4" ;
15 [label="15: Constructor Init \n n$0=*&this:class iterator * [line 11]\n n$1=*&__param_0:class iterator & [line 11]\n n$2=*n$1.val:int [line 11]\n *n$0.val:int =n$2 [line 11]\n " shape="box"] "iterator_iterator3" [label="3: Constructor Init \n n$0=*&this:class iterator * [line 11]\n n$1=*&__param_0:class iterator & [line 11]\n n$2=*n$1.val:int [line 11]\n *n$0.val:int =n$2 [line 11]\n " shape="box"]
15 -> 14 ; "iterator_iterator3" -> "iterator_iterator2" ;
14 [label="14: Exit iterator_iterator \n " color=yellow style=filled] "iterator_iterator2" [label="2: Exit iterator_iterator \n " color=yellow style=filled]
13 [label="13: Start iterator_iterator\nFormals: this:class iterator * __param_0:class iterator &\nLocals: \n DECLARE_LOCALS(&return); [line 11]\n " color=yellow style=filled] "iterator_iterator1" [label="1: Start iterator_iterator\nFormals: this:class iterator * __param_0:class iterator &\nLocals: \n DECLARE_LOCALS(&return); [line 11]\n " color=yellow style=filled]
13 -> 15 ; "iterator_iterator1" -> "iterator_iterator3" ;
12 [label="12: Exit iterator_iterator \n " color=yellow style=filled] "vec_begin3" [label="3: Return Stmt \n n$0=*&__return_param:class iterator * [line 28]\n n$1=*&this:class vec * [line 28]\n _fun_iterator_iterator(n$0:class iterator *,n$1.begin_:class iterator &) [line 28]\n " shape="box"]
11 [label="11: Start iterator_iterator\nFormals: this:class iterator *\nLocals: \n DECLARE_LOCALS(&return); [line 11]\n " color=yellow style=filled] "vec_begin3" -> "vec_begin2" ;
"vec_begin2" [label="2: Exit vec_begin \n " color=yellow style=filled]
11 -> 12 ; "vec_begin1" [label="1: Start vec_begin\nFormals: this:class vec * __return_param:class iterator *\nLocals: \n DECLARE_LOCALS(&return); [line 28]\n " color=yellow style=filled]
10 [label="10: Return Stmt \n n$0=*&this:class iterator * [line 18]\n n$1=*n$0.val:int [line 18]\n *&return:int =n$1 [line 18]\n " shape="box"]
10 -> 9 ; "vec_begin1" -> "vec_begin3" ;
9 [label="9: Exit iterator_operator* \n " color=yellow style=filled] "operator!=3" [label="3: Return Stmt \n n$0=*&i1:class iterator & [line 21]\n n$1=*n$0.val:int [line 21]\n n$2=*&i2:class iterator & [line 21]\n n$3=*n$2.val:int [line 21]\n *&return:_Bool =(n$1 != n$3) [line 21]\n " shape="box"]
8 [label="8: Start iterator_operator*\nFormals: this:class iterator *\nLocals: \n DECLARE_LOCALS(&return); [line 17]\n " color=yellow style=filled] "operator!=3" -> "operator!=2" ;
"operator!=2" [label="2: Exit operator!= \n " color=yellow style=filled]
8 -> 10 ; "operator!=1" [label="1: Start operator!=\nFormals: i1:class iterator & i2:class iterator &\nLocals: \n DECLARE_LOCALS(&return); [line 21]\n " color=yellow style=filled]
7 [label="7: BinaryOperatorStmt: AddAssign \n n$2=*&this:class iterator * [line 14]\n n$3=*n$2.val:int [line 14]\n *n$2.val:int =(n$3 + 1) [line 14]\n " shape="box"]
7 -> 6 ; "operator!=1" -> "operator!=3" ;
6 [label="6: Return Stmt \n n$0=*&__return_param:class iterator * [line 15]\n n$1=*&this:class iterator * [line 15]\n _fun_iterator_iterator(n$0:class iterator *,n$1:class iterator &) [line 15]\n " shape="box"] "iterator_iterator3" [label="3: Constructor Init \n n$0=*&this:class iterator * [line 11]\n n$1=*&__param_0:class iterator & [line 11]\n n$2=*n$1.val:int [line 11]\n *n$0.val:int =n$2 [line 11]\n " shape="box"]
6 -> 2 ; "iterator_iterator3" -> "iterator_iterator2" ;
5 [label="5: Constructor Init \n n$0=*&this:class iterator * [line 11]\n n$1=*&__param_0:class iterator & [line 11]\n n$2=*n$1.val:int [line 11]\n *n$0.val:int =n$2 [line 11]\n " shape="box"] "iterator_iterator2" [label="2: Exit iterator_iterator \n " color=yellow style=filled]
5 -> 4 ; "iterator_iterator1" [label="1: Start iterator_iterator\nFormals: this:class iterator * __param_0:class iterator &\nLocals: \n DECLARE_LOCALS(&return); [line 11]\n " color=yellow style=filled]
4 [label="4: Exit iterator_iterator \n " color=yellow style=filled]
3 [label="3: Start iterator_iterator\nFormals: this:class iterator * __param_0:class iterator &\nLocals: \n DECLARE_LOCALS(&return); [line 11]\n " color=yellow style=filled] "iterator_iterator1" -> "iterator_iterator3" ;
"iterator_operator*3" [label="3: Return Stmt \n n$0=*&this:class iterator * [line 18]\n n$1=*n$0.val:int [line 18]\n *&return:int =n$1 [line 18]\n " shape="box"]
3 -> 5 ; "iterator_operator*3" -> "iterator_operator*2" ;
2 [label="2: Exit iterator_operator++ \n " color=yellow style=filled] "iterator_operator*2" [label="2: Exit iterator_operator* \n " color=yellow style=filled]
1 [label="1: Start iterator_operator++\nFormals: this:class iterator * __return_param:class iterator *\nLocals: \n DECLARE_LOCALS(&return); [line 13]\n " color=yellow style=filled] "iterator_operator*1" [label="1: Start iterator_operator*\nFormals: this:class iterator *\nLocals: \n DECLARE_LOCALS(&return); [line 17]\n " color=yellow style=filled]
1 -> 7 ; "iterator_operator*1" -> "iterator_operator*3" ;
} }

@ -1,358 +1,358 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
95 [label="95: DeclStmt \n *&a:int =0 [line 140]\n " shape="box"] "TranslateAsPtr<int>_operator*2" [label="2: Exit TranslateAsPtr<int>_operator* \n " color=yellow style=filled]
95 -> 94 ; "TranslateAsPtr<int>_operator*1" [label="1: Start TranslateAsPtr<int>_operator*\nFormals: this:int **\nLocals: \n DECLARE_LOCALS(&return); [line 81]\n " color=yellow style=filled]
94 [label="94: DeclStmt \n _fun_TranslateAsPtr<int>_TranslateAsPtr(&t:int **,null:int *) [line 141]\n n$4=*&t:int * [line 141]\n " shape="box"]
94 -> 93 ; "TranslateAsPtr<int>_operator*1" -> "TranslateAsPtr<int>_operator*2" ;
93 [label="93: Call _fun_TranslateAsPtr<int>_setPtr \n _=*&t:int * [line 142]\n _fun_TranslateAsPtr<int>_setPtr(&t:int *&,&a:int *) [line 142]\n " shape="box"] "TranslateAsPtr<int>_setPtr3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:int ** [line 86]\n n$1=*&v:int * [line 86]\n *n$0:void *=n$1 [line 86]\n " shape="box"]
93 -> 92 ; "TranslateAsPtr<int>_setPtr3" -> "TranslateAsPtr<int>_setPtr2" ;
92 [label="92: Return Stmt \n _=*&t:int * [line 143]\n n$1=*&t:int *& [line 143]\n n$2=*n$1:int * [line 143]\n *&return:int =n$2 [line 143]\n " shape="box"] "TranslateAsPtr<int>_setPtr2" [label="2: Exit TranslateAsPtr<int>_setPtr \n " color=yellow style=filled]
92 -> 91 ; "TranslateAsPtr<int>_setPtr1" [label="1: Start TranslateAsPtr<int>_setPtr\nFormals: this:int ** v:int *\nLocals: \n DECLARE_LOCALS(&return); [line 86]\n " color=yellow style=filled]
91 [label="91: Exit getRef_ok_deref \n " color=yellow style=filled]
90 [label="90: Start getRef_ok_deref\nFormals: \nLocals: t:int * a:int \n DECLARE_LOCALS(&return,&t,&a); [line 139]\n " color=yellow style=filled] "TranslateAsPtr<int>_setPtr1" -> "TranslateAsPtr<int>_setPtr3" ;
"getPtr_null_deref25" [label="5: DeclStmt \n _fun_TranslateAsPtr<int>_TranslateAsPtr(&t:int **,null:int *) [line 96]\n n$4=*&t:int * [line 96]\n " shape="box"]
90 -> 95 ; "getPtr_null_deref25" -> "getPtr_null_deref24" ;
89 [label="89: DeclStmt \n _fun_TranslateAsPtr<int>_TranslateAsPtr(&t:int **,null:int *) [line 134]\n n$4=*&t:int * [line 134]\n " shape="box"] "getPtr_null_deref24" [label="4: Call _fun_TranslateAsPtr<int>_setPtr \n _=*&t:int * [line 97]\n _fun_TranslateAsPtr<int>_setPtr(&t:int *&,null:int *) [line 97]\n " shape="box"]
89 -> 88 ; "getPtr_null_deref24" -> "getPtr_null_deref23" ;
88 [label="88: Call _fun_TranslateAsPtr<int>_setPtr \n _=*&t:int * [line 135]\n _fun_TranslateAsPtr<int>_setPtr(&t:int *&,null:int *) [line 135]\n " shape="box"] "getPtr_null_deref23" [label="3: Return Stmt \n _=*&t:int * [line 98]\n n$1=*&t:int *& [line 98]\n n$2=*n$1:int [line 98]\n *&return:int =n$2 [line 98]\n " shape="box"]
88 -> 87 ; "getPtr_null_deref23" -> "getPtr_null_deref22" ;
87 [label="87: Return Stmt \n _=*&t:int * [line 136]\n n$1=*&t:int *& [line 136]\n n$2=*n$1:int * [line 136]\n *&return:int =n$2 [line 136]\n " shape="box"] "getPtr_null_deref22" [label="2: Exit getPtr_null_deref2 \n " color=yellow style=filled]
87 -> 86 ; "getPtr_null_deref21" [label="1: Start getPtr_null_deref2\nFormals: \nLocals: t:int * \n DECLARE_LOCALS(&return,&t); [line 95]\n " color=yellow style=filled]
86 [label="86: Exit getRef_null_deref2 \n " color=yellow style=filled]
85 [label="85: Start getRef_null_deref2\nFormals: \nLocals: t:int * \n DECLARE_LOCALS(&return,&t); [line 133]\n " color=yellow style=filled] "getPtr_null_deref21" -> "getPtr_null_deref25" ;
"getRef_null_deref25" [label="5: DeclStmt \n _fun_TranslateAsPtr<int>_TranslateAsPtr(&t:int **,null:int *) [line 134]\n n$4=*&t:int * [line 134]\n " shape="box"]
85 -> 89 ; "getRef_null_deref25" -> "getRef_null_deref24" ;
84 [label="84: DeclStmt \n _fun_TranslateAsPtr<int>_TranslateAsPtr(&t:int **,null:int *) [line 128]\n n$4=*&t:int * [line 128]\n " shape="box"] "getRef_null_deref24" [label="4: Call _fun_TranslateAsPtr<int>_setPtr \n _=*&t:int * [line 135]\n _fun_TranslateAsPtr<int>_setPtr(&t:int *&,null:int *) [line 135]\n " shape="box"]
84 -> 83 ; "getRef_null_deref24" -> "getRef_null_deref23" ;
83 [label="83: Call _fun_TranslateAsPtr<int>_setPtr \n _=*&t:int * [line 129]\n _fun_TranslateAsPtr<int>_setPtr(&t:int *&,null:int *) [line 129]\n " shape="box"] "getRef_null_deref23" [label="3: Return Stmt \n _=*&t:int * [line 136]\n n$1=*&t:int *& [line 136]\n n$2=*n$1:int * [line 136]\n *&return:int =n$2 [line 136]\n " shape="box"]
83 -> 82 ; "getRef_null_deref23" -> "getRef_null_deref22" ;
82 [label="82: Return Stmt \n _=*&t:int * [line 130]\n n$1=*&t:int *& [line 130]\n n$2=*n$1:int * [line 130]\n *&return:int =n$2 [line 130]\n " shape="box"] "getRef_null_deref22" [label="2: Exit getRef_null_deref2 \n " color=yellow style=filled]
82 -> 81 ; "getRef_null_deref21" [label="1: Start getRef_null_deref2\nFormals: \nLocals: t:int * \n DECLARE_LOCALS(&return,&t); [line 133]\n " color=yellow style=filled]
81 [label="81: Exit getRef_null_deref1 \n " color=yellow style=filled]
80 [label="80: Start getRef_null_deref1\nFormals: \nLocals: t:int * \n DECLARE_LOCALS(&return,&t); [line 127]\n " color=yellow style=filled] "getRef_null_deref21" -> "getRef_null_deref25" ;
"operator_star_ok_deref5" [label="5: DeclStmt \n _fun_TranslateAsPtr<int>_TranslateAsPtr(&t:int **,null:int *) [line 122]\n n$4=*&t:int * [line 122]\n " shape="box"]
80 -> 84 ; "operator_star_ok_deref5" -> "operator_star_ok_deref4" ;
79 [label="79: DeclStmt \n _fun_TranslateAsPtr<int>_TranslateAsPtr(&t:int **,null:int *) [line 122]\n n$4=*&t:int * [line 122]\n " shape="box"] "operator_star_ok_deref4" [label="4: Call _fun_TranslateAsPtr<int>_setPtr \n _=*&t:int * [line 123]\n _fun_TranslateAsPtr<int>_setPtr(&t:int *&,&a:int *) [line 123]\n " shape="box"]
79 -> 78 ; "operator_star_ok_deref4" -> "operator_star_ok_deref3" ;
78 [label="78: Call _fun_TranslateAsPtr<int>_setPtr \n _=*&t:int * [line 123]\n _fun_TranslateAsPtr<int>_setPtr(&t:int *&,&a:int *) [line 123]\n " shape="box"] "operator_star_ok_deref3" [label="3: Return Stmt \n _=*&t:int * [line 124]\n n$1=*&t:int *& [line 124]\n n$2=*n$1:int * [line 124]\n *&return:int =n$2 [line 124]\n " shape="box"]
78 -> 77 ; "operator_star_ok_deref3" -> "operator_star_ok_deref2" ;
77 [label="77: Return Stmt \n _=*&t:int * [line 124]\n n$1=*&t:int *& [line 124]\n n$2=*n$1:int * [line 124]\n *&return:int =n$2 [line 124]\n " shape="box"] "operator_star_ok_deref2" [label="2: Exit operator_star_ok_deref \n " color=yellow style=filled]
77 -> 76 ; "operator_star_ok_deref1" [label="1: Start operator_star_ok_deref\nFormals: \nLocals: t:int * a:int \n DECLARE_LOCALS(&return,&t,&a); [line 120]\n " color=yellow style=filled]
76 [label="76: Exit operator_star_ok_deref \n " color=yellow style=filled]
75 [label="75: Start operator_star_ok_deref\nFormals: \nLocals: t:int * a:int \n DECLARE_LOCALS(&return,&t,&a); [line 120]\n " color=yellow style=filled] "operator_star_ok_deref1" -> "operator_star_ok_deref5" ;
"derefFirstArg23" [label="3: Return Stmt \n n$0=*&b:int * [line 26]\n n$1=*n$0:int [line 26]\n *&return:int =n$1 [line 26]\n " shape="box"]
75 -> 79 ; "derefFirstArg23" -> "derefFirstArg22" ;
74 [label="74: DeclStmt \n _fun_TranslateAsPtr<int>_TranslateAsPtr(&t:int **,null:int *) [line 115]\n n$4=*&t:int * [line 115]\n " shape="box"] "derefFirstArg22" [label="2: Exit derefFirstArg2 \n " color=yellow style=filled]
74 -> 73 ; "derefFirstArg21" [label="1: Start derefFirstArg2\nFormals: a:int * b:int *\nLocals: \n DECLARE_LOCALS(&return); [line 22]\n " color=yellow style=filled]
73 [label="73: Call _fun_TranslateAsPtr<int>_setPtr \n _=*&t:int * [line 116]\n _fun_TranslateAsPtr<int>_setPtr(&t:int *&,null:int *) [line 116]\n " shape="box"]
73 -> 72 ; "derefFirstArg21" -> "derefFirstArg23" ;
72 [label="72: Return Stmt \n _=*&t:int * [line 117]\n n$1=*&t:int *& [line 117]\n n$2=*n$1:int * [line 117]\n *&return:int =n$2 [line 117]\n " shape="box"] "TranslateAsPtr<int>_getRef2" [label="2: Exit TranslateAsPtr<int>_getRef \n " color=yellow style=filled]
72 -> 71 ; "TranslateAsPtr<int>_getRef1" [label="1: Start TranslateAsPtr<int>_getRef\nFormals: this:int ** a:int b:int \nLocals: \n DECLARE_LOCALS(&return); [line 83]\n " color=yellow style=filled]
71 [label="71: Exit operator_star_null_deref2 \n " color=yellow style=filled]
70 [label="70: Start operator_star_null_deref2\nFormals: \nLocals: t:int * \n DECLARE_LOCALS(&return,&t); [line 114]\n " color=yellow style=filled] "TranslateAsPtr<int>_getRef1" -> "TranslateAsPtr<int>_getRef2" ;
"TranslateAsPtr<int>_TranslateAsPtr3" [label="3: Call _fun_TranslateAsPtr<int>_setPtr \n n$0=*&this:int ** [line 76]\n _=*n$0:int * [line 76]\n n$2=*&t:int * [line 76]\n _fun_TranslateAsPtr<int>_setPtr(n$0:int **,n$2:int *) [line 76]\n " shape="box"]
70 -> 74 ; "TranslateAsPtr<int>_TranslateAsPtr3" -> "TranslateAsPtr<int>_TranslateAsPtr2" ;
69 [label="69: DeclStmt \n _fun_TranslateAsPtr<int>_TranslateAsPtr(&t:int **,null:int *) [line 109]\n n$3=*&t:int * [line 109]\n " shape="box"] "TranslateAsPtr<int>_TranslateAsPtr2" [label="2: Exit TranslateAsPtr<int>_TranslateAsPtr \n " color=yellow style=filled]
69 -> 68 ; "TranslateAsPtr<int>_TranslateAsPtr1" [label="1: Start TranslateAsPtr<int>_TranslateAsPtr\nFormals: this:int ** t:int *\nLocals: \n DECLARE_LOCALS(&return); [line 76]\n " color=yellow style=filled]
68 [label="68: Call _fun_TranslateAsPtr<int>_setPtr \n _=*&t:int * [line 110]\n _fun_TranslateAsPtr<int>_setPtr(&t:int *&,null:int *) [line 110]\n " shape="box"]
68 -> 67 ; "TranslateAsPtr<int>_TranslateAsPtr1" -> "TranslateAsPtr<int>_TranslateAsPtr3" ;
67 [label="67: Return Stmt \n n$0=*&t:int *& [line 111]\n n$1=*n$0:int * [line 111]\n *&return:int =n$1 [line 111]\n " shape="box"] "derefFirstArg33" [label="3: Return Stmt \n n$0=*&b:int * [line 33]\n n$1=*n$0:int [line 33]\n *&return:int =n$1 [line 33]\n " shape="box"]
67 -> 66 ; "derefFirstArg33" -> "derefFirstArg32" ;
66 [label="66: Exit operator_star_null_deref1 \n " color=yellow style=filled] "derefFirstArg32" [label="2: Exit derefFirstArg3 \n " color=yellow style=filled]
65 [label="65: Start operator_star_null_deref1\nFormals: \nLocals: t:int * \n DECLARE_LOCALS(&return,&t); [line 108]\n " color=yellow style=filled] "derefFirstArg31" [label="1: Start derefFirstArg3\nFormals: a:int * b:int *\nLocals: \n DECLARE_LOCALS(&return); [line 31]\n " color=yellow style=filled]
65 -> 69 ; "derefFirstArg31" -> "derefFirstArg33" ;
64 [label="64: DeclStmt \n *&a:int =0 [line 102]\n " shape="box"] "operator_star_null_deref25" [label="5: DeclStmt \n _fun_TranslateAsPtr<int>_TranslateAsPtr(&t:int **,null:int *) [line 115]\n n$4=*&t:int * [line 115]\n " shape="box"]
64 -> 63 ; "operator_star_null_deref25" -> "operator_star_null_deref24" ;
63 [label="63: DeclStmt \n _fun_TranslateAsPtr<int>_TranslateAsPtr(&t:int **,null:int *) [line 103]\n n$4=*&t:int * [line 103]\n " shape="box"] "operator_star_null_deref24" [label="4: Call _fun_TranslateAsPtr<int>_setPtr \n _=*&t:int * [line 116]\n _fun_TranslateAsPtr<int>_setPtr(&t:int *&,null:int *) [line 116]\n " shape="box"]
63 -> 62 ; "operator_star_null_deref24" -> "operator_star_null_deref23" ;
62 [label="62: Call _fun_TranslateAsPtr<int>_setPtr \n _=*&t:int * [line 104]\n _fun_TranslateAsPtr<int>_setPtr(&t:int *&,&a:int *) [line 104]\n " shape="box"] "operator_star_null_deref23" [label="3: Return Stmt \n _=*&t:int * [line 117]\n n$1=*&t:int *& [line 117]\n n$2=*n$1:int * [line 117]\n *&return:int =n$2 [line 117]\n " shape="box"]
62 -> 61 ; "operator_star_null_deref23" -> "operator_star_null_deref22" ;
61 [label="61: Return Stmt \n _=*&t:int * [line 105]\n n$1=*&t:int *& [line 105]\n n$2=*n$1:int [line 105]\n *&return:int =n$2 [line 105]\n " shape="box"] "operator_star_null_deref22" [label="2: Exit operator_star_null_deref2 \n " color=yellow style=filled]
61 -> 60 ; "operator_star_null_deref21" [label="1: Start operator_star_null_deref2\nFormals: \nLocals: t:int * \n DECLARE_LOCALS(&return,&t); [line 114]\n " color=yellow style=filled]
60 [label="60: Exit getPtr_ok_deref \n " color=yellow style=filled]
59 [label="59: Start getPtr_ok_deref\nFormals: \nLocals: t:int * a:int \n DECLARE_LOCALS(&return,&t,&a); [line 101]\n " color=yellow style=filled] "operator_star_null_deref21" -> "operator_star_null_deref25" ;
"TranslateAsPtr<int>_getPtr2" [label="2: Exit TranslateAsPtr<int>_getPtr \n " color=yellow style=filled]
59 -> 64 ; "TranslateAsPtr<int>_getPtr1" [label="1: Start TranslateAsPtr<int>_getPtr\nFormals: this:int **\nLocals: \n DECLARE_LOCALS(&return); [line 78]\n " color=yellow style=filled]
58 [label="58: DeclStmt \n _fun_TranslateAsPtr<int>_TranslateAsPtr(&t:int **,null:int *) [line 96]\n n$4=*&t:int * [line 96]\n " shape="box"]
58 -> 57 ; "TranslateAsPtr<int>_getPtr1" -> "TranslateAsPtr<int>_getPtr2" ;
57 [label="57: Call _fun_TranslateAsPtr<int>_setPtr \n _=*&t:int * [line 97]\n _fun_TranslateAsPtr<int>_setPtr(&t:int *&,null:int *) [line 97]\n " shape="box"] "derefFirstArg3_null_deref4" [label="4: DeclStmt \n *&a:int =0 [line 63]\n " shape="box"]
57 -> 56 ; "derefFirstArg3_null_deref4" -> "derefFirstArg3_null_deref3" ;
56 [label="56: Return Stmt \n _=*&t:int * [line 98]\n n$1=*&t:int *& [line 98]\n n$2=*n$1:int [line 98]\n *&return:int =n$2 [line 98]\n " shape="box"] "derefFirstArg3_null_deref3" [label="3: Return Stmt \n n$0=_fun_derefFirstArg3(&a:int *,null:int *) [line 64]\n *&return:int =n$0 [line 64]\n " shape="box"]
56 -> 55 ; "derefFirstArg3_null_deref3" -> "derefFirstArg3_null_deref2" ;
55 [label="55: Exit getPtr_null_deref2 \n " color=yellow style=filled] "derefFirstArg3_null_deref2" [label="2: Exit derefFirstArg3_null_deref \n " color=yellow style=filled]
54 [label="54: Start getPtr_null_deref2\nFormals: \nLocals: t:int * \n DECLARE_LOCALS(&return,&t); [line 95]\n " color=yellow style=filled] "derefFirstArg3_null_deref1" [label="1: Start derefFirstArg3_null_deref\nFormals: \nLocals: a:int \n DECLARE_LOCALS(&return,&a); [line 62]\n " color=yellow style=filled]
54 -> 58 ; "derefFirstArg3_null_deref1" -> "derefFirstArg3_null_deref4" ;
53 [label="53: DeclStmt \n _fun_TranslateAsPtr<int>_TranslateAsPtr(&t:int **,null:int *) [line 90]\n n$4=*&t:int * [line 90]\n " shape="box"] "getRef_null_deref15" [label="5: DeclStmt \n _fun_TranslateAsPtr<int>_TranslateAsPtr(&t:int **,null:int *) [line 128]\n n$4=*&t:int * [line 128]\n " shape="box"]
53 -> 52 ; "getRef_null_deref15" -> "getRef_null_deref14" ;
52 [label="52: Call _fun_TranslateAsPtr<int>_setPtr \n _=*&t:int * [line 91]\n _fun_TranslateAsPtr<int>_setPtr(&t:int *&,null:int *) [line 91]\n " shape="box"] "getRef_null_deref14" [label="4: Call _fun_TranslateAsPtr<int>_setPtr \n _=*&t:int * [line 129]\n _fun_TranslateAsPtr<int>_setPtr(&t:int *&,null:int *) [line 129]\n " shape="box"]
52 -> 51 ; "getRef_null_deref14" -> "getRef_null_deref13" ;
51 [label="51: Return Stmt \n _=*&t:int * [line 92]\n n$1=*&t:int *& [line 92]\n n$2=*n$1:int [line 92]\n *&return:int =n$2 [line 92]\n " shape="box"] "getRef_null_deref13" [label="3: Return Stmt \n _=*&t:int * [line 130]\n n$1=*&t:int *& [line 130]\n n$2=*n$1:int * [line 130]\n *&return:int =n$2 [line 130]\n " shape="box"]
51 -> 50 ; "getRef_null_deref13" -> "getRef_null_deref12" ;
50 [label="50: Exit getPtr_null_deref1 \n " color=yellow style=filled] "getRef_null_deref12" [label="2: Exit getRef_null_deref1 \n " color=yellow style=filled]
49 [label="49: Start getPtr_null_deref1\nFormals: \nLocals: t:int * \n DECLARE_LOCALS(&return,&t); [line 89]\n " color=yellow style=filled] "getRef_null_deref11" [label="1: Start getRef_null_deref1\nFormals: \nLocals: t:int * \n DECLARE_LOCALS(&return,&t); [line 127]\n " color=yellow style=filled]
49 -> 53 ; "getRef_null_deref11" -> "getRef_null_deref15" ;
48 [label="48: Exit TranslateAsPtr<int>_getRef \n " color=yellow style=filled] "derefFirstArg_null_deref4" [label="4: DeclStmt \n *&a:int =0 [line 38]\n " shape="box"]
47 [label="47: Start TranslateAsPtr<int>_getRef\nFormals: this:int ** a:int b:int \nLocals: \n DECLARE_LOCALS(&return); [line 83]\n " color=yellow style=filled] "derefFirstArg_null_deref4" -> "derefFirstArg_null_deref3" ;
"derefFirstArg_null_deref3" [label="3: Return Stmt \n n$0=*null:int * [line 39]\n *&return:int =n$0 [line 39]\n " shape="box"]
47 -> 48 ; "derefFirstArg_null_deref3" -> "derefFirstArg_null_deref2" ;
46 [label="46: Exit TranslateAsPtr<int>_getRef \n " color=yellow style=filled] "derefFirstArg_null_deref2" [label="2: Exit derefFirstArg_null_deref \n " color=yellow style=filled]
45 [label="45: Start TranslateAsPtr<int>_getRef\nFormals: this:int **\nLocals: \n DECLARE_LOCALS(&return); [line 82]\n " color=yellow style=filled] "derefFirstArg_null_deref1" [label="1: Start derefFirstArg_null_deref\nFormals: \nLocals: a:int \n DECLARE_LOCALS(&return,&a); [line 37]\n " color=yellow style=filled]
45 -> 46 ; "derefFirstArg_null_deref1" -> "derefFirstArg_null_deref4" ;
44 [label="44: Exit TranslateAsPtr<int>_operator* \n " color=yellow style=filled] "operator_star_null_deref15" [label="5: DeclStmt \n _fun_TranslateAsPtr<int>_TranslateAsPtr(&t:int **,null:int *) [line 109]\n n$3=*&t:int * [line 109]\n " shape="box"]
43 [label="43: Start TranslateAsPtr<int>_operator*\nFormals: this:int **\nLocals: \n DECLARE_LOCALS(&return); [line 81]\n " color=yellow style=filled] "operator_star_null_deref15" -> "operator_star_null_deref14" ;
"operator_star_null_deref14" [label="4: Call _fun_TranslateAsPtr<int>_setPtr \n _=*&t:int * [line 110]\n _fun_TranslateAsPtr<int>_setPtr(&t:int *&,null:int *) [line 110]\n " shape="box"]
43 -> 44 ; "operator_star_null_deref14" -> "operator_star_null_deref13" ;
42 [label="42: Exit TranslateAsPtr<int>_getPtr \n " color=yellow style=filled] "operator_star_null_deref13" [label="3: Return Stmt \n n$0=*&t:int *& [line 111]\n n$1=*n$0:int * [line 111]\n *&return:int =n$1 [line 111]\n " shape="box"]
41 [label="41: Start TranslateAsPtr<int>_getPtr\nFormals: this:int ** a:int b:int \nLocals: \n DECLARE_LOCALS(&return); [line 79]\n " color=yellow style=filled] "operator_star_null_deref13" -> "operator_star_null_deref12" ;
"operator_star_null_deref12" [label="2: Exit operator_star_null_deref1 \n " color=yellow style=filled]
41 -> 42 ; "operator_star_null_deref11" [label="1: Start operator_star_null_deref1\nFormals: \nLocals: t:int * \n DECLARE_LOCALS(&return,&t); [line 108]\n " color=yellow style=filled]
40 [label="40: Exit TranslateAsPtr<int>_getPtr \n " color=yellow style=filled]
39 [label="39: Start TranslateAsPtr<int>_getPtr\nFormals: this:int **\nLocals: \n DECLARE_LOCALS(&return); [line 78]\n " color=yellow style=filled] "operator_star_null_deref11" -> "operator_star_null_deref15" ;
"TranslateAsPtr<int>_getRef2" [label="2: Exit TranslateAsPtr<int>_getRef \n " color=yellow style=filled]
39 -> 40 ; "TranslateAsPtr<int>_getRef1" [label="1: Start TranslateAsPtr<int>_getRef\nFormals: this:int **\nLocals: \n DECLARE_LOCALS(&return); [line 82]\n " color=yellow style=filled]
38 [label="38: Call _fun_TranslateAsPtr<int>_setPtr \n n$0=*&this:int ** [line 76]\n _=*n$0:int * [line 76]\n n$2=*&t:int * [line 76]\n _fun_TranslateAsPtr<int>_setPtr(n$0:int **,n$2:int *) [line 76]\n " shape="box"]
38 -> 34 ; "TranslateAsPtr<int>_getRef1" -> "TranslateAsPtr<int>_getRef2" ;
37 [label="37: BinaryOperatorStmt: Assign \n n$0=*&this:int ** [line 86]\n n$1=*&v:int * [line 86]\n *n$0:void *=n$1 [line 86]\n " shape="box"] "derefFirstArg2_null_deref4" [label="4: DeclStmt \n *&a:int =0 [line 48]\n " shape="box"]
37 -> 36 ; "derefFirstArg2_null_deref4" -> "derefFirstArg2_null_deref3" ;
36 [label="36: Exit TranslateAsPtr<int>_setPtr \n " color=yellow style=filled] "derefFirstArg2_null_deref3" [label="3: Return Stmt \n n$0=*null:int * [line 49]\n *&return:int =n$0 [line 49]\n " shape="box"]
35 [label="35: Start TranslateAsPtr<int>_setPtr\nFormals: this:int ** v:int *\nLocals: \n DECLARE_LOCALS(&return); [line 86]\n " color=yellow style=filled] "derefFirstArg2_null_deref3" -> "derefFirstArg2_null_deref2" ;
"derefFirstArg2_null_deref2" [label="2: Exit derefFirstArg2_null_deref \n " color=yellow style=filled]
35 -> 37 ; "derefFirstArg2_null_deref1" [label="1: Start derefFirstArg2_null_deref\nFormals: \nLocals: a:int \n DECLARE_LOCALS(&return,&a); [line 47]\n " color=yellow style=filled]
34 [label="34: Exit TranslateAsPtr<int>_TranslateAsPtr \n " color=yellow style=filled]
33 [label="33: Start TranslateAsPtr<int>_TranslateAsPtr\nFormals: this:int ** t:int *\nLocals: \n DECLARE_LOCALS(&return); [line 76]\n " color=yellow style=filled] "derefFirstArg2_null_deref1" -> "derefFirstArg2_null_deref4" ;
"getRef_ok_deref6" [label="6: DeclStmt \n *&a:int =0 [line 140]\n " shape="box"]
33 -> 38 ; "getRef_ok_deref6" -> "getRef_ok_deref5" ;
32 [label="32: DeclStmt \n *&a:int =0 [line 63]\n " shape="box"] "getRef_ok_deref5" [label="5: DeclStmt \n _fun_TranslateAsPtr<int>_TranslateAsPtr(&t:int **,null:int *) [line 141]\n n$4=*&t:int * [line 141]\n " shape="box"]
32 -> 31 ; "getRef_ok_deref5" -> "getRef_ok_deref4" ;
31 [label="31: Return Stmt \n n$0=_fun_derefFirstArg3(&a:int *,null:int *) [line 64]\n *&return:int =n$0 [line 64]\n " shape="box"] "getRef_ok_deref4" [label="4: Call _fun_TranslateAsPtr<int>_setPtr \n _=*&t:int * [line 142]\n _fun_TranslateAsPtr<int>_setPtr(&t:int *&,&a:int *) [line 142]\n " shape="box"]
31 -> 30 ; "getRef_ok_deref4" -> "getRef_ok_deref3" ;
30 [label="30: Exit derefFirstArg3_null_deref \n " color=yellow style=filled] "getRef_ok_deref3" [label="3: Return Stmt \n _=*&t:int * [line 143]\n n$1=*&t:int *& [line 143]\n n$2=*n$1:int * [line 143]\n *&return:int =n$2 [line 143]\n " shape="box"]
29 [label="29: Start derefFirstArg3_null_deref\nFormals: \nLocals: a:int \n DECLARE_LOCALS(&return,&a); [line 62]\n " color=yellow style=filled] "getRef_ok_deref3" -> "getRef_ok_deref2" ;
"getRef_ok_deref2" [label="2: Exit getRef_ok_deref \n " color=yellow style=filled]
29 -> 32 ; "getRef_ok_deref1" [label="1: Start getRef_ok_deref\nFormals: \nLocals: t:int * a:int \n DECLARE_LOCALS(&return,&t,&a); [line 139]\n " color=yellow style=filled]
28 [label="28: DeclStmt \n *&a:int =0 [line 58]\n " shape="box"]
28 -> 27 ; "getRef_ok_deref1" -> "getRef_ok_deref6" ;
27 [label="27: Return Stmt \n n$0=_fun_derefFirstArg3(null:int *,&a:int *) [line 59]\n *&return:int =n$0 [line 59]\n " shape="box"] "derefFirstArg_ok_deref4" [label="4: DeclStmt \n *&a:int =0 [line 43]\n " shape="box"]
27 -> 26 ; "derefFirstArg_ok_deref4" -> "derefFirstArg_ok_deref3" ;
26 [label="26: Exit derefFirstArg3_ok_deref \n " color=yellow style=filled] "derefFirstArg_ok_deref3" [label="3: Return Stmt \n n$0=*&a:int * [line 44]\n *&return:int =n$0 [line 44]\n " shape="box"]
25 [label="25: Start derefFirstArg3_ok_deref\nFormals: \nLocals: a:int \n DECLARE_LOCALS(&return,&a); [line 57]\n " color=yellow style=filled] "derefFirstArg_ok_deref3" -> "derefFirstArg_ok_deref2" ;
"derefFirstArg_ok_deref2" [label="2: Exit derefFirstArg_ok_deref \n " color=yellow style=filled]
25 -> 28 ; "derefFirstArg_ok_deref1" [label="1: Start derefFirstArg_ok_deref\nFormals: \nLocals: a:int \n DECLARE_LOCALS(&return,&a); [line 42]\n " color=yellow style=filled]
24 [label="24: DeclStmt \n *&a:int =0 [line 53]\n " shape="box"]
24 -> 23 ; "derefFirstArg_ok_deref1" -> "derefFirstArg_ok_deref4" ;
23 [label="23: Return Stmt \n n$0=*&a:int * [line 54]\n *&return:int =n$0 [line 54]\n " shape="box"] "getPtr_null_deref15" [label="5: DeclStmt \n _fun_TranslateAsPtr<int>_TranslateAsPtr(&t:int **,null:int *) [line 90]\n n$4=*&t:int * [line 90]\n " shape="box"]
23 -> 22 ; "getPtr_null_deref15" -> "getPtr_null_deref14" ;
22 [label="22: Exit derefFirstArg2_ok_deref \n " color=yellow style=filled] "getPtr_null_deref14" [label="4: Call _fun_TranslateAsPtr<int>_setPtr \n _=*&t:int * [line 91]\n _fun_TranslateAsPtr<int>_setPtr(&t:int *&,null:int *) [line 91]\n " shape="box"]
21 [label="21: Start derefFirstArg2_ok_deref\nFormals: \nLocals: a:int \n DECLARE_LOCALS(&return,&a); [line 52]\n " color=yellow style=filled] "getPtr_null_deref14" -> "getPtr_null_deref13" ;
"getPtr_null_deref13" [label="3: Return Stmt \n _=*&t:int * [line 92]\n n$1=*&t:int *& [line 92]\n n$2=*n$1:int [line 92]\n *&return:int =n$2 [line 92]\n " shape="box"]
21 -> 24 ; "getPtr_null_deref13" -> "getPtr_null_deref12" ;
20 [label="20: DeclStmt \n *&a:int =0 [line 48]\n " shape="box"] "getPtr_null_deref12" [label="2: Exit getPtr_null_deref1 \n " color=yellow style=filled]
20 -> 19 ; "getPtr_null_deref11" [label="1: Start getPtr_null_deref1\nFormals: \nLocals: t:int * \n DECLARE_LOCALS(&return,&t); [line 89]\n " color=yellow style=filled]
19 [label="19: Return Stmt \n n$0=*null:int * [line 49]\n *&return:int =n$0 [line 49]\n " shape="box"]
19 -> 18 ; "getPtr_null_deref11" -> "getPtr_null_deref15" ;
18 [label="18: Exit derefFirstArg2_null_deref \n " color=yellow style=filled] "derefFirstArg2_ok_deref4" [label="4: DeclStmt \n *&a:int =0 [line 53]\n " shape="box"]
17 [label="17: Start derefFirstArg2_null_deref\nFormals: \nLocals: a:int \n DECLARE_LOCALS(&return,&a); [line 47]\n " color=yellow style=filled] "derefFirstArg2_ok_deref4" -> "derefFirstArg2_ok_deref3" ;
"derefFirstArg2_ok_deref3" [label="3: Return Stmt \n n$0=*&a:int * [line 54]\n *&return:int =n$0 [line 54]\n " shape="box"]
17 -> 20 ; "derefFirstArg2_ok_deref3" -> "derefFirstArg2_ok_deref2" ;
16 [label="16: DeclStmt \n *&a:int =0 [line 43]\n " shape="box"] "derefFirstArg2_ok_deref2" [label="2: Exit derefFirstArg2_ok_deref \n " color=yellow style=filled]
16 -> 15 ; "derefFirstArg2_ok_deref1" [label="1: Start derefFirstArg2_ok_deref\nFormals: \nLocals: a:int \n DECLARE_LOCALS(&return,&a); [line 52]\n " color=yellow style=filled]
15 [label="15: Return Stmt \n n$0=*&a:int * [line 44]\n *&return:int =n$0 [line 44]\n " shape="box"]
15 -> 14 ; "derefFirstArg2_ok_deref1" -> "derefFirstArg2_ok_deref4" ;
14 [label="14: Exit derefFirstArg_ok_deref \n " color=yellow style=filled] "getPtr_ok_deref6" [label="6: DeclStmt \n *&a:int =0 [line 102]\n " shape="box"]
13 [label="13: Start derefFirstArg_ok_deref\nFormals: \nLocals: a:int \n DECLARE_LOCALS(&return,&a); [line 42]\n " color=yellow style=filled] "getPtr_ok_deref6" -> "getPtr_ok_deref5" ;
"getPtr_ok_deref5" [label="5: DeclStmt \n _fun_TranslateAsPtr<int>_TranslateAsPtr(&t:int **,null:int *) [line 103]\n n$4=*&t:int * [line 103]\n " shape="box"]
13 -> 16 ; "getPtr_ok_deref5" -> "getPtr_ok_deref4" ;
12 [label="12: DeclStmt \n *&a:int =0 [line 38]\n " shape="box"] "getPtr_ok_deref4" [label="4: Call _fun_TranslateAsPtr<int>_setPtr \n _=*&t:int * [line 104]\n _fun_TranslateAsPtr<int>_setPtr(&t:int *&,&a:int *) [line 104]\n " shape="box"]
12 -> 11 ; "getPtr_ok_deref4" -> "getPtr_ok_deref3" ;
11 [label="11: Return Stmt \n n$0=*null:int * [line 39]\n *&return:int =n$0 [line 39]\n " shape="box"] "getPtr_ok_deref3" [label="3: Return Stmt \n _=*&t:int * [line 105]\n n$1=*&t:int *& [line 105]\n n$2=*n$1:int [line 105]\n *&return:int =n$2 [line 105]\n " shape="box"]
11 -> 10 ; "getPtr_ok_deref3" -> "getPtr_ok_deref2" ;
10 [label="10: Exit derefFirstArg_null_deref \n " color=yellow style=filled] "getPtr_ok_deref2" [label="2: Exit getPtr_ok_deref \n " color=yellow style=filled]
9 [label="9: Start derefFirstArg_null_deref\nFormals: \nLocals: a:int \n DECLARE_LOCALS(&return,&a); [line 37]\n " color=yellow style=filled] "getPtr_ok_deref1" [label="1: Start getPtr_ok_deref\nFormals: \nLocals: t:int * a:int \n DECLARE_LOCALS(&return,&t,&a); [line 101]\n " color=yellow style=filled]
9 -> 12 ; "getPtr_ok_deref1" -> "getPtr_ok_deref6" ;
8 [label="8: Return Stmt \n n$0=*&b:int * [line 33]\n n$1=*n$0:int [line 33]\n *&return:int =n$1 [line 33]\n " shape="box"] "TranslateAsPtr<int>_getPtr2" [label="2: Exit TranslateAsPtr<int>_getPtr \n " color=yellow style=filled]
8 -> 7 ; "TranslateAsPtr<int>_getPtr1" [label="1: Start TranslateAsPtr<int>_getPtr\nFormals: this:int ** a:int b:int \nLocals: \n DECLARE_LOCALS(&return); [line 79]\n " color=yellow style=filled]
7 [label="7: Exit derefFirstArg3 \n " color=yellow style=filled]
6 [label="6: Start derefFirstArg3\nFormals: a:int * b:int *\nLocals: \n DECLARE_LOCALS(&return); [line 31]\n " color=yellow style=filled] "TranslateAsPtr<int>_getPtr1" -> "TranslateAsPtr<int>_getPtr2" ;
"derefFirstArg3_ok_deref4" [label="4: DeclStmt \n *&a:int =0 [line 58]\n " shape="box"]
6 -> 8 ; "derefFirstArg3_ok_deref4" -> "derefFirstArg3_ok_deref3" ;
5 [label="5: Return Stmt \n n$0=*&b:int * [line 26]\n n$1=*n$0:int [line 26]\n *&return:int =n$1 [line 26]\n " shape="box"] "derefFirstArg3_ok_deref3" [label="3: Return Stmt \n n$0=_fun_derefFirstArg3(null:int *,&a:int *) [line 59]\n *&return:int =n$0 [line 59]\n " shape="box"]
5 -> 4 ; "derefFirstArg3_ok_deref3" -> "derefFirstArg3_ok_deref2" ;
4 [label="4: Exit derefFirstArg2 \n " color=yellow style=filled] "derefFirstArg3_ok_deref2" [label="2: Exit derefFirstArg3_ok_deref \n " color=yellow style=filled]
3 [label="3: Start derefFirstArg2\nFormals: a:int * b:int *\nLocals: \n DECLARE_LOCALS(&return); [line 22]\n " color=yellow style=filled] "derefFirstArg3_ok_deref1" [label="1: Start derefFirstArg3_ok_deref\nFormals: \nLocals: a:int \n DECLARE_LOCALS(&return,&a); [line 57]\n " color=yellow style=filled]
3 -> 5 ; "derefFirstArg3_ok_deref1" -> "derefFirstArg3_ok_deref4" ;
2 [label="2: Exit derefFirstArg \n " color=yellow style=filled] "derefFirstArg2" [label="2: Exit derefFirstArg \n " color=yellow style=filled]
1 [label="1: Start derefFirstArg\nFormals: a:int * b:int *\nLocals: \n DECLARE_LOCALS(&return); [line 19]\n " color=yellow style=filled] "derefFirstArg1" [label="1: Start derefFirstArg\nFormals: a:int * b:int *\nLocals: \n DECLARE_LOCALS(&return); [line 19]\n " color=yellow style=filled]
1 -> 2 ; "derefFirstArg1" -> "derefFirstArg2" ;
} }

@ -1,134 +1,134 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
34 [label="34: DeclStmt \n _fun_binary_conditional::X_X(&a:class binary_conditional::X *) [line 28]\n " shape="box"] "binary_conditional::X_operator_bool3" [label="3: Return Stmt \n *&return:_Bool =1 [line 13]\n " shape="box"]
34 -> 28 ; "binary_conditional::X_operator_bool3" -> "binary_conditional::X_operator_bool2" ;
33 [label="33: DeclStmt \n n$7=*&0$?%__sil_tmpSIL_temp_conditional___n$1:class binary_conditional::X [line 29]\n *&0$?%__sil_tmpSIL_materialize_temp__n$0:class binary_conditional::X =n$7 [line 29]\n _fun_binary_conditional::X_X(&x:class binary_conditional::X *,&0$?%__sil_tmpSIL_materialize_temp__n$0:class binary_conditional::X &) [line 29]\n " shape="box"] "binary_conditional::X_operator_bool2" [label="2: Exit binary_conditional::X_operator_bool \n " color=yellow style=filled]
33 -> 26 ; "binary_conditional::X_operator_bool1" [label="1: Start binary_conditional::X_operator_bool\nFormals: this:class binary_conditional::X *\nLocals: \n DECLARE_LOCALS(&return); [line 13]\n " color=yellow style=filled]
32 [label="32: ConditinalStmt Branch \n _fun_binary_conditional::X_X(&0$?%__sil_tmpSIL_materialize_temp__n$0:class binary_conditional::X *,&a:class binary_conditional::X &) [line 29]\n *&0$?%__sil_tmpSIL_temp_conditional___n$1:class binary_conditional::X =&0$?%__sil_tmpSIL_materialize_temp__n$0 [line 29]\n " shape="box"]
32 -> 27 ; "binary_conditional::X_operator_bool1" -> "binary_conditional::X_operator_bool3" ;
31 [label="31: ConditinalStmt Branch \n _fun_binary_conditional::getX(&0$?%__sil_tmpSIL_materialize_temp__n$5:class binary_conditional::X *) [line 29]\n _fun_binary_conditional::X_X(&0$?%__sil_tmpSIL_materialize_temp__n$0:class binary_conditional::X *,&0$?%__sil_tmpSIL_materialize_temp__n$5:class binary_conditional::X &) [line 29]\n *&0$?%__sil_tmpSIL_temp_conditional___n$1:class binary_conditional::X =&0$?%__sil_tmpSIL_materialize_temp__n$0 [line 29]\n " shape="box"] "binary_conditional::X_X2" [label="2: Exit binary_conditional::X_X \n " color=yellow style=filled]
31 -> 27 ; "binary_conditional::X_X1" [label="1: Start binary_conditional::X_X\nFormals: this:class binary_conditional::X * __param_0:class binary_conditional::X &\nLocals: \n DECLARE_LOCALS(&return); [line 12]\n " color=yellow style=filled]
30 [label="30: Prune (false branch) \n PRUNE((n$4 == 0), false); [line 29]\n " shape="invhouse"]
30 -> 32 ; "binary_conditional::X_X1" -> "binary_conditional::X_X2" ;
29 [label="29: Prune (true branch) \n PRUNE((n$4 != 0), true); [line 29]\n " shape="invhouse"] "binary_conditional::getX4" [label="4: DeclStmt \n _fun_binary_conditional::X_X(&x:class binary_conditional::X *) [line 17]\n " shape="box"]
29 -> 31 ; "binary_conditional::getX4" -> "binary_conditional::getX3" ;
28 [label="28: Call _fun_binary_conditional::X_operator_bool \n _fun_binary_conditional::getX(&0$?%__sil_tmp__temp_return_n$3:class binary_conditional::X *) [line 29]\n n$4=_fun_binary_conditional::X_operator_bool(&0$?%__sil_tmp__temp_return_n$3:class binary_conditional::X &) [line 29]\n " shape="box"] "binary_conditional::getX3" [label="3: Return Stmt \n n$0=*&__return_param:class binary_conditional::X * [line 18]\n _fun_binary_conditional::X_X(n$0:class binary_conditional::X *,&x:class binary_conditional::X &) [line 18]\n " shape="box"]
28 -> 29 ; "binary_conditional::getX3" -> "binary_conditional::getX2" ;
28 -> 30 ; "binary_conditional::getX2" [label="2: Exit binary_conditional::getX \n " color=yellow style=filled]
27 [label="27: + \n " ]
27 -> 33 ; "binary_conditional::getX1" [label="1: Start binary_conditional::getX\nFormals: __return_param:class binary_conditional::X *\nLocals: x:class binary_conditional::X \n DECLARE_LOCALS(&return,&x); [line 16]\n " color=yellow style=filled]
26 [label="26: Exit binary_conditional::conditional \n " color=yellow style=filled]
25 [label="25: Start binary_conditional::conditional\nFormals: \nLocals: x:class binary_conditional::X 0$?%__sil_tmpSIL_materialize_temp__n$0:class binary_conditional::X 0$?%__sil_tmpSIL_temp_conditional___n$1:class binary_conditional::X 0$?%__sil_tmp__temp_return_n$3:class binary_conditional::X 0$?%__sil_tmpSIL_materialize_temp__n$5:class binary_conditional::X a:class binary_conditional::X \n DECLARE_LOCALS(&return,&x,&0$?%__sil_tmpSIL_materialize_temp__n$0,&0$?%__sil_tmpSIL_temp_conditional___n$1,&0$?%__sil_tmp__temp_return_n$3,&0$?%__sil_tmpSIL_materialize_temp__n$5,&a); [line 27]\n " color=yellow style=filled] "binary_conditional::getX1" -> "binary_conditional::getX4" ;
"binary_conditional::X_X2" [label="2: Exit binary_conditional::X_X \n " color=yellow style=filled]
25 -> 34 ; "binary_conditional::X_X1" [label="1: Start binary_conditional::X_X\nFormals: this:class binary_conditional::X *\nLocals: \n DECLARE_LOCALS(&return); [line 12]\n " color=yellow style=filled]
24 [label="24: DeclStmt \n _fun_binary_conditional::X_X(&a:class binary_conditional::X *) [line 23]\n " shape="box"]
24 -> 22 ; "binary_conditional::X_X1" -> "binary_conditional::X_X2" ;
23 [label="23: DeclStmt \n n$5=*&0$?%__sil_tmpSIL_temp_conditional___n$2:class binary_conditional::X [line 24]\n *&0$?%__sil_tmpSIL_materialize_temp__n$0:class binary_conditional::X =n$5 [line 24]\n _fun_binary_conditional::X_X(&x:class binary_conditional::X *,&0$?%__sil_tmpSIL_materialize_temp__n$0:class binary_conditional::X &) [line 24]\n " shape="box"] "binary_conditional::conditional10" [label="10: DeclStmt \n _fun_binary_conditional::X_X(&a:class binary_conditional::X *) [line 28]\n " shape="box"]
23 -> 15 ; "binary_conditional::conditional10" -> "binary_conditional::conditional4" ;
22 [label="22: BinaryConditinalStmt Init \n _fun_binary_conditional::getX(&0$?%__sil_tmpSIL_materialize_temp__n$0:class binary_conditional::X *) [line 24]\n " shape="box"] "binary_conditional::conditional9" [label="9: DeclStmt \n n$7=*&0$?%__sil_tmpSIL_temp_conditional___n$1:class binary_conditional::X [line 29]\n *&0$?%__sil_tmpSIL_materialize_temp__n$0:class binary_conditional::X =n$7 [line 29]\n _fun_binary_conditional::X_X(&x:class binary_conditional::X *,&0$?%__sil_tmpSIL_materialize_temp__n$0:class binary_conditional::X &) [line 29]\n " shape="box"]
22 -> 17 ; "binary_conditional::conditional9" -> "binary_conditional::conditional2" ;
21 [label="21: ConditinalStmt Branch \n _fun_binary_conditional::X_X(&0$?%__sil_tmpSIL_materialize_temp__n$0:class binary_conditional::X *,&a:class binary_conditional::X &) [line 24]\n *&0$?%__sil_tmpSIL_temp_conditional___n$2:class binary_conditional::X =&0$?%__sil_tmpSIL_materialize_temp__n$0 [line 24]\n " shape="box"] "binary_conditional::conditional8" [label="8: ConditinalStmt Branch \n _fun_binary_conditional::X_X(&0$?%__sil_tmpSIL_materialize_temp__n$0:class binary_conditional::X *,&a:class binary_conditional::X &) [line 29]\n *&0$?%__sil_tmpSIL_temp_conditional___n$1:class binary_conditional::X =&0$?%__sil_tmpSIL_materialize_temp__n$0 [line 29]\n " shape="box"]
21 -> 16 ; "binary_conditional::conditional8" -> "binary_conditional::conditional3" ;
20 [label="20: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_materialize_temp__n$4:class binary_conditional::X =&0$?%__sil_tmpSIL_materialize_temp__n$0 [line 24]\n _fun_binary_conditional::X_X(&0$?%__sil_tmpSIL_materialize_temp__n$0:class binary_conditional::X *,&0$?%__sil_tmpSIL_materialize_temp__n$4:class binary_conditional::X &) [line 24]\n *&0$?%__sil_tmpSIL_temp_conditional___n$2:class binary_conditional::X =&0$?%__sil_tmpSIL_materialize_temp__n$0 [line 24]\n " shape="box"] "binary_conditional::conditional7" [label="7: ConditinalStmt Branch \n _fun_binary_conditional::getX(&0$?%__sil_tmpSIL_materialize_temp__n$5:class binary_conditional::X *) [line 29]\n _fun_binary_conditional::X_X(&0$?%__sil_tmpSIL_materialize_temp__n$0:class binary_conditional::X *,&0$?%__sil_tmpSIL_materialize_temp__n$5:class binary_conditional::X &) [line 29]\n *&0$?%__sil_tmpSIL_temp_conditional___n$1:class binary_conditional::X =&0$?%__sil_tmpSIL_materialize_temp__n$0 [line 29]\n " shape="box"]
20 -> 16 ; "binary_conditional::conditional7" -> "binary_conditional::conditional3" ;
19 [label="19: Prune (false branch) \n PRUNE((n$3 == 0), false); [line 24]\n " shape="invhouse"] "binary_conditional::conditional6" [label="6: Prune (false branch) \n PRUNE((n$4 == 0), false); [line 29]\n " shape="invhouse"]
19 -> 21 ; "binary_conditional::conditional6" -> "binary_conditional::conditional8" ;
18 [label="18: Prune (true branch) \n PRUNE((n$3 != 0), true); [line 24]\n " shape="invhouse"] "binary_conditional::conditional5" [label="5: Prune (true branch) \n PRUNE((n$4 != 0), true); [line 29]\n " shape="invhouse"]
18 -> 20 ; "binary_conditional::conditional5" -> "binary_conditional::conditional7" ;
17 [label="17: Call _fun_binary_conditional::X_operator_bool \n n$3=_fun_binary_conditional::X_operator_bool(&0$?%__sil_tmpSIL_materialize_temp__n$0:class binary_conditional::X &) [line 24]\n " shape="box"] "binary_conditional::conditional4" [label="4: Call _fun_binary_conditional::X_operator_bool \n _fun_binary_conditional::getX(&0$?%__sil_tmp__temp_return_n$3:class binary_conditional::X *) [line 29]\n n$4=_fun_binary_conditional::X_operator_bool(&0$?%__sil_tmp__temp_return_n$3:class binary_conditional::X &) [line 29]\n " shape="box"]
17 -> 18 ; "binary_conditional::conditional4" -> "binary_conditional::conditional5" ;
17 -> 19 ; "binary_conditional::conditional4" -> "binary_conditional::conditional6" ;
16 [label="16: + \n " ] "binary_conditional::conditional3" [label="3: + \n " ]
16 -> 23 ; "binary_conditional::conditional3" -> "binary_conditional::conditional9" ;
15 [label="15: Exit binary_conditional::binaryConditional \n " color=yellow style=filled] "binary_conditional::conditional2" [label="2: Exit binary_conditional::conditional \n " color=yellow style=filled]
14 [label="14: Start binary_conditional::binaryConditional\nFormals: \nLocals: x:class binary_conditional::X 0$?%__sil_tmpSIL_materialize_temp__n$0:class binary_conditional::X 0$?%__sil_tmpSIL_temp_conditional___n$2:class binary_conditional::X 0$?%__sil_tmpSIL_materialize_temp__n$4:class binary_conditional::X a:class binary_conditional::X \n DECLARE_LOCALS(&return,&x,&0$?%__sil_tmpSIL_materialize_temp__n$0,&0$?%__sil_tmpSIL_temp_conditional___n$2,&0$?%__sil_tmpSIL_materialize_temp__n$4,&a); [line 22]\n " color=yellow style=filled] "binary_conditional::conditional1" [label="1: Start binary_conditional::conditional\nFormals: \nLocals: x:class binary_conditional::X 0$?%__sil_tmpSIL_materialize_temp__n$0:class binary_conditional::X 0$?%__sil_tmpSIL_temp_conditional___n$1:class binary_conditional::X 0$?%__sil_tmp__temp_return_n$3:class binary_conditional::X 0$?%__sil_tmpSIL_materialize_temp__n$5:class binary_conditional::X a:class binary_conditional::X \n DECLARE_LOCALS(&return,&x,&0$?%__sil_tmpSIL_materialize_temp__n$0,&0$?%__sil_tmpSIL_temp_conditional___n$1,&0$?%__sil_tmp__temp_return_n$3,&0$?%__sil_tmpSIL_materialize_temp__n$5,&a); [line 27]\n " color=yellow style=filled]
14 -> 24 ; "binary_conditional::conditional1" -> "binary_conditional::conditional10" ;
13 [label="13: DeclStmt \n _fun_binary_conditional::X_X(&x:class binary_conditional::X *) [line 17]\n " shape="box"] "binary_conditional::binaryConditional11" [label="11: DeclStmt \n _fun_binary_conditional::X_X(&a:class binary_conditional::X *) [line 23]\n " shape="box"]
13 -> 12 ; "binary_conditional::binaryConditional11" -> "binary_conditional::binaryConditional9" ;
12 [label="12: Return Stmt \n n$0=*&__return_param:class binary_conditional::X * [line 18]\n _fun_binary_conditional::X_X(n$0:class binary_conditional::X *,&x:class binary_conditional::X &) [line 18]\n " shape="box"] "binary_conditional::binaryConditional10" [label="10: DeclStmt \n n$5=*&0$?%__sil_tmpSIL_temp_conditional___n$2:class binary_conditional::X [line 24]\n *&0$?%__sil_tmpSIL_materialize_temp__n$0:class binary_conditional::X =n$5 [line 24]\n _fun_binary_conditional::X_X(&x:class binary_conditional::X *,&0$?%__sil_tmpSIL_materialize_temp__n$0:class binary_conditional::X &) [line 24]\n " shape="box"]
12 -> 11 ; "binary_conditional::binaryConditional10" -> "binary_conditional::binaryConditional2" ;
11 [label="11: Exit binary_conditional::getX \n " color=yellow style=filled] "binary_conditional::binaryConditional9" [label="9: BinaryConditinalStmt Init \n _fun_binary_conditional::getX(&0$?%__sil_tmpSIL_materialize_temp__n$0:class binary_conditional::X *) [line 24]\n " shape="box"]
10 [label="10: Start binary_conditional::getX\nFormals: __return_param:class binary_conditional::X *\nLocals: x:class binary_conditional::X \n DECLARE_LOCALS(&return,&x); [line 16]\n " color=yellow style=filled] "binary_conditional::binaryConditional9" -> "binary_conditional::binaryConditional4" ;
"binary_conditional::binaryConditional8" [label="8: ConditinalStmt Branch \n _fun_binary_conditional::X_X(&0$?%__sil_tmpSIL_materialize_temp__n$0:class binary_conditional::X *,&a:class binary_conditional::X &) [line 24]\n *&0$?%__sil_tmpSIL_temp_conditional___n$2:class binary_conditional::X =&0$?%__sil_tmpSIL_materialize_temp__n$0 [line 24]\n " shape="box"]
10 -> 13 ; "binary_conditional::binaryConditional8" -> "binary_conditional::binaryConditional3" ;
9 [label="9: Exit binary_conditional::X_X \n " color=yellow style=filled] "binary_conditional::binaryConditional7" [label="7: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_materialize_temp__n$4:class binary_conditional::X =&0$?%__sil_tmpSIL_materialize_temp__n$0 [line 24]\n _fun_binary_conditional::X_X(&0$?%__sil_tmpSIL_materialize_temp__n$0:class binary_conditional::X *,&0$?%__sil_tmpSIL_materialize_temp__n$4:class binary_conditional::X &) [line 24]\n *&0$?%__sil_tmpSIL_temp_conditional___n$2:class binary_conditional::X =&0$?%__sil_tmpSIL_materialize_temp__n$0 [line 24]\n " shape="box"]
8 [label="8: Start binary_conditional::X_X\nFormals: this:class binary_conditional::X * __param_0:class binary_conditional::X &\nLocals: \n DECLARE_LOCALS(&return); [line 12]\n " color=yellow style=filled] "binary_conditional::binaryConditional7" -> "binary_conditional::binaryConditional3" ;
"binary_conditional::binaryConditional6" [label="6: Prune (false branch) \n PRUNE((n$3 == 0), false); [line 24]\n " shape="invhouse"]
8 -> 9 ; "binary_conditional::binaryConditional6" -> "binary_conditional::binaryConditional8" ;
7 [label="7: Exit binary_conditional::X_X \n " color=yellow style=filled] "binary_conditional::binaryConditional5" [label="5: Prune (true branch) \n PRUNE((n$3 != 0), true); [line 24]\n " shape="invhouse"]
6 [label="6: Start binary_conditional::X_X\nFormals: this:class binary_conditional::X * __param_0:class binary_conditional::X &\nLocals: \n DECLARE_LOCALS(&return); [line 12]\n " color=yellow style=filled] "binary_conditional::binaryConditional5" -> "binary_conditional::binaryConditional7" ;
"binary_conditional::binaryConditional4" [label="4: Call _fun_binary_conditional::X_operator_bool \n n$3=_fun_binary_conditional::X_operator_bool(&0$?%__sil_tmpSIL_materialize_temp__n$0:class binary_conditional::X &) [line 24]\n " shape="box"]
6 -> 7 ; "binary_conditional::binaryConditional4" -> "binary_conditional::binaryConditional5" ;
5 [label="5: Exit binary_conditional::X_X \n " color=yellow style=filled] "binary_conditional::binaryConditional4" -> "binary_conditional::binaryConditional6" ;
"binary_conditional::binaryConditional3" [label="3: + \n " ]
4 [label="4: Start binary_conditional::X_X\nFormals: this:class binary_conditional::X *\nLocals: \n DECLARE_LOCALS(&return); [line 12]\n " color=yellow style=filled] "binary_conditional::binaryConditional3" -> "binary_conditional::binaryConditional10" ;
"binary_conditional::binaryConditional2" [label="2: Exit binary_conditional::binaryConditional \n " color=yellow style=filled]
4 -> 5 ; "binary_conditional::binaryConditional1" [label="1: Start binary_conditional::binaryConditional\nFormals: \nLocals: x:class binary_conditional::X 0$?%__sil_tmpSIL_materialize_temp__n$0:class binary_conditional::X 0$?%__sil_tmpSIL_temp_conditional___n$2:class binary_conditional::X 0$?%__sil_tmpSIL_materialize_temp__n$4:class binary_conditional::X a:class binary_conditional::X \n DECLARE_LOCALS(&return,&x,&0$?%__sil_tmpSIL_materialize_temp__n$0,&0$?%__sil_tmpSIL_temp_conditional___n$2,&0$?%__sil_tmpSIL_materialize_temp__n$4,&a); [line 22]\n " color=yellow style=filled]
3 [label="3: Return Stmt \n *&return:_Bool =1 [line 13]\n " shape="box"]
3 -> 2 ; "binary_conditional::binaryConditional1" -> "binary_conditional::binaryConditional11" ;
2 [label="2: Exit binary_conditional::X_operator_bool \n " color=yellow style=filled] "binary_conditional::X_X2" [label="2: Exit binary_conditional::X_X \n " color=yellow style=filled]
1 [label="1: Start binary_conditional::X_operator_bool\nFormals: this:class binary_conditional::X *\nLocals: \n DECLARE_LOCALS(&return); [line 13]\n " color=yellow style=filled] "binary_conditional::X_X1" [label="1: Start binary_conditional::X_X\nFormals: this:class binary_conditional::X * __param_0:class binary_conditional::X &\nLocals: \n DECLARE_LOCALS(&return); [line 12]\n " color=yellow style=filled]
1 -> 3 ; "binary_conditional::X_X1" -> "binary_conditional::X_X2" ;
} }

@ -1,255 +1,255 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
65 [label="65: Return Stmt \n n$0=_fun_div_temp_lvalue(0:int ,1:int ) [line 47]\n *&return:int =n$0 [line 47]\n " shape="box"] "div1_assign_conditional3" [label="3: Return Stmt \n n$0=_fun_assign_conditional(1:int ) [line 43]\n *&return:int =(1 / n$0) [line 43]\n " shape="box"]
65 -> 64 ; "div1_assign_conditional3" -> "div1_assign_conditional2" ;
64 [label="64: Exit div1_temp_lvalue \n " color=yellow style=filled] "div1_assign_conditional2" [label="2: Exit div1_assign_conditional \n " color=yellow style=filled]
63 [label="63: Start div1_temp_lvalue\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 47]\n " color=yellow style=filled] "div1_assign_conditional1" [label="1: Start div1_assign_conditional\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 43]\n " color=yellow style=filled]
63 -> 65 ; "div1_assign_conditional1" -> "div1_assign_conditional3" ;
62 [label="62: Return Stmt \n n$0=_fun_div_temp_lvalue(1:int ,0:int ) [line 45]\n *&return:int =n$0 [line 45]\n " shape="box"] "choose_lvalue11" [label="11: DeclStmt \n *&v1:int =0 [line 11]\n " shape="box"]
62 -> 61 ; "choose_lvalue11" -> "choose_lvalue10" ;
61 [label="61: Exit div0_temp_lvalue \n " color=yellow style=filled] "choose_lvalue10" [label="10: DeclStmt \n *&v2:int =1 [line 11]\n " shape="box"]
60 [label="60: Start div0_temp_lvalue\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 45]\n " color=yellow style=filled] "choose_lvalue10" -> "choose_lvalue5" ;
"choose_lvalue10" -> "choose_lvalue6" ;
"choose_lvalue9" [label="9: DeclStmt \n n$3=*&0$?%__sil_tmpSIL_temp_conditional___n$1:int & [line 12]\n n$4=*n$3:int [line 12]\n *&v3:int =n$4 [line 12]\n " shape="box"]
60 -> 62 ; "choose_lvalue9" -> "choose_lvalue3" ;
59 [label="59: Return Stmt \n n$0=_fun_assign_conditional(1:int ) [line 43]\n *&return:int =(1 / n$0) [line 43]\n " shape="box"] "choose_lvalue8" [label="8: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$1:int &=&v2 [line 12]\n " shape="box"]
59 -> 58 ; "choose_lvalue8" -> "choose_lvalue4" ;
58 [label="58: Exit div1_assign_conditional \n " color=yellow style=filled] "choose_lvalue7" [label="7: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$1:int &=&v1 [line 12]\n " shape="box"]
57 [label="57: Start div1_assign_conditional\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 43]\n " color=yellow style=filled] "choose_lvalue7" -> "choose_lvalue4" ;
"choose_lvalue6" [label="6: Prune (false branch) \n n$2=*&a:int [line 12]\n PRUNE((n$2 == 0), false); [line 12]\n " shape="invhouse"]
57 -> 59 ; "choose_lvalue6" -> "choose_lvalue8" ;
56 [label="56: Return Stmt \n n$0=_fun_assign_conditional(0:int ) [line 41]\n *&return:int =(1 / n$0) [line 41]\n " shape="box"] "choose_lvalue5" [label="5: Prune (true branch) \n n$2=*&a:int [line 12]\n PRUNE((n$2 != 0), true); [line 12]\n " shape="invhouse"]
56 -> 55 ; "choose_lvalue5" -> "choose_lvalue7" ;
55 [label="55: Exit div0_assign_conditional \n " color=yellow style=filled] "choose_lvalue4" [label="4: + \n " ]
54 [label="54: Start div0_assign_conditional\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 41]\n " color=yellow style=filled] "choose_lvalue4" -> "choose_lvalue9" ;
"choose_lvalue3" [label="3: Return Stmt \n n$0=*&v3:int [line 13]\n *&return:int =n$0 [line 13]\n " shape="box"]
54 -> 56 ; "choose_lvalue3" -> "choose_lvalue2" ;
53 [label="53: Return Stmt \n n$0=_fun_choose_rvalue(0:int ) [line 39]\n *&return:int =(1 / n$0) [line 39]\n " shape="box"] "choose_lvalue2" [label="2: Exit choose_lvalue \n " color=yellow style=filled]
53 -> 52 ; "choose_lvalue1" [label="1: Start choose_lvalue\nFormals: a:int \nLocals: v3:int 0$?%__sil_tmpSIL_temp_conditional___n$1:int & v2:int v1:int \n DECLARE_LOCALS(&return,&v3,&0$?%__sil_tmpSIL_temp_conditional___n$1,&v2,&v1); [line 10]\n " color=yellow style=filled]
52 [label="52: Exit div1_choose_rvalue \n " color=yellow style=filled]
51 [label="51: Start div1_choose_rvalue\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 39]\n " color=yellow style=filled] "choose_lvalue1" -> "choose_lvalue11" ;
"assign_conditional11" [label="11: DeclStmt \n *&v1:int =0 [line 23]\n " shape="box"]
51 -> 53 ; "assign_conditional11" -> "assign_conditional10" ;
50 [label="50: Return Stmt \n n$0=_fun_choose_rvalue(1:int ) [line 37]\n *&return:int =(1 / n$0) [line 37]\n " shape="box"] "assign_conditional10" [label="10: DeclStmt \n *&v2:int =0 [line 23]\n " shape="box"]
50 -> 49 ; "assign_conditional10" -> "assign_conditional5" ;
49 [label="49: Exit div0_choose_rvalue \n " color=yellow style=filled] "assign_conditional10" -> "assign_conditional6" ;
"assign_conditional9" [label="9: BinaryOperatorStmt: Assign \n n$3=*&0$?%__sil_tmpSIL_temp_conditional___n$1:int & [line 24]\n *n$3:int =1 [line 24]\n " shape="box"]
48 [label="48: Start div0_choose_rvalue\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 37]\n " color=yellow style=filled] "assign_conditional9" -> "assign_conditional3" ;
"assign_conditional8" [label="8: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$1:int &=&v2 [line 24]\n " shape="box"]
48 -> 50 ; "assign_conditional8" -> "assign_conditional4" ;
47 [label="47: Return Stmt \n n$0=_fun_choose_lvalue(0:int ) [line 35]\n *&return:int =(1 / n$0) [line 35]\n " shape="box"] "assign_conditional7" [label="7: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$1:int &=&v1 [line 24]\n " shape="box"]
47 -> 46 ; "assign_conditional7" -> "assign_conditional4" ;
46 [label="46: Exit div1_choose_lvalue \n " color=yellow style=filled] "assign_conditional6" [label="6: Prune (false branch) \n n$2=*&a:int [line 24]\n PRUNE((n$2 == 0), false); [line 24]\n " shape="invhouse"]
45 [label="45: Start div1_choose_lvalue\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 35]\n " color=yellow style=filled] "assign_conditional6" -> "assign_conditional8" ;
"assign_conditional5" [label="5: Prune (true branch) \n n$2=*&a:int [line 24]\n PRUNE((n$2 != 0), true); [line 24]\n " shape="invhouse"]
45 -> 47 ; "assign_conditional5" -> "assign_conditional7" ;
44 [label="44: Return Stmt \n n$0=_fun_choose_lvalue(1:int ) [line 33]\n *&return:int =(1 / n$0) [line 33]\n " shape="box"] "assign_conditional4" [label="4: + \n " ]
44 -> 43 ; "assign_conditional4" -> "assign_conditional9" ;
43 [label="43: Exit div0_choose_lvalue \n " color=yellow style=filled] "assign_conditional3" [label="3: Return Stmt \n n$0=*&v1:int [line 25]\n *&return:int =n$0 [line 25]\n " shape="box"]
42 [label="42: Start div0_choose_lvalue\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 33]\n " color=yellow style=filled] "assign_conditional3" -> "assign_conditional2" ;
"assign_conditional2" [label="2: Exit assign_conditional \n " color=yellow style=filled]
42 -> 44 ; "assign_conditional1" [label="1: Start assign_conditional\nFormals: a:int \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$1:int & v2:int v1:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$1,&v2,&v1); [line 22]\n " color=yellow style=filled]
41 [label="41: DeclStmt \n n$6=*&0$?%__sil_tmpSIL_temp_conditional___n$3:int [line 29]\n *&0$?%__sil_tmpSIL_materialize_temp__n$2:int =n$6 [line 29]\n *&r:int &=&0$?%__sil_tmpSIL_materialize_temp__n$2 [line 29]\n " shape="box"]
41 -> 35 ; "assign_conditional1" -> "assign_conditional11" ;
40 [label="40: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int =1 [line 29]\n " shape="box"] "div1_temp_lvalue3" [label="3: Return Stmt \n n$0=_fun_div_temp_lvalue(0:int ,1:int ) [line 47]\n *&return:int =n$0 [line 47]\n " shape="box"]
40 -> 36 ; "div1_temp_lvalue3" -> "div1_temp_lvalue2" ;
39 [label="39: ConditinalStmt Branch \n n$5=*&b:int [line 29]\n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int =n$5 [line 29]\n " shape="box"] "div1_temp_lvalue2" [label="2: Exit div1_temp_lvalue \n " color=yellow style=filled]
39 -> 36 ; "div1_temp_lvalue1" [label="1: Start div1_temp_lvalue\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 47]\n " color=yellow style=filled]
38 [label="38: Prune (false branch) \n n$4=*&a:int [line 29]\n PRUNE((n$4 == 0), false); [line 29]\n " shape="invhouse"]
38 -> 40 ; "div1_temp_lvalue1" -> "div1_temp_lvalue3" ;
37 [label="37: Prune (true branch) \n n$4=*&a:int [line 29]\n PRUNE((n$4 != 0), true); [line 29]\n " shape="invhouse"] "div0_assign_conditional3" [label="3: Return Stmt \n n$0=_fun_assign_conditional(0:int ) [line 41]\n *&return:int =(1 / n$0) [line 41]\n " shape="box"]
37 -> 39 ; "div0_assign_conditional3" -> "div0_assign_conditional2" ;
36 [label="36: + \n " ] "div0_assign_conditional2" [label="2: Exit div0_assign_conditional \n " color=yellow style=filled]
36 -> 41 ; "div0_assign_conditional1" [label="1: Start div0_assign_conditional\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 41]\n " color=yellow style=filled]
35 [label="35: Return Stmt \n n$0=*&r:int & [line 30]\n n$1=*n$0:int [line 30]\n *&return:int =(1 / n$1) [line 30]\n " shape="box"]
35 -> 34 ; "div0_assign_conditional1" -> "div0_assign_conditional3" ;
34 [label="34: Exit div_temp_lvalue \n " color=yellow style=filled] "div0_choose_rvalue3" [label="3: Return Stmt \n n$0=_fun_choose_rvalue(1:int ) [line 37]\n *&return:int =(1 / n$0) [line 37]\n " shape="box"]
33 [label="33: Start div_temp_lvalue\nFormals: a:int b:int \nLocals: r:int & 0$?%__sil_tmpSIL_materialize_temp__n$2:int 0$?%__sil_tmpSIL_temp_conditional___n$3:int \n DECLARE_LOCALS(&return,&r,&0$?%__sil_tmpSIL_materialize_temp__n$2,&0$?%__sil_tmpSIL_temp_conditional___n$3); [line 28]\n " color=yellow style=filled] "div0_choose_rvalue3" -> "div0_choose_rvalue2" ;
"div0_choose_rvalue2" [label="2: Exit div0_choose_rvalue \n " color=yellow style=filled]
33 -> 37 ; "div0_choose_rvalue1" [label="1: Start div0_choose_rvalue\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 37]\n " color=yellow style=filled]
33 -> 38 ;
32 [label="32: DeclStmt \n *&v1:int =0 [line 23]\n " shape="box"]
32 -> 31 ; "div0_choose_rvalue1" -> "div0_choose_rvalue3" ;
31 [label="31: DeclStmt \n *&v2:int =0 [line 23]\n " shape="box"] "div1_choose_lvalue3" [label="3: Return Stmt \n n$0=_fun_choose_lvalue(0:int ) [line 35]\n *&return:int =(1 / n$0) [line 35]\n " shape="box"]
31 -> 26 ; "div1_choose_lvalue3" -> "div1_choose_lvalue2" ;
31 -> 27 ; "div1_choose_lvalue2" [label="2: Exit div1_choose_lvalue \n " color=yellow style=filled]
30 [label="30: BinaryOperatorStmt: Assign \n n$3=*&0$?%__sil_tmpSIL_temp_conditional___n$1:int & [line 24]\n *n$3:int =1 [line 24]\n " shape="box"]
30 -> 24 ; "div1_choose_lvalue1" [label="1: Start div1_choose_lvalue\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 35]\n " color=yellow style=filled]
29 [label="29: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$1:int &=&v2 [line 24]\n " shape="box"]
29 -> 25 ; "div1_choose_lvalue1" -> "div1_choose_lvalue3" ;
28 [label="28: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$1:int &=&v1 [line 24]\n " shape="box"] "div_temp_lvalue9" [label="9: DeclStmt \n n$6=*&0$?%__sil_tmpSIL_temp_conditional___n$3:int [line 29]\n *&0$?%__sil_tmpSIL_materialize_temp__n$2:int =n$6 [line 29]\n *&r:int &=&0$?%__sil_tmpSIL_materialize_temp__n$2 [line 29]\n " shape="box"]
28 -> 25 ; "div_temp_lvalue9" -> "div_temp_lvalue3" ;
27 [label="27: Prune (false branch) \n n$2=*&a:int [line 24]\n PRUNE((n$2 == 0), false); [line 24]\n " shape="invhouse"] "div_temp_lvalue8" [label="8: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int =1 [line 29]\n " shape="box"]
27 -> 29 ; "div_temp_lvalue8" -> "div_temp_lvalue4" ;
26 [label="26: Prune (true branch) \n n$2=*&a:int [line 24]\n PRUNE((n$2 != 0), true); [line 24]\n " shape="invhouse"] "div_temp_lvalue7" [label="7: ConditinalStmt Branch \n n$5=*&b:int [line 29]\n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int =n$5 [line 29]\n " shape="box"]
26 -> 28 ; "div_temp_lvalue7" -> "div_temp_lvalue4" ;
25 [label="25: + \n " ] "div_temp_lvalue6" [label="6: Prune (false branch) \n n$4=*&a:int [line 29]\n PRUNE((n$4 == 0), false); [line 29]\n " shape="invhouse"]
25 -> 30 ; "div_temp_lvalue6" -> "div_temp_lvalue8" ;
24 [label="24: Return Stmt \n n$0=*&v1:int [line 25]\n *&return:int =n$0 [line 25]\n " shape="box"] "div_temp_lvalue5" [label="5: Prune (true branch) \n n$4=*&a:int [line 29]\n PRUNE((n$4 != 0), true); [line 29]\n " shape="invhouse"]
24 -> 23 ; "div_temp_lvalue5" -> "div_temp_lvalue7" ;
23 [label="23: Exit assign_conditional \n " color=yellow style=filled] "div_temp_lvalue4" [label="4: + \n " ]
22 [label="22: Start assign_conditional\nFormals: a:int \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$1:int & v2:int v1:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$1,&v2,&v1); [line 22]\n " color=yellow style=filled] "div_temp_lvalue4" -> "div_temp_lvalue9" ;
"div_temp_lvalue3" [label="3: Return Stmt \n n$0=*&r:int & [line 30]\n n$1=*n$0:int [line 30]\n *&return:int =(1 / n$1) [line 30]\n " shape="box"]
22 -> 32 ; "div_temp_lvalue3" -> "div_temp_lvalue2" ;
21 [label="21: DeclStmt \n *&v1:int =0 [line 17]\n " shape="box"] "div_temp_lvalue2" [label="2: Exit div_temp_lvalue \n " color=yellow style=filled]
21 -> 16 ; "div_temp_lvalue1" [label="1: Start div_temp_lvalue\nFormals: a:int b:int \nLocals: r:int & 0$?%__sil_tmpSIL_materialize_temp__n$2:int 0$?%__sil_tmpSIL_temp_conditional___n$3:int \n DECLARE_LOCALS(&return,&r,&0$?%__sil_tmpSIL_materialize_temp__n$2,&0$?%__sil_tmpSIL_temp_conditional___n$3); [line 28]\n " color=yellow style=filled]
21 -> 17 ;
20 [label="20: DeclStmt \n n$4=*&0$?%__sil_tmpSIL_temp_conditional___n$1:int [line 18]\n *&v3:int =n$4 [line 18]\n " shape="box"]
20 -> 14 ; "div_temp_lvalue1" -> "div_temp_lvalue5" ;
19 [label="19: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$1:int =1 [line 18]\n " shape="box"] "div_temp_lvalue1" -> "div_temp_lvalue6" ;
"div0_temp_lvalue3" [label="3: Return Stmt \n n$0=_fun_div_temp_lvalue(1:int ,0:int ) [line 45]\n *&return:int =n$0 [line 45]\n " shape="box"]
19 -> 15 ; "div0_temp_lvalue3" -> "div0_temp_lvalue2" ;
18 [label="18: ConditinalStmt Branch \n n$3=*&v1:int [line 18]\n *&0$?%__sil_tmpSIL_temp_conditional___n$1:int =n$3 [line 18]\n " shape="box"] "div0_temp_lvalue2" [label="2: Exit div0_temp_lvalue \n " color=yellow style=filled]
18 -> 15 ; "div0_temp_lvalue1" [label="1: Start div0_temp_lvalue\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 45]\n " color=yellow style=filled]
17 [label="17: Prune (false branch) \n n$2=*&a:int [line 18]\n PRUNE((n$2 == 0), false); [line 18]\n " shape="invhouse"]
17 -> 19 ; "div0_temp_lvalue1" -> "div0_temp_lvalue3" ;
16 [label="16: Prune (true branch) \n n$2=*&a:int [line 18]\n PRUNE((n$2 != 0), true); [line 18]\n " shape="invhouse"] "div0_choose_lvalue3" [label="3: Return Stmt \n n$0=_fun_choose_lvalue(1:int ) [line 33]\n *&return:int =(1 / n$0) [line 33]\n " shape="box"]
16 -> 18 ; "div0_choose_lvalue3" -> "div0_choose_lvalue2" ;
15 [label="15: + \n " ] "div0_choose_lvalue2" [label="2: Exit div0_choose_lvalue \n " color=yellow style=filled]
15 -> 20 ; "div0_choose_lvalue1" [label="1: Start div0_choose_lvalue\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 33]\n " color=yellow style=filled]
14 [label="14: Return Stmt \n n$0=*&v3:int [line 19]\n *&return:int =n$0 [line 19]\n " shape="box"]
14 -> 13 ; "div0_choose_lvalue1" -> "div0_choose_lvalue3" ;
13 [label="13: Exit choose_rvalue \n " color=yellow style=filled] "div1_choose_rvalue3" [label="3: Return Stmt \n n$0=_fun_choose_rvalue(0:int ) [line 39]\n *&return:int =(1 / n$0) [line 39]\n " shape="box"]
12 [label="12: Start choose_rvalue\nFormals: a:int \nLocals: v3:int 0$?%__sil_tmpSIL_temp_conditional___n$1:int v1:int \n DECLARE_LOCALS(&return,&v3,&0$?%__sil_tmpSIL_temp_conditional___n$1,&v1); [line 16]\n " color=yellow style=filled] "div1_choose_rvalue3" -> "div1_choose_rvalue2" ;
"div1_choose_rvalue2" [label="2: Exit div1_choose_rvalue \n " color=yellow style=filled]
12 -> 21 ; "div1_choose_rvalue1" [label="1: Start div1_choose_rvalue\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 39]\n " color=yellow style=filled]
11 [label="11: DeclStmt \n *&v1:int =0 [line 11]\n " shape="box"]
11 -> 10 ; "div1_choose_rvalue1" -> "div1_choose_rvalue3" ;
10 [label="10: DeclStmt \n *&v2:int =1 [line 11]\n " shape="box"] "choose_rvalue10" [label="10: DeclStmt \n *&v1:int =0 [line 17]\n " shape="box"]
10 -> 5 ; "choose_rvalue10" -> "choose_rvalue5" ;
10 -> 6 ; "choose_rvalue10" -> "choose_rvalue6" ;
9 [label="9: DeclStmt \n n$3=*&0$?%__sil_tmpSIL_temp_conditional___n$1:int & [line 12]\n n$4=*n$3:int [line 12]\n *&v3:int =n$4 [line 12]\n " shape="box"] "choose_rvalue9" [label="9: DeclStmt \n n$4=*&0$?%__sil_tmpSIL_temp_conditional___n$1:int [line 18]\n *&v3:int =n$4 [line 18]\n " shape="box"]
9 -> 3 ; "choose_rvalue9" -> "choose_rvalue3" ;
8 [label="8: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$1:int &=&v2 [line 12]\n " shape="box"] "choose_rvalue8" [label="8: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$1:int =1 [line 18]\n " shape="box"]
8 -> 4 ; "choose_rvalue8" -> "choose_rvalue4" ;
7 [label="7: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$1:int &=&v1 [line 12]\n " shape="box"] "choose_rvalue7" [label="7: ConditinalStmt Branch \n n$3=*&v1:int [line 18]\n *&0$?%__sil_tmpSIL_temp_conditional___n$1:int =n$3 [line 18]\n " shape="box"]
7 -> 4 ; "choose_rvalue7" -> "choose_rvalue4" ;
6 [label="6: Prune (false branch) \n n$2=*&a:int [line 12]\n PRUNE((n$2 == 0), false); [line 12]\n " shape="invhouse"] "choose_rvalue6" [label="6: Prune (false branch) \n n$2=*&a:int [line 18]\n PRUNE((n$2 == 0), false); [line 18]\n " shape="invhouse"]
6 -> 8 ; "choose_rvalue6" -> "choose_rvalue8" ;
5 [label="5: Prune (true branch) \n n$2=*&a:int [line 12]\n PRUNE((n$2 != 0), true); [line 12]\n " shape="invhouse"] "choose_rvalue5" [label="5: Prune (true branch) \n n$2=*&a:int [line 18]\n PRUNE((n$2 != 0), true); [line 18]\n " shape="invhouse"]
5 -> 7 ; "choose_rvalue5" -> "choose_rvalue7" ;
4 [label="4: + \n " ] "choose_rvalue4" [label="4: + \n " ]
4 -> 9 ; "choose_rvalue4" -> "choose_rvalue9" ;
3 [label="3: Return Stmt \n n$0=*&v3:int [line 13]\n *&return:int =n$0 [line 13]\n " shape="box"] "choose_rvalue3" [label="3: Return Stmt \n n$0=*&v3:int [line 19]\n *&return:int =n$0 [line 19]\n " shape="box"]
3 -> 2 ; "choose_rvalue3" -> "choose_rvalue2" ;
2 [label="2: Exit choose_lvalue \n " color=yellow style=filled] "choose_rvalue2" [label="2: Exit choose_rvalue \n " color=yellow style=filled]
1 [label="1: Start choose_lvalue\nFormals: a:int \nLocals: v3:int 0$?%__sil_tmpSIL_temp_conditional___n$1:int & v2:int v1:int \n DECLARE_LOCALS(&return,&v3,&0$?%__sil_tmpSIL_temp_conditional___n$1,&v2,&v1); [line 10]\n " color=yellow style=filled] "choose_rvalue1" [label="1: Start choose_rvalue\nFormals: a:int \nLocals: v3:int 0$?%__sil_tmpSIL_temp_conditional___n$1:int v1:int \n DECLARE_LOCALS(&return,&v3,&0$?%__sil_tmpSIL_temp_conditional___n$1,&v1); [line 16]\n " color=yellow style=filled]
1 -> 11 ; "choose_rvalue1" -> "choose_rvalue10" ;
} }

@ -1,118 +1,118 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
31 [label="31: DeclStmt \n _fun_Z_Z(&old:class Z *) [line 40]\n " shape="box"] "Z_Z2" [label="2: Exit Z_Z \n " color=yellow style=filled]
31 -> 30 ; "Z_Z1" [label="1: Start Z_Z\nFormals: this:class Z *\nLocals: \n DECLARE_LOCALS(&return); [line 27]\n " color=yellow style=filled]
30 [label="30: DeclStmt \n _fun_Z_Z(&z[1]:class Z *,&old:class Z &) [line 41]\n " shape="box"]
30 -> 29 ; "Z_Z1" -> "Z_Z2" ;
29 [label="29: DeclStmt \n _fun_Z_Z(&z2:class Z *) [line 42]\n " shape="box"] "array_of_person4" [label="4: DeclStmt \n _fun_Person_Person(&0$?%__sil_tmpSIL_materialize_temp__n$3:class Person *) [line 18]\n _fun_Person_Person(&arr[0]:class Person *,&0$?%__sil_tmpSIL_materialize_temp__n$3:class Person &) [line 18]\n _fun_Person_Person(&0$?%__sil_tmpSIL_materialize_temp__n$2:class Person *) [line 18]\n _fun_Person_Person(&arr[1]:class Person *,&0$?%__sil_tmpSIL_materialize_temp__n$2:class Person &) [line 18]\n _fun_Person_Person(&0$?%__sil_tmpSIL_materialize_temp__n$1:class Person *) [line 18]\n _fun_Person_Person(&arr[2]:class Person *,&0$?%__sil_tmpSIL_materialize_temp__n$1:class Person &) [line 18]\n " shape="box"]
29 -> 28 ; "array_of_person4" -> "array_of_person3" ;
28 [label="28: Exit initialization_mixed_styles_not_handled_correctly \n " color=yellow style=filled] "array_of_person3" [label="3: Return Stmt \n n$0=*&arr[0].x:int [line 19]\n *&return:int =n$0 [line 19]\n " shape="box"]
27 [label="27: Start initialization_mixed_styles_not_handled_correctly\nFormals: \nLocals: z2:class Z z:class Z [2] old:class Z \n DECLARE_LOCALS(&return,&z2,&z,&old); [line 39]\n " color=yellow style=filled] "array_of_person3" -> "array_of_person2" ;
"array_of_person2" [label="2: Exit array_of_person \n " color=yellow style=filled]
27 -> 31 ; "array_of_person1" [label="1: Start array_of_person\nFormals: \nLocals: arr:class Person [10] 0$?%__sil_tmpSIL_materialize_temp__n$1:class Person 0$?%__sil_tmpSIL_materialize_temp__n$2:class Person 0$?%__sil_tmpSIL_materialize_temp__n$3:class Person \n DECLARE_LOCALS(&return,&arr,&0$?%__sil_tmpSIL_materialize_temp__n$1,&0$?%__sil_tmpSIL_materialize_temp__n$2,&0$?%__sil_tmpSIL_materialize_temp__n$3); [line 17]\n " color=yellow style=filled]
26 [label="26: DeclStmt \n *&z[0].a:int =1 [line 33]\n *&z[0].b:int =2 [line 33]\n *&z[1].a:int =2 [line 33]\n *&z[1].b:int =3 [line 33]\n " shape="box"]
26 -> 25 ; "array_of_person1" -> "array_of_person4" ;
25 [label="25: DeclStmt \n _fun_Z_Z(&z2:class Z *) [line 34]\n " shape="box"] "Person_Person2" [label="2: Exit Person_Person \n " color=yellow style=filled]
25 -> 24 ; "Person_Person1" [label="1: Start Person_Person\nFormals: this:class Person *\nLocals: \n DECLARE_LOCALS(&return); [line 13]\n " color=yellow style=filled]
24 [label="24: Exit initialization_c_style \n " color=yellow style=filled]
23 [label="23: Start initialization_c_style\nFormals: \nLocals: z2:class Z z:class Z [2] \n DECLARE_LOCALS(&return,&z2,&z); [line 32]\n " color=yellow style=filled] "Person_Person1" -> "Person_Person2" ;
"matrix_of_person4" [label="4: DeclStmt \n _fun_Person_Person(&0$?%__sil_tmpSIL_materialize_temp__n$4:class Person *) [line 23]\n _fun_Person_Person(&arr[0][0]:class Person *,&0$?%__sil_tmpSIL_materialize_temp__n$4:class Person &) [line 23]\n _fun_Person_Person(&0$?%__sil_tmpSIL_materialize_temp__n$3:class Person *) [line 23]\n _fun_Person_Person(&arr[0][1]:class Person *,&0$?%__sil_tmpSIL_materialize_temp__n$3:class Person &) [line 23]\n _fun_Person_Person(&0$?%__sil_tmpSIL_materialize_temp__n$2:class Person *) [line 23]\n _fun_Person_Person(&arr[1][0]:class Person *,&0$?%__sil_tmpSIL_materialize_temp__n$2:class Person &) [line 23]\n _fun_Person_Person(&0$?%__sil_tmpSIL_materialize_temp__n$1:class Person *) [line 23]\n _fun_Person_Person(&arr[1][1]:class Person *,&0$?%__sil_tmpSIL_materialize_temp__n$1:class Person &) [line 23]\n " shape="box"]
23 -> 26 ; "matrix_of_person4" -> "matrix_of_person3" ;
22 [label="22: Constructor Init \n n$3=*&this:class Z * [line 27]\n n$4=*&__param_0:class Z & [line 27]\n n$5=*n$4.a:int [line 27]\n *n$3.a:int =n$5 [line 27]\n " shape="box"] "matrix_of_person3" [label="3: Return Stmt \n n$0=*&arr[0][1].x:int [line 24]\n *&return:int =n$0 [line 24]\n " shape="box"]
22 -> 21 ; "matrix_of_person3" -> "matrix_of_person2" ;
21 [label="21: Constructor Init \n n$0=*&this:class Z * [line 27]\n n$1=*&__param_0:class Z & [line 27]\n n$2=*n$1.b:int [line 27]\n *n$0.b:int =n$2 [line 27]\n " shape="box"] "matrix_of_person2" [label="2: Exit matrix_of_person \n " color=yellow style=filled]
21 -> 20 ; "matrix_of_person1" [label="1: Start matrix_of_person\nFormals: \nLocals: arr:class Person [2][2] 0$?%__sil_tmpSIL_materialize_temp__n$1:class Person 0$?%__sil_tmpSIL_materialize_temp__n$2:class Person 0$?%__sil_tmpSIL_materialize_temp__n$3:class Person 0$?%__sil_tmpSIL_materialize_temp__n$4:class Person \n DECLARE_LOCALS(&return,&arr,&0$?%__sil_tmpSIL_materialize_temp__n$1,&0$?%__sil_tmpSIL_materialize_temp__n$2,&0$?%__sil_tmpSIL_materialize_temp__n$3,&0$?%__sil_tmpSIL_materialize_temp__n$4); [line 22]\n " color=yellow style=filled]
20 [label="20: Exit Z_Z \n " color=yellow style=filled]
19 [label="19: Start Z_Z\nFormals: this:class Z * __param_0:class Z &\nLocals: \n DECLARE_LOCALS(&return); [line 27]\n " color=yellow style=filled] "matrix_of_person1" -> "matrix_of_person4" ;
"Person_Person3" [label="3: Constructor Init \n n$0=*&this:class Person * [line 10]\n n$1=*&__param_0:class Person & [line 10]\n n$2=*n$1.x:int [line 10]\n *n$0.x:int =n$2 [line 10]\n " shape="box"]
19 -> 22 ; "Person_Person3" -> "Person_Person2" ;
18 [label="18: Exit Z_Z \n " color=yellow style=filled] "Person_Person2" [label="2: Exit Person_Person \n " color=yellow style=filled]
17 [label="17: Start Z_Z\nFormals: this:class Z *\nLocals: \n DECLARE_LOCALS(&return); [line 27]\n " color=yellow style=filled] "Person_Person1" [label="1: Start Person_Person\nFormals: this:class Person * __param_0:class Person &\nLocals: \n DECLARE_LOCALS(&return); [line 10]\n " color=yellow style=filled]
17 -> 18 ; "Person_Person1" -> "Person_Person3" ;
16 [label="16: DeclStmt \n _fun_Person_Person(&0$?%__sil_tmpSIL_materialize_temp__n$4:class Person *) [line 23]\n _fun_Person_Person(&arr[0][0]:class Person *,&0$?%__sil_tmpSIL_materialize_temp__n$4:class Person &) [line 23]\n _fun_Person_Person(&0$?%__sil_tmpSIL_materialize_temp__n$3:class Person *) [line 23]\n _fun_Person_Person(&arr[0][1]:class Person *,&0$?%__sil_tmpSIL_materialize_temp__n$3:class Person &) [line 23]\n _fun_Person_Person(&0$?%__sil_tmpSIL_materialize_temp__n$2:class Person *) [line 23]\n _fun_Person_Person(&arr[1][0]:class Person *,&0$?%__sil_tmpSIL_materialize_temp__n$2:class Person &) [line 23]\n _fun_Person_Person(&0$?%__sil_tmpSIL_materialize_temp__n$1:class Person *) [line 23]\n _fun_Person_Person(&arr[1][1]:class Person *,&0$?%__sil_tmpSIL_materialize_temp__n$1:class Person &) [line 23]\n " shape="box"] "Person_Person3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class Person * [line 12]\n n$1=*&i:int [line 12]\n *n$0.x:int =n$1 [line 12]\n " shape="box"]
16 -> 15 ; "Person_Person3" -> "Person_Person2" ;
15 [label="15: Return Stmt \n n$0=*&arr[0][1].x:int [line 24]\n *&return:int =n$0 [line 24]\n " shape="box"] "Person_Person2" [label="2: Exit Person_Person \n " color=yellow style=filled]
15 -> 14 ; "Person_Person1" [label="1: Start Person_Person\nFormals: this:class Person * i:int \nLocals: \n DECLARE_LOCALS(&return); [line 12]\n " color=yellow style=filled]
14 [label="14: Exit matrix_of_person \n " color=yellow style=filled]
13 [label="13: Start matrix_of_person\nFormals: \nLocals: arr:class Person [2][2] 0$?%__sil_tmpSIL_materialize_temp__n$1:class Person 0$?%__sil_tmpSIL_materialize_temp__n$2:class Person 0$?%__sil_tmpSIL_materialize_temp__n$3:class Person 0$?%__sil_tmpSIL_materialize_temp__n$4:class Person \n DECLARE_LOCALS(&return,&arr,&0$?%__sil_tmpSIL_materialize_temp__n$1,&0$?%__sil_tmpSIL_materialize_temp__n$2,&0$?%__sil_tmpSIL_materialize_temp__n$3,&0$?%__sil_tmpSIL_materialize_temp__n$4); [line 22]\n " color=yellow style=filled] "Person_Person1" -> "Person_Person3" ;
"Z_Z4" [label="4: Constructor Init \n n$3=*&this:class Z * [line 27]\n n$4=*&__param_0:class Z & [line 27]\n n$5=*n$4.a:int [line 27]\n *n$3.a:int =n$5 [line 27]\n " shape="box"]
13 -> 16 ; "Z_Z4" -> "Z_Z3" ;
12 [label="12: DeclStmt \n _fun_Person_Person(&0$?%__sil_tmpSIL_materialize_temp__n$3:class Person *) [line 18]\n _fun_Person_Person(&arr[0]:class Person *,&0$?%__sil_tmpSIL_materialize_temp__n$3:class Person &) [line 18]\n _fun_Person_Person(&0$?%__sil_tmpSIL_materialize_temp__n$2:class Person *) [line 18]\n _fun_Person_Person(&arr[1]:class Person *,&0$?%__sil_tmpSIL_materialize_temp__n$2:class Person &) [line 18]\n _fun_Person_Person(&0$?%__sil_tmpSIL_materialize_temp__n$1:class Person *) [line 18]\n _fun_Person_Person(&arr[2]:class Person *,&0$?%__sil_tmpSIL_materialize_temp__n$1:class Person &) [line 18]\n " shape="box"] "Z_Z3" [label="3: Constructor Init \n n$0=*&this:class Z * [line 27]\n n$1=*&__param_0:class Z & [line 27]\n n$2=*n$1.b:int [line 27]\n *n$0.b:int =n$2 [line 27]\n " shape="box"]
12 -> 11 ; "Z_Z3" -> "Z_Z2" ;
11 [label="11: Return Stmt \n n$0=*&arr[0].x:int [line 19]\n *&return:int =n$0 [line 19]\n " shape="box"] "Z_Z2" [label="2: Exit Z_Z \n " color=yellow style=filled]
11 -> 10 ; "Z_Z1" [label="1: Start Z_Z\nFormals: this:class Z * __param_0:class Z &\nLocals: \n DECLARE_LOCALS(&return); [line 27]\n " color=yellow style=filled]
10 [label="10: Exit array_of_person \n " color=yellow style=filled]
9 [label="9: Start array_of_person\nFormals: \nLocals: arr:class Person [10] 0$?%__sil_tmpSIL_materialize_temp__n$1:class Person 0$?%__sil_tmpSIL_materialize_temp__n$2:class Person 0$?%__sil_tmpSIL_materialize_temp__n$3:class Person \n DECLARE_LOCALS(&return,&arr,&0$?%__sil_tmpSIL_materialize_temp__n$1,&0$?%__sil_tmpSIL_materialize_temp__n$2,&0$?%__sil_tmpSIL_materialize_temp__n$3); [line 17]\n " color=yellow style=filled] "Z_Z1" -> "Z_Z4" ;
"initialization_c_style4" [label="4: DeclStmt \n *&z[0].a:int =1 [line 33]\n *&z[0].b:int =2 [line 33]\n *&z[1].a:int =2 [line 33]\n *&z[1].b:int =3 [line 33]\n " shape="box"]
9 -> 12 ; "initialization_c_style4" -> "initialization_c_style3" ;
8 [label="8: Constructor Init \n n$0=*&this:class Person * [line 10]\n n$1=*&__param_0:class Person & [line 10]\n n$2=*n$1.x:int [line 10]\n *n$0.x:int =n$2 [line 10]\n " shape="box"] "initialization_c_style3" [label="3: DeclStmt \n _fun_Z_Z(&z2:class Z *) [line 34]\n " shape="box"]
8 -> 7 ; "initialization_c_style3" -> "initialization_c_style2" ;
7 [label="7: Exit Person_Person \n " color=yellow style=filled] "initialization_c_style2" [label="2: Exit initialization_c_style \n " color=yellow style=filled]
6 [label="6: Start Person_Person\nFormals: this:class Person * __param_0:class Person &\nLocals: \n DECLARE_LOCALS(&return); [line 10]\n " color=yellow style=filled] "initialization_c_style1" [label="1: Start initialization_c_style\nFormals: \nLocals: z2:class Z z:class Z [2] \n DECLARE_LOCALS(&return,&z2,&z); [line 32]\n " color=yellow style=filled]
6 -> 8 ; "initialization_c_style1" -> "initialization_c_style4" ;
5 [label="5: Exit Person_Person \n " color=yellow style=filled] "initialization_mixed_styles_not_handled_correctly5" [label="5: DeclStmt \n _fun_Z_Z(&old:class Z *) [line 40]\n " shape="box"]
4 [label="4: Start Person_Person\nFormals: this:class Person *\nLocals: \n DECLARE_LOCALS(&return); [line 13]\n " color=yellow style=filled] "initialization_mixed_styles_not_handled_correctly5" -> "initialization_mixed_styles_not_handled_correctly4" ;
"initialization_mixed_styles_not_handled_correctly4" [label="4: DeclStmt \n _fun_Z_Z(&z[1]:class Z *,&old:class Z &) [line 41]\n " shape="box"]
4 -> 5 ; "initialization_mixed_styles_not_handled_correctly4" -> "initialization_mixed_styles_not_handled_correctly3" ;
3 [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class Person * [line 12]\n n$1=*&i:int [line 12]\n *n$0.x:int =n$1 [line 12]\n " shape="box"] "initialization_mixed_styles_not_handled_correctly3" [label="3: DeclStmt \n _fun_Z_Z(&z2:class Z *) [line 42]\n " shape="box"]
3 -> 2 ; "initialization_mixed_styles_not_handled_correctly3" -> "initialization_mixed_styles_not_handled_correctly2" ;
2 [label="2: Exit Person_Person \n " color=yellow style=filled] "initialization_mixed_styles_not_handled_correctly2" [label="2: Exit initialization_mixed_styles_not_handled_correctly \n " color=yellow style=filled]
1 [label="1: Start Person_Person\nFormals: this:class Person * i:int \nLocals: \n DECLARE_LOCALS(&return); [line 12]\n " color=yellow style=filled] "initialization_mixed_styles_not_handled_correctly1" [label="1: Start initialization_mixed_styles_not_handled_correctly\nFormals: \nLocals: z2:class Z z:class Z [2] old:class Z \n DECLARE_LOCALS(&return,&z2,&z,&old); [line 39]\n " color=yellow style=filled]
1 -> 3 ; "initialization_mixed_styles_not_handled_correctly1" -> "initialization_mixed_styles_not_handled_correctly5" ;
} }

@ -1,44 +1,44 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
11 [label="11: DeclStmt \n _fun_X_X(&x1:class X *,0:int ,0:int ) [line 21]\n " shape="box"] "X_div3" [label="3: Return Stmt \n n$0=*&this:class X * [line 15]\n n$1=*n$0.f:int [line 15]\n *&return:int =(1 / n$1) [line 15]\n " shape="box"]
11 -> 10 ; "X_div3" -> "X_div2" ;
10 [label="10: DeclStmt \n _fun_X_X(&x2:class X *,1:int ,0:int ) [line 22]\n " shape="box"] "X_div2" [label="2: Exit X_div \n " color=yellow style=filled]
10 -> 9 ; "X_div1" [label="1: Start X_div\nFormals: this:class X *\nLocals: \n DECLARE_LOCALS(&return); [line 15]\n " color=yellow style=filled]
9 [label="9: DeclStmt \n _fun_X_X(&x3:class X *,0:int ,1:int ) [line 23]\n " shape="box"]
9 -> 8 ; "X_div1" -> "X_div3" ;
8 [label="8: Exit test \n " color=yellow style=filled] "test5" [label="5: DeclStmt \n _fun_X_X(&x1:class X *,0:int ,0:int ) [line 21]\n " shape="box"]
7 [label="7: Start test\nFormals: \nLocals: x3:class X x2:class X x1:class X \n DECLARE_LOCALS(&return,&x3,&x2,&x1); [line 20]\n " color=yellow style=filled] "test5" -> "test4" ;
"test4" [label="4: DeclStmt \n _fun_X_X(&x2:class X *,1:int ,0:int ) [line 22]\n " shape="box"]
7 -> 11 ; "test4" -> "test3" ;
6 [label="6: BinaryOperatorStmt: Assign \n n$0=*&this:class X * [line 18]\n n$1=*&a:int [line 18]\n n$2=*&b:int [line 18]\n *n$0.f:int =(n$1 + n$2) [line 18]\n " shape="box"] "test3" [label="3: DeclStmt \n _fun_X_X(&x3:class X *,0:int ,1:int ) [line 23]\n " shape="box"]
6 -> 5 ; "test3" -> "test2" ;
5 [label="5: Exit X_X \n " color=yellow style=filled] "test2" [label="2: Exit test \n " color=yellow style=filled]
4 [label="4: Start X_X\nFormals: this:class X * a:int b:int \nLocals: \n DECLARE_LOCALS(&return); [line 18]\n " color=yellow style=filled] "test1" [label="1: Start test\nFormals: \nLocals: x3:class X x2:class X x1:class X \n DECLARE_LOCALS(&return,&x3,&x2,&x1); [line 20]\n " color=yellow style=filled]
4 -> 6 ; "test1" -> "test5" ;
3 [label="3: Return Stmt \n n$0=*&this:class X * [line 15]\n n$1=*n$0.f:int [line 15]\n *&return:int =(1 / n$1) [line 15]\n " shape="box"] "X_X3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class X * [line 18]\n n$1=*&a:int [line 18]\n n$2=*&b:int [line 18]\n *n$0.f:int =(n$1 + n$2) [line 18]\n " shape="box"]
3 -> 2 ; "X_X3" -> "X_X2" ;
2 [label="2: Exit X_div \n " color=yellow style=filled] "X_X2" [label="2: Exit X_X \n " color=yellow style=filled]
1 [label="1: Start X_div\nFormals: this:class X *\nLocals: \n DECLARE_LOCALS(&return); [line 15]\n " color=yellow style=filled] "X_X1" [label="1: Start X_X\nFormals: this:class X * a:int b:int \nLocals: \n DECLARE_LOCALS(&return); [line 18]\n " color=yellow style=filled]
1 -> 3 ; "X_X1" -> "X_X3" ;
} }

@ -1,169 +1,169 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
44 [label="44: DeclStmt \n _fun_B_B(&b:class B *,1:int ) [line 55]\n " shape="box"] "f_div04" [label="4: DeclStmt \n _fun_B_B(&b:class B *,0:int ) [line 33]\n " shape="box"]
44 -> 43 ; "f_div04" -> "f_div03" ;
43 [label="43: DeclStmt \n n$4=*&b.f:int [line 56]\n *&v:int =(1 / n$4) [line 56]\n " shape="box"] "f_div03" [label="3: Return Stmt \n n$0=*&b.f:int [line 34]\n *&return:int =(1 / n$0) [line 34]\n " shape="box"]
43 -> 42 ; "f_div03" -> "f_div02" ;
42 [label="42: DeclStmt \n n$3=*&b.f2:int [line 57]\n *&v2:int =(1 / n$3) [line 57]\n " shape="box"] "f_div02" [label="2: Exit f_div0 \n " color=yellow style=filled]
42 -> 41 ; "f_div01" [label="1: Start f_div0\nFormals: \nLocals: b:class B \n DECLARE_LOCALS(&return,&b); [line 32]\n " color=yellow style=filled]
41 [label="41: DeclStmt \n n$2=*&b.t.v:int [line 58]\n *&v3:int =(1 / n$2) [line 58]\n " shape="box"]
41 -> 40 ; "f_div01" -> "f_div04" ;
40 [label="40: Return Stmt \n n$0=*&v:int [line 59]\n n$1=*&v2:int [line 59]\n *&return:int =(n$0 + n$1) [line 59]\n " shape="box"] "delegate_constr_f2_div05" [label="5: DeclStmt \n _fun_B_B(&b:class B *,-1:int ,0:int ) [line 49]\n " shape="box"]
40 -> 39 ; "delegate_constr_f2_div05" -> "delegate_constr_f2_div04" ;
39 [label="39: Exit f_f2_div1 \n " color=yellow style=filled] "delegate_constr_f2_div04" [label="4: DeclStmt \n n$1=*&b.f:int [line 50]\n *&v:int =(1 / n$1) [line 50]\n " shape="box"]
38 [label="38: Start f_f2_div1\nFormals: \nLocals: v3:int v2:int v:int b:class B \n DECLARE_LOCALS(&return,&v3,&v2,&v,&b); [line 54]\n " color=yellow style=filled] "delegate_constr_f2_div04" -> "delegate_constr_f2_div03" ;
"delegate_constr_f2_div03" [label="3: Return Stmt \n n$0=*&b.f2:int [line 51]\n *&return:int =(1 / n$0) [line 51]\n " shape="box"]
38 -> 44 ; "delegate_constr_f2_div03" -> "delegate_constr_f2_div02" ;
37 [label="37: DeclStmt \n _fun_B_B(&b:class B *,-1:int ,0:int ) [line 49]\n " shape="box"] "delegate_constr_f2_div02" [label="2: Exit delegate_constr_f2_div0 \n " color=yellow style=filled]
37 -> 36 ; "delegate_constr_f2_div01" [label="1: Start delegate_constr_f2_div0\nFormals: \nLocals: v:int b:class B \n DECLARE_LOCALS(&return,&v,&b); [line 48]\n " color=yellow style=filled]
36 [label="36: DeclStmt \n n$1=*&b.f:int [line 50]\n *&v:int =(1 / n$1) [line 50]\n " shape="box"]
36 -> 35 ; "delegate_constr_f2_div01" -> "delegate_constr_f2_div05" ;
35 [label="35: Return Stmt \n n$0=*&b.f2:int [line 51]\n *&return:int =(1 / n$0) [line 51]\n " shape="box"] "B_B4" [label="4: Constructor Init \n n$2=*&this:class B * [line 24]\n n$3=*&a:int [line 24]\n n$4=*&b:int [line 24]\n _fun_B_B(n$2:class B *,(n$3 + n$4):int ) [line 24]\n " shape="box"]
35 -> 34 ; "B_B4" -> "B_B3" ;
34 [label="34: Exit delegate_constr_f2_div0 \n " color=yellow style=filled] "B_B3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class B * [line 24]\n n$1=*&b:int [line 24]\n *n$0.f2:int =n$1 [line 24]\n " shape="box"]
33 [label="33: Start delegate_constr_f2_div0\nFormals: \nLocals: v:int b:class B \n DECLARE_LOCALS(&return,&v,&b); [line 48]\n " color=yellow style=filled] "B_B3" -> "B_B2" ;
"B_B2" [label="2: Exit B_B \n " color=yellow style=filled]
33 -> 37 ; "B_B1" [label="1: Start B_B\nFormals: this:class B * a:int b:int \nLocals: \n DECLARE_LOCALS(&return); [line 24]\n " color=yellow style=filled]
32 [label="32: DeclStmt \n _fun_B_B(&b:class B *,-1:int ,1:int ) [line 43]\n " shape="box"]
32 -> 31 ; "B_B1" -> "B_B4" ;
31 [label="31: DeclStmt \n n$1=*&b.f2:int [line 44]\n *&v:int =(1 / n$1) [line 44]\n " shape="box"] "A_A3" [label="3: Constructor Init \n n$0=*&this:class A * [line 12]\n n$1=*&f:int [line 12]\n *n$0.f:int =n$1 [line 12]\n " shape="box"]
31 -> 30 ; "A_A3" -> "A_A2" ;
30 [label="30: Return Stmt \n n$0=*&b.f:int [line 45]\n *&return:int =(1 / n$0) [line 45]\n " shape="box"] "A_A2" [label="2: Exit A_A \n " color=yellow style=filled]
30 -> 29 ; "A_A1" [label="1: Start A_A\nFormals: this:class A * f:int \nLocals: \n DECLARE_LOCALS(&return); [line 12]\n " color=yellow style=filled]
29 [label="29: Exit delegate_constr_f_div0 \n " color=yellow style=filled]
28 [label="28: Start delegate_constr_f_div0\nFormals: \nLocals: v:int b:class B \n DECLARE_LOCALS(&return,&v,&b); [line 42]\n " color=yellow style=filled] "A_A1" -> "A_A3" ;
"f_f2_div17" [label="7: DeclStmt \n _fun_B_B(&b:class B *,1:int ) [line 55]\n " shape="box"]
28 -> 32 ; "f_f2_div17" -> "f_f2_div16" ;
27 [label="27: DeclStmt \n _fun_B_B(&b:class B *,0:int ) [line 38]\n " shape="box"] "f_f2_div16" [label="6: DeclStmt \n n$4=*&b.f:int [line 56]\n *&v:int =(1 / n$4) [line 56]\n " shape="box"]
27 -> 26 ; "f_f2_div16" -> "f_f2_div15" ;
26 [label="26: Return Stmt \n n$0=*&b.t.v:int [line 39]\n *&return:int =(1 / n$0) [line 39]\n " shape="box"] "f_f2_div15" [label="5: DeclStmt \n n$3=*&b.f2:int [line 57]\n *&v2:int =(1 / n$3) [line 57]\n " shape="box"]
26 -> 25 ; "f_f2_div15" -> "f_f2_div14" ;
25 [label="25: Exit t_div0 \n " color=yellow style=filled] "f_f2_div14" [label="4: DeclStmt \n n$2=*&b.t.v:int [line 58]\n *&v3:int =(1 / n$2) [line 58]\n " shape="box"]
24 [label="24: Start t_div0\nFormals: \nLocals: b:class B \n DECLARE_LOCALS(&return,&b); [line 37]\n " color=yellow style=filled] "f_f2_div14" -> "f_f2_div13" ;
"f_f2_div13" [label="3: Return Stmt \n n$0=*&v:int [line 59]\n n$1=*&v2:int [line 59]\n *&return:int =(n$0 + n$1) [line 59]\n " shape="box"]
24 -> 27 ; "f_f2_div13" -> "f_f2_div12" ;
23 [label="23: DeclStmt \n _fun_B_B(&b:class B *,0:int ) [line 33]\n " shape="box"] "f_f2_div12" [label="2: Exit f_f2_div1 \n " color=yellow style=filled]
23 -> 22 ; "f_f2_div11" [label="1: Start f_f2_div1\nFormals: \nLocals: v3:int v2:int v:int b:class B \n DECLARE_LOCALS(&return,&v3,&v2,&v,&b); [line 54]\n " color=yellow style=filled]
22 [label="22: Return Stmt \n n$0=*&b.f:int [line 34]\n *&return:int =(1 / n$0) [line 34]\n " shape="box"]
22 -> 21 ; "f_f2_div11" -> "f_f2_div17" ;
21 [label="21: Exit f_div0 \n " color=yellow style=filled] "t_div04" [label="4: DeclStmt \n _fun_B_B(&b:class B *,0:int ) [line 38]\n " shape="box"]
20 [label="20: Start f_div0\nFormals: \nLocals: b:class B \n DECLARE_LOCALS(&return,&b); [line 32]\n " color=yellow style=filled] "t_div04" -> "t_div03" ;
"t_div03" [label="3: Return Stmt \n n$0=*&b.t.v:int [line 39]\n *&return:int =(1 / n$0) [line 39]\n " shape="box"]
20 -> 23 ; "t_div03" -> "t_div02" ;
19 [label="19: DeclStmt \n _fun_B_B(&b:class B *,0:int ) [line 28]\n " shape="box"] "t_div02" [label="2: Exit t_div0 \n " color=yellow style=filled]
19 -> 18 ; "t_div01" [label="1: Start t_div0\nFormals: \nLocals: b:class B \n DECLARE_LOCALS(&return,&b); [line 37]\n " color=yellow style=filled]
18 [label="18: Return Stmt \n n$0=*&b.f2:int [line 29]\n *&return:int =(1 / n$0) [line 29]\n " shape="box"]
18 -> 17 ; "t_div01" -> "t_div04" ;
17 [label="17: Exit f2_div0 \n " color=yellow style=filled] "B::T_T3" [label="3: Constructor Init \n n$0=*&this:class B::T * [line 18]\n n$1=*&v:int [line 18]\n *n$0.v:int =n$1 [line 18]\n " shape="box"]
16 [label="16: Start f2_div0\nFormals: \nLocals: b:class B \n DECLARE_LOCALS(&return,&b); [line 27]\n " color=yellow style=filled] "B::T_T3" -> "B::T_T2" ;
"B::T_T2" [label="2: Exit B::T_T \n " color=yellow style=filled]
16 -> 19 ; "B::T_T1" [label="1: Start B::T_T\nFormals: this:class B::T * v:int \nLocals: \n DECLARE_LOCALS(&return); [line 18]\n " color=yellow style=filled]
15 [label="15: Constructor Init \n n$2=*&this:class B * [line 24]\n n$3=*&a:int [line 24]\n n$4=*&b:int [line 24]\n _fun_B_B(n$2:class B *,(n$3 + n$4):int ) [line 24]\n " shape="box"]
15 -> 14 ; "B::T_T1" -> "B::T_T3" ;
14 [label="14: BinaryOperatorStmt: Assign \n n$0=*&this:class B * [line 24]\n n$1=*&b:int [line 24]\n *n$0.f2:int =n$1 [line 24]\n " shape="box"] "f2_div04" [label="4: DeclStmt \n _fun_B_B(&b:class B *,0:int ) [line 28]\n " shape="box"]
14 -> 13 ; "f2_div04" -> "f2_div03" ;
13 [label="13: Exit B_B \n " color=yellow style=filled] "f2_div03" [label="3: Return Stmt \n n$0=*&b.f2:int [line 29]\n *&return:int =(1 / n$0) [line 29]\n " shape="box"]
12 [label="12: Start B_B\nFormals: this:class B * a:int b:int \nLocals: \n DECLARE_LOCALS(&return); [line 24]\n " color=yellow style=filled] "f2_div03" -> "f2_div02" ;
"f2_div02" [label="2: Exit f2_div0 \n " color=yellow style=filled]
12 -> 15 ; "f2_div01" [label="1: Start f2_div0\nFormals: \nLocals: b:class B \n DECLARE_LOCALS(&return,&b); [line 27]\n " color=yellow style=filled]
11 [label="11: Constructor Init \n n$4=*&this:class B * [line 22]\n n$5=*&a:int [line 22]\n _fun_A_A(n$4:class B *,n$5:int ) [line 22]\n " shape="box"]
11 -> 10 ; "f2_div01" -> "f2_div04" ;
10 [label="10: Constructor Init \n n$2=*&this:class B * [line 22]\n n$3=*&a:int [line 22]\n *n$2.f2:int =n$3 [line 22]\n " shape="box"] "delegate_constr_f_div05" [label="5: DeclStmt \n _fun_B_B(&b:class B *,-1:int ,1:int ) [line 43]\n " shape="box"]
10 -> 9 ; "delegate_constr_f_div05" -> "delegate_constr_f_div04" ;
9 [label="9: Constructor Init \n n$0=*&this:class B * [line 22]\n n$1=*&a:int [line 22]\n _fun_B::T_T(n$0.t:class B::T *,n$1:int ) [line 22]\n " shape="box"] "delegate_constr_f_div04" [label="4: DeclStmt \n n$1=*&b.f2:int [line 44]\n *&v:int =(1 / n$1) [line 44]\n " shape="box"]
9 -> 8 ; "delegate_constr_f_div04" -> "delegate_constr_f_div03" ;
8 [label="8: Exit B_B \n " color=yellow style=filled] "delegate_constr_f_div03" [label="3: Return Stmt \n n$0=*&b.f:int [line 45]\n *&return:int =(1 / n$0) [line 45]\n " shape="box"]
7 [label="7: Start B_B\nFormals: this:class B * a:int \nLocals: \n DECLARE_LOCALS(&return); [line 22]\n " color=yellow style=filled] "delegate_constr_f_div03" -> "delegate_constr_f_div02" ;
"delegate_constr_f_div02" [label="2: Exit delegate_constr_f_div0 \n " color=yellow style=filled]
7 -> 11 ; "delegate_constr_f_div01" [label="1: Start delegate_constr_f_div0\nFormals: \nLocals: v:int b:class B \n DECLARE_LOCALS(&return,&v,&b); [line 42]\n " color=yellow style=filled]
6 [label="6: Constructor Init \n n$0=*&this:class B::T * [line 18]\n n$1=*&v:int [line 18]\n *n$0.v:int =n$1 [line 18]\n " shape="box"]
6 -> 5 ; "delegate_constr_f_div01" -> "delegate_constr_f_div05" ;
5 [label="5: Exit B::T_T \n " color=yellow style=filled] "B_B5" [label="5: Constructor Init \n n$4=*&this:class B * [line 22]\n n$5=*&a:int [line 22]\n _fun_A_A(n$4:class B *,n$5:int ) [line 22]\n " shape="box"]
4 [label="4: Start B::T_T\nFormals: this:class B::T * v:int \nLocals: \n DECLARE_LOCALS(&return); [line 18]\n " color=yellow style=filled] "B_B5" -> "B_B4" ;
"B_B4" [label="4: Constructor Init \n n$2=*&this:class B * [line 22]\n n$3=*&a:int [line 22]\n *n$2.f2:int =n$3 [line 22]\n " shape="box"]
4 -> 6 ; "B_B4" -> "B_B3" ;
3 [label="3: Constructor Init \n n$0=*&this:class A * [line 12]\n n$1=*&f:int [line 12]\n *n$0.f:int =n$1 [line 12]\n " shape="box"] "B_B3" [label="3: Constructor Init \n n$0=*&this:class B * [line 22]\n n$1=*&a:int [line 22]\n _fun_B::T_T(n$0.t:class B::T *,n$1:int ) [line 22]\n " shape="box"]
3 -> 2 ; "B_B3" -> "B_B2" ;
2 [label="2: Exit A_A \n " color=yellow style=filled] "B_B2" [label="2: Exit B_B \n " color=yellow style=filled]
1 [label="1: Start A_A\nFormals: this:class A * f:int \nLocals: \n DECLARE_LOCALS(&return); [line 12]\n " color=yellow style=filled] "B_B1" [label="1: Start B_B\nFormals: this:class B * a:int \nLocals: \n DECLARE_LOCALS(&return); [line 22]\n " color=yellow style=filled]
1 -> 3 ; "B_B1" -> "B_B5" ;
} }

@ -1,377 +1,377 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
97 [label="97: DeclStmt \n n$2=_fun___new_array((sizeof(class constructor_new::Person *) * 10):unsigned long ) [line 99]\n *&tarray:class constructor_new::Person **=n$2 [line 99]\n " shape="box"] "constructor_new::Person_Person5" [label="5: BinaryOperatorStmt: Assign \n n$4=*&this:class constructor_new::Person * [line 18]\n n$5=*&i:int [line 18]\n *n$4.x:int =n$5 [line 18]\n " shape="box"]
97 -> 96 ; "constructor_new::Person_Person5" -> "constructor_new::Person_Person4" ;
96 [label="96: BinaryOperatorStmt: Assign \n n$0=*&tarray:class constructor_new::Person ** [line 100]\n n$1=_fun___new_array((sizeof(class constructor_new::Person ) * 10):unsigned long ) [line 100]\n _fun_constructor_new::Person_Person(n$1[0]:class constructor_new::Person *) [line 100]\n _fun_constructor_new::Person_Person(n$1[1]:class constructor_new::Person *) [line 100]\n _fun_constructor_new::Person_Person(n$1[2]:class constructor_new::Person *) [line 100]\n _fun_constructor_new::Person_Person(n$1[3]:class constructor_new::Person *) [line 100]\n _fun_constructor_new::Person_Person(n$1[4]:class constructor_new::Person *) [line 100]\n _fun_constructor_new::Person_Person(n$1[5]:class constructor_new::Person *) [line 100]\n _fun_constructor_new::Person_Person(n$1[6]:class constructor_new::Person *) [line 100]\n _fun_constructor_new::Person_Person(n$1[7]:class constructor_new::Person *) [line 100]\n _fun_constructor_new::Person_Person(n$1[8]:class constructor_new::Person *) [line 100]\n _fun_constructor_new::Person_Person(n$1[9]:class constructor_new::Person *) [line 100]\n *n$0[0]:class constructor_new::Person *=n$1 [line 100]\n " shape="box"] "constructor_new::Person_Person4" [label="4: BinaryOperatorStmt: Assign \n n$2=*&this:class constructor_new::Person * [line 19]\n n$3=*&j:int [line 19]\n *n$2.y:int =n$3 [line 19]\n " shape="box"]
96 -> 95 ; "constructor_new::Person_Person4" -> "constructor_new::Person_Person3" ;
95 [label="95: Exit constructor_new::matrix_of_person \n " color=yellow style=filled] "constructor_new::Person_Person3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class constructor_new::Person * [line 20]\n n$1=*&k:int [line 20]\n *n$0.z:int =n$1 [line 20]\n " shape="box"]
94 [label="94: Start constructor_new::matrix_of_person\nFormals: \nLocals: tarray:class constructor_new::Person ** \n DECLARE_LOCALS(&return,&tarray); [line 98]\n " color=yellow style=filled] "constructor_new::Person_Person3" -> "constructor_new::Person_Person2" ;
"constructor_new::Person_Person2" [label="2: Exit constructor_new::Person_Person \n " color=yellow style=filled]
94 -> 97 ; "constructor_new::Person_Person1" [label="1: Start constructor_new::Person_Person\nFormals: this:class constructor_new::Person * i:int j:int k:int \nLocals: \n DECLARE_LOCALS(&return); [line 17]\n " color=yellow style=filled]
93 [label="93: DeclStmt \n n$0=_fun___new_array((sizeof(class constructor_new::Person ) * 10):unsigned long ) [line 95]\n _fun_constructor_new::Person_Person(n$0[0]:class constructor_new::Person *) [line 95]\n _fun_constructor_new::Person_Person(n$0[1]:class constructor_new::Person *) [line 95]\n _fun_constructor_new::Person_Person(n$0[2]:class constructor_new::Person *) [line 95]\n _fun_constructor_new::Person_Person(n$0[3]:class constructor_new::Person *) [line 95]\n _fun_constructor_new::Person_Person(n$0[4]:class constructor_new::Person *) [line 95]\n _fun_constructor_new::Person_Person(n$0[5]:class constructor_new::Person *) [line 95]\n _fun_constructor_new::Person_Person(n$0[6]:class constructor_new::Person *) [line 95]\n _fun_constructor_new::Person_Person(n$0[7]:class constructor_new::Person *) [line 95]\n _fun_constructor_new::Person_Person(n$0[8]:class constructor_new::Person *) [line 95]\n _fun_constructor_new::Person_Person(n$0[9]:class constructor_new::Person *) [line 95]\n *&tarray:class constructor_new::Person *=n$0 [line 95]\n " shape="box"]
93 -> 92 ; "constructor_new::Person_Person1" -> "constructor_new::Person_Person5" ;
92 [label="92: Exit constructor_new::array_of_person_with_constant_size \n " color=yellow style=filled] "constructor_new::int_init_number4" [label="4: DeclStmt \n n$2=_fun___new(sizeof(int ):unsigned long ) [line 40]\n *n$2:int =5 [line 40]\n *&x1:int *=n$2 [line 40]\n " shape="box"]
91 [label="91: Start constructor_new::array_of_person_with_constant_size\nFormals: \nLocals: tarray:class constructor_new::Person * \n DECLARE_LOCALS(&return,&tarray); [line 95]\n " color=yellow style=filled] "constructor_new::int_init_number4" -> "constructor_new::int_init_number3" ;
"constructor_new::int_init_number3" [label="3: Return Stmt \n n$0=*&x1:int * [line 41]\n n$1=*n$0:int [line 41]\n *&return:int =(1 / (n$1 - 5)) [line 41]\n " shape="box"]
91 -> 93 ; "constructor_new::int_init_number3" -> "constructor_new::int_init_number2" ;
90 [label="90: DeclStmt \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 91]\n n$3=_fun___new_array((sizeof(class constructor_new::Person ) * n$2):unsigned long ) [line 91]\n *&tarray:class constructor_new::Person *=n$3 [line 91]\n " shape="box"] "constructor_new::int_init_number2" [label="2: Exit constructor_new::int_init_number \n " color=yellow style=filled]
90 -> 83 ; "constructor_new::int_init_number1" [label="1: Start constructor_new::int_init_number\nFormals: \nLocals: x1:int * \n DECLARE_LOCALS(&return,&x1); [line 39]\n " color=yellow style=filled]
89 [label="89: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =3 [line 91]\n " shape="box"]
89 -> 84 ; "constructor_new::int_init_number1" -> "constructor_new::int_init_number4" ;
88 [label="88: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =5 [line 91]\n " shape="box"] "constructor_new::constructor_1_arg_new_div04" [label="4: DeclStmt \n n$2=_fun___new(sizeof(class constructor_new::Person ):unsigned long ) [line 30]\n _fun_constructor_new::Person_Person(n$2:class constructor_new::Person *,5:int ) [line 30]\n *&p:class constructor_new::Person *=n$2 [line 30]\n " shape="box"]
88 -> 84 ; "constructor_new::constructor_1_arg_new_div04" -> "constructor_new::constructor_1_arg_new_div03" ;
87 [label="87: Prune (false branch) \n PRUNE(((n$1 == 5) == 0), false); [line 91]\n " shape="invhouse"] "constructor_new::constructor_1_arg_new_div03" [label="3: Return Stmt \n n$0=*&p:class constructor_new::Person * [line 31]\n n$1=*n$0.x:int [line 31]\n *&return:int =(1 / (n$1 - 5)) [line 31]\n " shape="box"]
87 -> 89 ; "constructor_new::constructor_1_arg_new_div03" -> "constructor_new::constructor_1_arg_new_div02" ;
86 [label="86: Prune (true branch) \n PRUNE(((n$1 == 5) != 0), true); [line 91]\n " shape="invhouse"] "constructor_new::constructor_1_arg_new_div02" [label="2: Exit constructor_new::constructor_1_arg_new_div0 \n " color=yellow style=filled]
86 -> 88 ; "constructor_new::constructor_1_arg_new_div01" [label="1: Start constructor_new::constructor_1_arg_new_div0\nFormals: \nLocals: p:class constructor_new::Person * \n DECLARE_LOCALS(&return,&p); [line 29]\n " color=yellow style=filled]
85 [label="85: BinaryOperatorStmt: EQ \n n$1=_fun_constructor_new::getValue(5:int ) [line 91]\n " shape="box"]
85 -> 86 ; "constructor_new::constructor_1_arg_new_div01" -> "constructor_new::constructor_1_arg_new_div04" ;
85 -> 87 ; "constructor_new::int_init_nodes12" [label="12: DeclStmt \n *&z:int =6 [line 65]\n " shape="box"]
84 [label="84: + \n " ]
84 -> 90 ; "constructor_new::int_init_nodes12" -> "constructor_new::int_init_nodes11" ;
83 [label="83: Exit constructor_new::array_of_class_with_not_constant_size \n " color=yellow style=filled] "constructor_new::int_init_nodes11" [label="11: DeclStmt \n n$9=_fun___new(sizeof(int ):unsigned long ) [line 66]\n n$10=_fun_constructor_new::getValue(4:int ) [line 66]\n *n$9:int =n$10 [line 66]\n *&y:int *=n$9 [line 66]\n " shape="box"]
82 [label="82: Start constructor_new::array_of_class_with_not_constant_size\nFormals: \nLocals: tarray:class constructor_new::Person * 0$?%__sil_tmpSIL_temp_conditional___n$0:int \n DECLARE_LOCALS(&return,&tarray,&0$?%__sil_tmpSIL_temp_conditional___n$0); [line 90]\n " color=yellow style=filled] "constructor_new::int_init_nodes11" -> "constructor_new::int_init_nodes5" ;
"constructor_new::int_init_nodes10" [label="10: DeclStmt \n n$2=_fun___new(sizeof(int ):unsigned long ) [line 67]\n n$8=*&0$?%__sil_tmpSIL_temp_conditional___n$3:int [line 67]\n *n$2:int =n$8 [line 67]\n *&x:int *=n$2 [line 67]\n " shape="box"]
82 -> 85 ; "constructor_new::int_init_nodes10" -> "constructor_new::int_init_nodes3" ;
81 [label="81: DeclStmt \n n$10=_fun___new_array((sizeof(int ) * 100):unsigned long ) [line 85]\n *n$10[0]:int =1 [line 85]\n *n$10[1]:int =2 [line 85]\n *n$10[2]:int =3 [line 85]\n *n$10[3]:int =4 [line 85]\n *n$10[4]:int =5 [line 85]\n *n$10[5]:int =6 [line 85]\n *n$10[6]:int =7 [line 85]\n *n$10[7]:int =8 [line 85]\n *n$10[8]:int =9 [line 85]\n *n$10[9]:int =10 [line 85]\n *&arr:int *=n$10 [line 85]\n " shape="box"] "constructor_new::int_init_nodes9" [label="9: ConditinalStmt Branch \n n$6=*&y:int * [line 67]\n n$7=*n$6:int [line 67]\n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int =(1 + n$7) [line 67]\n " shape="box"]
81 -> 80 ; "constructor_new::int_init_nodes9" -> "constructor_new::int_init_nodes4" ;
80 [label="80: Return Stmt \n n$0=*&arr:int * [line 86]\n n$1=*n$0[0]:int [line 86]\n n$2=*&arr:int * [line 86]\n n$3=*n$2[1]:int [line 86]\n n$4=*&arr:int * [line 86]\n n$5=*n$4[2]:int [line 86]\n n$6=*&arr:int * [line 86]\n n$7=*n$6[3]:int [line 86]\n n$8=*&arr:int * [line 86]\n n$9=*n$8[4]:int [line 86]\n *&return:int =(1 / (((((n$1 + n$3) + n$5) + n$7) + n$9) - 15)) [line 86]\n " shape="box"] "constructor_new::int_init_nodes8" [label="8: ConditinalStmt Branch \n n$5=_fun_constructor_new::getValue(1:int ) [line 67]\n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int =n$5 [line 67]\n " shape="box"]
80 -> 79 ; "constructor_new::int_init_nodes8" -> "constructor_new::int_init_nodes4" ;
79 [label="79: Exit constructor_new::int_array_init \n " color=yellow style=filled] "constructor_new::int_init_nodes7" [label="7: Prune (false branch) \n PRUNE((n$4 == 0), false); [line 67]\n " shape="invhouse"]
78 [label="78: Start constructor_new::int_array_init\nFormals: \nLocals: arr:int * \n DECLARE_LOCALS(&return,&arr); [line 84]\n " color=yellow style=filled] "constructor_new::int_init_nodes7" -> "constructor_new::int_init_nodes9" ;
"constructor_new::int_init_nodes6" [label="6: Prune (true branch) \n PRUNE((n$4 != 0), true); [line 67]\n " shape="invhouse"]
78 -> 81 ; "constructor_new::int_init_nodes6" -> "constructor_new::int_init_nodes8" ;
77 [label="77: DeclStmt \n n$9=*&0$?%__sil_tmpSIL_temp_conditional___n$6:int [line 78]\n n$10=_fun___new_array((sizeof(int ) * n$9):unsigned long ) [line 78]\n *&x2:int *=n$10 [line 78]\n " shape="box"] "constructor_new::int_init_nodes5" [label="5: Call _fun_constructor_new::getValue \n n$4=_fun_constructor_new::getValue(0:int ) [line 67]\n " shape="box"]
77 -> 70 ; "constructor_new::int_init_nodes5" -> "constructor_new::int_init_nodes6" ;
76 [label="76: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$6:int =3 [line 78]\n " shape="box"] "constructor_new::int_init_nodes5" -> "constructor_new::int_init_nodes7" ;
"constructor_new::int_init_nodes4" [label="4: + \n " ]
76 -> 71 ; "constructor_new::int_init_nodes4" -> "constructor_new::int_init_nodes10" ;
75 [label="75: ConditinalStmt Branch \n n$8=_fun_constructor_new::getValue(5:int ) [line 78]\n *&0$?%__sil_tmpSIL_temp_conditional___n$6:int =n$8 [line 78]\n " shape="box"] "constructor_new::int_init_nodes3" [label="3: Return Stmt \n n$0=*&x:int * [line 68]\n n$1=*n$0:int [line 68]\n *&return:int =(1 / (n$1 - 5)) [line 68]\n " shape="box"]
75 -> 71 ; "constructor_new::int_init_nodes3" -> "constructor_new::int_init_nodes2" ;
74 [label="74: Prune (false branch) \n PRUNE((n$7 == 0), false); [line 78]\n " shape="invhouse"] "constructor_new::int_init_nodes2" [label="2: Exit constructor_new::int_init_nodes \n " color=yellow style=filled]
74 -> 76 ; "constructor_new::int_init_nodes1" [label="1: Start constructor_new::int_init_nodes\nFormals: \nLocals: x:int * 0$?%__sil_tmpSIL_temp_conditional___n$3:int y:int * z:int \n DECLARE_LOCALS(&return,&x,&0$?%__sil_tmpSIL_temp_conditional___n$3,&y,&z); [line 64]\n " color=yellow style=filled]
73 [label="73: Prune (true branch) \n PRUNE((n$7 != 0), true); [line 78]\n " shape="invhouse"]
73 -> 75 ; "constructor_new::int_init_nodes1" -> "constructor_new::int_init_nodes12" ;
72 [label="72: Call _fun_constructor_new::getValue \n n$7=_fun_constructor_new::getValue(5:int ) [line 78]\n " shape="box"] "constructor_new::float_init_number4" [label="4: DeclStmt \n n$2=_fun___new(sizeof(float ):unsigned long ) [line 45]\n *n$2:float =5.400000 [line 45]\n *&x1:float *=n$2 [line 45]\n " shape="box"]
72 -> 73 ; "constructor_new::float_init_number4" -> "constructor_new::float_init_number3" ;
72 -> 74 ; "constructor_new::float_init_number3" [label="3: Return Stmt \n n$0=*&x1:float * [line 46]\n n$1=*n$0:float [line 46]\n *&return:float =(1 / (n$1 - 5.400000)) [line 46]\n " shape="box"]
71 [label="71: + \n " ]
71 -> 77 ; "constructor_new::float_init_number3" -> "constructor_new::float_init_number2" ;
70 [label="70: BinaryOperatorStmt: Assign \n n$5=*&x2:int * [line 79]\n *n$5[0]:int =1 [line 79]\n " shape="box"] "constructor_new::float_init_number2" [label="2: Exit constructor_new::float_init_number \n " color=yellow style=filled]
70 -> 69 ; "constructor_new::float_init_number1" [label="1: Start constructor_new::float_init_number\nFormals: \nLocals: x1:float * \n DECLARE_LOCALS(&return,&x1); [line 44]\n " color=yellow style=filled]
69 [label="69: BinaryOperatorStmt: Assign \n n$4=*&x2:int * [line 80]\n *n$4[1]:int =2 [line 80]\n " shape="box"]
69 -> 68 ; "constructor_new::float_init_number1" -> "constructor_new::float_init_number4" ;
68 [label="68: Return Stmt \n n$0=*&x2:int * [line 81]\n n$1=*n$0[0]:int [line 81]\n n$2=*&x2:int * [line 81]\n n$3=*n$2[1]:int [line 81]\n *&return:int =(1 / ((n$1 + n$3) - 3)) [line 81]\n " shape="box"] "constructor_new::int_init_empty_list4" [label="4: DeclStmt \n *&x1:int =0 [line 55]\n " shape="box"]
68 -> 67 ; "constructor_new::int_init_empty_list4" -> "constructor_new::int_init_empty_list3" ;
67 [label="67: Exit constructor_new::int_array \n " color=yellow style=filled] "constructor_new::int_init_empty_list3" [label="3: Return Stmt \n n$0=*&x1:int [line 56]\n *&return:int =(1 / n$0) [line 56]\n " shape="box"]
66 [label="66: Start constructor_new::int_array\nFormals: \nLocals: x2:int * 0$?%__sil_tmpSIL_temp_conditional___n$6:int \n DECLARE_LOCALS(&return,&x2,&0$?%__sil_tmpSIL_temp_conditional___n$6); [line 77]\n " color=yellow style=filled] "constructor_new::int_init_empty_list3" -> "constructor_new::int_init_empty_list2" ;
"constructor_new::int_init_empty_list2" [label="2: Exit constructor_new::int_init_empty_list \n " color=yellow style=filled]
66 -> 72 ; "constructor_new::int_init_empty_list1" [label="1: Start constructor_new::int_init_empty_list\nFormals: \nLocals: x1:int \n DECLARE_LOCALS(&return,&x1); [line 54]\n " color=yellow style=filled]
65 [label="65: DeclStmt \n *&z:int =6 [line 72]\n " shape="box"]
65 -> 59 ; "constructor_new::int_init_empty_list1" -> "constructor_new::int_init_empty_list4" ;
64 [label="64: DeclStmt \n n$2=_fun___new(sizeof(class constructor_new::Person ):unsigned long ) [line 73]\n n$7=*&0$?%__sil_tmpSIL_temp_conditional___n$3:int [line 73]\n _fun_constructor_new::Person_Person(n$2:class constructor_new::Person *,n$7:int ) [line 73]\n *&p:class constructor_new::Person *=n$2 [line 73]\n " shape="box"] "constructor_new::Person_Person3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class constructor_new::Person * [line 14]\n *n$0.x:int =0 [line 14]\n " shape="box"]
64 -> 57 ; "constructor_new::Person_Person3" -> "constructor_new::Person_Person2" ;
63 [label="63: ConditinalStmt Branch \n n$6=*&z:int [line 73]\n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int =(1 + n$6) [line 73]\n " shape="box"] "constructor_new::Person_Person2" [label="2: Exit constructor_new::Person_Person \n " color=yellow style=filled]
63 -> 58 ; "constructor_new::Person_Person1" [label="1: Start constructor_new::Person_Person\nFormals: this:class constructor_new::Person *\nLocals: \n DECLARE_LOCALS(&return); [line 14]\n " color=yellow style=filled]
62 [label="62: ConditinalStmt Branch \n n$5=_fun_constructor_new::getValue(1:int ) [line 73]\n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int =n$5 [line 73]\n " shape="box"]
62 -> 58 ; "constructor_new::Person_Person1" -> "constructor_new::Person_Person3" ;
61 [label="61: Prune (false branch) \n PRUNE((n$4 == 0), false); [line 73]\n " shape="invhouse"] "constructor_new::array_of_class_with_not_constant_size9" [label="9: DeclStmt \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 91]\n n$3=_fun___new_array((sizeof(class constructor_new::Person ) * n$2):unsigned long ) [line 91]\n *&tarray:class constructor_new::Person *=n$3 [line 91]\n " shape="box"]
61 -> 63 ; "constructor_new::array_of_class_with_not_constant_size9" -> "constructor_new::array_of_class_with_not_constant_size2" ;
60 [label="60: Prune (true branch) \n PRUNE((n$4 != 0), true); [line 73]\n " shape="invhouse"] "constructor_new::array_of_class_with_not_constant_size8" [label="8: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =3 [line 91]\n " shape="box"]
60 -> 62 ; "constructor_new::array_of_class_with_not_constant_size8" -> "constructor_new::array_of_class_with_not_constant_size3" ;
59 [label="59: Call _fun_constructor_new::getValue \n n$4=_fun_constructor_new::getValue(0:int ) [line 73]\n " shape="box"] "constructor_new::array_of_class_with_not_constant_size7" [label="7: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int =5 [line 91]\n " shape="box"]
59 -> 60 ; "constructor_new::array_of_class_with_not_constant_size7" -> "constructor_new::array_of_class_with_not_constant_size3" ;
59 -> 61 ; "constructor_new::array_of_class_with_not_constant_size6" [label="6: Prune (false branch) \n PRUNE(((n$1 == 5) == 0), false); [line 91]\n " shape="invhouse"]
58 [label="58: + \n " ]
58 -> 64 ; "constructor_new::array_of_class_with_not_constant_size6" -> "constructor_new::array_of_class_with_not_constant_size8" ;
57 [label="57: Return Stmt \n n$0=*&p:class constructor_new::Person * [line 74]\n n$1=*n$0.x:int [line 74]\n *&return:int =(1 / (n$1 - 7)) [line 74]\n " shape="box"] "constructor_new::array_of_class_with_not_constant_size5" [label="5: Prune (true branch) \n PRUNE(((n$1 == 5) != 0), true); [line 91]\n " shape="invhouse"]
57 -> 56 ; "constructor_new::array_of_class_with_not_constant_size5" -> "constructor_new::array_of_class_with_not_constant_size7" ;
56 [label="56: Exit constructor_new::constructor_nodes \n " color=yellow style=filled] "constructor_new::array_of_class_with_not_constant_size4" [label="4: BinaryOperatorStmt: EQ \n n$1=_fun_constructor_new::getValue(5:int ) [line 91]\n " shape="box"]
55 [label="55: Start constructor_new::constructor_nodes\nFormals: \nLocals: p:class constructor_new::Person * 0$?%__sil_tmpSIL_temp_conditional___n$3:int z:int \n DECLARE_LOCALS(&return,&p,&0$?%__sil_tmpSIL_temp_conditional___n$3,&z); [line 71]\n " color=yellow style=filled] "constructor_new::array_of_class_with_not_constant_size4" -> "constructor_new::array_of_class_with_not_constant_size5" ;
"constructor_new::array_of_class_with_not_constant_size4" -> "constructor_new::array_of_class_with_not_constant_size6" ;
"constructor_new::array_of_class_with_not_constant_size3" [label="3: + \n " ]
55 -> 65 ; "constructor_new::array_of_class_with_not_constant_size3" -> "constructor_new::array_of_class_with_not_constant_size9" ;
54 [label="54: DeclStmt \n *&z:int =6 [line 65]\n " shape="box"] "constructor_new::array_of_class_with_not_constant_size2" [label="2: Exit constructor_new::array_of_class_with_not_constant_size \n " color=yellow style=filled]
54 -> 53 ; "constructor_new::array_of_class_with_not_constant_size1" [label="1: Start constructor_new::array_of_class_with_not_constant_size\nFormals: \nLocals: tarray:class constructor_new::Person * 0$?%__sil_tmpSIL_temp_conditional___n$0:int \n DECLARE_LOCALS(&return,&tarray,&0$?%__sil_tmpSIL_temp_conditional___n$0); [line 90]\n " color=yellow style=filled]
53 [label="53: DeclStmt \n n$9=_fun___new(sizeof(int ):unsigned long ) [line 66]\n n$10=_fun_constructor_new::getValue(4:int ) [line 66]\n *n$9:int =n$10 [line 66]\n *&y:int *=n$9 [line 66]\n " shape="box"]
53 -> 47 ; "constructor_new::array_of_class_with_not_constant_size1" -> "constructor_new::array_of_class_with_not_constant_size4" ;
52 [label="52: DeclStmt \n n$2=_fun___new(sizeof(int ):unsigned long ) [line 67]\n n$8=*&0$?%__sil_tmpSIL_temp_conditional___n$3:int [line 67]\n *n$2:int =n$8 [line 67]\n *&x:int *=n$2 [line 67]\n " shape="box"] "constructor_new::constructor_nodes11" [label="11: DeclStmt \n *&z:int =6 [line 72]\n " shape="box"]
52 -> 45 ; "constructor_new::constructor_nodes11" -> "constructor_new::constructor_nodes5" ;
51 [label="51: ConditinalStmt Branch \n n$6=*&y:int * [line 67]\n n$7=*n$6:int [line 67]\n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int =(1 + n$7) [line 67]\n " shape="box"] "constructor_new::constructor_nodes10" [label="10: DeclStmt \n n$2=_fun___new(sizeof(class constructor_new::Person ):unsigned long ) [line 73]\n n$7=*&0$?%__sil_tmpSIL_temp_conditional___n$3:int [line 73]\n _fun_constructor_new::Person_Person(n$2:class constructor_new::Person *,n$7:int ) [line 73]\n *&p:class constructor_new::Person *=n$2 [line 73]\n " shape="box"]
51 -> 46 ; "constructor_new::constructor_nodes10" -> "constructor_new::constructor_nodes3" ;
50 [label="50: ConditinalStmt Branch \n n$5=_fun_constructor_new::getValue(1:int ) [line 67]\n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int =n$5 [line 67]\n " shape="box"] "constructor_new::constructor_nodes9" [label="9: ConditinalStmt Branch \n n$6=*&z:int [line 73]\n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int =(1 + n$6) [line 73]\n " shape="box"]
50 -> 46 ; "constructor_new::constructor_nodes9" -> "constructor_new::constructor_nodes4" ;
49 [label="49: Prune (false branch) \n PRUNE((n$4 == 0), false); [line 67]\n " shape="invhouse"] "constructor_new::constructor_nodes8" [label="8: ConditinalStmt Branch \n n$5=_fun_constructor_new::getValue(1:int ) [line 73]\n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int =n$5 [line 73]\n " shape="box"]
49 -> 51 ; "constructor_new::constructor_nodes8" -> "constructor_new::constructor_nodes4" ;
48 [label="48: Prune (true branch) \n PRUNE((n$4 != 0), true); [line 67]\n " shape="invhouse"] "constructor_new::constructor_nodes7" [label="7: Prune (false branch) \n PRUNE((n$4 == 0), false); [line 73]\n " shape="invhouse"]
48 -> 50 ; "constructor_new::constructor_nodes7" -> "constructor_new::constructor_nodes9" ;
47 [label="47: Call _fun_constructor_new::getValue \n n$4=_fun_constructor_new::getValue(0:int ) [line 67]\n " shape="box"] "constructor_new::constructor_nodes6" [label="6: Prune (true branch) \n PRUNE((n$4 != 0), true); [line 73]\n " shape="invhouse"]
47 -> 48 ; "constructor_new::constructor_nodes6" -> "constructor_new::constructor_nodes8" ;
47 -> 49 ; "constructor_new::constructor_nodes5" [label="5: Call _fun_constructor_new::getValue \n n$4=_fun_constructor_new::getValue(0:int ) [line 73]\n " shape="box"]
46 [label="46: + \n " ]
46 -> 52 ; "constructor_new::constructor_nodes5" -> "constructor_new::constructor_nodes6" ;
45 [label="45: Return Stmt \n n$0=*&x:int * [line 68]\n n$1=*n$0:int [line 68]\n *&return:int =(1 / (n$1 - 5)) [line 68]\n " shape="box"] "constructor_new::constructor_nodes5" -> "constructor_new::constructor_nodes7" ;
"constructor_new::constructor_nodes4" [label="4: + \n " ]
45 -> 44 ; "constructor_new::constructor_nodes4" -> "constructor_new::constructor_nodes10" ;
44 [label="44: Exit constructor_new::int_init_nodes \n " color=yellow style=filled] "constructor_new::constructor_nodes3" [label="3: Return Stmt \n n$0=*&p:class constructor_new::Person * [line 74]\n n$1=*n$0.x:int [line 74]\n *&return:int =(1 / (n$1 - 7)) [line 74]\n " shape="box"]
43 [label="43: Start constructor_new::int_init_nodes\nFormals: \nLocals: x:int * 0$?%__sil_tmpSIL_temp_conditional___n$3:int y:int * z:int \n DECLARE_LOCALS(&return,&x,&0$?%__sil_tmpSIL_temp_conditional___n$3,&y,&z); [line 64]\n " color=yellow style=filled] "constructor_new::constructor_nodes3" -> "constructor_new::constructor_nodes2" ;
"constructor_new::constructor_nodes2" [label="2: Exit constructor_new::constructor_nodes \n " color=yellow style=filled]
43 -> 54 ; "constructor_new::constructor_nodes1" [label="1: Start constructor_new::constructor_nodes\nFormals: \nLocals: p:class constructor_new::Person * 0$?%__sil_tmpSIL_temp_conditional___n$3:int z:int \n DECLARE_LOCALS(&return,&p,&0$?%__sil_tmpSIL_temp_conditional___n$3,&z); [line 71]\n " color=yellow style=filled]
42 [label="42: DeclStmt \n n$2=_fun___new(sizeof(int ):unsigned long ) [line 60]\n *n$2:int =0 [line 60]\n *&x1:int *=n$2 [line 60]\n " shape="box"]
42 -> 41 ; "constructor_new::constructor_nodes1" -> "constructor_new::constructor_nodes11" ;
41 [label="41: Return Stmt \n n$0=*&x1:int * [line 61]\n n$1=*n$0:int [line 61]\n *&return:int =(1 / n$1) [line 61]\n " shape="box"] "constructor_new::int_init_empty_list_new4" [label="4: DeclStmt \n n$2=_fun___new(sizeof(int ):unsigned long ) [line 60]\n *n$2:int =0 [line 60]\n *&x1:int *=n$2 [line 60]\n " shape="box"]
41 -> 40 ; "constructor_new::int_init_empty_list_new4" -> "constructor_new::int_init_empty_list_new3" ;
40 [label="40: Exit constructor_new::int_init_empty_list_new \n " color=yellow style=filled] "constructor_new::int_init_empty_list_new3" [label="3: Return Stmt \n n$0=*&x1:int * [line 61]\n n$1=*n$0:int [line 61]\n *&return:int =(1 / n$1) [line 61]\n " shape="box"]
39 [label="39: Start constructor_new::int_init_empty_list_new\nFormals: \nLocals: x1:int * \n DECLARE_LOCALS(&return,&x1); [line 59]\n " color=yellow style=filled] "constructor_new::int_init_empty_list_new3" -> "constructor_new::int_init_empty_list_new2" ;
"constructor_new::int_init_empty_list_new2" [label="2: Exit constructor_new::int_init_empty_list_new \n " color=yellow style=filled]
39 -> 42 ; "constructor_new::int_init_empty_list_new1" [label="1: Start constructor_new::int_init_empty_list_new\nFormals: \nLocals: x1:int * \n DECLARE_LOCALS(&return,&x1); [line 59]\n " color=yellow style=filled]
38 [label="38: DeclStmt \n *&x1:int =0 [line 55]\n " shape="box"]
38 -> 37 ; "constructor_new::int_init_empty_list_new1" -> "constructor_new::int_init_empty_list_new4" ;
37 [label="37: Return Stmt \n n$0=*&x1:int [line 56]\n *&return:int =(1 / n$0) [line 56]\n " shape="box"] "constructor_new::int_init_empty4" [label="4: DeclStmt \n n$2=_fun___new(sizeof(int ):unsigned long ) [line 50]\n *n$2:int =0 [line 50]\n *&x1:int *=n$2 [line 50]\n " shape="box"]
37 -> 36 ; "constructor_new::int_init_empty4" -> "constructor_new::int_init_empty3" ;
36 [label="36: Exit constructor_new::int_init_empty_list \n " color=yellow style=filled] "constructor_new::int_init_empty3" [label="3: Return Stmt \n n$0=*&x1:int * [line 51]\n n$1=*n$0:int [line 51]\n *&return:int =(1 / n$1) [line 51]\n " shape="box"]
35 [label="35: Start constructor_new::int_init_empty_list\nFormals: \nLocals: x1:int \n DECLARE_LOCALS(&return,&x1); [line 54]\n " color=yellow style=filled] "constructor_new::int_init_empty3" -> "constructor_new::int_init_empty2" ;
"constructor_new::int_init_empty2" [label="2: Exit constructor_new::int_init_empty \n " color=yellow style=filled]
35 -> 38 ; "constructor_new::int_init_empty1" [label="1: Start constructor_new::int_init_empty\nFormals: \nLocals: x1:int * \n DECLARE_LOCALS(&return,&x1); [line 49]\n " color=yellow style=filled]
34 [label="34: DeclStmt \n n$2=_fun___new(sizeof(int ):unsigned long ) [line 50]\n *n$2:int =0 [line 50]\n *&x1:int *=n$2 [line 50]\n " shape="box"]
34 -> 33 ; "constructor_new::int_init_empty1" -> "constructor_new::int_init_empty4" ;
33 [label="33: Return Stmt \n n$0=*&x1:int * [line 51]\n n$1=*n$0:int [line 51]\n *&return:int =(1 / n$1) [line 51]\n " shape="box"] "constructor_new::getValue3" [label="3: Return Stmt \n n$0=*&x:int [line 27]\n *&return:int =n$0 [line 27]\n " shape="box"]
33 -> 32 ; "constructor_new::getValue3" -> "constructor_new::getValue2" ;
32 [label="32: Exit constructor_new::int_init_empty \n " color=yellow style=filled] "constructor_new::getValue2" [label="2: Exit constructor_new::getValue \n " color=yellow style=filled]
31 [label="31: Start constructor_new::int_init_empty\nFormals: \nLocals: x1:int * \n DECLARE_LOCALS(&return,&x1); [line 49]\n " color=yellow style=filled] "constructor_new::getValue1" [label="1: Start constructor_new::getValue\nFormals: x:int \nLocals: \n DECLARE_LOCALS(&return); [line 27]\n " color=yellow style=filled]
31 -> 34 ; "constructor_new::getValue1" -> "constructor_new::getValue3" ;
30 [label="30: DeclStmt \n n$2=_fun___new(sizeof(float ):unsigned long ) [line 45]\n *n$2:float =5.400000 [line 45]\n *&x1:float *=n$2 [line 45]\n " shape="box"] "constructor_new::Person_Person3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class constructor_new::Person * [line 15]\n n$1=*&i:int [line 15]\n *n$0.x:int =n$1 [line 15]\n " shape="box"]
30 -> 29 ; "constructor_new::Person_Person3" -> "constructor_new::Person_Person2" ;
29 [label="29: Return Stmt \n n$0=*&x1:float * [line 46]\n n$1=*n$0:float [line 46]\n *&return:float =(1 / (n$1 - 5.400000)) [line 46]\n " shape="box"] "constructor_new::Person_Person2" [label="2: Exit constructor_new::Person_Person \n " color=yellow style=filled]
29 -> 28 ; "constructor_new::Person_Person1" [label="1: Start constructor_new::Person_Person\nFormals: this:class constructor_new::Person * i:int \nLocals: \n DECLARE_LOCALS(&return); [line 15]\n " color=yellow style=filled]
28 [label="28: Exit constructor_new::float_init_number \n " color=yellow style=filled]
27 [label="27: Start constructor_new::float_init_number\nFormals: \nLocals: x1:float * \n DECLARE_LOCALS(&return,&x1); [line 44]\n " color=yellow style=filled] "constructor_new::Person_Person1" -> "constructor_new::Person_Person3" ;
"constructor_new::int_array12" [label="12: DeclStmt \n n$9=*&0$?%__sil_tmpSIL_temp_conditional___n$6:int [line 78]\n n$10=_fun___new_array((sizeof(int ) * n$9):unsigned long ) [line 78]\n *&x2:int *=n$10 [line 78]\n " shape="box"]
27 -> 30 ; "constructor_new::int_array12" -> "constructor_new::int_array5" ;
26 [label="26: DeclStmt \n n$2=_fun___new(sizeof(int ):unsigned long ) [line 40]\n *n$2:int =5 [line 40]\n *&x1:int *=n$2 [line 40]\n " shape="box"] "constructor_new::int_array11" [label="11: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$6:int =3 [line 78]\n " shape="box"]
26 -> 25 ; "constructor_new::int_array11" -> "constructor_new::int_array6" ;
25 [label="25: Return Stmt \n n$0=*&x1:int * [line 41]\n n$1=*n$0:int [line 41]\n *&return:int =(1 / (n$1 - 5)) [line 41]\n " shape="box"] "constructor_new::int_array10" [label="10: ConditinalStmt Branch \n n$8=_fun_constructor_new::getValue(5:int ) [line 78]\n *&0$?%__sil_tmpSIL_temp_conditional___n$6:int =n$8 [line 78]\n " shape="box"]
25 -> 24 ; "constructor_new::int_array10" -> "constructor_new::int_array6" ;
24 [label="24: Exit constructor_new::int_init_number \n " color=yellow style=filled] "constructor_new::int_array9" [label="9: Prune (false branch) \n PRUNE((n$7 == 0), false); [line 78]\n " shape="invhouse"]
23 [label="23: Start constructor_new::int_init_number\nFormals: \nLocals: x1:int * \n DECLARE_LOCALS(&return,&x1); [line 39]\n " color=yellow style=filled] "constructor_new::int_array9" -> "constructor_new::int_array11" ;
"constructor_new::int_array8" [label="8: Prune (true branch) \n PRUNE((n$7 != 0), true); [line 78]\n " shape="invhouse"]
23 -> 26 ; "constructor_new::int_array8" -> "constructor_new::int_array10" ;
22 [label="22: DeclStmt \n n$2=_fun___new(sizeof(class constructor_new::Person ):unsigned long ) [line 35]\n _fun_constructor_new::Person_Person(n$2:class constructor_new::Person *,5:int ,6:int ,7:int ) [line 35]\n *&p:class constructor_new::Person *=n$2 [line 35]\n " shape="box"] "constructor_new::int_array7" [label="7: Call _fun_constructor_new::getValue \n n$7=_fun_constructor_new::getValue(5:int ) [line 78]\n " shape="box"]
22 -> 21 ; "constructor_new::int_array7" -> "constructor_new::int_array8" ;
21 [label="21: Return Stmt \n n$0=*&p:class constructor_new::Person * [line 36]\n n$1=*n$0.z:int [line 36]\n *&return:int =(1 / (n$1 - 7)) [line 36]\n " shape="box"] "constructor_new::int_array7" -> "constructor_new::int_array9" ;
"constructor_new::int_array6" [label="6: + \n " ]
21 -> 20 ; "constructor_new::int_array6" -> "constructor_new::int_array12" ;
20 [label="20: Exit constructor_new::constructor_3_args_new_div0 \n " color=yellow style=filled] "constructor_new::int_array5" [label="5: BinaryOperatorStmt: Assign \n n$5=*&x2:int * [line 79]\n *n$5[0]:int =1 [line 79]\n " shape="box"]
19 [label="19: Start constructor_new::constructor_3_args_new_div0\nFormals: \nLocals: p:class constructor_new::Person * \n DECLARE_LOCALS(&return,&p); [line 34]\n " color=yellow style=filled] "constructor_new::int_array5" -> "constructor_new::int_array4" ;
"constructor_new::int_array4" [label="4: BinaryOperatorStmt: Assign \n n$4=*&x2:int * [line 80]\n *n$4[1]:int =2 [line 80]\n " shape="box"]
19 -> 22 ; "constructor_new::int_array4" -> "constructor_new::int_array3" ;
18 [label="18: DeclStmt \n n$2=_fun___new(sizeof(class constructor_new::Person ):unsigned long ) [line 30]\n _fun_constructor_new::Person_Person(n$2:class constructor_new::Person *,5:int ) [line 30]\n *&p:class constructor_new::Person *=n$2 [line 30]\n " shape="box"] "constructor_new::int_array3" [label="3: Return Stmt \n n$0=*&x2:int * [line 81]\n n$1=*n$0[0]:int [line 81]\n n$2=*&x2:int * [line 81]\n n$3=*n$2[1]:int [line 81]\n *&return:int =(1 / ((n$1 + n$3) - 3)) [line 81]\n " shape="box"]
18 -> 17 ; "constructor_new::int_array3" -> "constructor_new::int_array2" ;
17 [label="17: Return Stmt \n n$0=*&p:class constructor_new::Person * [line 31]\n n$1=*n$0.x:int [line 31]\n *&return:int =(1 / (n$1 - 5)) [line 31]\n " shape="box"] "constructor_new::int_array2" [label="2: Exit constructor_new::int_array \n " color=yellow style=filled]
17 -> 16 ; "constructor_new::int_array1" [label="1: Start constructor_new::int_array\nFormals: \nLocals: x2:int * 0$?%__sil_tmpSIL_temp_conditional___n$6:int \n DECLARE_LOCALS(&return,&x2,&0$?%__sil_tmpSIL_temp_conditional___n$6); [line 77]\n " color=yellow style=filled]
16 [label="16: Exit constructor_new::constructor_1_arg_new_div0 \n " color=yellow style=filled]
15 [label="15: Start constructor_new::constructor_1_arg_new_div0\nFormals: \nLocals: p:class constructor_new::Person * \n DECLARE_LOCALS(&return,&p); [line 29]\n " color=yellow style=filled] "constructor_new::int_array1" -> "constructor_new::int_array7" ;
"constructor_new::matrix_of_person4" [label="4: DeclStmt \n n$2=_fun___new_array((sizeof(class constructor_new::Person *) * 10):unsigned long ) [line 99]\n *&tarray:class constructor_new::Person **=n$2 [line 99]\n " shape="box"]
15 -> 18 ; "constructor_new::matrix_of_person4" -> "constructor_new::matrix_of_person3" ;
14 [label="14: Return Stmt \n n$0=*&x:int [line 27]\n *&return:int =n$0 [line 27]\n " shape="box"] "constructor_new::matrix_of_person3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&tarray:class constructor_new::Person ** [line 100]\n n$1=_fun___new_array((sizeof(class constructor_new::Person ) * 10):unsigned long ) [line 100]\n _fun_constructor_new::Person_Person(n$1[0]:class constructor_new::Person *) [line 100]\n _fun_constructor_new::Person_Person(n$1[1]:class constructor_new::Person *) [line 100]\n _fun_constructor_new::Person_Person(n$1[2]:class constructor_new::Person *) [line 100]\n _fun_constructor_new::Person_Person(n$1[3]:class constructor_new::Person *) [line 100]\n _fun_constructor_new::Person_Person(n$1[4]:class constructor_new::Person *) [line 100]\n _fun_constructor_new::Person_Person(n$1[5]:class constructor_new::Person *) [line 100]\n _fun_constructor_new::Person_Person(n$1[6]:class constructor_new::Person *) [line 100]\n _fun_constructor_new::Person_Person(n$1[7]:class constructor_new::Person *) [line 100]\n _fun_constructor_new::Person_Person(n$1[8]:class constructor_new::Person *) [line 100]\n _fun_constructor_new::Person_Person(n$1[9]:class constructor_new::Person *) [line 100]\n *n$0[0]:class constructor_new::Person *=n$1 [line 100]\n " shape="box"]
14 -> 13 ; "constructor_new::matrix_of_person3" -> "constructor_new::matrix_of_person2" ;
13 [label="13: Exit constructor_new::getValue \n " color=yellow style=filled] "constructor_new::matrix_of_person2" [label="2: Exit constructor_new::matrix_of_person \n " color=yellow style=filled]
12 [label="12: Start constructor_new::getValue\nFormals: x:int \nLocals: \n DECLARE_LOCALS(&return); [line 27]\n " color=yellow style=filled] "constructor_new::matrix_of_person1" [label="1: Start constructor_new::matrix_of_person\nFormals: \nLocals: tarray:class constructor_new::Person ** \n DECLARE_LOCALS(&return,&tarray); [line 98]\n " color=yellow style=filled]
12 -> 14 ; "constructor_new::matrix_of_person1" -> "constructor_new::matrix_of_person4" ;
11 [label="11: BinaryOperatorStmt: Assign \n n$4=*&this:class constructor_new::Person * [line 18]\n n$5=*&i:int [line 18]\n *n$4.x:int =n$5 [line 18]\n " shape="box"] "constructor_new::array_of_person_with_constant_size3" [label="3: DeclStmt \n n$0=_fun___new_array((sizeof(class constructor_new::Person ) * 10):unsigned long ) [line 95]\n _fun_constructor_new::Person_Person(n$0[0]:class constructor_new::Person *) [line 95]\n _fun_constructor_new::Person_Person(n$0[1]:class constructor_new::Person *) [line 95]\n _fun_constructor_new::Person_Person(n$0[2]:class constructor_new::Person *) [line 95]\n _fun_constructor_new::Person_Person(n$0[3]:class constructor_new::Person *) [line 95]\n _fun_constructor_new::Person_Person(n$0[4]:class constructor_new::Person *) [line 95]\n _fun_constructor_new::Person_Person(n$0[5]:class constructor_new::Person *) [line 95]\n _fun_constructor_new::Person_Person(n$0[6]:class constructor_new::Person *) [line 95]\n _fun_constructor_new::Person_Person(n$0[7]:class constructor_new::Person *) [line 95]\n _fun_constructor_new::Person_Person(n$0[8]:class constructor_new::Person *) [line 95]\n _fun_constructor_new::Person_Person(n$0[9]:class constructor_new::Person *) [line 95]\n *&tarray:class constructor_new::Person *=n$0 [line 95]\n " shape="box"]
11 -> 10 ; "constructor_new::array_of_person_with_constant_size3" -> "constructor_new::array_of_person_with_constant_size2" ;
10 [label="10: BinaryOperatorStmt: Assign \n n$2=*&this:class constructor_new::Person * [line 19]\n n$3=*&j:int [line 19]\n *n$2.y:int =n$3 [line 19]\n " shape="box"] "constructor_new::array_of_person_with_constant_size2" [label="2: Exit constructor_new::array_of_person_with_constant_size \n " color=yellow style=filled]
10 -> 9 ; "constructor_new::array_of_person_with_constant_size1" [label="1: Start constructor_new::array_of_person_with_constant_size\nFormals: \nLocals: tarray:class constructor_new::Person * \n DECLARE_LOCALS(&return,&tarray); [line 95]\n " color=yellow style=filled]
9 [label="9: BinaryOperatorStmt: Assign \n n$0=*&this:class constructor_new::Person * [line 20]\n n$1=*&k:int [line 20]\n *n$0.z:int =n$1 [line 20]\n " shape="box"]
9 -> 8 ; "constructor_new::array_of_person_with_constant_size1" -> "constructor_new::array_of_person_with_constant_size3" ;
8 [label="8: Exit constructor_new::Person_Person \n " color=yellow style=filled] "constructor_new::int_array_init4" [label="4: DeclStmt \n n$10=_fun___new_array((sizeof(int ) * 100):unsigned long ) [line 85]\n *n$10[0]:int =1 [line 85]\n *n$10[1]:int =2 [line 85]\n *n$10[2]:int =3 [line 85]\n *n$10[3]:int =4 [line 85]\n *n$10[4]:int =5 [line 85]\n *n$10[5]:int =6 [line 85]\n *n$10[6]:int =7 [line 85]\n *n$10[7]:int =8 [line 85]\n *n$10[8]:int =9 [line 85]\n *n$10[9]:int =10 [line 85]\n *&arr:int *=n$10 [line 85]\n " shape="box"]
7 [label="7: Start constructor_new::Person_Person\nFormals: this:class constructor_new::Person * i:int j:int k:int \nLocals: \n DECLARE_LOCALS(&return); [line 17]\n " color=yellow style=filled] "constructor_new::int_array_init4" -> "constructor_new::int_array_init3" ;
"constructor_new::int_array_init3" [label="3: Return Stmt \n n$0=*&arr:int * [line 86]\n n$1=*n$0[0]:int [line 86]\n n$2=*&arr:int * [line 86]\n n$3=*n$2[1]:int [line 86]\n n$4=*&arr:int * [line 86]\n n$5=*n$4[2]:int [line 86]\n n$6=*&arr:int * [line 86]\n n$7=*n$6[3]:int [line 86]\n n$8=*&arr:int * [line 86]\n n$9=*n$8[4]:int [line 86]\n *&return:int =(1 / (((((n$1 + n$3) + n$5) + n$7) + n$9) - 15)) [line 86]\n " shape="box"]
7 -> 11 ; "constructor_new::int_array_init3" -> "constructor_new::int_array_init2" ;
6 [label="6: BinaryOperatorStmt: Assign \n n$0=*&this:class constructor_new::Person * [line 15]\n n$1=*&i:int [line 15]\n *n$0.x:int =n$1 [line 15]\n " shape="box"] "constructor_new::int_array_init2" [label="2: Exit constructor_new::int_array_init \n " color=yellow style=filled]
6 -> 5 ; "constructor_new::int_array_init1" [label="1: Start constructor_new::int_array_init\nFormals: \nLocals: arr:int * \n DECLARE_LOCALS(&return,&arr); [line 84]\n " color=yellow style=filled]
5 [label="5: Exit constructor_new::Person_Person \n " color=yellow style=filled]
4 [label="4: Start constructor_new::Person_Person\nFormals: this:class constructor_new::Person * i:int \nLocals: \n DECLARE_LOCALS(&return); [line 15]\n " color=yellow style=filled] "constructor_new::int_array_init1" -> "constructor_new::int_array_init4" ;
"constructor_new::constructor_3_args_new_div04" [label="4: DeclStmt \n n$2=_fun___new(sizeof(class constructor_new::Person ):unsigned long ) [line 35]\n _fun_constructor_new::Person_Person(n$2:class constructor_new::Person *,5:int ,6:int ,7:int ) [line 35]\n *&p:class constructor_new::Person *=n$2 [line 35]\n " shape="box"]
4 -> 6 ; "constructor_new::constructor_3_args_new_div04" -> "constructor_new::constructor_3_args_new_div03" ;
3 [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class constructor_new::Person * [line 14]\n *n$0.x:int =0 [line 14]\n " shape="box"] "constructor_new::constructor_3_args_new_div03" [label="3: Return Stmt \n n$0=*&p:class constructor_new::Person * [line 36]\n n$1=*n$0.z:int [line 36]\n *&return:int =(1 / (n$1 - 7)) [line 36]\n " shape="box"]
3 -> 2 ; "constructor_new::constructor_3_args_new_div03" -> "constructor_new::constructor_3_args_new_div02" ;
2 [label="2: Exit constructor_new::Person_Person \n " color=yellow style=filled] "constructor_new::constructor_3_args_new_div02" [label="2: Exit constructor_new::constructor_3_args_new_div0 \n " color=yellow style=filled]
1 [label="1: Start constructor_new::Person_Person\nFormals: this:class constructor_new::Person *\nLocals: \n DECLARE_LOCALS(&return); [line 14]\n " color=yellow style=filled] "constructor_new::constructor_3_args_new_div01" [label="1: Start constructor_new::constructor_3_args_new_div0\nFormals: \nLocals: p:class constructor_new::Person * \n DECLARE_LOCALS(&return,&p); [line 34]\n " color=yellow style=filled]
1 -> 3 ; "constructor_new::constructor_3_args_new_div01" -> "constructor_new::constructor_3_args_new_div04" ;
} }

@ -1,25 +1,25 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
6 [label="6: DeclStmt \n *&0$?%__sil_tmpSIL_init_list__n$0.top:int =0 [line 17]\n *&0$?%__sil_tmpSIL_init_list__n$0.left:int =0 [line 17]\n *&0$?%__sil_tmpSIL_init_list__n$0.bottom:int =0 [line 17]\n *&0$?%__sil_tmpSIL_init_list__n$0.right:int =0 [line 17]\n _fun_Person_Person(&p:class Person *,&0$?%__sil_tmpSIL_init_list__n$0:class Insets ) [line 17]\n " shape="box"] "test3" [label="3: DeclStmt \n *&0$?%__sil_tmpSIL_init_list__n$0.top:int =0 [line 17]\n *&0$?%__sil_tmpSIL_init_list__n$0.left:int =0 [line 17]\n *&0$?%__sil_tmpSIL_init_list__n$0.bottom:int =0 [line 17]\n *&0$?%__sil_tmpSIL_init_list__n$0.right:int =0 [line 17]\n _fun_Person_Person(&p:class Person *,&0$?%__sil_tmpSIL_init_list__n$0:class Insets ) [line 17]\n " shape="box"]
6 -> 5 ; "test3" -> "test2" ;
5 [label="5: Exit test \n " color=yellow style=filled] "test2" [label="2: Exit test \n " color=yellow style=filled]
4 [label="4: Start test\nFormals: \nLocals: p:class Person 0$?%__sil_tmpSIL_init_list__n$0:class Insets \n DECLARE_LOCALS(&return,&p,&0$?%__sil_tmpSIL_init_list__n$0); [line 17]\n " color=yellow style=filled] "test1" [label="1: Start test\nFormals: \nLocals: p:class Person 0$?%__sil_tmpSIL_init_list__n$0:class Insets \n DECLARE_LOCALS(&return,&p,&0$?%__sil_tmpSIL_init_list__n$0); [line 17]\n " color=yellow style=filled]
4 -> 6 ; "test1" -> "test3" ;
3 [label="3: Constructor Init \n n$0=*&this:class Person * [line 14]\n n$1=*&l:class Insets & [line 14]\n n$2=*n$1.top:int [line 14]\n *n$0.age:int =n$2 [line 14]\n " shape="box"] "Person_Person3" [label="3: Constructor Init \n n$0=*&this:class Person * [line 14]\n n$1=*&l:class Insets & [line 14]\n n$2=*n$1.top:int [line 14]\n *n$0.age:int =n$2 [line 14]\n " shape="box"]
3 -> 2 ; "Person_Person3" -> "Person_Person2" ;
2 [label="2: Exit Person_Person \n " color=yellow style=filled] "Person_Person2" [label="2: Exit Person_Person \n " color=yellow style=filled]
1 [label="1: Start Person_Person\nFormals: this:class Person * l:class Insets &\nLocals: \n DECLARE_LOCALS(&return); [line 14]\n " color=yellow style=filled] "Person_Person1" [label="1: Start Person_Person\nFormals: this:class Person * l:class Insets &\nLocals: \n DECLARE_LOCALS(&return); [line 14]\n " color=yellow style=filled]
1 -> 3 ; "Person_Person1" -> "Person_Person3" ;
} }

@ -1,100 +1,100 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
26 [label="26: DeclStmt \n _fun_constructor_with_body::X_X(&x:class constructor_with_body::X *,0:int ,1:int ) [line 41]\n " shape="box"] "constructor_with_body::X_init3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class constructor_with_body::X * [line 14]\n *n$0.f:int =0 [line 14]\n " shape="box"]
26 -> 25 ; "constructor_with_body::X_init3" -> "constructor_with_body::X_init2" ;
25 [label="25: Call _fun_constructor_with_body::X_div \n _=*&x:class constructor_with_body::X [line 42]\n n$1=_fun_constructor_with_body::X_div(&x:class constructor_with_body::X &) [line 42]\n " shape="box"] "constructor_with_body::X_init2" [label="2: Exit constructor_with_body::X_init \n " color=yellow style=filled]
25 -> 24 ; "constructor_with_body::X_init1" [label="1: Start constructor_with_body::X_init\nFormals: this:class constructor_with_body::X *\nLocals: \n DECLARE_LOCALS(&return); [line 14]\n " color=yellow style=filled]
24 [label="24: Exit constructor_with_body::test_div1 \n " color=yellow style=filled]
23 [label="23: Start constructor_with_body::test_div1\nFormals: \nLocals: x:class constructor_with_body::X \n DECLARE_LOCALS(&return,&x); [line 40]\n " color=yellow style=filled] "constructor_with_body::X_init1" -> "constructor_with_body::X_init3" ;
"constructor_with_body::X_div3" [label="3: Return Stmt \n n$0=*&this:class constructor_with_body::X * [line 21]\n n$1=*n$0.f:int [line 21]\n *&return:int =(1 / n$1) [line 21]\n " shape="box"]
23 -> 26 ; "constructor_with_body::X_div3" -> "constructor_with_body::X_div2" ;
22 [label="22: DeclStmt \n _fun_constructor_with_body::X_X(&x:class constructor_with_body::X *) [line 36]\n " shape="box"] "constructor_with_body::X_div2" [label="2: Exit constructor_with_body::X_div \n " color=yellow style=filled]
22 -> 21 ; "constructor_with_body::X_div1" [label="1: Start constructor_with_body::X_div\nFormals: this:class constructor_with_body::X *\nLocals: \n DECLARE_LOCALS(&return); [line 21]\n " color=yellow style=filled]
21 [label="21: Call _fun_constructor_with_body::X_div \n _=*&x:class constructor_with_body::X [line 37]\n n$1=_fun_constructor_with_body::X_div(&x:class constructor_with_body::X &) [line 37]\n " shape="box"]
21 -> 20 ; "constructor_with_body::X_div1" -> "constructor_with_body::X_div3" ;
20 [label="20: Exit constructor_with_body::test_div0_default_constructor \n " color=yellow style=filled] "constructor_with_body::test_div14" [label="4: DeclStmt \n _fun_constructor_with_body::X_X(&x:class constructor_with_body::X *,0:int ,1:int ) [line 41]\n " shape="box"]
19 [label="19: Start constructor_with_body::test_div0_default_constructor\nFormals: \nLocals: x:class constructor_with_body::X \n DECLARE_LOCALS(&return,&x); [line 35]\n " color=yellow style=filled] "constructor_with_body::test_div14" -> "constructor_with_body::test_div13" ;
"constructor_with_body::test_div13" [label="3: Call _fun_constructor_with_body::X_div \n _=*&x:class constructor_with_body::X [line 42]\n n$1=_fun_constructor_with_body::X_div(&x:class constructor_with_body::X &) [line 42]\n " shape="box"]
19 -> 22 ; "constructor_with_body::test_div13" -> "constructor_with_body::test_div12" ;
18 [label="18: DeclStmt \n _fun_constructor_with_body::X_X(&x:class constructor_with_body::X *,-2:int ,2:int ) [line 31]\n " shape="box"] "constructor_with_body::test_div12" [label="2: Exit constructor_with_body::test_div1 \n " color=yellow style=filled]
18 -> 17 ; "constructor_with_body::test_div11" [label="1: Start constructor_with_body::test_div1\nFormals: \nLocals: x:class constructor_with_body::X \n DECLARE_LOCALS(&return,&x); [line 40]\n " color=yellow style=filled]
17 [label="17: Call _fun_constructor_with_body::X_div \n _=*&x:class constructor_with_body::X [line 32]\n n$1=_fun_constructor_with_body::X_div(&x:class constructor_with_body::X &) [line 32]\n " shape="box"]
17 -> 16 ; "constructor_with_body::test_div11" -> "constructor_with_body::test_div14" ;
16 [label="16: Exit constructor_with_body::test_div0 \n " color=yellow style=filled] "constructor_with_body::X_X5" [label="5: DeclStmt \n n$4=*&a:int [line 25]\n n$5=*&b:int [line 25]\n *&c:int =(n$4 + n$5) [line 25]\n " shape="box"]
15 [label="15: Start constructor_with_body::test_div0\nFormals: \nLocals: x:class constructor_with_body::X \n DECLARE_LOCALS(&return,&x); [line 30]\n " color=yellow style=filled] "constructor_with_body::X_X5" -> "constructor_with_body::X_X4" ;
"constructor_with_body::X_X4" [label="4: Call _fun_constructor_with_body::X_init \n n$2=*&this:class constructor_with_body::X * [line 26]\n _=*n$2:class constructor_with_body::X [line 26]\n _fun_constructor_with_body::X_init(n$2:class constructor_with_body::X *) [line 26]\n " shape="box"]
15 -> 18 ; "constructor_with_body::X_X4" -> "constructor_with_body::X_X3" ;
14 [label="14: DeclStmt \n n$4=*&a:int [line 25]\n n$5=*&b:int [line 25]\n *&c:int =(n$4 + n$5) [line 25]\n " shape="box"] "constructor_with_body::X_X3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class constructor_with_body::X * [line 27]\n n$1=*&c:int [line 27]\n *n$0.f:int =n$1 [line 27]\n " shape="box"]
14 -> 13 ; "constructor_with_body::X_X3" -> "constructor_with_body::X_X2" ;
13 [label="13: Call _fun_constructor_with_body::X_init \n n$2=*&this:class constructor_with_body::X * [line 26]\n _=*n$2:class constructor_with_body::X [line 26]\n _fun_constructor_with_body::X_init(n$2:class constructor_with_body::X *) [line 26]\n " shape="box"] "constructor_with_body::X_X2" [label="2: Exit constructor_with_body::X_X \n " color=yellow style=filled]
13 -> 12 ; "constructor_with_body::X_X1" [label="1: Start constructor_with_body::X_X\nFormals: this:class constructor_with_body::X * a:int b:int \nLocals: c:int \n DECLARE_LOCALS(&return,&c); [line 24]\n " color=yellow style=filled]
12 [label="12: BinaryOperatorStmt: Assign \n n$0=*&this:class constructor_with_body::X * [line 27]\n n$1=*&c:int [line 27]\n *n$0.f:int =n$1 [line 27]\n " shape="box"]
12 -> 11 ; "constructor_with_body::X_X1" -> "constructor_with_body::X_X5" ;
11 [label="11: Exit constructor_with_body::X_X \n " color=yellow style=filled] "constructor_with_body::X_X3" [label="3: Call _fun_constructor_with_body::X_init \n n$0=*&this:class constructor_with_body::X * [line 17]\n _=*n$0:class constructor_with_body::X [line 17]\n _fun_constructor_with_body::X_init(n$0:class constructor_with_body::X *) [line 17]\n " shape="box"]
10 [label="10: Start constructor_with_body::X_X\nFormals: this:class constructor_with_body::X * a:int b:int \nLocals: c:int \n DECLARE_LOCALS(&return,&c); [line 24]\n " color=yellow style=filled] "constructor_with_body::X_X3" -> "constructor_with_body::X_X2" ;
"constructor_with_body::X_X2" [label="2: Exit constructor_with_body::X_X \n " color=yellow style=filled]
10 -> 14 ; "constructor_with_body::X_X1" [label="1: Start constructor_with_body::X_X\nFormals: this:class constructor_with_body::X *\nLocals: \n DECLARE_LOCALS(&return); [line 17]\n " color=yellow style=filled]
9 [label="9: Return Stmt \n n$0=*&this:class constructor_with_body::X * [line 21]\n n$1=*n$0.f:int [line 21]\n *&return:int =(1 / n$1) [line 21]\n " shape="box"]
9 -> 8 ; "constructor_with_body::X_X1" -> "constructor_with_body::X_X3" ;
8 [label="8: Exit constructor_with_body::X_div \n " color=yellow style=filled] "constructor_with_body::test_div0_default_constructor4" [label="4: DeclStmt \n _fun_constructor_with_body::X_X(&x:class constructor_with_body::X *) [line 36]\n " shape="box"]
7 [label="7: Start constructor_with_body::X_div\nFormals: this:class constructor_with_body::X *\nLocals: \n DECLARE_LOCALS(&return); [line 21]\n " color=yellow style=filled] "constructor_with_body::test_div0_default_constructor4" -> "constructor_with_body::test_div0_default_constructor3" ;
"constructor_with_body::test_div0_default_constructor3" [label="3: Call _fun_constructor_with_body::X_div \n _=*&x:class constructor_with_body::X [line 37]\n n$1=_fun_constructor_with_body::X_div(&x:class constructor_with_body::X &) [line 37]\n " shape="box"]
7 -> 9 ; "constructor_with_body::test_div0_default_constructor3" -> "constructor_with_body::test_div0_default_constructor2" ;
6 [label="6: Call _fun_constructor_with_body::X_init \n n$0=*&this:class constructor_with_body::X * [line 17]\n _=*n$0:class constructor_with_body::X [line 17]\n _fun_constructor_with_body::X_init(n$0:class constructor_with_body::X *) [line 17]\n " shape="box"] "constructor_with_body::test_div0_default_constructor2" [label="2: Exit constructor_with_body::test_div0_default_constructor \n " color=yellow style=filled]
6 -> 5 ; "constructor_with_body::test_div0_default_constructor1" [label="1: Start constructor_with_body::test_div0_default_constructor\nFormals: \nLocals: x:class constructor_with_body::X \n DECLARE_LOCALS(&return,&x); [line 35]\n " color=yellow style=filled]
5 [label="5: Exit constructor_with_body::X_X \n " color=yellow style=filled]
4 [label="4: Start constructor_with_body::X_X\nFormals: this:class constructor_with_body::X *\nLocals: \n DECLARE_LOCALS(&return); [line 17]\n " color=yellow style=filled] "constructor_with_body::test_div0_default_constructor1" -> "constructor_with_body::test_div0_default_constructor4" ;
"constructor_with_body::test_div04" [label="4: DeclStmt \n _fun_constructor_with_body::X_X(&x:class constructor_with_body::X *,-2:int ,2:int ) [line 31]\n " shape="box"]
4 -> 6 ; "constructor_with_body::test_div04" -> "constructor_with_body::test_div03" ;
3 [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class constructor_with_body::X * [line 14]\n *n$0.f:int =0 [line 14]\n " shape="box"] "constructor_with_body::test_div03" [label="3: Call _fun_constructor_with_body::X_div \n _=*&x:class constructor_with_body::X [line 32]\n n$1=_fun_constructor_with_body::X_div(&x:class constructor_with_body::X &) [line 32]\n " shape="box"]
3 -> 2 ; "constructor_with_body::test_div03" -> "constructor_with_body::test_div02" ;
2 [label="2: Exit constructor_with_body::X_init \n " color=yellow style=filled] "constructor_with_body::test_div02" [label="2: Exit constructor_with_body::test_div0 \n " color=yellow style=filled]
1 [label="1: Start constructor_with_body::X_init\nFormals: this:class constructor_with_body::X *\nLocals: \n DECLARE_LOCALS(&return); [line 14]\n " color=yellow style=filled] "constructor_with_body::test_div01" [label="1: Start constructor_with_body::test_div0\nFormals: \nLocals: x:class constructor_with_body::X \n DECLARE_LOCALS(&return,&x); [line 30]\n " color=yellow style=filled]
1 -> 3 ; "constructor_with_body::test_div01" -> "constructor_with_body::test_div04" ;
} }

@ -1,248 +1,248 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
65 [label="65: DeclStmt \n _fun_copy_move_constructor::Y_Y(&y1:class copy_move_constructor::Y *) [line 75]\n " shape="box"] "copy_move_constructor::getX5" [label="5: DeclStmt \n _fun_copy_move_constructor::X_X(&x:class copy_move_constructor::X *) [line 30]\n " shape="box"]
65 -> 64 ; "copy_move_constructor::getX5" -> "copy_move_constructor::getX4" ;
64 [label="64: BinaryOperatorStmt: Assign \n *&y1.f:int =1 [line 76]\n " shape="box"] "copy_move_constructor::getX4" [label="4: BinaryOperatorStmt: Assign \n n$1=*&f:int [line 31]\n *&x.f:int =n$1 [line 31]\n " shape="box"]
64 -> 63 ; "copy_move_constructor::getX4" -> "copy_move_constructor::getX3" ;
63 [label="63: DeclStmt \n _fun_copy_move_constructor::Y_Y(&y2:class copy_move_constructor::Y *,&y1:class copy_move_constructor::Y &) [line 77]\n " shape="box"] "copy_move_constructor::getX3" [label="3: Return Stmt \n n$0=*&__return_param:class copy_move_constructor::X * [line 32]\n _fun_copy_move_constructor::X_X(n$0:class copy_move_constructor::X *,&x:class copy_move_constructor::X &) [line 32]\n " shape="box"]
63 -> 62 ; "copy_move_constructor::getX3" -> "copy_move_constructor::getX2" ;
62 [label="62: DeclStmt \n n$5=*&y2.f:int [line 78]\n *&d1:int =(1 / n$5) [line 78]\n " shape="box"] "copy_move_constructor::getX2" [label="2: Exit copy_move_constructor::getX \n " color=yellow style=filled]
62 -> 61 ; "copy_move_constructor::getX1" [label="1: Start copy_move_constructor::getX\nFormals: f:int __return_param:class copy_move_constructor::X *\nLocals: x:class copy_move_constructor::X \n DECLARE_LOCALS(&return,&x); [line 29]\n " color=yellow style=filled]
61 [label="61: DeclStmt \n _fun_copy_move_constructor::getY(2:int ,&0$?%__sil_tmp__temp_return_n$3:class copy_move_constructor::Y *) [line 79]\n n$4=*&0$?%__sil_tmp__temp_return_n$3.f:int [line 79]\n *&d2:int =(1 / n$4) [line 79]\n " shape="box"]
61 -> 60 ; "copy_move_constructor::getX1" -> "copy_move_constructor::getX5" ;
60 [label="60: Return Stmt \n n$0=*&d1:int [line 80]\n n$1=*&d2:int [line 80]\n *&return:int =(n$0 + n$1) [line 80]\n " shape="box"] "copy_move_constructor::moveY_div03" [label="3: Return Stmt \n _fun_copy_move_constructor::getY(1:int ,&0$?%__sil_tmp__temp_return_n$1:class copy_move_constructor::Y *) [line 57]\n n$2=*&0$?%__sil_tmp__temp_return_n$1.f:int [line 57]\n *&return:int =(1 / n$2) [line 57]\n " shape="box"]
60 -> 59 ; "copy_move_constructor::moveY_div03" -> "copy_move_constructor::moveY_div02" ;
59 [label="59: Exit copy_move_constructor::copyY_moveY_div1 \n " color=yellow style=filled] "copy_move_constructor::moveY_div02" [label="2: Exit copy_move_constructor::moveY_div0 \n " color=yellow style=filled]
58 [label="58: Start copy_move_constructor::copyY_moveY_div1\nFormals: \nLocals: d2:int 0$?%__sil_tmp__temp_return_n$3:class copy_move_constructor::Y d1:int y2:class copy_move_constructor::Y y1:class copy_move_constructor::Y \n DECLARE_LOCALS(&return,&d2,&0$?%__sil_tmp__temp_return_n$3,&d1,&y2,&y1); [line 74]\n " color=yellow style=filled] "copy_move_constructor::moveY_div01" [label="1: Start copy_move_constructor::moveY_div0\nFormals: \nLocals: 0$?%__sil_tmp__temp_return_n$1:class copy_move_constructor::Y \n DECLARE_LOCALS(&return,&0$?%__sil_tmp__temp_return_n$1); [line 57]\n " color=yellow style=filled]
58 -> 65 ; "copy_move_constructor::moveY_div01" -> "copy_move_constructor::moveY_div03" ;
57 [label="57: DeclStmt \n _fun_copy_move_constructor::X_X(&x1:class copy_move_constructor::X *) [line 66]\n " shape="box"] "copy_move_constructor::moveX_div03" [label="3: Return Stmt \n _fun_copy_move_constructor::getX(0:int ,&0$?%__sil_tmp__temp_return_n$1:class copy_move_constructor::X *) [line 48]\n n$2=*&0$?%__sil_tmp__temp_return_n$1.f:int [line 48]\n *&return:int =(1 / n$2) [line 48]\n " shape="box"]
57 -> 56 ; "copy_move_constructor::moveX_div03" -> "copy_move_constructor::moveX_div02" ;
56 [label="56: BinaryOperatorStmt: Assign \n *&x1.f:int =1 [line 67]\n " shape="box"] "copy_move_constructor::moveX_div02" [label="2: Exit copy_move_constructor::moveX_div0 \n " color=yellow style=filled]
56 -> 55 ; "copy_move_constructor::moveX_div01" [label="1: Start copy_move_constructor::moveX_div0\nFormals: \nLocals: 0$?%__sil_tmp__temp_return_n$1:class copy_move_constructor::X \n DECLARE_LOCALS(&return,&0$?%__sil_tmp__temp_return_n$1); [line 48]\n " color=yellow style=filled]
55 [label="55: DeclStmt \n _fun_copy_move_constructor::X_X(&x2:class copy_move_constructor::X *,&x1:class copy_move_constructor::X &) [line 68]\n " shape="box"]
55 -> 54 ; "copy_move_constructor::moveX_div01" -> "copy_move_constructor::moveX_div03" ;
54 [label="54: DeclStmt \n n$5=*&x2.f:int [line 69]\n *&d1:int =(1 / n$5) [line 69]\n " shape="box"] "copy_move_constructor::Y_Y2" [label="2: Exit copy_move_constructor::Y_Y \n " color=yellow style=filled]
54 -> 53 ; "copy_move_constructor::Y_Y1" [label="1: Start copy_move_constructor::Y_Y\nFormals: this:class copy_move_constructor::Y *\nLocals: \n DECLARE_LOCALS(&return); [line 23]\n " color=yellow style=filled]
53 [label="53: DeclStmt \n _fun_copy_move_constructor::getX(1:int ,&0$?%__sil_tmp__temp_return_n$3:class copy_move_constructor::X *) [line 70]\n n$4=*&0$?%__sil_tmp__temp_return_n$3.f:int [line 70]\n *&d2:int =(1 / n$4) [line 70]\n " shape="box"]
53 -> 52 ; "copy_move_constructor::Y_Y1" -> "copy_move_constructor::Y_Y2" ;
52 [label="52: Return Stmt \n n$0=*&d1:int [line 71]\n n$1=*&d2:int [line 71]\n *&return:int =(n$0 + n$1) [line 71]\n " shape="box"] "copy_move_constructor::copyX_moveX_div18" [label="8: DeclStmt \n _fun_copy_move_constructor::X_X(&x1:class copy_move_constructor::X *) [line 66]\n " shape="box"]
52 -> 51 ; "copy_move_constructor::copyX_moveX_div18" -> "copy_move_constructor::copyX_moveX_div17" ;
51 [label="51: Exit copy_move_constructor::copyX_moveX_div1 \n " color=yellow style=filled] "copy_move_constructor::copyX_moveX_div17" [label="7: BinaryOperatorStmt: Assign \n *&x1.f:int =1 [line 67]\n " shape="box"]
50 [label="50: Start copy_move_constructor::copyX_moveX_div1\nFormals: \nLocals: d2:int 0$?%__sil_tmp__temp_return_n$3:class copy_move_constructor::X d1:int x2:class copy_move_constructor::X x1:class copy_move_constructor::X \n DECLARE_LOCALS(&return,&d2,&0$?%__sil_tmp__temp_return_n$3,&d1,&x2,&x1); [line 65]\n " color=yellow style=filled] "copy_move_constructor::copyX_moveX_div17" -> "copy_move_constructor::copyX_moveX_div16" ;
"copy_move_constructor::copyX_moveX_div16" [label="6: DeclStmt \n _fun_copy_move_constructor::X_X(&x2:class copy_move_constructor::X *,&x1:class copy_move_constructor::X &) [line 68]\n " shape="box"]
50 -> 57 ; "copy_move_constructor::copyX_moveX_div16" -> "copy_move_constructor::copyX_moveX_div15" ;
49 [label="49: DeclStmt \n _fun_copy_move_constructor::getY(2:int ,&0$?%__sil_tmpSIL_materialize_temp__n$1:class copy_move_constructor::Y *) [line 60]\n _fun_copy_move_constructor::Y_Y(&y1:class copy_move_constructor::Y *,&0$?%__sil_tmpSIL_materialize_temp__n$1:class copy_move_constructor::Y &) [line 60]\n " shape="box"] "copy_move_constructor::copyX_moveX_div15" [label="5: DeclStmt \n n$5=*&x2.f:int [line 69]\n *&d1:int =(1 / n$5) [line 69]\n " shape="box"]
49 -> 48 ; "copy_move_constructor::copyX_moveX_div15" -> "copy_move_constructor::copyX_moveX_div14" ;
48 [label="48: DeclStmt \n _fun_copy_move_constructor::Y_Y(&y2:class copy_move_constructor::Y *,&y1:class copy_move_constructor::Y &) [line 61]\n " shape="box"] "copy_move_constructor::copyX_moveX_div14" [label="4: DeclStmt \n _fun_copy_move_constructor::getX(1:int ,&0$?%__sil_tmp__temp_return_n$3:class copy_move_constructor::X *) [line 70]\n n$4=*&0$?%__sil_tmp__temp_return_n$3.f:int [line 70]\n *&d2:int =(1 / n$4) [line 70]\n " shape="box"]
48 -> 47 ; "copy_move_constructor::copyX_moveX_div14" -> "copy_move_constructor::copyX_moveX_div13" ;
47 [label="47: Return Stmt \n n$0=*&y2.f:int [line 62]\n *&return:int =(1 / n$0) [line 62]\n " shape="box"] "copy_move_constructor::copyX_moveX_div13" [label="3: Return Stmt \n n$0=*&d1:int [line 71]\n n$1=*&d2:int [line 71]\n *&return:int =(n$0 + n$1) [line 71]\n " shape="box"]
47 -> 46 ; "copy_move_constructor::copyX_moveX_div13" -> "copy_move_constructor::copyX_moveX_div12" ;
46 [label="46: Exit copy_move_constructor::moveY_moveY_copyY_div0 \n " color=yellow style=filled] "copy_move_constructor::copyX_moveX_div12" [label="2: Exit copy_move_constructor::copyX_moveX_div1 \n " color=yellow style=filled]
45 [label="45: Start copy_move_constructor::moveY_moveY_copyY_div0\nFormals: \nLocals: y2:class copy_move_constructor::Y y1:class copy_move_constructor::Y 0$?%__sil_tmpSIL_materialize_temp__n$1:class copy_move_constructor::Y \n DECLARE_LOCALS(&return,&y2,&y1,&0$?%__sil_tmpSIL_materialize_temp__n$1); [line 59]\n " color=yellow style=filled] "copy_move_constructor::copyX_moveX_div11" [label="1: Start copy_move_constructor::copyX_moveX_div1\nFormals: \nLocals: d2:int 0$?%__sil_tmp__temp_return_n$3:class copy_move_constructor::X d1:int x2:class copy_move_constructor::X x1:class copy_move_constructor::X \n DECLARE_LOCALS(&return,&d2,&0$?%__sil_tmp__temp_return_n$3,&d1,&x2,&x1); [line 65]\n " color=yellow style=filled]
45 -> 49 ; "copy_move_constructor::copyX_moveX_div11" -> "copy_move_constructor::copyX_moveX_div18" ;
44 [label="44: Return Stmt \n _fun_copy_move_constructor::getY(1:int ,&0$?%__sil_tmp__temp_return_n$1:class copy_move_constructor::Y *) [line 57]\n n$2=*&0$?%__sil_tmp__temp_return_n$1.f:int [line 57]\n *&return:int =(1 / n$2) [line 57]\n " shape="box"] "copy_move_constructor::Y_Y3" [label="3: Constructor Init \n n$0=*&this:class copy_move_constructor::Y * [line 24]\n n$1=*&y:class copy_move_constructor::Y & [line 24]\n n$2=*n$1.f:int [line 24]\n *n$0.f:int =n$2 [line 24]\n " shape="box"]
44 -> 43 ; "copy_move_constructor::Y_Y3" -> "copy_move_constructor::Y_Y2" ;
43 [label="43: Exit copy_move_constructor::moveY_div0 \n " color=yellow style=filled] "copy_move_constructor::Y_Y2" [label="2: Exit copy_move_constructor::Y_Y \n " color=yellow style=filled]
42 [label="42: Start copy_move_constructor::moveY_div0\nFormals: \nLocals: 0$?%__sil_tmp__temp_return_n$1:class copy_move_constructor::Y \n DECLARE_LOCALS(&return,&0$?%__sil_tmp__temp_return_n$1); [line 57]\n " color=yellow style=filled] "copy_move_constructor::Y_Y1" [label="1: Start copy_move_constructor::Y_Y\nFormals: this:class copy_move_constructor::Y * y:class copy_move_constructor::Y &\nLocals: \n DECLARE_LOCALS(&return); [line 24]\n " color=yellow style=filled]
42 -> 44 ; "copy_move_constructor::Y_Y1" -> "copy_move_constructor::Y_Y3" ;
41 [label="41: DeclStmt \n _fun_copy_move_constructor::Y_Y(&y1:class copy_move_constructor::Y *) [line 51]\n " shape="box"] "copy_move_constructor::getY5" [label="5: DeclStmt \n _fun_copy_move_constructor::Y_Y(&y:class copy_move_constructor::Y *) [line 36]\n " shape="box"]
41 -> 40 ; "copy_move_constructor::getY5" -> "copy_move_constructor::getY4" ;
40 [label="40: BinaryOperatorStmt: Assign \n *&y1.f:int =0 [line 52]\n " shape="box"] "copy_move_constructor::getY4" [label="4: BinaryOperatorStmt: Assign \n n$1=*&f:int [line 37]\n *&y.f:int =n$1 [line 37]\n " shape="box"]
40 -> 39 ; "copy_move_constructor::getY4" -> "copy_move_constructor::getY3" ;
39 [label="39: DeclStmt \n _fun_copy_move_constructor::Y_Y(&y2:class copy_move_constructor::Y *,&y1:class copy_move_constructor::Y &) [line 53]\n " shape="box"] "copy_move_constructor::getY3" [label="3: Return Stmt \n n$0=*&__return_param:class copy_move_constructor::Y * [line 38]\n _fun_copy_move_constructor::Y_Y(n$0:class copy_move_constructor::Y *,&y:class copy_move_constructor::Y &) [line 38]\n " shape="box"]
39 -> 38 ; "copy_move_constructor::getY3" -> "copy_move_constructor::getY2" ;
38 [label="38: Return Stmt \n n$0=*&y2.f:int [line 54]\n *&return:int =(1 / n$0) [line 54]\n " shape="box"] "copy_move_constructor::getY2" [label="2: Exit copy_move_constructor::getY \n " color=yellow style=filled]
38 -> 37 ; "copy_move_constructor::getY1" [label="1: Start copy_move_constructor::getY\nFormals: f:int __return_param:class copy_move_constructor::Y *\nLocals: y:class copy_move_constructor::Y \n DECLARE_LOCALS(&return,&y); [line 35]\n " color=yellow style=filled]
37 [label="37: Exit copy_move_constructor::copyY_div0 \n " color=yellow style=filled]
36 [label="36: Start copy_move_constructor::copyY_div0\nFormals: \nLocals: y2:class copy_move_constructor::Y y1:class copy_move_constructor::Y \n DECLARE_LOCALS(&return,&y2,&y1); [line 50]\n " color=yellow style=filled] "copy_move_constructor::getY1" -> "copy_move_constructor::getY5" ;
"copy_move_constructor::copyY_moveY_div18" [label="8: DeclStmt \n _fun_copy_move_constructor::Y_Y(&y1:class copy_move_constructor::Y *) [line 75]\n " shape="box"]
36 -> 41 ; "copy_move_constructor::copyY_moveY_div18" -> "copy_move_constructor::copyY_moveY_div17" ;
35 [label="35: Return Stmt \n _fun_copy_move_constructor::getX(0:int ,&0$?%__sil_tmp__temp_return_n$1:class copy_move_constructor::X *) [line 48]\n n$2=*&0$?%__sil_tmp__temp_return_n$1.f:int [line 48]\n *&return:int =(1 / n$2) [line 48]\n " shape="box"] "copy_move_constructor::copyY_moveY_div17" [label="7: BinaryOperatorStmt: Assign \n *&y1.f:int =1 [line 76]\n " shape="box"]
35 -> 34 ; "copy_move_constructor::copyY_moveY_div17" -> "copy_move_constructor::copyY_moveY_div16" ;
34 [label="34: Exit copy_move_constructor::moveX_div0 \n " color=yellow style=filled] "copy_move_constructor::copyY_moveY_div16" [label="6: DeclStmt \n _fun_copy_move_constructor::Y_Y(&y2:class copy_move_constructor::Y *,&y1:class copy_move_constructor::Y &) [line 77]\n " shape="box"]
33 [label="33: Start copy_move_constructor::moveX_div0\nFormals: \nLocals: 0$?%__sil_tmp__temp_return_n$1:class copy_move_constructor::X \n DECLARE_LOCALS(&return,&0$?%__sil_tmp__temp_return_n$1); [line 48]\n " color=yellow style=filled] "copy_move_constructor::copyY_moveY_div16" -> "copy_move_constructor::copyY_moveY_div15" ;
"copy_move_constructor::copyY_moveY_div15" [label="5: DeclStmt \n n$5=*&y2.f:int [line 78]\n *&d1:int =(1 / n$5) [line 78]\n " shape="box"]
33 -> 35 ; "copy_move_constructor::copyY_moveY_div15" -> "copy_move_constructor::copyY_moveY_div14" ;
32 [label="32: DeclStmt \n _fun_copy_move_constructor::X_X(&x1:class copy_move_constructor::X *) [line 42]\n " shape="box"] "copy_move_constructor::copyY_moveY_div14" [label="4: DeclStmt \n _fun_copy_move_constructor::getY(2:int ,&0$?%__sil_tmp__temp_return_n$3:class copy_move_constructor::Y *) [line 79]\n n$4=*&0$?%__sil_tmp__temp_return_n$3.f:int [line 79]\n *&d2:int =(1 / n$4) [line 79]\n " shape="box"]
32 -> 31 ; "copy_move_constructor::copyY_moveY_div14" -> "copy_move_constructor::copyY_moveY_div13" ;
31 [label="31: BinaryOperatorStmt: Assign \n *&x1.f:int =0 [line 43]\n " shape="box"] "copy_move_constructor::copyY_moveY_div13" [label="3: Return Stmt \n n$0=*&d1:int [line 80]\n n$1=*&d2:int [line 80]\n *&return:int =(n$0 + n$1) [line 80]\n " shape="box"]
31 -> 30 ; "copy_move_constructor::copyY_moveY_div13" -> "copy_move_constructor::copyY_moveY_div12" ;
30 [label="30: DeclStmt \n _fun_copy_move_constructor::X_X(&x2:class copy_move_constructor::X *,&x1:class copy_move_constructor::X &) [line 44]\n " shape="box"] "copy_move_constructor::copyY_moveY_div12" [label="2: Exit copy_move_constructor::copyY_moveY_div1 \n " color=yellow style=filled]
30 -> 29 ; "copy_move_constructor::copyY_moveY_div11" [label="1: Start copy_move_constructor::copyY_moveY_div1\nFormals: \nLocals: d2:int 0$?%__sil_tmp__temp_return_n$3:class copy_move_constructor::Y d1:int y2:class copy_move_constructor::Y y1:class copy_move_constructor::Y \n DECLARE_LOCALS(&return,&d2,&0$?%__sil_tmp__temp_return_n$3,&d1,&y2,&y1); [line 74]\n " color=yellow style=filled]
29 [label="29: Return Stmt \n n$0=*&x2.f:int [line 45]\n *&return:int =(1 / n$0) [line 45]\n " shape="box"]
29 -> 28 ; "copy_move_constructor::copyY_moveY_div11" -> "copy_move_constructor::copyY_moveY_div18" ;
28 [label="28: Exit copy_move_constructor::copyX_div0 \n " color=yellow style=filled] "copy_move_constructor::X_X3" [label="3: Constructor Init \n n$0=*&this:class copy_move_constructor::X * [line 15]\n n$1=*&__param_0:class copy_move_constructor::X & [line 15]\n n$2=*n$1.f:int [line 15]\n *n$0.f:int =n$2 [line 15]\n " shape="box"]
27 [label="27: Start copy_move_constructor::copyX_div0\nFormals: \nLocals: x2:class copy_move_constructor::X x1:class copy_move_constructor::X \n DECLARE_LOCALS(&return,&x2,&x1); [line 41]\n " color=yellow style=filled] "copy_move_constructor::X_X3" -> "copy_move_constructor::X_X2" ;
"copy_move_constructor::X_X2" [label="2: Exit copy_move_constructor::X_X \n " color=yellow style=filled]
27 -> 32 ; "copy_move_constructor::X_X1" [label="1: Start copy_move_constructor::X_X\nFormals: this:class copy_move_constructor::X * __param_0:class copy_move_constructor::X &\nLocals: \n DECLARE_LOCALS(&return); [line 15]\n " color=yellow style=filled]
26 [label="26: DeclStmt \n _fun_copy_move_constructor::Y_Y(&y:class copy_move_constructor::Y *) [line 36]\n " shape="box"]
26 -> 25 ; "copy_move_constructor::X_X1" -> "copy_move_constructor::X_X3" ;
25 [label="25: BinaryOperatorStmt: Assign \n n$1=*&f:int [line 37]\n *&y.f:int =n$1 [line 37]\n " shape="box"] "copy_move_constructor::Y_Y3" [label="3: Constructor Init \n n$0=*&this:class copy_move_constructor::Y * [line 26]\n n$1=*&y:class copy_move_constructor::Y & [line 26]\n n$2=*n$1.f:int [line 26]\n *n$0.f:int =(n$2 - 1) [line 26]\n " shape="box"]
25 -> 24 ; "copy_move_constructor::Y_Y3" -> "copy_move_constructor::Y_Y2" ;
24 [label="24: Return Stmt \n n$0=*&__return_param:class copy_move_constructor::Y * [line 38]\n _fun_copy_move_constructor::Y_Y(n$0:class copy_move_constructor::Y *,&y:class copy_move_constructor::Y &) [line 38]\n " shape="box"] "copy_move_constructor::Y_Y2" [label="2: Exit copy_move_constructor::Y_Y \n " color=yellow style=filled]
24 -> 23 ; "copy_move_constructor::Y_Y1" [label="1: Start copy_move_constructor::Y_Y\nFormals: this:class copy_move_constructor::Y * y:class copy_move_constructor::Y &\nLocals: \n DECLARE_LOCALS(&return); [line 26]\n " color=yellow style=filled]
23 [label="23: Exit copy_move_constructor::getY \n " color=yellow style=filled]
22 [label="22: Start copy_move_constructor::getY\nFormals: f:int __return_param:class copy_move_constructor::Y *\nLocals: y:class copy_move_constructor::Y \n DECLARE_LOCALS(&return,&y); [line 35]\n " color=yellow style=filled] "copy_move_constructor::Y_Y1" -> "copy_move_constructor::Y_Y3" ;
"copy_move_constructor::X_X2" [label="2: Exit copy_move_constructor::X_X \n " color=yellow style=filled]
22 -> 26 ; "copy_move_constructor::X_X1" [label="1: Start copy_move_constructor::X_X\nFormals: this:class copy_move_constructor::X *\nLocals: \n DECLARE_LOCALS(&return); [line 15]\n " color=yellow style=filled]
21 [label="21: DeclStmt \n _fun_copy_move_constructor::X_X(&x:class copy_move_constructor::X *) [line 30]\n " shape="box"]
21 -> 20 ; "copy_move_constructor::X_X1" -> "copy_move_constructor::X_X2" ;
20 [label="20: BinaryOperatorStmt: Assign \n n$1=*&f:int [line 31]\n *&x.f:int =n$1 [line 31]\n " shape="box"] "copy_move_constructor::moveY_moveY_copyY_div05" [label="5: DeclStmt \n _fun_copy_move_constructor::getY(2:int ,&0$?%__sil_tmpSIL_materialize_temp__n$1:class copy_move_constructor::Y *) [line 60]\n _fun_copy_move_constructor::Y_Y(&y1:class copy_move_constructor::Y *,&0$?%__sil_tmpSIL_materialize_temp__n$1:class copy_move_constructor::Y &) [line 60]\n " shape="box"]
20 -> 19 ; "copy_move_constructor::moveY_moveY_copyY_div05" -> "copy_move_constructor::moveY_moveY_copyY_div04" ;
19 [label="19: Return Stmt \n n$0=*&__return_param:class copy_move_constructor::X * [line 32]\n _fun_copy_move_constructor::X_X(n$0:class copy_move_constructor::X *,&x:class copy_move_constructor::X &) [line 32]\n " shape="box"] "copy_move_constructor::moveY_moveY_copyY_div04" [label="4: DeclStmt \n _fun_copy_move_constructor::Y_Y(&y2:class copy_move_constructor::Y *,&y1:class copy_move_constructor::Y &) [line 61]\n " shape="box"]
19 -> 18 ; "copy_move_constructor::moveY_moveY_copyY_div04" -> "copy_move_constructor::moveY_moveY_copyY_div03" ;
18 [label="18: Exit copy_move_constructor::getX \n " color=yellow style=filled] "copy_move_constructor::moveY_moveY_copyY_div03" [label="3: Return Stmt \n n$0=*&y2.f:int [line 62]\n *&return:int =(1 / n$0) [line 62]\n " shape="box"]
17 [label="17: Start copy_move_constructor::getX\nFormals: f:int __return_param:class copy_move_constructor::X *\nLocals: x:class copy_move_constructor::X \n DECLARE_LOCALS(&return,&x); [line 29]\n " color=yellow style=filled] "copy_move_constructor::moveY_moveY_copyY_div03" -> "copy_move_constructor::moveY_moveY_copyY_div02" ;
"copy_move_constructor::moveY_moveY_copyY_div02" [label="2: Exit copy_move_constructor::moveY_moveY_copyY_div0 \n " color=yellow style=filled]
17 -> 21 ; "copy_move_constructor::moveY_moveY_copyY_div01" [label="1: Start copy_move_constructor::moveY_moveY_copyY_div0\nFormals: \nLocals: y2:class copy_move_constructor::Y y1:class copy_move_constructor::Y 0$?%__sil_tmpSIL_materialize_temp__n$1:class copy_move_constructor::Y \n DECLARE_LOCALS(&return,&y2,&y1,&0$?%__sil_tmpSIL_materialize_temp__n$1); [line 59]\n " color=yellow style=filled]
16 [label="16: Constructor Init \n n$0=*&this:class copy_move_constructor::Y * [line 26]\n n$1=*&y:class copy_move_constructor::Y & [line 26]\n n$2=*n$1.f:int [line 26]\n *n$0.f:int =(n$2 - 1) [line 26]\n " shape="box"]
16 -> 15 ; "copy_move_constructor::moveY_moveY_copyY_div01" -> "copy_move_constructor::moveY_moveY_copyY_div05" ;
15 [label="15: Exit copy_move_constructor::Y_Y \n " color=yellow style=filled] "copy_move_constructor::copyY_div06" [label="6: DeclStmt \n _fun_copy_move_constructor::Y_Y(&y1:class copy_move_constructor::Y *) [line 51]\n " shape="box"]
14 [label="14: Start copy_move_constructor::Y_Y\nFormals: this:class copy_move_constructor::Y * y:class copy_move_constructor::Y &\nLocals: \n DECLARE_LOCALS(&return); [line 26]\n " color=yellow style=filled] "copy_move_constructor::copyY_div06" -> "copy_move_constructor::copyY_div05" ;
"copy_move_constructor::copyY_div05" [label="5: BinaryOperatorStmt: Assign \n *&y1.f:int =0 [line 52]\n " shape="box"]
14 -> 16 ; "copy_move_constructor::copyY_div05" -> "copy_move_constructor::copyY_div04" ;
13 [label="13: Constructor Init \n n$0=*&this:class copy_move_constructor::Y * [line 24]\n n$1=*&y:class copy_move_constructor::Y & [line 24]\n n$2=*n$1.f:int [line 24]\n *n$0.f:int =n$2 [line 24]\n " shape="box"] "copy_move_constructor::copyY_div04" [label="4: DeclStmt \n _fun_copy_move_constructor::Y_Y(&y2:class copy_move_constructor::Y *,&y1:class copy_move_constructor::Y &) [line 53]\n " shape="box"]
13 -> 12 ; "copy_move_constructor::copyY_div04" -> "copy_move_constructor::copyY_div03" ;
12 [label="12: Exit copy_move_constructor::Y_Y \n " color=yellow style=filled] "copy_move_constructor::copyY_div03" [label="3: Return Stmt \n n$0=*&y2.f:int [line 54]\n *&return:int =(1 / n$0) [line 54]\n " shape="box"]
11 [label="11: Start copy_move_constructor::Y_Y\nFormals: this:class copy_move_constructor::Y * y:class copy_move_constructor::Y &\nLocals: \n DECLARE_LOCALS(&return); [line 24]\n " color=yellow style=filled] "copy_move_constructor::copyY_div03" -> "copy_move_constructor::copyY_div02" ;
"copy_move_constructor::copyY_div02" [label="2: Exit copy_move_constructor::copyY_div0 \n " color=yellow style=filled]
11 -> 13 ; "copy_move_constructor::copyY_div01" [label="1: Start copy_move_constructor::copyY_div0\nFormals: \nLocals: y2:class copy_move_constructor::Y y1:class copy_move_constructor::Y \n DECLARE_LOCALS(&return,&y2,&y1); [line 50]\n " color=yellow style=filled]
10 [label="10: Exit copy_move_constructor::Y_Y \n " color=yellow style=filled]
9 [label="9: Start copy_move_constructor::Y_Y\nFormals: this:class copy_move_constructor::Y *\nLocals: \n DECLARE_LOCALS(&return); [line 23]\n " color=yellow style=filled] "copy_move_constructor::copyY_div01" -> "copy_move_constructor::copyY_div06" ;
"copy_move_constructor::copyX_div06" [label="6: DeclStmt \n _fun_copy_move_constructor::X_X(&x1:class copy_move_constructor::X *) [line 42]\n " shape="box"]
9 -> 10 ; "copy_move_constructor::copyX_div06" -> "copy_move_constructor::copyX_div05" ;
8 [label="8: Constructor Init \n n$0=*&this:class copy_move_constructor::X * [line 15]\n n$1=*&__param_0:class copy_move_constructor::X & [line 15]\n n$2=*n$1.f:int [line 15]\n *n$0.f:int =n$2 [line 15]\n " shape="box"] "copy_move_constructor::copyX_div05" [label="5: BinaryOperatorStmt: Assign \n *&x1.f:int =0 [line 43]\n " shape="box"]
8 -> 7 ; "copy_move_constructor::copyX_div05" -> "copy_move_constructor::copyX_div04" ;
7 [label="7: Exit copy_move_constructor::X_X \n " color=yellow style=filled] "copy_move_constructor::copyX_div04" [label="4: DeclStmt \n _fun_copy_move_constructor::X_X(&x2:class copy_move_constructor::X *,&x1:class copy_move_constructor::X &) [line 44]\n " shape="box"]
6 [label="6: Start copy_move_constructor::X_X\nFormals: this:class copy_move_constructor::X * __param_0:class copy_move_constructor::X &\nLocals: \n DECLARE_LOCALS(&return); [line 15]\n " color=yellow style=filled] "copy_move_constructor::copyX_div04" -> "copy_move_constructor::copyX_div03" ;
"copy_move_constructor::copyX_div03" [label="3: Return Stmt \n n$0=*&x2.f:int [line 45]\n *&return:int =(1 / n$0) [line 45]\n " shape="box"]
6 -> 8 ; "copy_move_constructor::copyX_div03" -> "copy_move_constructor::copyX_div02" ;
5 [label="5: Constructor Init \n n$0=*&this:class copy_move_constructor::X * [line 15]\n n$1=*&__param_0:class copy_move_constructor::X & [line 15]\n n$2=*n$1.f:int [line 15]\n *n$0.f:int =n$2 [line 15]\n " shape="box"] "copy_move_constructor::copyX_div02" [label="2: Exit copy_move_constructor::copyX_div0 \n " color=yellow style=filled]
5 -> 4 ; "copy_move_constructor::copyX_div01" [label="1: Start copy_move_constructor::copyX_div0\nFormals: \nLocals: x2:class copy_move_constructor::X x1:class copy_move_constructor::X \n DECLARE_LOCALS(&return,&x2,&x1); [line 41]\n " color=yellow style=filled]
4 [label="4: Exit copy_move_constructor::X_X \n " color=yellow style=filled]
3 [label="3: Start copy_move_constructor::X_X\nFormals: this:class copy_move_constructor::X * __param_0:class copy_move_constructor::X &\nLocals: \n DECLARE_LOCALS(&return); [line 15]\n " color=yellow style=filled] "copy_move_constructor::copyX_div01" -> "copy_move_constructor::copyX_div06" ;
"copy_move_constructor::X_X3" [label="3: Constructor Init \n n$0=*&this:class copy_move_constructor::X * [line 15]\n n$1=*&__param_0:class copy_move_constructor::X & [line 15]\n n$2=*n$1.f:int [line 15]\n *n$0.f:int =n$2 [line 15]\n " shape="box"]
3 -> 5 ; "copy_move_constructor::X_X3" -> "copy_move_constructor::X_X2" ;
2 [label="2: Exit copy_move_constructor::X_X \n " color=yellow style=filled] "copy_move_constructor::X_X2" [label="2: Exit copy_move_constructor::X_X \n " color=yellow style=filled]
1 [label="1: Start copy_move_constructor::X_X\nFormals: this:class copy_move_constructor::X *\nLocals: \n DECLARE_LOCALS(&return); [line 15]\n " color=yellow style=filled] "copy_move_constructor::X_X1" [label="1: Start copy_move_constructor::X_X\nFormals: this:class copy_move_constructor::X * __param_0:class copy_move_constructor::X &\nLocals: \n DECLARE_LOCALS(&return); [line 15]\n " color=yellow style=filled]
1 -> 2 ; "copy_move_constructor::X_X1" -> "copy_move_constructor::X_X3" ;
} }

@ -1,71 +1,71 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
18 [label="18: DeclStmt \n _fun_Y_Y(&y:class Y *) [line 25]\n " shape="box"] "test3" [label="3: DeclStmt \n _fun_Y_Y(&y:class Y *) [line 25]\n " shape="box"]
18 -> 17 ; "test3" -> "test2" ;
17 [label="17: Exit test \n " color=yellow style=filled] "test2" [label="2: Exit test \n " color=yellow style=filled]
16 [label="16: Start test\nFormals: \nLocals: y:class Y \n DECLARE_LOCALS(&return,&y); [line 25]\n " color=yellow style=filled] "test1" [label="1: Start test\nFormals: \nLocals: y:class Y \n DECLARE_LOCALS(&return,&y); [line 25]\n " color=yellow style=filled]
16 -> 18 ; "test1" -> "test3" ;
15 [label="15: Constructor Init \n n$2=*&this:class Y * [line 20]\n _fun_X_X(n$2.x1:class X *,1:int ,2:int ) [line 20]\n " shape="box"] "X_X5" [label="5: Constructor Init \n n$2=*&this:class X * [line 11]\n *n$2.a:int =-1 [line 11]\n " shape="box"]
15 -> 14 ; "X_X5" -> "X_X4" ;
14 [label="14: Constructor Init \n n$1=*&this:class Y * [line 21]\n _fun_X_X(n$1.x2:class X *) [line 21]\n " shape="box"] "X_X4" [label="4: Constructor Init \n n$1=*&this:class X * [line 12]\n *n$1.b:int =-2 [line 12]\n " shape="box"]
14 -> 13 ; "X_X4" -> "X_X3" ;
13 [label="13: Constructor Init \n n$0=*&this:class Y * [line 19]\n _fun_X_X(n$0.x3:class X *) [line 19]\n " shape="box"] "X_X3" [label="3: Constructor Init \n n$0=*&this:class X * [line 13]\n *n$0.c:int =0 [line 13]\n " shape="box"]
13 -> 12 ; "X_X3" -> "X_X2" ;
12 [label="12: Exit Y_Y \n " color=yellow style=filled] "X_X2" [label="2: Exit X_X \n " color=yellow style=filled]
11 [label="11: Start Y_Y\nFormals: this:class Y *\nLocals: \n DECLARE_LOCALS(&return); [line 19]\n " color=yellow style=filled] "X_X1" [label="1: Start X_X\nFormals: this:class X *\nLocals: \n DECLARE_LOCALS(&return); [line 15]\n " color=yellow style=filled]
11 -> 15 ; "X_X1" -> "X_X5" ;
10 [label="10: Constructor Init \n n$2=*&this:class X * [line 16]\n n$3=*&a:int [line 16]\n n$4=*&b:int [line 16]\n *n$2.a:int =(n$3 + n$4) [line 16]\n " shape="box"] "Y_Y5" [label="5: Constructor Init \n n$2=*&this:class Y * [line 20]\n _fun_X_X(n$2.x1:class X *,1:int ,2:int ) [line 20]\n " shape="box"]
10 -> 9 ; "Y_Y5" -> "Y_Y4" ;
9 [label="9: Constructor Init \n n$1=*&this:class X * [line 12]\n *n$1.b:int =-2 [line 12]\n " shape="box"] "Y_Y4" [label="4: Constructor Init \n n$1=*&this:class Y * [line 21]\n _fun_X_X(n$1.x2:class X *) [line 21]\n " shape="box"]
9 -> 8 ; "Y_Y4" -> "Y_Y3" ;
8 [label="8: Constructor Init \n n$0=*&this:class X * [line 13]\n *n$0.c:int =0 [line 13]\n " shape="box"] "Y_Y3" [label="3: Constructor Init \n n$0=*&this:class Y * [line 19]\n _fun_X_X(n$0.x3:class X *) [line 19]\n " shape="box"]
8 -> 7 ; "Y_Y3" -> "Y_Y2" ;
7 [label="7: Exit X_X \n " color=yellow style=filled] "Y_Y2" [label="2: Exit Y_Y \n " color=yellow style=filled]
6 [label="6: Start X_X\nFormals: this:class X * a:int b:int \nLocals: \n DECLARE_LOCALS(&return); [line 16]\n " color=yellow style=filled] "Y_Y1" [label="1: Start Y_Y\nFormals: this:class Y *\nLocals: \n DECLARE_LOCALS(&return); [line 19]\n " color=yellow style=filled]
6 -> 10 ; "Y_Y1" -> "Y_Y5" ;
5 [label="5: Constructor Init \n n$2=*&this:class X * [line 11]\n *n$2.a:int =-1 [line 11]\n " shape="box"] "X_X5" [label="5: Constructor Init \n n$2=*&this:class X * [line 16]\n n$3=*&a:int [line 16]\n n$4=*&b:int [line 16]\n *n$2.a:int =(n$3 + n$4) [line 16]\n " shape="box"]
5 -> 4 ; "X_X5" -> "X_X4" ;
4 [label="4: Constructor Init \n n$1=*&this:class X * [line 12]\n *n$1.b:int =-2 [line 12]\n " shape="box"] "X_X4" [label="4: Constructor Init \n n$1=*&this:class X * [line 12]\n *n$1.b:int =-2 [line 12]\n " shape="box"]
4 -> 3 ; "X_X4" -> "X_X3" ;
3 [label="3: Constructor Init \n n$0=*&this:class X * [line 13]\n *n$0.c:int =0 [line 13]\n " shape="box"] "X_X3" [label="3: Constructor Init \n n$0=*&this:class X * [line 13]\n *n$0.c:int =0 [line 13]\n " shape="box"]
3 -> 2 ; "X_X3" -> "X_X2" ;
2 [label="2: Exit X_X \n " color=yellow style=filled] "X_X2" [label="2: Exit X_X \n " color=yellow style=filled]
1 [label="1: Start X_X\nFormals: this:class X *\nLocals: \n DECLARE_LOCALS(&return); [line 15]\n " color=yellow style=filled] "X_X1" [label="1: Start X_X\nFormals: this:class X * a:int b:int \nLocals: \n DECLARE_LOCALS(&return); [line 16]\n " color=yellow style=filled]
1 -> 5 ; "X_X1" -> "X_X5" ;
} }

@ -1,72 +1,72 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
18 [label="18: DeclStmt \n *&0$?%__sil_tmpSIL_materialize_temp__n$0[0]:int =1 [line 24]\n *&0$?%__sil_tmpSIL_materialize_temp__n$0[1]:int =2 [line 24]\n *&0$?%__sil_tmpSIL_materialize_temp__n$0[2]:int =3 [line 24]\n *&0$?%__sil_tmpSIL_materialize_temp__n$0[3]:int =4 [line 24]\n *&0$?%__sil_tmpSIL_materialize_temp__n$0[4]:int =5 [line 24]\n n$1=_fun___infer_skip_function(&0$?%__sil_tmpSIL_materialize_temp__n$0:int [5]) [line 24]\n _fun_X_X(&x:class X *,n$1:class std::initializer_list<int> ) [line 24]\n " shape="box"] "main3" [label="3: DeclStmt \n *&0$?%__sil_tmpSIL_materialize_temp__n$0[0]:int =1 [line 24]\n *&0$?%__sil_tmpSIL_materialize_temp__n$0[1]:int =2 [line 24]\n *&0$?%__sil_tmpSIL_materialize_temp__n$0[2]:int =3 [line 24]\n *&0$?%__sil_tmpSIL_materialize_temp__n$0[3]:int =4 [line 24]\n *&0$?%__sil_tmpSIL_materialize_temp__n$0[4]:int =5 [line 24]\n n$1=_fun___infer_skip_function(&0$?%__sil_tmpSIL_materialize_temp__n$0:int [5]) [line 24]\n _fun_X_X(&x:class X *,n$1:class std::initializer_list<int> ) [line 24]\n " shape="box"]
18 -> 17 ; "main3" -> "main2" ;
17 [label="17: Exit main \n " color=yellow style=filled] "main2" [label="2: Exit main \n " color=yellow style=filled]
16 [label="16: Start main\nFormals: \nLocals: x:class X 0$?%__sil_tmpSIL_materialize_temp__n$0:int [5] \n DECLARE_LOCALS(&return,&x,&0$?%__sil_tmpSIL_materialize_temp__n$0); [line 24]\n " color=yellow style=filled] "main1" [label="1: Start main\nFormals: \nLocals: x:class X 0$?%__sil_tmpSIL_materialize_temp__n$0:int [5] \n DECLARE_LOCALS(&return,&x,&0$?%__sil_tmpSIL_materialize_temp__n$0); [line 24]\n " color=yellow style=filled]
16 -> 18 ; "main1" -> "main3" ;
15 [label="15: BinaryOperatorStmt: Assign \n n$8=*&this:class X * [line 16]\n n$9=*&this:class X * [line 16]\n n$10=*n$9.sum:int [line 16]\n n$11=*&i:int * [line 16]\n n$12=*n$11:int [line 16]\n *n$8.sum:int =(n$10 + n$12) [line 16]\n " shape="box"] "X_X9" [label="9: BinaryOperatorStmt: Assign \n n$8=*&this:class X * [line 16]\n n$9=*&this:class X * [line 16]\n n$10=*n$9.sum:int [line 16]\n n$11=*&i:int * [line 16]\n n$12=*n$11:int [line 16]\n *n$8.sum:int =(n$10 + n$12) [line 16]\n " shape="box"]
15 -> 11 ; "X_X9" -> "X_X5" ;
14 [label="14: Prune (false branch) \n PRUNE(((n$4 != n$7) == 0), false); [line 15]\n " shape="invhouse"] "X_X8" [label="8: Prune (false branch) \n PRUNE(((n$4 != n$7) == 0), false); [line 15]\n " shape="invhouse"]
14 -> 8 ; "X_X8" -> "X_X2" ;
13 [label="13: Prune (true branch) \n PRUNE(((n$4 != n$7) != 0), true); [line 15]\n " shape="invhouse"] "X_X7" [label="7: Prune (true branch) \n PRUNE(((n$4 != n$7) != 0), true); [line 15]\n " shape="invhouse"]
13 -> 15 ; "X_X7" -> "X_X9" ;
12 [label="12: BinaryOperatorStmt: NE \n n$4=*&i:int * [line 15]\n n$5=*&list:class std::initializer_list<int> & [line 15]\n _=*n$5:class std::initializer_list<int> [line 15]\n n$7=_fun_std::initializer_list<int>_end(n$5:class std::initializer_list<int> &) [line 15]\n " shape="box"] "X_X6" [label="6: BinaryOperatorStmt: NE \n n$4=*&i:int * [line 15]\n n$5=*&list:class std::initializer_list<int> & [line 15]\n _=*n$5:class std::initializer_list<int> [line 15]\n n$7=_fun_std::initializer_list<int>_end(n$5:class std::initializer_list<int> &) [line 15]\n " shape="box"]
12 -> 13 ; "X_X6" -> "X_X7" ;
12 -> 14 ; "X_X6" -> "X_X8" ;
11 [label="11: UnaryOperator \n n$3=*&i:int * [line 15]\n *&i:int *=(n$3 + 1) [line 15]\n " shape="box"] "X_X5" [label="5: UnaryOperator \n n$3=*&i:int * [line 15]\n *&i:int *=(n$3 + 1) [line 15]\n " shape="box"]
11 -> 9 ; "X_X5" -> "X_X3" ;
10 [label="10: DeclStmt \n n$0=*&list:class std::initializer_list<int> & [line 15]\n _=*n$0:class std::initializer_list<int> [line 15]\n n$2=_fun_std::initializer_list<int>_begin(n$0:class std::initializer_list<int> &) [line 15]\n *&i:int *=n$2 [line 15]\n " shape="box"] "X_X4" [label="4: DeclStmt \n n$0=*&list:class std::initializer_list<int> & [line 15]\n _=*n$0:class std::initializer_list<int> [line 15]\n n$2=_fun_std::initializer_list<int>_begin(n$0:class std::initializer_list<int> &) [line 15]\n *&i:int *=n$2 [line 15]\n " shape="box"]
10 -> 9 ; "X_X4" -> "X_X3" ;
9 [label="9: + \n " ] "X_X3" [label="3: + \n " ]
9 -> 12 ; "X_X3" -> "X_X6" ;
8 [label="8: Exit X_X \n " color=yellow style=filled] "X_X2" [label="2: Exit X_X \n " color=yellow style=filled]
7 [label="7: Start X_X\nFormals: this:class X * list:class std::initializer_list<int> &\nLocals: i:int * \n DECLARE_LOCALS(&return,&i); [line 14]\n " color=yellow style=filled] "X_X1" [label="1: Start X_X\nFormals: this:class X * list:class std::initializer_list<int> &\nLocals: i:int * \n DECLARE_LOCALS(&return,&i); [line 14]\n " color=yellow style=filled]
7 -> 10 ; "X_X1" -> "X_X4" ;
6 [label="6: Return Stmt \n n$0=*&this:class std::initializer_list<int> * [line 93]\n n$1=*n$0.__begin_:int * [line 93]\n n$2=*&this:class std::initializer_list<int> * [line 93]\n n$3=*n$2.__size_:unsigned long [line 93]\n *&return:int *=(n$1 + n$3) [line 93]\n " shape="box"] "std::initializer_list<int>_end3" [label="3: Return Stmt \n n$0=*&this:class std::initializer_list<int> * [line 93]\n n$1=*n$0.__begin_:int * [line 93]\n n$2=*&this:class std::initializer_list<int> * [line 93]\n n$3=*n$2.__size_:unsigned long [line 93]\n *&return:int *=(n$1 + n$3) [line 93]\n " shape="box"]
6 -> 5 ; "std::initializer_list<int>_end3" -> "std::initializer_list<int>_end2" ;
5 [label="5: Exit std::initializer_list<int>_end \n " color=yellow style=filled] "std::initializer_list<int>_end2" [label="2: Exit std::initializer_list<int>_end \n " color=yellow style=filled]
4 [label="4: Start std::initializer_list<int>_end\nFormals: this:class std::initializer_list<int> *\nLocals: \n DECLARE_LOCALS(&return); [line 91]\n " color=yellow style=filled] "std::initializer_list<int>_end1" [label="1: Start std::initializer_list<int>_end\nFormals: this:class std::initializer_list<int> *\nLocals: \n DECLARE_LOCALS(&return); [line 91]\n " color=yellow style=filled]
4 -> 6 ; "std::initializer_list<int>_end1" -> "std::initializer_list<int>_end3" ;
3 [label="3: Return Stmt \n n$0=*&this:class std::initializer_list<int> * [line 89]\n n$1=*n$0.__begin_:int * [line 89]\n *&return:int *=n$1 [line 89]\n " shape="box"] "std::initializer_list<int>_begin3" [label="3: Return Stmt \n n$0=*&this:class std::initializer_list<int> * [line 89]\n n$1=*n$0.__begin_:int * [line 89]\n *&return:int *=n$1 [line 89]\n " shape="box"]
3 -> 2 ; "std::initializer_list<int>_begin3" -> "std::initializer_list<int>_begin2" ;
2 [label="2: Exit std::initializer_list<int>_begin \n " color=yellow style=filled] "std::initializer_list<int>_begin2" [label="2: Exit std::initializer_list<int>_begin \n " color=yellow style=filled]
1 [label="1: Start std::initializer_list<int>_begin\nFormals: this:class std::initializer_list<int> *\nLocals: \n DECLARE_LOCALS(&return); [line 87]\n " color=yellow style=filled] "std::initializer_list<int>_begin1" [label="1: Start std::initializer_list<int>_begin\nFormals: this:class std::initializer_list<int> *\nLocals: \n DECLARE_LOCALS(&return); [line 87]\n " color=yellow style=filled]
1 -> 3 ; "std::initializer_list<int>_begin1" -> "std::initializer_list<int>_begin3" ;
} }

@ -1,161 +1,161 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
43 [label="43: Return Stmt \n _fun_temp_object::getX(1:int ,0:int ,&0$?%__sil_tmp__temp_return_n$1:class temp_object::X *) [line 45]\n n$2=*&0$?%__sil_tmp__temp_return_n$1.f:int [line 45]\n n$3=_fun_temp_object::div(n$2:int ) [line 45]\n *&return:int =n$3 [line 45]\n " shape="box"] "temp_object::getX_field_div03" [label="3: Return Stmt \n _fun_temp_object::getX(0:int ,1:int ,&0$?%__sil_tmp__temp_return_n$1:class temp_object::X *) [line 39]\n n$2=*&0$?%__sil_tmp__temp_return_n$1.f:int [line 39]\n n$3=_fun_temp_object::div(n$2:int ) [line 39]\n *&return:int =n$3 [line 39]\n " shape="box"]
43 -> 42 ; "temp_object::getX_field_div03" -> "temp_object::getX_field_div02" ;
42 [label="42: Exit temp_object::getX_field_div1 \n " color=yellow style=filled] "temp_object::getX_field_div02" [label="2: Exit temp_object::getX_field_div0 \n " color=yellow style=filled]
41 [label="41: Start temp_object::getX_field_div1\nFormals: \nLocals: 0$?%__sil_tmp__temp_return_n$1:class temp_object::X \n DECLARE_LOCALS(&return,&0$?%__sil_tmp__temp_return_n$1); [line 45]\n " color=yellow style=filled] "temp_object::getX_field_div01" [label="1: Start temp_object::getX_field_div0\nFormals: \nLocals: 0$?%__sil_tmp__temp_return_n$1:class temp_object::X \n DECLARE_LOCALS(&return,&0$?%__sil_tmp__temp_return_n$1); [line 39]\n " color=yellow style=filled]
41 -> 43 ; "temp_object::getX_field_div01" -> "temp_object::getX_field_div03" ;
40 [label="40: Return Stmt \n _fun_temp_object::X_X(&0$?%__sil_tmp__temp_construct_n$0:class temp_object::X *,1:int ,0:int ) [line 43]\n n$1=*&0$?%__sil_tmp__temp_construct_n$0.f:int [line 43]\n n$2=_fun_temp_object::div(n$1:int ) [line 43]\n *&return:int =n$2 [line 43]\n " shape="box"] "temp_object::temp_field2_div03" [label="3: Return Stmt \n _fun_temp_object::X_X(&0$?%__sil_tmp__temp_construct_n$0:class temp_object::X *,0:int ) [line 35]\n n$1=*&0$?%__sil_tmp__temp_construct_n$0.f:int [line 35]\n n$2=_fun_temp_object::div(n$1:int ) [line 35]\n *&return:int =n$2 [line 35]\n " shape="box"]
40 -> 39 ; "temp_object::temp_field2_div03" -> "temp_object::temp_field2_div02" ;
39 [label="39: Exit temp_object::temp_field_div1 \n " color=yellow style=filled] "temp_object::temp_field2_div02" [label="2: Exit temp_object::temp_field2_div0 \n " color=yellow style=filled]
38 [label="38: Start temp_object::temp_field_div1\nFormals: \nLocals: 0$?%__sil_tmp__temp_construct_n$0:class temp_object::X \n DECLARE_LOCALS(&return,&0$?%__sil_tmp__temp_construct_n$0); [line 43]\n " color=yellow style=filled] "temp_object::temp_field2_div01" [label="1: Start temp_object::temp_field2_div0\nFormals: \nLocals: 0$?%__sil_tmp__temp_construct_n$0:class temp_object::X \n DECLARE_LOCALS(&return,&0$?%__sil_tmp__temp_construct_n$0); [line 35]\n " color=yellow style=filled]
38 -> 40 ; "temp_object::temp_field2_div01" -> "temp_object::temp_field2_div03" ;
37 [label="37: Return Stmt \n _fun_temp_object::getX(0:int ,1:int ,&0$?%__sil_tmp__temp_return_n$1:class temp_object::X *) [line 41]\n n$2=_fun_temp_object::X_div(&0$?%__sil_tmp__temp_return_n$1:class temp_object::X &) [line 41]\n *&return:int =n$2 [line 41]\n " shape="box"] "temp_object::getX3" [label="3: Return Stmt \n n$0=*&__return_param:class temp_object::X * [line 26]\n n$2=*&a:int [line 26]\n n$3=*&b:int [line 26]\n _fun_temp_object::X_X(&0$?%__sil_tmpSIL_materialize_temp__n$1:class temp_object::X *,n$2:int ,n$3:int ) [line 26]\n _fun_temp_object::X_X(n$0:class temp_object::X *,&0$?%__sil_tmpSIL_materialize_temp__n$1:class temp_object::X &) [line 26]\n " shape="box"]
37 -> 36 ; "temp_object::getX3" -> "temp_object::getX2" ;
36 [label="36: Exit temp_object::getX_method_div0 \n " color=yellow style=filled] "temp_object::getX2" [label="2: Exit temp_object::getX \n " color=yellow style=filled]
35 [label="35: Start temp_object::getX_method_div0\nFormals: \nLocals: 0$?%__sil_tmp__temp_return_n$1:class temp_object::X \n DECLARE_LOCALS(&return,&0$?%__sil_tmp__temp_return_n$1); [line 41]\n " color=yellow style=filled] "temp_object::getX1" [label="1: Start temp_object::getX\nFormals: a:int b:int __return_param:class temp_object::X *\nLocals: 0$?%__sil_tmpSIL_materialize_temp__n$1:class temp_object::X \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_materialize_temp__n$1); [line 26]\n " color=yellow style=filled]
35 -> 37 ; "temp_object::getX1" -> "temp_object::getX3" ;
34 [label="34: Return Stmt \n _fun_temp_object::getX(0:int ,1:int ,&0$?%__sil_tmp__temp_return_n$1:class temp_object::X *) [line 39]\n n$2=*&0$?%__sil_tmp__temp_return_n$1.f:int [line 39]\n n$3=_fun_temp_object::div(n$2:int ) [line 39]\n *&return:int =n$3 [line 39]\n " shape="box"] "temp_object::div3" [label="3: Return Stmt \n n$0=*&f:int [line 21]\n *&return:int =(1 / n$0) [line 21]\n " shape="box"]
34 -> 33 ; "temp_object::div3" -> "temp_object::div2" ;
33 [label="33: Exit temp_object::getX_field_div0 \n " color=yellow style=filled] "temp_object::div2" [label="2: Exit temp_object::div \n " color=yellow style=filled]
32 [label="32: Start temp_object::getX_field_div0\nFormals: \nLocals: 0$?%__sil_tmp__temp_return_n$1:class temp_object::X \n DECLARE_LOCALS(&return,&0$?%__sil_tmp__temp_return_n$1); [line 39]\n " color=yellow style=filled] "temp_object::div1" [label="1: Start temp_object::div\nFormals: f:int \nLocals: \n DECLARE_LOCALS(&return); [line 21]\n " color=yellow style=filled]
32 -> 34 ; "temp_object::div1" -> "temp_object::div3" ;
31 [label="31: Return Stmt \n _fun_temp_object::X_X(&0$?%__sil_tmp__temp_construct_n$0:class temp_object::X *,0:int ,1:int ) [line 37]\n n$1=_fun_temp_object::X_div(&0$?%__sil_tmp__temp_construct_n$0:class temp_object::X &) [line 37]\n *&return:int =n$1 [line 37]\n " shape="box"] "temp_object::X_div3" [label="3: Return Stmt \n n$0=*&this:class temp_object::X * [line 18]\n n$1=*n$0.f:int [line 18]\n *&return:int =(1 / n$1) [line 18]\n " shape="box"]
31 -> 30 ; "temp_object::X_div3" -> "temp_object::X_div2" ;
30 [label="30: Exit temp_object::temp_method_div0 \n " color=yellow style=filled] "temp_object::X_div2" [label="2: Exit temp_object::X_div \n " color=yellow style=filled]
29 [label="29: Start temp_object::temp_method_div0\nFormals: \nLocals: 0$?%__sil_tmp__temp_construct_n$0:class temp_object::X \n DECLARE_LOCALS(&return,&0$?%__sil_tmp__temp_construct_n$0); [line 37]\n " color=yellow style=filled] "temp_object::X_div1" [label="1: Start temp_object::X_div\nFormals: this:class temp_object::X *\nLocals: \n DECLARE_LOCALS(&return); [line 18]\n " color=yellow style=filled]
29 -> 31 ; "temp_object::X_div1" -> "temp_object::X_div3" ;
28 [label="28: Return Stmt \n _fun_temp_object::X_X(&0$?%__sil_tmp__temp_construct_n$0:class temp_object::X *,0:int ) [line 35]\n n$1=*&0$?%__sil_tmp__temp_construct_n$0.f:int [line 35]\n n$2=_fun_temp_object::div(n$1:int ) [line 35]\n *&return:int =n$2 [line 35]\n " shape="box"] "temp_object::temp_field_div03" [label="3: Return Stmt \n _fun_temp_object::X_X(&0$?%__sil_tmp__temp_construct_n$0:class temp_object::X *,0:int ,1:int ) [line 33]\n n$1=*&0$?%__sil_tmp__temp_construct_n$0.f:int [line 33]\n n$2=_fun_temp_object::div(n$1:int ) [line 33]\n *&return:int =n$2 [line 33]\n " shape="box"]
28 -> 27 ; "temp_object::temp_field_div03" -> "temp_object::temp_field_div02" ;
27 [label="27: Exit temp_object::temp_field2_div0 \n " color=yellow style=filled] "temp_object::temp_field_div02" [label="2: Exit temp_object::temp_field_div0 \n " color=yellow style=filled]
26 [label="26: Start temp_object::temp_field2_div0\nFormals: \nLocals: 0$?%__sil_tmp__temp_construct_n$0:class temp_object::X \n DECLARE_LOCALS(&return,&0$?%__sil_tmp__temp_construct_n$0); [line 35]\n " color=yellow style=filled] "temp_object::temp_field_div01" [label="1: Start temp_object::temp_field_div0\nFormals: \nLocals: 0$?%__sil_tmp__temp_construct_n$0:class temp_object::X \n DECLARE_LOCALS(&return,&0$?%__sil_tmp__temp_construct_n$0); [line 33]\n " color=yellow style=filled]
26 -> 28 ; "temp_object::temp_field_div01" -> "temp_object::temp_field_div03" ;
25 [label="25: Return Stmt \n _fun_temp_object::X_X(&0$?%__sil_tmp__temp_construct_n$0:class temp_object::X *,0:int ,1:int ) [line 33]\n n$1=*&0$?%__sil_tmp__temp_construct_n$0.f:int [line 33]\n n$2=_fun_temp_object::div(n$1:int ) [line 33]\n *&return:int =n$2 [line 33]\n " shape="box"] "temp_object::getX_field_div13" [label="3: Return Stmt \n _fun_temp_object::getX(1:int ,0:int ,&0$?%__sil_tmp__temp_return_n$1:class temp_object::X *) [line 45]\n n$2=*&0$?%__sil_tmp__temp_return_n$1.f:int [line 45]\n n$3=_fun_temp_object::div(n$2:int ) [line 45]\n *&return:int =n$3 [line 45]\n " shape="box"]
25 -> 24 ; "temp_object::getX_field_div13" -> "temp_object::getX_field_div12" ;
24 [label="24: Exit temp_object::temp_field_div0 \n " color=yellow style=filled] "temp_object::getX_field_div12" [label="2: Exit temp_object::getX_field_div1 \n " color=yellow style=filled]
23 [label="23: Start temp_object::temp_field_div0\nFormals: \nLocals: 0$?%__sil_tmp__temp_construct_n$0:class temp_object::X \n DECLARE_LOCALS(&return,&0$?%__sil_tmp__temp_construct_n$0); [line 33]\n " color=yellow style=filled] "temp_object::getX_field_div11" [label="1: Start temp_object::getX_field_div1\nFormals: \nLocals: 0$?%__sil_tmp__temp_return_n$1:class temp_object::X \n DECLARE_LOCALS(&return,&0$?%__sil_tmp__temp_return_n$1); [line 45]\n " color=yellow style=filled]
23 -> 25 ; "temp_object::getX_field_div11" -> "temp_object::getX_field_div13" ;
22 [label="22: DeclStmt \n _fun_temp_object::X_X(&0$?%__sil_tmpSIL_materialize_temp__n$2:class temp_object::X *,0:int ,1:int ) [line 29]\n _fun_temp_object::X_X(&x:class temp_object::X *,&0$?%__sil_tmpSIL_materialize_temp__n$2:class temp_object::X &) [line 29]\n " shape="box"] "temp_object::temp_field_div13" [label="3: Return Stmt \n _fun_temp_object::X_X(&0$?%__sil_tmp__temp_construct_n$0:class temp_object::X *,1:int ,0:int ) [line 43]\n n$1=*&0$?%__sil_tmp__temp_construct_n$0.f:int [line 43]\n n$2=_fun_temp_object::div(n$1:int ) [line 43]\n *&return:int =n$2 [line 43]\n " shape="box"]
22 -> 21 ; "temp_object::temp_field_div13" -> "temp_object::temp_field_div12" ;
21 [label="21: Return Stmt \n _=*&x:class temp_object::X [line 30]\n n$1=_fun_temp_object::X_div(&x:class temp_object::X &) [line 30]\n *&return:int =n$1 [line 30]\n " shape="box"] "temp_object::temp_field_div12" [label="2: Exit temp_object::temp_field_div1 \n " color=yellow style=filled]
21 -> 20 ; "temp_object::temp_field_div11" [label="1: Start temp_object::temp_field_div1\nFormals: \nLocals: 0$?%__sil_tmp__temp_construct_n$0:class temp_object::X \n DECLARE_LOCALS(&return,&0$?%__sil_tmp__temp_construct_n$0); [line 43]\n " color=yellow style=filled]
20 [label="20: Exit temp_object::assign_temp_div0 \n " color=yellow style=filled]
19 [label="19: Start temp_object::assign_temp_div0\nFormals: \nLocals: x:class temp_object::X 0$?%__sil_tmpSIL_materialize_temp__n$2:class temp_object::X \n DECLARE_LOCALS(&return,&x,&0$?%__sil_tmpSIL_materialize_temp__n$2); [line 28]\n " color=yellow style=filled] "temp_object::temp_field_div11" -> "temp_object::temp_field_div13" ;
"temp_object::assign_temp_div04" [label="4: DeclStmt \n _fun_temp_object::X_X(&0$?%__sil_tmpSIL_materialize_temp__n$2:class temp_object::X *,0:int ,1:int ) [line 29]\n _fun_temp_object::X_X(&x:class temp_object::X *,&0$?%__sil_tmpSIL_materialize_temp__n$2:class temp_object::X &) [line 29]\n " shape="box"]
19 -> 22 ; "temp_object::assign_temp_div04" -> "temp_object::assign_temp_div03" ;
18 [label="18: Return Stmt \n n$0=*&__return_param:class temp_object::X * [line 26]\n n$2=*&a:int [line 26]\n n$3=*&b:int [line 26]\n _fun_temp_object::X_X(&0$?%__sil_tmpSIL_materialize_temp__n$1:class temp_object::X *,n$2:int ,n$3:int ) [line 26]\n _fun_temp_object::X_X(n$0:class temp_object::X *,&0$?%__sil_tmpSIL_materialize_temp__n$1:class temp_object::X &) [line 26]\n " shape="box"] "temp_object::assign_temp_div03" [label="3: Return Stmt \n _=*&x:class temp_object::X [line 30]\n n$1=_fun_temp_object::X_div(&x:class temp_object::X &) [line 30]\n *&return:int =n$1 [line 30]\n " shape="box"]
18 -> 17 ; "temp_object::assign_temp_div03" -> "temp_object::assign_temp_div02" ;
17 [label="17: Exit temp_object::getX \n " color=yellow style=filled] "temp_object::assign_temp_div02" [label="2: Exit temp_object::assign_temp_div0 \n " color=yellow style=filled]
16 [label="16: Start temp_object::getX\nFormals: a:int b:int __return_param:class temp_object::X *\nLocals: 0$?%__sil_tmpSIL_materialize_temp__n$1:class temp_object::X \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_materialize_temp__n$1); [line 26]\n " color=yellow style=filled] "temp_object::assign_temp_div01" [label="1: Start temp_object::assign_temp_div0\nFormals: \nLocals: x:class temp_object::X 0$?%__sil_tmpSIL_materialize_temp__n$2:class temp_object::X \n DECLARE_LOCALS(&return,&x,&0$?%__sil_tmpSIL_materialize_temp__n$2); [line 28]\n " color=yellow style=filled]
16 -> 18 ; "temp_object::assign_temp_div01" -> "temp_object::assign_temp_div04" ;
15 [label="15: Return Stmt \n n$0=*&f:int [line 21]\n *&return:int =(1 / n$0) [line 21]\n " shape="box"] "temp_object::X_X3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class temp_object::X * [line 14]\n n$1=*&a:int [line 14]\n *n$0.f:int =n$1 [line 14]\n " shape="box"]
15 -> 14 ; "temp_object::X_X3" -> "temp_object::X_X2" ;
14 [label="14: Exit temp_object::div \n " color=yellow style=filled] "temp_object::X_X2" [label="2: Exit temp_object::X_X \n " color=yellow style=filled]
13 [label="13: Start temp_object::div\nFormals: f:int \nLocals: \n DECLARE_LOCALS(&return); [line 21]\n " color=yellow style=filled] "temp_object::X_X1" [label="1: Start temp_object::X_X\nFormals: this:class temp_object::X * a:int b:int \nLocals: \n DECLARE_LOCALS(&return); [line 14]\n " color=yellow style=filled]
13 -> 15 ; "temp_object::X_X1" -> "temp_object::X_X3" ;
12 [label="12: Return Stmt \n n$0=*&this:class temp_object::X * [line 18]\n n$1=*n$0.f:int [line 18]\n *&return:int =(1 / n$1) [line 18]\n " shape="box"] "temp_object::X_X3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class temp_object::X * [line 13]\n n$1=*&a:int [line 13]\n *n$0.f:int =n$1 [line 13]\n " shape="box"]
12 -> 11 ; "temp_object::X_X3" -> "temp_object::X_X2" ;
11 [label="11: Exit temp_object::X_div \n " color=yellow style=filled] "temp_object::X_X2" [label="2: Exit temp_object::X_X \n " color=yellow style=filled]
10 [label="10: Start temp_object::X_div\nFormals: this:class temp_object::X *\nLocals: \n DECLARE_LOCALS(&return); [line 18]\n " color=yellow style=filled] "temp_object::X_X1" [label="1: Start temp_object::X_X\nFormals: this:class temp_object::X * a:int \nLocals: \n DECLARE_LOCALS(&return); [line 13]\n " color=yellow style=filled]
10 -> 12 ; "temp_object::X_X1" -> "temp_object::X_X3" ;
9 [label="9: BinaryOperatorStmt: Assign \n n$0=*&this:class temp_object::X * [line 16]\n n$1=*&x:class temp_object::X & [line 16]\n n$2=*n$1.f:int [line 16]\n *n$0.f:int =n$2 [line 16]\n " shape="box"] "temp_object::X_X3" [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class temp_object::X * [line 16]\n n$1=*&x:class temp_object::X & [line 16]\n n$2=*n$1.f:int [line 16]\n *n$0.f:int =n$2 [line 16]\n " shape="box"]
9 -> 8 ; "temp_object::X_X3" -> "temp_object::X_X2" ;
8 [label="8: Exit temp_object::X_X \n " color=yellow style=filled] "temp_object::X_X2" [label="2: Exit temp_object::X_X \n " color=yellow style=filled]
7 [label="7: Start temp_object::X_X\nFormals: this:class temp_object::X * x:class temp_object::X &\nLocals: \n DECLARE_LOCALS(&return); [line 16]\n " color=yellow style=filled] "temp_object::X_X1" [label="1: Start temp_object::X_X\nFormals: this:class temp_object::X * x:class temp_object::X &\nLocals: \n DECLARE_LOCALS(&return); [line 16]\n " color=yellow style=filled]
7 -> 9 ; "temp_object::X_X1" -> "temp_object::X_X3" ;
6 [label="6: BinaryOperatorStmt: Assign \n n$0=*&this:class temp_object::X * [line 14]\n n$1=*&a:int [line 14]\n *n$0.f:int =n$1 [line 14]\n " shape="box"] "temp_object::getX_method_div03" [label="3: Return Stmt \n _fun_temp_object::getX(0:int ,1:int ,&0$?%__sil_tmp__temp_return_n$1:class temp_object::X *) [line 41]\n n$2=_fun_temp_object::X_div(&0$?%__sil_tmp__temp_return_n$1:class temp_object::X &) [line 41]\n *&return:int =n$2 [line 41]\n " shape="box"]
6 -> 5 ; "temp_object::getX_method_div03" -> "temp_object::getX_method_div02" ;
5 [label="5: Exit temp_object::X_X \n " color=yellow style=filled] "temp_object::getX_method_div02" [label="2: Exit temp_object::getX_method_div0 \n " color=yellow style=filled]
4 [label="4: Start temp_object::X_X\nFormals: this:class temp_object::X * a:int b:int \nLocals: \n DECLARE_LOCALS(&return); [line 14]\n " color=yellow style=filled] "temp_object::getX_method_div01" [label="1: Start temp_object::getX_method_div0\nFormals: \nLocals: 0$?%__sil_tmp__temp_return_n$1:class temp_object::X \n DECLARE_LOCALS(&return,&0$?%__sil_tmp__temp_return_n$1); [line 41]\n " color=yellow style=filled]
4 -> 6 ; "temp_object::getX_method_div01" -> "temp_object::getX_method_div03" ;
3 [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class temp_object::X * [line 13]\n n$1=*&a:int [line 13]\n *n$0.f:int =n$1 [line 13]\n " shape="box"] "temp_object::temp_method_div03" [label="3: Return Stmt \n _fun_temp_object::X_X(&0$?%__sil_tmp__temp_construct_n$0:class temp_object::X *,0:int ,1:int ) [line 37]\n n$1=_fun_temp_object::X_div(&0$?%__sil_tmp__temp_construct_n$0:class temp_object::X &) [line 37]\n *&return:int =n$1 [line 37]\n " shape="box"]
3 -> 2 ; "temp_object::temp_method_div03" -> "temp_object::temp_method_div02" ;
2 [label="2: Exit temp_object::X_X \n " color=yellow style=filled] "temp_object::temp_method_div02" [label="2: Exit temp_object::temp_method_div0 \n " color=yellow style=filled]
1 [label="1: Start temp_object::X_X\nFormals: this:class temp_object::X * a:int \nLocals: \n DECLARE_LOCALS(&return); [line 13]\n " color=yellow style=filled] "temp_object::temp_method_div01" [label="1: Start temp_object::temp_method_div0\nFormals: \nLocals: 0$?%__sil_tmp__temp_construct_n$0:class temp_object::X \n DECLARE_LOCALS(&return,&0$?%__sil_tmp__temp_construct_n$0); [line 37]\n " color=yellow style=filled]
1 -> 3 ; "temp_object::temp_method_div01" -> "temp_object::temp_method_div03" ;
} }

@ -1,68 +1,68 @@
/* @generated */ /* @generated */
digraph iCFG { digraph iCFG {
17 [label="17: Return Stmt \n n$0=_fun_deref(0:int *) [line 28]\n *&return:int =n$0 [line 28]\n " shape="box"] "main3" [label="3: Return Stmt \n n$0=_fun_deref(0:int *) [line 28]\n *&return:int =n$0 [line 28]\n " shape="box"]
17 -> 16 ; "main3" -> "main2" ;
16 [label="16: Exit main \n " color=yellow style=filled] "main2" [label="2: Exit main \n " color=yellow style=filled]
15 [label="15: Start main\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 26]\n " color=yellow style=filled] "main1" [label="1: Start main\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 26]\n " color=yellow style=filled]
15 -> 17 ; "main1" -> "main3" ;
14 [label="14: Call _fun_deref_null \n n$0=_fun_deref_null(null:int *) [line 24]\n " shape="box"] "call_deref_with_null3" [label="3: Call _fun_deref_null \n n$0=_fun_deref_null(null:int *) [line 24]\n " shape="box"]
14 -> 13 ; "call_deref_with_null3" -> "call_deref_with_null2" ;
13 [label="13: Exit call_deref_with_null \n " color=yellow style=filled] "call_deref_with_null2" [label="2: Exit call_deref_with_null \n " color=yellow style=filled]
12 [label="12: Start call_deref_with_null\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 24]\n " color=yellow style=filled] "call_deref_with_null1" [label="1: Start call_deref_with_null\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 24]\n " color=yellow style=filled]
12 -> 14 ; "call_deref_with_null1" -> "call_deref_with_null3" ;
11 [label="11: Return Stmt \n n$0=*&p:int * [line 19]\n n$1=*n$0:int [line 19]\n *&return:int =n$1 [line 19]\n " shape="box"] "deref8" [label="8: ObjCCPPThrow \n _fun___infer_objc_cpp_throw(\"Null pointer!\":char *) [line 12]\n " shape="box"]
11 -> 10 ; "deref8" -> "deref4" ;
10 [label="10: Exit deref_null \n " color=yellow style=filled] "deref7" [label="7: Prune (false branch) \n PRUNE(((n$2 == 0) == 0), false); [line 11]\n " shape="invhouse"]
9 [label="9: Start deref_null\nFormals: p:int *\nLocals: \n DECLARE_LOCALS(&return); [line 17]\n " color=yellow style=filled] "deref7" -> "deref4" ;
"deref6" [label="6: Prune (true branch) \n PRUNE(((n$2 == 0) != 0), true); [line 11]\n " shape="invhouse"]
9 -> 11 ; "deref6" -> "deref8" ;
8 [label="8: ObjCCPPThrow \n _fun___infer_objc_cpp_throw(\"Null pointer!\":char *) [line 12]\n " shape="box"] "deref5" [label="5: BinaryOperatorStmt: EQ \n n$2=*&p:int * [line 11]\n " shape="box"]
8 -> 4 ; "deref5" -> "deref6" ;
7 [label="7: Prune (false branch) \n PRUNE(((n$2 == 0) == 0), false); [line 11]\n " shape="invhouse"] "deref5" -> "deref7" ;
"deref4" [label="4: + \n " ]
7 -> 4 ; "deref4" -> "deref3" ;
6 [label="6: Prune (true branch) \n PRUNE(((n$2 == 0) != 0), true); [line 11]\n " shape="invhouse"] "deref3" [label="3: Return Stmt \n n$0=*&p:int * [line 14]\n n$1=*n$0:int [line 14]\n *&return:int =n$1 [line 14]\n " shape="box"]
6 -> 8 ; "deref3" -> "deref2" ;
5 [label="5: BinaryOperatorStmt: EQ \n n$2=*&p:int * [line 11]\n " shape="box"] "deref2" [label="2: Exit deref \n " color=yellow style=filled]
5 -> 6 ; "deref1" [label="1: Start deref\nFormals: p:int *\nLocals: \n DECLARE_LOCALS(&return); [line 10]\n " color=yellow style=filled]
5 -> 7 ;
4 [label="4: + \n " ]
4 -> 3 ; "deref1" -> "deref5" ;
3 [label="3: Return Stmt \n n$0=*&p:int * [line 14]\n n$1=*n$0:int [line 14]\n *&return:int =n$1 [line 14]\n " shape="box"] "deref_null3" [label="3: Return Stmt \n n$0=*&p:int * [line 19]\n n$1=*n$0:int [line 19]\n *&return:int =n$1 [line 19]\n " shape="box"]
3 -> 2 ; "deref_null3" -> "deref_null2" ;
2 [label="2: Exit deref \n " color=yellow style=filled] "deref_null2" [label="2: Exit deref_null \n " color=yellow style=filled]
1 [label="1: Start deref\nFormals: p:int *\nLocals: \n DECLARE_LOCALS(&return); [line 10]\n " color=yellow style=filled] "deref_null1" [label="1: Start deref_null\nFormals: p:int *\nLocals: \n DECLARE_LOCALS(&return); [line 17]\n " color=yellow style=filled]
1 -> 5 ; "deref_null1" -> "deref_null3" ;
} }

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save