|
|
|
digraph iCFG {
|
|
|
|
69 [label="69: Assertion failure \n _fun___infer_fail(\"Assertion_failure\":void ) [line 32]\n APPLY_ABSTRACTION; [line 32]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
69 -> 56 ;
|
|
|
|
68 [label="68: Prune (false branch) \n n$33=*&SIL_temp_conditional___62:int [line 34]\n NULLIFY(&SIL_temp_conditional___62,true); [line 34]\n PRUNE((n$33 == 0), false); [line 34]\n REMOVE_TEMPS(n$33); [line 34]\n " shape="invhouse"]
|
|
|
|
|
|
|
|
|
|
|
|
68 -> 61 ;
|
|
|
|
67 [label="67: Prune (true branch) \n n$33=*&SIL_temp_conditional___62:int [line 34]\n NULLIFY(&SIL_temp_conditional___62,true); [line 34]\n PRUNE((n$33 != 0), true); [line 34]\n REMOVE_TEMPS(n$33); [line 34]\n NULLIFY(&target,false); [line 34]\n " shape="invhouse"]
|
|
|
|
|
|
|
|
|
|
|
|
67 -> 69 ;
|
|
|
|
66 [label="66: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___62); [line 34]\n *&SIL_temp_conditional___62:int =1 [line 34]\n APPLY_ABSTRACTION; [line 34]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
66 -> 62 ;
|
|
|
|
65 [label="65: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___62); [line 34]\n *&SIL_temp_conditional___62:int =0 [line 34]\n APPLY_ABSTRACTION; [line 34]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
65 -> 62 ;
|
|
|
|
64 [label="64: Prune (false branch) \n n$32=*&target:class A * [line 34]\n PRUNE((n$32 == 0), false); [line 34]\n REMOVE_TEMPS(n$32); [line 34]\n " shape="invhouse"]
|
|
|
|
|
|
|
|
|
|
|
|
64 -> 66 ;
|
|
|
|
63 [label="63: Prune (true branch) \n n$32=*&target:class A * [line 34]\n PRUNE((n$32 != 0), true); [line 34]\n REMOVE_TEMPS(n$32); [line 34]\n " shape="invhouse"]
|
|
|
|
|
|
|
|
|
|
|
|
63 -> 65 ;
|
|
|
|
62 [label="62: + \n " ]
|
|
|
|
|
|
|
|
|
|
|
|
62 -> 67 ;
|
|
|
|
62 -> 68 ;
|
|
|
|
61 [label="61: + \n " ]
|
|
|
|
|
|
|
|
|
|
|
|
61 -> 59 ;
|
|
|
|
61 -> 60 ;
|
|
|
|
60 [label="60: Prune (false branch) \n PRUNE((0 == 0), false); [line 32]\n " shape="invhouse"]
|
|
|
|
|
|
|
|
|
|
|
|
60 -> 57 ;
|
|
|
|
59 [label="59: Prune (true branch) \n PRUNE((0 != 0), true); [line 32]\n APPLY_ABSTRACTION; [line 32]\n " shape="invhouse"]
|
|
|
|
|
|
|
|
|
|
|
|
59 -> 58 ;
|
|
|
|
58 [label="58: + \n " ]
|
|
|
|
|
|
|
|
|
|
|
|
58 -> 63 ;
|
|
|
|
58 -> 64 ;
|
|
|
|
57 [label="57: Return Stmt \n n$31=*&target:class A * [line 33]\n n$30=_fun_A_x(n$31:class A *) virtual [line 33]\n *&return:int =n$30 [line 33]\n REMOVE_TEMPS(n$30,n$31); [line 33]\n NULLIFY(&target,false); [line 33]\n APPLY_ABSTRACTION; [line 33]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
57 -> 56 ;
|
|
|
|
56 [label="56: Exit test2 \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
55 [label="55: Start test2\nFormals: target:class A *\nLocals: \n DECLARE_LOCALS(&return); [line 31]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
55 -> 58 ;
|
|
|
|
54 [label="54: Assertion failure \n _fun___infer_fail(\"Assertion_failure\":void ) [line 27]\n APPLY_ABSTRACTION; [line 27]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
54 -> 40 ;
|
|
|
|
53 [label="53: Prune (false branch) \n n$25=*&SIL_temp_conditional___46:int [line 29]\n NULLIFY(&SIL_temp_conditional___46,true); [line 29]\n PRUNE((n$25 == 0), false); [line 29]\n REMOVE_TEMPS(n$25); [line 29]\n " shape="invhouse"]
|
|
|
|
|
|
|
|
|
|
|
|
53 -> 45 ;
|
|
|
|
52 [label="52: Prune (true branch) \n n$25=*&SIL_temp_conditional___46:int [line 29]\n NULLIFY(&SIL_temp_conditional___46,true); [line 29]\n PRUNE((n$25 != 0), true); [line 29]\n REMOVE_TEMPS(n$25); [line 29]\n NULLIFY(&target,false); [line 29]\n " shape="invhouse"]
|
|
|
|
|
|
|
|
|
|
|
|
52 -> 54 ;
|
|
|
|
51 [label="51: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___46); [line 29]\n *&SIL_temp_conditional___46:int =1 [line 29]\n APPLY_ABSTRACTION; [line 29]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
51 -> 46 ;
|
|
|
|
50 [label="50: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___46); [line 29]\n *&SIL_temp_conditional___46:int =0 [line 29]\n APPLY_ABSTRACTION; [line 29]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
50 -> 46 ;
|
|
|
|
49 [label="49: Prune (false branch) \n PRUNE(((n$24 != (void *)0) == 0), false); [line 27]\n REMOVE_TEMPS(n$24); [line 27]\n " shape="invhouse"]
|
|
|
|
|
|
|
|
|
|
|
|
49 -> 51 ;
|
|
|
|
48 [label="48: Prune (true branch) \n PRUNE(((n$24 != (void *)0) != 0), true); [line 27]\n REMOVE_TEMPS(n$24); [line 27]\n " shape="invhouse"]
|
|
|
|
|
|
|
|
|
|
|
|
48 -> 50 ;
|
|
|
|
47 [label="47: BinaryOperatorStmt: NE \n n$24=*&target:class A * [line 27]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
47 -> 48 ;
|
|
|
|
47 -> 49 ;
|
|
|
|
46 [label="46: + \n " ]
|
|
|
|
|
|
|
|
|
|
|
|
46 -> 52 ;
|
|
|
|
46 -> 53 ;
|
|
|
|
45 [label="45: + \n " ]
|
|
|
|
|
|
|
|
|
|
|
|
45 -> 43 ;
|
|
|
|
45 -> 44 ;
|
|
|
|
44 [label="44: Prune (false branch) \n PRUNE((0 == 0), false); [line 27]\n " shape="invhouse"]
|
|
|
|
|
|
|
|
|
|
|
|
44 -> 41 ;
|
|
|
|
43 [label="43: Prune (true branch) \n PRUNE((0 != 0), true); [line 27]\n APPLY_ABSTRACTION; [line 27]\n " shape="invhouse"]
|
|
|
|
|
|
|
|
|
|
|
|
43 -> 42 ;
|
|
|
|
42 [label="42: + \n " ]
|
|
|
|
|
|
|
|
|
|
|
|
42 -> 47 ;
|
|
|
|
41 [label="41: Return Stmt \n n$23=*&target:class A * [line 28]\n n$22=_fun_A_x(n$23:class A *) virtual [line 28]\n *&return:int =n$22 [line 28]\n REMOVE_TEMPS(n$22,n$23); [line 28]\n NULLIFY(&target,false); [line 28]\n APPLY_ABSTRACTION; [line 28]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
41 -> 40 ;
|
|
|
|
40 [label="40: Exit test1 \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
39 [label="39: Start test1\nFormals: target:class A *\nLocals: \n DECLARE_LOCALS(&return); [line 26]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
39 -> 42 ;
|
|
|
|
38 [label="38: BinaryOperatorStmt: Assign \n n$20=*&self:class A * [line 9]\n n$21=*&x:int [line 9]\n *n$20._x:int =n$21 [line -1]\n REMOVE_TEMPS(n$20,n$21); [line -1]\n NULLIFY(&self,false); [line -1]\n NULLIFY(&x,false); [line -1]\n APPLY_ABSTRACTION; [line -1]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
38 -> 37 ;
|
|
|
|
37 [label="37: Exit A_setX: \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
36 [label="36: Start A_setX:\nFormals: self:class A * x:int \nLocals: \n DECLARE_LOCALS(&return); [line -1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
36 -> 38 ;
|
|
|
|
35 [label="35: Return Stmt \n n$18=*&self:class A * [line -1]\n n$19=*n$18._x:int [line -1]\n *&return:int =n$19 [line -1]\n REMOVE_TEMPS(n$18,n$19); [line -1]\n NULLIFY(&self,false); [line -1]\n APPLY_ABSTRACTION; [line -1]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
35 -> 34 ;
|
|
|
|
34 [label="34: Exit A_x \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
33 [label="33: Start A_x\nFormals: self:class A *\nLocals: \n DECLARE_LOCALS(&return); [line -1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
33 -> 35 ;
|
|
|
|
32 [label="32: Assertion failure \n _fun___infer_fail(\"Assertion_failure\":void ) [line 20]\n APPLY_ABSTRACTION; [line 20]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
32 -> 18 ;
|
|
|
|
31 [label="31: Prune (false branch) \n n$12=*&SIL_temp_conditional___24:int [line 22]\n NULLIFY(&SIL_temp_conditional___24,true); [line 22]\n PRUNE((n$12 == 0), false); [line 22]\n REMOVE_TEMPS(n$12); [line 22]\n " shape="invhouse"]
|
|
|
|
|
|
|
|
|
|
|
|
31 -> 23 ;
|
|
|
|
30 [label="30: Prune (true branch) \n n$12=*&SIL_temp_conditional___24:int [line 22]\n NULLIFY(&SIL_temp_conditional___24,true); [line 22]\n PRUNE((n$12 != 0), true); [line 22]\n REMOVE_TEMPS(n$12); [line 22]\n NULLIFY(&a,false); [line 22]\n " shape="invhouse"]
|
|
|
|
|
|
|
|
|
|
|
|
30 -> 32 ;
|
|
|
|
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 -> 24 ;
|
|
|
|
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 -> 24 ;
|
|
|
|
27 [label="27: Prune (false branch) \n PRUNE(((n$11 != (void *)0) == 0), false); [line 20]\n REMOVE_TEMPS(n$11); [line 20]\n " shape="invhouse"]
|
|
|
|
|
|
|
|
|
|
|
|
27 -> 29 ;
|
|
|
|
26 [label="26: Prune (true branch) \n PRUNE(((n$11 != (void *)0) != 0), true); [line 20]\n REMOVE_TEMPS(n$11); [line 20]\n " shape="invhouse"]
|
|
|
|
|
|
|
|
|
|
|
|
26 -> 28 ;
|
|
|
|
25 [label="25: BinaryOperatorStmt: NE \n n$11=*&a:class A * [line 20]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
25 -> 26 ;
|
|
|
|
25 -> 27 ;
|
|
|
|
24 [label="24: + \n " ]
|
|
|
|
|
|
|
|
|
|
|
|
24 -> 30 ;
|
|
|
|
24 -> 31 ;
|
|
|
|
23 [label="23: + \n " ]
|
|
|
|
|
|
|
|
|
|
|
|
23 -> 21 ;
|
|
|
|
23 -> 22 ;
|
|
|
|
22 [label="22: Prune (false branch) \n PRUNE((0 == 0), false); [line 20]\n " shape="invhouse"]
|
|
|
|
|
|
|
|
|
|
|
|
22 -> 19 ;
|
|
|
|
21 [label="21: Prune (true branch) \n PRUNE((0 != 0), true); [line 20]\n APPLY_ABSTRACTION; [line 20]\n " shape="invhouse"]
|
|
|
|
|
|
|
|
|
|
|
|
21 -> 20 ;
|
|
|
|
20 [label="20: + \n " ]
|
|
|
|
|
|
|
|
|
|
|
|
20 -> 25 ;
|
|
|
|
19 [label="19: Return Stmt \n n$10=*&a:class A * [line 21]\n n$9=_fun_A_x(n$10:class A *) virtual [line 21]\n *&return:int =n$9 [line 21]\n REMOVE_TEMPS(n$9,n$10); [line 21]\n NULLIFY(&a,false); [line 21]\n APPLY_ABSTRACTION; [line 21]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
19 -> 18 ;
|
|
|
|
18 [label="18: Exit A_initWithRequest: \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
17 [label="17: Start A_initWithRequest:\nFormals: self:class A * a:class A *\nLocals: \n DECLARE_LOCALS(&return); [line 19]\n NULLIFY(&self,false); [line 19]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
17 -> 20 ;
|
|
|
|
16 [label="16: Assertion failure \n _fun___infer_fail(\"Assertion_failure\":void ) [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
16 -> 2 ;
|
|
|
|
15 [label="15: Prune (false branch) \n n$3=*&SIL_temp_conditional___8:int [line 17]\n NULLIFY(&SIL_temp_conditional___8,true); [line 17]\n PRUNE((n$3 == 0), false); [line 17]\n REMOVE_TEMPS(n$3); [line 17]\n " shape="invhouse"]
|
|
|
|
|
|
|
|
|
|
|
|
15 -> 7 ;
|
|
|
|
14 [label="14: Prune (true branch) \n n$3=*&SIL_temp_conditional___8:int [line 17]\n NULLIFY(&SIL_temp_conditional___8,true); [line 17]\n PRUNE((n$3 != 0), true); [line 17]\n REMOVE_TEMPS(n$3); [line 17]\n NULLIFY(&target,false); [line 17]\n " shape="invhouse"]
|
|
|
|
|
|
|
|
|
|
|
|
14 -> 16 ;
|
|
|
|
13 [label="13: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___8); [line 17]\n *&SIL_temp_conditional___8:int =1 [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
13 -> 8 ;
|
|
|
|
12 [label="12: ConditinalStmt Branch \n DECLARE_LOCALS(&SIL_temp_conditional___8); [line 17]\n *&SIL_temp_conditional___8:int =0 [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
12 -> 8 ;
|
|
|
|
11 [label="11: Prune (false branch) \n PRUNE(((n$2 != (void *)0) == 0), false); [line 15]\n REMOVE_TEMPS(n$2); [line 15]\n " shape="invhouse"]
|
|
|
|
|
|
|
|
|
|
|
|
11 -> 13 ;
|
|
|
|
10 [label="10: Prune (true branch) \n PRUNE(((n$2 != (void *)0) != 0), true); [line 15]\n REMOVE_TEMPS(n$2); [line 15]\n " shape="invhouse"]
|
|
|
|
|
|
|
|
|
|
|
|
10 -> 12 ;
|
|
|
|
9 [label="9: BinaryOperatorStmt: NE \n n$2=*&target:class A * [line 15]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
9 -> 10 ;
|
|
|
|
9 -> 11 ;
|
|
|
|
8 [label="8: + \n " ]
|
|
|
|
|
|
|
|
|
|
|
|
8 -> 14 ;
|
|
|
|
8 -> 15 ;
|
|
|
|
7 [label="7: + \n " ]
|
|
|
|
|
|
|
|
|
|
|
|
7 -> 5 ;
|
|
|
|
7 -> 6 ;
|
|
|
|
6 [label="6: Prune (false branch) \n PRUNE((0 == 0), false); [line 15]\n " shape="invhouse"]
|
|
|
|
|
|
|
|
|
|
|
|
6 -> 3 ;
|
|
|
|
5 [label="5: Prune (true branch) \n PRUNE((0 != 0), true); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="invhouse"]
|
|
|
|
|
|
|
|
|
|
|
|
5 -> 4 ;
|
|
|
|
4 [label="4: + \n " ]
|
|
|
|
|
|
|
|
|
|
|
|
4 -> 9 ;
|
|
|
|
3 [label="3: Return Stmt \n n$1=*&target:class A * [line 16]\n n$0=_fun_A_x(n$1:class A *) virtual [line 16]\n *&return:int =n$0 [line 16]\n REMOVE_TEMPS(n$0,n$1); [line 16]\n NULLIFY(&target,false); [line 16]\n APPLY_ABSTRACTION; [line 16]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
3 -> 2 ;
|
|
|
|
2 [label="2: Exit A_addTarget: \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
1 [label="1: Start A_addTarget:\nFormals: self:class A * target:class A *\nLocals: \n DECLARE_LOCALS(&return); [line 14]\n NULLIFY(&self,false); [line 14]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
1 -> 4 ;
|
|
|
|
}
|