|
|
|
/* @generated */
|
|
|
|
digraph cfg {
|
|
|
|
"decltype_by_ref#pass_by_val#7827598625585178144.8fa35b5b24f764bae803ce1f6e468516_1" [label="1: Start pass_by_val::decltype_by_ref\nFormals: p:pass_by_val::PlainStruct&\nLocals: \n DECLARE_LOCALS(&return); [line 40, column 1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"decltype_by_ref#pass_by_val#7827598625585178144.8fa35b5b24f764bae803ce1f6e468516_1" -> "decltype_by_ref#pass_by_val#7827598625585178144.8fa35b5b24f764bae803ce1f6e468516_3" ;
|
|
|
|
"decltype_by_ref#pass_by_val#7827598625585178144.8fa35b5b24f764bae803ce1f6e468516_2" [label="2: Exit pass_by_val::decltype_by_ref \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"decltype_by_ref#pass_by_val#7827598625585178144.8fa35b5b24f764bae803ce1f6e468516_3" [label="3: Return Stmt \n n$0=*&p:pass_by_val::PlainStruct& [line 40, column 58]\n n$1=*n$0.x:int [line 40, column 58]\n n$2=*&p:pass_by_val::PlainStruct& [line 40, column 66]\n n$3=*n$2.y:int* [line 40, column 65]\n n$4=*n$3:int [line 40, column 64]\n *&return:int=(n$1 + n$4) [line 40, column 51]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"decltype_by_ref#pass_by_val#7827598625585178144.8fa35b5b24f764bae803ce1f6e468516_3" -> "decltype_by_ref#pass_by_val#7827598625585178144.8fa35b5b24f764bae803ce1f6e468516_2" ;
|
|
|
|
"decltype_by_val#pass_by_val#14279156289723785232.72f90cb8cd80d6281316dd4fe0c3453c_1" [label="1: Start pass_by_val::decltype_by_val\nFormals: p:pass_by_val::PlainStruct&(byval)\nLocals: \n DECLARE_LOCALS(&return); [line 38, column 1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"decltype_by_val#pass_by_val#14279156289723785232.72f90cb8cd80d6281316dd4fe0c3453c_1" -> "decltype_by_val#pass_by_val#14279156289723785232.72f90cb8cd80d6281316dd4fe0c3453c_3" ;
|
|
|
|
"decltype_by_val#pass_by_val#14279156289723785232.72f90cb8cd80d6281316dd4fe0c3453c_2" [label="2: Exit pass_by_val::decltype_by_val \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"decltype_by_val#pass_by_val#14279156289723785232.72f90cb8cd80d6281316dd4fe0c3453c_3" [label="3: Return Stmt \n n$0=*&p:pass_by_val::PlainStruct& [line 38, column 56]\n n$1=*n$0.x:int [line 38, column 56]\n n$2=*&p:pass_by_val::PlainStruct& [line 38, column 64]\n n$3=*n$2.y:int* [line 38, column 63]\n n$4=*n$3:int [line 38, column 62]\n *&return:int=(n$1 + n$4) [line 38, column 49]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"decltype_by_val#pass_by_val#14279156289723785232.72f90cb8cd80d6281316dd4fe0c3453c_3" -> "decltype_by_val#pass_by_val#14279156289723785232.72f90cb8cd80d6281316dd4fe0c3453c_2" ;
|
|
|
|
"dependent_by_ref#pass_by_val#15143379324942623593.5ccf1ab5c879a0bcfec55b566c6a60db_1" [label="1: Start pass_by_val::dependent_by_ref\nFormals: p:pass_by_val::PlainStruct const &\nLocals: \n DECLARE_LOCALS(&return); [line 50, column 1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"dependent_by_ref#pass_by_val#15143379324942623593.5ccf1ab5c879a0bcfec55b566c6a60db_1" -> "dependent_by_ref#pass_by_val#15143379324942623593.5ccf1ab5c879a0bcfec55b566c6a60db_3" ;
|
|
|
|
"dependent_by_ref#pass_by_val#15143379324942623593.5ccf1ab5c879a0bcfec55b566c6a60db_2" [label="2: Exit pass_by_val::dependent_by_ref \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"dependent_by_ref#pass_by_val#15143379324942623593.5ccf1ab5c879a0bcfec55b566c6a60db_3" [label="3: Return Stmt \n n$0=*&p:pass_by_val::PlainStruct const & [line 50, column 65]\n n$1=*n$0.x:int [line 50, column 65]\n n$2=*&p:pass_by_val::PlainStruct const & [line 50, column 73]\n n$3=*n$2.y:int* [line 50, column 72]\n n$4=*n$3:int [line 50, column 71]\n *&return:int=(n$1 + n$4) [line 50, column 58]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"dependent_by_ref#pass_by_val#15143379324942623593.5ccf1ab5c879a0bcfec55b566c6a60db_3" -> "dependent_by_ref#pass_by_val#15143379324942623593.5ccf1ab5c879a0bcfec55b566c6a60db_2" ;
|
|
|
|
"dependent_by_val#pass_by_val#16173371529174507122.c006229ea6b255a1298dc7d547bac014_1" [label="1: Start pass_by_val::dependent_by_val\nFormals: p:pass_by_val::PlainStruct&(byval)\nLocals: \n DECLARE_LOCALS(&return); [line 49, column 1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"dependent_by_val#pass_by_val#16173371529174507122.c006229ea6b255a1298dc7d547bac014_1" -> "dependent_by_val#pass_by_val#16173371529174507122.c006229ea6b255a1298dc7d547bac014_3" ;
|
|
|
|
"dependent_by_val#pass_by_val#16173371529174507122.c006229ea6b255a1298dc7d547bac014_2" [label="2: Exit pass_by_val::dependent_by_val \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"dependent_by_val#pass_by_val#16173371529174507122.c006229ea6b255a1298dc7d547bac014_3" [label="3: Return Stmt \n n$0=*&p:pass_by_val::PlainStruct& [line 49, column 58]\n n$1=*n$0.x:int [line 49, column 58]\n n$2=*&p:pass_by_val::PlainStruct& [line 49, column 66]\n n$3=*n$2.y:int* [line 49, column 65]\n n$4=*n$3:int [line 49, column 64]\n *&return:int=(n$1 + n$4) [line 49, column 51]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"dependent_by_val#pass_by_val#16173371529174507122.c006229ea6b255a1298dc7d547bac014_3" -> "dependent_by_val#pass_by_val#16173371529174507122.c006229ea6b255a1298dc7d547bac014_2" ;
|
|
|
|
"dummy_struct#__infer_globals_initializer_pass_by_val.24fe54080733cebf362d2b34e691bb44_1" [label="1: Start __infer_globals_initializer_pass_by_val::dummy_struct\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 17, column 1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"dummy_struct#__infer_globals_initializer_pass_by_val.24fe54080733cebf362d2b34e691bb44_1" -> "dummy_struct#__infer_globals_initializer_pass_by_val.24fe54080733cebf362d2b34e691bb44_3" ;
|
|
|
|
"dummy_struct#__infer_globals_initializer_pass_by_val.24fe54080733cebf362d2b34e691bb44_2" [label="2: Exit __infer_globals_initializer_pass_by_val::dummy_struct \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"dummy_struct#__infer_globals_initializer_pass_by_val.24fe54080733cebf362d2b34e691bb44_3" [label="3: DeclStmt \n *&#GB<codetoanalyze/cpp/shared/methods/byvals.cpp>$pass_by_val::dummy_struct.x:int=0 [line 17, column 25]\n *&#GB<codetoanalyze/cpp/shared/methods/byvals.cpp>$pass_by_val::dummy_struct.y:int*=null [line 17, column 25]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"dummy_struct#__infer_globals_initializer_pass_by_val.24fe54080733cebf362d2b34e691bb44_3" -> "dummy_struct#__infer_globals_initializer_pass_by_val.24fe54080733cebf362d2b34e691bb44_2" ;
|
|
|
|
"forward<int>#std#5548362574050729124.664bf3a19e8401f31df778b67554bdae_1" [label="1: Start std::forward<int>\nFormals: __t:int&\nLocals: \n DECLARE_LOCALS(&return); [line 2217, column 1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"forward<int>#std#5548362574050729124.664bf3a19e8401f31df778b67554bdae_1" -> "forward<int>#std#5548362574050729124.664bf3a19e8401f31df778b67554bdae_3" ;
|
|
|
|
"forward<int>#std#5548362574050729124.664bf3a19e8401f31df778b67554bdae_2" [label="2: Exit std::forward<int> \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"forward<int>#std#5548362574050729124.664bf3a19e8401f31df778b67554bdae_3" [label="3: Return Stmt \n n$0=*&__t:int& [line 2221, column 31]\n *&return:int&=n$0 [line 2221, column 5]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"forward<int>#std#5548362574050729124.664bf3a19e8401f31df778b67554bdae_3" -> "forward<int>#std#5548362574050729124.664bf3a19e8401f31df778b67554bdae_2" ;
|
|
|
|
"forward<int_&>#std#2714018779968350623.5a6c534312c02b38db42a98e7dfe7983_1" [label="1: Start std::forward<int_&>\nFormals: __t:int&\nLocals: \n DECLARE_LOCALS(&return); [line 2217, column 1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"forward<int_&>#std#2714018779968350623.5a6c534312c02b38db42a98e7dfe7983_1" -> "forward<int_&>#std#2714018779968350623.5a6c534312c02b38db42a98e7dfe7983_3" ;
|
|
|
|
"forward<int_&>#std#2714018779968350623.5a6c534312c02b38db42a98e7dfe7983_2" [label="2: Exit std::forward<int_&> \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"forward<int_&>#std#2714018779968350623.5a6c534312c02b38db42a98e7dfe7983_3" [label="3: Return Stmt \n n$0=*&__t:int& [line 2221, column 31]\n *&return:int&=n$0 [line 2221, column 5]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"forward<int_&>#std#2714018779968350623.5a6c534312c02b38db42a98e7dfe7983_3" -> "forward<int_&>#std#2714018779968350623.5a6c534312c02b38db42a98e7dfe7983_2" ;
|
|
|
|
"make_id<int,_int_&,_int_&,_int>#pass_by_val#6647322778693099135.2f2dd9bec9bb8475abd845248a5b9203_1" [label="1: Start pass_by_val::make_id<int,_int_&,_int_&,_int>\nFormals: args:int& args:int& args:int& __return_param:pass_by_val::Id<int>*\nLocals: 0$?%__sil_tmpSIL_materialize_temp__n$1:pass_by_val::Id<int> \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_materialize_temp__n$1); [line 60, column 1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"make_id<int,_int_&,_int_&,_int>#pass_by_val#6647322778693099135.2f2dd9bec9bb8475abd845248a5b9203_1" -> "make_id<int,_int_&,_int_&,_int>#pass_by_val#6647322778693099135.2f2dd9bec9bb8475abd845248a5b9203_3" ;
|
|
|
|
"make_id<int,_int_&,_int_&,_int>#pass_by_val#6647322778693099135.2f2dd9bec9bb8475abd845248a5b9203_2" [label="2: Exit pass_by_val::make_id<int,_int_&,_int_&,_int> \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"make_id<int,_int_&,_int_&,_int>#pass_by_val#6647322778693099135.2f2dd9bec9bb8475abd845248a5b9203_3" [label="3: Return Stmt \n n$0=*&__return_param:pass_by_val::Id<int>* [line 61, column 3]\n n$2=*&args:int& [line 61, column 35]\n n$3=_fun_std::forward<int_&>(n$2:int&) [line 61, column 16]\n n$4=*n$3:int [line 61, column 16]\n n$5=*&args:int& [line 61, column 35]\n n$6=_fun_std::forward<int_&>(n$5:int&) [line 61, column 16]\n n$7=*&args:int& [line 61, column 35]\n n$8=_fun_std::forward<int>(n$7:int&) [line 61, column 16]\n n$9=_fun_pass_by_val::Id<int>_Id(&0$?%__sil_tmpSIL_materialize_temp__n$1:pass_by_val::Id<int>*,n$4:int,n$6:int&,n$8:int&) [line 61, column 10]\n n$10=_fun_pass_by_val::Id<int>_Id(n$0:pass_by_val::Id<int>*,&0$?%__sil_tmpSIL_materialize_temp__n$1:pass_by_val::Id<int>&) [line 61, column 10]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"make_id<int,_int_&,_int_&,_int>#pass_by_val#6647322778693099135.2f2dd9bec9bb8475abd845248a5b9203_3" -> "make_id<int,_int_&,_int_&,_int>#pass_by_val#6647322778693099135.2f2dd9bec9bb8475abd845248a5b9203_2" ;
|
|
|
|
"perfect_forwarding_by_ref#pass_by_val#7578991627406493712.47db45acfc842e77ec927aa5a23ec0ee_1" [label="1: Start pass_by_val::perfect_forwarding_by_ref\nFormals: __return_param:pass_by_val::Id<int>*\nLocals: 0$?%__sil_tmpSIL_materialize_temp__n$2:int 0$?%__sil_tmpSIL_materialize_temp__n$1:pass_by_val::Id<int> b:int a:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_materialize_temp__n$2,&0$?%__sil_tmpSIL_materialize_temp__n$1,&b,&a); [line 64, column 1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"perfect_forwarding_by_ref#pass_by_val#7578991627406493712.47db45acfc842e77ec927aa5a23ec0ee_1" -> "perfect_forwarding_by_ref#pass_by_val#7578991627406493712.47db45acfc842e77ec927aa5a23ec0ee_5" ;
|
|
|
|
"perfect_forwarding_by_ref#pass_by_val#7578991627406493712.47db45acfc842e77ec927aa5a23ec0ee_2" [label="2: Exit pass_by_val::perfect_forwarding_by_ref \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"perfect_forwarding_by_ref#pass_by_val#7578991627406493712.47db45acfc842e77ec927aa5a23ec0ee_3" [label="3: Return Stmt \n n$0=*&__return_param:pass_by_val::Id<int>* [line 66, column 3]\n *&0$?%__sil_tmpSIL_materialize_temp__n$2:int=2 [line 66, column 29]\n n$4=_fun_pass_by_val::make_id<int,_int_&,_int_&,_int>(&a:int&,&b:int&,&0$?%__sil_tmpSIL_materialize_temp__n$2:int&,&0$?%__sil_tmpSIL_materialize_temp__n$1:pass_by_val::Id<int>*) [line 66, column 10]\n n$5=_fun_pass_by_val::Id<int>_Id(n$0:pass_by_val::Id<int>*,&0$?%__sil_tmpSIL_materialize_temp__n$1:pass_by_val::Id<int>&) [line 66, column 10]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"perfect_forwarding_by_ref#pass_by_val#7578991627406493712.47db45acfc842e77ec927aa5a23ec0ee_3" -> "perfect_forwarding_by_ref#pass_by_val#7578991627406493712.47db45acfc842e77ec927aa5a23ec0ee_2" ;
|
|
|
|
"perfect_forwarding_by_ref#pass_by_val#7578991627406493712.47db45acfc842e77ec927aa5a23ec0ee_4" [label="4: DeclStmt \n *&b:int=1 [line 65, column 3]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"perfect_forwarding_by_ref#pass_by_val#7578991627406493712.47db45acfc842e77ec927aa5a23ec0ee_4" -> "perfect_forwarding_by_ref#pass_by_val#7578991627406493712.47db45acfc842e77ec927aa5a23ec0ee_3" ;
|
|
|
|
"perfect_forwarding_by_ref#pass_by_val#7578991627406493712.47db45acfc842e77ec927aa5a23ec0ee_5" [label="5: DeclStmt \n *&a:int=0 [line 65, column 3]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"perfect_forwarding_by_ref#pass_by_val#7578991627406493712.47db45acfc842e77ec927aa5a23ec0ee_5" -> "perfect_forwarding_by_ref#pass_by_val#7578991627406493712.47db45acfc842e77ec927aa5a23ec0ee_4" ;
|
|
|
|
"plain_struct_by_ref#pass_by_val#2657428317109106311.700667e64fd3e54821e50cc02318a193_1" [label="1: Start pass_by_val::plain_struct_by_ref\nFormals: lref:pass_by_val::PlainStruct& rref:pass_by_val::PlainStruct& ptr:pass_by_val::PlainStruct*\nLocals: \n DECLARE_LOCALS(&return); [line 20, column 1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"plain_struct_by_ref#pass_by_val#2657428317109106311.700667e64fd3e54821e50cc02318a193_1" -> "plain_struct_by_ref#pass_by_val#2657428317109106311.700667e64fd3e54821e50cc02318a193_3" ;
|
|
|
|
"plain_struct_by_ref#pass_by_val#2657428317109106311.700667e64fd3e54821e50cc02318a193_2" [label="2: Exit pass_by_val::plain_struct_by_ref \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"plain_struct_by_ref#pass_by_val#2657428317109106311.700667e64fd3e54821e50cc02318a193_3" [label="3: Return Stmt \n n$0=*&lref:pass_by_val::PlainStruct& [line 23, column 10]\n n$1=*n$0.x:int [line 23, column 10]\n n$2=*&rref:pass_by_val::PlainStruct& [line 23, column 19]\n n$3=*n$2.x:int [line 23, column 19]\n n$4=*&ptr:pass_by_val::PlainStruct* [line 23, column 28]\n n$5=*n$4.x:int [line 23, column 28]\n *&return:int=((n$1 + n$3) + n$5) [line 23, column 3]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"plain_struct_by_ref#pass_by_val#2657428317109106311.700667e64fd3e54821e50cc02318a193_3" -> "plain_struct_by_ref#pass_by_val#2657428317109106311.700667e64fd3e54821e50cc02318a193_2" ;
|
|
|
|
"plain_struct_by_val#pass_by_val#7415219466606029544.eb0e0bdde375e8d1716470ec792b2450_1" [label="1: Start pass_by_val::plain_struct_by_val\nFormals: p:pass_by_val::PlainStruct&(byval)\nLocals: \n DECLARE_LOCALS(&return); [line 19, column 1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"plain_struct_by_val#pass_by_val#7415219466606029544.eb0e0bdde375e8d1716470ec792b2450_1" -> "plain_struct_by_val#pass_by_val#7415219466606029544.eb0e0bdde375e8d1716470ec792b2450_3" ;
|
|
|
|
"plain_struct_by_val#pass_by_val#7415219466606029544.eb0e0bdde375e8d1716470ec792b2450_2" [label="2: Exit pass_by_val::plain_struct_by_val \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"plain_struct_by_val#pass_by_val#7415219466606029544.eb0e0bdde375e8d1716470ec792b2450_3" [label="3: Return Stmt \n n$0=*&p:pass_by_val::PlainStruct& [line 19, column 49]\n n$1=*n$0.x:int [line 19, column 49]\n n$2=*&p:pass_by_val::PlainStruct& [line 19, column 57]\n n$3=*n$2.y:int* [line 19, column 56]\n n$4=*n$3:int [line 19, column 55]\n *&return:int=(n$1 + n$4) [line 19, column 42]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"plain_struct_by_val#pass_by_val#7415219466606029544.eb0e0bdde375e8d1716470ec792b2450_3" -> "plain_struct_by_val#pass_by_val#7415219466606029544.eb0e0bdde375e8d1716470ec792b2450_2" ;
|
|
|
|
"to_double#pass_by_val#15152319343034292227.aa9254ca74e20265f2daa2c4c321444a_1" [label="1: Start pass_by_val::to_double\nFormals: x:int\nLocals: \n DECLARE_LOCALS(&return); [line 52, column 1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"to_double#pass_by_val#15152319343034292227.aa9254ca74e20265f2daa2c4c321444a_1" -> "to_double#pass_by_val#15152319343034292227.aa9254ca74e20265f2daa2c4c321444a_3" ;
|
|
|
|
"to_double#pass_by_val#15152319343034292227.aa9254ca74e20265f2daa2c4c321444a_2" [label="2: Exit pass_by_val::to_double \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"to_double#pass_by_val#15152319343034292227.aa9254ca74e20265f2daa2c4c321444a_3" [label="3: Return Stmt \n n$0=*&x:int [line 52, column 34]\n *&return:double=n$0 [line 52, column 27]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"to_double#pass_by_val#15152319343034292227.aa9254ca74e20265f2daa2c4c321444a_3" -> "to_double#pass_by_val#15152319343034292227.aa9254ca74e20265f2daa2c4c321444a_2" ;
|
|
|
|
"tricky_dependent_by_val#pass_by_val#11704838728234311959.2c9738321ba9545daa75926f2565403e_1" [label="1: Start pass_by_val::tricky_dependent_by_val\nFormals: t:double\nLocals: \n DECLARE_LOCALS(&return); [line 57, column 1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"tricky_dependent_by_val#pass_by_val#11704838728234311959.2c9738321ba9545daa75926f2565403e_1" -> "tricky_dependent_by_val#pass_by_val#11704838728234311959.2c9738321ba9545daa75926f2565403e_3" ;
|
|
|
|
"tricky_dependent_by_val#pass_by_val#11704838728234311959.2c9738321ba9545daa75926f2565403e_2" [label="2: Exit pass_by_val::tricky_dependent_by_val \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"tricky_dependent_by_val#pass_by_val#11704838728234311959.2c9738321ba9545daa75926f2565403e_3" [label="3: Return Stmt \n n$0=*&t:double [line 57, column 62]\n *&return:double=n$0 [line 57, column 55]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"tricky_dependent_by_val#pass_by_val#11704838728234311959.2c9738321ba9545daa75926f2565403e_3" -> "tricky_dependent_by_val#pass_by_val#11704838728234311959.2c9738321ba9545daa75926f2565403e_2" ;
|
|
|
|
"type_alias_by_ref#pass_by_val#1261506501219871814.f656e449ac4cf31b24b37d7b81156083_1" [label="1: Start pass_by_val::type_alias_by_ref\nFormals: p1:pass_by_val::PlainStruct* p2:pass_by_val::PlainStruct const *\nLocals: \n DECLARE_LOCALS(&return); [line 34, column 1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"type_alias_by_ref#pass_by_val#1261506501219871814.f656e449ac4cf31b24b37d7b81156083_1" -> "type_alias_by_ref#pass_by_val#1261506501219871814.f656e449ac4cf31b24b37d7b81156083_3" ;
|
|
|
|
"type_alias_by_ref#pass_by_val#1261506501219871814.f656e449ac4cf31b24b37d7b81156083_2" [label="2: Exit pass_by_val::type_alias_by_ref \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"type_alias_by_ref#pass_by_val#1261506501219871814.f656e449ac4cf31b24b37d7b81156083_3" [label="3: Return Stmt \n n$0=*&p1:pass_by_val::PlainStruct* [line 35, column 10]\n n$1=*n$0.x:int [line 35, column 10]\n n$2=*&p2:pass_by_val::PlainStruct const * [line 35, column 18]\n n$3=*n$2.x:int [line 35, column 18]\n *&return:int=(n$1 + n$3) [line 35, column 3]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"type_alias_by_ref#pass_by_val#1261506501219871814.f656e449ac4cf31b24b37d7b81156083_3" -> "type_alias_by_ref#pass_by_val#1261506501219871814.f656e449ac4cf31b24b37d7b81156083_2" ;
|
|
|
|
"type_alias_by_val#pass_by_val#9273827923998572097.425db1bd7e6b48116fa99ed40b0b6415_1" [label="1: Start pass_by_val::type_alias_by_val\nFormals: p1:pass_by_val::PlainStruct&(byval) p2:pass_by_val::PlainStruct&(byval)\nLocals: 0$?%__sil_tmp__temp_construct_n$0:pass_by_val::PlainStruct 0$?%__sil_tmp__temp_construct_n$4:pass_by_val::PlainStruct \n DECLARE_LOCALS(&return,&0$?%__sil_tmp__temp_construct_n$0,&0$?%__sil_tmp__temp_construct_n$4); [line 31, column 1]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"type_alias_by_val#pass_by_val#9273827923998572097.425db1bd7e6b48116fa99ed40b0b6415_1" -> "type_alias_by_val#pass_by_val#9273827923998572097.425db1bd7e6b48116fa99ed40b0b6415_3" ;
|
|
|
|
"type_alias_by_val#pass_by_val#9273827923998572097.425db1bd7e6b48116fa99ed40b0b6415_2" [label="2: Exit pass_by_val::type_alias_by_val \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"type_alias_by_val#pass_by_val#9273827923998572097.425db1bd7e6b48116fa99ed40b0b6415_3" [label="3: Return Stmt \n n$1=*&p1:pass_by_val::PlainStruct& [line 32, column 30]\n n$2=_fun_pass_by_val::PlainStruct_PlainStruct(&0$?%__sil_tmp__temp_construct_n$0:pass_by_val::PlainStruct*,n$1:pass_by_val::PlainStruct&) [line 32, column 30]\n n$3=_fun_pass_by_val::plain_struct_by_val(&0$?%__sil_tmp__temp_construct_n$0:pass_by_val::PlainStruct) [line 32, column 10]\n n$5=*&p2:pass_by_val::PlainStruct& [line 32, column 56]\n n$6=_fun_pass_by_val::PlainStruct_PlainStruct(&0$?%__sil_tmp__temp_construct_n$4:pass_by_val::PlainStruct*,n$5:pass_by_val::PlainStruct&) [line 32, column 56]\n n$7=_fun_pass_by_val::plain_struct_by_val(&0$?%__sil_tmp__temp_construct_n$4:pass_by_val::PlainStruct) [line 32, column 36]\n *&return:int=(n$3 + n$7) [line 32, column 3]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"type_alias_by_val#pass_by_val#9273827923998572097.425db1bd7e6b48116fa99ed40b0b6415_3" -> "type_alias_by_val#pass_by_val#9273827923998572097.425db1bd7e6b48116fa99ed40b0b6415_2" ;
|
|
|
|
"Id#Id<int>#pass_by_val#{3384099991783983184}.e286af060b6cead08a43f9654ad715c7_1" [label="1: Start pass_by_val::Id<int>_Id\nFormals: this:pass_by_val::Id<int>* __param_0:int __param_1:int& __param_2:int&\nLocals: \n DECLARE_LOCALS(&return); [line 46, column 3]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"Id#Id<int>#pass_by_val#{3384099991783983184}.e286af060b6cead08a43f9654ad715c7_1" -> "Id#Id<int>#pass_by_val#{3384099991783983184}.e286af060b6cead08a43f9654ad715c7_2" ;
|
|
|
|
"Id#Id<int>#pass_by_val#{3384099991783983184}.e286af060b6cead08a43f9654ad715c7_2" [label="2: Exit pass_by_val::Id<int>_Id \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"Id#Id<int>#pass_by_val#{7679130497746934716|constexpr}.ec7ae8f1f59ff02018973f2770719ebf_1" [label="1: Start pass_by_val::Id<int>_Id\nFormals: this:pass_by_val::Id<int>* __param_0:pass_by_val::Id<int>&\nLocals: \n DECLARE_LOCALS(&return); [line 43, column 8]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"Id#Id<int>#pass_by_val#{7679130497746934716|constexpr}.ec7ae8f1f59ff02018973f2770719ebf_1" -> "Id#Id<int>#pass_by_val#{7679130497746934716|constexpr}.ec7ae8f1f59ff02018973f2770719ebf_2" ;
|
|
|
|
"Id#Id<int>#pass_by_val#{7679130497746934716|constexpr}.ec7ae8f1f59ff02018973f2770719ebf_2" [label="2: Exit pass_by_val::Id<int>_Id \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"PlainStruct#PlainStruct#pass_by_val#{2553093086388184854|constexpr}.e295b1e7e1c5b638011ce60f4cd77a28_1" [label="1: Start pass_by_val::PlainStruct_PlainStruct\nFormals: this:pass_by_val::PlainStruct* __param_0:pass_by_val::PlainStruct const &\nLocals: \n DECLARE_LOCALS(&return); [line 13, column 8]\n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
|
|
|
"PlainStruct#PlainStruct#pass_by_val#{2553093086388184854|constexpr}.e295b1e7e1c5b638011ce60f4cd77a28_1" -> "PlainStruct#PlainStruct#pass_by_val#{2553093086388184854|constexpr}.e295b1e7e1c5b638011ce60f4cd77a28_4" ;
|
|
|
|
"PlainStruct#PlainStruct#pass_by_val#{2553093086388184854|constexpr}.e295b1e7e1c5b638011ce60f4cd77a28_2" [label="2: Exit pass_by_val::PlainStruct_PlainStruct \n " color=yellow style=filled]
|
|
|
|
|
|
|
|
|
[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
|
|
|
"PlainStruct#PlainStruct#pass_by_val#{2553093086388184854|constexpr}.e295b1e7e1c5b638011ce60f4cd77a28_3" [label="3: Constructor Init \n n$2=*&this:pass_by_val::PlainStruct* [line 13, column 8]\n n$3=*&__param_0:pass_by_val::PlainStruct const & [line 13, column 8]\n n$4=*n$3.y:int* [line 13, column 8]\n *n$2.y:int*=n$4 [line 13, column 8]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"PlainStruct#PlainStruct#pass_by_val#{2553093086388184854|constexpr}.e295b1e7e1c5b638011ce60f4cd77a28_3" -> "PlainStruct#PlainStruct#pass_by_val#{2553093086388184854|constexpr}.e295b1e7e1c5b638011ce60f4cd77a28_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
|
|
|
"PlainStruct#PlainStruct#pass_by_val#{2553093086388184854|constexpr}.e295b1e7e1c5b638011ce60f4cd77a28_4" [label="4: Constructor Init \n n$5=*&this:pass_by_val::PlainStruct* [line 13, column 8]\n n$6=*&__param_0:pass_by_val::PlainStruct const & [line 13, column 8]\n n$7=*n$6.x:int [line 13, column 8]\n *n$5.x:int=n$7 [line 13, column 8]\n " shape="box"]
|
|
|
|
|
|
|
|
|
|
|
|
"PlainStruct#PlainStruct#pass_by_val#{2553093086388184854|constexpr}.e295b1e7e1c5b638011ce60f4cd77a28_4" -> "PlainStruct#PlainStruct#pass_by_val#{2553093086388184854|constexpr}.e295b1e7e1c5b638011ce60f4cd77a28_3" ;
|
|
|
|
}
|