|
|
|
/* @generated */
|
|
|
|
digraph cfg {
|
|
|
|
"DispatchMain.f6461dbdaeaf9a114cbe40f5f72fbb3f_1" [label="1: Start DispatchMain\nFormals: \nLocals: p:int* b:DispatchA* \n DECLARE_LOCALS(&return,&p,&b); [line 84, column 1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"DispatchMain.f6461dbdaeaf9a114cbe40f5f72fbb3f_1" -> "DispatchMain.f6461dbdaeaf9a114cbe40f5f72fbb3f_11" ;
|
|
|
|
"DispatchMain.f6461dbdaeaf9a114cbe40f5f72fbb3f_2" [label="2: Exit DispatchMain \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"DispatchMain.f6461dbdaeaf9a114cbe40f5f72fbb3f_3" [label="3: + \n " ]
|
|
|
|
|
|
|
|
|
|
|
|
"DispatchMain.f6461dbdaeaf9a114cbe40f5f72fbb3f_3" -> "DispatchMain.f6461dbdaeaf9a114cbe40f5f72fbb3f_4" ;
|
|
|
|
"DispatchMain.f6461dbdaeaf9a114cbe40f5f72fbb3f_4" [label="4: between_join_and_exit \n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"DispatchMain.f6461dbdaeaf9a114cbe40f5f72fbb3f_4" -> "DispatchMain.f6461dbdaeaf9a114cbe40f5f72fbb3f_2" ;
|
|
|
|
"DispatchMain.f6461dbdaeaf9a114cbe40f5f72fbb3f_5" [label="5: BinaryOperatorStmt: EQ \n n$0=*&b:DispatchA* [line 87, column 7]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"DispatchMain.f6461dbdaeaf9a114cbe40f5f72fbb3f_5" -> "DispatchMain.f6461dbdaeaf9a114cbe40f5f72fbb3f_6" ;
|
|
|
|
"DispatchMain.f6461dbdaeaf9a114cbe40f5f72fbb3f_5" -> "DispatchMain.f6461dbdaeaf9a114cbe40f5f72fbb3f_7" ;
|
|
|
|
"DispatchMain.f6461dbdaeaf9a114cbe40f5f72fbb3f_6" [label="6: Prune (true branch, if) \n PRUNE((n$0 == null), true); [line 87, column 7]\n " shape="invhouse"]
|
|
|
|
|
|
|
|
|
|
|
|
"DispatchMain.f6461dbdaeaf9a114cbe40f5f72fbb3f_6" -> "DispatchMain.f6461dbdaeaf9a114cbe40f5f72fbb3f_8" ;
|
|
|
|
"DispatchMain.f6461dbdaeaf9a114cbe40f5f72fbb3f_7" [label="7: Prune (false branch, if) \n PRUNE(!(n$0 == null), false); [line 87, column 7]\n " shape="invhouse"]
|
|
|
|
|
|
|
|
|
|
|
|
"DispatchMain.f6461dbdaeaf9a114cbe40f5f72fbb3f_7" -> "DispatchMain.f6461dbdaeaf9a114cbe40f5f72fbb3f_9" ;
|
|
|
|
"DispatchMain.f6461dbdaeaf9a114cbe40f5f72fbb3f_8" [label="8: Return Stmt \n n$1=*&p:int* [line 88, column 13]\n n$2=*n$1:int [line 88, column 12]\n *&return:int=n$2 [line 88, column 5]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"DispatchMain.f6461dbdaeaf9a114cbe40f5f72fbb3f_8" -> "DispatchMain.f6461dbdaeaf9a114cbe40f5f72fbb3f_2" ;
|
|
|
|
"DispatchMain.f6461dbdaeaf9a114cbe40f5f72fbb3f_9" [label="9: Return Stmt \n *&return:int=0 [line 90, column 5]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"DispatchMain.f6461dbdaeaf9a114cbe40f5f72fbb3f_9" -> "DispatchMain.f6461dbdaeaf9a114cbe40f5f72fbb3f_2" ;
|
|
|
|
"DispatchMain.f6461dbdaeaf9a114cbe40f5f72fbb3f_10" [label="10: DeclStmt \n *&p:int*=null [line 86, column 3]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"DispatchMain.f6461dbdaeaf9a114cbe40f5f72fbb3f_10" -> "DispatchMain.f6461dbdaeaf9a114cbe40f5f72fbb3f_5" ;
|
[clang] enforce that `instruction` always returns one SIL expression
Summary:
Previously, the type of `trans_result` contained a list of SIL expressions.
However, most of the time we expect to get exactly one, and getting a different
number is a soft(!) error, usually returning `-1`.
This splits `trans_result` into `control`, which contains the information
needed for temporary computation (hence when we don't necessarily know the
return value yet), and a new version of `trans_result` that includes `control`,
the previous `exps` list but replaced by a single `return` expression instead,
and a couple other values that made sense to move out of `control`. This allows
some flexibility in the frontend compared to enforcing exactly one return
expression always: if they are not known yet we stick to `control` instead (see
eg `compute_controls_to_parent`).
This creates more garbage temporary identifiers, however they do not show up in
the final cfg. Instead, we see that temporary IDs are now often not
consecutive...
The most painful complication is in the treatment of `DeclRefExpr`, which was
actually returning *two* expressions: the method name and the `this` object.
Now the method name is a separate (optional) field in `trans_result`.
Reviewed By: mbouaziz
Differential Revision: D7881088
fbshipit-source-id: 41ad3b5
7 years ago
|
|
|
"DispatchMain.f6461dbdaeaf9a114cbe40f5f72fbb3f_11" [label="11: DeclStmt \n n$4=_fun_DispatchA_sharedInstance() [line 85, column 18]\n *&b:DispatchA*=n$4 [line 85, column 3]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"DispatchMain.f6461dbdaeaf9a114cbe40f5f72fbb3f_11" -> "DispatchMain.f6461dbdaeaf9a114cbe40f5f72fbb3f_10" ;
|
|
|
|
"objc_blockDispatchA_block_attribute_2.871f06a0b12b5767153a5d30f3798261_1" [label="1: Start objc_blockDispatchA_block_attribute_2\nFormals: a:DispatchA*\nLocals: \nCaptured: a:DispatchA* \n DECLARE_LOCALS(&return); [line 39, column 24]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"objc_blockDispatchA_block_attribute_2.871f06a0b12b5767153a5d30f3798261_1" -> "objc_blockDispatchA_block_attribute_2.871f06a0b12b5767153a5d30f3798261_3" ;
|
|
|
|
"objc_blockDispatchA_block_attribute_2.871f06a0b12b5767153a5d30f3798261_2" [label="2: Exit objc_blockDispatchA_block_attribute_2 \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"objc_blockDispatchA_block_attribute_2.871f06a0b12b5767153a5d30f3798261_3" [label="3: BinaryOperatorStmt: Assign \n n$8=*&a:DispatchA* [line 40, column 5]\n *n$8._x:int=10 [line 40, column 5]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"objc_blockDispatchA_block_attribute_2.871f06a0b12b5767153a5d30f3798261_3" -> "objc_blockDispatchA_block_attribute_2.871f06a0b12b5767153a5d30f3798261_2" ;
|
|
|
|
"objc_blockDispatchA_dispatch_a_block_variable_4.2eedc45fca2c35e6e8c11937ba7a2df8_1" [label="1: Start objc_blockDispatchA_dispatch_a_block_variable_4\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 56, column 38]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"objc_blockDispatchA_dispatch_a_block_variable_4.2eedc45fca2c35e6e8c11937ba7a2df8_1" -> "objc_blockDispatchA_dispatch_a_block_variable_4.2eedc45fca2c35e6e8c11937ba7a2df8_3" ;
|
|
|
|
"objc_blockDispatchA_dispatch_a_block_variable_4.2eedc45fca2c35e6e8c11937ba7a2df8_2" [label="2: Exit objc_blockDispatchA_dispatch_a_block_variable_4 \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"objc_blockDispatchA_dispatch_a_block_variable_4.2eedc45fca2c35e6e8c11937ba7a2df8_3" [label="3: BinaryOperatorStmt: Assign \n n$20=_fun___objc_alloc_no_fail(sizeof(t=DispatchA):unsigned long) [line 57, column 25]\n n$21=_fun_NSObject_init(n$20:DispatchA*) virtual [line 57, column 25]\n *&#GB<codetoanalyze/objc/shared/block/dispatch.m>$DispatchA_dispatch_a_block_variable.static_storage__:objc_object*=n$21 [line 57, column 5]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"objc_blockDispatchA_dispatch_a_block_variable_4.2eedc45fca2c35e6e8c11937ba7a2df8_3" -> "objc_blockDispatchA_dispatch_a_block_variable_4.2eedc45fca2c35e6e8c11937ba7a2df8_2" ;
|
|
|
|
"objc_blockDispatchA_dispatch_a_block_variable_from_macro_5.e4f37df69df9d95138cb008e85eedab8_1" [label="1: Start objc_blockDispatchA_dispatch_a_block_variable_from_macro_5\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 67, column 40]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"objc_blockDispatchA_dispatch_a_block_variable_from_macro_5.e4f37df69df9d95138cb008e85eedab8_1" -> "objc_blockDispatchA_dispatch_a_block_variable_from_macro_5.e4f37df69df9d95138cb008e85eedab8_3" ;
|
|
|
|
"objc_blockDispatchA_dispatch_a_block_variable_from_macro_5.e4f37df69df9d95138cb008e85eedab8_2" [label="2: Exit objc_blockDispatchA_dispatch_a_block_variable_from_macro_5 \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"objc_blockDispatchA_dispatch_a_block_variable_from_macro_5.e4f37df69df9d95138cb008e85eedab8_3" [label="3: BinaryOperatorStmt: Assign \n n$25=_fun___objc_alloc_no_fail(sizeof(t=DispatchA):unsigned long) [line 68, column 27]\n n$26=_fun_NSObject_init(n$25:DispatchA*) virtual [line 68, column 27]\n *&#GB<codetoanalyze/objc/shared/block/dispatch.m>$DispatchA_dispatch_a_block_variable_from_macro.static_storage__:objc_object*=n$26 [line 68, column 7]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"objc_blockDispatchA_dispatch_a_block_variable_from_macro_5.e4f37df69df9d95138cb008e85eedab8_3" -> "objc_blockDispatchA_dispatch_a_block_variable_from_macro_5.e4f37df69df9d95138cb008e85eedab8_2" ;
|
|
|
|
"objc_blockDispatchA_sharedInstance_1.0b8803e75b6a82e1a4530bcb953490e2_1" [label="1: Start objc_blockDispatchA_sharedInstance_1\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 30, column 24]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"objc_blockDispatchA_sharedInstance_1.0b8803e75b6a82e1a4530bcb953490e2_1" -> "objc_blockDispatchA_sharedInstance_1.0b8803e75b6a82e1a4530bcb953490e2_3" ;
|
|
|
|
"objc_blockDispatchA_sharedInstance_1.0b8803e75b6a82e1a4530bcb953490e2_2" [label="2: Exit objc_blockDispatchA_sharedInstance_1 \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"objc_blockDispatchA_sharedInstance_1.0b8803e75b6a82e1a4530bcb953490e2_3" [label="3: BinaryOperatorStmt: Assign \n n$2=_fun___objc_alloc_no_fail(sizeof(t=DispatchA):unsigned long) [line 31, column 23]\n n$3=_fun_NSBundleResourceRequest_init(n$2:DispatchA*) virtual [line 31, column 22]\n *&#GB<codetoanalyze/objc/shared/block/dispatch.m>$DispatchA_sharedInstance.sharedInstance:objc_object*=n$3 [line 31, column 5]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"objc_blockDispatchA_sharedInstance_1.0b8803e75b6a82e1a4530bcb953490e2_3" -> "objc_blockDispatchA_sharedInstance_1.0b8803e75b6a82e1a4530bcb953490e2_2" ;
|
|
|
|
"objc_blockDispatchA_trans_3.80c09fe69dc0d5591de63a0c525de29b_1" [label="1: Start objc_blockDispatchA_trans_3\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 47, column 27]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"objc_blockDispatchA_trans_3.80c09fe69dc0d5591de63a0c525de29b_1" -> "objc_blockDispatchA_trans_3.80c09fe69dc0d5591de63a0c525de29b_3" ;
|
|
|
|
"objc_blockDispatchA_trans_3.80c09fe69dc0d5591de63a0c525de29b_2" [label="2: Exit objc_blockDispatchA_trans_3 \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"objc_blockDispatchA_trans_3.80c09fe69dc0d5591de63a0c525de29b_3" [label="3: BinaryOperatorStmt: Assign \n n$15=_fun___objc_alloc_no_fail(sizeof(t=DispatchA):unsigned long) [line 48, column 23]\n n$16=_fun_NSBundleResourceRequest_init(n$15:DispatchA*) virtual [line 48, column 22]\n *&#GB<codetoanalyze/objc/shared/block/dispatch.m>$DispatchA_trans.sharedInstance:objc_object*=n$16 [line 48, column 5]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"objc_blockDispatchA_trans_3.80c09fe69dc0d5591de63a0c525de29b_3" -> "objc_blockDispatchA_trans_3.80c09fe69dc0d5591de63a0c525de29b_2" ;
|
|
|
|
"block_attribute#DispatchA#class.df997e345dbf19ec3438c667c942e14a_1" [label="1: Start DispatchA_block_attribute\nFormals: \nLocals: a:DispatchA*(__block) \n DECLARE_LOCALS(&return,&a); [line 36, column 1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"block_attribute#DispatchA#class.df997e345dbf19ec3438c667c942e14a_1" -> "block_attribute#DispatchA#class.df997e345dbf19ec3438c667c942e14a_5" ;
|
|
|
|
"block_attribute#DispatchA#class.df997e345dbf19ec3438c667c942e14a_2" [label="2: Exit DispatchA_block_attribute \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"block_attribute#DispatchA#class.df997e345dbf19ec3438c667c942e14a_3" [label="3: Return Stmt \n n$5=*&a:DispatchA* [line 42, column 10]\n n$6=*n$5._x:int [line 42, column 10]\n *&return:int=n$6 [line 42, column 3]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"block_attribute#DispatchA#class.df997e345dbf19ec3438c667c942e14a_3" -> "block_attribute#DispatchA#class.df997e345dbf19ec3438c667c942e14a_2" ;
|
|
|
|
"block_attribute#DispatchA#class.df997e345dbf19ec3438c667c942e14a_4" [label="4: Call _fun__dispatch_once \n n$7=*&a:DispatchA* [line 39, column 24]\n n$9=_fun__dispatch_once(&#GB<codetoanalyze/objc/shared/block/dispatch.m>$DispatchA_block_attribute.once:long*,(_fun_objc_blockDispatchA_block_attribute_2,(n$7 &a:DispatchA*)):_fn_(*)) block_params [line 39, column 3]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"block_attribute#DispatchA#class.df997e345dbf19ec3438c667c942e14a_4" -> "block_attribute#DispatchA#class.df997e345dbf19ec3438c667c942e14a_3" ;
|
|
|
|
"block_attribute#DispatchA#class.df997e345dbf19ec3438c667c942e14a_5" [label="5: DeclStmt \n n$10=_fun___objc_alloc_no_fail(sizeof(t=DispatchA):unsigned long) [line 38, column 26]\n n$11=_fun_NSObject_init(n$10:DispatchA*) virtual [line 38, column 26]\n *&a:DispatchA*=n$11 [line 38, column 3]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"block_attribute#DispatchA#class.df997e345dbf19ec3438c667c942e14a_5" -> "block_attribute#DispatchA#class.df997e345dbf19ec3438c667c942e14a_4" ;
|
|
|
|
"dispatch_a_block_variable#DispatchA#class.3cc12dd22127281b8293b7c046d21bb2_1" [label="1: Start DispatchA_dispatch_a_block_variable\nFormals: \nLocals: initialization_block__:_fn_(*) \n DECLARE_LOCALS(&return,&initialization_block__); [line 54, column 1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"dispatch_a_block_variable#DispatchA#class.3cc12dd22127281b8293b7c046d21bb2_1" -> "dispatch_a_block_variable#DispatchA#class.3cc12dd22127281b8293b7c046d21bb2_5" ;
|
|
|
|
"dispatch_a_block_variable#DispatchA#class.3cc12dd22127281b8293b7c046d21bb2_2" [label="2: Exit DispatchA_dispatch_a_block_variable \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"dispatch_a_block_variable#DispatchA#class.3cc12dd22127281b8293b7c046d21bb2_3" [label="3: Return Stmt \n n$17=*&#GB<codetoanalyze/objc/shared/block/dispatch.m>$DispatchA_dispatch_a_block_variable.static_storage__:objc_object* [line 61, column 10]\n *&return:objc_object*=n$17 [line 61, column 3]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"dispatch_a_block_variable#DispatchA#class.3cc12dd22127281b8293b7c046d21bb2_3" -> "dispatch_a_block_variable#DispatchA#class.3cc12dd22127281b8293b7c046d21bb2_2" ;
|
|
|
|
"dispatch_a_block_variable#DispatchA#class.3cc12dd22127281b8293b7c046d21bb2_4" [label="4: Call _fun__dispatch_once \n n$18=*&initialization_block__:_fn_(*) [line 60, column 32]\n n$19=_fun__dispatch_once(&#GB<codetoanalyze/objc/shared/block/dispatch.m>$DispatchA_dispatch_a_block_variable.once_token__:long*,n$18:_fn_(*)) [line 60, column 3]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"dispatch_a_block_variable#DispatchA#class.3cc12dd22127281b8293b7c046d21bb2_4" -> "dispatch_a_block_variable#DispatchA#class.3cc12dd22127281b8293b7c046d21bb2_3" ;
|
|
|
|
"dispatch_a_block_variable#DispatchA#class.3cc12dd22127281b8293b7c046d21bb2_5" [label="5: DeclStmt \n *&initialization_block__:_fn_(*)=(_fun_objc_blockDispatchA_dispatch_a_block_variable_4) [line 56, column 3]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"dispatch_a_block_variable#DispatchA#class.3cc12dd22127281b8293b7c046d21bb2_5" -> "dispatch_a_block_variable#DispatchA#class.3cc12dd22127281b8293b7c046d21bb2_4" ;
|
|
|
|
"dispatch_a_block_variable_from_macro#DispatchA#class.92567a38d5ab3cf637f72030b1097441_1" [label="1: Start DispatchA_dispatch_a_block_variable_from_macro\nFormals: \nLocals: initialization_block__:_fn_(*) \n DECLARE_LOCALS(&return,&initialization_block__); [line 64, column 1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"dispatch_a_block_variable_from_macro#DispatchA#class.92567a38d5ab3cf637f72030b1097441_1" -> "dispatch_a_block_variable_from_macro#DispatchA#class.92567a38d5ab3cf637f72030b1097441_5" ;
|
|
|
|
"dispatch_a_block_variable_from_macro#DispatchA#class.92567a38d5ab3cf637f72030b1097441_2" [label="2: Exit DispatchA_dispatch_a_block_variable_from_macro \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"dispatch_a_block_variable_from_macro#DispatchA#class.92567a38d5ab3cf637f72030b1097441_3" [label="3: Fallback node \n n$22=*&#GB<codetoanalyze/objc/shared/block/dispatch.m>$DispatchA_dispatch_a_block_variable_from_macro.static_storage__:objc_object* [line 72, column 5]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"dispatch_a_block_variable_from_macro#DispatchA#class.92567a38d5ab3cf637f72030b1097441_3" -> "dispatch_a_block_variable_from_macro#DispatchA#class.92567a38d5ab3cf637f72030b1097441_6" ;
|
|
|
|
"dispatch_a_block_variable_from_macro#DispatchA#class.92567a38d5ab3cf637f72030b1097441_4" [label="4: Call _fun__dispatch_once \n n$23=*&initialization_block__:_fn_(*) [line 71, column 34]\n n$24=_fun__dispatch_once(&#GB<codetoanalyze/objc/shared/block/dispatch.m>$DispatchA_dispatch_a_block_variable_from_macro.once_token__:long*,n$23:_fn_(*)) [line 71, column 5]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"dispatch_a_block_variable_from_macro#DispatchA#class.92567a38d5ab3cf637f72030b1097441_4" -> "dispatch_a_block_variable_from_macro#DispatchA#class.92567a38d5ab3cf637f72030b1097441_3" ;
|
|
|
|
"dispatch_a_block_variable_from_macro#DispatchA#class.92567a38d5ab3cf637f72030b1097441_5" [label="5: DeclStmt \n *&initialization_block__:_fn_(*)=(_fun_objc_blockDispatchA_dispatch_a_block_variable_from_macro_5) [line 67, column 5]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"dispatch_a_block_variable_from_macro#DispatchA#class.92567a38d5ab3cf637f72030b1097441_5" -> "dispatch_a_block_variable_from_macro#DispatchA#class.92567a38d5ab3cf637f72030b1097441_4" ;
|
|
|
|
"dispatch_a_block_variable_from_macro#DispatchA#class.92567a38d5ab3cf637f72030b1097441_6" [label="6: Return Stmt \n *&return:objc_object*=n$22 [line 65, column 3]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"dispatch_a_block_variable_from_macro#DispatchA#class.92567a38d5ab3cf637f72030b1097441_6" -> "dispatch_a_block_variable_from_macro#DispatchA#class.92567a38d5ab3cf637f72030b1097441_2" ;
|
|
|
|
"dispatch_a_block_variable_from_macro_delivers_initialised_object#DispatchA#class.a58ef5afb5e1e9480b49788e2400c52c_1" [label="1: Start DispatchA_dispatch_a_block_variable_from_macro_delivers_initialised_object\nFormals: \nLocals: a:DispatchA* \n DECLARE_LOCALS(&return,&a); [line 76, column 1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"dispatch_a_block_variable_from_macro_delivers_initialised_object#DispatchA#class.a58ef5afb5e1e9480b49788e2400c52c_1" -> "dispatch_a_block_variable_from_macro_delivers_initialised_object#DispatchA#class.a58ef5afb5e1e9480b49788e2400c52c_5" ;
|
|
|
|
"dispatch_a_block_variable_from_macro_delivers_initialised_object#DispatchA#class.a58ef5afb5e1e9480b49788e2400c52c_2" [label="2: Exit DispatchA_dispatch_a_block_variable_from_macro_delivers_initialised_object \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"dispatch_a_block_variable_from_macro_delivers_initialised_object#DispatchA#class.a58ef5afb5e1e9480b49788e2400c52c_3" [label="3: Return Stmt \n n$27=*&a:DispatchA* [line 79, column 15]\n n$28=*n$27._x:int [line 79, column 15]\n *&return:int=(1 / (n$28 - 5)) [line 79, column 3]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"dispatch_a_block_variable_from_macro_delivers_initialised_object#DispatchA#class.a58ef5afb5e1e9480b49788e2400c52c_3" -> "dispatch_a_block_variable_from_macro_delivers_initialised_object#DispatchA#class.a58ef5afb5e1e9480b49788e2400c52c_2" ;
|
|
|
|
"dispatch_a_block_variable_from_macro_delivers_initialised_object#DispatchA#class.a58ef5afb5e1e9480b49788e2400c52c_4" [label="4: BinaryOperatorStmt: Assign \n n$29=*&a:DispatchA* [line 78, column 3]\n *n$29._x:int=5 [line 78, column 3]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"dispatch_a_block_variable_from_macro_delivers_initialised_object#DispatchA#class.a58ef5afb5e1e9480b49788e2400c52c_4" -> "dispatch_a_block_variable_from_macro_delivers_initialised_object#DispatchA#class.a58ef5afb5e1e9480b49788e2400c52c_3" ;
|
|
|
|
"dispatch_a_block_variable_from_macro_delivers_initialised_object#DispatchA#class.a58ef5afb5e1e9480b49788e2400c52c_5" [label="5: DeclStmt \n n$30=_fun_DispatchA_dispatch_a_block_variable_from_macro() [line 77, column 18]\n *&a:DispatchA*=n$30 [line 77, column 3]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"dispatch_a_block_variable_from_macro_delivers_initialised_object#DispatchA#class.a58ef5afb5e1e9480b49788e2400c52c_5" -> "dispatch_a_block_variable_from_macro_delivers_initialised_object#DispatchA#class.a58ef5afb5e1e9480b49788e2400c52c_4" ;
|
|
|
|
"init#DispatchA#instance.ff6c7b9a5a49bb46493519a4290a6582_1" [label="1: Start DispatchA_init\nFormals: self:DispatchA*\nLocals: \n DECLARE_LOCALS(&return); [line 23, column 1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"init#DispatchA#instance.ff6c7b9a5a49bb46493519a4290a6582_1" -> "init#DispatchA#instance.ff6c7b9a5a49bb46493519a4290a6582_3" ;
|
|
|
|
"init#DispatchA#instance.ff6c7b9a5a49bb46493519a4290a6582_2" [label="2: Exit DispatchA_init \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"init#DispatchA#instance.ff6c7b9a5a49bb46493519a4290a6582_3" [label="3: Return Stmt \n n$0=*&self:DispatchA* [line 24, column 10]\n *&return:objc_object*=n$0 [line 24, column 3]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"init#DispatchA#instance.ff6c7b9a5a49bb46493519a4290a6582_3" -> "init#DispatchA#instance.ff6c7b9a5a49bb46493519a4290a6582_2" ;
|
|
|
|
"sharedInstance#DispatchA#class.8992c6086d1ce5c225093940f62386ac_1" [label="1: Start DispatchA_sharedInstance\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 27, column 1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"sharedInstance#DispatchA#class.8992c6086d1ce5c225093940f62386ac_1" -> "sharedInstance#DispatchA#class.8992c6086d1ce5c225093940f62386ac_4" ;
|
|
|
|
"sharedInstance#DispatchA#class.8992c6086d1ce5c225093940f62386ac_2" [label="2: Exit DispatchA_sharedInstance \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"sharedInstance#DispatchA#class.8992c6086d1ce5c225093940f62386ac_3" [label="3: Return Stmt \n n$1=*&#GB<codetoanalyze/objc/shared/block/dispatch.m>$DispatchA_sharedInstance.sharedInstance:objc_object* [line 33, column 10]\n *&return:objc_object*=n$1 [line 33, column 3]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"sharedInstance#DispatchA#class.8992c6086d1ce5c225093940f62386ac_3" -> "sharedInstance#DispatchA#class.8992c6086d1ce5c225093940f62386ac_2" ;
|
|
|
|
"sharedInstance#DispatchA#class.8992c6086d1ce5c225093940f62386ac_4" [label="4: Call _fun__dispatch_once \n n$4=_fun__dispatch_once(&#GB<codetoanalyze/objc/shared/block/dispatch.m>$DispatchA_sharedInstance.once:long*,(_fun_objc_blockDispatchA_sharedInstance_1):_fn_(*)) block_params [line 30, column 3]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"sharedInstance#DispatchA#class.8992c6086d1ce5c225093940f62386ac_4" -> "sharedInstance#DispatchA#class.8992c6086d1ce5c225093940f62386ac_3" ;
|
|
|
|
"trans#DispatchA#class.23f9d908a87deca79c235bc76ca6e941_1" [label="1: Start DispatchA_trans\nFormals: \nLocals: dummy_block:_fn_(*) \n DECLARE_LOCALS(&return,&dummy_block); [line 45, column 1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"trans#DispatchA#class.23f9d908a87deca79c235bc76ca6e941_1" -> "trans#DispatchA#class.23f9d908a87deca79c235bc76ca6e941_5" ;
|
|
|
|
"trans#DispatchA#class.23f9d908a87deca79c235bc76ca6e941_2" [label="2: Exit DispatchA_trans \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"trans#DispatchA#class.23f9d908a87deca79c235bc76ca6e941_3" [label="3: Return Stmt \n n$12=*&#GB<codetoanalyze/objc/shared/block/dispatch.m>$DispatchA_trans.sharedInstance:objc_object* [line 51, column 10]\n *&return:objc_object*=n$12 [line 51, column 3]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"trans#DispatchA#class.23f9d908a87deca79c235bc76ca6e941_3" -> "trans#DispatchA#class.23f9d908a87deca79c235bc76ca6e941_2" ;
|
|
|
|
"trans#DispatchA#class.23f9d908a87deca79c235bc76ca6e941_4" [label="4: Call n$13 \n n$13=*&dummy_block:_fn_(*) [line 50, column 3]\n n$14=n$13() [line 50, column 3]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"trans#DispatchA#class.23f9d908a87deca79c235bc76ca6e941_4" -> "trans#DispatchA#class.23f9d908a87deca79c235bc76ca6e941_3" ;
|
|
|
|
"trans#DispatchA#class.23f9d908a87deca79c235bc76ca6e941_5" [label="5: DeclStmt \n *&dummy_block:_fn_(*)=(_fun_objc_blockDispatchA_trans_3) [line 47, column 3]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"trans#DispatchA#class.23f9d908a87deca79c235bc76ca6e941_5" -> "trans#DispatchA#class.23f9d908a87deca79c235bc76ca6e941_4" ;
|
|
|
|
}
|