using liveness to add removetemps instructions

Reviewed By: jberdine

Differential Revision: D3245574

fbshipit-source-id: 02c1bcd
master
Sam Blackshear 9 years ago committed by Facebook Github Bot 1
parent a8c696338b
commit 3f49f3a1d4

@ -485,9 +485,18 @@ module NullifyTransferFunctions = struct
| None -> astate
let exec_instr ((active_defs, to_nullify) as astate) _ = function
| Sil.Letderef (lhs_id, _, _, _) ->
VarDomain.add (Var.LogicalVar lhs_id) active_defs, to_nullify
| Sil.Call (lhs_ids, _, _, _, _) ->
let active_defs' =
IList.fold_left
(fun acc id -> VarDomain.add (Var.LogicalVar id) acc)
active_defs
lhs_ids in
active_defs', to_nullify
| Sil.Set (Sil.Lvar lhs_pvar, _, _, _) ->
VarDomain.add (Var.ProgramVar lhs_pvar) active_defs, to_nullify
| Sil.Set _ | Letderef _ | Call _ | Prune _ | Declare_locals _ | Stackop _ | Remove_temps _
| Sil.Set _ | Prune _ | Declare_locals _ | Stackop _ | Remove_temps _
| Abstract _ ->
astate
| Sil.Nullify _ ->
@ -531,19 +540,27 @@ let add_nullify_instrs tenv _ pdesc =
if nullify_instrs <> []
then Cfg.Node.append_instrs_temps node (IList.rev nullify_instrs) [] in
let node_add_removetmps_instructions node ids =
if ids <> [] then
let loc = Cfg.Node.get_last_loc node in
Cfg.Node.append_instrs_temps node [Sil.Remove_temps (IList.rev ids, loc)] [] in
IList.iter
(fun node ->
match NullifyAnalysis.extract_post (ProcCfg.Exceptional.id node) nullify_inv_map with
| Some (_, to_nullify) ->
let pvars_to_nullify =
let pvars_to_nullify, ids_to_remove =
Var.Set.fold
(fun var acc -> match var with
(fun var (pvars_acc, ids_acc) -> match var with
(* we nullify all address taken variables at the end of the procedure *)
| ProgramVar pvar when not (AddressTaken.Domain.mem pvar address_taken_vars) ->
pvar :: acc
| _ -> acc)
pvar :: pvars_acc, ids_acc
| LogicalVar id ->
pvars_acc, id :: ids_acc
| _ -> pvars_acc, ids_acc)
to_nullify
[] in
([], []) in
node_add_removetmps_instructions node ids_to_remove;
node_add_nullify_instructions node pvars_to_nullify
| None -> ())
(ProcCfg.Exceptional.nodes nullify_proc_cfg);
@ -556,10 +573,10 @@ let add_nullify_instrs tenv _ pdesc =
let old_nullify_analysis = false
let doit ?(f_translate_typ=None) cfg cg tenv =
add_removetemps_instructions cfg;
if old_nullify_analysis
then
begin
add_removetemps_instructions cfg;
AllPreds.mk_table cfg;
Cfg.iter_proc_desc cfg (analyze_and_annotate_proc cfg tenv);
AllPreds.clear_table ()

@ -28,15 +28,15 @@ digraph iCFG {
13 -> 10 ;
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 REMOVE_TEMPS(n$7,n$8,n$9,n$6,n$10); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="invhouse"]
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 REMOVE_TEMPS(n$6,n$8,n$9,n$10); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="invhouse"]
12 -> 9 ;
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 REMOVE_TEMPS(n$7,n$8,n$9,n$6,n$10); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="invhouse"]
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 REMOVE_TEMPS(n$6,n$8,n$9,n$10); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="invhouse"]
11 -> 9 ;
10 [label="10: UnaryOperator \n n$7=*&p:int ** [line 15]\n n$8=*n$7:int * [line 15]\n " shape="box"]
10 [label="10: UnaryOperator \n n$7=*&p:int ** [line 15]\n n$8=*n$7:int * [line 15]\n REMOVE_TEMPS(n$7); [line 15]\n " shape="box"]
10 -> 11 ;
@ -45,15 +45,15 @@ digraph iCFG {
9 -> 5 ;
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 REMOVE_TEMPS(n$2,n$3,n$4,n$0,n$1,n$5); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="invhouse"]
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 REMOVE_TEMPS(n$0,n$1,n$3,n$4,n$5); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="invhouse"]
8 -> 3 ;
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 REMOVE_TEMPS(n$2,n$3,n$4,n$0,n$1,n$5); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="invhouse"]
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 REMOVE_TEMPS(n$0,n$1,n$3,n$4,n$5); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="invhouse"]
7 -> 3 ;
6 [label="6: UnaryOperator \n n$2=*&p:int ** [line 17]\n n$3=*n$2:int * [line 17]\n NULLIFY(&p); [line 17]\n " shape="box"]
6 [label="6: UnaryOperator \n n$2=*&p:int ** [line 17]\n n$3=*n$2:int * [line 17]\n REMOVE_TEMPS(n$2); [line 17]\n NULLIFY(&p); [line 17]\n " shape="box"]
6 -> 7 ;

