|
|
|
/* @generated */
|
|
|
|
digraph cfg {
|
|
|
|
"createAndDiv<function::X1>#function#7317770096713783521.0380eae58716a2f4c79a0aa7669988ba_1" [label="1: Start function::createAndDiv<function::X1>\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 42, column 1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"createAndDiv<function::X1>#function#7317770096713783521.0380eae58716a2f4c79a0aa7669988ba_1" -> "createAndDiv<function::X1>#function#7317770096713783521.0380eae58716a2f4c79a0aa7669988ba_3" ;
|
|
|
|
"createAndDiv<function::X1>#function#7317770096713783521.0380eae58716a2f4c79a0aa7669988ba_2" [label="2: Exit function::createAndDiv<function::X1> \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"createAndDiv<function::X1>#function#7317770096713783521.0380eae58716a2f4c79a0aa7669988ba_3" [label="3: Return Stmt \n n$0=_fun_function::createAndGetVal<function::X1>() [line 43, column 14]\n *&return:int=(1 / n$0) [line 43, column 3]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"createAndDiv<function::X1>#function#7317770096713783521.0380eae58716a2f4c79a0aa7669988ba_3" -> "createAndDiv<function::X1>#function#7317770096713783521.0380eae58716a2f4c79a0aa7669988ba_2" ;
|
|
|
|
"createAndDiv<function::X3>#function#17691069018148922707.8fbffac628046cdf9a89a22bc71f8057_1" [label="1: Start function::createAndDiv<function::X3>\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 42, column 1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"createAndDiv<function::X3>#function#17691069018148922707.8fbffac628046cdf9a89a22bc71f8057_1" -> "createAndDiv<function::X3>#function#17691069018148922707.8fbffac628046cdf9a89a22bc71f8057_3" ;
|
|
|
|
"createAndDiv<function::X3>#function#17691069018148922707.8fbffac628046cdf9a89a22bc71f8057_2" [label="2: Exit function::createAndDiv<function::X3> \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"createAndDiv<function::X3>#function#17691069018148922707.8fbffac628046cdf9a89a22bc71f8057_3" [label="3: Return Stmt \n n$0=_fun_function::createAndGetVal<function::X3>() [line 43, column 14]\n *&return:int=(1 / n$0) [line 43, column 3]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"createAndDiv<function::X3>#function#17691069018148922707.8fbffac628046cdf9a89a22bc71f8057_3" -> "createAndDiv<function::X3>#function#17691069018148922707.8fbffac628046cdf9a89a22bc71f8057_2" ;
|
|
|
|
"createAndGetVal<function::X1>#function#6914861794749950810.03576380bf9ba7f93eef05bd79193575_1" [label="1: Start function::createAndGetVal<function::X1>\nFormals: \nLocals: x:function::X1 \n DECLARE_LOCALS(&return,&x); [line 36, column 1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"createAndGetVal<function::X1>#function#6914861794749950810.03576380bf9ba7f93eef05bd79193575_1" -> "createAndGetVal<function::X1>#function#6914861794749950810.03576380bf9ba7f93eef05bd79193575_4" ;
|
|
|
|
"createAndGetVal<function::X1>#function#6914861794749950810.03576380bf9ba7f93eef05bd79193575_2" [label="2: Exit function::createAndGetVal<function::X1> \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"createAndGetVal<function::X1>#function#6914861794749950810.03576380bf9ba7f93eef05bd79193575_3" [label="3: Return Stmt \n n$0=_fun_function::getVal<function::X1>(&x:function::X1&) [line 38, column 10]\n *&return:int=n$0 [line 38, column 3]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"createAndGetVal<function::X1>#function#6914861794749950810.03576380bf9ba7f93eef05bd79193575_3" -> "createAndGetVal<function::X1>#function#6914861794749950810.03576380bf9ba7f93eef05bd79193575_2" ;
|
[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
|
|
|
"createAndGetVal<function::X1>#function#6914861794749950810.03576380bf9ba7f93eef05bd79193575_4" [label="4: DeclStmt \n n$2=_fun_function::X1_X1(&x:function::X1*) [line 37, column 5]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"createAndGetVal<function::X1>#function#6914861794749950810.03576380bf9ba7f93eef05bd79193575_4" -> "createAndGetVal<function::X1>#function#6914861794749950810.03576380bf9ba7f93eef05bd79193575_3" ;
|
|
|
|
"createAndGetVal<function::X3>#function#780814784522236088.525e889c7c5ef92e178075392a6961a4_1" [label="1: Start function::createAndGetVal<function::X3>\nFormals: \nLocals: x:function::X3 \n DECLARE_LOCALS(&return,&x); [line 36, column 1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"createAndGetVal<function::X3>#function#780814784522236088.525e889c7c5ef92e178075392a6961a4_1" -> "createAndGetVal<function::X3>#function#780814784522236088.525e889c7c5ef92e178075392a6961a4_4" ;
|
|
|
|
"createAndGetVal<function::X3>#function#780814784522236088.525e889c7c5ef92e178075392a6961a4_2" [label="2: Exit function::createAndGetVal<function::X3> \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"createAndGetVal<function::X3>#function#780814784522236088.525e889c7c5ef92e178075392a6961a4_3" [label="3: Return Stmt \n n$0=_fun_function::getVal<function::X3>(&x:function::X3&) [line 38, column 10]\n *&return:int=n$0 [line 38, column 3]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"createAndGetVal<function::X3>#function#780814784522236088.525e889c7c5ef92e178075392a6961a4_3" -> "createAndGetVal<function::X3>#function#780814784522236088.525e889c7c5ef92e178075392a6961a4_2" ;
|
[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
|
|
|
"createAndGetVal<function::X3>#function#780814784522236088.525e889c7c5ef92e178075392a6961a4_4" [label="4: DeclStmt \n n$2=_fun_function::X3_X3(&x:function::X3*) [line 37, column 5]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"createAndGetVal<function::X3>#function#780814784522236088.525e889c7c5ef92e178075392a6961a4_4" -> "createAndGetVal<function::X3>#function#780814784522236088.525e889c7c5ef92e178075392a6961a4_3" ;
|
|
|
|
"div0_create_and_get_val#function#10435269887260132003.1e3aa28edfcd43ce252fdb21067574b3_1" [label="1: Start function::div0_create_and_get_val\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 69, column 1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"div0_create_and_get_val#function#10435269887260132003.1e3aa28edfcd43ce252fdb21067574b3_1" -> "div0_create_and_get_val#function#10435269887260132003.1e3aa28edfcd43ce252fdb21067574b3_3" ;
|
|
|
|
"div0_create_and_get_val#function#10435269887260132003.1e3aa28edfcd43ce252fdb21067574b3_2" [label="2: Exit function::div0_create_and_get_val \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"div0_create_and_get_val#function#10435269887260132003.1e3aa28edfcd43ce252fdb21067574b3_3" [label="3: Return Stmt \n n$0=_fun_function::createAndGetVal<function::X1>() [line 70, column 10]\n n$1=_fun_function::createAndGetVal<function::X3>() [line 70, column 34]\n *&return:int=(n$0 / n$1) [line 70, column 3]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"div0_create_and_get_val#function#10435269887260132003.1e3aa28edfcd43ce252fdb21067574b3_3" -> "div0_create_and_get_val#function#10435269887260132003.1e3aa28edfcd43ce252fdb21067574b3_2" ;
|
|
|
|
"div0_get_val#function#10798510201986830040.b077944b4022150f57aec37a5ffc164a_1" [label="1: Start function::div0_get_val\nFormals: \nLocals: x3:function::X3 x1:function::X1 \n DECLARE_LOCALS(&return,&x3,&x1); [line 57, column 1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"div0_get_val#function#10798510201986830040.b077944b4022150f57aec37a5ffc164a_1" -> "div0_get_val#function#10798510201986830040.b077944b4022150f57aec37a5ffc164a_5" ;
|
|
|
|
"div0_get_val#function#10798510201986830040.b077944b4022150f57aec37a5ffc164a_2" [label="2: Exit function::div0_get_val \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"div0_get_val#function#10798510201986830040.b077944b4022150f57aec37a5ffc164a_3" [label="3: Return Stmt \n n$0=_fun_function::getVal<function::X1>(&x1:function::X1&) [line 60, column 10]\n n$1=_fun_function::getVal<function::X3>(&x3:function::X3&) [line 60, column 23]\n *&return:int=(n$0 / n$1) [line 60, column 3]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"div0_get_val#function#10798510201986830040.b077944b4022150f57aec37a5ffc164a_3" -> "div0_get_val#function#10798510201986830040.b077944b4022150f57aec37a5ffc164a_2" ;
|
[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
|
|
|
"div0_get_val#function#10798510201986830040.b077944b4022150f57aec37a5ffc164a_4" [label="4: DeclStmt \n n$3=_fun_function::X3_X3(&x3:function::X3*) [line 59, column 6]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"div0_get_val#function#10798510201986830040.b077944b4022150f57aec37a5ffc164a_4" -> "div0_get_val#function#10798510201986830040.b077944b4022150f57aec37a5ffc164a_3" ;
|
[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
|
|
|
"div0_get_val#function#10798510201986830040.b077944b4022150f57aec37a5ffc164a_5" [label="5: DeclStmt \n n$4=_fun_function::X1_X1(&x1:function::X1*) [line 58, column 6]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"div0_get_val#function#10798510201986830040.b077944b4022150f57aec37a5ffc164a_5" -> "div0_get_val#function#10798510201986830040.b077944b4022150f57aec37a5ffc164a_4" ;
|
|
|
|
"div1_create_and_get_val#function#14376724289073099234.7b46bfd9e19b7d3885bef77d1720d502_1" [label="1: Start function::div1_create_and_get_val\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 73, column 1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"div1_create_and_get_val#function#14376724289073099234.7b46bfd9e19b7d3885bef77d1720d502_1" -> "div1_create_and_get_val#function#14376724289073099234.7b46bfd9e19b7d3885bef77d1720d502_3" ;
|
|
|
|
"div1_create_and_get_val#function#14376724289073099234.7b46bfd9e19b7d3885bef77d1720d502_2" [label="2: Exit function::div1_create_and_get_val \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"div1_create_and_get_val#function#14376724289073099234.7b46bfd9e19b7d3885bef77d1720d502_3" [label="3: Return Stmt \n n$0=_fun_function::createAndGetVal<function::X3>() [line 74, column 10]\n n$1=_fun_function::createAndGetVal<function::X1>() [line 74, column 34]\n *&return:int=(n$0 / n$1) [line 74, column 3]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"div1_create_and_get_val#function#14376724289073099234.7b46bfd9e19b7d3885bef77d1720d502_3" -> "div1_create_and_get_val#function#14376724289073099234.7b46bfd9e19b7d3885bef77d1720d502_2" ;
|
|
|
|
"div1_get_val#function#3554411408849091151.45cb38d8fc35a6b2cdc1f63de85d2e51_1" [label="1: Start function::div1_get_val\nFormals: \nLocals: x3:function::X3 x1:function::X1 \n DECLARE_LOCALS(&return,&x3,&x1); [line 63, column 1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"div1_get_val#function#3554411408849091151.45cb38d8fc35a6b2cdc1f63de85d2e51_1" -> "div1_get_val#function#3554411408849091151.45cb38d8fc35a6b2cdc1f63de85d2e51_5" ;
|
|
|
|
"div1_get_val#function#3554411408849091151.45cb38d8fc35a6b2cdc1f63de85d2e51_2" [label="2: Exit function::div1_get_val \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"div1_get_val#function#3554411408849091151.45cb38d8fc35a6b2cdc1f63de85d2e51_3" [label="3: Return Stmt \n n$0=_fun_function::getVal<function::X3>(&x3:function::X3&) [line 66, column 10]\n n$1=_fun_function::getVal<function::X1>(&x1:function::X1&) [line 66, column 23]\n *&return:int=(n$0 / n$1) [line 66, column 3]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"div1_get_val#function#3554411408849091151.45cb38d8fc35a6b2cdc1f63de85d2e51_3" -> "div1_get_val#function#3554411408849091151.45cb38d8fc35a6b2cdc1f63de85d2e51_2" ;
|
[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
|
|
|
"div1_get_val#function#3554411408849091151.45cb38d8fc35a6b2cdc1f63de85d2e51_4" [label="4: DeclStmt \n n$3=_fun_function::X3_X3(&x3:function::X3*) [line 65, column 6]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"div1_get_val#function#3554411408849091151.45cb38d8fc35a6b2cdc1f63de85d2e51_4" -> "div1_get_val#function#3554411408849091151.45cb38d8fc35a6b2cdc1f63de85d2e51_3" ;
|
[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
|
|
|
"div1_get_val#function#3554411408849091151.45cb38d8fc35a6b2cdc1f63de85d2e51_5" [label="5: DeclStmt \n n$4=_fun_function::X1_X1(&x1:function::X1*) [line 64, column 6]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"div1_get_val#function#3554411408849091151.45cb38d8fc35a6b2cdc1f63de85d2e51_5" -> "div1_get_val#function#3554411408849091151.45cb38d8fc35a6b2cdc1f63de85d2e51_4" ;
|
|
|
|
"getVal<function::X1>#function#7262186352585196534.81220c6f833b74aa2acc9c6411bc9ace_1" [label="1: Start function::getVal<function::X1>\nFormals: x:function::X1&\nLocals: \n DECLARE_LOCALS(&return); [line 25, column 1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"getVal<function::X1>#function#7262186352585196534.81220c6f833b74aa2acc9c6411bc9ace_1" -> "getVal<function::X1>#function#7262186352585196534.81220c6f833b74aa2acc9c6411bc9ace_3" ;
|
|
|
|
"getVal<function::X1>#function#7262186352585196534.81220c6f833b74aa2acc9c6411bc9ace_2" [label="2: Exit function::getVal<function::X1> \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"getVal<function::X1>#function#7262186352585196534.81220c6f833b74aa2acc9c6411bc9ace_3" [label="3: Return Stmt \n n$0=*&x:function::X1& [line 26, column 10]\n _=*n$0:function::X1 [line 26, column 10]\n n$2=_fun_function::X1_getVal(n$0:function::X1&) [line 26, column 10]\n *&return:int=n$2 [line 26, column 3]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"getVal<function::X1>#function#7262186352585196534.81220c6f833b74aa2acc9c6411bc9ace_3" -> "getVal<function::X1>#function#7262186352585196534.81220c6f833b74aa2acc9c6411bc9ace_2" ;
|
|
|
|
"getVal<function::X3>#function#11471061758976940952.6757c257541624a6e94e7b3c73ff8246_1" [label="1: Start function::getVal<function::X3>\nFormals: x:function::X3&\nLocals: \n DECLARE_LOCALS(&return); [line 30, column 1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"getVal<function::X3>#function#11471061758976940952.6757c257541624a6e94e7b3c73ff8246_1" -> "getVal<function::X3>#function#11471061758976940952.6757c257541624a6e94e7b3c73ff8246_3" ;
|
|
|
|
"getVal<function::X3>#function#11471061758976940952.6757c257541624a6e94e7b3c73ff8246_2" [label="2: Exit function::getVal<function::X3> \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"getVal<function::X3>#function#11471061758976940952.6757c257541624a6e94e7b3c73ff8246_3" [label="3: Return Stmt \n n$0=*&x:function::X3& [line 32, column 10]\n _=*n$0:function::X3 [line 32, column 10]\n n$2=_fun_function::X3_get(n$0:function::X3&) [line 32, column 10]\n *&return:int=n$2 [line 32, column 3]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"getVal<function::X3>#function#11471061758976940952.6757c257541624a6e94e7b3c73ff8246_3" -> "getVal<function::X3>#function#11471061758976940952.6757c257541624a6e94e7b3c73ff8246_2" ;
|
|
|
|
"X1#X1#function#{8268447282679134664|constexpr}.0745429c26350d2b5e4ccb089a75cca3_1" [label="1: Start function::X1_X1\nFormals: this:function::X1*\nLocals: \n DECLARE_LOCALS(&return); [line 12, column 8]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"X1#X1#function#{8268447282679134664|constexpr}.0745429c26350d2b5e4ccb089a75cca3_1" -> "X1#X1#function#{8268447282679134664|constexpr}.0745429c26350d2b5e4ccb089a75cca3_2" ;
|
|
|
|
"X1#X1#function#{8268447282679134664|constexpr}.0745429c26350d2b5e4ccb089a75cca3_2" [label="2: Exit function::X1_X1 \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"X3#X3#function#{16145958216423895430|constexpr}.a7ec9df001ac855b3f6c0a5993984a6d_1" [label="1: Start function::X3_X3\nFormals: this:function::X3*\nLocals: \n DECLARE_LOCALS(&return); [line 20, column 8]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"X3#X3#function#{16145958216423895430|constexpr}.a7ec9df001ac855b3f6c0a5993984a6d_1" -> "X3#X3#function#{16145958216423895430|constexpr}.a7ec9df001ac855b3f6c0a5993984a6d_2" ;
|
|
|
|
"X3#X3#function#{16145958216423895430|constexpr}.a7ec9df001ac855b3f6c0a5993984a6d_2" [label="2: Exit function::X3_X3 \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"get#X3#function#(14294522720635572005).f8ff5924ea2973135dd3eed8a26cb671_1" [label="1: Start function::X3_get\nFormals: this:function::X3*\nLocals: \n DECLARE_LOCALS(&return); [line 21, column 3]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"get#X3#function#(14294522720635572005).f8ff5924ea2973135dd3eed8a26cb671_1" -> "get#X3#function#(14294522720635572005).f8ff5924ea2973135dd3eed8a26cb671_3" ;
|
|
|
|
"get#X3#function#(14294522720635572005).f8ff5924ea2973135dd3eed8a26cb671_2" [label="2: Exit function::X3_get \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"get#X3#function#(14294522720635572005).f8ff5924ea2973135dd3eed8a26cb671_3" [label="3: Return Stmt \n *&return:int=0 [line 21, column 15]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"get#X3#function#(14294522720635572005).f8ff5924ea2973135dd3eed8a26cb671_3" -> "get#X3#function#(14294522720635572005).f8ff5924ea2973135dd3eed8a26cb671_2" ;
|
|
|
|
"getVal#X1#function#(6016609736462046615).f1c1059b86daba05a044baaa3aeebb4d_1" [label="1: Start function::X1_getVal\nFormals: this:function::X1*\nLocals: \n DECLARE_LOCALS(&return); [line 13, column 3]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"getVal#X1#function#(6016609736462046615).f1c1059b86daba05a044baaa3aeebb4d_1" -> "getVal#X1#function#(6016609736462046615).f1c1059b86daba05a044baaa3aeebb4d_3" ;
|
|
|
|
"getVal#X1#function#(6016609736462046615).f1c1059b86daba05a044baaa3aeebb4d_2" [label="2: Exit function::X1_getVal \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"getVal#X1#function#(6016609736462046615).f1c1059b86daba05a044baaa3aeebb4d_3" [label="3: Return Stmt \n *&return:int=1 [line 13, column 18]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"getVal#X1#function#(6016609736462046615).f1c1059b86daba05a044baaa3aeebb4d_3" -> "getVal#X1#function#(6016609736462046615).f1c1059b86daba05a044baaa3aeebb4d_2" ;
|
|
|
|
"getVal#X2#function#(4809746707613911696).0109fe7d05b40f7cd003b5f24db7e996_1" [label="1: Start function::X2_getVal\nFormals: this:function::X2*\nLocals: \n DECLARE_LOCALS(&return); [line 17, column 3]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"getVal#X2#function#(4809746707613911696).0109fe7d05b40f7cd003b5f24db7e996_1" -> "getVal#X2#function#(4809746707613911696).0109fe7d05b40f7cd003b5f24db7e996_3" ;
|
|
|
|
"getVal#X2#function#(4809746707613911696).0109fe7d05b40f7cd003b5f24db7e996_2" [label="2: Exit function::X2_getVal \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"getVal#X2#function#(4809746707613911696).0109fe7d05b40f7cd003b5f24db7e996_3" [label="3: Return Stmt \n *&return:int=0 [line 17, column 18]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"getVal#X2#function#(4809746707613911696).0109fe7d05b40f7cd003b5f24db7e996_3" -> "getVal#X2#function#(4809746707613911696).0109fe7d05b40f7cd003b5f24db7e996_2" ;
|
|
|
|
}
|