diff --git a/infer/src/IR/ProcAttributes.ml b/infer/src/IR/ProcAttributes.ml index 0aea077ee..38a38eb17 100644 --- a/infer/src/IR/ProcAttributes.ml +++ b/infer/src/IR/ProcAttributes.ml @@ -46,6 +46,7 @@ type t = ; exceptions: string list (** exceptions thrown by the procedure *) ; formals: (Mangled.t * Typ.t) list (** name and type of formal parameters *) ; const_formals: int list (** list of indices of formals that are const-qualified *) + ; by_vals: int list (** list of indices of formals that are passed by-value *) ; func_attributes: PredSymb.func_attribute list ; is_abstract: bool (** the procedure is abstract *) ; is_bridge_method: bool (** the procedure is a bridge method *) @@ -77,6 +78,7 @@ let default proc_name language = ; exceptions= [] ; formals= [] ; const_formals= [] + ; by_vals= [] ; func_attributes= [] ; is_abstract= false ; is_bridge_method= false diff --git a/infer/src/IR/ProcAttributes.mli b/infer/src/IR/ProcAttributes.mli index e7c439d3f..d2cdea511 100644 --- a/infer/src/IR/ProcAttributes.mli +++ b/infer/src/IR/ProcAttributes.mli @@ -45,6 +45,7 @@ type t = ; exceptions: string list (** exceptions thrown by the procedure *) ; formals: (Mangled.t * Typ.t) list (** name and type of formal parameters *) ; const_formals: int list (** list of indices of formals that are const-qualified *) + ; by_vals: int list (** list of indices of formals that are passed by-value *) ; func_attributes: PredSymb.func_attribute list ; is_abstract: bool (** the procedure is abstract *) ; is_bridge_method: bool (** the procedure is a bridge method *) diff --git a/infer/src/backend/dotty.ml b/infer/src/backend/dotty.ml index 468ece06e..ad46ecb7c 100644 --- a/infer/src/backend/dotty.ml +++ b/infer/src/backend/dotty.ml @@ -1091,9 +1091,14 @@ let pp_proplist_parsed2dotty_file filename plist = let pp_cfgnodename pname fmt (n: Procdesc.Node.t) = F.fprintf fmt "\"%s_%d\"" (Typ.Procname.to_filename pname) (Procdesc.Node.get_id n :> int) -let pp_etlist fmt etl = - List.iter - ~f:(fun (id, ty) -> Format.fprintf fmt " %a:%a" Mangled.pp id (Typ.pp_full Pp.text) ty) +let pp_etlist byvals fmt etl = + List.iteri + ~f:(fun index (id, ({Typ.desc} as ty)) -> + let is_ptr = match desc with Tptr _ -> true | _ -> false in + let byval_mark = + if is_ptr && List.mem byvals index ~equal:Int.equal then "(byval)" else "" + in + Format.fprintf fmt " %a:%a%s" Mangled.pp id (Typ.pp_full Pp.text) ty byval_mark) etl let pp_local_list fmt etl = @@ -1106,11 +1111,12 @@ let pp_cfgnodelabel pdesc fmt (n: Procdesc.Node.t) = match Procdesc.Node.get_kind n with | Procdesc.Node.Start_node pname -> let pname_string = Typ.Procname.to_string pname in - Format.fprintf fmt "Start %s\\nFormals: %a\\nLocals: %a" pname_string pp_etlist + let attributes = Procdesc.get_attributes pdesc in + let byvals = attributes.ProcAttributes.by_vals in + Format.fprintf fmt "Start %s\\nFormals: %a\\nLocals: %a" pname_string (pp_etlist byvals) (Procdesc.get_formals pdesc) pp_local_list (Procdesc.get_locals pdesc) ; if List.length (Procdesc.get_captured pdesc) <> 0 then Format.fprintf fmt "\\nCaptured: %a" pp_local_list (Procdesc.get_captured pdesc) ; - let attributes = Procdesc.get_attributes pdesc in let method_annotation = attributes.ProcAttributes.method_annotation in if not (Annot.Method.is_empty method_annotation) then Format.fprintf fmt "\\nAnnotation: %a" (Annot.Method.pp pname_string) method_annotation diff --git a/infer/src/clang/cMethod_trans.ml b/infer/src/clang/cMethod_trans.ml index 8faeef768..a3617810a 100644 --- a/infer/src/clang/cMethod_trans.ml +++ b/infer/src/clang/cMethod_trans.ml @@ -403,6 +403,76 @@ let is_pointer_to_const {Clang_ast_t.qt_type_ptr} = | _ -> false +let is_value {Clang_ast_t.qt_type_ptr} = + match qt_type_ptr with + | Clang_ast_extend.Builtin _ + (* We rely on the assumption here that Clang_ast_extend.ReferenceOf is only created for pass-by-value structs. *) + (* TODO: Create a dedicated variant in Clang_ast_extend for pass-by-val params *) + | Clang_ast_extend.ReferenceOf _ + -> true + | Clang_ast_types.TypePtr.Ptr _ + -> let rec is_value_raw qt_type_ptr = + match CAst_utils.get_type qt_type_ptr with + | Some BuiltinType _ + | Some ComplexType _ + | Some DependentSizedExtVectorType _ + | Some VectorType _ + | Some ExtVectorType _ + | Some RecordType _ + | Some EnumType _ + | Some InjectedClassNameType _ + | Some ObjCObjectType _ + | Some ObjCInterfaceType _ + -> true + | Some AdjustedType (_, {Clang_ast_t.qt_type_ptr}) + | Some DecayedType (_, {Clang_ast_t.qt_type_ptr}) + | Some ParenType (_, {Clang_ast_t.qt_type_ptr}) + | Some DecltypeType (_, {Clang_ast_t.qt_type_ptr}) + | Some AtomicType (_, {Clang_ast_t.qt_type_ptr}) + -> is_value_raw qt_type_ptr + | Some TypedefType (_, {Clang_ast_t.tti_child_type}) + -> is_value_raw tti_child_type.Clang_ast_t.qt_type_ptr + (* These types could be value types, and we try our best to resolve them *) + | Some AttributedType ({Clang_ast_t.ti_desugared_type}, _) + | Some TypeOfExprType {Clang_ast_t.ti_desugared_type} + | Some TypeOfType {Clang_ast_t.ti_desugared_type} + | Some UnaryTransformType {Clang_ast_t.ti_desugared_type} + | Some ElaboratedType {Clang_ast_t.ti_desugared_type} + | Some AutoType {Clang_ast_t.ti_desugared_type} + | Some DependentNameType {Clang_ast_t.ti_desugared_type} + | Some DeducedTemplateSpecializationType {Clang_ast_t.ti_desugared_type} + | Some TemplateSpecializationType {Clang_ast_t.ti_desugared_type} + | Some DependentTemplateSpecializationType {Clang_ast_t.ti_desugared_type} + | Some TemplateTypeParmType {Clang_ast_t.ti_desugared_type} + | Some SubstTemplateTypeParmType {Clang_ast_t.ti_desugared_type} + | Some SubstTemplateTypeParmPackType {Clang_ast_t.ti_desugared_type} + | Some PackExpansionType {Clang_ast_t.ti_desugared_type} + | Some UnresolvedUsingType {Clang_ast_t.ti_desugared_type} -> ( + match ti_desugared_type with Some ptr -> is_value_raw ptr | None -> false ) + (* These types are known to be non-value types *) + | Some PointerType _ + | Some BlockPointerType _ + | Some LValueReferenceType _ + | Some RValueReferenceType _ + | Some MemberPointerType _ + | Some ConstantArrayType _ + | Some IncompleteArrayType _ + | Some VariableArrayType _ + | Some DependentSizedArrayType _ + | Some FunctionProtoType _ + | Some FunctionNoProtoType _ + | Some ObjCObjectPointerType _ + | Some NoneType _ + (* These types I don't know what they are. Be conservative and treat them as non value types *) + | Some ObjCTypeParamType _ + | Some PipeType _ + | None + -> false + in + is_value_raw qt_type_ptr + | _ + -> false + (** Returns a list of the indices of expressions in [args] which point to const-typed values. Each index is offset by [shift]. *) let get_const_args_indices ~shift args = @@ -416,6 +486,11 @@ let get_const_args_indices ~shift args = in aux [] args +let get_byval_args_indices ~shift args = + List.filter_mapi args ~f:(fun index (_, qual_type) -> + let index' = index + shift in + Option.some_if (is_value qual_type) index' ) + let get_objc_property_accessor ms = let open Clang_ast_t in match CAst_utils.get_decl_opt (CMethod_signature.ms_get_pointer_to_property_opt ms) with @@ -477,9 +552,16 @@ let create_local_procdesc ?(set_objc_accessor_attr= false) trans_unit_ctx cfg te get_const_args_indices ~shift:(List.length captured_mangled) (CMethod_signature.ms_get_args ms) in + let by_vals = + get_byval_args_indices ~shift:(List.length captured_mangled) + (CMethod_signature.ms_get_args ms) + in let source_range = CMethod_signature.ms_get_loc ms in L.(debug Capture Verbose) "@\nCreating a new procdesc for function: '%s'@\n@." pname ; L.(debug Capture Verbose) "@\nms = %s@\n@." (CMethod_signature.ms_to_string ms) ; + L.(debug Capture Verbose) + "@\nbyvals = [ %s ]@\n@." + (String.concat ~sep:", " (List.map by_vals ~f:string_of_int)) ; let loc_start = CLocation.get_sil_location_from_range trans_unit_ctx source_range true in let loc_exit = CLocation.get_sil_location_from_range trans_unit_ctx source_range false in let ret_type = get_return_type tenv ms in @@ -492,6 +574,7 @@ let create_local_procdesc ?(set_objc_accessor_attr= false) trans_unit_ctx cfg te ProcAttributes.captured= captured_mangled ; formals ; const_formals + ; by_vals ; access ; func_attributes= attributes ; is_defined= defined diff --git a/infer/tests/codetoanalyze/cpp/frontend/loops/foreach1.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/loops/foreach1.cpp.dot index ac79c6878..202a17196 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/loops/foreach1.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/loops/foreach1.cpp.dot @@ -52,7 +52,7 @@ digraph iCFG { "test#_Z4testv.1b928d988491fdd2fa78fcb048d46e8c_13" -> "test#_Z4testv.1b928d988491fdd2fa78fcb048d46e8c_12" ; -"operator!=#_Zne8iteratorS_.497d6549b2907c91697671b3c62dc141_1" [label="1: Start operator!=\nFormals: i1:iterator& i2:iterator&\nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:_Bool \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0); [line 21]\n " color=yellow style=filled] +"operator!=#_Zne8iteratorS_.497d6549b2907c91697671b3c62dc141_1" [label="1: Start operator!=\nFormals: i1:iterator&(byval) i2:iterator&(byval)\nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:_Bool \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0); [line 21]\n " color=yellow style=filled] "operator!=#_Zne8iteratorS_.497d6549b2907c91697671b3c62dc141_1" -> "operator!=#_Zne8iteratorS_.497d6549b2907c91697671b3c62dc141_4" ; diff --git a/infer/tests/codetoanalyze/cpp/shared/constructors/constructor_struct_init_list.cpp.dot b/infer/tests/codetoanalyze/cpp/shared/constructors/constructor_struct_init_list.cpp.dot index 1c6c8a7d2..96c1e4d93 100644 --- a/infer/tests/codetoanalyze/cpp/shared/constructors/constructor_struct_init_list.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/shared/constructors/constructor_struct_init_list.cpp.dot @@ -11,7 +11,7 @@ digraph iCFG { "test#_Z4testv.1b928d988491fdd2fa78fcb048d46e8c_3" -> "test#_Z4testv.1b928d988491fdd2fa78fcb048d46e8c_2" ; -"Person#Person#{_ZN6PersonC1E6Insets}.b24b6c175679d264f58881e04318df0d_1" [label="1: Start Person_Person\nFormals: this:Person* l:Insets const &\nLocals: \n DECLARE_LOCALS(&return); [line 14]\n " color=yellow style=filled] +"Person#Person#{_ZN6PersonC1E6Insets}.b24b6c175679d264f58881e04318df0d_1" [label="1: Start Person_Person\nFormals: this:Person* l:Insets const &(byval)\nLocals: \n DECLARE_LOCALS(&return); [line 14]\n " color=yellow style=filled] "Person#Person#{_ZN6PersonC1E6Insets}.b24b6c175679d264f58881e04318df0d_1" -> "Person#Person#{_ZN6PersonC1E6Insets}.b24b6c175679d264f58881e04318df0d_3" ; diff --git a/infer/tests/codetoanalyze/cpp/shared/constructors/std_init_list.cpp.dot b/infer/tests/codetoanalyze/cpp/shared/constructors/std_init_list.cpp.dot index 7e1e98f26..fd03e361a 100644 --- a/infer/tests/codetoanalyze/cpp/shared/constructors/std_init_list.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/shared/constructors/std_init_list.cpp.dot @@ -11,7 +11,7 @@ digraph iCFG { "main.fad58de7366495db4650cfefac2fcd61_3" -> "main.fad58de7366495db4650cfefac2fcd61_2" ; -"X#X#{_ZN1XC1ESt16initializer_listIiE}.778d0439d25462bdf7ed466490fcf946_1" [label="1: Start X_X\nFormals: this:X* list:std::initializer_list&\nLocals: i:int const * \n DECLARE_LOCALS(&return,&i); [line 14]\n " color=yellow style=filled] +"X#X#{_ZN1XC1ESt16initializer_listIiE}.778d0439d25462bdf7ed466490fcf946_1" [label="1: Start X_X\nFormals: this:X* list:std::initializer_list&(byval)\nLocals: i:int const * \n DECLARE_LOCALS(&return,&i); [line 14]\n " color=yellow style=filled] "X#X#{_ZN1XC1ESt16initializer_listIiE}.778d0439d25462bdf7ed466490fcf946_1" -> "X#X#{_ZN1XC1ESt16initializer_listIiE}.778d0439d25462bdf7ed466490fcf946_4" ; diff --git a/infer/tests/codetoanalyze/cpp/shared/methods/byvals.cpp b/infer/tests/codetoanalyze/cpp/shared/methods/byvals.cpp new file mode 100644 index 000000000..4defb93af --- /dev/null +++ b/infer/tests/codetoanalyze/cpp/shared/methods/byvals.cpp @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2017 - present Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ +#include + +namespace pass_by_val { + +struct PlainStruct { + int x; + int* y; +}; +PlainStruct dummy_struct{0, nullptr}; + +int plain_struct_by_val(PlainStruct p) { return p.x + *(p.y); } +int plain_struct_by_ref(PlainStruct& lref, + PlainStruct&& rref, + PlainStruct* ptr) { + return lref.x + rref.x + ptr->x; +} + +typedef PlainStruct PlainStructTypeDef1; +using PlainStructTypeDef2 = PlainStructTypeDef1; +typedef PlainStruct* PlainStructPtrTypeDef1; +using PlainStructPtrTypeDef2 = const PlainStruct*; + +int type_alias_by_val(PlainStructTypeDef1 p1, PlainStructTypeDef2 p2) { + return plain_struct_by_val(p1) + plain_struct_by_val(p2); +} +int type_alias_by_ref(PlainStructPtrTypeDef1 p1, PlainStructPtrTypeDef2 p2) { + return p1->x + p2->x; +} + +int decltype_by_val(decltype(dummy_struct) p) { return p.x + *(p.y); } +// decltype(paren_expr) follows different type deduction rules +int decltype_by_ref(decltype((dummy_struct)) p) { return p.x + *(p.y); } + +template +struct Id { + using Result = T; + + Id(T, T&, T&&) {} +}; + +int dependent_by_val(Id::Result p) { return p.x + *(p.y); } +int dependent_by_ref(Id::Result p) { return p.x + *(p.y); } + +double to_double(int x) { return x; } +template +struct Tricky { + using Result = decltype(to_double(N)); +}; +double tricky_dependent_by_val(Tricky<8>::Result t) { return t; } + +template +Id make_id(Args&&... args) { + return Id(std::forward(args)...); +} + +Id perfect_forwarding_by_ref() { + int a = 0, b = 1; + return make_id(a, b, 2); +} + +} // namespace pass_by_val diff --git a/infer/tests/codetoanalyze/cpp/shared/methods/byvals.cpp.dot b/infer/tests/codetoanalyze/cpp/shared/methods/byvals.cpp.dot new file mode 100644 index 000000000..aac84c869 --- /dev/null +++ b/infer/tests/codetoanalyze/cpp/shared/methods/byvals.cpp.dot @@ -0,0 +1,368 @@ +/* @generated */ +digraph iCFG { +"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]\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$pass_by_val::dummy_struct.x:int=0 [line 17]\n *&#GB$pass_by_val::dummy_struct.y:int*=null [line 17]\n " shape="box"] + + + "dummy_struct#__infer_globals_initializer_pass_by_val.24fe54080733cebf362d2b34e691bb44_3" -> "dummy_struct#__infer_globals_initializer_pass_by_val.24fe54080733cebf362d2b34e691bb44_2" ; +"piecewise_construct#__infer_globals_initializer_std.a38961a5a6e5f6ecbae901423d9145cf_1" [label="1: Start __infer_globals_initializer_std::piecewise_construct\nFormals: \nLocals: 0$?%__sil_tmpSIL_materialize_temp__n$0:std::piecewise_construct_t \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_materialize_temp__n$0); [line 296]\n " color=yellow style=filled] + + + "piecewise_construct#__infer_globals_initializer_std.a38961a5a6e5f6ecbae901423d9145cf_1" -> "piecewise_construct#__infer_globals_initializer_std.a38961a5a6e5f6ecbae901423d9145cf_3" ; +"piecewise_construct#__infer_globals_initializer_std.a38961a5a6e5f6ecbae901423d9145cf_2" [label="2: Exit __infer_globals_initializer_std::piecewise_construct \n " color=yellow style=filled] + + +"piecewise_construct#__infer_globals_initializer_std.a38961a5a6e5f6ecbae901423d9145cf_3" [label="3: DeclStmt \n _fun_std::piecewise_construct_t_piecewise_construct_t(&0$?%__sil_tmpSIL_materialize_temp__n$0:std::piecewise_construct_t*) [line 296]\n _fun_std::piecewise_construct_t_piecewise_construct_t(&#GB$std::piecewise_construct:std::piecewise_construct_t const *,&0$?%__sil_tmpSIL_materialize_temp__n$0:std::piecewise_construct_t&) [line 296]\n " shape="box"] + + + "piecewise_construct#__infer_globals_initializer_std.a38961a5a6e5f6ecbae901423d9145cf_3" -> "piecewise_construct#__infer_globals_initializer_std.a38961a5a6e5f6ecbae901423d9145cf_2" ; +"value#__numeric_type#__infer_globals_initializer_std.47862f77402cf0b9a8f85342f9963960_1" [label="1: Start __infer_globals_initializer_std::__numeric_type::value\nFormals: \nLocals: \n DECLARE_LOCALS(&return); [line 1738]\n " color=yellow style=filled] + + + "value#__numeric_type#__infer_globals_initializer_std.47862f77402cf0b9a8f85342f9963960_1" -> "value#__numeric_type#__infer_globals_initializer_std.47862f77402cf0b9a8f85342f9963960_3" ; +"value#__numeric_type#__infer_globals_initializer_std.47862f77402cf0b9a8f85342f9963960_2" [label="2: Exit __infer_globals_initializer_std::__numeric_type::value \n " color=yellow style=filled] + + +"value#__numeric_type#__infer_globals_initializer_std.47862f77402cf0b9a8f85342f9963960_3" [label="3: DeclStmt \n *&#GB$std::__numeric_type::value:_Bool=1 [line 1738]\n " shape="box"] + + + "value#__numeric_type#__infer_globals_initializer_std.47862f77402cf0b9a8f85342f9963960_3" -> "value#__numeric_type#__infer_globals_initializer_std.47862f77402cf0b9a8f85342f9963960_2" ; +"perfect_forwarding_by_ref#pass_by_val#_ZN11pass_by_val25perfect_forwarding_by_refEv.70e005ea8116a923450a0f8cc86a7027_1" [label="1: Start pass_by_val::perfect_forwarding_by_ref\nFormals: __return_param:pass_by_val::Id*\nLocals: 0$?%__sil_tmpSIL_materialize_temp__n$2:int 0$?%__sil_tmpSIL_materialize_temp__n$1:pass_by_val::Id 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]\n " color=yellow style=filled] + + + "perfect_forwarding_by_ref#pass_by_val#_ZN11pass_by_val25perfect_forwarding_by_refEv.70e005ea8116a923450a0f8cc86a7027_1" -> "perfect_forwarding_by_ref#pass_by_val#_ZN11pass_by_val25perfect_forwarding_by_refEv.70e005ea8116a923450a0f8cc86a7027_5" ; +"perfect_forwarding_by_ref#pass_by_val#_ZN11pass_by_val25perfect_forwarding_by_refEv.70e005ea8116a923450a0f8cc86a7027_2" [label="2: Exit pass_by_val::perfect_forwarding_by_ref \n " color=yellow style=filled] + + +"perfect_forwarding_by_ref#pass_by_val#_ZN11pass_by_val25perfect_forwarding_by_refEv.70e005ea8116a923450a0f8cc86a7027_3" [label="3: Return Stmt \n n$0=*&__return_param:pass_by_val::Id* [line 66]\n *&0$?%__sil_tmpSIL_materialize_temp__n$2:int=2 [line 66]\n _fun_pass_by_val::make_id(&a:int&,&b:int&,&0$?%__sil_tmpSIL_materialize_temp__n$2:int&,&0$?%__sil_tmpSIL_materialize_temp__n$1:pass_by_val::Id*) [line 66]\n _fun_pass_by_val::Id_Id(n$0:pass_by_val::Id*,&0$?%__sil_tmpSIL_materialize_temp__n$1:pass_by_val::Id&) [line 66]\n " shape="box"] + + + "perfect_forwarding_by_ref#pass_by_val#_ZN11pass_by_val25perfect_forwarding_by_refEv.70e005ea8116a923450a0f8cc86a7027_3" -> "perfect_forwarding_by_ref#pass_by_val#_ZN11pass_by_val25perfect_forwarding_by_refEv.70e005ea8116a923450a0f8cc86a7027_2" ; +"perfect_forwarding_by_ref#pass_by_val#_ZN11pass_by_val25perfect_forwarding_by_refEv.70e005ea8116a923450a0f8cc86a7027_4" [label="4: DeclStmt \n *&b:int=1 [line 65]\n " shape="box"] + + + "perfect_forwarding_by_ref#pass_by_val#_ZN11pass_by_val25perfect_forwarding_by_refEv.70e005ea8116a923450a0f8cc86a7027_4" -> "perfect_forwarding_by_ref#pass_by_val#_ZN11pass_by_val25perfect_forwarding_by_refEv.70e005ea8116a923450a0f8cc86a7027_3" ; +"perfect_forwarding_by_ref#pass_by_val#_ZN11pass_by_val25perfect_forwarding_by_refEv.70e005ea8116a923450a0f8cc86a7027_5" [label="5: DeclStmt \n *&a:int=0 [line 65]\n " shape="box"] + + + "perfect_forwarding_by_ref#pass_by_val#_ZN11pass_by_val25perfect_forwarding_by_refEv.70e005ea8116a923450a0f8cc86a7027_5" -> "perfect_forwarding_by_ref#pass_by_val#_ZN11pass_by_val25perfect_forwarding_by_refEv.70e005ea8116a923450a0f8cc86a7027_4" ; +"forward#std#_ZNSt3__17forwardIiEEOT_RNS_16remove_referenceIS1_E4typeE.523eb59a8ab2703c1dd26505ac3ca320_1" [label="1: Start std::forward\nFormals: __t:int&\nLocals: \n DECLARE_LOCALS(&return); [line 2185]\n " color=yellow style=filled] + + + "forward#std#_ZNSt3__17forwardIiEEOT_RNS_16remove_referenceIS1_E4typeE.523eb59a8ab2703c1dd26505ac3ca320_1" -> "forward#std#_ZNSt3__17forwardIiEEOT_RNS_16remove_referenceIS1_E4typeE.523eb59a8ab2703c1dd26505ac3ca320_3" ; +"forward#std#_ZNSt3__17forwardIiEEOT_RNS_16remove_referenceIS1_E4typeE.523eb59a8ab2703c1dd26505ac3ca320_2" [label="2: Exit std::forward \n " color=yellow style=filled] + + +"forward#std#_ZNSt3__17forwardIiEEOT_RNS_16remove_referenceIS1_E4typeE.523eb59a8ab2703c1dd26505ac3ca320_3" [label="3: Return Stmt \n n$0=*&__t:int& [line 2189]\n *&return:int&=n$0 [line 2189]\n " shape="box"] + + + "forward#std#_ZNSt3__17forwardIiEEOT_RNS_16remove_referenceIS1_E4typeE.523eb59a8ab2703c1dd26505ac3ca320_3" -> "forward#std#_ZNSt3__17forwardIiEEOT_RNS_16remove_referenceIS1_E4typeE.523eb59a8ab2703c1dd26505ac3ca320_2" ; +"forward#std#_ZNSt3__17forwardIRiEEOT_RNS_16remove_referenceIS2_E4typeE.cc2f793965345ea3bcde70d7318c5716_1" [label="1: Start std::forward\nFormals: __t:int&\nLocals: \n DECLARE_LOCALS(&return); [line 2185]\n " color=yellow style=filled] + + + "forward#std#_ZNSt3__17forwardIRiEEOT_RNS_16remove_referenceIS2_E4typeE.cc2f793965345ea3bcde70d7318c5716_1" -> "forward#std#_ZNSt3__17forwardIRiEEOT_RNS_16remove_referenceIS2_E4typeE.cc2f793965345ea3bcde70d7318c5716_3" ; +"forward#std#_ZNSt3__17forwardIRiEEOT_RNS_16remove_referenceIS2_E4typeE.cc2f793965345ea3bcde70d7318c5716_2" [label="2: Exit std::forward \n " color=yellow style=filled] + + +"forward#std#_ZNSt3__17forwardIRiEEOT_RNS_16remove_referenceIS2_E4typeE.cc2f793965345ea3bcde70d7318c5716_3" [label="3: Return Stmt \n n$0=*&__t:int& [line 2189]\n *&return:int&=n$0 [line 2189]\n " shape="box"] + + + "forward#std#_ZNSt3__17forwardIRiEEOT_RNS_16remove_referenceIS2_E4typeE.cc2f793965345ea3bcde70d7318c5716_3" -> "forward#std#_ZNSt3__17forwardIRiEEOT_RNS_16remove_referenceIS2_E4typeE.cc2f793965345ea3bcde70d7318c5716_2" ; +"__convert_to_integral#std#_ZNSt3__121__convert_to_integralEi.43b0259cdf1b6086b5b232de7e5ddc3b_1" [label="1: Start std::__convert_to_integral\nFormals: __val:int\nLocals: \n DECLARE_LOCALS(&return); [line 4590]\n " color=yellow style=filled] + + + "__convert_to_integral#std#_ZNSt3__121__convert_to_integralEi.43b0259cdf1b6086b5b232de7e5ddc3b_1" -> "__convert_to_integral#std#_ZNSt3__121__convert_to_integralEi.43b0259cdf1b6086b5b232de7e5ddc3b_3" ; +"__convert_to_integral#std#_ZNSt3__121__convert_to_integralEi.43b0259cdf1b6086b5b232de7e5ddc3b_2" [label="2: Exit std::__convert_to_integral \n " color=yellow style=filled] + + +"__convert_to_integral#std#_ZNSt3__121__convert_to_integralEi.43b0259cdf1b6086b5b232de7e5ddc3b_3" [label="3: Return Stmt \n n$0=*&__val:int [line 4591]\n *&return:int=n$0 [line 4591]\n " shape="box"] + + + "__convert_to_integral#std#_ZNSt3__121__convert_to_integralEi.43b0259cdf1b6086b5b232de7e5ddc3b_3" -> "__convert_to_integral#std#_ZNSt3__121__convert_to_integralEi.43b0259cdf1b6086b5b232de7e5ddc3b_2" ; +"__convert_to_integral#std#_ZNSt3__121__convert_to_integralEn.f0a547f6acd880fbe54bf8cd9fcfe151_1" [label="1: Start std::__convert_to_integral\nFormals: __val:int\nLocals: \n DECLARE_LOCALS(&return); [line 4609]\n " color=yellow style=filled] + + + "__convert_to_integral#std#_ZNSt3__121__convert_to_integralEn.f0a547f6acd880fbe54bf8cd9fcfe151_1" -> "__convert_to_integral#std#_ZNSt3__121__convert_to_integralEn.f0a547f6acd880fbe54bf8cd9fcfe151_3" ; +"__convert_to_integral#std#_ZNSt3__121__convert_to_integralEn.f0a547f6acd880fbe54bf8cd9fcfe151_2" [label="2: Exit std::__convert_to_integral \n " color=yellow style=filled] + + +"__convert_to_integral#std#_ZNSt3__121__convert_to_integralEn.f0a547f6acd880fbe54bf8cd9fcfe151_3" [label="3: Return Stmt \n n$0=*&__val:int [line 4610]\n *&return:int=n$0 [line 4610]\n " shape="box"] + + + "__convert_to_integral#std#_ZNSt3__121__convert_to_integralEn.f0a547f6acd880fbe54bf8cd9fcfe151_3" -> "__convert_to_integral#std#_ZNSt3__121__convert_to_integralEn.f0a547f6acd880fbe54bf8cd9fcfe151_2" ; +"__convert_to_integral#std#_ZNSt3__121__convert_to_integralEj.fd205920d652f02f0b9a9b89e450a068_1" [label="1: Start std::__convert_to_integral\nFormals: __val:unsigned int\nLocals: \n DECLARE_LOCALS(&return); [line 4593]\n " color=yellow style=filled] + + + "__convert_to_integral#std#_ZNSt3__121__convert_to_integralEj.fd205920d652f02f0b9a9b89e450a068_1" -> "__convert_to_integral#std#_ZNSt3__121__convert_to_integralEj.fd205920d652f02f0b9a9b89e450a068_3" ; +"__convert_to_integral#std#_ZNSt3__121__convert_to_integralEj.fd205920d652f02f0b9a9b89e450a068_2" [label="2: Exit std::__convert_to_integral \n " color=yellow style=filled] + + +"__convert_to_integral#std#_ZNSt3__121__convert_to_integralEj.fd205920d652f02f0b9a9b89e450a068_3" [label="3: Return Stmt \n n$0=*&__val:unsigned int [line 4594]\n *&return:unsigned int=n$0 [line 4594]\n " shape="box"] + + + "__convert_to_integral#std#_ZNSt3__121__convert_to_integralEj.fd205920d652f02f0b9a9b89e450a068_3" -> "__convert_to_integral#std#_ZNSt3__121__convert_to_integralEj.fd205920d652f02f0b9a9b89e450a068_2" ; +"__convert_to_integral#std#_ZNSt3__121__convert_to_integralEo.15fc37df335893286e47ebfc292083c1_1" [label="1: Start std::__convert_to_integral\nFormals: __val:unsigned int\nLocals: \n DECLARE_LOCALS(&return); [line 4612]\n " color=yellow style=filled] + + + "__convert_to_integral#std#_ZNSt3__121__convert_to_integralEo.15fc37df335893286e47ebfc292083c1_1" -> "__convert_to_integral#std#_ZNSt3__121__convert_to_integralEo.15fc37df335893286e47ebfc292083c1_3" ; +"__convert_to_integral#std#_ZNSt3__121__convert_to_integralEo.15fc37df335893286e47ebfc292083c1_2" [label="2: Exit std::__convert_to_integral \n " color=yellow style=filled] + + +"__convert_to_integral#std#_ZNSt3__121__convert_to_integralEo.15fc37df335893286e47ebfc292083c1_3" [label="3: Return Stmt \n n$0=*&__val:unsigned int [line 4613]\n *&return:unsigned int=n$0 [line 4613]\n " shape="box"] + + + "__convert_to_integral#std#_ZNSt3__121__convert_to_integralEo.15fc37df335893286e47ebfc292083c1_3" -> "__convert_to_integral#std#_ZNSt3__121__convert_to_integralEo.15fc37df335893286e47ebfc292083c1_2" ; +"__convert_to_integral#std#_ZNSt3__121__convert_to_integralEl.19b65e5b35784a4d6b1ba397569565af_1" [label="1: Start std::__convert_to_integral\nFormals: __val:long\nLocals: \n DECLARE_LOCALS(&return); [line 4596]\n " color=yellow style=filled] + + + "__convert_to_integral#std#_ZNSt3__121__convert_to_integralEl.19b65e5b35784a4d6b1ba397569565af_1" -> "__convert_to_integral#std#_ZNSt3__121__convert_to_integralEl.19b65e5b35784a4d6b1ba397569565af_3" ; +"__convert_to_integral#std#_ZNSt3__121__convert_to_integralEl.19b65e5b35784a4d6b1ba397569565af_2" [label="2: Exit std::__convert_to_integral \n " color=yellow style=filled] + + +"__convert_to_integral#std#_ZNSt3__121__convert_to_integralEl.19b65e5b35784a4d6b1ba397569565af_3" [label="3: Return Stmt \n n$0=*&__val:long [line 4597]\n *&return:long=n$0 [line 4597]\n " shape="box"] + + + "__convert_to_integral#std#_ZNSt3__121__convert_to_integralEl.19b65e5b35784a4d6b1ba397569565af_3" -> "__convert_to_integral#std#_ZNSt3__121__convert_to_integralEl.19b65e5b35784a4d6b1ba397569565af_2" ; +"__convert_to_integral#std#_ZNSt3__121__convert_to_integralEm.111d95b3f3b4d5dd40ab1add8f243f84_1" [label="1: Start std::__convert_to_integral\nFormals: __val:unsigned long\nLocals: \n DECLARE_LOCALS(&return); [line 4599]\n " color=yellow style=filled] + + + "__convert_to_integral#std#_ZNSt3__121__convert_to_integralEm.111d95b3f3b4d5dd40ab1add8f243f84_1" -> "__convert_to_integral#std#_ZNSt3__121__convert_to_integralEm.111d95b3f3b4d5dd40ab1add8f243f84_3" ; +"__convert_to_integral#std#_ZNSt3__121__convert_to_integralEm.111d95b3f3b4d5dd40ab1add8f243f84_2" [label="2: Exit std::__convert_to_integral \n " color=yellow style=filled] + + +"__convert_to_integral#std#_ZNSt3__121__convert_to_integralEm.111d95b3f3b4d5dd40ab1add8f243f84_3" [label="3: Return Stmt \n n$0=*&__val:unsigned long [line 4600]\n *&return:unsigned long=n$0 [line 4600]\n " shape="box"] + + + "__convert_to_integral#std#_ZNSt3__121__convert_to_integralEm.111d95b3f3b4d5dd40ab1add8f243f84_3" -> "__convert_to_integral#std#_ZNSt3__121__convert_to_integralEm.111d95b3f3b4d5dd40ab1add8f243f84_2" ; +"__convert_to_integral#std#_ZNSt3__121__convert_to_integralEx.c1183c63775e8691319a0bd03664ac0c_1" [label="1: Start std::__convert_to_integral\nFormals: __val:long long\nLocals: \n DECLARE_LOCALS(&return); [line 4602]\n " color=yellow style=filled] + + + "__convert_to_integral#std#_ZNSt3__121__convert_to_integralEx.c1183c63775e8691319a0bd03664ac0c_1" -> "__convert_to_integral#std#_ZNSt3__121__convert_to_integralEx.c1183c63775e8691319a0bd03664ac0c_3" ; +"__convert_to_integral#std#_ZNSt3__121__convert_to_integralEx.c1183c63775e8691319a0bd03664ac0c_2" [label="2: Exit std::__convert_to_integral \n " color=yellow style=filled] + + +"__convert_to_integral#std#_ZNSt3__121__convert_to_integralEx.c1183c63775e8691319a0bd03664ac0c_3" [label="3: Return Stmt \n n$0=*&__val:long long [line 4603]\n *&return:long long=n$0 [line 4603]\n " shape="box"] + + + "__convert_to_integral#std#_ZNSt3__121__convert_to_integralEx.c1183c63775e8691319a0bd03664ac0c_3" -> "__convert_to_integral#std#_ZNSt3__121__convert_to_integralEx.c1183c63775e8691319a0bd03664ac0c_2" ; +"__convert_to_integral#std#_ZNSt3__121__convert_to_integralEy.4261f4b82618cc6ea34bb4631aefbdda_1" [label="1: Start std::__convert_to_integral\nFormals: __val:unsigned long long\nLocals: \n DECLARE_LOCALS(&return); [line 4605]\n " color=yellow style=filled] + + + "__convert_to_integral#std#_ZNSt3__121__convert_to_integralEy.4261f4b82618cc6ea34bb4631aefbdda_1" -> "__convert_to_integral#std#_ZNSt3__121__convert_to_integralEy.4261f4b82618cc6ea34bb4631aefbdda_3" ; +"__convert_to_integral#std#_ZNSt3__121__convert_to_integralEy.4261f4b82618cc6ea34bb4631aefbdda_2" [label="2: Exit std::__convert_to_integral \n " color=yellow style=filled] + + +"__convert_to_integral#std#_ZNSt3__121__convert_to_integralEy.4261f4b82618cc6ea34bb4631aefbdda_3" [label="3: Return Stmt \n n$0=*&__val:unsigned long long [line 4606]\n *&return:unsigned long long=n$0 [line 4606]\n " shape="box"] + + + "__convert_to_integral#std#_ZNSt3__121__convert_to_integralEy.4261f4b82618cc6ea34bb4631aefbdda_3" -> "__convert_to_integral#std#_ZNSt3__121__convert_to_integralEy.4261f4b82618cc6ea34bb4631aefbdda_2" ; +"make_id#pass_by_val#_ZN11pass_by_val7make_idIiJRiS1_iEEENS_2IdIT_EEDpOT0_.fc56c12cd0be2266e2f49018e25bd777_1" [label="1: Start pass_by_val::make_id\nFormals: args:int& args:int& args:int& __return_param:pass_by_val::Id*\nLocals: 0$?%__sil_tmpSIL_materialize_temp__n$1:pass_by_val::Id \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_materialize_temp__n$1); [line 60]\n " color=yellow style=filled] + + + "make_id#pass_by_val#_ZN11pass_by_val7make_idIiJRiS1_iEEENS_2IdIT_EEDpOT0_.fc56c12cd0be2266e2f49018e25bd777_1" -> "make_id#pass_by_val#_ZN11pass_by_val7make_idIiJRiS1_iEEENS_2IdIT_EEDpOT0_.fc56c12cd0be2266e2f49018e25bd777_3" ; +"make_id#pass_by_val#_ZN11pass_by_val7make_idIiJRiS1_iEEENS_2IdIT_EEDpOT0_.fc56c12cd0be2266e2f49018e25bd777_2" [label="2: Exit pass_by_val::make_id \n " color=yellow style=filled] + + +"make_id#pass_by_val#_ZN11pass_by_val7make_idIiJRiS1_iEEENS_2IdIT_EEDpOT0_.fc56c12cd0be2266e2f49018e25bd777_3" [label="3: Return Stmt \n n$0=*&__return_param:pass_by_val::Id* [line 61]\n n$2=*&args:int& [line 61]\n n$3=_fun_std::forward(n$2:int&) [line 61]\n n$4=*n$3:int [line 61]\n n$5=*&args:int& [line 61]\n n$6=_fun_std::forward(n$5:int&) [line 61]\n n$7=*&args:int& [line 61]\n n$8=_fun_std::forward(n$7:int&) [line 61]\n _fun_pass_by_val::Id_Id(&0$?%__sil_tmpSIL_materialize_temp__n$1:pass_by_val::Id*,n$4:int,n$6:int&,n$8:int&) [line 61]\n _fun_pass_by_val::Id_Id(n$0:pass_by_val::Id*,&0$?%__sil_tmpSIL_materialize_temp__n$1:pass_by_val::Id&) [line 61]\n " shape="box"] + + + "make_id#pass_by_val#_ZN11pass_by_val7make_idIiJRiS1_iEEENS_2IdIT_EEDpOT0_.fc56c12cd0be2266e2f49018e25bd777_3" -> "make_id#pass_by_val#_ZN11pass_by_val7make_idIiJRiS1_iEEENS_2IdIT_EEDpOT0_.fc56c12cd0be2266e2f49018e25bd777_2" ; +"plain_struct_by_ref#pass_by_val#_ZN11pass_by_val19plain_struct_by_refERNS_11PlainStructEOS0_PS0_.7f42f8f13f5c90589a8bcd4fc33e4986_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]\n " color=yellow style=filled] + + + "plain_struct_by_ref#pass_by_val#_ZN11pass_by_val19plain_struct_by_refERNS_11PlainStructEOS0_PS0_.7f42f8f13f5c90589a8bcd4fc33e4986_1" -> "plain_struct_by_ref#pass_by_val#_ZN11pass_by_val19plain_struct_by_refERNS_11PlainStructEOS0_PS0_.7f42f8f13f5c90589a8bcd4fc33e4986_3" ; +"plain_struct_by_ref#pass_by_val#_ZN11pass_by_val19plain_struct_by_refERNS_11PlainStructEOS0_PS0_.7f42f8f13f5c90589a8bcd4fc33e4986_2" [label="2: Exit pass_by_val::plain_struct_by_ref \n " color=yellow style=filled] + + +"plain_struct_by_ref#pass_by_val#_ZN11pass_by_val19plain_struct_by_refERNS_11PlainStructEOS0_PS0_.7f42f8f13f5c90589a8bcd4fc33e4986_3" [label="3: Return Stmt \n n$0=*&lref:pass_by_val::PlainStruct& [line 23]\n n$1=*n$0.x:int [line 23]\n n$2=*&rref:pass_by_val::PlainStruct& [line 23]\n n$3=*n$2.x:int [line 23]\n n$4=*&ptr:pass_by_val::PlainStruct* [line 23]\n n$5=*n$4.x:int [line 23]\n *&return:int=((n$1 + n$3) + n$5) [line 23]\n " shape="box"] + + + "plain_struct_by_ref#pass_by_val#_ZN11pass_by_val19plain_struct_by_refERNS_11PlainStructEOS0_PS0_.7f42f8f13f5c90589a8bcd4fc33e4986_3" -> "plain_struct_by_ref#pass_by_val#_ZN11pass_by_val19plain_struct_by_refERNS_11PlainStructEOS0_PS0_.7f42f8f13f5c90589a8bcd4fc33e4986_2" ; +"decltype_by_ref#pass_by_val#_ZN11pass_by_val15decltype_by_refERNS_11PlainStructE.d48e158410d4a50b78e8abb1b40a30dd_1" [label="1: Start pass_by_val::decltype_by_ref\nFormals: p:pass_by_val::PlainStruct&\nLocals: \n DECLARE_LOCALS(&return); [line 40]\n " color=yellow style=filled] + + + "decltype_by_ref#pass_by_val#_ZN11pass_by_val15decltype_by_refERNS_11PlainStructE.d48e158410d4a50b78e8abb1b40a30dd_1" -> "decltype_by_ref#pass_by_val#_ZN11pass_by_val15decltype_by_refERNS_11PlainStructE.d48e158410d4a50b78e8abb1b40a30dd_3" ; +"decltype_by_ref#pass_by_val#_ZN11pass_by_val15decltype_by_refERNS_11PlainStructE.d48e158410d4a50b78e8abb1b40a30dd_2" [label="2: Exit pass_by_val::decltype_by_ref \n " color=yellow style=filled] + + +"decltype_by_ref#pass_by_val#_ZN11pass_by_val15decltype_by_refERNS_11PlainStructE.d48e158410d4a50b78e8abb1b40a30dd_3" [label="3: Return Stmt \n n$0=*&p:pass_by_val::PlainStruct& [line 40]\n n$1=*n$0.x:int [line 40]\n n$2=*&p:pass_by_val::PlainStruct& [line 40]\n n$3=*n$2.y:int* [line 40]\n n$4=*n$3:int [line 40]\n *&return:int=(n$1 + n$4) [line 40]\n " shape="box"] + + + "decltype_by_ref#pass_by_val#_ZN11pass_by_val15decltype_by_refERNS_11PlainStructE.d48e158410d4a50b78e8abb1b40a30dd_3" -> "decltype_by_ref#pass_by_val#_ZN11pass_by_val15decltype_by_refERNS_11PlainStructE.d48e158410d4a50b78e8abb1b40a30dd_2" ; +"plain_struct_by_val#pass_by_val#_ZN11pass_by_val19plain_struct_by_valENS_11PlainStructE.5aa68348141f02027afcba4e0e736cbb_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]\n " color=yellow style=filled] + + + "plain_struct_by_val#pass_by_val#_ZN11pass_by_val19plain_struct_by_valENS_11PlainStructE.5aa68348141f02027afcba4e0e736cbb_1" -> "plain_struct_by_val#pass_by_val#_ZN11pass_by_val19plain_struct_by_valENS_11PlainStructE.5aa68348141f02027afcba4e0e736cbb_3" ; +"plain_struct_by_val#pass_by_val#_ZN11pass_by_val19plain_struct_by_valENS_11PlainStructE.5aa68348141f02027afcba4e0e736cbb_2" [label="2: Exit pass_by_val::plain_struct_by_val \n " color=yellow style=filled] + + +"plain_struct_by_val#pass_by_val#_ZN11pass_by_val19plain_struct_by_valENS_11PlainStructE.5aa68348141f02027afcba4e0e736cbb_3" [label="3: Return Stmt \n n$0=*&p:pass_by_val::PlainStruct& [line 19]\n n$1=*n$0.x:int [line 19]\n n$2=*&p:pass_by_val::PlainStruct& [line 19]\n n$3=*n$2.y:int* [line 19]\n n$4=*n$3:int [line 19]\n *&return:int=(n$1 + n$4) [line 19]\n " shape="box"] + + + "plain_struct_by_val#pass_by_val#_ZN11pass_by_val19plain_struct_by_valENS_11PlainStructE.5aa68348141f02027afcba4e0e736cbb_3" -> "plain_struct_by_val#pass_by_val#_ZN11pass_by_val19plain_struct_by_valENS_11PlainStructE.5aa68348141f02027afcba4e0e736cbb_2" ; +"decltype_by_val#pass_by_val#_ZN11pass_by_val15decltype_by_valENS_11PlainStructE.ec191dedb7475d4f34a5460ddf9bfaf5_1" [label="1: Start pass_by_val::decltype_by_val\nFormals: p:pass_by_val::PlainStruct&(byval)\nLocals: \n DECLARE_LOCALS(&return); [line 38]\n " color=yellow style=filled] + + + "decltype_by_val#pass_by_val#_ZN11pass_by_val15decltype_by_valENS_11PlainStructE.ec191dedb7475d4f34a5460ddf9bfaf5_1" -> "decltype_by_val#pass_by_val#_ZN11pass_by_val15decltype_by_valENS_11PlainStructE.ec191dedb7475d4f34a5460ddf9bfaf5_3" ; +"decltype_by_val#pass_by_val#_ZN11pass_by_val15decltype_by_valENS_11PlainStructE.ec191dedb7475d4f34a5460ddf9bfaf5_2" [label="2: Exit pass_by_val::decltype_by_val \n " color=yellow style=filled] + + +"decltype_by_val#pass_by_val#_ZN11pass_by_val15decltype_by_valENS_11PlainStructE.ec191dedb7475d4f34a5460ddf9bfaf5_3" [label="3: Return Stmt \n n$0=*&p:pass_by_val::PlainStruct& [line 38]\n n$1=*n$0.x:int [line 38]\n n$2=*&p:pass_by_val::PlainStruct& [line 38]\n n$3=*n$2.y:int* [line 38]\n n$4=*n$3:int [line 38]\n *&return:int=(n$1 + n$4) [line 38]\n " shape="box"] + + + "decltype_by_val#pass_by_val#_ZN11pass_by_val15decltype_by_valENS_11PlainStructE.ec191dedb7475d4f34a5460ddf9bfaf5_3" -> "decltype_by_val#pass_by_val#_ZN11pass_by_val15decltype_by_valENS_11PlainStructE.ec191dedb7475d4f34a5460ddf9bfaf5_2" ; +"dependent_by_val#pass_by_val#_ZN11pass_by_val16dependent_by_valENS_11PlainStructE.e64b679cc4105fd0ea7a79163ec16376_1" [label="1: Start pass_by_val::dependent_by_val\nFormals: p:pass_by_val::PlainStruct&(byval)\nLocals: \n DECLARE_LOCALS(&return); [line 49]\n " color=yellow style=filled] + + + "dependent_by_val#pass_by_val#_ZN11pass_by_val16dependent_by_valENS_11PlainStructE.e64b679cc4105fd0ea7a79163ec16376_1" -> "dependent_by_val#pass_by_val#_ZN11pass_by_val16dependent_by_valENS_11PlainStructE.e64b679cc4105fd0ea7a79163ec16376_3" ; +"dependent_by_val#pass_by_val#_ZN11pass_by_val16dependent_by_valENS_11PlainStructE.e64b679cc4105fd0ea7a79163ec16376_2" [label="2: Exit pass_by_val::dependent_by_val \n " color=yellow style=filled] + + +"dependent_by_val#pass_by_val#_ZN11pass_by_val16dependent_by_valENS_11PlainStructE.e64b679cc4105fd0ea7a79163ec16376_3" [label="3: Return Stmt \n n$0=*&p:pass_by_val::PlainStruct& [line 49]\n n$1=*n$0.x:int [line 49]\n n$2=*&p:pass_by_val::PlainStruct& [line 49]\n n$3=*n$2.y:int* [line 49]\n n$4=*n$3:int [line 49]\n *&return:int=(n$1 + n$4) [line 49]\n " shape="box"] + + + "dependent_by_val#pass_by_val#_ZN11pass_by_val16dependent_by_valENS_11PlainStructE.e64b679cc4105fd0ea7a79163ec16376_3" -> "dependent_by_val#pass_by_val#_ZN11pass_by_val16dependent_by_valENS_11PlainStructE.e64b679cc4105fd0ea7a79163ec16376_2" ; +"dependent_by_ref#pass_by_val#_ZN11pass_by_val16dependent_by_refERKNS_11PlainStructE.9a76334c554b31570d038d4140275829_1" [label="1: Start pass_by_val::dependent_by_ref\nFormals: p:pass_by_val::PlainStruct const &\nLocals: \n DECLARE_LOCALS(&return); [line 50]\n " color=yellow style=filled] + + + "dependent_by_ref#pass_by_val#_ZN11pass_by_val16dependent_by_refERKNS_11PlainStructE.9a76334c554b31570d038d4140275829_1" -> "dependent_by_ref#pass_by_val#_ZN11pass_by_val16dependent_by_refERKNS_11PlainStructE.9a76334c554b31570d038d4140275829_3" ; +"dependent_by_ref#pass_by_val#_ZN11pass_by_val16dependent_by_refERKNS_11PlainStructE.9a76334c554b31570d038d4140275829_2" [label="2: Exit pass_by_val::dependent_by_ref \n " color=yellow style=filled] + + +"dependent_by_ref#pass_by_val#_ZN11pass_by_val16dependent_by_refERKNS_11PlainStructE.9a76334c554b31570d038d4140275829_3" [label="3: Return Stmt \n n$0=*&p:pass_by_val::PlainStruct const & [line 50]\n n$1=*n$0.x:int [line 50]\n n$2=*&p:pass_by_val::PlainStruct const & [line 50]\n n$3=*n$2.y:int* [line 50]\n n$4=*n$3:int [line 50]\n *&return:int=(n$1 + n$4) [line 50]\n " shape="box"] + + + "dependent_by_ref#pass_by_val#_ZN11pass_by_val16dependent_by_refERKNS_11PlainStructE.9a76334c554b31570d038d4140275829_3" -> "dependent_by_ref#pass_by_val#_ZN11pass_by_val16dependent_by_refERKNS_11PlainStructE.9a76334c554b31570d038d4140275829_2" ; +"type_alias_by_ref#pass_by_val#_ZN11pass_by_val17type_alias_by_refEPNS_11PlainStructEPKS0_.252d358c8562c0f537938746672dc00e_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]\n " color=yellow style=filled] + + + "type_alias_by_ref#pass_by_val#_ZN11pass_by_val17type_alias_by_refEPNS_11PlainStructEPKS0_.252d358c8562c0f537938746672dc00e_1" -> "type_alias_by_ref#pass_by_val#_ZN11pass_by_val17type_alias_by_refEPNS_11PlainStructEPKS0_.252d358c8562c0f537938746672dc00e_3" ; +"type_alias_by_ref#pass_by_val#_ZN11pass_by_val17type_alias_by_refEPNS_11PlainStructEPKS0_.252d358c8562c0f537938746672dc00e_2" [label="2: Exit pass_by_val::type_alias_by_ref \n " color=yellow style=filled] + + +"type_alias_by_ref#pass_by_val#_ZN11pass_by_val17type_alias_by_refEPNS_11PlainStructEPKS0_.252d358c8562c0f537938746672dc00e_3" [label="3: Return Stmt \n n$0=*&p1:pass_by_val::PlainStruct* [line 35]\n n$1=*n$0.x:int [line 35]\n n$2=*&p2:pass_by_val::PlainStruct const * [line 35]\n n$3=*n$2.x:int [line 35]\n *&return:int=(n$1 + n$3) [line 35]\n " shape="box"] + + + "type_alias_by_ref#pass_by_val#_ZN11pass_by_val17type_alias_by_refEPNS_11PlainStructEPKS0_.252d358c8562c0f537938746672dc00e_3" -> "type_alias_by_ref#pass_by_val#_ZN11pass_by_val17type_alias_by_refEPNS_11PlainStructEPKS0_.252d358c8562c0f537938746672dc00e_2" ; +"type_alias_by_val#pass_by_val#_ZN11pass_by_val17type_alias_by_valENS_11PlainStructES0_.b12ef66d05f83a2d989839d68ae6f5d8_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$3:pass_by_val::PlainStruct \n DECLARE_LOCALS(&return,&0$?%__sil_tmp__temp_construct_n$0,&0$?%__sil_tmp__temp_construct_n$3); [line 31]\n " color=yellow style=filled] + + + "type_alias_by_val#pass_by_val#_ZN11pass_by_val17type_alias_by_valENS_11PlainStructES0_.b12ef66d05f83a2d989839d68ae6f5d8_1" -> "type_alias_by_val#pass_by_val#_ZN11pass_by_val17type_alias_by_valENS_11PlainStructES0_.b12ef66d05f83a2d989839d68ae6f5d8_3" ; +"type_alias_by_val#pass_by_val#_ZN11pass_by_val17type_alias_by_valENS_11PlainStructES0_.b12ef66d05f83a2d989839d68ae6f5d8_2" [label="2: Exit pass_by_val::type_alias_by_val \n " color=yellow style=filled] + + +"type_alias_by_val#pass_by_val#_ZN11pass_by_val17type_alias_by_valENS_11PlainStructES0_.b12ef66d05f83a2d989839d68ae6f5d8_3" [label="3: Return Stmt \n n$1=*&p1:pass_by_val::PlainStruct& [line 32]\n _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]\n n$2=_fun_pass_by_val::plain_struct_by_val(&0$?%__sil_tmp__temp_construct_n$0:pass_by_val::PlainStruct) [line 32]\n n$4=*&p2:pass_by_val::PlainStruct& [line 32]\n _fun_pass_by_val::PlainStruct_PlainStruct(&0$?%__sil_tmp__temp_construct_n$3:pass_by_val::PlainStruct*,n$4:pass_by_val::PlainStruct&) [line 32]\n n$5=_fun_pass_by_val::plain_struct_by_val(&0$?%__sil_tmp__temp_construct_n$3:pass_by_val::PlainStruct) [line 32]\n *&return:int=(n$2 + n$5) [line 32]\n " shape="box"] + + + "type_alias_by_val#pass_by_val#_ZN11pass_by_val17type_alias_by_valENS_11PlainStructES0_.b12ef66d05f83a2d989839d68ae6f5d8_3" -> "type_alias_by_val#pass_by_val#_ZN11pass_by_val17type_alias_by_valENS_11PlainStructES0_.b12ef66d05f83a2d989839d68ae6f5d8_2" ; +"tricky_dependent_by_val#pass_by_val#_ZN11pass_by_val23tricky_dependent_by_valEd.6772c98c8fe46dbf5a8b5f1fb200e645_1" [label="1: Start pass_by_val::tricky_dependent_by_val\nFormals: t:double\nLocals: \n DECLARE_LOCALS(&return); [line 57]\n " color=yellow style=filled] + + + "tricky_dependent_by_val#pass_by_val#_ZN11pass_by_val23tricky_dependent_by_valEd.6772c98c8fe46dbf5a8b5f1fb200e645_1" -> "tricky_dependent_by_val#pass_by_val#_ZN11pass_by_val23tricky_dependent_by_valEd.6772c98c8fe46dbf5a8b5f1fb200e645_3" ; +"tricky_dependent_by_val#pass_by_val#_ZN11pass_by_val23tricky_dependent_by_valEd.6772c98c8fe46dbf5a8b5f1fb200e645_2" [label="2: Exit pass_by_val::tricky_dependent_by_val \n " color=yellow style=filled] + + +"tricky_dependent_by_val#pass_by_val#_ZN11pass_by_val23tricky_dependent_by_valEd.6772c98c8fe46dbf5a8b5f1fb200e645_3" [label="3: Return Stmt \n n$0=*&t:double [line 57]\n *&return:double=n$0 [line 57]\n " shape="box"] + + + "tricky_dependent_by_val#pass_by_val#_ZN11pass_by_val23tricky_dependent_by_valEd.6772c98c8fe46dbf5a8b5f1fb200e645_3" -> "tricky_dependent_by_val#pass_by_val#_ZN11pass_by_val23tricky_dependent_by_valEd.6772c98c8fe46dbf5a8b5f1fb200e645_2" ; +"to_double#pass_by_val#_ZN11pass_by_val9to_doubleEi.47215393b89ed63b1ba707fa41acdfb4_1" [label="1: Start pass_by_val::to_double\nFormals: x:int\nLocals: \n DECLARE_LOCALS(&return); [line 52]\n " color=yellow style=filled] + + + "to_double#pass_by_val#_ZN11pass_by_val9to_doubleEi.47215393b89ed63b1ba707fa41acdfb4_1" -> "to_double#pass_by_val#_ZN11pass_by_val9to_doubleEi.47215393b89ed63b1ba707fa41acdfb4_3" ; +"to_double#pass_by_val#_ZN11pass_by_val9to_doubleEi.47215393b89ed63b1ba707fa41acdfb4_2" [label="2: Exit pass_by_val::to_double \n " color=yellow style=filled] + + +"to_double#pass_by_val#_ZN11pass_by_val9to_doubleEi.47215393b89ed63b1ba707fa41acdfb4_3" [label="3: Return Stmt \n n$0=*&x:int [line 52]\n *&return:double=n$0 [line 52]\n " shape="box"] + + + "to_double#pass_by_val#_ZN11pass_by_val9to_doubleEi.47215393b89ed63b1ba707fa41acdfb4_3" -> "to_double#pass_by_val#_ZN11pass_by_val9to_doubleEi.47215393b89ed63b1ba707fa41acdfb4_2" ; +"Id#Id#pass_by_val#{_ZN11pass_by_val2IdIiEC1EiRiOi}.329b18efd90b165eb32a5778917a28f2_1" [label="1: Start pass_by_val::Id_Id\nFormals: this:pass_by_val::Id* __param_0:int __param_1:int& __param_2:int&\nLocals: \n DECLARE_LOCALS(&return); [line 46]\n " color=yellow style=filled] + + + "Id#Id#pass_by_val#{_ZN11pass_by_val2IdIiEC1EiRiOi}.329b18efd90b165eb32a5778917a28f2_1" -> "Id#Id#pass_by_val#{_ZN11pass_by_val2IdIiEC1EiRiOi}.329b18efd90b165eb32a5778917a28f2_2" ; +"Id#Id#pass_by_val#{_ZN11pass_by_val2IdIiEC1EiRiOi}.329b18efd90b165eb32a5778917a28f2_2" [label="2: Exit pass_by_val::Id_Id \n " color=yellow style=filled] + + +"Id#Id#pass_by_val#{_ZN11pass_by_val2IdIiEC1EOS1_|constexpr}.efb404074ac909fdda46fe00d12af30a_1" [label="1: Start pass_by_val::Id_Id\nFormals: this:pass_by_val::Id* __param_0:pass_by_val::Id&\nLocals: \n DECLARE_LOCALS(&return); [line 43]\n " color=yellow style=filled] + + + "Id#Id#pass_by_val#{_ZN11pass_by_val2IdIiEC1EOS1_|constexpr}.efb404074ac909fdda46fe00d12af30a_1" -> "Id#Id#pass_by_val#{_ZN11pass_by_val2IdIiEC1EOS1_|constexpr}.efb404074ac909fdda46fe00d12af30a_2" ; +"Id#Id#pass_by_val#{_ZN11pass_by_val2IdIiEC1EOS1_|constexpr}.efb404074ac909fdda46fe00d12af30a_2" [label="2: Exit pass_by_val::Id_Id \n " color=yellow style=filled] + + +"PlainStruct#PlainStruct#pass_by_val#{_ZN11pass_by_val11PlainStructC1ERKS0_|constexpr}.4bd722721960535adc11621f82c7a2a0_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]\n " color=yellow style=filled] + + + "PlainStruct#PlainStruct#pass_by_val#{_ZN11pass_by_val11PlainStructC1ERKS0_|constexpr}.4bd722721960535adc11621f82c7a2a0_1" -> "PlainStruct#PlainStruct#pass_by_val#{_ZN11pass_by_val11PlainStructC1ERKS0_|constexpr}.4bd722721960535adc11621f82c7a2a0_4" ; +"PlainStruct#PlainStruct#pass_by_val#{_ZN11pass_by_val11PlainStructC1ERKS0_|constexpr}.4bd722721960535adc11621f82c7a2a0_2" [label="2: Exit pass_by_val::PlainStruct_PlainStruct \n " color=yellow style=filled] + + +"PlainStruct#PlainStruct#pass_by_val#{_ZN11pass_by_val11PlainStructC1ERKS0_|constexpr}.4bd722721960535adc11621f82c7a2a0_3" [label="3: Constructor Init \n n$0=*&this:pass_by_val::PlainStruct* [line 13]\n n$1=*&__param_0:pass_by_val::PlainStruct const & [line 13]\n n$2=*n$1.y:int* [line 13]\n *n$0.y:int*=n$2 [line 13]\n " shape="box"] + + + "PlainStruct#PlainStruct#pass_by_val#{_ZN11pass_by_val11PlainStructC1ERKS0_|constexpr}.4bd722721960535adc11621f82c7a2a0_3" -> "PlainStruct#PlainStruct#pass_by_val#{_ZN11pass_by_val11PlainStructC1ERKS0_|constexpr}.4bd722721960535adc11621f82c7a2a0_2" ; +"PlainStruct#PlainStruct#pass_by_val#{_ZN11pass_by_val11PlainStructC1ERKS0_|constexpr}.4bd722721960535adc11621f82c7a2a0_4" [label="4: Constructor Init \n n$3=*&this:pass_by_val::PlainStruct* [line 13]\n n$4=*&__param_0:pass_by_val::PlainStruct const & [line 13]\n n$5=*n$4.x:int [line 13]\n *n$3.x:int=n$5 [line 13]\n " shape="box"] + + + "PlainStruct#PlainStruct#pass_by_val#{_ZN11pass_by_val11PlainStructC1ERKS0_|constexpr}.4bd722721960535adc11621f82c7a2a0_4" -> "PlainStruct#PlainStruct#pass_by_val#{_ZN11pass_by_val11PlainStructC1ERKS0_|constexpr}.4bd722721960535adc11621f82c7a2a0_3" ; +"__libcpp_debug_info#__libcpp_debug_info#std#{_ZNSt3__119__libcpp_debug_infoC1Ev|constexpr}.18c4bedef0fc0ca181534b75d0aa46ea_1" [label="1: Start std::__libcpp_debug_info___libcpp_debug_info\nFormals: this:std::__libcpp_debug_info*\nLocals: \n DECLARE_LOCALS(&return); [line 60]\n " color=yellow style=filled] + + + "__libcpp_debug_info#__libcpp_debug_info#std#{_ZNSt3__119__libcpp_debug_infoC1Ev|constexpr}.18c4bedef0fc0ca181534b75d0aa46ea_1" -> "__libcpp_debug_info#__libcpp_debug_info#std#{_ZNSt3__119__libcpp_debug_infoC1Ev|constexpr}.18c4bedef0fc0ca181534b75d0aa46ea_6" ; +"__libcpp_debug_info#__libcpp_debug_info#std#{_ZNSt3__119__libcpp_debug_infoC1Ev|constexpr}.18c4bedef0fc0ca181534b75d0aa46ea_2" [label="2: Exit std::__libcpp_debug_info___libcpp_debug_info \n " color=yellow style=filled] + + +"__libcpp_debug_info#__libcpp_debug_info#std#{_ZNSt3__119__libcpp_debug_infoC1Ev|constexpr}.18c4bedef0fc0ca181534b75d0aa46ea_3" [label="3: Constructor Init \n n$0=*&this:std::__libcpp_debug_info* [line 62]\n *n$0.__msg_:char const *=null [line 62]\n " shape="box"] + + + "__libcpp_debug_info#__libcpp_debug_info#std#{_ZNSt3__119__libcpp_debug_infoC1Ev|constexpr}.18c4bedef0fc0ca181534b75d0aa46ea_3" -> "__libcpp_debug_info#__libcpp_debug_info#std#{_ZNSt3__119__libcpp_debug_infoC1Ev|constexpr}.18c4bedef0fc0ca181534b75d0aa46ea_2" ; +"__libcpp_debug_info#__libcpp_debug_info#std#{_ZNSt3__119__libcpp_debug_infoC1Ev|constexpr}.18c4bedef0fc0ca181534b75d0aa46ea_4" [label="4: Constructor Init \n n$1=*&this:std::__libcpp_debug_info* [line 62]\n *n$1.__pred_:char const *=null [line 62]\n " shape="box"] + + + "__libcpp_debug_info#__libcpp_debug_info#std#{_ZNSt3__119__libcpp_debug_infoC1Ev|constexpr}.18c4bedef0fc0ca181534b75d0aa46ea_4" -> "__libcpp_debug_info#__libcpp_debug_info#std#{_ZNSt3__119__libcpp_debug_infoC1Ev|constexpr}.18c4bedef0fc0ca181534b75d0aa46ea_3" ; +"__libcpp_debug_info#__libcpp_debug_info#std#{_ZNSt3__119__libcpp_debug_infoC1Ev|constexpr}.18c4bedef0fc0ca181534b75d0aa46ea_5" [label="5: Constructor Init \n n$2=*&this:std::__libcpp_debug_info* [line 62]\n *n$2.__line_:int=-1 [line 62]\n " shape="box"] + + + "__libcpp_debug_info#__libcpp_debug_info#std#{_ZNSt3__119__libcpp_debug_infoC1Ev|constexpr}.18c4bedef0fc0ca181534b75d0aa46ea_5" -> "__libcpp_debug_info#__libcpp_debug_info#std#{_ZNSt3__119__libcpp_debug_infoC1Ev|constexpr}.18c4bedef0fc0ca181534b75d0aa46ea_4" ; +"__libcpp_debug_info#__libcpp_debug_info#std#{_ZNSt3__119__libcpp_debug_infoC1Ev|constexpr}.18c4bedef0fc0ca181534b75d0aa46ea_6" [label="6: Constructor Init \n n$3=*&this:std::__libcpp_debug_info* [line 62]\n *n$3.__file_:char const *=null [line 62]\n " shape="box"] + + + "__libcpp_debug_info#__libcpp_debug_info#std#{_ZNSt3__119__libcpp_debug_infoC1Ev|constexpr}.18c4bedef0fc0ca181534b75d0aa46ea_6" -> "__libcpp_debug_info#__libcpp_debug_info#std#{_ZNSt3__119__libcpp_debug_infoC1Ev|constexpr}.18c4bedef0fc0ca181534b75d0aa46ea_5" ; +"__libcpp_debug_info#__libcpp_debug_info#std#{_ZNSt3__119__libcpp_debug_infoC1EPKciS2_S2_|constexpr}.685075968ad59182030097b6f2b1166a_1" [label="1: Start std::__libcpp_debug_info___libcpp_debug_info\nFormals: this:std::__libcpp_debug_info* __f:char const * __l:int __p:char const * __m:char const *\nLocals: \n DECLARE_LOCALS(&return); [line 63]\n " color=yellow style=filled] + + + "__libcpp_debug_info#__libcpp_debug_info#std#{_ZNSt3__119__libcpp_debug_infoC1EPKciS2_S2_|constexpr}.685075968ad59182030097b6f2b1166a_1" -> "__libcpp_debug_info#__libcpp_debug_info#std#{_ZNSt3__119__libcpp_debug_infoC1EPKciS2_S2_|constexpr}.685075968ad59182030097b6f2b1166a_6" ; +"__libcpp_debug_info#__libcpp_debug_info#std#{_ZNSt3__119__libcpp_debug_infoC1EPKciS2_S2_|constexpr}.685075968ad59182030097b6f2b1166a_2" [label="2: Exit std::__libcpp_debug_info___libcpp_debug_info \n " color=yellow style=filled] + + +"__libcpp_debug_info#__libcpp_debug_info#std#{_ZNSt3__119__libcpp_debug_infoC1EPKciS2_S2_|constexpr}.685075968ad59182030097b6f2b1166a_3" [label="3: Constructor Init \n n$0=*&this:std::__libcpp_debug_info* [line 65]\n n$1=*&__m:char const * [line 65]\n *n$0.__msg_:char const *=n$1 [line 65]\n " shape="box"] + + + "__libcpp_debug_info#__libcpp_debug_info#std#{_ZNSt3__119__libcpp_debug_infoC1EPKciS2_S2_|constexpr}.685075968ad59182030097b6f2b1166a_3" -> "__libcpp_debug_info#__libcpp_debug_info#std#{_ZNSt3__119__libcpp_debug_infoC1EPKciS2_S2_|constexpr}.685075968ad59182030097b6f2b1166a_2" ; +"__libcpp_debug_info#__libcpp_debug_info#std#{_ZNSt3__119__libcpp_debug_infoC1EPKciS2_S2_|constexpr}.685075968ad59182030097b6f2b1166a_4" [label="4: Constructor Init \n n$2=*&this:std::__libcpp_debug_info* [line 65]\n n$3=*&__p:char const * [line 65]\n *n$2.__pred_:char const *=n$3 [line 65]\n " shape="box"] + + + "__libcpp_debug_info#__libcpp_debug_info#std#{_ZNSt3__119__libcpp_debug_infoC1EPKciS2_S2_|constexpr}.685075968ad59182030097b6f2b1166a_4" -> "__libcpp_debug_info#__libcpp_debug_info#std#{_ZNSt3__119__libcpp_debug_infoC1EPKciS2_S2_|constexpr}.685075968ad59182030097b6f2b1166a_3" ; +"__libcpp_debug_info#__libcpp_debug_info#std#{_ZNSt3__119__libcpp_debug_infoC1EPKciS2_S2_|constexpr}.685075968ad59182030097b6f2b1166a_5" [label="5: Constructor Init \n n$4=*&this:std::__libcpp_debug_info* [line 65]\n n$5=*&__l:int [line 65]\n *n$4.__line_:int=n$5 [line 65]\n " shape="box"] + + + "__libcpp_debug_info#__libcpp_debug_info#std#{_ZNSt3__119__libcpp_debug_infoC1EPKciS2_S2_|constexpr}.685075968ad59182030097b6f2b1166a_5" -> "__libcpp_debug_info#__libcpp_debug_info#std#{_ZNSt3__119__libcpp_debug_infoC1EPKciS2_S2_|constexpr}.685075968ad59182030097b6f2b1166a_4" ; +"__libcpp_debug_info#__libcpp_debug_info#std#{_ZNSt3__119__libcpp_debug_infoC1EPKciS2_S2_|constexpr}.685075968ad59182030097b6f2b1166a_6" [label="6: Constructor Init \n n$6=*&this:std::__libcpp_debug_info* [line 65]\n n$7=*&__f:char const * [line 65]\n *n$6.__file_:char const *=n$7 [line 65]\n " shape="box"] + + + "__libcpp_debug_info#__libcpp_debug_info#std#{_ZNSt3__119__libcpp_debug_infoC1EPKciS2_S2_|constexpr}.685075968ad59182030097b6f2b1166a_6" -> "__libcpp_debug_info#__libcpp_debug_info#std#{_ZNSt3__119__libcpp_debug_infoC1EPKciS2_S2_|constexpr}.685075968ad59182030097b6f2b1166a_5" ; +"piecewise_construct_t#piecewise_construct_t#std#{_ZNSt3__121piecewise_construct_tC1EOS0_|constexpr}.d8a96ba874953804448b38f70af127ac_1" [label="1: Start std::piecewise_construct_t_piecewise_construct_t\nFormals: this:std::piecewise_construct_t* __param_0:std::piecewise_construct_t&\nLocals: \n DECLARE_LOCALS(&return); [line 292]\n " color=yellow style=filled] + + + "piecewise_construct_t#piecewise_construct_t#std#{_ZNSt3__121piecewise_construct_tC1EOS0_|constexpr}.d8a96ba874953804448b38f70af127ac_1" -> "piecewise_construct_t#piecewise_construct_t#std#{_ZNSt3__121piecewise_construct_tC1EOS0_|constexpr}.d8a96ba874953804448b38f70af127ac_2" ; +"piecewise_construct_t#piecewise_construct_t#std#{_ZNSt3__121piecewise_construct_tC1EOS0_|constexpr}.d8a96ba874953804448b38f70af127ac_2" [label="2: Exit std::piecewise_construct_t_piecewise_construct_t \n " color=yellow style=filled] + + +} diff --git a/infer/tests/codetoanalyze/cpp/shared/types/inheritance_field.cpp.dot b/infer/tests/codetoanalyze/cpp/shared/types/inheritance_field.cpp.dot index 469a3077a..30f4335b2 100644 --- a/infer/tests/codetoanalyze/cpp/shared/types/inheritance_field.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/shared/types/inheritance_field.cpp.dot @@ -76,7 +76,7 @@ digraph iCFG { "div1_cast#_Z9div1_castP3Sub.0cd9f1a48e13cc3e6ee3f1ecccc2961f_5" -> "div1_cast#_Z9div1_castP3Sub.0cd9f1a48e13cc3e6ee3f1ecccc2961f_4" ; -"div0_b1#_Z7div0_b13Sub.39e7e6de430d709fac091e1df74bcdda_1" [label="1: Start div0_b1\nFormals: s:Sub&\nLocals: \n DECLARE_LOCALS(&return); [line 22]\n " color=yellow style=filled] +"div0_b1#_Z7div0_b13Sub.39e7e6de430d709fac091e1df74bcdda_1" [label="1: Start div0_b1\nFormals: s:Sub&(byval)\nLocals: \n DECLARE_LOCALS(&return); [line 22]\n " color=yellow style=filled] "div0_b1#_Z7div0_b13Sub.39e7e6de430d709fac091e1df74bcdda_1" -> "div0_b1#_Z7div0_b13Sub.39e7e6de430d709fac091e1df74bcdda_4" ; @@ -91,7 +91,7 @@ digraph iCFG { "div0_b1#_Z7div0_b13Sub.39e7e6de430d709fac091e1df74bcdda_4" -> "div0_b1#_Z7div0_b13Sub.39e7e6de430d709fac091e1df74bcdda_3" ; -"div0_b2#_Z7div0_b23Sub.d6a3aa8274984828e9b2d9289332abb9_1" [label="1: Start div0_b2\nFormals: s:Sub&\nLocals: \n DECLARE_LOCALS(&return); [line 27]\n " color=yellow style=filled] +"div0_b2#_Z7div0_b23Sub.d6a3aa8274984828e9b2d9289332abb9_1" [label="1: Start div0_b2\nFormals: s:Sub&(byval)\nLocals: \n DECLARE_LOCALS(&return); [line 27]\n " color=yellow style=filled] "div0_b2#_Z7div0_b23Sub.d6a3aa8274984828e9b2d9289332abb9_1" -> "div0_b2#_Z7div0_b23Sub.d6a3aa8274984828e9b2d9289332abb9_4" ; @@ -106,7 +106,7 @@ digraph iCFG { "div0_b2#_Z7div0_b23Sub.d6a3aa8274984828e9b2d9289332abb9_4" -> "div0_b2#_Z7div0_b23Sub.d6a3aa8274984828e9b2d9289332abb9_3" ; -"div0_s#_Z6div0_s3Sub.b14457f181d480a15f2c26328da9698f_1" [label="1: Start div0_s\nFormals: s:Sub&\nLocals: \n DECLARE_LOCALS(&return); [line 32]\n " color=yellow style=filled] +"div0_s#_Z6div0_s3Sub.b14457f181d480a15f2c26328da9698f_1" [label="1: Start div0_s\nFormals: s:Sub&(byval)\nLocals: \n DECLARE_LOCALS(&return); [line 32]\n " color=yellow style=filled] "div0_s#_Z6div0_s3Sub.b14457f181d480a15f2c26328da9698f_1" -> "div0_s#_Z6div0_s3Sub.b14457f181d480a15f2c26328da9698f_4" ; @@ -121,7 +121,7 @@ digraph iCFG { "div0_s#_Z6div0_s3Sub.b14457f181d480a15f2c26328da9698f_4" -> "div0_s#_Z6div0_s3Sub.b14457f181d480a15f2c26328da9698f_3" ; -"div0_cast_ref#_Z13div0_cast_ref3Sub.3d8514c92dad1c7d8b1e884c1c43032a_1" [label="1: Start div0_cast_ref\nFormals: s:Sub&\nLocals: b:Base1& \n DECLARE_LOCALS(&return,&b); [line 43]\n " color=yellow style=filled] +"div0_cast_ref#_Z13div0_cast_ref3Sub.3d8514c92dad1c7d8b1e884c1c43032a_1" [label="1: Start div0_cast_ref\nFormals: s:Sub&(byval)\nLocals: b:Base1& \n DECLARE_LOCALS(&return,&b); [line 43]\n " color=yellow style=filled] "div0_cast_ref#_Z13div0_cast_ref3Sub.3d8514c92dad1c7d8b1e884c1c43032a_1" -> "div0_cast_ref#_Z13div0_cast_ref3Sub.3d8514c92dad1c7d8b1e884c1c43032a_5" ; @@ -140,7 +140,7 @@ digraph iCFG { "div0_cast_ref#_Z13div0_cast_ref3Sub.3d8514c92dad1c7d8b1e884c1c43032a_5" -> "div0_cast_ref#_Z13div0_cast_ref3Sub.3d8514c92dad1c7d8b1e884c1c43032a_4" ; -"div1_b1#_Z7div1_b13Sub.00e797f8003158c8bcde96739c2853c8_1" [label="1: Start div1_b1\nFormals: s:Sub&\nLocals: \n DECLARE_LOCALS(&return); [line 61]\n " color=yellow style=filled] +"div1_b1#_Z7div1_b13Sub.00e797f8003158c8bcde96739c2853c8_1" [label="1: Start div1_b1\nFormals: s:Sub&(byval)\nLocals: \n DECLARE_LOCALS(&return); [line 61]\n " color=yellow style=filled] "div1_b1#_Z7div1_b13Sub.00e797f8003158c8bcde96739c2853c8_1" -> "div1_b1#_Z7div1_b13Sub.00e797f8003158c8bcde96739c2853c8_4" ; diff --git a/infer/tests/codetoanalyze/cpp/shared/types/struct_pass_by_value.cpp.dot b/infer/tests/codetoanalyze/cpp/shared/types/struct_pass_by_value.cpp.dot index f352627fe..92bf8d52b 100644 --- a/infer/tests/codetoanalyze/cpp/shared/types/struct_pass_by_value.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/shared/types/struct_pass_by_value.cpp.dot @@ -109,7 +109,7 @@ digraph iCFG { "param_get_copied_div1#struct_pass_by_value#_ZN20struct_pass_by_value21param_get_copied_div1Ev.a478d92732cbfd3143baded8caa93a88_5" -> "param_get_copied_div1#struct_pass_by_value#_ZN20struct_pass_by_value21param_get_copied_div1Ev.a478d92732cbfd3143baded8caa93a88_4" ; -"get_f#struct_pass_by_value#_ZN20struct_pass_by_value5get_fENS_1XE.d9eb5656addf74c4646b11cf2d3f3307_1" [label="1: Start struct_pass_by_value::get_f\nFormals: val:struct_pass_by_value::X&\nLocals: \n DECLARE_LOCALS(&return); [line 22]\n " color=yellow style=filled] +"get_f#struct_pass_by_value#_ZN20struct_pass_by_value5get_fENS_1XE.d9eb5656addf74c4646b11cf2d3f3307_1" [label="1: Start struct_pass_by_value::get_f\nFormals: val:struct_pass_by_value::X&(byval)\nLocals: \n DECLARE_LOCALS(&return); [line 22]\n " color=yellow style=filled] "get_f#struct_pass_by_value#_ZN20struct_pass_by_value5get_fENS_1XE.d9eb5656addf74c4646b11cf2d3f3307_1" -> "get_f#struct_pass_by_value#_ZN20struct_pass_by_value5get_fENS_1XE.d9eb5656addf74c4646b11cf2d3f3307_3" ; @@ -120,7 +120,7 @@ digraph iCFG { "get_f#struct_pass_by_value#_ZN20struct_pass_by_value5get_fENS_1XE.d9eb5656addf74c4646b11cf2d3f3307_3" -> "get_f#struct_pass_by_value#_ZN20struct_pass_by_value5get_fENS_1XE.d9eb5656addf74c4646b11cf2d3f3307_2" ; -"set_f#struct_pass_by_value#_ZN20struct_pass_by_value5set_fENS_1XEi.f10cea3478ded77d2dcefbe25a6546ca_1" [label="1: Start struct_pass_by_value::set_f\nFormals: val:struct_pass_by_value::X& f:int\nLocals: \n DECLARE_LOCALS(&return); [line 25]\n " color=yellow style=filled] +"set_f#struct_pass_by_value#_ZN20struct_pass_by_value5set_fENS_1XEi.f10cea3478ded77d2dcefbe25a6546ca_1" [label="1: Start struct_pass_by_value::set_f\nFormals: val:struct_pass_by_value::X&(byval) f:int\nLocals: \n DECLARE_LOCALS(&return); [line 25]\n " color=yellow style=filled] "set_f#struct_pass_by_value#_ZN20struct_pass_by_value5set_fENS_1XEi.f10cea3478ded77d2dcefbe25a6546ca_1" -> "set_f#struct_pass_by_value#_ZN20struct_pass_by_value5set_fENS_1XEi.f10cea3478ded77d2dcefbe25a6546ca_3" ;