Summary:public When a conditional is the last instruction, there will be a join node leading directly to the exit node. Some instructions, such as nullification of dead variables, and abstraction, are added to the control flow graph automatically. But, join nodes cannot contain instructions. So when a procedure ends with a conditional, there might be no place to store these instructions. This diff adds one extra node between the join and the exit node in that situation. Reviewed By: jvillard Differential Revision: D3179056 fb-gh-sync-id: 2b9cd7e fbshipit-source-id: 2b9cd7emaster
parent
d366bb970b
commit
054ad223a8
@ -1,77 +1,81 @@
|
|||||||
digraph iCFG {
|
digraph iCFG {
|
||||||
18 [label="18: 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 REMOVE_TEMPS(n$14,n$15); [line 11]\n APPLY_ABSTRACTION; [line 11]\n " shape="invhouse"]
|
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 REMOVE_TEMPS(n$14,n$15); [line 11]\n APPLY_ABSTRACTION; [line 11]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
18 -> 16 ;
|
19 -> 17 ;
|
||||||
17 [label="17: 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 REMOVE_TEMPS(n$14,n$15); [line 11]\n APPLY_ABSTRACTION; [line 11]\n " shape="invhouse"]
|
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 REMOVE_TEMPS(n$14,n$15); [line 11]\n APPLY_ABSTRACTION; [line 11]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
17 -> 16 ;
|
18 -> 17 ;
|
||||||
16 [label="16: + \n " ]
|
17 [label="17: + \n " ]
|
||||||
|
|
||||||
|
|
||||||
|
17 -> 14 ;
|
||||||
|
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 REMOVE_TEMPS(n$11,n$12,n$13); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
16 -> 13 ;
|
16 -> 13 ;
|
||||||
15 [label="15: 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 REMOVE_TEMPS(n$11,n$12,n$13); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="invhouse"]
|
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 REMOVE_TEMPS(n$11,n$12,n$13); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
15 -> 12 ;
|
15 -> 13 ;
|
||||||
14 [label="14: 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 REMOVE_TEMPS(n$11,n$12,n$13); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="invhouse"]
|
14 [label="14: UnaryOperator \n n$11=*&p:int ** [line 13]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
14 -> 12 ;
|
14 -> 15 ;
|
||||||
13 [label="13: UnaryOperator \n n$11=*&p:int ** [line 13]\n " shape="box"]
|
14 -> 16 ;
|
||||||
|
13 [label="13: + \n " ]
|
||||||
|
|
||||||
|
|
||||||
13 -> 14 ;
|
13 -> 10 ;
|
||||||
13 -> 15 ;
|
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: + \n " ]
|
|
||||||
|
|
||||||
|
|
||||||
12 -> 9 ;
|
12 -> 9 ;
|
||||||
11 [label="11: 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"]
|
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 -> 8 ;
|
11 -> 9 ;
|
||||||
10 [label="10: 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"]
|
10 [label="10: UnaryOperator \n n$7=*&p:int ** [line 15]\n n$8=*n$7:int * [line 15]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
10 -> 8 ;
|
10 -> 11 ;
|
||||||
9 [label="9: UnaryOperator \n n$7=*&p:int ** [line 15]\n n$8=*n$7:int * [line 15]\n " shape="box"]
|
10 -> 12 ;
|
||||||
|
9 [label="9: + \n " ]
|
||||||
|
|
||||||
|
|
||||||
9 -> 10 ;
|
9 -> 5 ;
|
||||||
9 -> 11 ;
|
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: + \n " ]
|
|
||||||
|
|
||||||
|
|
||||||
8 -> 4 ;
|
8 -> 3 ;
|
||||||
7 [label="7: 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"]
|
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 -> 3 ;
|
7 -> 3 ;
|
||||||
6 [label="6: 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"]
|
6 [label="6: UnaryOperator \n n$2=*&p:int ** [line 17]\n n$3=*n$2:int * [line 17]\n NULLIFY(&p,false); [line 17]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
6 -> 3 ;
|
6 -> 7 ;
|
||||||
5 [label="5: UnaryOperator \n n$2=*&p:int ** [line 17]\n n$3=*n$2:int * [line 17]\n NULLIFY(&p,false); [line 17]\n " shape="box"]
|
6 -> 8 ;
|
||||||
|
5 [label="5: UnaryOperator \n n$0=*&p:int ** [line 17]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
5 -> 6 ;
|
5 -> 6 ;
|
||||||
5 -> 7 ;
|
4 [label="4: between_join_and_exit \n APPLY_ABSTRACTION; [line 17]\n " shape="box"]
|
||||||
4 [label="4: UnaryOperator \n n$0=*&p:int ** [line 17]\n " shape="box"]
|
|
||||||
|
|
||||||
|
|
||||||
4 -> 5 ;
|
4 -> 2 ;
|
||||||
3 [label="3: + \n " ]
|
3 [label="3: + \n " ]
|
||||||
|
|
||||||
|
|
||||||
3 -> 2 ;
|
3 -> 4 ;
|
||||||
2 [label="2: Exit dereference_in_array_access \n " color=yellow style=filled]
|
2 [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]
|
1 [label="1: Start dereference_in_array_access\nFormals: p:int **\nLocals: \n DECLARE_LOCALS(&return); [line 10]\n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
1 -> 17 ;
|
|
||||||
1 -> 18 ;
|
1 -> 18 ;
|
||||||
|
1 -> 19 ;
|
||||||
}
|
}
|
||||||
|
@ -1,389 +1,397 @@
|
|||||||
digraph iCFG {
|
digraph iCFG {
|
||||||
93 [label="93: BinaryOperatorStmt: Assign \n n$10=_fun_getenv(\"BLOCK\":char *) [line 47]\n *&spec:char *=n$10 [line 47]\n REMOVE_TEMPS(n$10); [line 47]\n " shape="box"]
|
95 [label="95: BinaryOperatorStmt: Assign \n n$10=_fun_getenv(\"BLOCK\":char *) [line 47]\n *&spec:char *=n$10 [line 47]\n REMOVE_TEMPS(n$10); [line 47]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
93 -> 65 ;
|
95 -> 67 ;
|
||||||
93 -> 66 ;
|
95 -> 68 ;
|
||||||
92 [label="92: BinaryOperatorStmt: Assign \n *&block_size:char *=0 [line 53]\n NULLIFY(&block_size,false); [line 53]\n APPLY_ABSTRACTION; [line 53]\n " shape="box"]
|
94 [label="94: BinaryOperatorStmt: Assign \n *&block_size:char *=0 [line 53]\n NULLIFY(&block_size,false); [line 53]\n APPLY_ABSTRACTION; [line 53]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
92 -> 88 ;
|
94 -> 90 ;
|
||||||
91 [label="91: Prune (false branch) \n PRUNE(((n$9 == 39) == 0), false); [line 52]\n REMOVE_TEMPS(n$8,n$9); [line 52]\n APPLY_ABSTRACTION; [line 52]\n " shape="invhouse"]
|
93 [label="93: Prune (false branch) \n PRUNE(((n$9 == 39) == 0), false); [line 52]\n REMOVE_TEMPS(n$8,n$9); [line 52]\n APPLY_ABSTRACTION; [line 52]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
91 -> 88 ;
|
93 -> 90 ;
|
||||||
90 [label="90: Prune (true branch) \n PRUNE(((n$9 == 39) != 0), true); [line 52]\n REMOVE_TEMPS(n$8,n$9); [line 52]\n " shape="invhouse"]
|
92 [label="92: Prune (true branch) \n PRUNE(((n$9 == 39) != 0), true); [line 52]\n REMOVE_TEMPS(n$8,n$9); [line 52]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
90 -> 92 ;
|
92 -> 94 ;
|
||||||
89 [label="89: BinaryOperatorStmt: EQ \n n$8=*&spec:char * [line 52]\n n$9=*n$8:char [line 52]\n NULLIFY(&spec,false); [line 52]\n " shape="box"]
|
91 [label="91: BinaryOperatorStmt: EQ \n n$8=*&spec:char * [line 52]\n n$9=*n$8:char [line 52]\n NULLIFY(&spec,false); [line 52]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
89 -> 90 ;
|
91 -> 92 ;
|
||||||
89 -> 91 ;
|
91 -> 93 ;
|
||||||
88 [label="88: + \n " ]
|
90 [label="90: + \n " ]
|
||||||
|
|
||||||
|
|
||||||
88 -> 63 ;
|
90 -> 65 ;
|
||||||
87 [label="87: BinaryOperatorStmt: Assign \n *&block_size:char *=0 [line 50]\n NULLIFY(&block_size,false); [line 50]\n APPLY_ABSTRACTION; [line 50]\n " shape="box"]
|
89 [label="89: BinaryOperatorStmt: Assign \n *&block_size:char *=0 [line 50]\n NULLIFY(&block_size,false); [line 50]\n APPLY_ABSTRACTION; [line 50]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
87 -> 63 ;
|
89 -> 65 ;
|
||||||
86 [label="86: Prune (false branch) \n n$7=*&SIL_temp_conditional___79:int [line 49]\n NULLIFY(&SIL_temp_conditional___79,true); [line 49]\n PRUNE((n$7 == 0), false); [line 49]\n REMOVE_TEMPS(n$7); [line 49]\n APPLY_ABSTRACTION; [line 49]\n " shape="invhouse"]
|
88 [label="88: Prune (false branch) \n n$7=*&SIL_temp_conditional___81:int [line 49]\n NULLIFY(&SIL_temp_conditional___81,true); [line 49]\n PRUNE((n$7 == 0), false); [line 49]\n REMOVE_TEMPS(n$7); [line 49]\n APPLY_ABSTRACTION; [line 49]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
86 -> 89 ;
|
88 -> 91 ;
|
||||||
85 [label="85: Prune (true branch) \n n$7=*&SIL_temp_conditional___79:int [line 49]\n NULLIFY(&SIL_temp_conditional___79,true); [line 49]\n PRUNE((n$7 != 0), true); [line 49]\n REMOVE_TEMPS(n$7); [line 49]\n NULLIFY(&spec,false); [line 49]\n " shape="invhouse"]
|
87 [label="87: Prune (true branch) \n n$7=*&SIL_temp_conditional___81:int [line 49]\n NULLIFY(&SIL_temp_conditional___81,true); [line 49]\n PRUNE((n$7 != 0), true); [line 49]\n REMOVE_TEMPS(n$7); [line 49]\n NULLIFY(&spec,false); [line 49]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
85 -> 87 ;
|
87 -> 89 ;
|
||||||
84 [label="84: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___79); [line 49]\n *&SIL_temp_conditional___79:int =1 [line 49]\n APPLY_ABSTRACTION; [line 49]\n " shape="box"]
|
86 [label="86: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___81); [line 49]\n *&SIL_temp_conditional___81:int =1 [line 49]\n APPLY_ABSTRACTION; [line 49]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
84 -> 79 ;
|
86 -> 81 ;
|
||||||
83 [label="83: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___79); [line 49]\n *&SIL_temp_conditional___79:int =0 [line 49]\n APPLY_ABSTRACTION; [line 49]\n " shape="box"]
|
85 [label="85: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___81); [line 49]\n *&SIL_temp_conditional___81:int =0 [line 49]\n APPLY_ABSTRACTION; [line 49]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
83 -> 79 ;
|
85 -> 81 ;
|
||||||
82 [label="82: Prune (false branch) \n PRUNE((n$6 == 0), false); [line 49]\n REMOVE_TEMPS(n$5,n$6); [line 49]\n " shape="invhouse"]
|
84 [label="84: Prune (false branch) \n PRUNE((n$6 == 0), false); [line 49]\n REMOVE_TEMPS(n$5,n$6); [line 49]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
|
84 -> 86 ;
|
||||||
|
83 [label="83: Prune (true branch) \n PRUNE((n$6 != 0), true); [line 49]\n REMOVE_TEMPS(n$5,n$6); [line 49]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
|
83 -> 85 ;
|
||||||
|
82 [label="82: BinaryOperatorStmt: Assign \n n$5=_fun_getenv(\"BLOCKSIZE\":char *) [line 49]\n *&spec:char *=n$5 [line 49]\n n$6=*&spec:char * [line 49]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
|
82 -> 83 ;
|
||||||
82 -> 84 ;
|
82 -> 84 ;
|
||||||
81 [label="81: Prune (true branch) \n PRUNE((n$6 != 0), true); [line 49]\n REMOVE_TEMPS(n$5,n$6); [line 49]\n " shape="invhouse"]
|
81 [label="81: + \n " ]
|
||||||
|
|
||||||
|
|
||||||
81 -> 83 ;
|
81 -> 87 ;
|
||||||
80 [label="80: BinaryOperatorStmt: Assign \n n$5=_fun_getenv(\"BLOCKSIZE\":char *) [line 49]\n *&spec:char *=n$5 [line 49]\n n$6=*&spec:char * [line 49]\n " shape="box"]
|
81 -> 88 ;
|
||||||
|
80 [label="80: Prune (false branch) \n n$4=*&SIL_temp_conditional___73:int [line 49]\n NULLIFY(&SIL_temp_conditional___73,true); [line 49]\n PRUNE((n$4 == 0), false); [line 49]\n REMOVE_TEMPS(n$4); [line 49]\n APPLY_ABSTRACTION; [line 49]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
80 -> 81 ;
|
80 -> 91 ;
|
||||||
80 -> 82 ;
|
79 [label="79: Prune (true branch) \n n$4=*&SIL_temp_conditional___73:int [line 49]\n NULLIFY(&SIL_temp_conditional___73,true); [line 49]\n PRUNE((n$4 != 0), true); [line 49]\n REMOVE_TEMPS(n$4); [line 49]\n NULLIFY(&spec,false); [line 49]\n " shape="invhouse"]
|
||||||
79 [label="79: + \n " ]
|
|
||||||
|
|
||||||
|
|
||||||
79 -> 85 ;
|
79 -> 82 ;
|
||||||
79 -> 86 ;
|
78 [label="78: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___73); [line 49]\n *&SIL_temp_conditional___73:int =1 [line 49]\n APPLY_ABSTRACTION; [line 49]\n " shape="box"]
|
||||||
78 [label="78: Prune (false branch) \n n$4=*&SIL_temp_conditional___71:int [line 49]\n NULLIFY(&SIL_temp_conditional___71,true); [line 49]\n PRUNE((n$4 == 0), false); [line 49]\n REMOVE_TEMPS(n$4); [line 49]\n APPLY_ABSTRACTION; [line 49]\n " shape="invhouse"]
|
|
||||||
|
|
||||||
|
|
||||||
78 -> 89 ;
|
78 -> 73 ;
|
||||||
77 [label="77: Prune (true branch) \n n$4=*&SIL_temp_conditional___71:int [line 49]\n NULLIFY(&SIL_temp_conditional___71,true); [line 49]\n PRUNE((n$4 != 0), true); [line 49]\n REMOVE_TEMPS(n$4); [line 49]\n NULLIFY(&spec,false); [line 49]\n " shape="invhouse"]
|
77 [label="77: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___73); [line 49]\n *&SIL_temp_conditional___73:int =0 [line 49]\n APPLY_ABSTRACTION; [line 49]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
77 -> 80 ;
|
77 -> 73 ;
|
||||||
76 [label="76: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___71); [line 49]\n *&SIL_temp_conditional___71:int =1 [line 49]\n APPLY_ABSTRACTION; [line 49]\n " shape="box"]
|
76 [label="76: Prune (false branch) \n PRUNE((n$3 == 0), false); [line 49]\n REMOVE_TEMPS(n$2,n$3); [line 49]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
76 -> 71 ;
|
76 -> 78 ;
|
||||||
75 [label="75: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___71); [line 49]\n *&SIL_temp_conditional___71:int =0 [line 49]\n APPLY_ABSTRACTION; [line 49]\n " shape="box"]
|
75 [label="75: Prune (true branch) \n PRUNE((n$3 != 0), true); [line 49]\n REMOVE_TEMPS(n$2,n$3); [line 49]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
75 -> 71 ;
|
75 -> 77 ;
|
||||||
74 [label="74: Prune (false branch) \n PRUNE((n$3 == 0), false); [line 49]\n REMOVE_TEMPS(n$2,n$3); [line 49]\n " shape="invhouse"]
|
74 [label="74: BinaryOperatorStmt: Assign \n n$2=_fun_getenv(\"BLOCK_SIZE\":char *) [line 49]\n *&spec:char *=n$2 [line 49]\n n$3=*&spec:char * [line 49]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
|
74 -> 75 ;
|
||||||
74 -> 76 ;
|
74 -> 76 ;
|
||||||
73 [label="73: Prune (true branch) \n PRUNE((n$3 != 0), true); [line 49]\n REMOVE_TEMPS(n$2,n$3); [line 49]\n " shape="invhouse"]
|
73 [label="73: + \n " ]
|
||||||
|
|
||||||
|
|
||||||
73 -> 75 ;
|
73 -> 79 ;
|
||||||
72 [label="72: BinaryOperatorStmt: Assign \n n$2=_fun_getenv(\"BLOCK_SIZE\":char *) [line 49]\n *&spec:char *=n$2 [line 49]\n n$3=*&spec:char * [line 49]\n " shape="box"]
|
73 -> 80 ;
|
||||||
|
72 [label="72: Prune (false branch) \n n$1=*&SIL_temp_conditional___66:int [line 49]\n NULLIFY(&SIL_temp_conditional___66,true); [line 49]\n PRUNE((n$1 == 0), false); [line 49]\n REMOVE_TEMPS(n$1); [line 49]\n APPLY_ABSTRACTION; [line 49]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
72 -> 73 ;
|
72 -> 91 ;
|
||||||
72 -> 74 ;
|
71 [label="71: Prune (true branch) \n n$1=*&SIL_temp_conditional___66:int [line 49]\n NULLIFY(&SIL_temp_conditional___66,true); [line 49]\n PRUNE((n$1 != 0), true); [line 49]\n REMOVE_TEMPS(n$1); [line 49]\n NULLIFY(&spec,false); [line 49]\n " shape="invhouse"]
|
||||||
71 [label="71: + \n " ]
|
|
||||||
|
|
||||||
|
|
||||||
71 -> 77 ;
|
71 -> 74 ;
|
||||||
71 -> 78 ;
|
70 [label="70: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___66); [line 49]\n *&SIL_temp_conditional___66:int =1 [line 49]\n APPLY_ABSTRACTION; [line 49]\n " shape="box"]
|
||||||
70 [label="70: Prune (false branch) \n n$1=*&SIL_temp_conditional___64:int [line 49]\n NULLIFY(&SIL_temp_conditional___64,true); [line 49]\n PRUNE((n$1 == 0), false); [line 49]\n REMOVE_TEMPS(n$1); [line 49]\n APPLY_ABSTRACTION; [line 49]\n " shape="invhouse"]
|
|
||||||
|
|
||||||
|
|
||||||
70 -> 89 ;
|
70 -> 66 ;
|
||||||
69 [label="69: Prune (true branch) \n n$1=*&SIL_temp_conditional___64:int [line 49]\n NULLIFY(&SIL_temp_conditional___64,true); [line 49]\n PRUNE((n$1 != 0), true); [line 49]\n REMOVE_TEMPS(n$1); [line 49]\n NULLIFY(&spec,false); [line 49]\n " shape="invhouse"]
|
69 [label="69: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___66); [line 49]\n *&SIL_temp_conditional___66:int =0 [line 49]\n APPLY_ABSTRACTION; [line 49]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
69 -> 72 ;
|
69 -> 66 ;
|
||||||
68 [label="68: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___64); [line 49]\n *&SIL_temp_conditional___64:int =1 [line 49]\n APPLY_ABSTRACTION; [line 49]\n " shape="box"]
|
68 [label="68: Prune (false branch) \n n$0=*&spec:char * [line 49]\n PRUNE((n$0 == 0), false); [line 49]\n REMOVE_TEMPS(n$0); [line 49]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
68 -> 64 ;
|
68 -> 70 ;
|
||||||
67 [label="67: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___64); [line 49]\n *&SIL_temp_conditional___64:int =0 [line 49]\n APPLY_ABSTRACTION; [line 49]\n " shape="box"]
|
67 [label="67: Prune (true branch) \n n$0=*&spec:char * [line 49]\n PRUNE((n$0 != 0), true); [line 49]\n REMOVE_TEMPS(n$0); [line 49]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
67 -> 64 ;
|
67 -> 69 ;
|
||||||
66 [label="66: Prune (false branch) \n n$0=*&spec:char * [line 49]\n PRUNE((n$0 == 0), false); [line 49]\n REMOVE_TEMPS(n$0); [line 49]\n " shape="invhouse"]
|
66 [label="66: + \n " ]
|
||||||
|
|
||||||
|
|
||||||
66 -> 68 ;
|
66 -> 71 ;
|
||||||
65 [label="65: Prune (true branch) \n n$0=*&spec:char * [line 49]\n PRUNE((n$0 != 0), true); [line 49]\n REMOVE_TEMPS(n$0); [line 49]\n " shape="invhouse"]
|
66 -> 72 ;
|
||||||
|
65 [label="65: + \n " ]
|
||||||
|
|
||||||
|
|
||||||
65 -> 67 ;
|
65 -> 64 ;
|
||||||
64 [label="64: + \n " ]
|
64 [label="64: Return Stmt \n *&return:int =0 [line 56]\n APPLY_ABSTRACTION; [line 56]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
64 -> 69 ;
|
64 -> 63 ;
|
||||||
64 -> 70 ;
|
63 [label="63: Exit main \n " color=yellow style=filled]
|
||||||
63 [label="63: + \n " ]
|
|
||||||
|
|
||||||
|
|
||||||
63 -> 62 ;
|
62 [label="62: Start main\nFormals: \nLocals: block_size:char * spec:char * \n DECLARE_LOCALS(&return,&block_size,&spec); [line 42]\n NULLIFY(&block_size,false); [line 42]\n NULLIFY(&spec,false); [line 42]\n " color=yellow style=filled]
|
||||||
62 [label="62: Return Stmt \n *&return:int =0 [line 56]\n APPLY_ABSTRACTION; [line 56]\n " shape="box"]
|
|
||||||
|
|
||||||
|
|
||||||
62 -> 61 ;
|
62 -> 95 ;
|
||||||
61 [label="61: Exit main \n " color=yellow style=filled]
|
61 [label="61: BinaryOperatorStmt: Assign \n n$8=_fun_getenv(\"BLOCK\":char *) [line 34]\n *&spec:char *=n$8 [line 34]\n REMOVE_TEMPS(n$8); [line 34]\n APPLY_ABSTRACTION; [line 34]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
60 [label="60: Start main\nFormals: \nLocals: block_size:char * spec:char * \n DECLARE_LOCALS(&return,&block_size,&spec); [line 42]\n NULLIFY(&block_size,false); [line 42]\n NULLIFY(&spec,false); [line 42]\n " color=yellow style=filled]
|
61 -> 36 ;
|
||||||
|
60 [label="60: BinaryOperatorStmt: Assign \n *&block_size:char *=0 [line 38]\n NULLIFY(&block_size,false); [line 38]\n APPLY_ABSTRACTION; [line 38]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
60 -> 93 ;
|
60 -> 36 ;
|
||||||
59 [label="59: BinaryOperatorStmt: Assign \n n$8=_fun_getenv(\"BLOCK\":char *) [line 34]\n *&spec:char *=n$8 [line 34]\n REMOVE_TEMPS(n$8); [line 34]\n APPLY_ABSTRACTION; [line 34]\n " shape="box"]
|
59 [label="59: Prune (false branch) \n n$7=*&SIL_temp_conditional___52:int [line 37]\n NULLIFY(&SIL_temp_conditional___52,true); [line 37]\n PRUNE((n$7 == 0), false); [line 37]\n REMOVE_TEMPS(n$7); [line 37]\n NULLIFY(&spec,false); [line 37]\n APPLY_ABSTRACTION; [line 37]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
59 -> 34 ;
|
59 -> 35 ;
|
||||||
58 [label="58: BinaryOperatorStmt: Assign \n *&block_size:char *=0 [line 38]\n NULLIFY(&block_size,false); [line 38]\n APPLY_ABSTRACTION; [line 38]\n " shape="box"]
|
58 [label="58: Prune (true branch) \n n$7=*&SIL_temp_conditional___52:int [line 37]\n NULLIFY(&SIL_temp_conditional___52,true); [line 37]\n PRUNE((n$7 != 0), true); [line 37]\n REMOVE_TEMPS(n$7); [line 37]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
58 -> 34 ;
|
58 -> 60 ;
|
||||||
57 [label="57: Prune (false branch) \n n$7=*&SIL_temp_conditional___50:int [line 37]\n NULLIFY(&SIL_temp_conditional___50,true); [line 37]\n PRUNE((n$7 == 0), false); [line 37]\n REMOVE_TEMPS(n$7); [line 37]\n NULLIFY(&spec,false); [line 37]\n APPLY_ABSTRACTION; [line 37]\n " shape="invhouse"]
|
57 [label="57: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___52); [line 37]\n *&SIL_temp_conditional___52:int =1 [line 37]\n APPLY_ABSTRACTION; [line 37]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
57 -> 33 ;
|
57 -> 52 ;
|
||||||
56 [label="56: Prune (true branch) \n n$7=*&SIL_temp_conditional___50:int [line 37]\n NULLIFY(&SIL_temp_conditional___50,true); [line 37]\n PRUNE((n$7 != 0), true); [line 37]\n REMOVE_TEMPS(n$7); [line 37]\n " shape="invhouse"]
|
56 [label="56: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___52); [line 37]\n *&SIL_temp_conditional___52:int =0 [line 37]\n APPLY_ABSTRACTION; [line 37]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
56 -> 58 ;
|
56 -> 52 ;
|
||||||
55 [label="55: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___50); [line 37]\n *&SIL_temp_conditional___50:int =1 [line 37]\n APPLY_ABSTRACTION; [line 37]\n " shape="box"]
|
55 [label="55: Prune (false branch) \n PRUNE((n$6 == 0), false); [line 37]\n REMOVE_TEMPS(n$5,n$6); [line 37]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
55 -> 50 ;
|
55 -> 57 ;
|
||||||
54 [label="54: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___50); [line 37]\n *&SIL_temp_conditional___50:int =0 [line 37]\n APPLY_ABSTRACTION; [line 37]\n " shape="box"]
|
54 [label="54: Prune (true branch) \n PRUNE((n$6 != 0), true); [line 37]\n REMOVE_TEMPS(n$5,n$6); [line 37]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
54 -> 50 ;
|
54 -> 56 ;
|
||||||
53 [label="53: Prune (false branch) \n PRUNE((n$6 == 0), false); [line 37]\n REMOVE_TEMPS(n$5,n$6); [line 37]\n " shape="invhouse"]
|
53 [label="53: BinaryOperatorStmt: Assign \n n$5=_fun_getenv(\"BLOCKSIZE\":char *) [line 37]\n *&spec:char *=n$5 [line 37]\n n$6=*&spec:char * [line 37]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
|
53 -> 54 ;
|
||||||
53 -> 55 ;
|
53 -> 55 ;
|
||||||
52 [label="52: Prune (true branch) \n PRUNE((n$6 != 0), true); [line 37]\n REMOVE_TEMPS(n$5,n$6); [line 37]\n " shape="invhouse"]
|
52 [label="52: + \n " ]
|
||||||
|
|
||||||
|
|
||||||
52 -> 54 ;
|
52 -> 58 ;
|
||||||
51 [label="51: BinaryOperatorStmt: Assign \n n$5=_fun_getenv(\"BLOCKSIZE\":char *) [line 37]\n *&spec:char *=n$5 [line 37]\n n$6=*&spec:char * [line 37]\n " shape="box"]
|
52 -> 59 ;
|
||||||
|
51 [label="51: Prune (false branch) \n n$4=*&SIL_temp_conditional___44:int [line 36]\n NULLIFY(&SIL_temp_conditional___44,true); [line 36]\n PRUNE((n$4 == 0), false); [line 36]\n REMOVE_TEMPS(n$4); [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
51 -> 52 ;
|
51 -> 35 ;
|
||||||
51 -> 53 ;
|
50 [label="50: Prune (true branch) \n n$4=*&SIL_temp_conditional___44:int [line 36]\n NULLIFY(&SIL_temp_conditional___44,true); [line 36]\n PRUNE((n$4 != 0), true); [line 36]\n REMOVE_TEMPS(n$4); [line 36]\n " shape="invhouse"]
|
||||||
50 [label="50: + \n " ]
|
|
||||||
|
|
||||||
|
|
||||||
50 -> 56 ;
|
50 -> 53 ;
|
||||||
50 -> 57 ;
|
49 [label="49: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___44); [line 36]\n *&SIL_temp_conditional___44:int =1 [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="box"]
|
||||||
49 [label="49: Prune (false branch) \n n$4=*&SIL_temp_conditional___42:int [line 36]\n NULLIFY(&SIL_temp_conditional___42,true); [line 36]\n PRUNE((n$4 == 0), false); [line 36]\n REMOVE_TEMPS(n$4); [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="invhouse"]
|
|
||||||
|
|
||||||
|
|
||||||
49 -> 33 ;
|
49 -> 44 ;
|
||||||
48 [label="48: Prune (true branch) \n n$4=*&SIL_temp_conditional___42:int [line 36]\n NULLIFY(&SIL_temp_conditional___42,true); [line 36]\n PRUNE((n$4 != 0), true); [line 36]\n REMOVE_TEMPS(n$4); [line 36]\n " shape="invhouse"]
|
48 [label="48: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___44); [line 36]\n *&SIL_temp_conditional___44:int =0 [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
48 -> 51 ;
|
48 -> 44 ;
|
||||||
47 [label="47: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___42); [line 36]\n *&SIL_temp_conditional___42:int =1 [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="box"]
|
47 [label="47: Prune (false branch) \n PRUNE((n$3 == 0), false); [line 36]\n REMOVE_TEMPS(n$2,n$3); [line 36]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
47 -> 42 ;
|
47 -> 49 ;
|
||||||
46 [label="46: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___42); [line 36]\n *&SIL_temp_conditional___42:int =0 [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="box"]
|
46 [label="46: Prune (true branch) \n PRUNE((n$3 != 0), true); [line 36]\n REMOVE_TEMPS(n$2,n$3); [line 36]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
46 -> 42 ;
|
46 -> 48 ;
|
||||||
45 [label="45: Prune (false branch) \n PRUNE((n$3 == 0), false); [line 36]\n REMOVE_TEMPS(n$2,n$3); [line 36]\n " shape="invhouse"]
|
45 [label="45: BinaryOperatorStmt: Assign \n n$2=_fun_getenv(\"BLOCK_SIZE\":char *) [line 36]\n *&spec:char *=n$2 [line 36]\n n$3=*&spec:char * [line 36]\n NULLIFY(&spec,false); [line 36]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
|
45 -> 46 ;
|
||||||
45 -> 47 ;
|
45 -> 47 ;
|
||||||
44 [label="44: Prune (true branch) \n PRUNE((n$3 != 0), true); [line 36]\n REMOVE_TEMPS(n$2,n$3); [line 36]\n " shape="invhouse"]
|
44 [label="44: + \n " ]
|
||||||
|
|
||||||
|
|
||||||
44 -> 46 ;
|
44 -> 50 ;
|
||||||
43 [label="43: BinaryOperatorStmt: Assign \n n$2=_fun_getenv(\"BLOCK_SIZE\":char *) [line 36]\n *&spec:char *=n$2 [line 36]\n n$3=*&spec:char * [line 36]\n NULLIFY(&spec,false); [line 36]\n " shape="box"]
|
44 -> 51 ;
|
||||||
|
43 [label="43: Prune (false branch) \n n$1=*&SIL_temp_conditional___37:int [line 36]\n NULLIFY(&SIL_temp_conditional___37,true); [line 36]\n PRUNE((n$1 == 0), false); [line 36]\n REMOVE_TEMPS(n$1); [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
43 -> 44 ;
|
43 -> 35 ;
|
||||||
43 -> 45 ;
|
42 [label="42: Prune (true branch) \n n$1=*&SIL_temp_conditional___37:int [line 36]\n NULLIFY(&SIL_temp_conditional___37,true); [line 36]\n PRUNE((n$1 != 0), true); [line 36]\n REMOVE_TEMPS(n$1); [line 36]\n " shape="invhouse"]
|
||||||
42 [label="42: + \n " ]
|
|
||||||
|
|
||||||
|
|
||||||
42 -> 48 ;
|
42 -> 45 ;
|
||||||
42 -> 49 ;
|
41 [label="41: ConditinalStmt Branch \n NULLIFY(&spec,false); [line 36]\n DECLARE_LOCALS(&SIL_temp_conditional___37); [line 36]\n *&SIL_temp_conditional___37:int =1 [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="box"]
|
||||||
41 [label="41: Prune (false branch) \n n$1=*&SIL_temp_conditional___35:int [line 36]\n NULLIFY(&SIL_temp_conditional___35,true); [line 36]\n PRUNE((n$1 == 0), false); [line 36]\n REMOVE_TEMPS(n$1); [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="invhouse"]
|
|
||||||
|
|
||||||
|
|
||||||
41 -> 33 ;
|
41 -> 37 ;
|
||||||
40 [label="40: Prune (true branch) \n n$1=*&SIL_temp_conditional___35:int [line 36]\n NULLIFY(&SIL_temp_conditional___35,true); [line 36]\n PRUNE((n$1 != 0), true); [line 36]\n REMOVE_TEMPS(n$1); [line 36]\n " shape="invhouse"]
|
40 [label="40: ConditinalStmt Branch \n NULLIFY(&spec,false); [line 36]\n DECLARE_LOCALS(&SIL_temp_conditional___37); [line 36]\n *&SIL_temp_conditional___37:int =0 [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
40 -> 43 ;
|
40 -> 37 ;
|
||||||
39 [label="39: ConditinalStmt Branch \n NULLIFY(&spec,false); [line 36]\n DECLARE_LOCALS(&SIL_temp_conditional___35); [line 36]\n *&SIL_temp_conditional___35:int =1 [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="box"]
|
39 [label="39: Prune (false branch) \n n$0=*&spec:char * [line 36]\n PRUNE((n$0 == 0), false); [line 36]\n REMOVE_TEMPS(n$0); [line 36]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
39 -> 35 ;
|
39 -> 41 ;
|
||||||
38 [label="38: ConditinalStmt Branch \n NULLIFY(&spec,false); [line 36]\n DECLARE_LOCALS(&SIL_temp_conditional___35); [line 36]\n *&SIL_temp_conditional___35:int =0 [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="box"]
|
38 [label="38: Prune (true branch) \n n$0=*&spec:char * [line 36]\n PRUNE((n$0 != 0), true); [line 36]\n REMOVE_TEMPS(n$0); [line 36]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
38 -> 35 ;
|
38 -> 40 ;
|
||||||
37 [label="37: Prune (false branch) \n n$0=*&spec:char * [line 36]\n PRUNE((n$0 == 0), false); [line 36]\n REMOVE_TEMPS(n$0); [line 36]\n " shape="invhouse"]
|
37 [label="37: + \n " ]
|
||||||
|
|
||||||
|
|
||||||
37 -> 39 ;
|
37 -> 42 ;
|
||||||
36 [label="36: Prune (true branch) \n n$0=*&spec:char * [line 36]\n PRUNE((n$0 != 0), true); [line 36]\n REMOVE_TEMPS(n$0); [line 36]\n " shape="invhouse"]
|
37 -> 43 ;
|
||||||
|
36 [label="36: + \n " ]
|
||||||
|
|
||||||
|
|
||||||
36 -> 38 ;
|
36 -> 38 ;
|
||||||
35 [label="35: + \n " ]
|
36 -> 39 ;
|
||||||
|
35 [label="35: Exit test_loop \n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
35 -> 40 ;
|
34 [label="34: Start test_loop\nFormals: \nLocals: block_size:char * spec:char * \n DECLARE_LOCALS(&return,&block_size,&spec); [line 29]\n NULLIFY(&block_size,false); [line 29]\n NULLIFY(&spec,false); [line 29]\n " color=yellow style=filled]
|
||||||
35 -> 41 ;
|
|
||||||
34 [label="34: + \n " ]
|
|
||||||
|
|
||||||
|
|
||||||
34 -> 36 ;
|
34 -> 61 ;
|
||||||
34 -> 37 ;
|
33 [label="33: BinaryOperatorStmt: Assign \n n$5=*&x:int * [line 25]\n *n$5:int =32 [line 25]\n REMOVE_TEMPS(n$5); [line 25]\n NULLIFY(&x,false); [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="box"]
|
||||||
33 [label="33: Exit test_loop \n " color=yellow style=filled]
|
|
||||||
|
|
||||||
|
|
||||||
32 [label="32: Start test_loop\nFormals: \nLocals: block_size:char * spec:char * \n DECLARE_LOCALS(&return,&block_size,&spec); [line 29]\n NULLIFY(&block_size,false); [line 29]\n NULLIFY(&spec,false); [line 29]\n " color=yellow style=filled]
|
33 -> 15 ;
|
||||||
|
32 [label="32: BinaryOperatorStmt: Assign \n *&x:int *=17 [line 23]\n NULLIFY(&x,false); [line 23]\n APPLY_ABSTRACTION; [line 23]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
32 -> 59 ;
|
32 -> 15 ;
|
||||||
31 [label="31: BinaryOperatorStmt: Assign \n n$5=*&x:int * [line 25]\n *n$5:int =32 [line 25]\n REMOVE_TEMPS(n$5); [line 25]\n NULLIFY(&x,false); [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="box"]
|
31 [label="31: Prune (false branch) \n n$4=*&SIL_temp_conditional___24:int [line 22]\n NULLIFY(&SIL_temp_conditional___24,true); [line 22]\n PRUNE((n$4 == 0), false); [line 22]\n REMOVE_TEMPS(n$4); [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
31 -> 14 ;
|
31 -> 33 ;
|
||||||
30 [label="30: BinaryOperatorStmt: Assign \n *&x:int *=17 [line 23]\n NULLIFY(&x,false); [line 23]\n APPLY_ABSTRACTION; [line 23]\n " shape="box"]
|
30 [label="30: Prune (true branch) \n n$4=*&SIL_temp_conditional___24:int [line 22]\n NULLIFY(&SIL_temp_conditional___24,true); [line 22]\n PRUNE((n$4 != 0), true); [line 22]\n REMOVE_TEMPS(n$4); [line 22]\n NULLIFY(&x,false); [line 22]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
30 -> 14 ;
|
30 -> 32 ;
|
||||||
29 [label="29: Prune (false branch) \n n$4=*&SIL_temp_conditional___22:int [line 22]\n NULLIFY(&SIL_temp_conditional___22,true); [line 22]\n PRUNE((n$4 == 0), false); [line 22]\n REMOVE_TEMPS(n$4); [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="invhouse"]
|
29 [label="29: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___24); [line 22]\n *&SIL_temp_conditional___24:int =1 [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
29 -> 31 ;
|
29 -> 24 ;
|
||||||
28 [label="28: Prune (true branch) \n n$4=*&SIL_temp_conditional___22:int [line 22]\n NULLIFY(&SIL_temp_conditional___22,true); [line 22]\n PRUNE((n$4 != 0), true); [line 22]\n REMOVE_TEMPS(n$4); [line 22]\n NULLIFY(&x,false); [line 22]\n " shape="invhouse"]
|
28 [label="28: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___24); [line 22]\n *&SIL_temp_conditional___24:int =0 [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
28 -> 30 ;
|
28 -> 24 ;
|
||||||
27 [label="27: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___22); [line 22]\n *&SIL_temp_conditional___22:int =1 [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"]
|
27 [label="27: Prune (false branch) \n PRUNE((n$3 == 0), false); [line 22]\n REMOVE_TEMPS(n$2,n$3); [line 22]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
27 -> 22 ;
|
27 -> 29 ;
|
||||||
26 [label="26: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___22); [line 22]\n *&SIL_temp_conditional___22:int =0 [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"]
|
26 [label="26: Prune (true branch) \n PRUNE((n$3 != 0), true); [line 22]\n REMOVE_TEMPS(n$2,n$3); [line 22]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
26 -> 22 ;
|
26 -> 28 ;
|
||||||
25 [label="25: Prune (false branch) \n PRUNE((n$3 == 0), false); [line 22]\n REMOVE_TEMPS(n$2,n$3); [line 22]\n " shape="invhouse"]
|
25 [label="25: BinaryOperatorStmt: Assign \n n$2=_fun_getenv(\"BLOCK\":char *) [line 22]\n *&x:int *=n$2 [line 22]\n n$3=*&x:int * [line 22]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
|
25 -> 26 ;
|
||||||
25 -> 27 ;
|
25 -> 27 ;
|
||||||
24 [label="24: Prune (true branch) \n PRUNE((n$3 != 0), true); [line 22]\n REMOVE_TEMPS(n$2,n$3); [line 22]\n " shape="invhouse"]
|
24 [label="24: + \n " ]
|
||||||
|
|
||||||
|
|
||||||
24 -> 26 ;
|
24 -> 30 ;
|
||||||
23 [label="23: BinaryOperatorStmt: Assign \n n$2=_fun_getenv(\"BLOCK\":char *) [line 22]\n *&x:int *=n$2 [line 22]\n n$3=*&x:int * [line 22]\n " shape="box"]
|
24 -> 31 ;
|
||||||
|
23 [label="23: Prune (false branch) \n n$1=*&SIL_temp_conditional___17:int [line 22]\n NULLIFY(&SIL_temp_conditional___17,true); [line 22]\n PRUNE((n$1 == 0), false); [line 22]\n REMOVE_TEMPS(n$1); [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
23 -> 24 ;
|
23 -> 33 ;
|
||||||
23 -> 25 ;
|
22 [label="22: Prune (true branch) \n n$1=*&SIL_temp_conditional___17:int [line 22]\n NULLIFY(&SIL_temp_conditional___17,true); [line 22]\n PRUNE((n$1 != 0), true); [line 22]\n REMOVE_TEMPS(n$1); [line 22]\n NULLIFY(&x,false); [line 22]\n " shape="invhouse"]
|
||||||
22 [label="22: + \n " ]
|
|
||||||
|
|
||||||
|
|
||||||
22 -> 28 ;
|
22 -> 25 ;
|
||||||
22 -> 29 ;
|
21 [label="21: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___17); [line 22]\n *&SIL_temp_conditional___17:int =1 [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"]
|
||||||
21 [label="21: Prune (false branch) \n n$1=*&SIL_temp_conditional___15:int [line 22]\n NULLIFY(&SIL_temp_conditional___15,true); [line 22]\n PRUNE((n$1 == 0), false); [line 22]\n REMOVE_TEMPS(n$1); [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="invhouse"]
|
|
||||||
|
|
||||||
|
|
||||||
21 -> 31 ;
|
21 -> 17 ;
|
||||||
20 [label="20: Prune (true branch) \n n$1=*&SIL_temp_conditional___15:int [line 22]\n NULLIFY(&SIL_temp_conditional___15,true); [line 22]\n PRUNE((n$1 != 0), true); [line 22]\n REMOVE_TEMPS(n$1); [line 22]\n NULLIFY(&x,false); [line 22]\n " shape="invhouse"]
|
20 [label="20: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___17); [line 22]\n *&SIL_temp_conditional___17:int =0 [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
20 -> 23 ;
|
20 -> 17 ;
|
||||||
19 [label="19: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___15); [line 22]\n *&SIL_temp_conditional___15:int =1 [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"]
|
19 [label="19: Prune (false branch) \n n$0=*&x:int * [line 22]\n PRUNE((n$0 == 0), false); [line 22]\n REMOVE_TEMPS(n$0); [line 22]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
19 -> 15 ;
|
19 -> 21 ;
|
||||||
18 [label="18: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___15); [line 22]\n *&SIL_temp_conditional___15:int =0 [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"]
|
18 [label="18: Prune (true branch) \n n$0=*&x:int * [line 22]\n PRUNE((n$0 != 0), true); [line 22]\n REMOVE_TEMPS(n$0); [line 22]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
18 -> 15 ;
|
18 -> 20 ;
|
||||||
17 [label="17: Prune (false branch) \n n$0=*&x:int * [line 22]\n PRUNE((n$0 == 0), false); [line 22]\n REMOVE_TEMPS(n$0); [line 22]\n " shape="invhouse"]
|
17 [label="17: + \n " ]
|
||||||
|
|
||||||
|
|
||||||
17 -> 19 ;
|
17 -> 22 ;
|
||||||
16 [label="16: Prune (true branch) \n n$0=*&x:int * [line 22]\n PRUNE((n$0 != 0), true); [line 22]\n REMOVE_TEMPS(n$0); [line 22]\n " shape="invhouse"]
|
17 -> 23 ;
|
||||||
|
16 [label="16: between_join_and_exit \n APPLY_ABSTRACTION; [line 22]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
16 -> 18 ;
|
16 -> 14 ;
|
||||||
15 [label="15: + \n " ]
|
15 [label="15: + \n " ]
|
||||||
|
|
||||||
|
|
||||||
15 -> 20 ;
|
15 -> 16 ;
|
||||||
15 -> 21 ;
|
14 [label="14: Exit shortcircuit_and \n " color=yellow style=filled]
|
||||||
14 [label="14: + \n " ]
|
|
||||||
|
|
||||||
|
|
||||||
14 -> 13 ;
|
13 [label="13: Start shortcircuit_and\nFormals: x:int *\nLocals: \n DECLARE_LOCALS(&return); [line 21]\n " color=yellow style=filled]
|
||||||
13 [label="13: Exit shortcircuit_and \n " color=yellow style=filled]
|
|
||||||
|
|
||||||
|
|
||||||
12 [label="12: Start shortcircuit_and\nFormals: x:int *\nLocals: \n DECLARE_LOCALS(&return); [line 21]\n " color=yellow style=filled]
|
13 -> 18 ;
|
||||||
|
13 -> 19 ;
|
||||||
|
12 [label="12: BinaryOperatorStmt: Assign \n *&x:int *=32 [line 17]\n NULLIFY(&x,false); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
12 -> 16 ;
|
12 -> 3 ;
|
||||||
12 -> 17 ;
|
11 [label="11: BinaryOperatorStmt: Assign \n NULLIFY(&x,false); [line 15]\n *&x:int *=17 [line 15]\n NULLIFY(&x,false); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"]
|
||||||
11 [label="11: BinaryOperatorStmt: Assign \n *&x:int *=32 [line 17]\n NULLIFY(&x,false); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"]
|
|
||||||
|
|
||||||
|
|
||||||
11 -> 3 ;
|
11 -> 3 ;
|
||||||
10 [label="10: BinaryOperatorStmt: Assign \n NULLIFY(&x,false); [line 15]\n *&x:int *=17 [line 15]\n NULLIFY(&x,false); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"]
|
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 -> 3 ;
|
10 -> 12 ;
|
||||||
9 [label="9: Prune (false branch) \n PRUNE(((n$2 == 2) == 0), false); [line 14]\n REMOVE_TEMPS(n$1,n$2); [line 14]\n " shape="invhouse"]
|
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 -> 11 ;
|
9 -> 11 ;
|
||||||
8 [label="8: 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"]
|
8 [label="8: BinaryOperatorStmt: EQ \n n$1=*&x:int * [line 14]\n n$2=*n$1:int [line 14]\n NULLIFY(&x,false); [line 14]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
|
8 -> 9 ;
|
||||||
8 -> 10 ;
|
8 -> 10 ;
|
||||||
7 [label="7: BinaryOperatorStmt: EQ \n n$1=*&x:int * [line 14]\n n$2=*n$1:int [line 14]\n NULLIFY(&x,false); [line 14]\n " shape="box"]
|
7 [label="7: Prune (false branch) \n PRUNE(((n$0 == 0) == 0), false); [line 14]\n REMOVE_TEMPS(n$0); [line 14]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
7 -> 8 ;
|
7 -> 8 ;
|
||||||
7 -> 9 ;
|
6 [label="6: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 14]\n REMOVE_TEMPS(n$0); [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="invhouse"]
|
||||||
6 [label="6: Prune (false branch) \n PRUNE(((n$0 == 0) == 0), false); [line 14]\n REMOVE_TEMPS(n$0); [line 14]\n " shape="invhouse"]
|
|
||||||
|
|
||||||
|
|
||||||
6 -> 7 ;
|
6 -> 11 ;
|
||||||
5 [label="5: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 14]\n REMOVE_TEMPS(n$0); [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="invhouse"]
|
5 [label="5: BinaryOperatorStmt: EQ \n n$0=*&x:int * [line 14]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
5 -> 10 ;
|
5 -> 6 ;
|
||||||
4 [label="4: BinaryOperatorStmt: EQ \n n$0=*&x:int * [line 14]\n " shape="box"]
|
5 -> 7 ;
|
||||||
|
4 [label="4: between_join_and_exit \n APPLY_ABSTRACTION; [line 14]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
4 -> 5 ;
|
4 -> 2 ;
|
||||||
4 -> 6 ;
|
|
||||||
3 [label="3: + \n " ]
|
3 [label="3: + \n " ]
|
||||||
|
|
||||||
|
|
||||||
3 -> 2 ;
|
3 -> 4 ;
|
||||||
2 [label="2: Exit shortcircuit_or \n " color=yellow style=filled]
|
2 [label="2: Exit shortcircuit_or \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]
|
1 [label="1: Start shortcircuit_or\nFormals: x:int *\nLocals: \n DECLARE_LOCALS(&return); [line 12]\n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
1 -> 4 ;
|
1 -> 5 ;
|
||||||
}
|
}
|
||||||
|
@ -1,271 +1,295 @@
|
|||||||
digraph iCFG {
|
digraph iCFG {
|
||||||
67 [label="67: Return Stmt \n n$1=*&p:int * [line 60]\n n$2=*n$1:int [line 60]\n *&return:int =n$2 [line 60]\n REMOVE_TEMPS(n$1,n$2); [line 60]\n NULLIFY(&p,false); [line 60]\n APPLY_ABSTRACTION; [line 60]\n " shape="box"]
|
73 [label="73: Return Stmt \n n$1=*&p:int * [line 60]\n n$2=*n$1:int [line 60]\n *&return:int =n$2 [line 60]\n REMOVE_TEMPS(n$1,n$2); [line 60]\n NULLIFY(&p,false); [line 60]\n APPLY_ABSTRACTION; [line 60]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
67 -> 61 ;
|
73 -> 66 ;
|
||||||
66 [label="66: Return Stmt \n NULLIFY(&p,false); [line 58]\n *&return:int =1 [line 58]\n APPLY_ABSTRACTION; [line 58]\n " shape="box"]
|
72 [label="72: Return Stmt \n NULLIFY(&p,false); [line 58]\n *&return:int =1 [line 58]\n APPLY_ABSTRACTION; [line 58]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
66 -> 61 ;
|
72 -> 66 ;
|
||||||
65 [label="65: DeclStmt \n *&p:int *=null [line 57]\n " shape="box"]
|
71 [label="71: DeclStmt \n *&p:int *=null [line 57]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
65 -> 63 ;
|
71 -> 69 ;
|
||||||
65 -> 64 ;
|
71 -> 70 ;
|
||||||
64 [label="64: Prune (false branch) \n n$0=*&p:int * [line 57]\n PRUNE((n$0 == 0), false); [line 57]\n REMOVE_TEMPS(n$0); [line 57]\n " shape="invhouse"]
|
70 [label="70: Prune (false branch) \n n$0=*&p:int * [line 57]\n PRUNE((n$0 == 0), false); [line 57]\n REMOVE_TEMPS(n$0); [line 57]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
64 -> 67 ;
|
70 -> 73 ;
|
||||||
63 [label="63: Prune (true branch) \n n$0=*&p:int * [line 57]\n PRUNE((n$0 != 0), true); [line 57]\n REMOVE_TEMPS(n$0); [line 57]\n " shape="invhouse"]
|
69 [label="69: Prune (true branch) \n n$0=*&p:int * [line 57]\n PRUNE((n$0 != 0), true); [line 57]\n REMOVE_TEMPS(n$0); [line 57]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
63 -> 66 ;
|
69 -> 72 ;
|
||||||
62 [label="62: + \n NULLIFY(&p,false); [line 57]\n " ]
|
68 [label="68: between_join_and_exit \n NULLIFY(&p,false); [line 57]\n APPLY_ABSTRACTION; [line 57]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
|
68 -> 66 ;
|
||||||
|
67 [label="67: + \n " ]
|
||||||
|
|
||||||
|
|
||||||
|
67 -> 68 ;
|
||||||
|
66 [label="66: Exit simple_init_null_deref \n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
|
65 [label="65: Start simple_init_null_deref\nFormals: \nLocals: p:int * \n DECLARE_LOCALS(&return,&p); [line 56]\n NULLIFY(&p,false); [line 56]\n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
|
65 -> 71 ;
|
||||||
|
64 [label="64: DeclStmt \n *&r:int =1 [line 49]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
|
64 -> 62 ;
|
||||||
|
63 [label="63: BinaryOperatorStmt: Assign \n n$3=*&a:int & [line 51]\n *n$3:int =0 [line 51]\n REMOVE_TEMPS(n$3); [line 51]\n NULLIFY(&a,false); [line 51]\n APPLY_ABSTRACTION; [line 51]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
|
63 -> 59 ;
|
||||||
|
62 [label="62: DeclStmt \n *&a:int &=&r [line 50]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
|
62 -> 60 ;
|
||||||
62 -> 61 ;
|
62 -> 61 ;
|
||||||
61 [label="61: Exit simple_init_null_deref \n " color=yellow style=filled]
|
61 [label="61: Prune (false branch) \n n$1=*&a:int & [line 50]\n n$2=*n$1:int [line 50]\n PRUNE((n$2 == 0), false); [line 50]\n REMOVE_TEMPS(n$1,n$2); [line 50]\n APPLY_ABSTRACTION; [line 50]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
60 [label="60: Start simple_init_null_deref\nFormals: \nLocals: p:int * \n DECLARE_LOCALS(&return,&p); [line 56]\n NULLIFY(&p,false); [line 56]\n " color=yellow style=filled]
|
61 -> 59 ;
|
||||||
|
60 [label="60: Prune (true branch) \n n$1=*&a:int & [line 50]\n n$2=*n$1:int [line 50]\n PRUNE((n$2 != 0), true); [line 50]\n REMOVE_TEMPS(n$1,n$2); [line 50]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
60 -> 65 ;
|
60 -> 63 ;
|
||||||
59 [label="59: DeclStmt \n *&r:int =1 [line 49]\n " shape="box"]
|
59 [label="59: + \n " ]
|
||||||
|
|
||||||
|
|
||||||
59 -> 57 ;
|
59 -> 58 ;
|
||||||
58 [label="58: BinaryOperatorStmt: Assign \n n$3=*&a:int & [line 51]\n *n$3:int =0 [line 51]\n REMOVE_TEMPS(n$3); [line 51]\n NULLIFY(&a,false); [line 51]\n APPLY_ABSTRACTION; [line 51]\n " shape="box"]
|
58 [label="58: Return Stmt \n NULLIFY(&a,false); [line 53]\n n$0=*&r:int [line 53]\n *&return:int =(1 / n$0) [line 53]\n REMOVE_TEMPS(n$0); [line 53]\n NULLIFY(&r,false); [line 53]\n APPLY_ABSTRACTION; [line 53]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
58 -> 54 ;
|
58 -> 57 ;
|
||||||
57 [label="57: DeclStmt \n *&a:int &=&r [line 50]\n " shape="box"]
|
57 [label="57: Exit reference_init_div0 \n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
57 -> 55 ;
|
56 [label="56: Start reference_init_div0\nFormals: \nLocals: a:int & r:int \n DECLARE_LOCALS(&return,&a,&r); [line 48]\n NULLIFY(&a,false); [line 48]\n " color=yellow style=filled]
|
||||||
57 -> 56 ;
|
|
||||||
56 [label="56: Prune (false branch) \n n$1=*&a:int & [line 50]\n n$2=*n$1:int [line 50]\n PRUNE((n$2 == 0), false); [line 50]\n REMOVE_TEMPS(n$1,n$2); [line 50]\n APPLY_ABSTRACTION; [line 50]\n " shape="invhouse"]
|
|
||||||
|
|
||||||
|
|
||||||
56 -> 54 ;
|
56 -> 64 ;
|
||||||
55 [label="55: Prune (true branch) \n n$1=*&a:int & [line 50]\n n$2=*n$1:int [line 50]\n PRUNE((n$2 != 0), true); [line 50]\n REMOVE_TEMPS(n$1,n$2); [line 50]\n " shape="invhouse"]
|
55 [label="55: Return Stmt \n n$2=*&a:int [line 44]\n *&return:int =(1 / (n$2 - 1)) [line 44]\n REMOVE_TEMPS(n$2); [line 44]\n NULLIFY(&a,false); [line 44]\n APPLY_ABSTRACTION; [line 44]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
55 -> 58 ;
|
55 -> 44 ;
|
||||||
54 [label="54: + \n " ]
|
54 [label="54: DeclStmt \n n$1=*&SIL_temp_conditional___49:int [line 43]\n NULLIFY(&SIL_temp_conditional___49,true); [line 43]\n *&a:int =n$1 [line 43]\n REMOVE_TEMPS(n$1); [line 43]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
54 -> 53 ;
|
54 -> 47 ;
|
||||||
53 [label="53: Return Stmt \n NULLIFY(&a,false); [line 53]\n n$0=*&r:int [line 53]\n *&return:int =(1 / n$0) [line 53]\n REMOVE_TEMPS(n$0); [line 53]\n NULLIFY(&r,false); [line 53]\n APPLY_ABSTRACTION; [line 53]\n " shape="box"]
|
54 -> 48 ;
|
||||||
|
53 [label="53: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___49); [line 43]\n *&SIL_temp_conditional___49:int =0 [line 43]\n APPLY_ABSTRACTION; [line 43]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
53 -> 52 ;
|
53 -> 49 ;
|
||||||
52 [label="52: Exit reference_init_div0 \n " color=yellow style=filled]
|
52 [label="52: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___49); [line 43]\n *&SIL_temp_conditional___49:int =1 [line 43]\n APPLY_ABSTRACTION; [line 43]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
51 [label="51: Start reference_init_div0\nFormals: \nLocals: a:int & r:int \n DECLARE_LOCALS(&return,&a,&r); [line 48]\n NULLIFY(&a,false); [line 48]\n " color=yellow style=filled]
|
52 -> 49 ;
|
||||||
|
51 [label="51: Prune (false branch) \n PRUNE((1 == 0), false); [line 43]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
51 -> 59 ;
|
51 -> 53 ;
|
||||||
50 [label="50: Return Stmt \n n$2=*&a:int [line 44]\n *&return:int =(1 / (n$2 - 1)) [line 44]\n REMOVE_TEMPS(n$2); [line 44]\n NULLIFY(&a,false); [line 44]\n APPLY_ABSTRACTION; [line 44]\n " shape="box"]
|
50 [label="50: Prune (true branch) \n PRUNE((1 != 0), true); [line 43]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
50 -> 40 ;
|
50 -> 52 ;
|
||||||
49 [label="49: DeclStmt \n n$1=*&SIL_temp_conditional___44:int [line 43]\n NULLIFY(&SIL_temp_conditional___44,true); [line 43]\n *&a:int =n$1 [line 43]\n REMOVE_TEMPS(n$1); [line 43]\n " shape="box"]
|
49 [label="49: + \n " ]
|
||||||
|
|
||||||
|
|
||||||
49 -> 42 ;
|
49 -> 54 ;
|
||||||
49 -> 43 ;
|
48 [label="48: Prune (false branch) \n n$0=*&a:int [line 43]\n PRUNE((n$0 == 0), false); [line 43]\n REMOVE_TEMPS(n$0); [line 43]\n " shape="invhouse"]
|
||||||
48 [label="48: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___44); [line 43]\n *&SIL_temp_conditional___44:int =0 [line 43]\n APPLY_ABSTRACTION; [line 43]\n " shape="box"]
|
|
||||||
|
|
||||||
|
|
||||||
48 -> 44 ;
|
48 -> 45 ;
|
||||||
47 [label="47: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___44); [line 43]\n *&SIL_temp_conditional___44:int =1 [line 43]\n APPLY_ABSTRACTION; [line 43]\n " shape="box"]
|
47 [label="47: Prune (true branch) \n n$0=*&a:int [line 43]\n PRUNE((n$0 != 0), true); [line 43]\n REMOVE_TEMPS(n$0); [line 43]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
47 -> 44 ;
|
47 -> 55 ;
|
||||||
46 [label="46: Prune (false branch) \n PRUNE((1 == 0), false); [line 43]\n " shape="invhouse"]
|
46 [label="46: between_join_and_exit \n NULLIFY(&a,false); [line 43]\n APPLY_ABSTRACTION; [line 43]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
46 -> 48 ;
|
46 -> 44 ;
|
||||||
45 [label="45: Prune (true branch) \n PRUNE((1 != 0), true); [line 43]\n " shape="invhouse"]
|
45 [label="45: + \n " ]
|
||||||
|
|
||||||
|
|
||||||
45 -> 47 ;
|
45 -> 46 ;
|
||||||
44 [label="44: + \n " ]
|
44 [label="44: Exit conditional_init_div0 \n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
44 -> 49 ;
|
43 [label="43: Start conditional_init_div0\nFormals: \nLocals: a:int \n DECLARE_LOCALS(&return,&a); [line 42]\n NULLIFY(&a,false); [line 42]\n " color=yellow style=filled]
|
||||||
43 [label="43: Prune (false branch) \n n$0=*&a:int [line 43]\n PRUNE((n$0 == 0), false); [line 43]\n REMOVE_TEMPS(n$0); [line 43]\n " shape="invhouse"]
|
|
||||||
|
|
||||||
|
|
||||||
43 -> 41 ;
|
43 -> 50 ;
|
||||||
42 [label="42: Prune (true branch) \n n$0=*&a:int [line 43]\n PRUNE((n$0 != 0), true); [line 43]\n REMOVE_TEMPS(n$0); [line 43]\n " shape="invhouse"]
|
43 -> 51 ;
|
||||||
|
42 [label="42: Return Stmt \n n$2=*&a:int [line 38]\n *&return:int =(1 / (n$2 - 1)) [line 38]\n REMOVE_TEMPS(n$2); [line 38]\n NULLIFY(&a,false); [line 38]\n APPLY_ABSTRACTION; [line 38]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
42 -> 50 ;
|
42 -> 36 ;
|
||||||
41 [label="41: + \n NULLIFY(&a,false); [line 43]\n " ]
|
41 [label="41: DeclStmt \n n$1=_fun_get1() [line 37]\n *&a:int =n$1 [line 37]\n REMOVE_TEMPS(n$1); [line 37]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
|
41 -> 39 ;
|
||||||
41 -> 40 ;
|
41 -> 40 ;
|
||||||
40 [label="40: Exit conditional_init_div0 \n " color=yellow style=filled]
|
40 [label="40: Prune (false branch) \n n$0=*&a:int [line 37]\n PRUNE((n$0 == 0), false); [line 37]\n REMOVE_TEMPS(n$0); [line 37]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
39 [label="39: Start conditional_init_div0\nFormals: \nLocals: a:int \n DECLARE_LOCALS(&return,&a); [line 42]\n NULLIFY(&a,false); [line 42]\n " color=yellow style=filled]
|
40 -> 37 ;
|
||||||
|
39 [label="39: Prune (true branch) \n n$0=*&a:int [line 37]\n PRUNE((n$0 != 0), true); [line 37]\n REMOVE_TEMPS(n$0); [line 37]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
39 -> 45 ;
|
39 -> 42 ;
|
||||||
39 -> 46 ;
|
38 [label="38: between_join_and_exit \n NULLIFY(&a,false); [line 37]\n APPLY_ABSTRACTION; [line 37]\n " shape="box"]
|
||||||
38 [label="38: Return Stmt \n n$2=*&a:int [line 38]\n *&return:int =(1 / (n$2 - 1)) [line 38]\n REMOVE_TEMPS(n$2); [line 38]\n NULLIFY(&a,false); [line 38]\n APPLY_ABSTRACTION; [line 38]\n " shape="box"]
|
|
||||||
|
|
||||||
|
|
||||||
38 -> 33 ;
|
38 -> 36 ;
|
||||||
37 [label="37: DeclStmt \n n$1=_fun_get1() [line 37]\n *&a:int =n$1 [line 37]\n REMOVE_TEMPS(n$1); [line 37]\n " shape="box"]
|
37 [label="37: + \n " ]
|
||||||
|
|
||||||
|
|
||||||
37 -> 35 ;
|
37 -> 38 ;
|
||||||
37 -> 36 ;
|
36 [label="36: Exit function_call_init_div0 \n " color=yellow style=filled]
|
||||||
36 [label="36: Prune (false branch) \n n$0=*&a:int [line 37]\n PRUNE((n$0 == 0), false); [line 37]\n REMOVE_TEMPS(n$0); [line 37]\n " shape="invhouse"]
|
|
||||||
|
|
||||||
|
|
||||||
36 -> 34 ;
|
35 [label="35: Start function_call_init_div0\nFormals: \nLocals: a:int \n DECLARE_LOCALS(&return,&a); [line 36]\n NULLIFY(&a,false); [line 36]\n " color=yellow style=filled]
|
||||||
35 [label="35: Prune (true branch) \n n$0=*&a:int [line 37]\n PRUNE((n$0 != 0), true); [line 37]\n REMOVE_TEMPS(n$0); [line 37]\n " shape="invhouse"]
|
|
||||||
|
|
||||||
|
|
||||||
35 -> 38 ;
|
35 -> 41 ;
|
||||||
34 [label="34: + \n NULLIFY(&a,false); [line 37]\n " ]
|
34 [label="34: Return Stmt \n *&return:int =1 [line 34]\n APPLY_ABSTRACTION; [line 34]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
34 -> 33 ;
|
34 -> 33 ;
|
||||||
33 [label="33: Exit function_call_init_div0 \n " color=yellow style=filled]
|
33 [label="33: Exit get1 \n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
32 [label="32: Start function_call_init_div0\nFormals: \nLocals: a:int \n DECLARE_LOCALS(&return,&a); [line 36]\n NULLIFY(&a,false); [line 36]\n " color=yellow style=filled]
|
32 [label="32: Start get1\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 34]\n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
32 -> 37 ;
|
32 -> 34 ;
|
||||||
31 [label="31: Return Stmt \n *&return:int =1 [line 34]\n APPLY_ABSTRACTION; [line 34]\n " shape="box"]
|
31 [label="31: Return Stmt \n n$2=*&a:int [line 30]\n n$3=*&b:int [line 30]\n *&return:int =(1 / (n$2 + n$3)) [line 30]\n REMOVE_TEMPS(n$2,n$3); [line 30]\n NULLIFY(&a,false); [line 30]\n NULLIFY(&b,false); [line 30]\n APPLY_ABSTRACTION; [line 30]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
31 -> 30 ;
|
31 -> 19 ;
|
||||||
30 [label="30: Exit get1 \n " color=yellow style=filled]
|
30 [label="30: Return Stmt \n NULLIFY(&a,false); [line 28]\n NULLIFY(&b,false); [line 28]\n *&return:int =1 [line 28]\n APPLY_ABSTRACTION; [line 28]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
29 [label="29: Start get1\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 34]\n " color=yellow style=filled]
|
30 -> 19 ;
|
||||||
|
29 [label="29: DeclStmt \n *&b:int =0 [line 27]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
29 -> 31 ;
|
29 -> 27 ;
|
||||||
28 [label="28: Return Stmt \n n$2=*&a:int [line 30]\n n$3=*&b:int [line 30]\n *&return:int =(1 / (n$2 + n$3)) [line 30]\n REMOVE_TEMPS(n$2,n$3); [line 30]\n NULLIFY(&a,false); [line 30]\n NULLIFY(&b,false); [line 30]\n APPLY_ABSTRACTION; [line 30]\n " shape="box"]
|
29 -> 28 ;
|
||||||
|
28 [label="28: Prune (false branch) \n n$1=*&b:int [line 27]\n PRUNE((n$1 == 0), false); [line 27]\n REMOVE_TEMPS(n$1); [line 27]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
28 -> 17 ;
|
28 -> 31 ;
|
||||||
27 [label="27: Return Stmt \n NULLIFY(&a,false); [line 28]\n NULLIFY(&b,false); [line 28]\n *&return:int =1 [line 28]\n APPLY_ABSTRACTION; [line 28]\n " shape="box"]
|
27 [label="27: Prune (true branch) \n n$1=*&b:int [line 27]\n PRUNE((n$1 != 0), true); [line 27]\n REMOVE_TEMPS(n$1); [line 27]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
27 -> 17 ;
|
27 -> 30 ;
|
||||||
26 [label="26: DeclStmt \n *&b:int =0 [line 27]\n " shape="box"]
|
26 [label="26: + \n " ]
|
||||||
|
|
||||||
|
|
||||||
26 -> 24 ;
|
26 -> 20 ;
|
||||||
26 -> 25 ;
|
25 [label="25: Return Stmt \n NULLIFY(&a,false); [line 26]\n *&return:int =1 [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"]
|
||||||
25 [label="25: Prune (false branch) \n n$1=*&b:int [line 27]\n PRUNE((n$1 == 0), false); [line 27]\n REMOVE_TEMPS(n$1); [line 27]\n " shape="invhouse"]
|
|
||||||
|
|
||||||
|
|
||||||
25 -> 28 ;
|
25 -> 19 ;
|
||||||
24 [label="24: Prune (true branch) \n n$1=*&b:int [line 27]\n PRUNE((n$1 != 0), true); [line 27]\n REMOVE_TEMPS(n$1); [line 27]\n " shape="invhouse"]
|
24 [label="24: DeclStmt \n *&a:int =0 [line 25]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
24 -> 27 ;
|
24 -> 22 ;
|
||||||
23 [label="23: + \n " ]
|
24 -> 23 ;
|
||||||
|
23 [label="23: Prune (false branch) \n n$0=*&a:int [line 25]\n PRUNE((n$0 == 0), false); [line 25]\n REMOVE_TEMPS(n$0); [line 25]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
23 -> 18 ;
|
23 -> 29 ;
|
||||||
22 [label="22: Return Stmt \n NULLIFY(&a,false); [line 26]\n *&return:int =1 [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"]
|
22 [label="22: Prune (true branch) \n n$0=*&a:int [line 25]\n PRUNE((n$0 != 0), true); [line 25]\n REMOVE_TEMPS(n$0); [line 25]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
22 -> 17 ;
|
22 -> 25 ;
|
||||||
21 [label="21: DeclStmt \n *&a:int =0 [line 25]\n " shape="box"]
|
21 [label="21: between_join_and_exit \n NULLIFY(&a,false); [line 25]\n NULLIFY(&b,false); [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
21 -> 19 ;
|
21 -> 19 ;
|
||||||
21 -> 20 ;
|
20 [label="20: + \n " ]
|
||||||
20 [label="20: Prune (false branch) \n n$0=*&a:int [line 25]\n PRUNE((n$0 == 0), false); [line 25]\n REMOVE_TEMPS(n$0); [line 25]\n " shape="invhouse"]
|
|
||||||
|
|
||||||
|
|
||||||
20 -> 26 ;
|
20 -> 21 ;
|
||||||
19 [label="19: Prune (true branch) \n n$0=*&a:int [line 25]\n PRUNE((n$0 != 0), true); [line 25]\n REMOVE_TEMPS(n$0); [line 25]\n " shape="invhouse"]
|
19 [label="19: Exit simple_inif_elseif_div0 \n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
19 -> 22 ;
|
18 [label="18: Start simple_inif_elseif_div0\nFormals: \nLocals: a:int b:int \n DECLARE_LOCALS(&return,&a,&b); [line 24]\n NULLIFY(&a,false); [line 24]\n NULLIFY(&b,false); [line 24]\n " color=yellow style=filled]
|
||||||
18 [label="18: + \n NULLIFY(&a,false); [line 25]\n NULLIFY(&b,false); [line 25]\n " ]
|
|
||||||
|
|
||||||
|
|
||||||
18 -> 17 ;
|
18 -> 24 ;
|
||||||
17 [label="17: Exit simple_inif_elseif_div0 \n " color=yellow style=filled]
|
17 [label="17: Return Stmt \n n$2=*&a:int [line 20]\n *&return:int =(1 / n$2) [line 20]\n REMOVE_TEMPS(n$2); [line 20]\n NULLIFY(&a,false); [line 20]\n APPLY_ABSTRACTION; [line 20]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
16 [label="16: Start simple_inif_elseif_div0\nFormals: \nLocals: a:int b:int \n DECLARE_LOCALS(&return,&a,&b); [line 24]\n NULLIFY(&a,false); [line 24]\n NULLIFY(&b,false); [line 24]\n " color=yellow style=filled]
|
17 -> 10 ;
|
||||||
|
16 [label="16: Return Stmt \n n$1=*&a:int [line 18]\n *&return:int =n$1 [line 18]\n REMOVE_TEMPS(n$1); [line 18]\n NULLIFY(&a,false); [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
16 -> 21 ;
|
16 -> 10 ;
|
||||||
15 [label="15: Return Stmt \n n$2=*&a:int [line 20]\n *&return:int =(1 / n$2) [line 20]\n REMOVE_TEMPS(n$2); [line 20]\n NULLIFY(&a,false); [line 20]\n APPLY_ABSTRACTION; [line 20]\n " shape="box"]
|
15 [label="15: DeclStmt \n *&a:int =0 [line 17]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
15 -> 9 ;
|
15 -> 13 ;
|
||||||
14 [label="14: Return Stmt \n n$1=*&a:int [line 18]\n *&return:int =n$1 [line 18]\n REMOVE_TEMPS(n$1); [line 18]\n NULLIFY(&a,false); [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"]
|
15 -> 14 ;
|
||||||
|
14 [label="14: Prune (false branch) \n n$0=*&a:int [line 17]\n PRUNE((n$0 == 0), false); [line 17]\n REMOVE_TEMPS(n$0); [line 17]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
14 -> 9 ;
|
14 -> 17 ;
|
||||||
13 [label="13: DeclStmt \n *&a:int =0 [line 17]\n " shape="box"]
|
13 [label="13: Prune (true branch) \n n$0=*&a:int [line 17]\n PRUNE((n$0 != 0), true); [line 17]\n REMOVE_TEMPS(n$0); [line 17]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
13 -> 11 ;
|
13 -> 16 ;
|
||||||
13 -> 12 ;
|
12 [label="12: between_join_and_exit \n NULLIFY(&a,false); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"]
|
||||||
12 [label="12: Prune (false branch) \n n$0=*&a:int [line 17]\n PRUNE((n$0 == 0), false); [line 17]\n REMOVE_TEMPS(n$0); [line 17]\n " shape="invhouse"]
|
|
||||||
|
|
||||||
|
|
||||||
12 -> 15 ;
|
12 -> 10 ;
|
||||||
11 [label="11: Prune (true branch) \n n$0=*&a:int [line 17]\n PRUNE((n$0 != 0), true); [line 17]\n REMOVE_TEMPS(n$0); [line 17]\n " shape="invhouse"]
|
11 [label="11: + \n " ]
|
||||||
|
|
||||||
|
|
||||||
11 -> 14 ;
|
11 -> 12 ;
|
||||||
10 [label="10: + \n NULLIFY(&a,false); [line 17]\n " ]
|
10 [label="10: Exit simple_init_div0 \n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
10 -> 9 ;
|
9 [label="9: Start simple_init_div0\nFormals: \nLocals: a:int \n DECLARE_LOCALS(&return,&a); [line 16]\n NULLIFY(&a,false); [line 16]\n " color=yellow style=filled]
|
||||||
9 [label="9: Exit simple_init_div0 \n " color=yellow style=filled]
|
|
||||||
|
|
||||||
|
|
||||||
8 [label="8: Start simple_init_div0\nFormals: \nLocals: a:int \n DECLARE_LOCALS(&return,&a); [line 16]\n NULLIFY(&a,false); [line 16]\n " color=yellow style=filled]
|
9 -> 15 ;
|
||||||
|
8 [label="8: Return Stmt \n n$1=*&a:int [line 12]\n *&return:int =(1 / n$1) [line 12]\n REMOVE_TEMPS(n$1); [line 12]\n NULLIFY(&a,false); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
8 -> 13 ;
|
8 -> 2 ;
|
||||||
7 [label="7: Return Stmt \n n$1=*&a:int [line 12]\n *&return:int =(1 / n$1) [line 12]\n REMOVE_TEMPS(n$1); [line 12]\n NULLIFY(&a,false); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"]
|
7 [label="7: DeclStmt \n *&a:int =1 [line 11]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
7 -> 2 ;
|
7 -> 5 ;
|
||||||
6 [label="6: DeclStmt \n *&a:int =1 [line 11]\n " shape="box"]
|
7 -> 6 ;
|
||||||
|
6 [label="6: Prune (false branch) \n n$0=*&a:int [line 11]\n PRUNE((n$0 == 0), false); [line 11]\n REMOVE_TEMPS(n$0); [line 11]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
6 -> 4 ;
|
6 -> 3 ;
|
||||||
6 -> 5 ;
|
5 [label="5: Prune (true branch) \n n$0=*&a:int [line 11]\n PRUNE((n$0 != 0), true); [line 11]\n REMOVE_TEMPS(n$0); [line 11]\n " shape="invhouse"]
|
||||||
5 [label="5: Prune (false branch) \n n$0=*&a:int [line 11]\n PRUNE((n$0 == 0), false); [line 11]\n REMOVE_TEMPS(n$0); [line 11]\n " shape="invhouse"]
|
|
||||||
|
|
||||||
|
|
||||||
5 -> 3 ;
|
5 -> 8 ;
|
||||||
4 [label="4: Prune (true branch) \n n$0=*&a:int [line 11]\n PRUNE((n$0 != 0), true); [line 11]\n REMOVE_TEMPS(n$0); [line 11]\n " shape="invhouse"]
|
4 [label="4: between_join_and_exit \n NULLIFY(&a,false); [line 11]\n APPLY_ABSTRACTION; [line 11]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
4 -> 7 ;
|
4 -> 2 ;
|
||||||
3 [label="3: + \n NULLIFY(&a,false); [line 11]\n " ]
|
3 [label="3: + \n " ]
|
||||||
|
|
||||||
|
|
||||||
3 -> 2 ;
|
3 -> 4 ;
|
||||||
2 [label="2: Exit simple_init_div1 \n " color=yellow style=filled]
|
2 [label="2: Exit simple_init_div1 \n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
1 [label="1: Start simple_init_div1\nFormals: \nLocals: a:int \n DECLARE_LOCALS(&return,&a); [line 10]\n NULLIFY(&a,false); [line 10]\n " color=yellow style=filled]
|
1 [label="1: Start simple_init_div1\nFormals: \nLocals: a:int \n DECLARE_LOCALS(&return,&a); [line 10]\n NULLIFY(&a,false); [line 10]\n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
1 -> 6 ;
|
1 -> 7 ;
|
||||||
}
|
}
|
||||||
|
@ -1,65 +1,69 @@
|
|||||||
digraph iCFG {
|
digraph iCFG {
|
||||||
16 [label="16: BinaryOperatorStmt: Assign \n *&#GB$g:int =7 [line 22]\n " shape="box"]
|
17 [label="17: BinaryOperatorStmt: Assign \n *&#GB$g:int =7 [line 22]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
|
17 -> 16 ;
|
||||||
|
16 [label="16: DeclStmt \n *&z:int =3 [line 24]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
16 -> 15 ;
|
16 -> 15 ;
|
||||||
15 [label="15: DeclStmt \n *&z:int =3 [line 24]\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$7,n$8,n$9,n$5); [line 25]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
15 -> 14 ;
|
15 -> 11 ;
|
||||||
14 [label="14: 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 " shape="box"]
|
14 [label="14: BinaryOperatorStmt: Assign \n n$6=*&z:int [line 26]\n *&#GB$g:int =(n$6 + 3) [line 26]\n REMOVE_TEMPS(n$6); [line 26]\n NULLIFY(&z,false); [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
14 -> 10 ;
|
14 -> 13 ;
|
||||||
13 [label="13: BinaryOperatorStmt: Assign \n n$6=*&z:int [line 26]\n *&#GB$g:int =(n$6 + 3) [line 26]\n REMOVE_TEMPS(n$6); [line 26]\n NULLIFY(&z,false); [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"]
|
13 [label="13: Exit __objc_anonymous_block_My_manager_m______1 \n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
13 -> 12 ;
|
12 [label="12: Start __objc_anonymous_block_My_manager_m______1\nFormals: z:int \nLocals: \nCaptured: z:int \n DECLARE_LOCALS(&return); [line 25]\n " color=yellow style=filled]
|
||||||
12 [label="12: Exit __objc_anonymous_block_My_manager_m______1 \n " color=yellow style=filled]
|
|
||||||
|
|
||||||
|
|
||||||
11 [label="11: Start __objc_anonymous_block_My_manager_m______1\nFormals: z:int \nLocals: \nCaptured: z:int \n DECLARE_LOCALS(&return); [line 25]\n " color=yellow style=filled]
|
12 -> 14 ;
|
||||||
|
11 [label="11: Call n$4 \n n$4=*&b:_fn_ (*) [line 28]\n n$4() [line 28]\n REMOVE_TEMPS(n$4); [line 28]\n NULLIFY(&b,false); [line 28]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
11 -> 13 ;
|
11 -> 10 ;
|
||||||
10 [label="10: Call n$4 \n n$4=*&b:_fn_ (*) [line 28]\n n$4() [line 28]\n REMOVE_TEMPS(n$4); [line 28]\n NULLIFY(&b,false); [line 28]\n " shape="box"]
|
10 [label="10: DeclStmt \n *&p:int *=0 [line 29]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
10 -> 9 ;
|
10 -> 5 ;
|
||||||
9 [label="9: DeclStmt \n *&p:int *=0 [line 29]\n " shape="box"]
|
9 [label="9: Return Stmt \n NULLIFY(&p,false); [line 33]\n n$3=*&z:int [line 33]\n *&return:int =n$3 [line 33]\n REMOVE_TEMPS(n$3); [line 33]\n NULLIFY(&__objc_anonymous_block_My_manager_m______1,true); [line 33]\n NULLIFY(&z,false); [line 33]\n APPLY_ABSTRACTION; [line 33]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
9 -> 4 ;
|
9 -> 2 ;
|
||||||
8 [label="8: Return Stmt \n NULLIFY(&p,false); [line 33]\n n$3=*&z:int [line 33]\n *&return:int =n$3 [line 33]\n REMOVE_TEMPS(n$3); [line 33]\n NULLIFY(&__objc_anonymous_block_My_manager_m______1,true); [line 33]\n NULLIFY(&z,false); [line 33]\n APPLY_ABSTRACTION; [line 33]\n " shape="box"]
|
8 [label="8: Return Stmt \n NULLIFY(&z,false); [line 31]\n n$1=*&p:int * [line 31]\n n$2=*n$1:int [line 31]\n *&return:int =n$2 [line 31]\n REMOVE_TEMPS(n$1,n$2); [line 31]\n NULLIFY(&__objc_anonymous_block_My_manager_m______1,true); [line 31]\n NULLIFY(&p,false); [line 31]\n APPLY_ABSTRACTION; [line 31]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
8 -> 2 ;
|
8 -> 2 ;
|
||||||
7 [label="7: Return Stmt \n NULLIFY(&z,false); [line 31]\n n$1=*&p:int * [line 31]\n n$2=*n$1:int [line 31]\n *&return:int =n$2 [line 31]\n REMOVE_TEMPS(n$1,n$2); [line 31]\n NULLIFY(&__objc_anonymous_block_My_manager_m______1,true); [line 31]\n NULLIFY(&p,false); [line 31]\n APPLY_ABSTRACTION; [line 31]\n " shape="box"]
|
7 [label="7: Prune (false branch) \n PRUNE(((n$0 == 6) == 0), false); [line 30]\n REMOVE_TEMPS(n$0); [line 30]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
7 -> 2 ;
|
7 -> 9 ;
|
||||||
6 [label="6: Prune (false branch) \n PRUNE(((n$0 == 6) == 0), false); [line 30]\n REMOVE_TEMPS(n$0); [line 30]\n " shape="invhouse"]
|
6 [label="6: Prune (true branch) \n PRUNE(((n$0 == 6) != 0), true); [line 30]\n REMOVE_TEMPS(n$0); [line 30]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
6 -> 8 ;
|
6 -> 8 ;
|
||||||
5 [label="5: Prune (true branch) \n PRUNE(((n$0 == 6) != 0), true); [line 30]\n REMOVE_TEMPS(n$0); [line 30]\n " shape="invhouse"]
|
5 [label="5: BinaryOperatorStmt: EQ \n n$0=*&#GB$g:int [line 30]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
|
5 -> 6 ;
|
||||||
5 -> 7 ;
|
5 -> 7 ;
|
||||||
4 [label="4: BinaryOperatorStmt: EQ \n n$0=*&#GB$g:int [line 30]\n " shape="box"]
|
4 [label="4: between_join_and_exit \n NULLIFY(&b,false); [line 30]\n NULLIFY(&p,false); [line 30]\n NULLIFY(&self,false); [line 30]\n NULLIFY(&z,false); [line 30]\n NULLIFY(&__objc_anonymous_block_My_manager_m______1,true); [line 30]\n APPLY_ABSTRACTION; [line 30]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
4 -> 5 ;
|
4 -> 2 ;
|
||||||
4 -> 6 ;
|
3 [label="3: + \n " ]
|
||||||
3 [label="3: + \n NULLIFY(&__objc_anonymous_block_My_manager_m______1,true); [line 30]\n NULLIFY(&b,false); [line 30]\n NULLIFY(&p,false); [line 30]\n NULLIFY(&self,false); [line 30]\n NULLIFY(&z,false); [line 30]\n " ]
|
|
||||||
|
|
||||||
|
|
||||||
3 -> 2 ;
|
3 -> 4 ;
|
||||||
2 [label="2: Exit My_manager_m \n " color=yellow style=filled]
|
2 [label="2: Exit My_manager_m \n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
1 [label="1: Start My_manager_m\nFormals: self:class My_manager *\nLocals: p:int * z:int b:_fn_ (*) \n DECLARE_LOCALS(&return,&p,&z,&b); [line 21]\n NULLIFY(&b,false); [line 21]\n NULLIFY(&p,false); [line 21]\n NULLIFY(&self,false); [line 21]\n NULLIFY(&z,false); [line 21]\n " color=yellow style=filled]
|
1 [label="1: Start My_manager_m\nFormals: self:class My_manager *\nLocals: p:int * z:int b:_fn_ (*) \n DECLARE_LOCALS(&return,&p,&z,&b); [line 21]\n NULLIFY(&b,false); [line 21]\n NULLIFY(&p,false); [line 21]\n NULLIFY(&self,false); [line 21]\n NULLIFY(&z,false); [line 21]\n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
1 -> 16 ;
|
1 -> 17 ;
|
||||||
}
|
}
|
||||||
|
@ -1,30 +1,34 @@
|
|||||||
digraph iCFG {
|
digraph iCFG {
|
||||||
7 [label="7: Return Stmt \n APPLY_ABSTRACTION; [line 26]\n " shape="box"]
|
8 [label="8: Return Stmt \n APPLY_ABSTRACTION; [line 26]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
7 -> 2 ;
|
8 -> 2 ;
|
||||||
6 [label="6: 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$0,n$1); [line 25]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
6 -> 3 ;
|
7 -> 3 ;
|
||||||
5 [label="5: 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$0,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,false); [line 25]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
|
5 -> 6 ;
|
||||||
5 -> 7 ;
|
5 -> 7 ;
|
||||||
4 [label="4: 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,false); [line 25]\n " shape="box"]
|
4 [label="4: between_join_and_exit \n APPLY_ABSTRACTION; [line 25]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
4 -> 5 ;
|
4 -> 2 ;
|
||||||
4 -> 6 ;
|
|
||||||
3 [label="3: + \n " ]
|
3 [label="3: + \n " ]
|
||||||
|
|
||||||
|
|
||||||
3 -> 2 ;
|
3 -> 4 ;
|
||||||
2 [label="2: Exit Bla_fooMethod \n " color=yellow style=filled]
|
2 [label="2: Exit Bla_fooMethod \n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
1 [label="1: Start Bla_fooMethod\nFormals: self:class Bla *\nLocals: \n DECLARE_LOCALS(&return); [line 24]\n " color=yellow style=filled]
|
1 [label="1: Start Bla_fooMethod\nFormals: self:class Bla *\nLocals: \n DECLARE_LOCALS(&return); [line 24]\n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
1 -> 4 ;
|
1 -> 5 ;
|
||||||
}
|
}
|
||||||
|
@ -1,59 +1,63 @@
|
|||||||
digraph iCFG {
|
digraph iCFG {
|
||||||
14 [label="14: DeclStmt \n *&i:int =0 [line 19]\n " shape="box"]
|
15 [label="15: DeclStmt \n *&i:int =0 [line 19]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
14 -> 13 ;
|
15 -> 14 ;
|
||||||
13 [label="13: DeclStmt \n *&j:int =0 [line 20]\n " shape="box"]
|
14 [label="14: DeclStmt \n *&j:int =0 [line 20]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
13 -> 9 ;
|
14 -> 10 ;
|
||||||
12 [label="12: Return Stmt \n NULLIFY(&i,false); [line 22]\n NULLIFY(&j,false); [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"]
|
13 [label="13: Return Stmt \n NULLIFY(&i,false); [line 22]\n NULLIFY(&j,false); [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
12 -> 2 ;
|
13 -> 2 ;
|
||||||
11 [label="11: Prune (false branch) \n PRUNE(((n$2 == 0) == 0), false); [line 21]\n REMOVE_TEMPS(n$2); [line 21]\n " shape="invhouse"]
|
12 [label="12: Prune (false branch) \n PRUNE(((n$2 == 0) == 0), false); [line 21]\n REMOVE_TEMPS(n$2); [line 21]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
11 -> 8 ;
|
12 -> 9 ;
|
||||||
10 [label="10: Prune (true branch) \n PRUNE(((n$2 == 0) != 0), true); [line 21]\n REMOVE_TEMPS(n$2); [line 21]\n " shape="invhouse"]
|
11 [label="11: Prune (true branch) \n PRUNE(((n$2 == 0) != 0), true); [line 21]\n REMOVE_TEMPS(n$2); [line 21]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
|
11 -> 13 ;
|
||||||
|
10 [label="10: BinaryOperatorStmt: EQ \n n$2=*&i:int [line 21]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
|
10 -> 11 ;
|
||||||
10 -> 12 ;
|
10 -> 12 ;
|
||||||
9 [label="9: BinaryOperatorStmt: EQ \n n$2=*&i:int [line 21]\n " shape="box"]
|
9 [label="9: + \n " ]
|
||||||
|
|
||||||
|
|
||||||
9 -> 10 ;
|
9 -> 5 ;
|
||||||
9 -> 11 ;
|
8 [label="8: UnaryOperator \n n$1=*&i:int [line 26]\n *&i:int =(n$1 + 1) [line 26]\n REMOVE_TEMPS(n$1); [line 26]\n NULLIFY(&i,false); [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"]
|
||||||
8 [label="8: + \n " ]
|
|
||||||
|
|
||||||
|
|
||||||
8 -> 4 ;
|
8 -> 3 ;
|
||||||
7 [label="7: UnaryOperator \n n$1=*&i:int [line 26]\n *&i:int =(n$1 + 1) [line 26]\n REMOVE_TEMPS(n$1); [line 26]\n NULLIFY(&i,false); [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"]
|
7 [label="7: Prune (false branch) \n PRUNE(((n$0 == 0) == 0), false); [line 25]\n REMOVE_TEMPS(n$0); [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
7 -> 3 ;
|
7 -> 3 ;
|
||||||
6 [label="6: Prune (false branch) \n PRUNE(((n$0 == 0) == 0), false); [line 25]\n REMOVE_TEMPS(n$0); [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="invhouse"]
|
6 [label="6: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 25]\n REMOVE_TEMPS(n$0); [line 25]\n " shape="invhouse"]
|
||||||
|
|
||||||
|
|
||||||
6 -> 3 ;
|
6 -> 8 ;
|
||||||
5 [label="5: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 25]\n REMOVE_TEMPS(n$0); [line 25]\n " shape="invhouse"]
|
5 [label="5: BinaryOperatorStmt: EQ \n n$0=*&j:int [line 25]\n NULLIFY(&j,false); [line 25]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
|
5 -> 6 ;
|
||||||
5 -> 7 ;
|
5 -> 7 ;
|
||||||
4 [label="4: BinaryOperatorStmt: EQ \n n$0=*&j:int [line 25]\n NULLIFY(&j,false); [line 25]\n " shape="box"]
|
4 [label="4: between_join_and_exit \n NULLIFY(&i,false); [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="box"]
|
||||||
|
|
||||||
|
|
||||||
4 -> 5 ;
|
4 -> 2 ;
|
||||||
4 -> 6 ;
|
3 [label="3: + \n " ]
|
||||||
3 [label="3: + \n NULLIFY(&i,false); [line 25]\n " ]
|
|
||||||
|
|
||||||
|
|
||||||
3 -> 2 ;
|
3 -> 4 ;
|
||||||
2 [label="2: Exit MyClass_aMethod \n " color=yellow style=filled]
|
2 [label="2: Exit MyClass_aMethod \n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
1 [label="1: Start MyClass_aMethod\nFormals: self:class MyClass *\nLocals: j:int i:int \n DECLARE_LOCALS(&return,&j,&i); [line 18]\n NULLIFY(&i,false); [line 18]\n NULLIFY(&j,false); [line 18]\n NULLIFY(&self,false); [line 18]\n " color=yellow style=filled]
|
1 [label="1: Start MyClass_aMethod\nFormals: self:class MyClass *\nLocals: j:int i:int \n DECLARE_LOCALS(&return,&j,&i); [line 18]\n NULLIFY(&i,false); [line 18]\n NULLIFY(&j,false); [line 18]\n NULLIFY(&self,false); [line 18]\n " color=yellow style=filled]
|
||||||
|
|
||||||
|
|
||||||
1 -> 14 ;
|
1 -> 15 ;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in new issue