|
|
|
digraph iCFG {
|
|
|
|
36 [label="36: DeclStmt \n n$37=_fun___objc_alloc_no_fail(sizeof(class A ):class A *) [line 35]\n n$35=_fun_A_init(n$37:class A *) virtual [line 35]\n *&a:class A *=n$35 [line 35]\n REMOVE_TEMPS(n$35,n$37); [line 35]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
36 -> 35 ;
|
|
|
|
35 [label="35: Message Call: setLast_name: \n n$33=*&a:class A * [line 36]\n n$34=*&a2:class A * [line 36]\n _fun_A_setLast_name:(n$33:class A *,n$34:class A *) virtual [line 36]\n REMOVE_TEMPS(n$33,n$34); [line 36]\n NULLIFY(&a2,false); [line 36]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
35 -> 34 ;
|
|
|
|
34 [label="34: Message Call: release \n n$32=*&a:class A * [line 37]\n _fun___objc_release(n$32:class A *) [line 37]\n REMOVE_TEMPS(n$32); [line 37]\n NULLIFY(&a,false); [line 37]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
34 -> 33 ;
|
|
|
|
33 [label="33: Return Stmt \n *&return:int =0 [line 38]\n APPLY_ABSTRACTION; [line 38]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
33 -> 32 ;
|
|
|
|
32 [label="32: Exit test \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
31 [label="31: Start test\nFormals: a2:class A *\nLocals: a:class A * \n DECLARE_LOCALS(&return,&a); [line 34]\n NULLIFY(&a,false); [line 34]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
31 -> 36 ;
|
|
|
|
30 [label="30: BinaryOperatorStmt: Assign \n n$30=*&self:class A * [line 14]\n n$31=*&last_name:class A * [line 14]\n *n$30._last_name:class A *=n$31 [line -1]\n REMOVE_TEMPS(n$30,n$31); [line -1]\n NULLIFY(&last_name,false); [line -1]\n NULLIFY(&self,false); [line -1]\n APPLY_ABSTRACTION; [line -1]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
30 -> 29 ;
|
|
|
|
29 [label="29: Exit A_setLast_name: \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
28 [label="28: Start A_setLast_name:\nFormals: self:class A * last_name:class A *\nLocals: \n DECLARE_LOCALS(&return); [line -1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
28 -> 30 ;
|
|
|
|
27 [label="27: Return Stmt \n n$28=*&self:class A * [line -1]\n n$29=*n$28._last_name:class A * [line -1]\n *&return:class A *=n$29 [line -1]\n REMOVE_TEMPS(n$28,n$29); [line -1]\n NULLIFY(&self,false); [line -1]\n APPLY_ABSTRACTION; [line -1]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
27 -> 26 ;
|
|
|
|
26 [label="26: Exit A_last_name \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
25 [label="25: Start A_last_name\nFormals: self:class A *\nLocals: \n DECLARE_LOCALS(&return); [line -1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
25 -> 27 ;
|
|
|
|
24 [label="24: Message Call: retain \n n$27=*&name:class A * [line -1]\n n$26=_fun___objc_retain(n$27:class A *) [line -1]\n REMOVE_TEMPS(n$26,n$27); [line -1]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
24 -> 23 ;
|
|
|
|
23 [label="23: Message Call: release \n n$24=*&self:class A * [line 12]\n n$25=*n$24._name:class A * [line -1]\n n$23=_fun___objc_release(n$25:class A *) [line -1]\n REMOVE_TEMPS(n$23,n$24,n$25); [line -1]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
23 -> 22 ;
|
|
|
|
22 [label="22: BinaryOperatorStmt: Assign \n n$21=*&self:class A * [line 12]\n n$22=*&name:class A * [line 12]\n *n$21._name:class A *=n$22 [line -1]\n REMOVE_TEMPS(n$21,n$22); [line -1]\n NULLIFY(&name,false); [line -1]\n NULLIFY(&self,false); [line -1]\n APPLY_ABSTRACTION; [line -1]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
22 -> 21 ;
|
|
|
|
21 [label="21: Exit A_setName: \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
20 [label="20: Start A_setName:\nFormals: self:class A * name:class A *\nLocals: \n DECLARE_LOCALS(&return); [line -1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
20 -> 24 ;
|
|
|
|
19 [label="19: Return Stmt \n n$19=*&self:class A * [line -1]\n n$20=*n$19._name:class A * [line -1]\n *&return:class A *=n$20 [line -1]\n REMOVE_TEMPS(n$19,n$20); [line -1]\n NULLIFY(&self,false); [line -1]\n APPLY_ABSTRACTION; [line -1]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
19 -> 18 ;
|
|
|
|
18 [label="18: Exit A_name \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
17 [label="17: Start A_name\nFormals: self:class A *\nLocals: \n DECLARE_LOCALS(&return); [line -1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
17 -> 19 ;
|
|
|
|
16 [label="16: BinaryOperatorStmt: Assign \n n$16=*&self:class A * [line 10]\n n$18=*&child:class A * [line -1]\n n$17=_fun_A_copy(n$18:class A *) virtual [line -1]\n *n$16._child:class A *=n$17 [line -1]\n REMOVE_TEMPS(n$16,n$17,n$18); [line -1]\n NULLIFY(&child,false); [line -1]\n NULLIFY(&self,false); [line -1]\n APPLY_ABSTRACTION; [line -1]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
16 -> 15 ;
|
|
|
|
15 [label="15: Exit A_setChild: \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
14 [label="14: Start A_setChild:\nFormals: self:class A * child:class A *\nLocals: \n DECLARE_LOCALS(&return); [line -1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
14 -> 16 ;
|
|
|
|
13 [label="13: Return Stmt \n n$14=*&self:class A * [line -1]\n n$15=*n$14._child:class A * [line -1]\n *&return:class A *=n$15 [line -1]\n REMOVE_TEMPS(n$14,n$15); [line -1]\n NULLIFY(&self,false); [line -1]\n APPLY_ABSTRACTION; [line -1]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
13 -> 12 ;
|
|
|
|
12 [label="12: Exit A_child \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
11 [label="11: Start A_child\nFormals: self:class A *\nLocals: \n DECLARE_LOCALS(&return); [line -1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
11 -> 13 ;
|
|
|
|
10 [label="10: DeclStmt \n n$13=_fun___objc_alloc_no_fail(sizeof(class A ):class A *) [line 23]\n n$11=_fun_A_init(n$13:class A *) virtual [line 23]\n *&other:class A *=n$11 [line 23]\n REMOVE_TEMPS(n$11,n$13); [line 23]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
10 -> 5 ;
|
|
|
|
10 -> 6 ;
|
|
|
|
9 [label="9: BinaryOperatorStmt: Assign \n n$8=*&other:class A * [line 25]\n n$9=*&self:class A * [line 25]\n n$10=*n$9._name:class A * [line 25]\n *n$8._name:class A *=n$10 [line 25]\n REMOVE_TEMPS(n$8,n$9,n$10); [line 25]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
9 -> 8 ;
|
|
|
|
8 [label="8: BinaryOperatorStmt: Assign \n n$5=*&other:class A * [line 26]\n n$6=*&self:class A * [line 26]\n n$7=*n$6._last_name:class A * [line 26]\n *n$5._last_name:class A *=n$7 [line 26]\n REMOVE_TEMPS(n$5,n$6,n$7); [line 26]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
8 -> 7 ;
|
|
|
|
7 [label="7: BinaryOperatorStmt: Assign \n n$2=*&other:class A * [line 27]\n n$3=*&self:class A * [line 27]\n n$4=*n$3._child:class A * [line 27]\n *n$2._child:class A *=n$4 [line 27]\n REMOVE_TEMPS(n$2,n$3,n$4); [line 27]\n NULLIFY(&self,false); [line 27]\n APPLY_ABSTRACTION; [line 27]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
7 -> 4 ;
|
|
|
|
6 [label="6: Prune (false branch) \n n$1=*&other:class A * [line 24]\n PRUNE((n$1 == 0), false); [line 24]\n REMOVE_TEMPS(n$1); [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="invhouse"]
|
|
|
|
|
|
|
|
|
|
|
|
6 -> 4 ;
|
|
|
|
5 [label="5: Prune (true branch) \n n$1=*&other:class A * [line 24]\n PRUNE((n$1 != 0), true); [line 24]\n REMOVE_TEMPS(n$1); [line 24]\n " shape="invhouse"]
|
|
|
|
|
|
|
|
|
|
|
|
5 -> 9 ;
|
|
|
|
4 [label="4: + \n " ]
|
|
|
|
|
|
|
|
|
|
|
|
4 -> 3 ;
|
|
|
|
3 [label="3: Return Stmt \n NULLIFY(&self,false); [line 29]\n n$0=*&other:class A * [line 29]\n *&return:class A *=n$0 [line 29]\n REMOVE_TEMPS(n$0); [line 29]\n NULLIFY(&other,false); [line 29]\n APPLY_ABSTRACTION; [line 29]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
3 -> 2 ;
|
|
|
|
2 [label="2: Exit A_copy \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
1 [label="1: Start A_copy\nFormals: self:class A *\nLocals: other:class A * \n DECLARE_LOCALS(&return,&other); [line 22]\n NULLIFY(&other,false); [line 22]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
1 -> 10 ;
|
|
|
|
}
|