@ -1,9 +1,9 @@
digraph iCFG {
66 [label="66: Return Stmt \n n$3=*&SIL_temp_conditional___n$2:int [line 35]\n *&return:int =n$3 [line 35]\n REMOVE_TEMPS(n$3,n$0,n$1); [line 35]\n NULLIFY(&SIL_temp_conditional___n$2); [line 35]\n APPLY_ABSTRACTION; [line 35]\n " shape="box"]
66 [label="66: Return Stmt \n n$3=*&SIL_temp_conditional___n$2:int [line 35]\n *&return:int =n$3 [line 35]\n REMOVE_TEMPS(n$3); [line 35]\n NULLIFY(&SIL_temp_conditional___n$2); [line 35]\n APPLY_ABSTRACTION; [line 35]\n " shape="box"]
66 -> 59 ;
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"]
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 REMOVE_TEMPS(n$0); [line 35]\n " shape="box"]
65 -> 61 ;
@ -12,11 +12,11 @@ digraph iCFG {
64 -> 60 ;
63 [label="63: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =n$1 [line 35]\n APPLY_ABSTRACTION; [line 35]\n " shape="box"]
63 [label="63: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =n$1 [line 35]\n REMOVE_TEMPS(n$1); [line 35]\n APPLY_ABSTRACTION; [line 35]\n " shape="box"]
63 -> 60 ;
62 [label="62: Prune (false branch) \n PRUNE((n$1 == 0), false); [line 35]\n " shape="invhouse"]
62 [label="62: Prune (false branch) \n PRUNE((n$1 == 0), false); [line 35]\n REMOVE_TEMPS(n$1); [line 35]\n " shape="invhouse"]
62 -> 64 ;
@ -71,7 +71,7 @@ digraph iCFG {
49 -> 53 ;
49 -> 54 ;
48 [label="48: Return Stmt \n n$2=*&SIL_temp_conditional___n$1:int [line 28]\n *&return:int =n$2 [line 28]\n REMOVE_TEMPS(n$2,n$0); [line 28]\n NULLIFY(&SIL_temp_conditional___n$1); [line 28]\n APPLY_ABSTRACTION; [line 28]\n " shape="box"]
48 [label="48: Return Stmt \n n$2=*&SIL_temp_conditional___n$1:int [line 28]\n *&return:int =n$2 [line 28]\n REMOVE_TEMPS(n$2); [line 28]\n NULLIFY(&SIL_temp_conditional___n$1); [line 28]\n APPLY_ABSTRACTION; [line 28]\n " shape="box"]
48 -> 41 ;
@ -84,11 +84,11 @@ digraph iCFG {
46 -> 42 ;
45 [label="45: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =n$0 [line 28]\n APPLY_ABSTRACTION; [line 28]\n " shape="box"]
45 [label="45: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =n$0 [line 28]\n REMOVE_TEMPS(n$0); [line 28]\n APPLY_ABSTRACTION; [line 28]\n " shape="box"]
45 -> 42 ;
44 [label="44: Prune (false branch) \n PRUNE((n$0 == 0), false); [line 28]\n " shape="invhouse"]
44 [label="44: Prune (false branch) \n PRUNE((n$0 == 0), false); [line 28]\n REMOVE_TEMPS(n$0); [line 28]\n " shape="invhouse"]
44 -> 46 ;
@ -107,7 +107,7 @@ digraph iCFG {
40 -> 47 ;
39 [label="39: Return Stmt \n n$2=*&SIL_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 REMOVE_TEMPS(n$2,n$0,n$3); [line 26]\n NULLIFY(&SIL_temp_conditional___n$1); [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"]
39 [label="39: Return Stmt \n n$2=*&SIL_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 REMOVE_TEMPS(n$2,n$3); [line 26]\n NULLIFY(&SIL_temp_conditional___n$1); [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"]
39 -> 32 ;
@ -120,11 +120,11 @@ digraph iCFG {
37 -> 33 ;
36 [label="36: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =n$0 [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"]
36 [label="36: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =n$0 [line 26]\n REMOVE_TEMPS(n$0); [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"]
36 -> 33 ;
35 [label="35: Prune (false branch) \n PRUNE((n$0 == 0), false); [line 26]\n " shape="invhouse"]
35 [label="35: Prune (false branch) \n PRUNE((n$0 == 0), false); [line 26]\n REMOVE_TEMPS(n$0); [line 26]\n " shape="invhouse"]
35 -> 37 ;
@ -143,7 +143,7 @@ digraph iCFG {
31 -> 38 ;
30 [label="30: DeclStmt \n n$3=*&SIL_temp_conditional___n$2:int [line 22]\n *&x:int =n$3 [line 22]\n REMOVE_TEMPS(n$3,n$1); [line 22]\n NULLIFY(&SIL_temp_conditional___n$2); [line 22]\n " shape="box"]
30 [label="30: DeclStmt \n n$3=*&SIL_temp_conditional___n$2:int [line 22]\n *&x:int =n$3 [line 22]\n REMOVE_TEMPS(n$3); [line 22]\n NULLIFY(&SIL_temp_conditional___n$2); [line 22]\n " shape="box"]
30 -> 23 ;
@ -156,11 +156,11 @@ digraph iCFG {
28 -> 24 ;
27 [label="27: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =n$1 [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"]
27 [label="27: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =n$1 [line 22]\n REMOVE_TEMPS(n$1); [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"]
27 -> 24 ;
26 [label="26: Prune (false branch) \n PRUNE((n$1 == 0), false); [line 22]\n " shape="invhouse"]
26 [label="26: Prune (false branch) \n PRUNE((n$1 == 0), false); [line 22]\n REMOVE_TEMPS(n$1); [line 22]\n " shape="invhouse"]
26 -> 28 ;

@ -8,15 +8,15 @@ digraph iCFG {
94 -> 90 ;
93 [label="93: Prune (false branch) \n PRUNE(((n$12 == 39) == 0), false); [line 52]\n REMOVE_TEMPS(n$11,n$12); [line 52]\n APPLY_ABSTRACTION; [line 52]\n " shape="invhouse"]
93 [label="93: Prune (false branch) \n PRUNE(((n$12 == 39) == 0), false); [line 52]\n REMOVE_TEMPS(n$12); [line 52]\n APPLY_ABSTRACTION; [line 52]\n " shape="invhouse"]
93 -> 90 ;
92 [label="92: Prune (true branch) \n PRUNE(((n$12 == 39) != 0), true); [line 52]\n REMOVE_TEMPS(n$11,n$12); [line 52]\n " shape="invhouse"]
92 [label="92: Prune (true branch) \n PRUNE(((n$12 == 39) != 0), true); [line 52]\n REMOVE_TEMPS(n$12); [line 52]\n " shape="invhouse"]
92 -> 94 ;
91 [label="91: BinaryOperatorStmt: EQ \n n$11=*&spec:char * [line 52]\n n$12=*n$11:char [line 52]\n NULLIFY(&spec); [line 52]\n " shape="box"]
91 [label="91: BinaryOperatorStmt: EQ \n n$11=*&spec:char * [line 52]\n n$12=*n$11:char [line 52]\n REMOVE_TEMPS(n$11); [line 52]\n NULLIFY(&spec); [line 52]\n " shape="box"]
91 -> 92 ;
@ -45,15 +45,15 @@ digraph iCFG {
85 -> 81 ;
84 [label="84: Prune (false branch) \n PRUNE((n$9 == 0), false); [line 49]\n REMOVE_TEMPS(n$8,n$9); [line 49]\n " shape="invhouse"]
84 [label="84: Prune (false branch) \n PRUNE((n$9 == 0), false); [line 49]\n REMOVE_TEMPS(n$9); [line 49]\n " shape="invhouse"]
84 -> 86 ;
83 [label="83: Prune (true branch) \n PRUNE((n$9 != 0), true); [line 49]\n REMOVE_TEMPS(n$8,n$9); [line 49]\n " shape="invhouse"]
83 [label="83: Prune (true branch) \n PRUNE((n$9 != 0), true); [line 49]\n REMOVE_TEMPS(n$9); [line 49]\n " shape="invhouse"]
83 -> 85 ;
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"]
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 REMOVE_TEMPS(n$8); [line 49]\n " shape="box"]
82 -> 83 ;
@ -79,15 +79,15 @@ digraph iCFG {
77 -> 73 ;
76 [label="76: Prune (false branch) \n PRUNE((n$5 == 0), false); [line 49]\n REMOVE_TEMPS(n$4,n$5); [line 49]\n " shape="invhouse"]
76 [label="76: Prune (false branch) \n PRUNE((n$5 == 0), false); [line 49]\n REMOVE_TEMPS(n$5); [line 49]\n " shape="invhouse"]
76 -> 78 ;
75 [label="75: Prune (true branch) \n PRUNE((n$5 != 0), true); [line 49]\n REMOVE_TEMPS(n$4,n$5); [line 49]\n " shape="invhouse"]
75 [label="75: Prune (true branch) \n PRUNE((n$5 != 0), true); [line 49]\n REMOVE_TEMPS(n$5); [line 49]\n " shape="invhouse"]
75 -> 77 ;
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"]
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 REMOVE_TEMPS(n$4); [line 49]\n " shape="box"]
74 -> 75 ;
@ -165,15 +165,15 @@ digraph iCFG {
56 -> 52 ;
55 [label="55: Prune (false branch) \n PRUNE((n$9 == 0), false); [line 37]\n REMOVE_TEMPS(n$8,n$9); [line 37]\n " shape="invhouse"]
55 [label="55: Prune (false branch) \n PRUNE((n$9 == 0), false); [line 37]\n REMOVE_TEMPS(n$9); [line 37]\n " shape="invhouse"]
55 -> 57 ;
54 [label="54: Prune (true branch) \n PRUNE((n$9 != 0), true); [line 37]\n REMOVE_TEMPS(n$8,n$9); [line 37]\n " shape="invhouse"]
54 [label="54: Prune (true branch) \n PRUNE((n$9 != 0), true); [line 37]\n REMOVE_TEMPS(n$9); [line 37]\n " shape="invhouse"]
54 -> 56 ;
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"]
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 REMOVE_TEMPS(n$8); [line 37]\n " shape="box"]
53 -> 54 ;
@ -199,15 +199,15 @@ digraph iCFG {
48 -> 44 ;
47 [label="47: Prune (false branch) \n PRUNE((n$5 == 0), false); [line 36]\n REMOVE_TEMPS(n$4,n$5); [line 36]\n " shape="invhouse"]
47 [label="47: Prune (false branch) \n PRUNE((n$5 == 0), false); [line 36]\n REMOVE_TEMPS(n$5); [line 36]\n " shape="invhouse"]
47 -> 49 ;
46 [label="46: Prune (true branch) \n PRUNE((n$5 != 0), true); [line 36]\n REMOVE_TEMPS(n$4,n$5); [line 36]\n " shape="invhouse"]
46 [label="46: Prune (true branch) \n PRUNE((n$5 != 0), true); [line 36]\n REMOVE_TEMPS(n$5); [line 36]\n " shape="invhouse"]
46 -> 48 ;
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 NULLIFY(&spec); [line 36]\n " shape="box"]
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 REMOVE_TEMPS(n$4); [line 36]\n NULLIFY(&spec); [line 36]\n " shape="box"]
45 -> 46 ;
@ -282,15 +282,15 @@ digraph iCFG {
28 -> 24 ;
27 [label="27: Prune (false branch) \n PRUNE((n$5 == 0), false); [line 22]\n REMOVE_TEMPS(n$4,n$5); [line 22]\n " shape="invhouse"]
27 [label="27: Prune (false branch) \n PRUNE((n$5 == 0), false); [line 22]\n REMOVE_TEMPS(n$5); [line 22]\n " shape="invhouse"]
27 -> 29 ;
26 [label="26: Prune (true branch) \n PRUNE((n$5 != 0), true); [line 22]\n REMOVE_TEMPS(n$4,n$5); [line 22]\n " shape="invhouse"]
26 [label="26: Prune (true branch) \n PRUNE((n$5 != 0), true); [line 22]\n REMOVE_TEMPS(n$5); [line 22]\n " shape="invhouse"]
26 -> 28 ;
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"]
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 REMOVE_TEMPS(n$4); [line 22]\n " shape="box"]
25 -> 26 ;
@ -353,15 +353,15 @@ digraph iCFG {
11 -> 3 ;
10 [label="10: Prune (false branch) \n PRUNE(((n$2 == 2) == 0), false); [line 14]\n REMOVE_TEMPS(n$1,n$2); [line 14]\n " shape="invhouse"]
10 [label="10: Prune (false branch) \n PRUNE(((n$2 == 2) == 0), false); [line 14]\n REMOVE_TEMPS(n$2); [line 14]\n " shape="invhouse"]
10 -> 12 ;
9 [label="9: Prune (true branch) \n PRUNE(((n$2 == 2) != 0), true); [line 14]\n REMOVE_TEMPS(n$1,n$2); [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="invhouse"]
9 [label="9: Prune (true branch) \n PRUNE(((n$2 == 2) != 0), true); [line 14]\n REMOVE_TEMPS(n$2); [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="invhouse"]
9 -> 11 ;
8 [label="8: BinaryOperatorStmt: EQ \n n$1=*&x:int * [line 14]\n n$2=*n$1:int [line 14]\n NULLIFY(&x); [line 14]\n " shape="box"]
8 [label="8: BinaryOperatorStmt: EQ \n n$1=*&x:int * [line 14]\n n$2=*n$1:int [line 14]\n REMOVE_TEMPS(n$1); [line 14]\n NULLIFY(&x); [line 14]\n " shape="box"]
8 -> 9 ;

@ -39,15 +39,15 @@ digraph iCFG {
25 -> 14 ;
24 [label="24: Prune (false branch) \n PRUNE((n$3 == 0), false); [line 22]\n REMOVE_TEMPS(n$2,n$3); [line 22]\n " shape="invhouse"]
24 [label="24: Prune (false branch) \n PRUNE((n$3 == 0), false); [line 22]\n REMOVE_TEMPS(n$3); [line 22]\n " shape="invhouse"]
24 -> 26 ;
23 [label="23: Prune (true branch) \n PRUNE((n$3 != 0), true); [line 22]\n REMOVE_TEMPS(n$2,n$3); [line 22]\n " shape="invhouse"]
23 [label="23: Prune (true branch) \n PRUNE((n$3 != 0), true); [line 22]\n REMOVE_TEMPS(n$3); [line 22]\n " shape="invhouse"]
23 -> 25 ;
22 [label="22: Call _fun_identity \n n$2=*&SIL_temp_conditional___n$0:int [line 22]\n n$3=_fun_identity(n$2:int ) [line 22]\n NULLIFY(&SIL_temp_conditional___n$0); [line 22]\n " shape="box"]
22 [label="22: Call _fun_identity \n n$2=*&SIL_temp_conditional___n$0:int [line 22]\n n$3=_fun_identity(n$2:int ) [line 22]\n REMOVE_TEMPS(n$2); [line 22]\n NULLIFY(&SIL_temp_conditional___n$0); [line 22]\n " shape="box"]
22 -> 23 ;
@ -96,15 +96,15 @@ digraph iCFG {
11 -> 5 ;
10 [label="10: Prune (false branch) \n PRUNE((n$1 == 0), false); [line 13]\n REMOVE_TEMPS(n$0,n$1); [line 13]\n " shape="invhouse"]
10 [label="10: Prune (false branch) \n PRUNE((n$1 == 0), false); [line 13]\n REMOVE_TEMPS(n$1); [line 13]\n " shape="invhouse"]
10 -> 12 ;
9 [label="9: Prune (true branch) \n PRUNE((n$1 != 0), true); [line 13]\n REMOVE_TEMPS(n$0,n$1); [line 13]\n " shape="invhouse"]
9 [label="9: Prune (true branch) \n PRUNE((n$1 != 0), true); [line 13]\n REMOVE_TEMPS(n$1); [line 13]\n " shape="invhouse"]
9 -> 11 ;
8 [label="8: Call _fun_identity \n n$0=*&x:int [line 13]\n n$1=_fun_identity(n$0:int ) [line 13]\n NULLIFY(&x); [line 13]\n " shape="box"]
8 [label="8: Call _fun_identity \n n$0=*&x:int [line 13]\n n$1=_fun_identity(n$0:int ) [line 13]\n REMOVE_TEMPS(n$0); [line 13]\n NULLIFY(&x); [line 13]\n " shape="box"]
8 -> 9 ;

@ -3,15 +3,15 @@ digraph iCFG {
8 -> 2 ;
7 [label="7: Prune (false branch) \n PRUNE((n$1 == 0), false); [line 11]\n REMOVE_TEMPS(n$0,n$1); [line 11]\n " shape="invhouse"]
7 [label="7: Prune (false branch) \n PRUNE((n$1 == 0), false); [line 11]\n REMOVE_TEMPS(n$1); [line 11]\n " shape="invhouse"]
7 -> 4 ;
6 [label="6: Prune (true branch) \n PRUNE((n$1 != 0), true); [line 11]\n REMOVE_TEMPS(n$0,n$1); [line 11]\n " shape="invhouse"]
6 [label="6: Prune (true branch) \n PRUNE((n$1 != 0), true); [line 11]\n REMOVE_TEMPS(n$1); [line 11]\n " shape="invhouse"]
6 -> 8 ;
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 NULLIFY(&p); [line 11]\n " shape="box"]
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 REMOVE_TEMPS(n$0); [line 11]\n NULLIFY(&p); [line 11]\n " shape="box"]
5 -> 6 ;

@ -1,5 +1,5 @@
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 n$4=*(n$0 + n$1):int [line 21]\n *&return:int =n$4 [line 21]\n REMOVE_TEMPS(n$4,n$0,n$1,n$2,n$3); [line 21]\n NULLIFY(&p); [line 21]\n NULLIFY(&x); [line 21]\n NULLIFY(&y); [line 21]\n APPLY_ABSTRACTION; [line 21]\n " shape="box"]
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 n$4=*(n$0 + n$1):int [line 21]\n *&return:int =n$4 [line 21]\n REMOVE_TEMPS(n$0,n$1,n$2,n$3,n$4); [line 21]\n NULLIFY(&p); [line 21]\n NULLIFY(&x); [line 21]\n NULLIFY(&y); [line 21]\n APPLY_ABSTRACTION; [line 21]\n " shape="box"]
8 -> 7 ;
@ -14,7 +14,7 @@ digraph iCFG {
5 -> 4 ;
4 [label="4: BinaryOperatorStmt: Assign \n *&X:int =4 [line 14]\n n$0=*&X:int [line 15]\n n$1=*n$0:int [line 13]\n *&y:int =n$1 [line 13]\n REMOVE_TEMPS(n$1,n$0); [line 13]\n NULLIFY(&X); [line 13]\n NULLIFY(&y); [line 13]\n " shape="box"]
4 [label="4: BinaryOperatorStmt: Assign \n *&X:int =4 [line 14]\n n$0=*&X:int [line 15]\n n$1=*n$0:int [line 13]\n *&y:int =n$1 [line 13]\n REMOVE_TEMPS(n$0,n$1); [line 13]\n NULLIFY(&X); [line 13]\n NULLIFY(&y); [line 13]\n " shape="box"]
4 -> 3 ;

@ -3,11 +3,11 @@ digraph iCFG {
195 -> 186 ;
194 [label="194: Prune (false branch) \n PRUNE(((n$3 == 0) == 0), false); [line 194]\n APPLY_ABSTRACTION; [line 194]\n " shape="invhouse"]
194 [label="194: Prune (false branch) \n PRUNE(((n$3 == 0) == 0), false); [line 194]\n REMOVE_TEMPS(n$3); [line 194]\n APPLY_ABSTRACTION; [line 194]\n " shape="invhouse"]
194 -> 184 ;
193 [label="193: Prune (true branch) \n PRUNE(((n$3 == 0) != 0), true); [line 194]\n " shape="invhouse"]
193 [label="193: Prune (true branch) \n PRUNE(((n$3 == 0) != 0), true); [line 194]\n REMOVE_TEMPS(n$3); [line 194]\n " shape="invhouse"]
193 -> 192 ;
@ -15,7 +15,7 @@ digraph iCFG {
192 -> 184 ;
191 [label="191: Switch_stmt \n n$2=*&SIL_temp_conditional___n$0:int [line 193]\n *&value:int =n$2 [line 193]\n n$3=*&value:int [line 193]\n NULLIFY(&SIL_temp_conditional___n$0); [line 193]\n NULLIFY(&value); [line 193]\n " shape="box"]
191 [label="191: Switch_stmt \n n$2=*&SIL_temp_conditional___n$0:int [line 193]\n *&value:int =n$2 [line 193]\n n$3=*&value:int [line 193]\n REMOVE_TEMPS(n$2); [line 193]\n NULLIFY(&SIL_temp_conditional___n$0); [line 193]\n NULLIFY(&value); [line 193]\n " shape="box"]
191 -> 193 ;
@ -45,7 +45,7 @@ digraph iCFG {
185 -> 191 ;
184 [label="184: Return Stmt \n *&return:int =0 [line 197]\n REMOVE_TEMPS(n$2,n$3); [line 197]\n APPLY_ABSTRACTION; [line 197]\n " shape="box"]
184 [label="184: Return Stmt \n *&return:int =0 [line 197]\n APPLY_ABSTRACTION; [line 197]\n " shape="box"]
184 -> 183 ;
@ -60,11 +60,11 @@ digraph iCFG {
181 -> 180 ;
180 [label="180: Switch_stmt \n *&value:int =7 [line 187]\n n$0=*&value:int [line 187]\n NULLIFY(&value); [line 187]\n " shape="box"]
180 [label="180: Switch_stmt \n *&value:int =7 [line 187]\n n$0=*&value:int [line 187]\n REMOVE_TEMPS(n$0); [line 187]\n NULLIFY(&value); [line 187]\n " shape="box"]
180 -> 179 ;
179 [label="179: Return Stmt \n *&return:int =0 [line 188]\n REMOVE_TEMPS(n$0); [line 188]\n APPLY_ABSTRACTION; [line 188]\n " shape="box"]
179 [label="179: Return Stmt \n *&return:int =0 [line 188]\n APPLY_ABSTRACTION; [line 188]\n " shape="box"]
179 -> 178 ;
@ -79,11 +79,11 @@ digraph iCFG {
176 -> 175 ;
175 [label="175: Switch_stmt \n n$0=*&value:int [line 181]\n NULLIFY(&value); [line 181]\n " shape="box"]
175 [label="175: Switch_stmt \n n$0=*&value:int [line 181]\n REMOVE_TEMPS(n$0); [line 181]\n NULLIFY(&value); [line 181]\n " shape="box"]
175 -> 174 ;
174 [label="174: Return Stmt \n *&return:int =0 [line 182]\n REMOVE_TEMPS(n$0); [line 182]\n APPLY_ABSTRACTION; [line 182]\n " shape="box"]
174 [label="174: Return Stmt \n *&return:int =0 [line 182]\n APPLY_ABSTRACTION; [line 182]\n " shape="box"]
174 -> 173 ;
@ -103,7 +103,7 @@ digraph iCFG {
170 -> 165 ;
170 -> 166 ;
169 [label="169: Prune (true branch) \n PRUNE(((n$3 == 0) != 0), true); [line 161]\n NULLIFY(&value); [line 161]\n " shape="invhouse"]
169 [label="169: Prune (true branch) \n PRUNE(((n$3 == 0) != 0), true); [line 161]\n REMOVE_TEMPS(n$3); [line 161]\n NULLIFY(&value); [line 161]\n " shape="invhouse"]
169 -> 168 ;
@ -120,7 +120,7 @@ digraph iCFG {
166 -> 160 ;
166 -> 161 ;
165 [label="165: Prune (true branch) \n PRUNE(((n$3 == 1) != 0), true); [line 164]\n " shape="invhouse"]
165 [label="165: Prune (true branch) \n PRUNE(((n$3 == 1) != 0), true); [line 164]\n REMOVE_TEMPS(n$3); [line 164]\n " shape="invhouse"]
165 -> 164 ;
@ -141,15 +141,15 @@ digraph iCFG {
161 -> 158 ;
161 -> 159 ;
160 [label="160: Prune (true branch) \n PRUNE(((n$3 == 2) != 0), true); [line 170]\n APPLY_ABSTRACTION; [line 170]\n " shape="invhouse"]
160 [label="160: Prune (true branch) \n PRUNE(((n$3 == 2) != 0), true); [line 170]\n REMOVE_TEMPS(n$3); [line 170]\n APPLY_ABSTRACTION; [line 170]\n " shape="invhouse"]
160 -> 150 ;
159 [label="159: Prune (false branch) \n PRUNE(((n$3 == 3) == 0), false); [line 171]\n APPLY_ABSTRACTION; [line 171]\n " shape="invhouse"]
159 [label="159: Prune (false branch) \n PRUNE(((n$3 == 3) == 0), false); [line 171]\n REMOVE_TEMPS(n$3); [line 171]\n APPLY_ABSTRACTION; [line 171]\n " shape="invhouse"]
159 -> 150 ;
158 [label="158: Prune (true branch) \n PRUNE(((n$3 == 3) != 0), true); [line 171]\n APPLY_ABSTRACTION; [line 171]\n " shape="invhouse"]
158 [label="158: Prune (true branch) \n PRUNE(((n$3 == 3) != 0), true); [line 171]\n REMOVE_TEMPS(n$3); [line 171]\n APPLY_ABSTRACTION; [line 171]\n " shape="invhouse"]
158 -> 150 ;
@ -183,7 +183,7 @@ digraph iCFG {
151 -> 157 ;
150 [label="150: DeclStmt \n *&a:int =0 [line 174]\n REMOVE_TEMPS(n$3); [line 174]\n NULLIFY(&a); [line 174]\n APPLY_ABSTRACTION; [line 174]\n " shape="box"]
150 [label="150: DeclStmt \n *&a:int =0 [line 174]\n NULLIFY(&a); [line 174]\n APPLY_ABSTRACTION; [line 174]\n " shape="box"]
150 -> 146 ;
@ -224,7 +224,7 @@ digraph iCFG {
141 -> 137 ;
141 -> 138 ;
140 [label="140: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 142]\n " shape="invhouse"]
140 [label="140: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 142]\n REMOVE_TEMPS(n$0); [line 142]\n " shape="invhouse"]
140 -> 139 ;
@ -237,7 +237,7 @@ digraph iCFG {
138 -> 132 ;
138 -> 133 ;
137 [label="137: Prune (true branch) \n PRUNE(((n$0 == 1) != 0), true); [line 145]\n " shape="invhouse"]
137 [label="137: Prune (true branch) \n PRUNE(((n$0 == 1) != 0), true); [line 145]\n REMOVE_TEMPS(n$0); [line 145]\n " shape="invhouse"]
137 -> 136 ;
@ -258,15 +258,15 @@ digraph iCFG {
133 -> 130 ;
133 -> 131 ;
132 [label="132: Prune (true branch) \n PRUNE(((n$0 == 2) != 0), true); [line 150]\n APPLY_ABSTRACTION; [line 150]\n " shape="invhouse"]
132 [label="132: Prune (true branch) \n PRUNE(((n$0 == 2) != 0), true); [line 150]\n REMOVE_TEMPS(n$0); [line 150]\n APPLY_ABSTRACTION; [line 150]\n " shape="invhouse"]
132 -> 128 ;
131 [label="131: Prune (false branch) \n PRUNE(((n$0 == 3) == 0), false); [line 151]\n APPLY_ABSTRACTION; [line 151]\n " shape="invhouse"]
131 [label="131: Prune (false branch) \n PRUNE(((n$0 == 3) == 0), false); [line 151]\n REMOVE_TEMPS(n$0); [line 151]\n APPLY_ABSTRACTION; [line 151]\n " shape="invhouse"]
131 -> 128 ;
130 [label="130: Prune (true branch) \n PRUNE(((n$0 == 3) != 0), true); [line 151]\n APPLY_ABSTRACTION; [line 151]\n " shape="invhouse"]
130 [label="130: Prune (true branch) \n PRUNE(((n$0 == 3) != 0), true); [line 151]\n REMOVE_TEMPS(n$0); [line 151]\n APPLY_ABSTRACTION; [line 151]\n " shape="invhouse"]
130 -> 128 ;
@ -275,7 +275,7 @@ digraph iCFG {
129 -> 140 ;
129 -> 141 ;
128 [label="128: Return Stmt \n *&return:int =0 [line 154]\n REMOVE_TEMPS(n$0); [line 154]\n APPLY_ABSTRACTION; [line 154]\n " shape="box"]
128 [label="128: Return Stmt \n *&return:int =0 [line 154]\n APPLY_ABSTRACTION; [line 154]\n " shape="box"]
128 -> 127 ;
@ -306,7 +306,7 @@ digraph iCFG {
121 -> 117 ;
121 -> 118 ;
120 [label="120: Prune (true branch) \n PRUNE(((n$2 == 0) != 0), true); [line 122]\n " shape="invhouse"]
120 [label="120: Prune (true branch) \n PRUNE(((n$2 == 0) != 0), true); [line 122]\n REMOVE_TEMPS(n$2); [line 122]\n " shape="invhouse"]
120 -> 119 ;
@ -319,7 +319,7 @@ digraph iCFG {
118 -> 112 ;
118 -> 113 ;
117 [label="117: Prune (true branch) \n PRUNE(((n$2 == 1) != 0), true); [line 125]\n " shape="invhouse"]
117 [label="117: Prune (true branch) \n PRUNE(((n$2 == 1) != 0), true); [line 125]\n REMOVE_TEMPS(n$2); [line 125]\n " shape="invhouse"]
117 -> 116 ;
@ -340,15 +340,15 @@ digraph iCFG {
113 -> 110 ;
113 -> 111 ;
112 [label="112: Prune (true branch) \n PRUNE(((n$2 == 2) != 0), true); [line 130]\n APPLY_ABSTRACTION; [line 130]\n " shape="invhouse"]
112 [label="112: Prune (true branch) \n PRUNE(((n$2 == 2) != 0), true); [line 130]\n REMOVE_TEMPS(n$2); [line 130]\n APPLY_ABSTRACTION; [line 130]\n " shape="invhouse"]
112 -> 102 ;
111 [label="111: Prune (false branch) \n PRUNE(((n$2 == 3) == 0), false); [line 131]\n APPLY_ABSTRACTION; [line 131]\n " shape="invhouse"]
111 [label="111: Prune (false branch) \n PRUNE(((n$2 == 3) == 0), false); [line 131]\n REMOVE_TEMPS(n$2); [line 131]\n APPLY_ABSTRACTION; [line 131]\n " shape="invhouse"]
111 -> 102 ;
110 [label="110: Prune (true branch) \n PRUNE(((n$2 == 3) != 0), true); [line 131]\n APPLY_ABSTRACTION; [line 131]\n " shape="invhouse"]
110 [label="110: Prune (true branch) \n PRUNE(((n$2 == 3) != 0), true); [line 131]\n REMOVE_TEMPS(n$2); [line 131]\n APPLY_ABSTRACTION; [line 131]\n " shape="invhouse"]
110 -> 102 ;
@ -382,7 +382,7 @@ digraph iCFG {
103 -> 109 ;
102 [label="102: Return Stmt \n *&return:int =0 [line 134]\n REMOVE_TEMPS(n$2); [line 134]\n APPLY_ABSTRACTION; [line 134]\n " shape="box"]
102 [label="102: Return Stmt \n *&return:int =0 [line 134]\n APPLY_ABSTRACTION; [line 134]\n " shape="box"]
102 -> 101 ;
@ -401,19 +401,19 @@ digraph iCFG {
98 -> 97 ;
97 [label="97: Call _fun_printf \n n$4=_fun_printf(\"(out)HELLO WORLD!\":char *) [line 108]\n REMOVE_TEMPS(n$4); [line 108]\n " shape="box"]
97 [label="97: Call _fun_printf \n n$4=_fun_printf(\"(out)HELLO WORLD!\":char *) [line 108]\n " shape="box"]
97 -> 96 ;
96 [label="96: BinaryOperatorStmt: Assign \n n$3=*&value:int [line 109]\n *&x:int =(n$3 + 1) [line 109]\n REMOVE_TEMPS(n$3); [line 109]\n APPLY_ABSTRACTION; [line 109]\n " shape="box"]
96 [label="96: BinaryOperatorStmt: Assign \n n$3=*&value:int [line 109]\n *&x:int =(n$3 + 1) [line 109]\n APPLY_ABSTRACTION; [line 109]\n " shape="box"]
96 -> 88 ;
95 [label="95: Prune (false branch) \n PRUNE(((n$1 == 0) == 0), false); [line 111]\n APPLY_ABSTRACTION; [line 111]\n " shape="invhouse"]
95 [label="95: Prune (false branch) \n PRUNE(((n$1 == 0) == 0), false); [line 111]\n REMOVE_TEMPS(n$1); [line 111]\n APPLY_ABSTRACTION; [line 111]\n " shape="invhouse"]
95 -> 88 ;
94 [label="94: Prune (true branch) \n PRUNE(((n$1 == 0) != 0), true); [line 111]\n " shape="invhouse"]
94 [label="94: Prune (true branch) \n PRUNE(((n$1 == 0) != 0), true); [line 111]\n REMOVE_TEMPS(n$1); [line 111]\n " shape="invhouse"]
94 -> 93 ;
@ -439,7 +439,7 @@ digraph iCFG {
89 -> 90 ;
89 -> 91 ;
88 [label="88: + \n REMOVE_TEMPS(n$1); [line 105]\n " ]
88 [label="88: + \n " ]
88 -> 89 ;
@ -462,11 +462,11 @@ digraph iCFG {
83 -> 82 ;
82 [label="82: Call _fun_printf \n n$4=_fun_printf(\"(out)HELLO WORLD!\":char *) [line 82]\n REMOVE_TEMPS(n$4); [line 82]\n " shape="box"]
82 [label="82: Call _fun_printf \n n$4=_fun_printf(\"(out)HELLO WORLD!\":char *) [line 82]\n " shape="box"]
82 -> 81 ;
81 [label="81: BinaryOperatorStmt: Assign \n n$3=*&value:int [line 83]\n *&x:int =(n$3 + 1) [line 83]\n REMOVE_TEMPS(n$3); [line 83]\n APPLY_ABSTRACTION; [line 83]\n " shape="box"]
81 [label="81: BinaryOperatorStmt: Assign \n n$3=*&value:int [line 83]\n *&x:int =(n$3 + 1) [line 83]\n APPLY_ABSTRACTION; [line 83]\n " shape="box"]
81 -> 78 ;
@ -475,7 +475,7 @@ digraph iCFG {
80 -> 75 ;
80 -> 76 ;
79 [label="79: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 84]\n APPLY_ABSTRACTION; [line 84]\n " shape="invhouse"]
79 [label="79: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 84]\n REMOVE_TEMPS(n$0); [line 84]\n APPLY_ABSTRACTION; [line 84]\n " shape="invhouse"]
79 -> 78 ;
@ -492,7 +492,7 @@ digraph iCFG {
76 -> 70 ;
76 -> 71 ;
75 [label="75: Prune (true branch) \n PRUNE(((n$0 == 1) != 0), true); [line 90]\n APPLY_ABSTRACTION; [line 90]\n " shape="invhouse"]
75 [label="75: Prune (true branch) \n PRUNE(((n$0 == 1) != 0), true); [line 90]\n REMOVE_TEMPS(n$0); [line 90]\n APPLY_ABSTRACTION; [line 90]\n " shape="invhouse"]
75 -> 74 ;
@ -513,15 +513,15 @@ digraph iCFG {
71 -> 68 ;
71 -> 69 ;
70 [label="70: Prune (true branch) \n PRUNE(((n$0 == 2) != 0), true); [line 96]\n APPLY_ABSTRACTION; [line 96]\n " shape="invhouse"]
70 [label="70: Prune (true branch) \n PRUNE(((n$0 == 2) != 0), true); [line 96]\n REMOVE_TEMPS(n$0); [line 96]\n APPLY_ABSTRACTION; [line 96]\n " shape="invhouse"]
70 -> 65 ;
69 [label="69: Prune (false branch) \n PRUNE(((n$0 == 3) == 0), false); [line 97]\n " shape="invhouse"]
69 [label="69: Prune (false branch) \n PRUNE(((n$0 == 3) == 0), false); [line 97]\n REMOVE_TEMPS(n$0); [line 97]\n " shape="invhouse"]
69 -> 67 ;
68 [label="68: Prune (true branch) \n PRUNE(((n$0 == 3) != 0), true); [line 97]\n APPLY_ABSTRACTION; [line 97]\n " shape="invhouse"]
68 [label="68: Prune (true branch) \n PRUNE(((n$0 == 3) != 0), true); [line 97]\n REMOVE_TEMPS(n$0); [line 97]\n APPLY_ABSTRACTION; [line 97]\n " shape="invhouse"]
68 -> 65 ;
@ -534,7 +534,7 @@ digraph iCFG {
66 -> 79 ;
66 -> 80 ;
65 [label="65: Return Stmt \n *&return:int =0 [line 100]\n REMOVE_TEMPS(n$0); [line 100]\n APPLY_ABSTRACTION; [line 100]\n " shape="box"]
65 [label="65: Return Stmt \n *&return:int =0 [line 100]\n APPLY_ABSTRACTION; [line 100]\n " shape="box"]
65 -> 64 ;
@ -554,7 +554,7 @@ digraph iCFG {
61 -> 57 ;
61 -> 58 ;
60 [label="60: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 63]\n " shape="invhouse"]
60 [label="60: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 63]\n REMOVE_TEMPS(n$0); [line 63]\n " shape="invhouse"]
60 -> 59 ;
@ -567,7 +567,7 @@ digraph iCFG {
58 -> 52 ;
58 -> 53 ;
57 [label="57: Prune (true branch) \n PRUNE(((n$0 == 1) != 0), true); [line 66]\n " shape="invhouse"]
57 [label="57: Prune (true branch) \n PRUNE(((n$0 == 1) != 0), true); [line 66]\n REMOVE_TEMPS(n$0); [line 66]\n " shape="invhouse"]
57 -> 56 ;
@ -588,15 +588,15 @@ digraph iCFG {
53 -> 50 ;
53 -> 51 ;
52 [label="52: Prune (true branch) \n PRUNE(((n$0 == 2) != 0), true); [line 71]\n APPLY_ABSTRACTION; [line 71]\n " shape="invhouse"]
52 [label="52: Prune (true branch) \n PRUNE(((n$0 == 2) != 0), true); [line 71]\n REMOVE_TEMPS(n$0); [line 71]\n APPLY_ABSTRACTION; [line 71]\n " shape="invhouse"]
52 -> 48 ;
51 [label="51: Prune (false branch) \n PRUNE(((n$0 == 3) == 0), false); [line 72]\n APPLY_ABSTRACTION; [line 72]\n " shape="invhouse"]
51 [label="51: Prune (false branch) \n PRUNE(((n$0 == 3) == 0), false); [line 72]\n REMOVE_TEMPS(n$0); [line 72]\n APPLY_ABSTRACTION; [line 72]\n " shape="invhouse"]
51 -> 48 ;
50 [label="50: Prune (true branch) \n PRUNE(((n$0 == 3) != 0), true); [line 72]\n APPLY_ABSTRACTION; [line 72]\n " shape="invhouse"]
50 [label="50: Prune (true branch) \n PRUNE(((n$0 == 3) != 0), true); [line 72]\n REMOVE_TEMPS(n$0); [line 72]\n APPLY_ABSTRACTION; [line 72]\n " shape="invhouse"]
50 -> 48 ;
@ -605,7 +605,7 @@ digraph iCFG {
49 -> 60 ;
49 -> 61 ;
48 [label="48: Return Stmt \n *&return:int =0 [line 75]\n REMOVE_TEMPS(n$0); [line 75]\n APPLY_ABSTRACTION; [line 75]\n " shape="box"]
48 [label="48: Return Stmt \n *&return:int =0 [line 75]\n APPLY_ABSTRACTION; [line 75]\n " shape="box"]
48 -> 47 ;
@ -624,11 +624,11 @@ digraph iCFG {
44 -> 43 ;
43 [label="43: Call _fun_printf \n n$4=_fun_printf(\"(out)HELLO WORLD!\":char *) [line 39]\n REMOVE_TEMPS(n$4); [line 39]\n " shape="box"]
43 [label="43: Call _fun_printf \n n$4=_fun_printf(\"(out)HELLO WORLD!\":char *) [line 39]\n " shape="box"]
43 -> 42 ;
42 [label="42: BinaryOperatorStmt: Assign \n n$3=*&value:int [line 40]\n *&x:int =(n$3 + 1) [line 40]\n REMOVE_TEMPS(n$3); [line 40]\n APPLY_ABSTRACTION; [line 40]\n " shape="box"]
42 [label="42: BinaryOperatorStmt: Assign \n n$3=*&value:int [line 40]\n *&x:int =(n$3 + 1) [line 40]\n APPLY_ABSTRACTION; [line 40]\n " shape="box"]
42 -> 39 ;
@ -637,7 +637,7 @@ digraph iCFG {
41 -> 36 ;
41 -> 37 ;
40 [label="40: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 41]\n APPLY_ABSTRACTION; [line 41]\n " shape="invhouse"]
40 [label="40: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 41]\n REMOVE_TEMPS(n$0); [line 41]\n APPLY_ABSTRACTION; [line 41]\n " shape="invhouse"]
40 -> 39 ;
@ -654,7 +654,7 @@ digraph iCFG {
37 -> 31 ;
37 -> 32 ;
36 [label="36: Prune (true branch) \n PRUNE(((n$0 == 1) != 0), true); [line 47]\n APPLY_ABSTRACTION; [line 47]\n " shape="invhouse"]
36 [label="36: Prune (true branch) \n PRUNE(((n$0 == 1) != 0), true); [line 47]\n REMOVE_TEMPS(n$0); [line 47]\n APPLY_ABSTRACTION; [line 47]\n " shape="invhouse"]
36 -> 35 ;
@ -675,15 +675,15 @@ digraph iCFG {
32 -> 29 ;
32 -> 30 ;
31 [label="31: Prune (true branch) \n PRUNE(((n$0 == 2) != 0), true); [line 53]\n APPLY_ABSTRACTION; [line 53]\n " shape="invhouse"]
31 [label="31: Prune (true branch) \n PRUNE(((n$0 == 2) != 0), true); [line 53]\n REMOVE_TEMPS(n$0); [line 53]\n APPLY_ABSTRACTION; [line 53]\n " shape="invhouse"]
31 -> 26 ;
30 [label="30: Prune (false branch) \n PRUNE(((n$0 == 3) == 0), false); [line 54]\n " shape="invhouse"]
30 [label="30: Prune (false branch) \n PRUNE(((n$0 == 3) == 0), false); [line 54]\n REMOVE_TEMPS(n$0); [line 54]\n " shape="invhouse"]
30 -> 28 ;
29 [label="29: Prune (true branch) \n PRUNE(((n$0 == 3) != 0), true); [line 54]\n APPLY_ABSTRACTION; [line 54]\n " shape="invhouse"]
29 [label="29: Prune (true branch) \n PRUNE(((n$0 == 3) != 0), true); [line 54]\n REMOVE_TEMPS(n$0); [line 54]\n APPLY_ABSTRACTION; [line 54]\n " shape="invhouse"]
29 -> 26 ;
@ -696,7 +696,7 @@ digraph iCFG {
27 -> 40 ;
27 -> 41 ;
26 [label="26: Return Stmt \n *&return:int =0 [line 57]\n REMOVE_TEMPS(n$0); [line 57]\n APPLY_ABSTRACTION; [line 57]\n " shape="box"]
26 [label="26: Return Stmt \n *&return:int =0 [line 57]\n APPLY_ABSTRACTION; [line 57]\n " shape="box"]
26 -> 25 ;
@ -715,11 +715,11 @@ digraph iCFG {
22 -> 21 ;
21 [label="21: Call _fun_printf \n n$7=_fun_printf(\"(out)HELLO WORLD!\":char *) [line 17]\n REMOVE_TEMPS(n$7); [line 17]\n " shape="box"]
21 [label="21: Call _fun_printf \n n$7=_fun_printf(\"(out)HELLO WORLD!\":char *) [line 17]\n " shape="box"]
21 -> 20 ;
20 [label="20: BinaryOperatorStmt: Assign \n n$6=*&value:int [line 18]\n *&x:int =(n$6 + 1) [line 18]\n REMOVE_TEMPS(n$6); [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"]
20 [label="20: BinaryOperatorStmt: Assign \n n$6=*&value:int [line 18]\n *&x:int =(n$6 + 1) [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"]
20 -> 17 ;
@ -728,7 +728,7 @@ digraph iCFG {
19 -> 15 ;
19 -> 16 ;
18 [label="18: Prune (true branch) \n PRUNE(((n$2 == 0) != 0), true); [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="invhouse"]
18 [label="18: Prune (true branch) \n PRUNE(((n$2 == 0) != 0), true); [line 19]\n REMOVE_TEMPS(n$2); [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="invhouse"]
18 -> 17 ;
@ -741,7 +741,7 @@ digraph iCFG {
16 -> 12 ;
16 -> 13 ;
15 [label="15: Prune (true branch) \n PRUNE(((n$2 == 1) != 0), true); [line 22]\n " shape="invhouse"]
15 [label="15: Prune (true branch) \n PRUNE(((n$2 == 1) != 0), true); [line 22]\n REMOVE_TEMPS(n$2); [line 22]\n " shape="invhouse"]
15 -> 14 ;
@ -749,11 +749,11 @@ digraph iCFG {
14 -> 4 ;
13 [label="13: Prune (false branch) \n PRUNE(((n$2 == 2) == 0), false); [line 25]\n " shape="invhouse"]
13 [label="13: Prune (false branch) \n PRUNE(((n$2 == 2) == 0), false); [line 25]\n REMOVE_TEMPS(n$2); [line 25]\n " shape="invhouse"]
13 -> 10 ;
12 [label="12: Prune (true branch) \n PRUNE(((n$2 == 2) != 0), true); [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="invhouse"]
12 [label="12: Prune (true branch) \n PRUNE(((n$2 == 2) != 0), true); [line 25]\n REMOVE_TEMPS(n$2); [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="invhouse"]
12 -> 11 ;
@ -770,7 +770,7 @@ digraph iCFG {
9 -> 18 ;
9 -> 19 ;
8 [label="8: Call _fun_printf \n n$1=_fun_printf(\"(after_switch)HELLO WORLD!\":char *) [line 30]\n REMOVE_TEMPS(n$1,n$2); [line 30]\n APPLY_ABSTRACTION; [line 30]\n " shape="box"]
8 [label="8: Call _fun_printf \n n$1=_fun_printf(\"(after_switch)HELLO WORLD!\":char *) [line 30]\n REMOVE_TEMPS(n$1); [line 30]\n APPLY_ABSTRACTION; [line 30]\n " shape="box"]
8 -> 4 ;

@ -1,9 +1,9 @@
digraph iCFG {
4 [label="4: DeclStmt \n *&x:void =_t$1 [line 15]\n NULLIFY(&x); [line 15]\n " shape="box"]
4 [label="4: DeclStmt \n *&x:void =_t$1 [line 15]\n REMOVE_TEMPS(_t$1); [line 15]\n NULLIFY(&x); [line 15]\n " shape="box"]
4 -> 3 ;
3 [label="3: DeclStmt \n *&z:void =_t$0 [line 16]\n NULLIFY(&z); [line 16]\n APPLY_ABSTRACTION; [line 16]\n " shape="box"]
3 [label="3: DeclStmt \n *&z:void =_t$0 [line 16]\n REMOVE_TEMPS(_t$0); [line 16]\n NULLIFY(&z); [line 16]\n APPLY_ABSTRACTION; [line 16]\n " shape="box"]
3 -> 2 ;

@ -10,15 +10,15 @@ digraph iCFG {
9 -> 11 ;
8 [label="8: Prune (false branch) \n PRUNE(((n$3 != n$5) == 0), false); [line 15]\n REMOVE_TEMPS(n$3,n$4,n$5); [line 15]\n NULLIFY(&i); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="invhouse"]
8 [label="8: Prune (false branch) \n PRUNE(((n$3 != n$5) == 0), false); [line 15]\n REMOVE_TEMPS(n$3,n$5); [line 15]\n NULLIFY(&i); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="invhouse"]
8 -> 2 ;
7 [label="7: Prune (true branch) \n PRUNE(((n$3 != n$5) != 0), true); [line 15]\n REMOVE_TEMPS(n$3,n$4,n$5); [line 15]\n " shape="invhouse"]
7 [label="7: Prune (true branch) \n PRUNE(((n$3 != n$5) != 0), true); [line 15]\n REMOVE_TEMPS(n$3,n$5); [line 15]\n " shape="invhouse"]
7 -> 5 ;
6 [label="6: BinaryOperatorStmt: NE \n n$3=*&i:int * [line 15]\n n$4=*&list:class std::initializer_list<int> [line 15]\n n$5=_fun_std::initializer_list<int>_end(&list:class std::initializer_list<int> &) [line 15]\n " shape="box"]
6 [label="6: BinaryOperatorStmt: NE \n n$3=*&i:int * [line 15]\n n$4=*&list:class std::initializer_list<int> [line 15]\n n$5=_fun_std::initializer_list<int>_end(&list:class std::initializer_list<int> &) [line 15]\n REMOVE_TEMPS(n$4); [line 15]\n " shape="box"]
6 -> 7 ;

@ -11,15 +11,15 @@ digraph iCFG {
59 -> 53 ;
58 [label="58: Prune (false branch) \n PRUNE((n$3 == 0), false); [line 63]\n REMOVE_TEMPS(n$2,n$3); [line 63]\n " shape="invhouse"]
58 [label="58: Prune (false branch) \n PRUNE((n$3 == 0), false); [line 63]\n REMOVE_TEMPS(n$3); [line 63]\n " shape="invhouse"]
58 -> 55 ;
57 [label="57: Prune (true branch) \n PRUNE((n$3 != 0), true); [line 63]\n REMOVE_TEMPS(n$2,n$3); [line 63]\n " shape="invhouse"]
57 [label="57: Prune (true branch) \n PRUNE((n$3 != 0), true); [line 63]\n REMOVE_TEMPS(n$3); [line 63]\n " shape="invhouse"]
57 -> 60 ;
56 [label="56: Call _fun_X_operator bool \n n$2=*&x:class X [line 63]\n n$3=_fun_X_operator bool(&x:class X &) [line 63]\n " shape="box"]
56 [label="56: Call _fun_X_operator bool \n n$2=*&x:class X [line 63]\n n$3=_fun_X_operator bool(&x:class X &) [line 63]\n REMOVE_TEMPS(n$2); [line 63]\n " shape="box"]
56 -> 57 ;
@ -51,15 +51,15 @@ digraph iCFG {
49 -> 43 ;
48 [label="48: Prune (false branch) \n PRUNE((n$3 == 0), false); [line 54]\n REMOVE_TEMPS(n$2,n$3); [line 54]\n " shape="invhouse"]
48 [label="48: Prune (false branch) \n PRUNE((n$3 == 0), false); [line 54]\n REMOVE_TEMPS(n$3); [line 54]\n " shape="invhouse"]
48 -> 45 ;
47 [label="47: Prune (true branch) \n PRUNE((n$3 != 0), true); [line 54]\n REMOVE_TEMPS(n$2,n$3); [line 54]\n " shape="invhouse"]
47 [label="47: Prune (true branch) \n PRUNE((n$3 != 0), true); [line 54]\n REMOVE_TEMPS(n$3); [line 54]\n " shape="invhouse"]
47 -> 50 ;
46 [label="46: Call _fun_X_operator bool \n n$2=*&x:class X [line 54]\n n$3=_fun_X_operator bool(&x:class X &) [line 54]\n " shape="box"]
46 [label="46: Call _fun_X_operator bool \n n$2=*&x:class X [line 54]\n n$3=_fun_X_operator bool(&x:class X &) [line 54]\n REMOVE_TEMPS(n$2); [line 54]\n " shape="box"]
46 -> 47 ;
@ -99,15 +99,15 @@ digraph iCFG {
37 -> 31 ;
36 [label="36: Prune (false branch) \n PRUNE((n$9 == 0), false); [line 45]\n REMOVE_TEMPS(n$7,n$9); [line 45]\n " shape="invhouse"]
36 [label="36: Prune (false branch) \n PRUNE((n$9 == 0), false); [line 45]\n REMOVE_TEMPS(n$9); [line 45]\n " shape="invhouse"]
36 -> 33 ;
35 [label="35: Prune (true branch) \n PRUNE((n$9 != 0), true); [line 45]\n REMOVE_TEMPS(n$7,n$9); [line 45]\n " shape="invhouse"]
35 [label="35: Prune (true branch) \n PRUNE((n$9 != 0), true); [line 45]\n REMOVE_TEMPS(n$9); [line 45]\n " shape="invhouse"]
35 -> 38 ;
34 [label="34: Call _fun_X_operator bool \n n$7=*&y:class Y [line 45]\n _fun_Y_operator X(&y:class Y &,&SIL_materialize_temp__n$6:class X *) [line 45]\n _fun_X_X(&__temp_construct_n$5:class X *,&SIL_materialize_temp__n$6:class X &) [line 45]\n n$9=_fun_X_operator bool(&__temp_construct_n$5:class X &) [line 45]\n " shape="box"]
34 [label="34: Call _fun_X_operator bool \n n$7=*&y:class Y [line 45]\n _fun_Y_operator X(&y:class Y &,&SIL_materialize_temp__n$6:class X *) [line 45]\n _fun_X_X(&__temp_construct_n$5:class X *,&SIL_materialize_temp__n$6:class X &) [line 45]\n n$9=_fun_X_operator bool(&__temp_construct_n$5:class X &) [line 45]\n REMOVE_TEMPS(n$7); [line 45]\n " shape="box"]
34 -> 35 ;
@ -139,15 +139,15 @@ digraph iCFG {
27 -> 21 ;
26 [label="26: Prune (false branch) \n PRUNE((n$3 == 0), false); [line 34]\n REMOVE_TEMPS(n$2,n$3); [line 34]\n " shape="invhouse"]
26 [label="26: Prune (false branch) \n PRUNE((n$3 == 0), false); [line 34]\n REMOVE_TEMPS(n$3); [line 34]\n " shape="invhouse"]
26 -> 23 ;
25 [label="25: Prune (true branch) \n PRUNE((n$3 != 0), true); [line 34]\n REMOVE_TEMPS(n$2,n$3); [line 34]\n " shape="invhouse"]
25 [label="25: Prune (true branch) \n PRUNE((n$3 != 0), true); [line 34]\n REMOVE_TEMPS(n$3); [line 34]\n " shape="invhouse"]
25 -> 28 ;
24 [label="24: Call _fun_X_operator bool \n n$2=*&x:class X [line 34]\n n$3=_fun_X_operator bool(&x:class X &) [line 34]\n " shape="box"]
24 [label="24: Call _fun_X_operator bool \n n$2=*&x:class X [line 34]\n n$3=_fun_X_operator bool(&x:class X &) [line 34]\n REMOVE_TEMPS(n$2); [line 34]\n " shape="box"]
24 -> 25 ;

@ -4,7 +4,7 @@ digraph iCFG {
14 -> 11 ;
14 -> 12 ;
13 [label="13: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 12]\n NULLIFY(&x); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="invhouse"]
13 [label="13: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 12]\n REMOVE_TEMPS(n$0); [line 12]\n NULLIFY(&x); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="invhouse"]
13 -> 10 ;
@ -13,7 +13,7 @@ digraph iCFG {
12 -> 8 ;
12 -> 9 ;
11 [label="11: Prune (true branch) \n PRUNE(((n$0 == 1) != 0), true); [line 13]\n NULLIFY(&x); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="invhouse"]
11 [label="11: Prune (true branch) \n PRUNE(((n$0 == 1) != 0), true); [line 13]\n REMOVE_TEMPS(n$0); [line 13]\n NULLIFY(&x); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="invhouse"]
11 -> 10 ;
@ -21,11 +21,11 @@ digraph iCFG {
10 -> 2 ;
9 [label="9: Prune (false branch) \n PRUNE(((n$0 == 2) == 0), false); [line 15]\n " shape="invhouse"]
9 [label="9: Prune (false branch) \n PRUNE(((n$0 == 2) == 0), false); [line 15]\n REMOVE_TEMPS(n$0); [line 15]\n " shape="invhouse"]
9 -> 5 ;
8 [label="8: Prune (true branch) \n PRUNE(((n$0 == 2) != 0), true); [line 15]\n NULLIFY(&x); [line 15]\n " shape="invhouse"]
8 [label="8: Prune (true branch) \n PRUNE(((n$0 == 2) != 0), true); [line 15]\n REMOVE_TEMPS(n$0); [line 15]\n NULLIFY(&x); [line 15]\n " shape="invhouse"]
8 -> 7 ;
@ -50,7 +50,7 @@ digraph iCFG {
3 -> 13 ;
3 -> 14 ;
2 [label="2: Exit get \n REMOVE_TEMPS(n$0); [line 20]\n " color=yellow style=filled]
2 [label="2: Exit get \n " color=yellow style=filled]
1 [label="1: Start get\nFormals: a:int \nLocals: x:int \n DECLARE_LOCALS(&return,&x); [line 10]\n " color=yellow style=filled]

@ -8,11 +8,11 @@ digraph iCFG {
10 -> 5 ;
9 [label="9: Prune (false branch) \n PRUNE(((_t$0 == 0) == 0), false); [line 17]\n NULLIFY(&seed); [line 17]\n " shape="invhouse"]
9 [label="9: Prune (false branch) \n PRUNE(((_t$0 == 0) == 0), false); [line 17]\n REMOVE_TEMPS(_t$0); [line 17]\n NULLIFY(&seed); [line 17]\n " shape="invhouse"]
9 -> 7 ;
8 [label="8: Prune (true branch) \n PRUNE(((_t$0 == 0) != 0), true); [line 17]\n " shape="invhouse"]
8 [label="8: Prune (true branch) \n PRUNE(((_t$0 == 0) != 0), true); [line 17]\n REMOVE_TEMPS(_t$0); [line 17]\n " shape="invhouse"]
8 -> 10 ;

@ -11,15 +11,15 @@ digraph iCFG {
68 -> 62 ;
67 [label="67: Prune (false branch) \n PRUNE(((n$0 == n$3) == 0), false); [line 64]\n REMOVE_TEMPS(n$0,n$1,n$2,n$3); [line 64]\n " shape="invhouse"]
67 [label="67: Prune (false branch) \n PRUNE(((n$0 == n$3) == 0), false); [line 64]\n REMOVE_TEMPS(n$0,n$3); [line 64]\n " shape="invhouse"]
67 -> 69 ;
66 [label="66: Prune (true branch) \n PRUNE(((n$0 == n$3) != 0), true); [line 64]\n REMOVE_TEMPS(n$0,n$1,n$2,n$3); [line 64]\n " shape="invhouse"]
66 [label="66: Prune (true branch) \n PRUNE(((n$0 == n$3) != 0), true); [line 64]\n REMOVE_TEMPS(n$0,n$3); [line 64]\n " shape="invhouse"]
66 -> 68 ;
65 [label="65: BinaryOperatorStmt: EQ \n n$0=_fun_template_typeid<Person>(&person:class Person &) [line 64]\n n$1=_fun___cxx_typeid(sizeof(class std::type_info ):void ,n$1.__type_name:void ,&person:class Person ) [line 64]\n n$2=*n$1:class std::type_info [line 64]\n n$3=_fun_std::type_info_name(n$1:class std::type_info &) [line 64]\n " shape="box"]
65 [label="65: BinaryOperatorStmt: EQ \n n$0=_fun_template_typeid<Person>(&person:class Person &) [line 64]\n n$1=_fun___cxx_typeid(sizeof(class std::type_info ):void ,n$1.__type_name:void ,&person:class Person ) [line 64]\n n$2=*n$1:class std::type_info [line 64]\n n$3=_fun_std::type_info_name(n$1:class std::type_info &) [line 64]\n REMOVE_TEMPS(n$1,n$2); [line 64]\n " shape="box"]
65 -> 66 ;
@ -66,15 +66,15 @@ digraph iCFG {
54 -> 48 ;
53 [label="53: Prune (false branch) \n PRUNE(((n$3 == n$6) == 0), false); [line 50]\n REMOVE_TEMPS(n$0,n$1,n$2,n$3,n$4,n$5,n$6); [line 50]\n " shape="invhouse"]
53 [label="53: Prune (false branch) \n PRUNE(((n$3 == n$6) == 0), false); [line 50]\n REMOVE_TEMPS(n$3,n$6); [line 50]\n " shape="invhouse"]
53 -> 55 ;
52 [label="52: Prune (true branch) \n PRUNE(((n$3 == n$6) != 0), true); [line 50]\n REMOVE_TEMPS(n$0,n$1,n$2,n$3,n$4,n$5,n$6); [line 50]\n " shape="invhouse"]
52 [label="52: Prune (true branch) \n PRUNE(((n$3 == n$6) != 0), true); [line 50]\n REMOVE_TEMPS(n$3,n$6); [line 50]\n " shape="invhouse"]
52 -> 54 ;
51 [label="51: BinaryOperatorStmt: EQ \n n$0=*&ptr:class Person * [line 50]\n n$1=_fun___cxx_typeid(sizeof(class std::type_info ):void ,n$1.__type_name:void ,n$0:class Person ) [line 50]\n n$2=*n$1:class std::type_info [line 50]\n n$3=_fun_std::type_info_name(n$1:class std::type_info &) [line 50]\n n$4=_fun___cxx_typeid(sizeof(class std::type_info ):void ,n$4.__type_name:void ,&person:class Person ) [line 50]\n n$5=*n$4:class std::type_info [line 50]\n n$6=_fun_std::type_info_name(n$4:class std::type_info &) [line 50]\n NULLIFY(&ptr); [line 50]\n " shape="box"]
51 [label="51: BinaryOperatorStmt: EQ \n n$0=*&ptr:class Person * [line 50]\n n$1=_fun___cxx_typeid(sizeof(class std::type_info ):void ,n$1.__type_name:void ,n$0:class Person ) [line 50]\n n$2=*n$1:class std::type_info [line 50]\n n$3=_fun_std::type_info_name(n$1:class std::type_info &) [line 50]\n n$4=_fun___cxx_typeid(sizeof(class std::type_info ):void ,n$4.__type_name:void ,&person:class Person ) [line 50]\n n$5=*n$4:class std::type_info [line 50]\n n$6=_fun_std::type_info_name(n$4:class std::type_info &) [line 50]\n REMOVE_TEMPS(n$0,n$1,n$2,n$4,n$5); [line 50]\n NULLIFY(&ptr); [line 50]\n " shape="box"]
51 -> 52 ;
@ -110,15 +110,15 @@ digraph iCFG {
43 -> 37 ;
42 [label="42: Prune (false branch) \n PRUNE((n$3 == 0), false); [line 42]\n REMOVE_TEMPS(n$0,n$1,n$2,n$3); [line 42]\n " shape="invhouse"]
42 [label="42: Prune (false branch) \n PRUNE((n$3 == 0), false); [line 42]\n REMOVE_TEMPS(n$3); [line 42]\n " shape="invhouse"]
42 -> 44 ;
41 [label="41: Prune (true branch) \n PRUNE((n$3 != 0), true); [line 42]\n REMOVE_TEMPS(n$0,n$1,n$2,n$3); [line 42]\n " shape="invhouse"]
41 [label="41: Prune (true branch) \n PRUNE((n$3 != 0), true); [line 42]\n REMOVE_TEMPS(n$3); [line 42]\n " shape="invhouse"]
41 -> 43 ;
40 [label="40: Call _fun_std::type_info_operator== \n n$0=_fun___cxx_typeid(sizeof(class std::type_info ):void ,n$0.__type_name:void ,&employee:class Employee ) [line 42]\n n$1=*&ptr:class Person * [line 42]\n n$2=_fun___cxx_typeid(sizeof(class std::type_info ):void ,n$2.__type_name:void ,n$1:class Person ) [line 42]\n n$3=_fun_std::type_info_operator==(n$0:class std::type_info &,n$2:class std::type_info &) [line 42]\n NULLIFY(&ptr); [line 42]\n " shape="box"]
40 [label="40: Call _fun_std::type_info_operator== \n n$0=_fun___cxx_typeid(sizeof(class std::type_info ):void ,n$0.__type_name:void ,&employee:class Employee ) [line 42]\n n$1=*&ptr:class Person * [line 42]\n n$2=_fun___cxx_typeid(sizeof(class std::type_info ):void ,n$2.__type_name:void ,n$1:class Person ) [line 42]\n n$3=_fun_std::type_info_operator==(n$0:class std::type_info &,n$2:class std::type_info &) [line 42]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 42]\n NULLIFY(&ptr); [line 42]\n " shape="box"]
40 -> 41 ;
@ -206,15 +206,15 @@ digraph iCFG {
19 -> 13 ;
18 [label="18: Prune (false branch) \n PRUNE((n$2 == 0), false); [line 22]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 22]\n " shape="invhouse"]
18 [label="18: Prune (false branch) \n PRUNE((n$2 == 0), false); [line 22]\n REMOVE_TEMPS(n$2); [line 22]\n " shape="invhouse"]
18 -> 20 ;
17 [label="17: Prune (true branch) \n PRUNE((n$2 != 0), true); [line 22]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 22]\n " shape="invhouse"]
17 [label="17: Prune (true branch) \n PRUNE((n$2 != 0), true); [line 22]\n REMOVE_TEMPS(n$2); [line 22]\n " shape="invhouse"]
17 -> 19 ;
16 [label="16: Call _fun_std::type_info_operator== \n n$0=_fun___cxx_typeid(sizeof(class std::type_info ):void ,n$0.__type_name:void ,&t:int ) [line 22]\n n$1=_fun___cxx_typeid(sizeof(class std::type_info ):void ,n$1.__type_name:void ,&person:class Person ) [line 22]\n n$2=_fun_std::type_info_operator==(n$0:class std::type_info &,n$1:class std::type_info &) [line 22]\n NULLIFY(&t); [line 22]\n " shape="box"]
16 [label="16: Call _fun_std::type_info_operator== \n n$0=_fun___cxx_typeid(sizeof(class std::type_info ):void ,n$0.__type_name:void ,&t:int ) [line 22]\n n$1=_fun___cxx_typeid(sizeof(class std::type_info ):void ,n$1.__type_name:void ,&person:class Person ) [line 22]\n n$2=_fun_std::type_info_operator==(n$0:class std::type_info &,n$1:class std::type_info &) [line 22]\n REMOVE_TEMPS(n$0,n$1); [line 22]\n NULLIFY(&t); [line 22]\n " shape="box"]
16 -> 17 ;

@ -7,7 +7,7 @@ digraph iCFG {
72 -> 71 ;
71 [label="71: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_MemoryLeakExample_blockFreeNoLeakTODO______2); [line 105]\n n$56=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_MemoryLeakExample_blockFreeNoLeakTODO______2 ):unsigned long ) [line 105]\n *&__objc_anonymous_block_MemoryLeakExample_blockFreeNoLeakTODO______2:class __objc_anonymous_block_MemoryLeakExample_blockFreeNoLeakTODO______2 =n$56 [line 105]\n n$57=*&x:int * [line 105]\n *n$56.x:int *=n$57 [line 105]\n n$51=*&x:int * [line 105]\n *&blk:_fn_ (*)=(_fun___objc_anonymous_block_MemoryLeakExample_blockFreeNoLeakTODO______2,n$51) [line 105]\n REMOVE_TEMPS(n$56,n$57,n$51); [line 105]\n NULLIFY(&__objc_anonymous_block_MemoryLeakExample_blockFreeNoLeakTODO______2); [line 105]\n NULLIFY(&x); [line 105]\n " shape="box"]
71 [label="71: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_MemoryLeakExample_blockFreeNoLeakTODO______2); [line 105]\n n$56=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_MemoryLeakExample_blockFreeNoLeakTODO______2 ):unsigned long ) [line 105]\n *&__objc_anonymous_block_MemoryLeakExample_blockFreeNoLeakTODO______2:class __objc_anonymous_block_MemoryLeakExample_blockFreeNoLeakTODO______2 =n$56 [line 105]\n n$57=*&x:int * [line 105]\n *n$56.x:int *=n$57 [line 105]\n n$51=*&x:int * [line 105]\n *&blk:_fn_ (*)=(_fun___objc_anonymous_block_MemoryLeakExample_blockFreeNoLeakTODO______2,n$51) [line 105]\n REMOVE_TEMPS(n$51,n$56,n$57); [line 105]\n NULLIFY(&__objc_anonymous_block_MemoryLeakExample_blockFreeNoLeakTODO______2); [line 105]\n NULLIFY(&x); [line 105]\n " shape="box"]
71 -> 65 ;
@ -49,7 +49,7 @@ digraph iCFG {
61 -> 60 ;
60 [label="60: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_MemoryLeakExample_blockCapturedVarLeak______1); [line 96]\n n$45=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_MemoryLeakExample_blockCapturedVarLeak______1 ):unsigned long ) [line 96]\n *&__objc_anonymous_block_MemoryLeakExample_blockCapturedVarLeak______1:class __objc_anonymous_block_MemoryLeakExample_blockCapturedVarLeak______1 =n$45 [line 96]\n n$46=*&x:int * [line 96]\n *n$45.x:int *=n$46 [line 96]\n n$42=*&x:int * [line 96]\n *&blk:_fn_ (*)=(_fun___objc_anonymous_block_MemoryLeakExample_blockCapturedVarLeak______1,n$42) [line 96]\n REMOVE_TEMPS(n$45,n$46,n$42); [line 96]\n NULLIFY(&__objc_anonymous_block_MemoryLeakExample_blockCapturedVarLeak______1); [line 96]\n NULLIFY(&x); [line 96]\n " shape="box"]
60 [label="60: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_MemoryLeakExample_blockCapturedVarLeak______1); [line 96]\n n$45=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_MemoryLeakExample_blockCapturedVarLeak______1 ):unsigned long ) [line 96]\n *&__objc_anonymous_block_MemoryLeakExample_blockCapturedVarLeak______1:class __objc_anonymous_block_MemoryLeakExample_blockCapturedVarLeak______1 =n$45 [line 96]\n n$46=*&x:int * [line 96]\n *n$45.x:int *=n$46 [line 96]\n n$42=*&x:int * [line 96]\n *&blk:_fn_ (*)=(_fun___objc_anonymous_block_MemoryLeakExample_blockCapturedVarLeak______1,n$42) [line 96]\n REMOVE_TEMPS(n$42,n$45,n$46); [line 96]\n NULLIFY(&__objc_anonymous_block_MemoryLeakExample_blockCapturedVarLeak______1); [line 96]\n NULLIFY(&x); [line 96]\n " shape="box"]
60 -> 56 ;

@ -7,7 +7,7 @@ digraph iCFG {
53 -> 52 ;
52 [label="52: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_BlockVar_capturedNoNullDeref______5); [line 59]\n n$37=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_BlockVar_capturedNoNullDeref______5 ):unsigned long ) [line 59]\n *&__objc_anonymous_block_BlockVar_capturedNoNullDeref______5:class __objc_anonymous_block_BlockVar_capturedNoNullDeref______5 =n$37 [line 59]\n n$38=*&x:int * [line 59]\n *n$37.x:int *=n$38 [line 59]\n n$34=*&x:int * [line 59]\n *&my_block:_fn_ (*)=(_fun___objc_anonymous_block_BlockVar_capturedNoNullDeref______5,n$34) [line 59]\n REMOVE_TEMPS(n$37,n$38,n$34); [line 59]\n NULLIFY(&__objc_anonymous_block_BlockVar_capturedNoNullDeref______5); [line 59]\n NULLIFY(&x); [line 59]\n " shape="box"]
52 [label="52: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_BlockVar_capturedNoNullDeref______5); [line 59]\n n$37=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_BlockVar_capturedNoNullDeref______5 ):unsigned long ) [line 59]\n *&__objc_anonymous_block_BlockVar_capturedNoNullDeref______5:class __objc_anonymous_block_BlockVar_capturedNoNullDeref______5 =n$37 [line 59]\n n$38=*&x:int * [line 59]\n *n$37.x:int *=n$38 [line 59]\n n$34=*&x:int * [line 59]\n *&my_block:_fn_ (*)=(_fun___objc_anonymous_block_BlockVar_capturedNoNullDeref______5,n$34) [line 59]\n REMOVE_TEMPS(n$34,n$37,n$38); [line 59]\n NULLIFY(&__objc_anonymous_block_BlockVar_capturedNoNullDeref______5); [line 59]\n NULLIFY(&x); [line 59]\n " shape="box"]
52 -> 48 ;
@ -41,7 +41,7 @@ digraph iCFG {
44 -> 43 ;
43 [label="43: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_BlockVar_capturedNullDeref______4); [line 50]\n n$30=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_BlockVar_capturedNullDeref______4 ):unsigned long ) [line 50]\n *&__objc_anonymous_block_BlockVar_capturedNullDeref______4:class __objc_anonymous_block_BlockVar_capturedNullDeref______4 =n$30 [line 50]\n n$31=*&x:int * [line 50]\n *n$30.x:int *=n$31 [line 50]\n n$27=*&x:int * [line 50]\n *&my_block:_fn_ (*)=(_fun___objc_anonymous_block_BlockVar_capturedNullDeref______4,n$27) [line 50]\n REMOVE_TEMPS(n$30,n$31,n$27); [line 50]\n NULLIFY(&__objc_anonymous_block_BlockVar_capturedNullDeref______4); [line 50]\n NULLIFY(&x); [line 50]\n " shape="box"]
43 [label="43: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_BlockVar_capturedNullDeref______4); [line 50]\n n$30=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_BlockVar_capturedNullDeref______4 ):unsigned long ) [line 50]\n *&__objc_anonymous_block_BlockVar_capturedNullDeref______4:class __objc_anonymous_block_BlockVar_capturedNullDeref______4 =n$30 [line 50]\n n$31=*&x:int * [line 50]\n *n$30.x:int *=n$31 [line 50]\n n$27=*&x:int * [line 50]\n *&my_block:_fn_ (*)=(_fun___objc_anonymous_block_BlockVar_capturedNullDeref______4,n$27) [line 50]\n REMOVE_TEMPS(n$27,n$30,n$31); [line 50]\n NULLIFY(&__objc_anonymous_block_BlockVar_capturedNullDeref______4); [line 50]\n NULLIFY(&x); [line 50]\n " shape="box"]
43 -> 39 ;
@ -75,7 +75,7 @@ digraph iCFG {
35 -> 34 ;
34 [label="34: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_BlockVar_blockPostOk______3); [line 42]\n n$23=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_BlockVar_blockPostOk______3 ):unsigned long ) [line 42]\n *&__objc_anonymous_block_BlockVar_blockPostOk______3:class __objc_anonymous_block_BlockVar_blockPostOk______3 =n$23 [line 42]\n n$24=*&x:int * [line 42]\n *n$23.x:int *=n$24 [line 42]\n n$21=*&x:int * [line 42]\n *&my_block:_fn_ (*)=(_fun___objc_anonymous_block_BlockVar_blockPostOk______3,n$21) [line 42]\n REMOVE_TEMPS(n$23,n$24,n$21); [line 42]\n NULLIFY(&__objc_anonymous_block_BlockVar_blockPostOk______3); [line 42]\n NULLIFY(&x); [line 42]\n " shape="box"]
34 [label="34: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_BlockVar_blockPostOk______3); [line 42]\n n$23=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_BlockVar_blockPostOk______3 ):unsigned long ) [line 42]\n *&__objc_anonymous_block_BlockVar_blockPostOk______3:class __objc_anonymous_block_BlockVar_blockPostOk______3 =n$23 [line 42]\n n$24=*&x:int * [line 42]\n *n$23.x:int *=n$24 [line 42]\n n$21=*&x:int * [line 42]\n *&my_block:_fn_ (*)=(_fun___objc_anonymous_block_BlockVar_blockPostOk______3,n$21) [line 42]\n REMOVE_TEMPS(n$21,n$23,n$24); [line 42]\n NULLIFY(&__objc_anonymous_block_BlockVar_blockPostOk______3); [line 42]\n NULLIFY(&x); [line 42]\n " shape="box"]
34 -> 30 ;
@ -105,7 +105,7 @@ digraph iCFG {
27 -> 26 ;
26 [label="26: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_BlockVar_blockPostBad______2); [line 33]\n n$16=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_BlockVar_blockPostBad______2 ):unsigned long ) [line 33]\n *&__objc_anonymous_block_BlockVar_blockPostBad______2:class __objc_anonymous_block_BlockVar_blockPostBad______2 =n$16 [line 33]\n n$17=*&x:int * [line 33]\n *n$16.x:int *=n$17 [line 33]\n n$14=*&x:int * [line 33]\n *&my_block:_fn_ (*)=(_fun___objc_anonymous_block_BlockVar_blockPostBad______2,n$14) [line 33]\n REMOVE_TEMPS(n$16,n$17,n$14); [line 33]\n NULLIFY(&__objc_anonymous_block_BlockVar_blockPostBad______2); [line 33]\n NULLIFY(&x); [line 33]\n " shape="box"]
26 [label="26: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_BlockVar_blockPostBad______2); [line 33]\n n$16=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_BlockVar_blockPostBad______2 ):unsigned long ) [line 33]\n *&__objc_anonymous_block_BlockVar_blockPostBad______2:class __objc_anonymous_block_BlockVar_blockPostBad______2 =n$16 [line 33]\n n$17=*&x:int * [line 33]\n *n$16.x:int *=n$17 [line 33]\n n$14=*&x:int * [line 33]\n *&my_block:_fn_ (*)=(_fun___objc_anonymous_block_BlockVar_blockPostBad______2,n$14) [line 33]\n REMOVE_TEMPS(n$14,n$16,n$17); [line 33]\n NULLIFY(&__objc_anonymous_block_BlockVar_blockPostBad______2); [line 33]\n NULLIFY(&x); [line 33]\n " shape="box"]
26 -> 22 ;

@ -55,15 +55,15 @@ digraph iCFG {
41 -> 38 ;
40 [label="40: Prune (false branch) \n PRUNE(((n$30 == 1) == 0), false); [line 55]\n REMOVE_TEMPS(n$29,n$30); [line 55]\n " shape="invhouse"]
40 [label="40: Prune (false branch) \n PRUNE(((n$30 == 1) == 0), false); [line 55]\n REMOVE_TEMPS(n$30); [line 55]\n " shape="invhouse"]
40 -> 37 ;
39 [label="39: Prune (true branch) \n PRUNE(((n$30 == 1) != 0), true); [line 55]\n REMOVE_TEMPS(n$29,n$30); [line 55]\n NULLIFY(&enumerateObjectsUsingBlock); [line 55]\n NULLIFY(&idx); [line 55]\n NULLIFY(&objects); [line 55]\n APPLY_ABSTRACTION; [line 55]\n " shape="invhouse"]
39 [label="39: Prune (true branch) \n PRUNE(((n$30 == 1) != 0), true); [line 55]\n REMOVE_TEMPS(n$30); [line 55]\n NULLIFY(&enumerateObjectsUsingBlock); [line 55]\n NULLIFY(&idx); [line 55]\n NULLIFY(&objects); [line 55]\n APPLY_ABSTRACTION; [line 55]\n " shape="invhouse"]
39 -> 30 ;
38 [label="38: BinaryOperatorStmt: EQ \n n$29=*&stop:_Bool * [line 55]\n n$30=*n$29:_Bool [line 55]\n " shape="box"]
38 [label="38: BinaryOperatorStmt: EQ \n n$29=*&stop:_Bool * [line 55]\n n$30=*n$29:_Bool [line 55]\n REMOVE_TEMPS(n$29); [line 55]\n " shape="box"]
38 -> 39 ;
@ -72,15 +72,15 @@ digraph iCFG {
37 -> 33 ;
36 [label="36: Prune (false branch) \n PRUNE(((n$26 < n$28) == 0), false); [line 51]\n REMOVE_TEMPS(n$26,n$27,n$28); [line 51]\n NULLIFY(&enumerateObjectsUsingBlock); [line 51]\n NULLIFY(&idx); [line 51]\n NULLIFY(&objects); [line 51]\n APPLY_ABSTRACTION; [line 51]\n " shape="invhouse"]
36 [label="36: Prune (false branch) \n PRUNE(((n$26 < n$28) == 0), false); [line 51]\n REMOVE_TEMPS(n$26,n$28); [line 51]\n NULLIFY(&enumerateObjectsUsingBlock); [line 51]\n NULLIFY(&idx); [line 51]\n NULLIFY(&objects); [line 51]\n APPLY_ABSTRACTION; [line 51]\n " shape="invhouse"]
36 -> 30 ;
35 [label="35: Prune (true branch) \n PRUNE(((n$26 < n$28) != 0), true); [line 51]\n REMOVE_TEMPS(n$26,n$27,n$28); [line 51]\n " shape="invhouse"]
35 [label="35: Prune (true branch) \n PRUNE(((n$26 < n$28) != 0), true); [line 51]\n REMOVE_TEMPS(n$26,n$28); [line 51]\n " shape="invhouse"]
35 -> 42 ;
34 [label="34: BinaryOperatorStmt: LT \n n$26=*&idx:unsigned long [line 51]\n n$27=*&objects:class NSArray * [line 51]\n n$28=_fun_NSArray_count(n$27:class NSArray *) [line 51]\n " shape="box"]
34 [label="34: BinaryOperatorStmt: LT \n n$26=*&idx:unsigned long [line 51]\n n$27=*&objects:class NSArray * [line 51]\n n$28=_fun_NSArray_count(n$27:class NSArray *) [line 51]\n REMOVE_TEMPS(n$27); [line 51]\n " shape="box"]
34 -> 35 ;
@ -181,15 +181,15 @@ digraph iCFG {
10 -> 6 ;
9 [label="9: Prune (false branch) \n PRUNE(((n$3 < n$5) == 0), false); [line 21]\n REMOVE_TEMPS(n$3,n$4,n$5); [line 21]\n NULLIFY(&idx); [line 21]\n NULLIFY(&infer___objc_anonymous_block_MyBlock_array______1); [line 21]\n NULLIFY(&objects); [line 21]\n APPLY_ABSTRACTION; [line 21]\n " shape="invhouse"]
9 [label="9: Prune (false branch) \n PRUNE(((n$3 < n$5) == 0), false); [line 21]\n REMOVE_TEMPS(n$3,n$5); [line 21]\n NULLIFY(&idx); [line 21]\n NULLIFY(&infer___objc_anonymous_block_MyBlock_array______1); [line 21]\n NULLIFY(&objects); [line 21]\n APPLY_ABSTRACTION; [line 21]\n " shape="invhouse"]
9 -> 3 ;
8 [label="8: Prune (true branch) \n PRUNE(((n$3 < n$5) != 0), true); [line 21]\n REMOVE_TEMPS(n$3,n$4,n$5); [line 21]\n " shape="invhouse"]
8 [label="8: Prune (true branch) \n PRUNE(((n$3 < n$5) != 0), true); [line 21]\n REMOVE_TEMPS(n$3,n$5); [line 21]\n " shape="invhouse"]
8 -> 15 ;
7 [label="7: BinaryOperatorStmt: LT \n n$3=*&idx:unsigned long [line 21]\n n$4=*&objects:class NSArray * [line 21]\n n$5=_fun_NSArray_count(n$4:class NSArray *) virtual [line 21]\n " shape="box"]
7 [label="7: BinaryOperatorStmt: LT \n n$3=*&idx:unsigned long [line 21]\n n$4=*&objects:class NSArray * [line 21]\n n$5=_fun_NSArray_count(n$4:class NSArray *) virtual [line 21]\n REMOVE_TEMPS(n$4); [line 21]\n " shape="box"]
7 -> 8 ;

@ -18,7 +18,7 @@ digraph iCFG {
21 -> 20 ;
20 [label="20: BinaryOperatorStmt: Assign \n DECLARE_LOCALS(&__objc_anonymous_block_main1______2); [line 18]\n n$27=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_main1______2 ):unsigned long ) [line 18]\n *&__objc_anonymous_block_main1______2:class __objc_anonymous_block_main1______2 =n$27 [line 18]\n n$28=*&x:int [line 18]\n *n$27.x:int =n$28 [line 18]\n n$11=*&x:int [line 18]\n *&addblock:_fn_ (*)=(_fun___objc_anonymous_block_main1______2,n$11) [line 18]\n REMOVE_TEMPS(n$27,n$28,n$11); [line 18]\n NULLIFY(&__objc_anonymous_block_main1______2); [line 18]\n NULLIFY(&x); [line 18]\n " shape="box"]
20 [label="20: BinaryOperatorStmt: Assign \n DECLARE_LOCALS(&__objc_anonymous_block_main1______2); [line 18]\n n$27=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_main1______2 ):unsigned long ) [line 18]\n *&__objc_anonymous_block_main1______2:class __objc_anonymous_block_main1______2 =n$27 [line 18]\n n$28=*&x:int [line 18]\n *n$27.x:int =n$28 [line 18]\n n$11=*&x:int [line 18]\n *&addblock:_fn_ (*)=(_fun___objc_anonymous_block_main1______2,n$11) [line 18]\n REMOVE_TEMPS(n$11,n$27,n$28); [line 18]\n NULLIFY(&__objc_anonymous_block_main1______2); [line 18]\n NULLIFY(&x); [line 18]\n " shape="box"]
20 -> 10 ;
@ -26,7 +26,7 @@ digraph iCFG {
19 -> 18 ;
18 [label="18: BinaryOperatorStmt: Assign \n DECLARE_LOCALS(&__objc_anonymous_block___objc_anonymous_block_main1______2______3); [line 24]\n n$23=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block___objc_anonymous_block_main1______2______3 ):unsigned long ) [line 24]\n *&__objc_anonymous_block___objc_anonymous_block_main1______2______3:class __objc_anonymous_block___objc_anonymous_block_main1______2______3 =n$23 [line 24]\n n$24=*&x:int [line 24]\n n$25=*&bla:int [line 24]\n n$26=*&#GB$main1_s:int [line 24]\n *n$23.x:int =n$24 [line 24]\n *n$23.bla:int =n$25 [line 24]\n *n$23.main1_s:int =n$26 [line 24]\n n$17=*&x:int [line 24]\n n$18=*&bla:int [line 24]\n *&addblock2:_fn_ (*)=(_fun___objc_anonymous_block___objc_anonymous_block_main1______2______3,n$17,n$18) [line 24]\n REMOVE_TEMPS(n$23,n$24,n$25,n$26,n$17,n$18); [line 24]\n NULLIFY(&__objc_anonymous_block___objc_anonymous_block_main1______2______3); [line 24]\n NULLIFY(&x); [line 24]\n " shape="box"]
18 [label="18: BinaryOperatorStmt: Assign \n DECLARE_LOCALS(&__objc_anonymous_block___objc_anonymous_block_main1______2______3); [line 24]\n n$23=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block___objc_anonymous_block_main1______2______3 ):unsigned long ) [line 24]\n *&__objc_anonymous_block___objc_anonymous_block_main1______2______3:class __objc_anonymous_block___objc_anonymous_block_main1______2______3 =n$23 [line 24]\n n$24=*&x:int [line 24]\n n$25=*&bla:int [line 24]\n n$26=*&#GB$main1_s:int [line 24]\n *n$23.x:int =n$24 [line 24]\n *n$23.bla:int =n$25 [line 24]\n *n$23.main1_s:int =n$26 [line 24]\n n$17=*&x:int [line 24]\n n$18=*&bla:int [line 24]\n *&addblock2:_fn_ (*)=(_fun___objc_anonymous_block___objc_anonymous_block_main1______2______3,n$17,n$18) [line 24]\n REMOVE_TEMPS(n$17,n$18,n$23,n$24,n$25,n$26); [line 24]\n NULLIFY(&__objc_anonymous_block___objc_anonymous_block_main1______2______3); [line 24]\n NULLIFY(&x); [line 24]\n " shape="box"]
18 -> 14 ;

@ -7,7 +7,7 @@ digraph iCFG {
16 -> 15 ;
15 [label="15: BinaryOperatorStmt: Assign \n DECLARE_LOCALS(&__objc_anonymous_block_My_manager_m______1); [line 25]\n n$7=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_My_manager_m______1 ):unsigned long ) [line 25]\n *&__objc_anonymous_block_My_manager_m______1:class __objc_anonymous_block_My_manager_m______1 =n$7 [line 25]\n n$8=*&z:int [line 25]\n n$9=*&#GB$g:int [line 25]\n *n$7.z:int =n$8 [line 25]\n *n$7.g:int =n$9 [line 25]\n n$5=*&z:int [line 25]\n *&b:_fn_ (*)=(_fun___objc_anonymous_block_My_manager_m______1,n$5) [line 25]\n REMOVE_TEMPS(n$7,n$8,n$9,n$5); [line 25]\n NULLIFY(&__objc_anonymous_block_My_manager_m______1); [line 25]\n " shape="box"]
15 [label="15: BinaryOperatorStmt: Assign \n DECLARE_LOCALS(&__objc_anonymous_block_My_manager_m______1); [line 25]\n n$7=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_My_manager_m______1 ):unsigned long ) [line 25]\n *&__objc_anonymous_block_My_manager_m______1:class __objc_anonymous_block_My_manager_m______1 =n$7 [line 25]\n n$8=*&z:int [line 25]\n n$9=*&#GB$g:int [line 25]\n *n$7.z:int =n$8 [line 25]\n *n$7.g:int =n$9 [line 25]\n n$5=*&z:int [line 25]\n *&b:_fn_ (*)=(_fun___objc_anonymous_block_My_manager_m______1,n$5) [line 25]\n REMOVE_TEMPS(n$5,n$7,n$8,n$9); [line 25]\n NULLIFY(&__objc_anonymous_block_My_manager_m______1); [line 25]\n " shape="box"]
15 -> 11 ;

@ -11,7 +11,7 @@ digraph iCFG {
17 -> 16 ;
16 [label="16: BinaryOperatorStmt: Assign \n DECLARE_LOCALS(&__objc_anonymous_block_My_manager_blockReleaseTODO______1); [line 25]\n n$8=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_My_manager_blockReleaseTODO______1 ):unsigned long ) [line 25]\n *&__objc_anonymous_block_My_manager_blockReleaseTODO______1:class __objc_anonymous_block_My_manager_blockReleaseTODO______1 =n$8 [line 25]\n n$9=*&newImage:struct CGImage * [line 25]\n *n$8.newImage:struct CGImage *=n$9 [line 25]\n n$5=*&newImage:struct CGImage * [line 25]\n *&b:_fn_ (*)=(_fun___objc_anonymous_block_My_manager_blockReleaseTODO______1,n$5) [line 25]\n REMOVE_TEMPS(n$8,n$9,n$5); [line 25]\n NULLIFY(&__objc_anonymous_block_My_manager_blockReleaseTODO______1); [line 25]\n NULLIFY(&newImage); [line 25]\n " shape="box"]
16 [label="16: BinaryOperatorStmt: Assign \n DECLARE_LOCALS(&__objc_anonymous_block_My_manager_blockReleaseTODO______1); [line 25]\n n$8=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_My_manager_blockReleaseTODO______1 ):unsigned long ) [line 25]\n *&__objc_anonymous_block_My_manager_blockReleaseTODO______1:class __objc_anonymous_block_My_manager_blockReleaseTODO______1 =n$8 [line 25]\n n$9=*&newImage:struct CGImage * [line 25]\n *n$8.newImage:struct CGImage *=n$9 [line 25]\n n$5=*&newImage:struct CGImage * [line 25]\n *&b:_fn_ (*)=(_fun___objc_anonymous_block_My_manager_blockReleaseTODO______1,n$5) [line 25]\n REMOVE_TEMPS(n$5,n$8,n$9); [line 25]\n NULLIFY(&__objc_anonymous_block_My_manager_blockReleaseTODO______1); [line 25]\n NULLIFY(&newImage); [line 25]\n " shape="box"]
16 -> 8 ;

@ -37,7 +37,7 @@ digraph iCFG {
10 -> 9 ;
9 [label="9: Message Call: sHandler: \n n$0=*&self:class A * [line 47]\n n$1=*n$0._b:class B * [line 47]\n DECLARE_LOCALS(&__objc_anonymous_block_A_capture______1); [line 47]\n n$5=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_capture______1 ):unsigned long ) [line 47]\n *&__objc_anonymous_block_A_capture______1:class __objc_anonymous_block_A_capture______1 =n$5 [line 47]\n n$6=*&self:class A * [line 47]\n *n$5.self:class A *=n$6 [line 47]\n n$2=*&self:class A * [line 47]\n n$7=*&__objc_anonymous_block_A_capture______1:_fn_ (*) [line 47]\n _fun_B_sHandler:(n$1:class B *,n$7:_fn_ (*),n$2:_fn_ (*)) virtual [line 47]\n REMOVE_TEMPS(n$0,n$1,n$5,n$6,n$2,n$7); [line 47]\n NULLIFY(&__objc_anonymous_block_A_capture______1); [line 47]\n NULLIFY(&self); [line 47]\n APPLY_ABSTRACTION; [line 47]\n " shape="box"]
9 [label="9: Message Call: sHandler: \n n$0=*&self:class A * [line 47]\n n$1=*n$0._b:class B * [line 47]\n DECLARE_LOCALS(&__objc_anonymous_block_A_capture______1); [line 47]\n n$5=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_capture______1 ):unsigned long ) [line 47]\n *&__objc_anonymous_block_A_capture______1:class __objc_anonymous_block_A_capture______1 =n$5 [line 47]\n n$6=*&self:class A * [line 47]\n *n$5.self:class A *=n$6 [line 47]\n n$2=*&self:class A * [line 47]\n n$7=*&__objc_anonymous_block_A_capture______1:_fn_ (*) [line 47]\n _fun_B_sHandler:(n$1:class B *,n$7:_fn_ (*),n$2:_fn_ (*)) virtual [line 47]\n REMOVE_TEMPS(n$0,n$1,n$2,n$5,n$6,n$7); [line 47]\n NULLIFY(&__objc_anonymous_block_A_capture______1); [line 47]\n NULLIFY(&self); [line 47]\n APPLY_ABSTRACTION; [line 47]\n " shape="box"]
9 -> 5 ;

@ -11,15 +11,15 @@ digraph iCFG {
19 -> 15 ;
18 [label="18: Prune (false branch) \n PRUNE((n$12 == 0), false); [line 28]\n REMOVE_TEMPS(n$10,n$11,n$12); [line 28]\n NULLIFY(&item); [line 28]\n " shape="invhouse"]
18 [label="18: Prune (false branch) \n PRUNE((n$12 == 0), false); [line 28]\n REMOVE_TEMPS(n$12); [line 28]\n NULLIFY(&item); [line 28]\n " shape="invhouse"]
18 -> 14 ;
17 [label="17: Prune (true branch) \n PRUNE((n$12 != 0), true); [line 28]\n REMOVE_TEMPS(n$10,n$11,n$12); [line 28]\n " shape="invhouse"]
17 [label="17: Prune (true branch) \n PRUNE((n$12 != 0), true); [line 28]\n REMOVE_TEMPS(n$12); [line 28]\n " shape="invhouse"]
17 -> 19 ;
16 [label="16: BinaryOperatorStmt: Assign \n n$10=*&items:class NSArray * [line 28]\n n$11=_fun_NSArray_nextObject(n$10:class NSArray *) virtual [line 28]\n *&item:class NSArray *=n$11 [line 28]\n n$12=*&item:class NSArray * [line 28]\n " shape="box"]
16 [label="16: BinaryOperatorStmt: Assign \n n$10=*&items:class NSArray * [line 28]\n n$11=_fun_NSArray_nextObject(n$10:class NSArray *) virtual [line 28]\n *&item:class NSArray *=n$11 [line 28]\n n$12=*&item:class NSArray * [line 28]\n REMOVE_TEMPS(n$10,n$11); [line 28]\n " shape="box"]
16 -> 17 ;

@ -3,15 +3,15 @@ digraph iCFG {
8 -> 2 ;
7 [label="7: Prune (false branch) \n PRUNE((n$1 == 0), false); [line 25]\n REMOVE_TEMPS(n$0,n$1); [line 25]\n " shape="invhouse"]
7 [label="7: Prune (false branch) \n PRUNE((n$1 == 0), false); [line 25]\n REMOVE_TEMPS(n$1); [line 25]\n " shape="invhouse"]
7 -> 3 ;
6 [label="6: Prune (true branch) \n PRUNE((n$1 != 0), true); [line 25]\n REMOVE_TEMPS(n$0,n$1); [line 25]\n " shape="invhouse"]
6 [label="6: Prune (true branch) \n PRUNE((n$1 != 0), true); [line 25]\n REMOVE_TEMPS(n$1); [line 25]\n " shape="invhouse"]
6 -> 8 ;
5 [label="5: Message Call: conformsToProtocol: \n n$0=*&self:class Bla * [line 25]\n n$1=_fun_Bla_conformsToProtocol:(n$0:class Bla *,\"Foo\":class Protocol *) virtual [line 25]\n NULLIFY(&self); [line 25]\n " shape="box"]
5 [label="5: Message Call: conformsToProtocol: \n n$0=*&self:class Bla * [line 25]\n n$1=_fun_Bla_conformsToProtocol:(n$0:class Bla *,\"Foo\":class Protocol *) virtual [line 25]\n REMOVE_TEMPS(n$0); [line 25]\n NULLIFY(&self); [line 25]\n " shape="box"]
5 -> 6 ;

@ -7,7 +7,7 @@ digraph iCFG {
7 -> 6 ;
6 [label="6: DeclStmt \n n$2=*&c1:class C * [line 24]\n n$3=_fun_NSObject_init(n$2:class C *) virtual [line 24]\n n$1=*&c1:class C * [line 24]\n n$0=*&c2:class C * [line 24]\n *&a[0]:class C *=n$3 [line 24]\n *&a[1]:class C *=n$1 [line 24]\n *&a[2]:class C *=n$0 [line 24]\n REMOVE_TEMPS(n$2,n$3,n$1,n$0); [line 24]\n NULLIFY(&a); [line 24]\n NULLIFY(&c1); [line 24]\n NULLIFY(&c2); [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"]
6 [label="6: DeclStmt \n n$2=*&c1:class C * [line 24]\n n$3=_fun_NSObject_init(n$2:class C *) virtual [line 24]\n n$1=*&c1:class C * [line 24]\n n$0=*&c2:class C * [line 24]\n *&a[0]:class C *=n$3 [line 24]\n *&a[1]:class C *=n$1 [line 24]\n *&a[2]:class C *=n$0 [line 24]\n REMOVE_TEMPS(n$0,n$1,n$2,n$3); [line 24]\n NULLIFY(&a); [line 24]\n NULLIFY(&c1); [line 24]\n NULLIFY(&c2); [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"]
6 -> 5 ;

Loading…
Cancel
Save