|
|
|
digraph iCFG {
|
|
|
|
51 [label="51: Return Stmt \n *&return:int =0 [line 98]\n APPLY_ABSTRACTION; [line 98]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
51 -> 45 ;
|
|
|
|
50 [label="50: Return Stmt \n *&return:int =1 [line 96]\n APPLY_ABSTRACTION; [line 96]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
50 -> 45 ;
|
|
|
|
49 [label="49: Prune (false branch) \n PRUNE(((sizeof(class A ) != n$15) == 0), false); [line 95]\n REMOVE_TEMPS(n$15); [line 95]\n " shape="invhouse"]
|
|
|
|
|
|
|
|
|
|
|
|
49 -> 51 ;
|
|
|
|
48 [label="48: Prune (true branch) \n PRUNE(((sizeof(class A ) != n$15) != 0), true); [line 95]\n REMOVE_TEMPS(n$15); [line 95]\n " shape="invhouse"]
|
|
|
|
|
|
|
|
|
|
|
|
48 -> 50 ;
|
|
|
|
47 [label="47: BinaryOperatorStmt: NE \n n$15=*&c:struct objc_class * [line 95]\n NULLIFY(&c,false); [line 95]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
47 -> 48 ;
|
|
|
|
47 -> 49 ;
|
|
|
|
46 [label="46: + \n NULLIFY(&c,false); [line 95]\n " ]
|
|
|
|
|
|
|
|
|
|
|
|
46 -> 45 ;
|
|
|
|
45 [label="45: Exit A_used_in_binary_op: \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
44 [label="44: Start A_used_in_binary_op:\nFormals: c:struct objc_class *\nLocals: \n DECLARE_LOCALS(&return); [line 94]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
44 -> 47 ;
|
|
|
|
43 [label="43: Return Stmt \n n$14=_fun_NSStringFromClass(sizeof(class A ):unsigned long ) [line 91]\n *&return:class NSString *=n$14 [line 91]\n REMOVE_TEMPS(n$14); [line 91]\n APPLY_ABSTRACTION; [line 91]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
43 -> 42 ;
|
|
|
|
42 [label="42: Exit A_loggerName \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
41 [label="41: Start A_loggerName\nFormals: self:class A *\nLocals: \n DECLARE_LOCALS(&return); [line 90]\n NULLIFY(&self,false); [line 90]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
41 -> 43 ;
|
|
|
|
40 [label="40: Message Call: init \n n$11=*&self:class A * [line 87]\n n$12=_fun_NSObject_init(n$11:class A *) [line 87]\n REMOVE_TEMPS(n$11,n$12); [line 87]\n NULLIFY(&self,false); [line 87]\n APPLY_ABSTRACTION; [line 87]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
40 -> 39 ;
|
|
|
|
39 [label="39: Exit A_init \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
38 [label="38: Start A_init\nFormals: self:class A *\nLocals: \n DECLARE_LOCALS(&return); [line 86]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
38 -> 40 ;
|
|
|
|
37 [label="37: Message Call: test_class \n _fun_C_test_class() [line 83]\n APPLY_ABSTRACTION; [line 83]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
37 -> 36 ;
|
|
|
|
36 [label="36: Exit A_calling_super \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
35 [label="35: Start A_calling_super\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 82]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
35 -> 37 ;
|
|
|
|
34 [label="34: Return Stmt \n n$8=*&object:class B * [line 79]\n n$10=_fun_B_isC:(n$8:class B *,sizeof(class A ):unsigned long ) virtual [line 79]\n *&return:_Bool =n$10 [line 79]\n REMOVE_TEMPS(n$8,n$10); [line 79]\n NULLIFY(&object,false); [line 79]\n APPLY_ABSTRACTION; [line 79]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
34 -> 33 ;
|
|
|
|
33 [label="33: Exit A_use_class_in_other_ways: \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
32 [label="32: Start A_use_class_in_other_ways:\nFormals: self:class A * object:class B *\nLocals: \n DECLARE_LOCALS(&return); [line 78]\n NULLIFY(&self,false); [line 78]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
32 -> 34 ;
|
|
|
|
31 [label="31: DeclStmt \n n$6=_fun___objc_alloc_no_fail(sizeof(class B ):unsigned long ) [line 74]\n n$7=_fun_NSObject_init(n$6:class B *) virtual [line 74]\n *&b:class B *=n$7 [line 74]\n REMOVE_TEMPS(n$6,n$7); [line 74]\n NULLIFY(&b,false); [line 74]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
31 -> 30 ;
|
|
|
|
30 [label="30: Message Call: b_m \n _fun_B_b_m() [line 75]\n APPLY_ABSTRACTION; [line 75]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
30 -> 29 ;
|
|
|
|
29 [label="29: Exit A_t \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
28 [label="28: Start A_t\nFormals: self:class A *\nLocals: b:class B * \n DECLARE_LOCALS(&return,&b); [line 73]\n NULLIFY(&b,false); [line 73]\n NULLIFY(&self,false); [line 73]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
28 -> 31 ;
|
|
|
|
27 [label="27: Message Call: test_class \n _fun_A_test_class() [line 70]\n APPLY_ABSTRACTION; [line 70]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
27 -> 26 ;
|
|
|
|
26 [label="26: Exit A_call_class_instance_with_class_name \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
25 [label="25: Start A_call_class_instance_with_class_name\nFormals: self:class A *\nLocals: \n DECLARE_LOCALS(&return); [line 69]\n NULLIFY(&self,false); [line 69]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
25 -> 27 ;
|
|
|
|
24 [label="24: Message Call: test_class \n _fun_A_test_class() [line 66]\n APPLY_ABSTRACTION; [line 66]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
24 -> 23 ;
|
|
|
|
23 [label="23: Exit A_call_class_instance \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
22 [label="22: Start A_call_class_instance\nFormals: self:class A *\nLocals: \n DECLARE_LOCALS(&return); [line 65]\n NULLIFY(&self,false); [line 65]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
22 -> 24 ;
|
|
|
|
21 [label="21: Call alloc \n n$3=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 62]\n REMOVE_TEMPS(n$3); [line 62]\n APPLY_ABSTRACTION; [line 62]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
21 -> 20 ;
|
|
|
|
20 [label="20: Exit A_call_alloc_instance \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
19 [label="19: Start A_call_alloc_instance\nFormals: self:class A *\nLocals: \n DECLARE_LOCALS(&return); [line 61]\n NULLIFY(&self,false); [line 61]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
19 -> 21 ;
|
|
|
|
18 [label="18: Call alloc \n n$1=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 58]\n REMOVE_TEMPS(n$1); [line 58]\n APPLY_ABSTRACTION; [line 58]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
18 -> 17 ;
|
|
|
|
17 [label="17: Exit A_call_alloc_class \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
16 [label="16: Start A_call_alloc_class\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 57]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
16 -> 18 ;
|
|
|
|
15 [label="15: Message Call: test_class \n _fun_A_test_class() [line 54]\n APPLY_ABSTRACTION; [line 54]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
15 -> 14 ;
|
|
|
|
14 [label="14: Exit A_call_test_class \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
13 [label="13: Start A_call_test_class\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 53]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
13 -> 15 ;
|
|
|
|
12 [label="12: Exit A_test_class \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
11 [label="11: Start A_test_class\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 50]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
11 -> 12 ;
|
|
|
|
10 [label="10: Message Call: test \n n$0=*&self:class A * [line 47]\n _fun_A_test(n$0:class A *) virtual [line 47]\n REMOVE_TEMPS(n$0); [line 47]\n NULLIFY(&self,false); [line 47]\n APPLY_ABSTRACTION; [line 47]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
10 -> 9 ;
|
|
|
|
9 [label="9: Exit A_call_test \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
8 [label="8: Start A_call_test\nFormals: self:class A *\nLocals: \n DECLARE_LOCALS(&return); [line 46]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
8 -> 10 ;
|
|
|
|
7 [label="7: Exit A_test \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
6 [label="6: Start A_test\nFormals: self:class A *\nLocals: \n DECLARE_LOCALS(&return); [line 43]\n NULLIFY(&self,false); [line 43]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
6 -> 7 ;
|
|
|
|
5 [label="5: Return Stmt \n *&return:_Bool =1 [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
5 -> 4 ;
|
|
|
|
4 [label="4: Exit B_isC: \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
3 [label="3: Start B_isC:\nFormals: self:class B * aClass:struct objc_class *\nLocals: \n DECLARE_LOCALS(&return); [line 23]\n NULLIFY(&aClass,false); [line 23]\n NULLIFY(&self,false); [line 23]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
3 -> 5 ;
|
|
|
|
2 [label="2: Exit B_b_m \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
1 [label="1: Start B_b_m\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 20]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
1 -> 2 ;
|
|
|
|
}
|