From 04233ee49b2d54116c615ae4ebda1d42674747e2 Mon Sep 17 00:00:00 2001 From: Jules Villard Date: Wed, 19 Jun 2019 05:05:26 -0700 Subject: [PATCH] [clang] destroy C++ temporaries Summary: Inject destructor calls to destroy a temporary when its lifetime ends. Reviewed By: mbouaziz Differential Revision: D15674209 fbshipit-source-id: 0f783a906 --- infer/src/IR/Procdesc.ml | 6 + infer/src/IR/Procdesc.mli | 2 + infer/src/clang/cScope.ml | 44 +++++++ infer/src/clang/cScope.mli | 5 + infer/src/clang/cTrans.ml | 31 ++++- infer/tests/codetoanalyze/cpp/errors/Makefile | 8 +- .../tests/codetoanalyze/cpp/errors/issues.exp | 50 +++---- .../frontend/destructors/break_scope.cpp.dot | 90 +++++++------ .../destructors/continue_scope.cpp.dot | 90 +++++++------ .../cpp/frontend/loops/foreach1.cpp.dot | 22 ++-- .../codetoanalyze/cpp/ownership/issues.exp | 2 + .../tests/codetoanalyze/cpp/pulse/issues.exp | 9 +- .../codetoanalyze/cpp/pulse/temporaries.cpp | 8 +- .../cpp/pulse/use_after_destructor.cpp | 9 +- .../conditional/binary_conditional.cpp.dot | 36 +++--- .../constructors/constructor_array.cpp.dot | 12 +- .../copy_move_constructor.cpp.dot | 22 ++-- .../shared/constructors/temp_object.cpp.dot | 18 +-- .../cpp/shared/exceptions/Exceptions.cpp.dot | 122 +++++++++++------- .../cpp/shared/lambda/lambda1.cpp.dot | 62 ++++----- .../cpp/shared/methods/byvals.cpp.dot | 4 +- .../methods/conversion_operator.cpp.dot | 44 ++++--- .../cpp/shared/methods/return_struct.cpp.dot | 2 +- .../shared/types/inheritance_casts.cpp.dot | 8 +- .../cpp/shared/types/return_struct.cpp.dot | 24 ++-- .../shared/types/struct_pass_by_value.cpp.dot | 12 +- .../tests/codetoanalyze/cpp/uninit/issues.exp | 1 + 27 files changed, 435 insertions(+), 308 deletions(-) diff --git a/infer/src/IR/Procdesc.ml b/infer/src/IR/Procdesc.ml index 5f02d94c8..b1c582e17 100644 --- a/infer/src/IR/Procdesc.ml +++ b/infer/src/IR/Procdesc.ml @@ -38,6 +38,7 @@ module Node = struct | DestrFields | DestrReturnStmt | DestrScope + | DestrTemporariesCleanup | DestrVirtualBase [@@deriving compare] @@ -52,6 +53,8 @@ module Node = struct "return" | DestrScope -> "Scope" + | DestrTemporariesCleanup -> + "temporaries cleanup" | DestrVirtualBase -> "virtual base" @@ -75,6 +78,7 @@ module Node = struct | Destruction of destruction_kind | ExceptionHandler | ExceptionsSink + | ExprWithCleanups | FallbackNode | FinallyBranch | GCCAsmStmt @@ -299,6 +303,8 @@ module Node = struct F.pp_print_string fmt "exception handler" | ExceptionsSink -> F.pp_print_string fmt "exceptions sink" + | ExprWithCleanups -> + F.pp_print_string fmt "ExprWithCleanups" | FallbackNode -> F.pp_print_string fmt "Fallback node" | FinallyBranch -> diff --git a/infer/src/IR/Procdesc.mli b/infer/src/IR/Procdesc.mli index 8b2dfbbca..85d457482 100644 --- a/infer/src/IR/Procdesc.mli +++ b/infer/src/IR/Procdesc.mli @@ -34,6 +34,7 @@ module Node : sig | DestrFields | DestrReturnStmt | DestrScope + | DestrTemporariesCleanup | DestrVirtualBase (** kind of statement node *) @@ -56,6 +57,7 @@ module Node : sig | Destruction of destruction_kind | ExceptionHandler | ExceptionsSink + | ExprWithCleanups | FallbackNode | FinallyBranch | GCCAsmStmt diff --git a/infer/src/clang/cScope.ml b/infer/src/clang/cScope.ml index 621b76760..839dc5e5d 100644 --- a/infer/src/clang/cScope.ml +++ b/infer/src/clang/cScope.ml @@ -211,3 +211,47 @@ module Variables = struct let compute_vars_to_destroy_map body = visit_stmt body (empty_scope, ClangPointers.Map.empty) |> snd end + +module CXXTemporaries = struct + let rec visit_stmt context stmt temporaries = + match (stmt : Clang_ast_t.stmt) with + | MaterializeTemporaryExpr + ( stmt_info + , stmt_list + , expr_info + , { mtei_decl_ref= + (* C++ temporaries bound to a const reference see their lifetimes extended to that of + the reference *) + None } ) -> + let pvar, typ = CVar_decl.materialize_cpp_temporary context stmt_info expr_info in + let temporaries = (pvar, typ, expr_info.ei_qual_type) :: temporaries in + visit_stmt_list context stmt_list temporaries + | ExprWithCleanups _ -> + (* huho, we're stepping on someone else's toes (eg, a lambda literal); stop accumulating *) + temporaries + | ConditionalOperator _ + | BinaryOperator (_, _, _, {boi_kind= `LAnd | `LOr | `LT | `GT | `LE | `GE | `EQ | `NE}) -> + (* Do not destroy temporaries created under a conditional operator. This is incorrect but + better than destroying temporaries that are created in only one branch unconditionally + after the conditional. + + Note that destroying the variable inside the branch of the conditional would also be + incorrect since the conditional operator may be only part of the enclosing full + expression. + + Example of tricky case: [foo(x?y:z, w)] or [cond && y] where [y] generates a C++ + temporary. *) + temporaries + | _ -> + let _, stmt_list = Clang_ast_proj.get_stmt_tuple stmt in + visit_stmt_list context stmt_list temporaries + + + and visit_stmt_list context stmt_list temporaries = + List.fold stmt_list + ~f:(fun temporaries stmt -> visit_stmt context stmt temporaries) + ~init:temporaries + + + let get_destroyable_temporaries context stmt_list = visit_stmt_list context stmt_list [] +end diff --git a/infer/src/clang/cScope.mli b/infer/src/clang/cScope.mli index ed875df70..c26187781 100644 --- a/infer/src/clang/cScope.mli +++ b/infer/src/clang/cScope.mli @@ -12,3 +12,8 @@ val breaks_control_flow : Clang_ast_t.stmt -> bool module Variables : sig val compute_vars_to_destroy_map : Clang_ast_t.stmt -> Clang_ast_t.decl list ClangPointers.Map.t end + +module CXXTemporaries : sig + val get_destroyable_temporaries : + CContext.t -> Clang_ast_t.stmt list -> (Pvar.t * Typ.t * Clang_ast_t.qual_type) list +end diff --git a/infer/src/clang/cTrans.ml b/infer/src/clang/cTrans.ml index 08b84fad1..f18e0fd3f 100644 --- a/infer/src/clang/cTrans.ml +++ b/infer/src/clang/cTrans.ml @@ -2630,10 +2630,6 @@ module CTrans_funct (F : CModule_type.CFrontend) : CModule_type.CTranslation = s trans_result - (** We analyze the content of the expr. We treat ExprWithCleanups as a wrapper. It may be that - later on (when we treat ARC) some info can be taken from it. For ParenExpression we translate - its body composed by the stmt_list. In paren expression there should be only one stmt that - defines the expression *) and parenExpr_trans trans_state source_range stmt_list = let stmt = extract_stmt_from_singleton stmt_list source_range @@ -3227,6 +3223,28 @@ module CTrans_funct (F : CModule_type.CFrontend) : CModule_type.CTranslation = s stmt_info + and exprWithCleanups_trans trans_state stmt_info stmt_list = + let temporaries_to_destroy = + CScope.CXXTemporaries.get_destroyable_temporaries trans_state.context stmt_list + in + let destr_trans_result_opt = + destructor_calls Procdesc.Node.DestrTemporariesCleanup trans_state stmt_info + temporaries_to_destroy + in + let[@warning "-8"] [stmt] = stmt_list in + let result = instruction trans_state stmt in + match destr_trans_result_opt with + | None -> + result + | Some destr_trans_result -> + let sil_loc = + CLocation.location_of_stmt_info trans_state.context.translation_unit_context.source_file + stmt_info + in + PriorityNode.compute_results_to_parent trans_state sil_loc ~node_name:ExprWithCleanups + stmt_info ~return:result.return [result; destr_trans_result] + + (* Expect that this doesn't happen *) and undefined_expr trans_state expr_info = let tenv = trans_state.context.CContext.tenv in @@ -3451,9 +3469,8 @@ module CTrans_funct (F : CModule_type.CFrontend) : CModule_type.CTranslation = s else unaryOperator_trans trans_state stmt_info expr_info stmt_list unary_operator_info | ReturnStmt (stmt_info, stmt_list) -> returnStmt_trans trans_state stmt_info stmt_list - (* We analyze the content of the expr. We treat ExprWithCleanups as a wrapper. *) - (* It may be that later on (when we treat ARC) some info can be taken from it. *) - | ExprWithCleanups ({Clang_ast_t.si_source_range}, stmt_list, _, _) + | ExprWithCleanups (stmt_info, stmt_list, _, _) -> + exprWithCleanups_trans trans_state stmt_info stmt_list | ParenExpr ({Clang_ast_t.si_source_range}, stmt_list, _) -> parenExpr_trans trans_state si_source_range stmt_list | ObjCBoolLiteralExpr (_, _, expr_info, n) diff --git a/infer/tests/codetoanalyze/cpp/errors/Makefile b/infer/tests/codetoanalyze/cpp/errors/Makefile index dff44b9ad..1f263feae 100644 --- a/infer/tests/codetoanalyze/cpp/errors/Makefile +++ b/infer/tests/codetoanalyze/cpp/errors/Makefile @@ -6,7 +6,7 @@ TESTS_DIR = ../../.. # use our own clang's standard library so that the tests are uniform across distributions -CLANG_OPTIONS = -x c++ -std=c++1y -isystem$(ROOT_DIR) -c +CLANG_OPTIONS = -x c++ -std=c++1y -isystem$(ROOT_DIR) -c --stdlib=libc++ INFER_OPTIONS = --biabduction-only --ml-buckets cpp --debug-exceptions --project-root $(TESTS_DIR) \ --pmd-xml --report-custom-error --cxx-infer-headers INFERPRINT_OPTIONS = --issues-tests @@ -59,12 +59,12 @@ SOURCES = \ shared/types/struct_forward_declare.cpp \ shared/types/struct_pass_by_value.cpp \ $(wildcard smart_ptr/*.cpp) \ - $(wildcard stack_escape/*.cpp) \ - $(wildcard static_local/*.cpp) \ + $(wildcard stack_escape/*.cpp) \ + $(wildcard static_local/*.cpp) \ $(wildcard subtyping/*.cpp) \ $(wildcard templates/*.cpp) \ $(wildcard types/*.cpp) \ - $(wildcard use_after_free/*.cpp) \ + $(wildcard use_after_free/*.cpp) \ $(wildcard vector/*.cpp) \ include $(TESTS_DIR)/clang.make diff --git a/infer/tests/codetoanalyze/cpp/errors/issues.exp b/infer/tests/codetoanalyze/cpp/errors/issues.exp index 0f56f1945..b6dcf3a7a 100644 --- a/infer/tests/codetoanalyze/cpp/errors/issues.exp +++ b/infer/tests/codetoanalyze/cpp/errors/issues.exp @@ -40,9 +40,9 @@ codetoanalyze/cpp/errors/models/cmp.cpp, std_less_equal_bad, 4, NULL_DEREFERENCE codetoanalyze/cpp/errors/models/cmp.cpp, std_not_equal_to_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure std_not_equal_to_bad(),Condition is false,Taking true branch] codetoanalyze/cpp/errors/models/move.cpp, move::div0_moved_from, 3, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure move::div0_moved_from(),start of procedure X,return from a call to move::X::X,start of procedure X,return from a call to move::X::X] codetoanalyze/cpp/errors/models/move.cpp, move::div0_moved_to, 3, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure move::div0_moved_to(),start of procedure X,return from a call to move::X::X,start of procedure X,return from a call to move::X::X] -codetoanalyze/cpp/errors/models/pair.cpp, pair::deref_pair_null0_bad, 3, NULL_DEREFERENCE, B1, ERROR, [start of procedure pair::deref_pair_null0_bad(),start of procedure pair::pairOfZeroNull(),return from a call to pair::pairOfZeroNull] -codetoanalyze/cpp/errors/models/pair.cpp, pair::deref_pair_null1_bad, 3, NULL_DEREFERENCE, B5, ERROR, [start of procedure pair::deref_pair_null1_bad(),start of procedure pair::pairOfZeroNull(),return from a call to pair::pairOfZeroNull] -codetoanalyze/cpp/errors/models/pair.cpp, pair::deref_pair_null3_bad, 3, NULL_DEREFERENCE, B1, ERROR, [start of procedure pair::deref_pair_null3_bad(),start of procedure pair::pairOfZeroNull2(),return from a call to pair::pairOfZeroNull2] +codetoanalyze/cpp/errors/models/pair.cpp, pair::deref_pair_null0_bad, 3, NULL_DEREFERENCE, B1, ERROR, [start of procedure pair::deref_pair_null0_bad(),start of procedure pair::pairOfZeroNull(),Skipping ~pair: method has no implementation,return from a call to pair::pairOfZeroNull,Skipping ~pair: method has no implementation] +codetoanalyze/cpp/errors/models/pair.cpp, pair::deref_pair_null1_bad, 3, NULL_DEREFERENCE, B5, ERROR, [start of procedure pair::deref_pair_null1_bad(),start of procedure pair::pairOfZeroNull(),Skipping ~pair: method has no implementation,return from a call to pair::pairOfZeroNull,Skipping ~pair: method has no implementation] +codetoanalyze/cpp/errors/models/pair.cpp, pair::deref_pair_null3_bad, 3, NULL_DEREFERENCE, B1, ERROR, [start of procedure pair::deref_pair_null3_bad(),start of procedure pair::pairOfZeroNull2(),Skipping ~pair: method has no implementation,return from a call to pair::pairOfZeroNull2,Skipping ~pair: method has no implementation] codetoanalyze/cpp/errors/models/swap.cpp, swap_null_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure swap_null_bad()] codetoanalyze/cpp/errors/models/throw_wrapper.cpp, nothrow_if_null_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure nothrow_if_null_bad(),start of procedure get_null(),return from a call to get_null,Taking true branch,start of procedure do_nothing(),return from a call to do_nothing] codetoanalyze/cpp/errors/mutex/std_mutex.cpp, ends_locked, 3, Cannot_star, no_bucket, ERROR, [start of procedure ends_locked(),Loop condition is true. Entering loop body,start of procedure ensure_unlocked(),start of procedure ensure_locked(),Skipping try_lock: method has no implementation,return from a call to ensure_locked,Skipping unlock: method has no implementation,return from a call to ensure_unlocked] @@ -54,12 +54,12 @@ codetoanalyze/cpp/errors/npe/boxed_ptr.cpp, boxed_ptr::smart_ptr_null_method_der codetoanalyze/cpp/errors/npe/boxed_ptr.cpp, boxed_ptr::smart_ptr_result_method_null_deref, 4, NULL_DEREFERENCE, B5, ERROR, [start of procedure boxed_ptr::smart_ptr_result_method_null_deref(),start of procedure SmartPtr,return from a call to boxed_ptr::SmartPtr::SmartPtr,start of procedure X,return from a call to boxed_ptr::X::X,start of procedure get,return from a call to boxed_ptr::SmartPtr::get,start of procedure getNull,return from a call to boxed_ptr::X::getNull] codetoanalyze/cpp/errors/npe/cancellation.cpp, cancellation_test::size_nonzero_deref2_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure cancellation_test::size_nonzero_deref2_bad(),start of procedure cancellation_test::is_size_zero(),start of procedure begin,return from a call to cancellation_test::Test::begin,start of procedure end,return from a call to cancellation_test::Test::end,Condition is false,return from a call to cancellation_test::is_size_zero,Taking true branch] codetoanalyze/cpp/errors/npe/cancellation.cpp, cancellation_test::size_nonzero_deref_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure cancellation_test::size_nonzero_deref_bad(),start of procedure cancellation_test::is_size_zero(),start of procedure begin,return from a call to cancellation_test::Test::begin,start of procedure end,return from a call to cancellation_test::Test::end,Condition is false,return from a call to cancellation_test::is_size_zero,Taking true branch] -codetoanalyze/cpp/errors/npe/cancellation.cpp, cancellation_test::size_nonzero_deref_iter2_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure cancellation_test::size_nonzero_deref_iter2_bad(),start of procedure cancellation_test::is_size_zero_iter(),start of procedure begin_iter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,return from a call to cancellation_test::Test::begin_iter,start of procedure end_iter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,return from a call to cancellation_test::Test::end_iter,start of procedure cancellation_test::operator==(),Condition is false,return from a call to cancellation_test::operator==,return from a call to cancellation_test::is_size_zero_iter,Taking true branch] -codetoanalyze/cpp/errors/npe/cancellation.cpp, cancellation_test::size_nonzero_deref_iter_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure cancellation_test::size_nonzero_deref_iter_bad(),start of procedure cancellation_test::is_size_zero_iter(),start of procedure begin_iter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,return from a call to cancellation_test::Test::begin_iter,start of procedure end_iter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,return from a call to cancellation_test::Test::end_iter,start of procedure cancellation_test::operator==(),Condition is false,return from a call to cancellation_test::operator==,return from a call to cancellation_test::is_size_zero_iter,Taking true branch] +codetoanalyze/cpp/errors/npe/cancellation.cpp, cancellation_test::size_nonzero_deref_iter2_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure cancellation_test::size_nonzero_deref_iter2_bad(),start of procedure cancellation_test::is_size_zero_iter(),start of procedure begin_iter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,Skipping ~TestIter: method has no implementation,return from a call to cancellation_test::Test::begin_iter,start of procedure end_iter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,Skipping ~TestIter: method has no implementation,return from a call to cancellation_test::Test::end_iter,start of procedure cancellation_test::operator==(),Condition is false,return from a call to cancellation_test::operator==,Skipping ~TestIter: method has no implementation,return from a call to cancellation_test::is_size_zero_iter,Taking true branch] +codetoanalyze/cpp/errors/npe/cancellation.cpp, cancellation_test::size_nonzero_deref_iter_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure cancellation_test::size_nonzero_deref_iter_bad(),start of procedure cancellation_test::is_size_zero_iter(),start of procedure begin_iter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,Skipping ~TestIter: method has no implementation,return from a call to cancellation_test::Test::begin_iter,start of procedure end_iter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,Skipping ~TestIter: method has no implementation,return from a call to cancellation_test::Test::end_iter,start of procedure cancellation_test::operator==(),Condition is false,return from a call to cancellation_test::operator==,Skipping ~TestIter: method has no implementation,return from a call to cancellation_test::is_size_zero_iter,Taking true branch] codetoanalyze/cpp/errors/npe/cancellation.cpp, cancellation_test::size_zero_deref2_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure cancellation_test::size_zero_deref2_bad(),start of procedure cancellation_test::is_size_zero(),start of procedure begin,return from a call to cancellation_test::Test::begin,start of procedure end,return from a call to cancellation_test::Test::end,Condition is true,return from a call to cancellation_test::is_size_zero,Taking true branch] codetoanalyze/cpp/errors/npe/cancellation.cpp, cancellation_test::size_zero_deref_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure cancellation_test::size_zero_deref_bad(),start of procedure cancellation_test::is_size_zero(),start of procedure begin,return from a call to cancellation_test::Test::begin,start of procedure end,return from a call to cancellation_test::Test::end,Condition is true,return from a call to cancellation_test::is_size_zero,Taking true branch] -codetoanalyze/cpp/errors/npe/cancellation.cpp, cancellation_test::size_zero_deref_iter2_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure cancellation_test::size_zero_deref_iter2_bad(),start of procedure cancellation_test::is_size_zero_iter(),start of procedure begin_iter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,return from a call to cancellation_test::Test::begin_iter,start of procedure end_iter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,return from a call to cancellation_test::Test::end_iter,start of procedure cancellation_test::operator==(),Condition is true,return from a call to cancellation_test::operator==,return from a call to cancellation_test::is_size_zero_iter,Taking true branch] -codetoanalyze/cpp/errors/npe/cancellation.cpp, cancellation_test::size_zero_deref_iter_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure cancellation_test::size_zero_deref_iter_bad(),start of procedure cancellation_test::is_size_zero_iter(),start of procedure begin_iter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,return from a call to cancellation_test::Test::begin_iter,start of procedure end_iter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,return from a call to cancellation_test::Test::end_iter,start of procedure cancellation_test::operator==(),Condition is true,return from a call to cancellation_test::operator==,return from a call to cancellation_test::is_size_zero_iter,Taking true branch] +codetoanalyze/cpp/errors/npe/cancellation.cpp, cancellation_test::size_zero_deref_iter2_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure cancellation_test::size_zero_deref_iter2_bad(),start of procedure cancellation_test::is_size_zero_iter(),start of procedure begin_iter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,Skipping ~TestIter: method has no implementation,return from a call to cancellation_test::Test::begin_iter,start of procedure end_iter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,Skipping ~TestIter: method has no implementation,return from a call to cancellation_test::Test::end_iter,start of procedure cancellation_test::operator==(),Condition is true,return from a call to cancellation_test::operator==,Skipping ~TestIter: method has no implementation,return from a call to cancellation_test::is_size_zero_iter,Taking true branch] +codetoanalyze/cpp/errors/npe/cancellation.cpp, cancellation_test::size_zero_deref_iter_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure cancellation_test::size_zero_deref_iter_bad(),start of procedure cancellation_test::is_size_zero_iter(),start of procedure begin_iter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,Skipping ~TestIter: method has no implementation,return from a call to cancellation_test::Test::begin_iter,start of procedure end_iter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,start of procedure TestIter,return from a call to cancellation_test::TestIter::TestIter,Skipping ~TestIter: method has no implementation,return from a call to cancellation_test::Test::end_iter,start of procedure cancellation_test::operator==(),Condition is true,return from a call to cancellation_test::operator==,Skipping ~TestIter: method has no implementation,return from a call to cancellation_test::is_size_zero_iter,Taking true branch] codetoanalyze/cpp/errors/npe/npe_added_to_b1.cpp, npe_added_to_b1::causes_npe, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure npe_added_to_b1::causes_npe(),start of procedure npe_added_to_b1::deref_ref()] codetoanalyze/cpp/errors/npe/npe_added_to_b1.cpp, npe_added_to_b1::causes_npe_person, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure npe_added_to_b1::causes_npe_person(),start of procedure Person,return from a call to npe_added_to_b1::Person::Person,start of procedure npe_added_to_b1::deref_person()] codetoanalyze/cpp/errors/npe/null_returned_by_method.cpp, testNullDeref, 3, NULL_DEREFERENCE, B2, ERROR, [start of procedure testNullDeref(),Taking true branch,start of procedure getNull,return from a call to XFactory::getNull] @@ -190,7 +190,7 @@ codetoanalyze/cpp/errors/types/typeid_expr.cpp, person_typeid_name, 4, MEMORY_LE codetoanalyze/cpp/errors/types/typeid_expr.cpp, person_typeid_name, 8, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure person_typeid_name(),start of procedure Person,return from a call to Person::Person,Taking false branch] codetoanalyze/cpp/errors/types/typeid_expr.cpp, template_type_id_person, 2, MEMORY_LEAK, CPP, ERROR, [start of procedure template_type_id_person(),start of procedure Person,return from a call to Person::Person,Skipping template_typeid(): empty list of specs] codetoanalyze/cpp/errors/types/typeid_expr.cpp, template_type_id_person, 5, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure template_type_id_person(),start of procedure Person,return from a call to Person::Person,Taking false branch] -codetoanalyze/cpp/errors/types/typeid_expr.cpp, template_typeid, 2, MEMORY_LEAK, CPP, ERROR, [start of procedure template_typeid(),start of procedure Person,return from a call to Person::Person,start of procedure Person,return from a call to Person::Person,start of procedure ~Person,start of procedure __infer_inner_destructor_~Person,return from a call to Person::__infer_inner_destructor_~Person,return from a call to Person::~Person] +codetoanalyze/cpp/errors/types/typeid_expr.cpp, template_typeid, 2, MEMORY_LEAK, CPP, ERROR, [start of procedure template_typeid(),start of procedure Person,return from a call to Person::Person,start of procedure Person,return from a call to Person::Person,start of procedure ~Person,start of procedure __infer_inner_destructor_~Person,return from a call to Person::__infer_inner_destructor_~Person,return from a call to Person::~Person,start of procedure ~Person,start of procedure __infer_inner_destructor_~Person,return from a call to Person::__infer_inner_destructor_~Person,return from a call to Person::~Person] codetoanalyze/cpp/errors/use_after_free/foreach_map.cpp, use_after_free::Basic::test_double_delete_bad, 3, USE_AFTER_FREE, B1, ERROR, [start of procedure test_double_delete_bad,Skipping Y: method has no implementation] codetoanalyze/cpp/errors/use_after_free/foreach_map.cpp, use_after_free::Basic::test_for_map_delete_ok_FP, 2, USE_AFTER_FREE, B5, ERROR, [start of procedure test_for_map_delete_ok_FP,Loop condition is true. Entering loop body,Skipping operator*: method has no implementation,Loop condition is true. Entering loop body,Skipping operator*: method has no implementation] codetoanalyze/cpp/errors/use_after_free/foreach_map.cpp, use_after_free::Basic::test_for_umap_delete_ok_FP, 2, USE_AFTER_FREE, B5, ERROR, [start of procedure test_for_umap_delete_ok_FP,Loop condition is true. Entering loop body,Skipping operator*: method has no implementation,Loop condition is true. Entering loop body,Skipping operator*: method has no implementation] @@ -211,11 +211,11 @@ codetoanalyze/cpp/errors/vector/empty_access.cpp, size_check0_empty, 2, EMPTY_VE codetoanalyze/cpp/errors/vector/empty_access.cpp, vector_as_param_by_value_empty, 2, EMPTY_VECTOR_ACCESS, B5, ERROR, [start of procedure vector_as_param_by_value_empty(),start of procedure vector_param_by_value_access(),return from a call to vector_param_by_value_access] codetoanalyze/cpp/errors/vector/empty_access.cpp, vector_as_param_clear, 3, EMPTY_VECTOR_ACCESS, B1, ERROR, [start of procedure vector_as_param_clear(),start of procedure vector_param_clear(),return from a call to vector_param_clear] codetoanalyze/cpp/errors/vector/empty_access.cpp, vector_as_param_empty, 2, EMPTY_VECTOR_ACCESS, B1, ERROR, [start of procedure vector_as_param_empty(),start of procedure vector_param_access(),return from a call to vector_param_access] -codetoanalyze/cpp/errors/vector/iterator_access.cpp, iterator_access::possible_npe, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure iterator_access::possible_npe(),Loop condition is true. Entering loop body,Taking true branch,Taking true branch] -codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::empty_deref1_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure iterator_compare::empty_deref1_bad(),start of procedure iterator_compare::is_empty(),return from a call to iterator_compare::is_empty,Taking true branch] -codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::empty_deref2_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure iterator_compare::empty_deref2_bad(),start of procedure iterator_compare::not_empty(),return from a call to iterator_compare::not_empty,Taking true branch] -codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::not_empty_deref1_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure iterator_compare::not_empty_deref1_bad(),Skipping __infer_skip_function(): function or method not found,start of procedure iterator_compare::is_empty(),return from a call to iterator_compare::is_empty,Taking true branch] -codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::not_empty_deref2_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure iterator_compare::not_empty_deref2_bad(),Skipping __infer_skip_function(): function or method not found,start of procedure iterator_compare::not_empty(),return from a call to iterator_compare::not_empty,Taking true branch] +codetoanalyze/cpp/errors/vector/iterator_access.cpp, iterator_access::possible_npe, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure iterator_access::possible_npe(),Skipping ~__wrap_iter: method has no implementation,Loop condition is true. Entering loop body,Taking true branch,Taking true branch] +codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::empty_deref1_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure iterator_compare::empty_deref1_bad(),start of procedure iterator_compare::is_empty(),Skipping ~__wrap_iter: method has no implementation,return from a call to iterator_compare::is_empty,Taking true branch] +codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::empty_deref2_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure iterator_compare::empty_deref2_bad(),start of procedure iterator_compare::not_empty(),Skipping ~__wrap_iter: method has no implementation,return from a call to iterator_compare::not_empty,Taking true branch] +codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::not_empty_deref1_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure iterator_compare::not_empty_deref1_bad(),Skipping __infer_skip_function(): function or method not found,start of procedure iterator_compare::is_empty(),Skipping ~__wrap_iter: method has no implementation,return from a call to iterator_compare::is_empty,Taking true branch] +codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::not_empty_deref2_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure iterator_compare::not_empty_deref2_bad(),Skipping __infer_skip_function(): function or method not found,start of procedure iterator_compare::not_empty(),Skipping ~__wrap_iter: method has no implementation,return from a call to iterator_compare::not_empty,Taking true branch] codetoanalyze/cpp/errors/vector/loop.cpp, non_empty_vector_loop_bad, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure non_empty_vector_loop_bad(),Loop condition is true. Entering loop body] codetoanalyze/cpp/shared/attributes/annotate.cpp, derefFirstArg2_null_deref, 2, NULL_DEREFERENCE, B5, ERROR, [start of procedure derefFirstArg2_null_deref()] codetoanalyze/cpp/shared/attributes/annotate.cpp, derefFirstArg3_null_deref, 2, NULL_DEREFERENCE, B1, ERROR, [start of procedure derefFirstArg3_null_deref(),start of procedure derefFirstArg3()] @@ -265,21 +265,21 @@ codetoanalyze/cpp/shared/constructors/constructor_with_body.cpp, constructor_wit codetoanalyze/cpp/shared/constructors/copy_array_field.cpp, copy_array_field::npe, 4, NULL_DEREFERENCE, B1, ERROR, [start of procedure copy_array_field::npe(),start of procedure X,return from a call to copy_array_field::X::X,start of procedure X,return from a call to copy_array_field::X::X] codetoanalyze/cpp/shared/constructors/copy_move_constructor.cpp, copy_move_constructor::copyX_div0, 4, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure copy_move_constructor::copyX_div0(),start of procedure X,return from a call to copy_move_constructor::X::X,start of procedure X,return from a call to copy_move_constructor::X::X] codetoanalyze/cpp/shared/constructors/copy_move_constructor.cpp, copy_move_constructor::copyY_div0, 4, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure copy_move_constructor::copyY_div0(),start of procedure Y,return from a call to copy_move_constructor::Y::Y,start of procedure Y,return from a call to copy_move_constructor::Y::Y] -codetoanalyze/cpp/shared/constructors/copy_move_constructor.cpp, copy_move_constructor::moveX_div0, 0, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure copy_move_constructor::moveX_div0(),start of procedure copy_move_constructor::getX(),start of procedure X,return from a call to copy_move_constructor::X::X,start of procedure X,return from a call to copy_move_constructor::X::X,Skipping ~X: method has no implementation,return from a call to copy_move_constructor::getX] -codetoanalyze/cpp/shared/constructors/copy_move_constructor.cpp, copy_move_constructor::moveY_div0, 0, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure copy_move_constructor::moveY_div0(),start of procedure copy_move_constructor::getY(),start of procedure Y,return from a call to copy_move_constructor::Y::Y,start of procedure Y,return from a call to copy_move_constructor::Y::Y,Skipping ~Y: method has no implementation,return from a call to copy_move_constructor::getY] -codetoanalyze/cpp/shared/constructors/copy_move_constructor.cpp, copy_move_constructor::moveY_moveY_copyY_div0, 3, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure copy_move_constructor::moveY_moveY_copyY_div0(),start of procedure copy_move_constructor::getY(),start of procedure Y,return from a call to copy_move_constructor::Y::Y,start of procedure Y,return from a call to copy_move_constructor::Y::Y,Skipping ~Y: method has no implementation,return from a call to copy_move_constructor::getY,start of procedure Y,return from a call to copy_move_constructor::Y::Y,start of procedure Y,return from a call to copy_move_constructor::Y::Y] -codetoanalyze/cpp/shared/constructors/temp_object.cpp, temp_object::assign_temp_div0, 2, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure temp_object::assign_temp_div0(),start of procedure X,return from a call to temp_object::X::X,start of procedure X,return from a call to temp_object::X::X,start of procedure div] -codetoanalyze/cpp/shared/constructors/temp_object.cpp, temp_object::getX_field_div0, 0, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure temp_object::getX_field_div0(),start of procedure temp_object::getX(),start of procedure X,return from a call to temp_object::X::X,start of procedure X,return from a call to temp_object::X::X,return from a call to temp_object::getX,start of procedure temp_object::div()] -codetoanalyze/cpp/shared/constructors/temp_object.cpp, temp_object::getX_method_div0, 0, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure temp_object::getX_method_div0(),start of procedure temp_object::getX(),start of procedure X,return from a call to temp_object::X::X,start of procedure X,return from a call to temp_object::X::X,return from a call to temp_object::getX,start of procedure div] +codetoanalyze/cpp/shared/constructors/copy_move_constructor.cpp, copy_move_constructor::moveX_div0, 0, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure copy_move_constructor::moveX_div0(),start of procedure copy_move_constructor::getX(),start of procedure X,return from a call to copy_move_constructor::X::X,start of procedure X,return from a call to copy_move_constructor::X::X,Skipping ~X: method has no implementation,return from a call to copy_move_constructor::getX,Skipping ~X: method has no implementation] +codetoanalyze/cpp/shared/constructors/copy_move_constructor.cpp, copy_move_constructor::moveY_div0, 0, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure copy_move_constructor::moveY_div0(),start of procedure copy_move_constructor::getY(),start of procedure Y,return from a call to copy_move_constructor::Y::Y,start of procedure Y,return from a call to copy_move_constructor::Y::Y,Skipping ~Y: method has no implementation,return from a call to copy_move_constructor::getY,Skipping ~Y: method has no implementation] +codetoanalyze/cpp/shared/constructors/copy_move_constructor.cpp, copy_move_constructor::moveY_moveY_copyY_div0, 3, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure copy_move_constructor::moveY_moveY_copyY_div0(),start of procedure copy_move_constructor::getY(),start of procedure Y,return from a call to copy_move_constructor::Y::Y,start of procedure Y,return from a call to copy_move_constructor::Y::Y,Skipping ~Y: method has no implementation,return from a call to copy_move_constructor::getY,start of procedure Y,return from a call to copy_move_constructor::Y::Y,Skipping ~Y: method has no implementation,start of procedure Y,return from a call to copy_move_constructor::Y::Y] +codetoanalyze/cpp/shared/constructors/temp_object.cpp, temp_object::assign_temp_div0, 2, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure temp_object::assign_temp_div0(),start of procedure X,return from a call to temp_object::X::X,start of procedure X,return from a call to temp_object::X::X,Skipping ~X: method has no implementation,start of procedure div] +codetoanalyze/cpp/shared/constructors/temp_object.cpp, temp_object::getX_field_div0, 0, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure temp_object::getX_field_div0(),start of procedure temp_object::getX(),start of procedure X,return from a call to temp_object::X::X,start of procedure X,return from a call to temp_object::X::X,Skipping ~X: method has no implementation,return from a call to temp_object::getX,start of procedure temp_object::div()] +codetoanalyze/cpp/shared/constructors/temp_object.cpp, temp_object::getX_method_div0, 0, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure temp_object::getX_method_div0(),start of procedure temp_object::getX(),start of procedure X,return from a call to temp_object::X::X,start of procedure X,return from a call to temp_object::X::X,Skipping ~X: method has no implementation,return from a call to temp_object::getX,start of procedure div] codetoanalyze/cpp/shared/constructors/temp_object.cpp, temp_object::temp_field2_div0, 0, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure temp_object::temp_field2_div0(),start of procedure X,return from a call to temp_object::X::X,start of procedure temp_object::div()] codetoanalyze/cpp/shared/constructors/temp_object.cpp, temp_object::temp_field_div0, 0, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure temp_object::temp_field_div0(),start of procedure X,return from a call to temp_object::X::X,start of procedure temp_object::div()] codetoanalyze/cpp/shared/constructors/temp_object.cpp, temp_object::temp_method_div0, 0, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure temp_object::temp_method_div0(),start of procedure X,return from a call to temp_object::X::X,start of procedure div] codetoanalyze/cpp/shared/exceptions/Exceptions.cpp, call_deref_with_null, 0, NULL_DEREFERENCE, B1, ERROR, [start of procedure call_deref_with_null(),start of procedure deref_null()] -codetoanalyze/cpp/shared/lambda/lambda1.cpp, bar, 5, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure bar(),start of procedure ,return from a call to bar::lambda_shared_lambda_lambda1.cpp:9:15::,start of procedure operator(),return from a call to bar::lambda_shared_lambda_lambda1.cpp:9:15::operator()] -codetoanalyze/cpp/shared/lambda/lambda1.cpp, foo, 3, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure foo(),start of procedure ,return from a call to foo::lambda_shared_lambda_lambda1.cpp:17:17::,start of procedure ,return from a call to foo::lambda_shared_lambda_lambda1.cpp:18:12::,start of procedure operator(),return from a call to foo::lambda_shared_lambda_lambda1.cpp:18:12::operator()] +codetoanalyze/cpp/shared/lambda/lambda1.cpp, bar, 5, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure bar(),start of procedure ,return from a call to bar::lambda_shared_lambda_lambda1.cpp:9:15::,Skipping ~: method has no implementation,start of procedure operator(),return from a call to bar::lambda_shared_lambda_lambda1.cpp:9:15::operator()] +codetoanalyze/cpp/shared/lambda/lambda1.cpp, foo, 3, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure foo(),start of procedure ,return from a call to foo::lambda_shared_lambda_lambda1.cpp:17:17::,Skipping ~: method has no implementation,start of procedure ,return from a call to foo::lambda_shared_lambda_lambda1.cpp:18:12::,Skipping ~: method has no implementation,start of procedure operator(),return from a call to foo::lambda_shared_lambda_lambda1.cpp:18:12::operator()] codetoanalyze/cpp/shared/lambda/lambda1.cpp, foo::lambda_shared_lambda_lambda1.cpp:17:17::operator(), 0, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure operator()] codetoanalyze/cpp/shared/methods/conversion_operator.cpp, conversion_operator::branch_div0, 4, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure conversion_operator::branch_div0(),start of procedure X,return from a call to conversion_operator::X::X,start of procedure operator_bool,return from a call to conversion_operator::X::operator_bool,Taking true branch,start of procedure operator_int,return from a call to conversion_operator::X::operator_int] -codetoanalyze/cpp/shared/methods/conversion_operator.cpp, conversion_operator::y_branch_div0, 6, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure conversion_operator::y_branch_div0(),start of procedure Y,return from a call to conversion_operator::Y::Y,start of procedure operator_X,start of procedure X,return from a call to conversion_operator::X::X,start of procedure X,return from a call to conversion_operator::X::X,return from a call to conversion_operator::Y::operator_X,start of procedure X,return from a call to conversion_operator::X::X,start of procedure operator_bool,return from a call to conversion_operator::X::operator_bool,Taking true branch,start of procedure operator_X,start of procedure X,return from a call to conversion_operator::X::X,start of procedure X,return from a call to conversion_operator::X::X,return from a call to conversion_operator::Y::operator_X,start of procedure X,return from a call to conversion_operator::X::X,start of procedure operator_int,return from a call to conversion_operator::X::operator_int] +codetoanalyze/cpp/shared/methods/conversion_operator.cpp, conversion_operator::y_branch_div0, 6, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure conversion_operator::y_branch_div0(),start of procedure Y,return from a call to conversion_operator::Y::Y,start of procedure operator_X,start of procedure X,return from a call to conversion_operator::X::X,start of procedure X,return from a call to conversion_operator::X::X,Skipping ~X: method has no implementation,return from a call to conversion_operator::Y::operator_X,start of procedure X,return from a call to conversion_operator::X::X,start of procedure operator_bool,return from a call to conversion_operator::X::operator_bool,Taking true branch,start of procedure operator_X,start of procedure X,return from a call to conversion_operator::X::X,start of procedure X,return from a call to conversion_operator::X::X,Skipping ~X: method has no implementation,return from a call to conversion_operator::Y::operator_X,start of procedure X,return from a call to conversion_operator::X::X,start of procedure operator_int,return from a call to conversion_operator::X::operator_int,Skipping ~X: method has no implementation] codetoanalyze/cpp/shared/methods/static.cpp, div0_class, 0, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure div0_class(),start of procedure fun] codetoanalyze/cpp/shared/methods/static.cpp, div0_instance, 2, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure div0_instance(),start of procedure fun] codetoanalyze/cpp/shared/methods/virtual_methods.cpp, poly_area, 3, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure poly_area(),start of procedure Polygon,return from a call to Polygon::Polygon,start of procedure area,return from a call to Polygon::area] @@ -366,8 +366,8 @@ codetoanalyze/cpp/shared/types/operator_overload.cpp, div0_inheritted_op, 2, DIV codetoanalyze/cpp/shared/types/operator_overload.cpp, div0_method, 3, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure div0_method(),start of procedure operator[],return from a call to X::operator[]] codetoanalyze/cpp/shared/types/operator_overload.cpp, div0_method_op, 3, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure div0_method_op(),start of procedure operator[],return from a call to X::operator[]] codetoanalyze/cpp/shared/types/operator_overload.cpp, div0_method_op_ptr, 0, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure div0_method_op_ptr(),start of procedure operator[],return from a call to X::operator[]] -codetoanalyze/cpp/shared/types/return_struct.cpp, return_struct::get_div0, 2, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure return_struct::get_div0(),start of procedure return_struct::get(),start of procedure X,return from a call to return_struct::X::X,start of procedure X,return from a call to return_struct::X::X,Skipping ~X: method has no implementation,return from a call to return_struct::get,start of procedure X,return from a call to return_struct::X::X] -codetoanalyze/cpp/shared/types/return_struct.cpp, return_struct::get_field_div0, 2, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure return_struct::get_field_div0(),start of procedure return_struct::get(),start of procedure X,return from a call to return_struct::X::X,start of procedure X,return from a call to return_struct::X::X,Skipping ~X: method has no implementation,return from a call to return_struct::get,Skipping skip: method has no implementation,start of procedure return_struct::get(),start of procedure X,return from a call to return_struct::X::X,start of procedure X,return from a call to return_struct::X::X,Skipping ~X: method has no implementation,return from a call to return_struct::get] +codetoanalyze/cpp/shared/types/return_struct.cpp, return_struct::get_div0, 2, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure return_struct::get_div0(),start of procedure return_struct::get(),start of procedure X,return from a call to return_struct::X::X,start of procedure X,return from a call to return_struct::X::X,Skipping ~X: method has no implementation,return from a call to return_struct::get,start of procedure X,return from a call to return_struct::X::X,Skipping ~X: method has no implementation] +codetoanalyze/cpp/shared/types/return_struct.cpp, return_struct::get_field_div0, 2, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure return_struct::get_field_div0(),start of procedure return_struct::get(),start of procedure X,return from a call to return_struct::X::X,start of procedure X,return from a call to return_struct::X::X,Skipping ~X: method has no implementation,return from a call to return_struct::get,Skipping ~X: method has no implementation,start of procedure return_struct::get(),start of procedure X,return from a call to return_struct::X::X,start of procedure X,return from a call to return_struct::X::X,Skipping ~X: method has no implementation,return from a call to return_struct::get,Skipping ~X: method has no implementation] codetoanalyze/cpp/shared/types/return_struct.cpp, return_struct::get_method_div0, 0, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure return_struct::get_method_div0(),start of procedure return_struct::get(),start of procedure X,return from a call to return_struct::X::X,start of procedure X,return from a call to return_struct::X::X,Skipping ~X: method has no implementation,return from a call to return_struct::get,start of procedure div] codetoanalyze/cpp/shared/types/struct_forward_declare.cpp, struct_forward_declare::X_Y_div0, 7, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure struct_forward_declare::X_Y_div0(),start of procedure X,return from a call to struct_forward_declare::X::X,Taking false branch,start of procedure getF,return from a call to struct_forward_declare::X::getF] codetoanalyze/cpp/shared/types/struct_forward_declare.cpp, struct_forward_declare::X_div0, 3, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure struct_forward_declare::X_div0(),start of procedure X,return from a call to struct_forward_declare::X::X,start of procedure getF,return from a call to struct_forward_declare::X::getF] @@ -376,5 +376,5 @@ codetoanalyze/cpp/shared/types/struct_forward_declare.cpp, struct_forward_declar codetoanalyze/cpp/shared/types/struct_forward_declare.cpp, struct_forward_declare::Z_ptr_div0, 5, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure struct_forward_declare::Z_ptr_div0(),start of procedure getF,return from a call to struct_forward_declare::Z::getF] codetoanalyze/cpp/shared/types/struct_pass_by_value.cpp, struct_pass_by_value::field_div0, 3, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure struct_pass_by_value::field_div0(),start of procedure X,return from a call to struct_pass_by_value::X::X,start of procedure Y,start of procedure X,return from a call to struct_pass_by_value::X::X,return from a call to struct_pass_by_value::Y::Y,start of procedure X,return from a call to struct_pass_by_value::X::X,start of procedure struct_pass_by_value::get_f(),return from a call to struct_pass_by_value::get_f] codetoanalyze/cpp/shared/types/struct_pass_by_value.cpp, struct_pass_by_value::param_get_copied_div0, 3, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure struct_pass_by_value::param_get_copied_div0(),start of procedure X,return from a call to struct_pass_by_value::X::X,start of procedure X,return from a call to struct_pass_by_value::X::X,start of procedure struct_pass_by_value::set_f(),return from a call to struct_pass_by_value::set_f] -codetoanalyze/cpp/shared/types/struct_pass_by_value.cpp, struct_pass_by_value::temp_div0, 0, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure struct_pass_by_value::temp_div0(),start of procedure X,return from a call to struct_pass_by_value::X::X,start of procedure X,return from a call to struct_pass_by_value::X::X,start of procedure struct_pass_by_value::get_f(),return from a call to struct_pass_by_value::get_f] +codetoanalyze/cpp/shared/types/struct_pass_by_value.cpp, struct_pass_by_value::temp_div0, 0, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure struct_pass_by_value::temp_div0(),start of procedure X,return from a call to struct_pass_by_value::X::X,start of procedure X,return from a call to struct_pass_by_value::X::X,start of procedure struct_pass_by_value::get_f(),return from a call to struct_pass_by_value::get_f,Skipping ~X: method has no implementation] codetoanalyze/cpp/shared/types/struct_pass_by_value.cpp, struct_pass_by_value::var_div0, 2, DIVIDE_BY_ZERO, no_bucket, ERROR, [start of procedure struct_pass_by_value::var_div0(),start of procedure X,return from a call to struct_pass_by_value::X::X,start of procedure X,return from a call to struct_pass_by_value::X::X,start of procedure struct_pass_by_value::get_f(),return from a call to struct_pass_by_value::get_f] diff --git a/infer/tests/codetoanalyze/cpp/frontend/destructors/break_scope.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/destructors/break_scope.cpp.dot index 311e2784a..82152845b 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/destructors/break_scope.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/destructors/break_scope.cpp.dot @@ -65,11 +65,11 @@ digraph cfg { "test_do_while#break_scope#1068194121698893969.72aceeae2a95e32b3efdbdc08d127420_16" -> "test_do_while#break_scope#1068194121698893969.72aceeae2a95e32b3efdbdc08d127420_4" ; -"test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_1" [label="1: Start break_scope::test_for\nFormals: b:_Bool\nLocals: x2:break_scope::X it:break_scope::iterator 0$?%__sil_tmpSIL_materialize_temp__n$9:break_scope::iterator 0$?%__sil_tmp__temp_return_n$16:break_scope::iterator 0$?%__sil_tmpSIL_materialize_temp__n$19:break_scope::iterator const x1:break_scope::X vector:break_scope::vec \n " color=yellow style=filled] +"test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_1" [label="1: Start break_scope::test_for\nFormals: b:_Bool\nLocals: x2:break_scope::X it:break_scope::iterator 0$?%__sil_tmpSIL_materialize_temp__n$9:break_scope::iterator 0$?%__sil_tmp__temp_return_n$19:break_scope::iterator 0$?%__sil_tmpSIL_materialize_temp__n$21:break_scope::iterator const x1:break_scope::X vector:break_scope::vec \n " color=yellow style=filled] - "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_1" -> "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_17" ; -"test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_2" [label="2: Exit break_scope::test_for \n NULLIFY(&x2); [line 64, column 1]\n NULLIFY(&x1); [line 64, column 1]\n NULLIFY(&0$?%__sil_tmp__temp_return_n$16); [line 64, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$19); [line 64, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$9); [line 64, column 1]\n NULLIFY(&it); [line 64, column 1]\n NULLIFY(&vector); [line 64, column 1]\n " color=yellow style=filled] + "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_1" -> "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_18" ; +"test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_2" [label="2: Exit break_scope::test_for \n NULLIFY(&0$?%__sil_tmp__temp_return_n$19); [line 64, column 1]\n NULLIFY(&x2); [line 64, column 1]\n NULLIFY(&x1); [line 64, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$9); [line 64, column 1]\n NULLIFY(&it); [line 64, column 1]\n NULLIFY(&vector); [line 64, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$21); [line 64, column 1]\n " color=yellow style=filled] "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_3" [label="3: Destruction(Scope) \n _=*&x2:break_scope::X [line 64, column 1]\n n$1=_fun_break_scope::X::~X(&x2:break_scope::X*) injected [line 64, column 1]\n _=*&vector:break_scope::vec [line 64, column 1]\n n$3=_fun_break_scope::vec::~vec(&vector:break_scope::vec*) injected [line 64, column 1]\n EXIT_SCOPE(_,_,n$1,n$3,vector,x2); [line 64, column 1]\n APPLY_ABSTRACTION; [line 64, column 1]\n " shape="box"] @@ -87,58 +87,62 @@ digraph cfg { "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_6" [label="6: + \n " ] - "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_6" -> "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_9" ; -"test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_7" [label="7: DeclStmt \n VARIABLE_DECLARED(it:break_scope::iterator); [line 57, column 8]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$9:break_scope::iterator); [line 57, column 22]\n _=*&vector:break_scope::vec [line 57, column 22]\n n$12=_fun_break_scope::vec::begin(&vector:break_scope::vec&,&0$?%__sil_tmpSIL_materialize_temp__n$9:break_scope::iterator*) assign_last [line 57, column 22]\n n$13=_fun_break_scope::iterator::iterator(&it:break_scope::iterator*,&0$?%__sil_tmpSIL_materialize_temp__n$9:break_scope::iterator&) [line 57, column 22]\n EXIT_SCOPE(_,n$12,n$13,0$?%__sil_tmpSIL_materialize_temp__n$9); [line 57, column 22]\n APPLY_ABSTRACTION; [line 57, column 22]\n " shape="box"] + "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_6" -> "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_10" ; +"test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_7" [label="7: DeclStmt \n VARIABLE_DECLARED(it:break_scope::iterator); [line 57, column 8]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$9:break_scope::iterator); [line 57, column 22]\n _=*&vector:break_scope::vec [line 57, column 22]\n n$15=_fun_break_scope::vec::begin(&vector:break_scope::vec&,&0$?%__sil_tmpSIL_materialize_temp__n$9:break_scope::iterator*) assign_last [line 57, column 22]\n n$16=_fun_break_scope::iterator::iterator(&it:break_scope::iterator*,&0$?%__sil_tmpSIL_materialize_temp__n$9:break_scope::iterator&) [line 57, column 22]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$9:break_scope::iterator [line 57, column 35]\n n$11=_fun_break_scope::iterator::~iterator(&0$?%__sil_tmpSIL_materialize_temp__n$9:break_scope::iterator*) injected [line 57, column 35]\n EXIT_SCOPE(_,_,n$11,n$15,n$16,0$?%__sil_tmpSIL_materialize_temp__n$9); [line 57, column 35]\n APPLY_ABSTRACTION; [line 57, column 35]\n " shape="box"] "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_7" -> "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_6" ; -"test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_8" [label="8: Call _fun_break_scope::iterator::operator++ \n n$17=_fun_break_scope::iterator::operator++(&it:break_scope::iterator&,&0$?%__sil_tmp__temp_return_n$16:break_scope::iterator*) assign_last [line 57, column 58]\n EXIT_SCOPE(n$17,0$?%__sil_tmp__temp_return_n$16); [line 57, column 58]\n APPLY_ABSTRACTION; [line 57, column 58]\n " shape="box"] +"test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_8" [label="8: Call _fun_break_scope::iterator::operator++ \n n$20=_fun_break_scope::iterator::operator++(&it:break_scope::iterator&,&0$?%__sil_tmp__temp_return_n$19:break_scope::iterator*) assign_last [line 57, column 58]\n EXIT_SCOPE(n$20,0$?%__sil_tmp__temp_return_n$19); [line 57, column 58]\n APPLY_ABSTRACTION; [line 57, column 58]\n " shape="box"] "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_8" -> "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_6" ; -"test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_9" [label="9: Call _fun_break_scope::iterator::operator!= \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$19:break_scope::iterator const ); [line 57, column 44]\n _=*&vector:break_scope::vec [line 57, column 44]\n n$22=_fun_break_scope::vec::end(&vector:break_scope::vec&,&0$?%__sil_tmpSIL_materialize_temp__n$19:break_scope::iterator*) assign_last [line 57, column 44]\n n$23=_fun_break_scope::iterator::operator!=(&it:break_scope::iterator&,&0$?%__sil_tmpSIL_materialize_temp__n$19:break_scope::iterator const &) [line 57, column 38]\n EXIT_SCOPE(_,n$22,0$?%__sil_tmpSIL_materialize_temp__n$19); [line 57, column 38]\n " shape="box"] +"test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_9" [label="9: Destruction(temporaries cleanup) \n _=*&0$?%__sil_tmpSIL_materialize_temp__n$21:break_scope::iterator const [line 57, column 55]\n n$23=_fun_break_scope::iterator::~iterator(&0$?%__sil_tmpSIL_materialize_temp__n$21:break_scope::iterator const *) injected [line 57, column 55]\n EXIT_SCOPE(_,n$23,0$?%__sil_tmpSIL_materialize_temp__n$21); [line 57, column 55]\n " shape="box"] - "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_9" -> "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_10" ; "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_9" -> "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_11" ; -"test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_10" [label="10: Prune (true branch, for loop) \n PRUNE(n$23, true); [line 57, column 38]\n EXIT_SCOPE(n$23); [line 57, column 38]\n " shape="invhouse"] + "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_9" -> "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_12" ; +"test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_10" [label="10: Call _fun_break_scope::iterator::operator!= \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$21:break_scope::iterator const ); [line 57, column 44]\n _=*&vector:break_scope::vec [line 57, column 44]\n n$28=_fun_break_scope::vec::end(&vector:break_scope::vec&,&0$?%__sil_tmpSIL_materialize_temp__n$21:break_scope::iterator*) assign_last [line 57, column 44]\n n$29=_fun_break_scope::iterator::operator!=(&it:break_scope::iterator&,&0$?%__sil_tmpSIL_materialize_temp__n$21:break_scope::iterator const &) [line 57, column 38]\n EXIT_SCOPE(_,n$28); [line 57, column 38]\n " shape="box"] - "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_10" -> "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_13" ; - "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_10" -> "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_14" ; -"test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_11" [label="11: Prune (false branch, for loop) \n PRUNE(!n$23, false); [line 57, column 38]\n EXIT_SCOPE(n$23); [line 57, column 38]\n APPLY_ABSTRACTION; [line 57, column 38]\n " shape="invhouse"] + "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_10" -> "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_9" ; +"test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_11" [label="11: Prune (true branch, for loop) \n PRUNE(n$29, true); [line 57, column 38]\n EXIT_SCOPE(n$29); [line 57, column 38]\n " shape="invhouse"] - "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_11" -> "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_5" ; -"test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_12" [label="12: + \n " ] + "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_11" -> "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_14" ; + "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_11" -> "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_15" ; +"test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_12" [label="12: Prune (false branch, for loop) \n PRUNE(!n$29, false); [line 57, column 38]\n EXIT_SCOPE(n$29); [line 57, column 38]\n APPLY_ABSTRACTION; [line 57, column 38]\n " shape="invhouse"] - "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_12" -> "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_8" ; -"test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_13" [label="13: Prune (true branch, if) \n n$24=*&b:_Bool [line 58, column 9]\n PRUNE(n$24, true); [line 58, column 9]\n NULLIFY(&b); [line 58, column 9]\n EXIT_SCOPE(n$24,b); [line 58, column 9]\n " shape="invhouse"] + "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_12" -> "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_5" ; +"test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_13" [label="13: + \n " ] - "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_13" -> "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_16" ; -"test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_14" [label="14: Prune (false branch, if) \n n$24=*&b:_Bool [line 58, column 9]\n PRUNE(!n$24, false); [line 58, column 9]\n EXIT_SCOPE(n$24); [line 58, column 9]\n " shape="invhouse"] + "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_13" -> "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_8" ; +"test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_14" [label="14: Prune (true branch, if) \n n$30=*&b:_Bool [line 58, column 9]\n PRUNE(n$30, true); [line 58, column 9]\n NULLIFY(&b); [line 58, column 9]\n EXIT_SCOPE(n$30,b); [line 58, column 9]\n " shape="invhouse"] - "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_14" -> "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_12" ; -"test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_15" [label="15: Destruction(break) \n _=*&x1:break_scope::X [line 60, column 7]\n n$26=_fun_break_scope::X::~X(&x1:break_scope::X*) injected [line 60, column 7]\n EXIT_SCOPE(_,n$26,x1); [line 60, column 7]\n APPLY_ABSTRACTION; [line 60, column 7]\n " shape="box"] + "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_14" -> "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_17" ; +"test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_15" [label="15: Prune (false branch, if) \n n$30=*&b:_Bool [line 58, column 9]\n PRUNE(!n$30, false); [line 58, column 9]\n EXIT_SCOPE(n$30); [line 58, column 9]\n " shape="invhouse"] - "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_15" -> "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_5" ; -"test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_16" [label="16: DeclStmt \n VARIABLE_DECLARED(x1:break_scope::X); [line 59, column 7]\n n$28=_fun_break_scope::X::X(&x1:break_scope::X*) [line 59, column 9]\n EXIT_SCOPE(n$28); [line 59, column 9]\n " shape="box"] + "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_15" -> "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_13" ; +"test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_16" [label="16: Destruction(break) \n _=*&x1:break_scope::X [line 60, column 7]\n n$32=_fun_break_scope::X::~X(&x1:break_scope::X*) injected [line 60, column 7]\n EXIT_SCOPE(_,n$32,x1); [line 60, column 7]\n APPLY_ABSTRACTION; [line 60, column 7]\n " shape="box"] - "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_16" -> "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_15" ; -"test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_17" [label="17: DeclStmt \n VARIABLE_DECLARED(vector:break_scope::vec); [line 56, column 3]\n n$32=_fun_break_scope::vec::vec(&vector:break_scope::vec*) [line 56, column 7]\n EXIT_SCOPE(n$32); [line 56, column 7]\n " shape="box"] + "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_16" -> "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_5" ; +"test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_17" [label="17: DeclStmt \n VARIABLE_DECLARED(x1:break_scope::X); [line 59, column 7]\n n$34=_fun_break_scope::X::X(&x1:break_scope::X*) [line 59, column 9]\n EXIT_SCOPE(n$34); [line 59, column 9]\n " shape="box"] - "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_17" -> "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_7" ; -"test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_1" [label="1: Start break_scope::test_for_range\nFormals: b:_Bool\nLocals: __end1:break_scope::iterator 0$?%__sil_tmpSIL_materialize_temp__n$10:break_scope::iterator __begin1:break_scope::iterator 0$?%__sil_tmpSIL_materialize_temp__n$16:break_scope::iterator 0$?%__sil_tmp__temp_return_n$24:break_scope::iterator x2:break_scope::X x:break_scope::X 0$?%__sil_tmpSIL_materialize_temp__n$37:break_scope::X const __range1:break_scope::vec& x1:break_scope::X vector:break_scope::vec \n " color=yellow style=filled] + "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_17" -> "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_16" ; +"test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_18" [label="18: DeclStmt \n VARIABLE_DECLARED(vector:break_scope::vec); [line 56, column 3]\n n$38=_fun_break_scope::vec::vec(&vector:break_scope::vec*) [line 56, column 7]\n EXIT_SCOPE(n$38); [line 56, column 7]\n " shape="box"] + + + "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_18" -> "test_for#break_scope#12580813866832058675.4c62e98ea10322d216af5dcd2cfbde37_7" ; +"test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_1" [label="1: Start break_scope::test_for_range\nFormals: b:_Bool\nLocals: __end1:break_scope::iterator 0$?%__sil_tmpSIL_materialize_temp__n$10:break_scope::iterator __begin1:break_scope::iterator 0$?%__sil_tmpSIL_materialize_temp__n$19:break_scope::iterator 0$?%__sil_tmp__temp_return_n$30:break_scope::iterator x2:break_scope::X x:break_scope::X 0$?%__sil_tmpSIL_materialize_temp__n$43:break_scope::X const __range1:break_scope::vec& x1:break_scope::X vector:break_scope::vec \n " color=yellow style=filled] "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_1" -> "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_20" ; -"test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_2" [label="2: Exit break_scope::test_for_range \n NULLIFY(&vector); [line 53, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$16); [line 53, column 1]\n NULLIFY(&__begin1); [line 53, column 1]\n NULLIFY(&__end1); [line 53, column 1]\n NULLIFY(&x2); [line 53, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$10); [line 53, column 1]\n NULLIFY(&x1); [line 53, column 1]\n NULLIFY(&x); [line 53, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$37); [line 53, column 1]\n NULLIFY(&0$?%__sil_tmp__temp_return_n$24); [line 53, column 1]\n " color=yellow style=filled] +"test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_2" [label="2: Exit break_scope::test_for_range \n NULLIFY(&vector); [line 53, column 1]\n NULLIFY(&__begin1); [line 53, column 1]\n NULLIFY(&__end1); [line 53, column 1]\n NULLIFY(&x2); [line 53, column 1]\n NULLIFY(&0$?%__sil_tmp__temp_return_n$30); [line 53, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$19); [line 53, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$10); [line 53, column 1]\n NULLIFY(&x1); [line 53, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$43); [line 53, column 1]\n NULLIFY(&x); [line 53, column 1]\n " color=yellow style=filled] "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_3" [label="3: Destruction(Scope) \n _=*&x1:break_scope::X [line 53, column 1]\n n$1=_fun_break_scope::X::~X(&x1:break_scope::X*) injected [line 53, column 1]\n _=*&vector:break_scope::vec [line 53, column 1]\n n$3=_fun_break_scope::vec::~vec(&vector:break_scope::vec*) injected [line 53, column 1]\n EXIT_SCOPE(_,_,n$1,n$3,x1,vector); [line 53, column 1]\n APPLY_ABSTRACTION; [line 53, column 1]\n " shape="box"] @@ -153,28 +157,28 @@ digraph cfg { "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_5" -> "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_9" ; -"test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_6" [label="6: DeclStmt \n VARIABLE_DECLARED(__end1:break_scope::iterator); [line 47, column 12]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$10:break_scope::iterator); [line 47, column 12]\n n$11=*&__range1:break_scope::vec& [line 47, column 12]\n _=*n$11:break_scope::vec [line 47, column 12]\n n$14=_fun_break_scope::vec::end(n$11:break_scope::vec&,&0$?%__sil_tmpSIL_materialize_temp__n$10:break_scope::iterator*) assign_last [line 47, column 12]\n n$15=_fun_break_scope::iterator::iterator(&__end1:break_scope::iterator*,&0$?%__sil_tmpSIL_materialize_temp__n$10:break_scope::iterator&) [line 47, column 12]\n NULLIFY(&__range1); [line 47, column 12]\n EXIT_SCOPE(_,n$11,n$14,n$15,__range1,0$?%__sil_tmpSIL_materialize_temp__n$10); [line 47, column 12]\n APPLY_ABSTRACTION; [line 47, column 12]\n " shape="box"] +"test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_6" [label="6: DeclStmt \n VARIABLE_DECLARED(__end1:break_scope::iterator); [line 47, column 12]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$10:break_scope::iterator); [line 47, column 12]\n n$14=*&__range1:break_scope::vec& [line 47, column 12]\n _=*n$14:break_scope::vec [line 47, column 12]\n n$17=_fun_break_scope::vec::end(n$14:break_scope::vec&,&0$?%__sil_tmpSIL_materialize_temp__n$10:break_scope::iterator*) assign_last [line 47, column 12]\n n$18=_fun_break_scope::iterator::iterator(&__end1:break_scope::iterator*,&0$?%__sil_tmpSIL_materialize_temp__n$10:break_scope::iterator&) [line 47, column 12]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$10:break_scope::iterator [line 47, column 12]\n n$12=_fun_break_scope::iterator::~iterator(&0$?%__sil_tmpSIL_materialize_temp__n$10:break_scope::iterator*) injected [line 47, column 12]\n NULLIFY(&__range1); [line 47, column 12]\n EXIT_SCOPE(_,_,n$12,n$14,n$17,n$18,__range1,0$?%__sil_tmpSIL_materialize_temp__n$10); [line 47, column 12]\n APPLY_ABSTRACTION; [line 47, column 12]\n " shape="box"] "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_6" -> "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_5" ; -"test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_7" [label="7: DeclStmt \n VARIABLE_DECLARED(__begin1:break_scope::iterator); [line 47, column 12]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$16:break_scope::iterator); [line 47, column 12]\n n$17=*&__range1:break_scope::vec& [line 47, column 12]\n _=*n$17:break_scope::vec [line 47, column 12]\n n$20=_fun_break_scope::vec::begin(n$17:break_scope::vec&,&0$?%__sil_tmpSIL_materialize_temp__n$16:break_scope::iterator*) assign_last [line 47, column 12]\n n$21=_fun_break_scope::iterator::iterator(&__begin1:break_scope::iterator*,&0$?%__sil_tmpSIL_materialize_temp__n$16:break_scope::iterator&) [line 47, column 12]\n EXIT_SCOPE(_,n$17,n$20,n$21,0$?%__sil_tmpSIL_materialize_temp__n$16); [line 47, column 12]\n " shape="box"] +"test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_7" [label="7: DeclStmt \n VARIABLE_DECLARED(__begin1:break_scope::iterator); [line 47, column 12]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$19:break_scope::iterator); [line 47, column 12]\n n$23=*&__range1:break_scope::vec& [line 47, column 12]\n _=*n$23:break_scope::vec [line 47, column 12]\n n$26=_fun_break_scope::vec::begin(n$23:break_scope::vec&,&0$?%__sil_tmpSIL_materialize_temp__n$19:break_scope::iterator*) assign_last [line 47, column 12]\n n$27=_fun_break_scope::iterator::iterator(&__begin1:break_scope::iterator*,&0$?%__sil_tmpSIL_materialize_temp__n$19:break_scope::iterator&) [line 47, column 12]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$19:break_scope::iterator [line 47, column 12]\n n$21=_fun_break_scope::iterator::~iterator(&0$?%__sil_tmpSIL_materialize_temp__n$19:break_scope::iterator*) injected [line 47, column 12]\n EXIT_SCOPE(_,_,n$21,n$23,n$26,n$27,0$?%__sil_tmpSIL_materialize_temp__n$19); [line 47, column 12]\n " shape="box"] "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_7" -> "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_6" ; -"test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_8" [label="8: Call _fun_break_scope::iterator::operator++ \n n$25=_fun_break_scope::iterator::operator++(&__begin1:break_scope::iterator&,&0$?%__sil_tmp__temp_return_n$24:break_scope::iterator*) assign_last [line 47, column 12]\n EXIT_SCOPE(n$25,0$?%__sil_tmp__temp_return_n$24); [line 47, column 12]\n APPLY_ABSTRACTION; [line 47, column 12]\n " shape="box"] +"test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_8" [label="8: Call _fun_break_scope::iterator::operator++ \n n$31=_fun_break_scope::iterator::operator++(&__begin1:break_scope::iterator&,&0$?%__sil_tmp__temp_return_n$30:break_scope::iterator*) assign_last [line 47, column 12]\n EXIT_SCOPE(n$31,0$?%__sil_tmp__temp_return_n$30); [line 47, column 12]\n APPLY_ABSTRACTION; [line 47, column 12]\n " shape="box"] "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_8" -> "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_5" ; -"test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_9" [label="9: Call _fun_break_scope::iterator::operator!= \n n$27=_fun_break_scope::iterator::operator!=(&__begin1:break_scope::iterator&,&__end1:break_scope::iterator&) [line 47, column 12]\n " shape="box"] +"test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_9" [label="9: Call _fun_break_scope::iterator::operator!= \n n$33=_fun_break_scope::iterator::operator!=(&__begin1:break_scope::iterator&,&__end1:break_scope::iterator&) [line 47, column 12]\n " shape="box"] "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_9" -> "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_10" ; "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_9" -> "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_11" ; -"test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_10" [label="10: Prune (true branch, for loop) \n PRUNE(n$27, true); [line 47, column 12]\n EXIT_SCOPE(n$27); [line 47, column 12]\n " shape="invhouse"] +"test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_10" [label="10: Prune (true branch, for loop) \n PRUNE(n$33, true); [line 47, column 12]\n EXIT_SCOPE(n$33); [line 47, column 12]\n " shape="invhouse"] "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_10" -> "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_17" ; -"test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_11" [label="11: Prune (false branch, for loop) \n PRUNE(!n$27, false); [line 47, column 12]\n EXIT_SCOPE(n$27); [line 47, column 12]\n APPLY_ABSTRACTION; [line 47, column 12]\n " shape="invhouse"] +"test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_11" [label="11: Prune (false branch, for loop) \n PRUNE(!n$33, false); [line 47, column 12]\n EXIT_SCOPE(n$33); [line 47, column 12]\n APPLY_ABSTRACTION; [line 47, column 12]\n " shape="invhouse"] "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_11" -> "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_4" ; @@ -182,23 +186,23 @@ digraph cfg { "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_12" -> "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_8" ; -"test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_13" [label="13: Prune (true branch, if) \n n$28=*&b:_Bool [line 48, column 9]\n PRUNE(n$28, true); [line 48, column 9]\n NULLIFY(&b); [line 48, column 9]\n EXIT_SCOPE(n$28,b); [line 48, column 9]\n " shape="invhouse"] +"test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_13" [label="13: Prune (true branch, if) \n n$34=*&b:_Bool [line 48, column 9]\n PRUNE(n$34, true); [line 48, column 9]\n NULLIFY(&b); [line 48, column 9]\n EXIT_SCOPE(n$34,b); [line 48, column 9]\n " shape="invhouse"] "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_13" -> "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_16" ; -"test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_14" [label="14: Prune (false branch, if) \n n$28=*&b:_Bool [line 48, column 9]\n PRUNE(!n$28, false); [line 48, column 9]\n EXIT_SCOPE(n$28,x); [line 48, column 9]\n " shape="invhouse"] +"test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_14" [label="14: Prune (false branch, if) \n n$34=*&b:_Bool [line 48, column 9]\n PRUNE(!n$34, false); [line 48, column 9]\n EXIT_SCOPE(n$34,x); [line 48, column 9]\n " shape="invhouse"] "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_14" -> "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_12" ; -"test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_15" [label="15: Destruction(break) \n _=*&x2:break_scope::X [line 50, column 7]\n n$30=_fun_break_scope::X::~X(&x2:break_scope::X*) injected [line 50, column 7]\n _=*&x:break_scope::X [line 50, column 7]\n n$32=_fun_break_scope::X::~X(&x:break_scope::X*) injected [line 50, column 7]\n EXIT_SCOPE(_,_,n$30,n$32,x,x2); [line 50, column 7]\n APPLY_ABSTRACTION; [line 50, column 7]\n " shape="box"] +"test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_15" [label="15: Destruction(break) \n _=*&x2:break_scope::X [line 50, column 7]\n n$36=_fun_break_scope::X::~X(&x2:break_scope::X*) injected [line 50, column 7]\n _=*&x:break_scope::X [line 50, column 7]\n n$38=_fun_break_scope::X::~X(&x:break_scope::X*) injected [line 50, column 7]\n EXIT_SCOPE(_,_,n$36,n$38,x,x2); [line 50, column 7]\n APPLY_ABSTRACTION; [line 50, column 7]\n " shape="box"] "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_15" -> "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_4" ; -"test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_16" [label="16: DeclStmt \n VARIABLE_DECLARED(x2:break_scope::X); [line 49, column 7]\n n$34=_fun_break_scope::X::X(&x2:break_scope::X*,&x:break_scope::X&) [line 49, column 14]\n EXIT_SCOPE(n$34); [line 49, column 14]\n " shape="box"] +"test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_16" [label="16: DeclStmt \n VARIABLE_DECLARED(x2:break_scope::X); [line 49, column 7]\n n$40=_fun_break_scope::X::X(&x2:break_scope::X*,&x:break_scope::X&) [line 49, column 14]\n EXIT_SCOPE(n$40); [line 49, column 14]\n " shape="box"] "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_16" -> "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_15" ; -"test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_17" [label="17: DeclStmt \n VARIABLE_DECLARED(x:break_scope::X); [line 47, column 8]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$37:break_scope::X const ); [line 47, column 12]\n n$40=_fun_break_scope::iterator::operator*(&__begin1:break_scope::iterator&,&0$?%__sil_tmpSIL_materialize_temp__n$37:break_scope::X*) assign_last [line 47, column 12]\n n$41=_fun_break_scope::X::X(&x:break_scope::X*,&0$?%__sil_tmpSIL_materialize_temp__n$37:break_scope::X const &) [line 47, column 12]\n EXIT_SCOPE(n$40,n$41,0$?%__sil_tmpSIL_materialize_temp__n$37); [line 47, column 12]\n " shape="box"] +"test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_17" [label="17: DeclStmt \n VARIABLE_DECLARED(x:break_scope::X); [line 47, column 8]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$43:break_scope::X const ); [line 47, column 12]\n n$49=_fun_break_scope::iterator::operator*(&__begin1:break_scope::iterator&,&0$?%__sil_tmpSIL_materialize_temp__n$43:break_scope::X*) assign_last [line 47, column 12]\n n$50=_fun_break_scope::X::X(&x:break_scope::X*,&0$?%__sil_tmpSIL_materialize_temp__n$43:break_scope::X const &) [line 47, column 12]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$43:break_scope::X const [line 47, column 12]\n n$45=_fun_break_scope::X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$43:break_scope::X const *) injected [line 47, column 12]\n EXIT_SCOPE(_,n$45,n$49,n$50,0$?%__sil_tmpSIL_materialize_temp__n$43); [line 47, column 12]\n " shape="box"] "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_17" -> "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_13" ; @@ -207,11 +211,11 @@ digraph cfg { "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_18" -> "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_7" ; -"test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_19" [label="19: DeclStmt \n VARIABLE_DECLARED(x1:break_scope::X); [line 46, column 3]\n n$43=_fun_break_scope::X::X(&x1:break_scope::X*) [line 46, column 5]\n EXIT_SCOPE(n$43); [line 46, column 5]\n " shape="box"] +"test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_19" [label="19: DeclStmt \n VARIABLE_DECLARED(x1:break_scope::X); [line 46, column 3]\n n$52=_fun_break_scope::X::X(&x1:break_scope::X*) [line 46, column 5]\n EXIT_SCOPE(n$52); [line 46, column 5]\n " shape="box"] "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_19" -> "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_18" ; -"test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_20" [label="20: DeclStmt \n VARIABLE_DECLARED(vector:break_scope::vec); [line 45, column 3]\n n$44=_fun_break_scope::vec::vec(&vector:break_scope::vec*) [line 45, column 7]\n EXIT_SCOPE(n$44); [line 45, column 7]\n " shape="box"] +"test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_20" [label="20: DeclStmt \n VARIABLE_DECLARED(vector:break_scope::vec); [line 45, column 3]\n n$53=_fun_break_scope::vec::vec(&vector:break_scope::vec*) [line 45, column 7]\n EXIT_SCOPE(n$53); [line 45, column 7]\n " shape="box"] "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_20" -> "test_for_range#break_scope#2115859683356214080.ad34c277f8d086eb0a22c75fc80fb235_19" ; @@ -546,7 +550,7 @@ digraph cfg { "operator*#iterator#break_scope(class break_scope::X)#(4328339407583570703).89adb890a0c29514eda31053987e2050_2" [label="2: Exit break_scope::iterator::operator* \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$1); [line 42, column 63]\n " color=yellow style=filled] -"operator*#iterator#break_scope(class break_scope::X)#(4328339407583570703).89adb890a0c29514eda31053987e2050_3" [label="3: Return Stmt \n n$0=*&__return_param:break_scope::X* [line 42, column 33]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:break_scope::X const ); [line 42, column 40]\n n$2=*&this:break_scope::iterator const * [line 42, column 40]\n n$3=*n$2.vector:break_scope::vec const * [line 42, column 40]\n _=*n$3:break_scope::vec const [line 42, column 40]\n n$5=*&this:break_scope::iterator const * [line 42, column 52]\n n$6=*n$5.position:int [line 42, column 52]\n n$8=_fun_break_scope::vec::get(n$3:break_scope::vec const *,n$6:int,&0$?%__sil_tmpSIL_materialize_temp__n$1:break_scope::X*) assign_last [line 42, column 40]\n n$9=_fun_break_scope::X::X(n$0:break_scope::X*,&0$?%__sil_tmpSIL_materialize_temp__n$1:break_scope::X const &) [line 42, column 40]\n NULLIFY(&__return_param); [line 42, column 40]\n NULLIFY(&this); [line 42, column 40]\n EXIT_SCOPE(_,n$0,n$2,n$3,n$5,n$6,n$8,n$9,__return_param,0$?%__sil_tmpSIL_materialize_temp__n$1,this); [line 42, column 40]\n APPLY_ABSTRACTION; [line 42, column 40]\n " shape="box"] +"operator*#iterator#break_scope(class break_scope::X)#(4328339407583570703).89adb890a0c29514eda31053987e2050_3" [label="3: Return Stmt \n n$0=*&__return_param:break_scope::X* [line 42, column 33]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:break_scope::X const ); [line 42, column 40]\n n$5=*&this:break_scope::iterator const * [line 42, column 40]\n n$6=*n$5.vector:break_scope::vec const * [line 42, column 40]\n _=*n$6:break_scope::vec const [line 42, column 40]\n n$8=*&this:break_scope::iterator const * [line 42, column 52]\n n$9=*n$8.position:int [line 42, column 52]\n n$11=_fun_break_scope::vec::get(n$6:break_scope::vec const *,n$9:int,&0$?%__sil_tmpSIL_materialize_temp__n$1:break_scope::X*) assign_last [line 42, column 40]\n n$12=_fun_break_scope::X::X(n$0:break_scope::X*,&0$?%__sil_tmpSIL_materialize_temp__n$1:break_scope::X const &) [line 42, column 40]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$1:break_scope::X const [line 42, column 60]\n n$3=_fun_break_scope::X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$1:break_scope::X const *) injected [line 42, column 60]\n NULLIFY(&__return_param); [line 42, column 60]\n NULLIFY(&this); [line 42, column 60]\n EXIT_SCOPE(_,_,n$0,n$3,n$5,n$6,n$8,n$9,n$11,n$12,__return_param,0$?%__sil_tmpSIL_materialize_temp__n$1,this); [line 42, column 60]\n APPLY_ABSTRACTION; [line 42, column 60]\n " shape="box"] "operator*#iterator#break_scope(class break_scope::X)#(4328339407583570703).89adb890a0c29514eda31053987e2050_3" -> "operator*#iterator#break_scope(class break_scope::X)#(4328339407583570703).89adb890a0c29514eda31053987e2050_2" ; @@ -613,7 +617,7 @@ digraph cfg { "end#vec#break_scope(class break_scope::iterator)#(4427317924121915380).28b4ffbb5a64aa367cc424acb2a0de9b_2" [label="2: Exit break_scope::vec::end \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$1); [line 35, column 47]\n " color=yellow style=filled] -"end#vec#break_scope(class break_scope::iterator)#(4427317924121915380).28b4ffbb5a64aa367cc424acb2a0de9b_3" [label="3: Return Stmt \n n$0=*&__return_param:break_scope::iterator* [line 35, column 20]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:break_scope::iterator); [line 35, column 27]\n n$2=*&this:break_scope::vec* [line 35, column 36]\n n$3=_fun_break_scope::iterator::iterator(&0$?%__sil_tmpSIL_materialize_temp__n$1:break_scope::iterator*,n$2:break_scope::vec*,10:int) [line 35, column 27]\n n$4=_fun_break_scope::iterator::iterator(n$0:break_scope::iterator*,&0$?%__sil_tmpSIL_materialize_temp__n$1:break_scope::iterator&) [line 35, column 27]\n NULLIFY(&__return_param); [line 35, column 27]\n NULLIFY(&this); [line 35, column 27]\n EXIT_SCOPE(n$0,n$2,n$3,n$4,__return_param,0$?%__sil_tmpSIL_materialize_temp__n$1,this); [line 35, column 27]\n APPLY_ABSTRACTION; [line 35, column 27]\n " shape="box"] +"end#vec#break_scope(class break_scope::iterator)#(4427317924121915380).28b4ffbb5a64aa367cc424acb2a0de9b_3" [label="3: Return Stmt \n n$0=*&__return_param:break_scope::iterator* [line 35, column 20]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:break_scope::iterator); [line 35, column 27]\n n$5=*&this:break_scope::vec* [line 35, column 36]\n n$6=_fun_break_scope::iterator::iterator(&0$?%__sil_tmpSIL_materialize_temp__n$1:break_scope::iterator*,n$5:break_scope::vec*,10:int) [line 35, column 27]\n n$7=_fun_break_scope::iterator::iterator(n$0:break_scope::iterator*,&0$?%__sil_tmpSIL_materialize_temp__n$1:break_scope::iterator&) [line 35, column 27]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$1:break_scope::iterator [line 35, column 44]\n n$3=_fun_break_scope::iterator::~iterator(&0$?%__sil_tmpSIL_materialize_temp__n$1:break_scope::iterator*) injected [line 35, column 44]\n NULLIFY(&__return_param); [line 35, column 44]\n NULLIFY(&this); [line 35, column 44]\n EXIT_SCOPE(_,n$0,n$3,n$5,n$6,n$7,__return_param,0$?%__sil_tmpSIL_materialize_temp__n$1,this); [line 35, column 44]\n APPLY_ABSTRACTION; [line 35, column 44]\n " shape="box"] "end#vec#break_scope(class break_scope::iterator)#(4427317924121915380).28b4ffbb5a64aa367cc424acb2a0de9b_3" -> "end#vec#break_scope(class break_scope::iterator)#(4427317924121915380).28b4ffbb5a64aa367cc424acb2a0de9b_2" ; @@ -624,7 +628,7 @@ digraph cfg { "begin#vec#break_scope(class break_scope::iterator)#(5557509884489875894).5dac1fcfbf012c7c4e9ccd6f67cbd1ce_2" [label="2: Exit break_scope::vec::begin \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$1); [line 34, column 48]\n " color=yellow style=filled] -"begin#vec#break_scope(class break_scope::iterator)#(5557509884489875894).5dac1fcfbf012c7c4e9ccd6f67cbd1ce_3" [label="3: Return Stmt \n n$0=*&__return_param:break_scope::iterator* [line 34, column 22]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:break_scope::iterator); [line 34, column 29]\n n$2=*&this:break_scope::vec* [line 34, column 38]\n n$3=_fun_break_scope::iterator::iterator(&0$?%__sil_tmpSIL_materialize_temp__n$1:break_scope::iterator*,n$2:break_scope::vec*,0:int) [line 34, column 29]\n n$4=_fun_break_scope::iterator::iterator(n$0:break_scope::iterator*,&0$?%__sil_tmpSIL_materialize_temp__n$1:break_scope::iterator&) [line 34, column 29]\n NULLIFY(&__return_param); [line 34, column 29]\n NULLIFY(&this); [line 34, column 29]\n EXIT_SCOPE(n$0,n$2,n$3,n$4,__return_param,0$?%__sil_tmpSIL_materialize_temp__n$1,this); [line 34, column 29]\n APPLY_ABSTRACTION; [line 34, column 29]\n " shape="box"] +"begin#vec#break_scope(class break_scope::iterator)#(5557509884489875894).5dac1fcfbf012c7c4e9ccd6f67cbd1ce_3" [label="3: Return Stmt \n n$0=*&__return_param:break_scope::iterator* [line 34, column 22]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:break_scope::iterator); [line 34, column 29]\n n$5=*&this:break_scope::vec* [line 34, column 38]\n n$6=_fun_break_scope::iterator::iterator(&0$?%__sil_tmpSIL_materialize_temp__n$1:break_scope::iterator*,n$5:break_scope::vec*,0:int) [line 34, column 29]\n n$7=_fun_break_scope::iterator::iterator(n$0:break_scope::iterator*,&0$?%__sil_tmpSIL_materialize_temp__n$1:break_scope::iterator&) [line 34, column 29]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$1:break_scope::iterator [line 34, column 45]\n n$3=_fun_break_scope::iterator::~iterator(&0$?%__sil_tmpSIL_materialize_temp__n$1:break_scope::iterator*) injected [line 34, column 45]\n NULLIFY(&__return_param); [line 34, column 45]\n NULLIFY(&this); [line 34, column 45]\n EXIT_SCOPE(_,n$0,n$3,n$5,n$6,n$7,__return_param,0$?%__sil_tmpSIL_materialize_temp__n$1,this); [line 34, column 45]\n APPLY_ABSTRACTION; [line 34, column 45]\n " shape="box"] "begin#vec#break_scope(class break_scope::iterator)#(5557509884489875894).5dac1fcfbf012c7c4e9ccd6f67cbd1ce_3" -> "begin#vec#break_scope(class break_scope::iterator)#(5557509884489875894).5dac1fcfbf012c7c4e9ccd6f67cbd1ce_2" ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/destructors/continue_scope.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/destructors/continue_scope.cpp.dot index 67d7c951f..e1ae8b569 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/destructors/continue_scope.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/destructors/continue_scope.cpp.dot @@ -66,11 +66,11 @@ digraph cfg { "test_do_while#continue_scope#8999676231552324448.9fe455097ef7e757730530e9e7c09864_16" -> "test_do_while#continue_scope#8999676231552324448.9fe455097ef7e757730530e9e7c09864_4" ; -"test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_1" [label="1: Start continue_scope::test_for\nFormals: b:_Bool\nLocals: x2:continue_scope::X it:continue_scope::iterator 0$?%__sil_tmpSIL_materialize_temp__n$9:continue_scope::iterator 0$?%__sil_tmp__temp_return_n$16:continue_scope::iterator 0$?%__sil_tmpSIL_materialize_temp__n$19:continue_scope::iterator const x1:continue_scope::X vector:continue_scope::vec \n " color=yellow style=filled] +"test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_1" [label="1: Start continue_scope::test_for\nFormals: b:_Bool\nLocals: x2:continue_scope::X it:continue_scope::iterator 0$?%__sil_tmpSIL_materialize_temp__n$9:continue_scope::iterator 0$?%__sil_tmp__temp_return_n$19:continue_scope::iterator 0$?%__sil_tmpSIL_materialize_temp__n$21:continue_scope::iterator const x1:continue_scope::X vector:continue_scope::vec \n " color=yellow style=filled] - "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_1" -> "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_17" ; -"test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_2" [label="2: Exit continue_scope::test_for \n NULLIFY(&x2); [line 64, column 1]\n NULLIFY(&x1); [line 64, column 1]\n NULLIFY(&0$?%__sil_tmp__temp_return_n$16); [line 64, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$19); [line 64, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$9); [line 64, column 1]\n NULLIFY(&it); [line 64, column 1]\n NULLIFY(&vector); [line 64, column 1]\n " color=yellow style=filled] + "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_1" -> "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_18" ; +"test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_2" [label="2: Exit continue_scope::test_for \n NULLIFY(&0$?%__sil_tmp__temp_return_n$19); [line 64, column 1]\n NULLIFY(&x2); [line 64, column 1]\n NULLIFY(&x1); [line 64, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$9); [line 64, column 1]\n NULLIFY(&it); [line 64, column 1]\n NULLIFY(&vector); [line 64, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$21); [line 64, column 1]\n " color=yellow style=filled] "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_3" [label="3: Destruction(Scope) \n _=*&x2:continue_scope::X [line 64, column 1]\n n$1=_fun_continue_scope::X::~X(&x2:continue_scope::X*) injected [line 64, column 1]\n _=*&vector:continue_scope::vec [line 64, column 1]\n n$3=_fun_continue_scope::vec::~vec(&vector:continue_scope::vec*) injected [line 64, column 1]\n EXIT_SCOPE(_,_,n$1,n$3,vector,x2); [line 64, column 1]\n APPLY_ABSTRACTION; [line 64, column 1]\n " shape="box"] @@ -88,58 +88,62 @@ digraph cfg { "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_6" [label="6: + \n " ] - "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_6" -> "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_9" ; -"test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_7" [label="7: DeclStmt \n VARIABLE_DECLARED(it:continue_scope::iterator); [line 57, column 8]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$9:continue_scope::iterator); [line 57, column 22]\n _=*&vector:continue_scope::vec [line 57, column 22]\n n$12=_fun_continue_scope::vec::begin(&vector:continue_scope::vec&,&0$?%__sil_tmpSIL_materialize_temp__n$9:continue_scope::iterator*) assign_last [line 57, column 22]\n n$13=_fun_continue_scope::iterator::iterator(&it:continue_scope::iterator*,&0$?%__sil_tmpSIL_materialize_temp__n$9:continue_scope::iterator&) [line 57, column 22]\n EXIT_SCOPE(_,n$12,n$13,0$?%__sil_tmpSIL_materialize_temp__n$9); [line 57, column 22]\n APPLY_ABSTRACTION; [line 57, column 22]\n " shape="box"] + "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_6" -> "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_10" ; +"test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_7" [label="7: DeclStmt \n VARIABLE_DECLARED(it:continue_scope::iterator); [line 57, column 8]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$9:continue_scope::iterator); [line 57, column 22]\n _=*&vector:continue_scope::vec [line 57, column 22]\n n$15=_fun_continue_scope::vec::begin(&vector:continue_scope::vec&,&0$?%__sil_tmpSIL_materialize_temp__n$9:continue_scope::iterator*) assign_last [line 57, column 22]\n n$16=_fun_continue_scope::iterator::iterator(&it:continue_scope::iterator*,&0$?%__sil_tmpSIL_materialize_temp__n$9:continue_scope::iterator&) [line 57, column 22]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$9:continue_scope::iterator [line 57, column 35]\n n$11=_fun_continue_scope::iterator::~iterator(&0$?%__sil_tmpSIL_materialize_temp__n$9:continue_scope::iterator*) injected [line 57, column 35]\n EXIT_SCOPE(_,_,n$11,n$15,n$16,0$?%__sil_tmpSIL_materialize_temp__n$9); [line 57, column 35]\n APPLY_ABSTRACTION; [line 57, column 35]\n " shape="box"] "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_7" -> "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_6" ; -"test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_8" [label="8: Call _fun_continue_scope::iterator::operator++ \n n$17=_fun_continue_scope::iterator::operator++(&it:continue_scope::iterator&,&0$?%__sil_tmp__temp_return_n$16:continue_scope::iterator*) assign_last [line 57, column 58]\n EXIT_SCOPE(n$17,0$?%__sil_tmp__temp_return_n$16); [line 57, column 58]\n APPLY_ABSTRACTION; [line 57, column 58]\n " shape="box"] +"test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_8" [label="8: Call _fun_continue_scope::iterator::operator++ \n n$20=_fun_continue_scope::iterator::operator++(&it:continue_scope::iterator&,&0$?%__sil_tmp__temp_return_n$19:continue_scope::iterator*) assign_last [line 57, column 58]\n EXIT_SCOPE(n$20,0$?%__sil_tmp__temp_return_n$19); [line 57, column 58]\n APPLY_ABSTRACTION; [line 57, column 58]\n " shape="box"] "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_8" -> "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_6" ; -"test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_9" [label="9: Call _fun_continue_scope::iterator::operator!= \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$19:continue_scope::iterator const ); [line 57, column 44]\n _=*&vector:continue_scope::vec [line 57, column 44]\n n$22=_fun_continue_scope::vec::end(&vector:continue_scope::vec&,&0$?%__sil_tmpSIL_materialize_temp__n$19:continue_scope::iterator*) assign_last [line 57, column 44]\n n$23=_fun_continue_scope::iterator::operator!=(&it:continue_scope::iterator&,&0$?%__sil_tmpSIL_materialize_temp__n$19:continue_scope::iterator const &) [line 57, column 38]\n EXIT_SCOPE(_,n$22,0$?%__sil_tmpSIL_materialize_temp__n$19); [line 57, column 38]\n " shape="box"] +"test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_9" [label="9: Destruction(temporaries cleanup) \n _=*&0$?%__sil_tmpSIL_materialize_temp__n$21:continue_scope::iterator const [line 57, column 55]\n n$23=_fun_continue_scope::iterator::~iterator(&0$?%__sil_tmpSIL_materialize_temp__n$21:continue_scope::iterator const *) injected [line 57, column 55]\n EXIT_SCOPE(_,n$23,0$?%__sil_tmpSIL_materialize_temp__n$21); [line 57, column 55]\n " shape="box"] - "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_9" -> "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_10" ; "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_9" -> "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_11" ; -"test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_10" [label="10: Prune (true branch, for loop) \n PRUNE(n$23, true); [line 57, column 38]\n EXIT_SCOPE(n$23); [line 57, column 38]\n " shape="invhouse"] + "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_9" -> "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_12" ; +"test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_10" [label="10: Call _fun_continue_scope::iterator::operator!= \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$21:continue_scope::iterator const ); [line 57, column 44]\n _=*&vector:continue_scope::vec [line 57, column 44]\n n$28=_fun_continue_scope::vec::end(&vector:continue_scope::vec&,&0$?%__sil_tmpSIL_materialize_temp__n$21:continue_scope::iterator*) assign_last [line 57, column 44]\n n$29=_fun_continue_scope::iterator::operator!=(&it:continue_scope::iterator&,&0$?%__sil_tmpSIL_materialize_temp__n$21:continue_scope::iterator const &) [line 57, column 38]\n EXIT_SCOPE(_,n$28); [line 57, column 38]\n " shape="box"] - "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_10" -> "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_13" ; - "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_10" -> "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_14" ; -"test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_11" [label="11: Prune (false branch, for loop) \n PRUNE(!n$23, false); [line 57, column 38]\n EXIT_SCOPE(n$23); [line 57, column 38]\n " shape="invhouse"] + "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_10" -> "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_9" ; +"test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_11" [label="11: Prune (true branch, for loop) \n PRUNE(n$29, true); [line 57, column 38]\n EXIT_SCOPE(n$29); [line 57, column 38]\n " shape="invhouse"] - "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_11" -> "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_5" ; -"test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_12" [label="12: + \n " ] + "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_11" -> "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_14" ; + "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_11" -> "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_15" ; +"test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_12" [label="12: Prune (false branch, for loop) \n PRUNE(!n$29, false); [line 57, column 38]\n EXIT_SCOPE(n$29); [line 57, column 38]\n " shape="invhouse"] - "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_12" -> "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_8" ; -"test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_13" [label="13: Prune (true branch, if) \n n$24=*&b:_Bool [line 58, column 9]\n PRUNE(n$24, true); [line 58, column 9]\n EXIT_SCOPE(n$24); [line 58, column 9]\n " shape="invhouse"] + "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_12" -> "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_5" ; +"test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_13" [label="13: + \n " ] - "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_13" -> "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_16" ; -"test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_14" [label="14: Prune (false branch, if) \n n$24=*&b:_Bool [line 58, column 9]\n PRUNE(!n$24, false); [line 58, column 9]\n EXIT_SCOPE(n$24); [line 58, column 9]\n " shape="invhouse"] + "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_13" -> "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_8" ; +"test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_14" [label="14: Prune (true branch, if) \n n$30=*&b:_Bool [line 58, column 9]\n PRUNE(n$30, true); [line 58, column 9]\n EXIT_SCOPE(n$30); [line 58, column 9]\n " shape="invhouse"] - "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_14" -> "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_12" ; -"test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_15" [label="15: Destruction(continue) \n _=*&x1:continue_scope::X [line 60, column 7]\n n$26=_fun_continue_scope::X::~X(&x1:continue_scope::X*) injected [line 60, column 7]\n EXIT_SCOPE(_,n$26,x1); [line 60, column 7]\n APPLY_ABSTRACTION; [line 60, column 7]\n " shape="box"] + "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_14" -> "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_17" ; +"test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_15" [label="15: Prune (false branch, if) \n n$30=*&b:_Bool [line 58, column 9]\n PRUNE(!n$30, false); [line 58, column 9]\n EXIT_SCOPE(n$30); [line 58, column 9]\n " shape="invhouse"] - "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_15" -> "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_8" ; -"test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_16" [label="16: DeclStmt \n VARIABLE_DECLARED(x1:continue_scope::X); [line 59, column 7]\n n$28=_fun_continue_scope::X::X(&x1:continue_scope::X*) [line 59, column 9]\n EXIT_SCOPE(n$28); [line 59, column 9]\n " shape="box"] + "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_15" -> "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_13" ; +"test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_16" [label="16: Destruction(continue) \n _=*&x1:continue_scope::X [line 60, column 7]\n n$32=_fun_continue_scope::X::~X(&x1:continue_scope::X*) injected [line 60, column 7]\n EXIT_SCOPE(_,n$32,x1); [line 60, column 7]\n APPLY_ABSTRACTION; [line 60, column 7]\n " shape="box"] - "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_16" -> "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_15" ; -"test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_17" [label="17: DeclStmt \n VARIABLE_DECLARED(vector:continue_scope::vec); [line 56, column 3]\n n$32=_fun_continue_scope::vec::vec(&vector:continue_scope::vec*) [line 56, column 7]\n EXIT_SCOPE(n$32); [line 56, column 7]\n " shape="box"] + "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_16" -> "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_8" ; +"test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_17" [label="17: DeclStmt \n VARIABLE_DECLARED(x1:continue_scope::X); [line 59, column 7]\n n$34=_fun_continue_scope::X::X(&x1:continue_scope::X*) [line 59, column 9]\n EXIT_SCOPE(n$34); [line 59, column 9]\n " shape="box"] - "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_17" -> "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_7" ; -"test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_1" [label="1: Start continue_scope::test_for_range\nFormals: b:_Bool\nLocals: __end1:continue_scope::iterator 0$?%__sil_tmpSIL_materialize_temp__n$10:continue_scope::iterator __begin1:continue_scope::iterator 0$?%__sil_tmpSIL_materialize_temp__n$16:continue_scope::iterator 0$?%__sil_tmp__temp_return_n$24:continue_scope::iterator x2:continue_scope::X x:continue_scope::X 0$?%__sil_tmpSIL_materialize_temp__n$37:continue_scope::X const __range1:continue_scope::vec& x1:continue_scope::X vector:continue_scope::vec \n " color=yellow style=filled] + "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_17" -> "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_16" ; +"test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_18" [label="18: DeclStmt \n VARIABLE_DECLARED(vector:continue_scope::vec); [line 56, column 3]\n n$38=_fun_continue_scope::vec::vec(&vector:continue_scope::vec*) [line 56, column 7]\n EXIT_SCOPE(n$38); [line 56, column 7]\n " shape="box"] + + + "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_18" -> "test_for#continue_scope#10203739842900202560.4cb2db668430574619fdf529fdd4af8c_7" ; +"test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_1" [label="1: Start continue_scope::test_for_range\nFormals: b:_Bool\nLocals: __end1:continue_scope::iterator 0$?%__sil_tmpSIL_materialize_temp__n$10:continue_scope::iterator __begin1:continue_scope::iterator 0$?%__sil_tmpSIL_materialize_temp__n$19:continue_scope::iterator 0$?%__sil_tmp__temp_return_n$30:continue_scope::iterator x2:continue_scope::X x:continue_scope::X 0$?%__sil_tmpSIL_materialize_temp__n$43:continue_scope::X const __range1:continue_scope::vec& x1:continue_scope::X vector:continue_scope::vec \n " color=yellow style=filled] "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_1" -> "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_20" ; -"test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_2" [label="2: Exit continue_scope::test_for_range \n NULLIFY(&vector); [line 53, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$16); [line 53, column 1]\n NULLIFY(&__begin1); [line 53, column 1]\n NULLIFY(&__end1); [line 53, column 1]\n NULLIFY(&x2); [line 53, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$10); [line 53, column 1]\n NULLIFY(&x1); [line 53, column 1]\n NULLIFY(&x); [line 53, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$37); [line 53, column 1]\n NULLIFY(&0$?%__sil_tmp__temp_return_n$24); [line 53, column 1]\n " color=yellow style=filled] +"test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_2" [label="2: Exit continue_scope::test_for_range \n NULLIFY(&vector); [line 53, column 1]\n NULLIFY(&__begin1); [line 53, column 1]\n NULLIFY(&__end1); [line 53, column 1]\n NULLIFY(&x2); [line 53, column 1]\n NULLIFY(&0$?%__sil_tmp__temp_return_n$30); [line 53, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$19); [line 53, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$10); [line 53, column 1]\n NULLIFY(&x1); [line 53, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$43); [line 53, column 1]\n NULLIFY(&x); [line 53, column 1]\n " color=yellow style=filled] "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_3" [label="3: Destruction(Scope) \n _=*&x1:continue_scope::X [line 53, column 1]\n n$1=_fun_continue_scope::X::~X(&x1:continue_scope::X*) injected [line 53, column 1]\n _=*&vector:continue_scope::vec [line 53, column 1]\n n$3=_fun_continue_scope::vec::~vec(&vector:continue_scope::vec*) injected [line 53, column 1]\n EXIT_SCOPE(_,_,n$1,n$3,x1,vector); [line 53, column 1]\n APPLY_ABSTRACTION; [line 53, column 1]\n " shape="box"] @@ -154,28 +158,28 @@ digraph cfg { "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_5" -> "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_9" ; -"test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_6" [label="6: DeclStmt \n VARIABLE_DECLARED(__end1:continue_scope::iterator); [line 47, column 12]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$10:continue_scope::iterator); [line 47, column 12]\n n$11=*&__range1:continue_scope::vec& [line 47, column 12]\n _=*n$11:continue_scope::vec [line 47, column 12]\n n$14=_fun_continue_scope::vec::end(n$11:continue_scope::vec&,&0$?%__sil_tmpSIL_materialize_temp__n$10:continue_scope::iterator*) assign_last [line 47, column 12]\n n$15=_fun_continue_scope::iterator::iterator(&__end1:continue_scope::iterator*,&0$?%__sil_tmpSIL_materialize_temp__n$10:continue_scope::iterator&) [line 47, column 12]\n NULLIFY(&__range1); [line 47, column 12]\n EXIT_SCOPE(_,n$11,n$14,n$15,__range1,0$?%__sil_tmpSIL_materialize_temp__n$10); [line 47, column 12]\n APPLY_ABSTRACTION; [line 47, column 12]\n " shape="box"] +"test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_6" [label="6: DeclStmt \n VARIABLE_DECLARED(__end1:continue_scope::iterator); [line 47, column 12]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$10:continue_scope::iterator); [line 47, column 12]\n n$14=*&__range1:continue_scope::vec& [line 47, column 12]\n _=*n$14:continue_scope::vec [line 47, column 12]\n n$17=_fun_continue_scope::vec::end(n$14:continue_scope::vec&,&0$?%__sil_tmpSIL_materialize_temp__n$10:continue_scope::iterator*) assign_last [line 47, column 12]\n n$18=_fun_continue_scope::iterator::iterator(&__end1:continue_scope::iterator*,&0$?%__sil_tmpSIL_materialize_temp__n$10:continue_scope::iterator&) [line 47, column 12]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$10:continue_scope::iterator [line 47, column 12]\n n$12=_fun_continue_scope::iterator::~iterator(&0$?%__sil_tmpSIL_materialize_temp__n$10:continue_scope::iterator*) injected [line 47, column 12]\n NULLIFY(&__range1); [line 47, column 12]\n EXIT_SCOPE(_,_,n$12,n$14,n$17,n$18,__range1,0$?%__sil_tmpSIL_materialize_temp__n$10); [line 47, column 12]\n APPLY_ABSTRACTION; [line 47, column 12]\n " shape="box"] "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_6" -> "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_5" ; -"test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_7" [label="7: DeclStmt \n VARIABLE_DECLARED(__begin1:continue_scope::iterator); [line 47, column 12]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$16:continue_scope::iterator); [line 47, column 12]\n n$17=*&__range1:continue_scope::vec& [line 47, column 12]\n _=*n$17:continue_scope::vec [line 47, column 12]\n n$20=_fun_continue_scope::vec::begin(n$17:continue_scope::vec&,&0$?%__sil_tmpSIL_materialize_temp__n$16:continue_scope::iterator*) assign_last [line 47, column 12]\n n$21=_fun_continue_scope::iterator::iterator(&__begin1:continue_scope::iterator*,&0$?%__sil_tmpSIL_materialize_temp__n$16:continue_scope::iterator&) [line 47, column 12]\n EXIT_SCOPE(_,n$17,n$20,n$21,0$?%__sil_tmpSIL_materialize_temp__n$16); [line 47, column 12]\n " shape="box"] +"test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_7" [label="7: DeclStmt \n VARIABLE_DECLARED(__begin1:continue_scope::iterator); [line 47, column 12]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$19:continue_scope::iterator); [line 47, column 12]\n n$23=*&__range1:continue_scope::vec& [line 47, column 12]\n _=*n$23:continue_scope::vec [line 47, column 12]\n n$26=_fun_continue_scope::vec::begin(n$23:continue_scope::vec&,&0$?%__sil_tmpSIL_materialize_temp__n$19:continue_scope::iterator*) assign_last [line 47, column 12]\n n$27=_fun_continue_scope::iterator::iterator(&__begin1:continue_scope::iterator*,&0$?%__sil_tmpSIL_materialize_temp__n$19:continue_scope::iterator&) [line 47, column 12]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$19:continue_scope::iterator [line 47, column 12]\n n$21=_fun_continue_scope::iterator::~iterator(&0$?%__sil_tmpSIL_materialize_temp__n$19:continue_scope::iterator*) injected [line 47, column 12]\n EXIT_SCOPE(_,_,n$21,n$23,n$26,n$27,0$?%__sil_tmpSIL_materialize_temp__n$19); [line 47, column 12]\n " shape="box"] "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_7" -> "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_6" ; -"test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_8" [label="8: Call _fun_continue_scope::iterator::operator++ \n n$25=_fun_continue_scope::iterator::operator++(&__begin1:continue_scope::iterator&,&0$?%__sil_tmp__temp_return_n$24:continue_scope::iterator*) assign_last [line 47, column 12]\n EXIT_SCOPE(n$25,0$?%__sil_tmp__temp_return_n$24); [line 47, column 12]\n APPLY_ABSTRACTION; [line 47, column 12]\n " shape="box"] +"test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_8" [label="8: Call _fun_continue_scope::iterator::operator++ \n n$31=_fun_continue_scope::iterator::operator++(&__begin1:continue_scope::iterator&,&0$?%__sil_tmp__temp_return_n$30:continue_scope::iterator*) assign_last [line 47, column 12]\n EXIT_SCOPE(n$31,0$?%__sil_tmp__temp_return_n$30); [line 47, column 12]\n APPLY_ABSTRACTION; [line 47, column 12]\n " shape="box"] "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_8" -> "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_5" ; -"test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_9" [label="9: Call _fun_continue_scope::iterator::operator!= \n n$27=_fun_continue_scope::iterator::operator!=(&__begin1:continue_scope::iterator&,&__end1:continue_scope::iterator&) [line 47, column 12]\n " shape="box"] +"test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_9" [label="9: Call _fun_continue_scope::iterator::operator!= \n n$33=_fun_continue_scope::iterator::operator!=(&__begin1:continue_scope::iterator&,&__end1:continue_scope::iterator&) [line 47, column 12]\n " shape="box"] "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_9" -> "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_10" ; "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_9" -> "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_11" ; -"test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_10" [label="10: Prune (true branch, for loop) \n PRUNE(n$27, true); [line 47, column 12]\n EXIT_SCOPE(n$27); [line 47, column 12]\n " shape="invhouse"] +"test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_10" [label="10: Prune (true branch, for loop) \n PRUNE(n$33, true); [line 47, column 12]\n EXIT_SCOPE(n$33); [line 47, column 12]\n " shape="invhouse"] "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_10" -> "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_17" ; -"test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_11" [label="11: Prune (false branch, for loop) \n PRUNE(!n$27, false); [line 47, column 12]\n EXIT_SCOPE(n$27); [line 47, column 12]\n " shape="invhouse"] +"test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_11" [label="11: Prune (false branch, for loop) \n PRUNE(!n$33, false); [line 47, column 12]\n EXIT_SCOPE(n$33); [line 47, column 12]\n " shape="invhouse"] "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_11" -> "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_4" ; @@ -183,23 +187,23 @@ digraph cfg { "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_12" -> "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_8" ; -"test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_13" [label="13: Prune (true branch, if) \n n$28=*&b:_Bool [line 48, column 9]\n PRUNE(n$28, true); [line 48, column 9]\n EXIT_SCOPE(n$28); [line 48, column 9]\n " shape="invhouse"] +"test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_13" [label="13: Prune (true branch, if) \n n$34=*&b:_Bool [line 48, column 9]\n PRUNE(n$34, true); [line 48, column 9]\n EXIT_SCOPE(n$34); [line 48, column 9]\n " shape="invhouse"] "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_13" -> "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_16" ; -"test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_14" [label="14: Prune (false branch, if) \n n$28=*&b:_Bool [line 48, column 9]\n PRUNE(!n$28, false); [line 48, column 9]\n EXIT_SCOPE(n$28,x); [line 48, column 9]\n " shape="invhouse"] +"test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_14" [label="14: Prune (false branch, if) \n n$34=*&b:_Bool [line 48, column 9]\n PRUNE(!n$34, false); [line 48, column 9]\n EXIT_SCOPE(n$34,x); [line 48, column 9]\n " shape="invhouse"] "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_14" -> "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_12" ; -"test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_15" [label="15: Destruction(continue) \n _=*&x2:continue_scope::X [line 50, column 7]\n n$30=_fun_continue_scope::X::~X(&x2:continue_scope::X*) injected [line 50, column 7]\n _=*&x:continue_scope::X [line 50, column 7]\n n$32=_fun_continue_scope::X::~X(&x:continue_scope::X*) injected [line 50, column 7]\n EXIT_SCOPE(_,_,n$30,n$32,x,x2); [line 50, column 7]\n APPLY_ABSTRACTION; [line 50, column 7]\n " shape="box"] +"test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_15" [label="15: Destruction(continue) \n _=*&x2:continue_scope::X [line 50, column 7]\n n$36=_fun_continue_scope::X::~X(&x2:continue_scope::X*) injected [line 50, column 7]\n _=*&x:continue_scope::X [line 50, column 7]\n n$38=_fun_continue_scope::X::~X(&x:continue_scope::X*) injected [line 50, column 7]\n EXIT_SCOPE(_,_,n$36,n$38,x,x2); [line 50, column 7]\n APPLY_ABSTRACTION; [line 50, column 7]\n " shape="box"] "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_15" -> "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_8" ; -"test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_16" [label="16: DeclStmt \n VARIABLE_DECLARED(x2:continue_scope::X); [line 49, column 7]\n n$34=_fun_continue_scope::X::X(&x2:continue_scope::X*,&x:continue_scope::X&) [line 49, column 14]\n EXIT_SCOPE(n$34); [line 49, column 14]\n " shape="box"] +"test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_16" [label="16: DeclStmt \n VARIABLE_DECLARED(x2:continue_scope::X); [line 49, column 7]\n n$40=_fun_continue_scope::X::X(&x2:continue_scope::X*,&x:continue_scope::X&) [line 49, column 14]\n EXIT_SCOPE(n$40); [line 49, column 14]\n " shape="box"] "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_16" -> "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_15" ; -"test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_17" [label="17: DeclStmt \n VARIABLE_DECLARED(x:continue_scope::X); [line 47, column 8]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$37:continue_scope::X const ); [line 47, column 12]\n n$40=_fun_continue_scope::iterator::operator*(&__begin1:continue_scope::iterator&,&0$?%__sil_tmpSIL_materialize_temp__n$37:continue_scope::X*) assign_last [line 47, column 12]\n n$41=_fun_continue_scope::X::X(&x:continue_scope::X*,&0$?%__sil_tmpSIL_materialize_temp__n$37:continue_scope::X const &) [line 47, column 12]\n EXIT_SCOPE(n$40,n$41,0$?%__sil_tmpSIL_materialize_temp__n$37); [line 47, column 12]\n " shape="box"] +"test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_17" [label="17: DeclStmt \n VARIABLE_DECLARED(x:continue_scope::X); [line 47, column 8]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$43:continue_scope::X const ); [line 47, column 12]\n n$49=_fun_continue_scope::iterator::operator*(&__begin1:continue_scope::iterator&,&0$?%__sil_tmpSIL_materialize_temp__n$43:continue_scope::X*) assign_last [line 47, column 12]\n n$50=_fun_continue_scope::X::X(&x:continue_scope::X*,&0$?%__sil_tmpSIL_materialize_temp__n$43:continue_scope::X const &) [line 47, column 12]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$43:continue_scope::X const [line 47, column 12]\n n$45=_fun_continue_scope::X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$43:continue_scope::X const *) injected [line 47, column 12]\n EXIT_SCOPE(_,n$45,n$49,n$50,0$?%__sil_tmpSIL_materialize_temp__n$43); [line 47, column 12]\n " shape="box"] "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_17" -> "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_13" ; @@ -208,11 +212,11 @@ digraph cfg { "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_18" -> "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_7" ; -"test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_19" [label="19: DeclStmt \n VARIABLE_DECLARED(x1:continue_scope::X); [line 46, column 3]\n n$43=_fun_continue_scope::X::X(&x1:continue_scope::X*) [line 46, column 5]\n EXIT_SCOPE(n$43); [line 46, column 5]\n " shape="box"] +"test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_19" [label="19: DeclStmt \n VARIABLE_DECLARED(x1:continue_scope::X); [line 46, column 3]\n n$52=_fun_continue_scope::X::X(&x1:continue_scope::X*) [line 46, column 5]\n EXIT_SCOPE(n$52); [line 46, column 5]\n " shape="box"] "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_19" -> "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_18" ; -"test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_20" [label="20: DeclStmt \n VARIABLE_DECLARED(vector:continue_scope::vec); [line 45, column 3]\n n$44=_fun_continue_scope::vec::vec(&vector:continue_scope::vec*) [line 45, column 7]\n EXIT_SCOPE(n$44); [line 45, column 7]\n " shape="box"] +"test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_20" [label="20: DeclStmt \n VARIABLE_DECLARED(vector:continue_scope::vec); [line 45, column 3]\n n$53=_fun_continue_scope::vec::vec(&vector:continue_scope::vec*) [line 45, column 7]\n EXIT_SCOPE(n$53); [line 45, column 7]\n " shape="box"] "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_20" -> "test_for_range#continue_scope#9937708960633325401.fa75d7368d8f711ae7e040a8b2ae1442_19" ; @@ -422,7 +426,7 @@ digraph cfg { "operator*#iterator#continue_scope(class continue_scope::X)#(10976315504449545146).6f0a140275409bbf42ae1dbc8842f6af_2" [label="2: Exit continue_scope::iterator::operator* \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$1); [line 42, column 63]\n " color=yellow style=filled] -"operator*#iterator#continue_scope(class continue_scope::X)#(10976315504449545146).6f0a140275409bbf42ae1dbc8842f6af_3" [label="3: Return Stmt \n n$0=*&__return_param:continue_scope::X* [line 42, column 33]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:continue_scope::X const ); [line 42, column 40]\n n$2=*&this:continue_scope::iterator const * [line 42, column 40]\n n$3=*n$2.vector:continue_scope::vec const * [line 42, column 40]\n _=*n$3:continue_scope::vec const [line 42, column 40]\n n$5=*&this:continue_scope::iterator const * [line 42, column 52]\n n$6=*n$5.position:int [line 42, column 52]\n n$8=_fun_continue_scope::vec::get(n$3:continue_scope::vec const *,n$6:int,&0$?%__sil_tmpSIL_materialize_temp__n$1:continue_scope::X*) assign_last [line 42, column 40]\n n$9=_fun_continue_scope::X::X(n$0:continue_scope::X*,&0$?%__sil_tmpSIL_materialize_temp__n$1:continue_scope::X const &) [line 42, column 40]\n NULLIFY(&__return_param); [line 42, column 40]\n NULLIFY(&this); [line 42, column 40]\n EXIT_SCOPE(_,n$0,n$2,n$3,n$5,n$6,n$8,n$9,__return_param,0$?%__sil_tmpSIL_materialize_temp__n$1,this); [line 42, column 40]\n APPLY_ABSTRACTION; [line 42, column 40]\n " shape="box"] +"operator*#iterator#continue_scope(class continue_scope::X)#(10976315504449545146).6f0a140275409bbf42ae1dbc8842f6af_3" [label="3: Return Stmt \n n$0=*&__return_param:continue_scope::X* [line 42, column 33]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:continue_scope::X const ); [line 42, column 40]\n n$5=*&this:continue_scope::iterator const * [line 42, column 40]\n n$6=*n$5.vector:continue_scope::vec const * [line 42, column 40]\n _=*n$6:continue_scope::vec const [line 42, column 40]\n n$8=*&this:continue_scope::iterator const * [line 42, column 52]\n n$9=*n$8.position:int [line 42, column 52]\n n$11=_fun_continue_scope::vec::get(n$6:continue_scope::vec const *,n$9:int,&0$?%__sil_tmpSIL_materialize_temp__n$1:continue_scope::X*) assign_last [line 42, column 40]\n n$12=_fun_continue_scope::X::X(n$0:continue_scope::X*,&0$?%__sil_tmpSIL_materialize_temp__n$1:continue_scope::X const &) [line 42, column 40]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$1:continue_scope::X const [line 42, column 60]\n n$3=_fun_continue_scope::X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$1:continue_scope::X const *) injected [line 42, column 60]\n NULLIFY(&__return_param); [line 42, column 60]\n NULLIFY(&this); [line 42, column 60]\n EXIT_SCOPE(_,_,n$0,n$3,n$5,n$6,n$8,n$9,n$11,n$12,__return_param,0$?%__sil_tmpSIL_materialize_temp__n$1,this); [line 42, column 60]\n APPLY_ABSTRACTION; [line 42, column 60]\n " shape="box"] "operator*#iterator#continue_scope(class continue_scope::X)#(10976315504449545146).6f0a140275409bbf42ae1dbc8842f6af_3" -> "operator*#iterator#continue_scope(class continue_scope::X)#(10976315504449545146).6f0a140275409bbf42ae1dbc8842f6af_2" ; @@ -529,7 +533,7 @@ digraph cfg { "begin#vec#continue_scope(class continue_scope::iterator)#(10867355481694456603).8c0551e386b9f2c25bf3629672b303c4_2" [label="2: Exit continue_scope::vec::begin \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$1); [line 34, column 48]\n " color=yellow style=filled] -"begin#vec#continue_scope(class continue_scope::iterator)#(10867355481694456603).8c0551e386b9f2c25bf3629672b303c4_3" [label="3: Return Stmt \n n$0=*&__return_param:continue_scope::iterator* [line 34, column 22]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:continue_scope::iterator); [line 34, column 29]\n n$2=*&this:continue_scope::vec* [line 34, column 38]\n n$3=_fun_continue_scope::iterator::iterator(&0$?%__sil_tmpSIL_materialize_temp__n$1:continue_scope::iterator*,n$2:continue_scope::vec*,0:int) [line 34, column 29]\n n$4=_fun_continue_scope::iterator::iterator(n$0:continue_scope::iterator*,&0$?%__sil_tmpSIL_materialize_temp__n$1:continue_scope::iterator&) [line 34, column 29]\n NULLIFY(&__return_param); [line 34, column 29]\n NULLIFY(&this); [line 34, column 29]\n EXIT_SCOPE(n$0,n$2,n$3,n$4,__return_param,0$?%__sil_tmpSIL_materialize_temp__n$1,this); [line 34, column 29]\n APPLY_ABSTRACTION; [line 34, column 29]\n " shape="box"] +"begin#vec#continue_scope(class continue_scope::iterator)#(10867355481694456603).8c0551e386b9f2c25bf3629672b303c4_3" [label="3: Return Stmt \n n$0=*&__return_param:continue_scope::iterator* [line 34, column 22]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:continue_scope::iterator); [line 34, column 29]\n n$5=*&this:continue_scope::vec* [line 34, column 38]\n n$6=_fun_continue_scope::iterator::iterator(&0$?%__sil_tmpSIL_materialize_temp__n$1:continue_scope::iterator*,n$5:continue_scope::vec*,0:int) [line 34, column 29]\n n$7=_fun_continue_scope::iterator::iterator(n$0:continue_scope::iterator*,&0$?%__sil_tmpSIL_materialize_temp__n$1:continue_scope::iterator&) [line 34, column 29]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$1:continue_scope::iterator [line 34, column 45]\n n$3=_fun_continue_scope::iterator::~iterator(&0$?%__sil_tmpSIL_materialize_temp__n$1:continue_scope::iterator*) injected [line 34, column 45]\n NULLIFY(&__return_param); [line 34, column 45]\n NULLIFY(&this); [line 34, column 45]\n EXIT_SCOPE(_,n$0,n$3,n$5,n$6,n$7,__return_param,0$?%__sil_tmpSIL_materialize_temp__n$1,this); [line 34, column 45]\n APPLY_ABSTRACTION; [line 34, column 45]\n " shape="box"] "begin#vec#continue_scope(class continue_scope::iterator)#(10867355481694456603).8c0551e386b9f2c25bf3629672b303c4_3" -> "begin#vec#continue_scope(class continue_scope::iterator)#(10867355481694456603).8c0551e386b9f2c25bf3629672b303c4_2" ; @@ -551,7 +555,7 @@ digraph cfg { "end#vec#continue_scope(class continue_scope::iterator)#(4225103001970544933).15b63d21cc3cccf91200fcac42652775_2" [label="2: Exit continue_scope::vec::end \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$1); [line 35, column 47]\n " color=yellow style=filled] -"end#vec#continue_scope(class continue_scope::iterator)#(4225103001970544933).15b63d21cc3cccf91200fcac42652775_3" [label="3: Return Stmt \n n$0=*&__return_param:continue_scope::iterator* [line 35, column 20]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:continue_scope::iterator); [line 35, column 27]\n n$2=*&this:continue_scope::vec* [line 35, column 36]\n n$3=_fun_continue_scope::iterator::iterator(&0$?%__sil_tmpSIL_materialize_temp__n$1:continue_scope::iterator*,n$2:continue_scope::vec*,10:int) [line 35, column 27]\n n$4=_fun_continue_scope::iterator::iterator(n$0:continue_scope::iterator*,&0$?%__sil_tmpSIL_materialize_temp__n$1:continue_scope::iterator&) [line 35, column 27]\n NULLIFY(&__return_param); [line 35, column 27]\n NULLIFY(&this); [line 35, column 27]\n EXIT_SCOPE(n$0,n$2,n$3,n$4,__return_param,0$?%__sil_tmpSIL_materialize_temp__n$1,this); [line 35, column 27]\n APPLY_ABSTRACTION; [line 35, column 27]\n " shape="box"] +"end#vec#continue_scope(class continue_scope::iterator)#(4225103001970544933).15b63d21cc3cccf91200fcac42652775_3" [label="3: Return Stmt \n n$0=*&__return_param:continue_scope::iterator* [line 35, column 20]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:continue_scope::iterator); [line 35, column 27]\n n$5=*&this:continue_scope::vec* [line 35, column 36]\n n$6=_fun_continue_scope::iterator::iterator(&0$?%__sil_tmpSIL_materialize_temp__n$1:continue_scope::iterator*,n$5:continue_scope::vec*,10:int) [line 35, column 27]\n n$7=_fun_continue_scope::iterator::iterator(n$0:continue_scope::iterator*,&0$?%__sil_tmpSIL_materialize_temp__n$1:continue_scope::iterator&) [line 35, column 27]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$1:continue_scope::iterator [line 35, column 44]\n n$3=_fun_continue_scope::iterator::~iterator(&0$?%__sil_tmpSIL_materialize_temp__n$1:continue_scope::iterator*) injected [line 35, column 44]\n NULLIFY(&__return_param); [line 35, column 44]\n NULLIFY(&this); [line 35, column 44]\n EXIT_SCOPE(_,n$0,n$3,n$5,n$6,n$7,__return_param,0$?%__sil_tmpSIL_materialize_temp__n$1,this); [line 35, column 44]\n APPLY_ABSTRACTION; [line 35, column 44]\n " shape="box"] "end#vec#continue_scope(class continue_scope::iterator)#(4225103001970544933).15b63d21cc3cccf91200fcac42652775_3" -> "end#vec#continue_scope(class continue_scope::iterator)#(4225103001970544933).15b63d21cc3cccf91200fcac42652775_2" ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/loops/foreach1.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/loops/foreach1.cpp.dot index fbc043b88..d1bdd8351 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/loops/foreach1.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/loops/foreach1.cpp.dot @@ -36,11 +36,11 @@ digraph cfg { "operator!=#4715710375716659667.eb4126b3edd381f3092a9e38275754d4_9" -> "operator!=#4715710375716659667.eb4126b3edd381f3092a9e38275754d4_2" ; -"test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_1" [label="1: Start test\nFormals: \nLocals: __end1:iterator 0$?%__sil_tmpSIL_materialize_temp__n$5:iterator __begin1:iterator 0$?%__sil_tmpSIL_materialize_temp__n$11:iterator 0$?%__sil_tmp__temp_return_n$19:iterator 0$?%__sil_tmp__temp_construct_n$21:iterator 0$?%__sil_tmp__temp_construct_n$23:iterator temp:int value:int __range1:vec& vector:vec \n " color=yellow style=filled] +"test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_1" [label="1: Start test\nFormals: \nLocals: __end1:iterator 0$?%__sil_tmpSIL_materialize_temp__n$5:iterator __begin1:iterator 0$?%__sil_tmpSIL_materialize_temp__n$14:iterator 0$?%__sil_tmp__temp_return_n$25:iterator 0$?%__sil_tmp__temp_construct_n$27:iterator 0$?%__sil_tmp__temp_construct_n$29:iterator temp:int value:int __range1:vec& vector:vec \n " color=yellow style=filled] "test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_1" -> "test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_14" ; -"test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_2" [label="2: Exit test \n NULLIFY(&0$?%__sil_tmp__temp_return_n$19); [line 38, column 1]\n NULLIFY(&0$?%__sil_tmp__temp_construct_n$21); [line 38, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$11); [line 38, column 1]\n NULLIFY(&__end1); [line 38, column 1]\n NULLIFY(&0$?%__sil_tmp__temp_construct_n$23); [line 38, column 1]\n NULLIFY(&__begin1); [line 38, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$5); [line 38, column 1]\n NULLIFY(&vector); [line 38, column 1]\n " color=yellow style=filled] +"test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_2" [label="2: Exit test \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$14); [line 38, column 1]\n NULLIFY(&__end1); [line 38, column 1]\n NULLIFY(&0$?%__sil_tmp__temp_construct_n$27); [line 38, column 1]\n NULLIFY(&__begin1); [line 38, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$5); [line 38, column 1]\n NULLIFY(&vector); [line 38, column 1]\n NULLIFY(&0$?%__sil_tmp__temp_construct_n$29); [line 38, column 1]\n NULLIFY(&0$?%__sil_tmp__temp_return_n$25); [line 38, column 1]\n " color=yellow style=filled] "test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_3" [label="3: Destruction(Scope) \n _=*&__end1:iterator [line 37, column 3]\n n$1=_fun_iterator::~iterator(&__end1:iterator*) injected [line 37, column 3]\n _=*&__begin1:iterator [line 37, column 3]\n n$3=_fun_iterator::~iterator(&__begin1:iterator*) injected [line 37, column 3]\n EXIT_SCOPE(_,_,n$1,n$3,__begin1,__end1); [line 37, column 3]\n APPLY_ABSTRACTION; [line 37, column 3]\n " shape="box"] @@ -51,36 +51,36 @@ digraph cfg { "test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_4" -> "test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_8" ; -"test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_5" [label="5: DeclStmt \n VARIABLE_DECLARED(__end1:iterator); [line 35, column 18]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$5:iterator); [line 35, column 18]\n n$6=*&__range1:vec& [line 35, column 18]\n _=*n$6:vec [line 35, column 18]\n n$9=_fun_vec::end(n$6:vec&,&0$?%__sil_tmpSIL_materialize_temp__n$5:iterator*) assign_last [line 35, column 18]\n n$10=_fun_iterator::iterator(&__end1:iterator*,&0$?%__sil_tmpSIL_materialize_temp__n$5:iterator&) [line 35, column 18]\n NULLIFY(&__range1); [line 35, column 18]\n EXIT_SCOPE(_,n$6,n$9,n$10,0$?%__sil_tmpSIL_materialize_temp__n$5,__range1); [line 35, column 18]\n APPLY_ABSTRACTION; [line 35, column 18]\n " shape="box"] +"test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_5" [label="5: DeclStmt \n VARIABLE_DECLARED(__end1:iterator); [line 35, column 18]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$5:iterator); [line 35, column 18]\n n$9=*&__range1:vec& [line 35, column 18]\n _=*n$9:vec [line 35, column 18]\n n$12=_fun_vec::end(n$9:vec&,&0$?%__sil_tmpSIL_materialize_temp__n$5:iterator*) assign_last [line 35, column 18]\n n$13=_fun_iterator::iterator(&__end1:iterator*,&0$?%__sil_tmpSIL_materialize_temp__n$5:iterator&) [line 35, column 18]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$5:iterator [line 35, column 18]\n n$7=_fun_iterator::~iterator(&0$?%__sil_tmpSIL_materialize_temp__n$5:iterator*) injected [line 35, column 18]\n NULLIFY(&__range1); [line 35, column 18]\n EXIT_SCOPE(_,_,n$7,n$9,n$12,n$13,0$?%__sil_tmpSIL_materialize_temp__n$5,__range1); [line 35, column 18]\n APPLY_ABSTRACTION; [line 35, column 18]\n " shape="box"] "test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_5" -> "test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_4" ; -"test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_6" [label="6: DeclStmt \n VARIABLE_DECLARED(__begin1:iterator); [line 35, column 18]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$11:iterator); [line 35, column 18]\n n$12=*&__range1:vec& [line 35, column 18]\n _=*n$12:vec [line 35, column 18]\n n$15=_fun_vec::begin(n$12:vec&,&0$?%__sil_tmpSIL_materialize_temp__n$11:iterator*) assign_last [line 35, column 18]\n n$16=_fun_iterator::iterator(&__begin1:iterator*,&0$?%__sil_tmpSIL_materialize_temp__n$11:iterator&) [line 35, column 18]\n EXIT_SCOPE(_,n$12,n$15,n$16,0$?%__sil_tmpSIL_materialize_temp__n$11); [line 35, column 18]\n " shape="box"] +"test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_6" [label="6: DeclStmt \n VARIABLE_DECLARED(__begin1:iterator); [line 35, column 18]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$14:iterator); [line 35, column 18]\n n$18=*&__range1:vec& [line 35, column 18]\n _=*n$18:vec [line 35, column 18]\n n$21=_fun_vec::begin(n$18:vec&,&0$?%__sil_tmpSIL_materialize_temp__n$14:iterator*) assign_last [line 35, column 18]\n n$22=_fun_iterator::iterator(&__begin1:iterator*,&0$?%__sil_tmpSIL_materialize_temp__n$14:iterator&) [line 35, column 18]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$14:iterator [line 35, column 18]\n n$16=_fun_iterator::~iterator(&0$?%__sil_tmpSIL_materialize_temp__n$14:iterator*) injected [line 35, column 18]\n EXIT_SCOPE(_,_,n$16,n$18,n$21,n$22,0$?%__sil_tmpSIL_materialize_temp__n$14); [line 35, column 18]\n " shape="box"] "test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_6" -> "test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_5" ; -"test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_7" [label="7: Call _fun_iterator::operator++ \n n$20=_fun_iterator::operator++(&__begin1:iterator&,&0$?%__sil_tmp__temp_return_n$19:iterator*) assign_last [line 35, column 18]\n EXIT_SCOPE(n$20,0$?%__sil_tmp__temp_return_n$19); [line 35, column 18]\n APPLY_ABSTRACTION; [line 35, column 18]\n " shape="box"] +"test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_7" [label="7: Call _fun_iterator::operator++ \n n$26=_fun_iterator::operator++(&__begin1:iterator&,&0$?%__sil_tmp__temp_return_n$25:iterator*) assign_last [line 35, column 18]\n EXIT_SCOPE(n$26,0$?%__sil_tmp__temp_return_n$25); [line 35, column 18]\n APPLY_ABSTRACTION; [line 35, column 18]\n " shape="box"] "test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_7" -> "test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_4" ; -"test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_8" [label="8: Call _fun_operator!= \n n$22=_fun_iterator::iterator(&0$?%__sil_tmp__temp_construct_n$21:iterator*,&__begin1:iterator&) [line 35, column 18]\n n$24=_fun_iterator::iterator(&0$?%__sil_tmp__temp_construct_n$23:iterator*,&__end1:iterator&) [line 35, column 18]\n n$25=_fun_operator!=(&0$?%__sil_tmp__temp_construct_n$21:iterator,&0$?%__sil_tmp__temp_construct_n$23:iterator) [line 35, column 18]\n EXIT_SCOPE(n$22,n$24); [line 35, column 18]\n " shape="box"] +"test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_8" [label="8: Call _fun_operator!= \n n$28=_fun_iterator::iterator(&0$?%__sil_tmp__temp_construct_n$27:iterator*,&__begin1:iterator&) [line 35, column 18]\n n$30=_fun_iterator::iterator(&0$?%__sil_tmp__temp_construct_n$29:iterator*,&__end1:iterator&) [line 35, column 18]\n n$31=_fun_operator!=(&0$?%__sil_tmp__temp_construct_n$27:iterator,&0$?%__sil_tmp__temp_construct_n$29:iterator) [line 35, column 18]\n EXIT_SCOPE(n$28,n$30); [line 35, column 18]\n " shape="box"] "test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_8" -> "test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_9" ; "test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_8" -> "test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_10" ; -"test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_9" [label="9: Prune (true branch, for loop) \n PRUNE(n$25, true); [line 35, column 18]\n EXIT_SCOPE(n$25); [line 35, column 18]\n " shape="invhouse"] +"test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_9" [label="9: Prune (true branch, for loop) \n PRUNE(n$31, true); [line 35, column 18]\n EXIT_SCOPE(n$31); [line 35, column 18]\n " shape="invhouse"] "test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_9" -> "test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_12" ; -"test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_10" [label="10: Prune (false branch, for loop) \n PRUNE(!n$25, false); [line 35, column 18]\n EXIT_SCOPE(n$25); [line 35, column 18]\n " shape="invhouse"] +"test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_10" [label="10: Prune (false branch, for loop) \n PRUNE(!n$31, false); [line 35, column 18]\n EXIT_SCOPE(n$31); [line 35, column 18]\n " shape="invhouse"] "test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_10" -> "test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_3" ; -"test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_11" [label="11: DeclStmt \n VARIABLE_DECLARED(temp:int); [line 36, column 5]\n n$26=*&value:int [line 36, column 16]\n n$27=*&value:int [line 36, column 24]\n *&temp:int=((n$26 * n$27) + 10) [line 36, column 5]\n NULLIFY(&value); [line 36, column 5]\n NULLIFY(&temp); [line 36, column 5]\n EXIT_SCOPE(n$26,n$27,value,temp); [line 36, column 5]\n " shape="box"] +"test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_11" [label="11: DeclStmt \n VARIABLE_DECLARED(temp:int); [line 36, column 5]\n n$32=*&value:int [line 36, column 16]\n n$33=*&value:int [line 36, column 24]\n *&temp:int=((n$32 * n$33) + 10) [line 36, column 5]\n NULLIFY(&value); [line 36, column 5]\n NULLIFY(&temp); [line 36, column 5]\n EXIT_SCOPE(n$32,n$33,value,temp); [line 36, column 5]\n " shape="box"] "test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_11" -> "test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_7" ; -"test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_12" [label="12: DeclStmt \n VARIABLE_DECLARED(value:int); [line 35, column 8]\n n$29=_fun_iterator::operator*(&__begin1:iterator&) [line 35, column 18]\n *&value:int=n$29 [line 35, column 8]\n EXIT_SCOPE(n$29); [line 35, column 8]\n " shape="box"] +"test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_12" [label="12: DeclStmt \n VARIABLE_DECLARED(value:int); [line 35, column 8]\n n$35=_fun_iterator::operator*(&__begin1:iterator&) [line 35, column 18]\n *&value:int=n$35 [line 35, column 8]\n EXIT_SCOPE(n$35); [line 35, column 8]\n " shape="box"] "test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_12" -> "test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_11" ; @@ -88,7 +88,7 @@ digraph cfg { "test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_13" -> "test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_6" ; -"test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_14" [label="14: DeclStmt \n VARIABLE_DECLARED(vector:vec); [line 34, column 3]\n n$31=_fun_vec::vec(&vector:vec*,10:int) [line 34, column 7]\n EXIT_SCOPE(n$31); [line 34, column 7]\n " shape="box"] +"test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_14" [label="14: DeclStmt \n VARIABLE_DECLARED(vector:vec); [line 34, column 3]\n n$37=_fun_vec::vec(&vector:vec*,10:int) [line 34, column 7]\n EXIT_SCOPE(n$37); [line 34, column 7]\n " shape="box"] "test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_14" -> "test#18241244337164948030.afc14f193ad97442f67ac7183be789bc_13" ; diff --git a/infer/tests/codetoanalyze/cpp/ownership/issues.exp b/infer/tests/codetoanalyze/cpp/ownership/issues.exp index a849f08a8..c6676af1d 100644 --- a/infer/tests/codetoanalyze/cpp/ownership/issues.exp +++ b/infer/tests/codetoanalyze/cpp/ownership/issues.exp @@ -3,8 +3,10 @@ codetoanalyze/cpp/ownership/basics.cpp, multiple_invalidations_loop_bad, 3, USE_ codetoanalyze/cpp/ownership/basics.cpp, multiple_invalidations_loop_bad, 5, USE_AFTER_LIFETIME, no_bucket, ERROR, [End of variable lifetime,Use of invalid variable] codetoanalyze/cpp/ownership/basics.cpp, multiple_invalidations_loop_bad, 8, USE_AFTER_LIFETIME, no_bucket, ERROR, [End of variable lifetime,Use of invalid variable] codetoanalyze/cpp/ownership/closures.cpp, implicit_ref_capture_destroy_invoke_bad, 6, USE_AFTER_LIFETIME, no_bucket, ERROR, [End of variable lifetime,Use of invalid variable] +codetoanalyze/cpp/ownership/closures.cpp, implicit_value_capture_destroy_invoke_ok, 6, USE_AFTER_LIFETIME, no_bucket, ERROR, [End of variable lifetime,Use of invalid variable] codetoanalyze/cpp/ownership/closures.cpp, lambda_return_local_bad::lambda_closures.cpp:119:12::operator(), 3, USE_AFTER_LIFETIME, no_bucket, ERROR, [Return of stack variable,End of procedure] codetoanalyze/cpp/ownership/closures.cpp, ref_capture_destroy_invoke_bad, 6, USE_AFTER_LIFETIME, no_bucket, ERROR, [End of variable lifetime,Use of invalid variable] +codetoanalyze/cpp/ownership/closures.cpp, value_capture_destroy_invoke_ok, 6, USE_AFTER_LIFETIME, no_bucket, ERROR, [End of variable lifetime,Use of invalid variable] codetoanalyze/cpp/ownership/returns.cpp, returns::return_deleted_bad, 4, USE_AFTER_LIFETIME, no_bucket, ERROR, [End of variable lifetime,Use of invalid variable] codetoanalyze/cpp/ownership/returns.cpp, returns::return_literal_stack_reference_bad, 0, USE_AFTER_LIFETIME, no_bucket, ERROR, [Return of stack variable,End of procedure] codetoanalyze/cpp/ownership/returns.cpp, returns::return_stack_pointer_bad, 3, USE_AFTER_LIFETIME, no_bucket, ERROR, [Return of stack variable,End of procedure] diff --git a/infer/tests/codetoanalyze/cpp/pulse/issues.exp b/infer/tests/codetoanalyze/cpp/pulse/issues.exp index 0a21e46ce..e13e3aa7b 100644 --- a/infer/tests/codetoanalyze/cpp/pulse/issues.exp +++ b/infer/tests/codetoanalyze/cpp/pulse/issues.exp @@ -17,6 +17,7 @@ codetoanalyze/cpp/pulse/returns.cpp, returns::return_literal_stack_reference_bad codetoanalyze/cpp/pulse/returns.cpp, returns::return_stack_pointer_bad, 2, STACK_VARIABLE_ADDRESS_ESCAPE, no_bucket, ERROR, [variable declared,returned here] codetoanalyze/cpp/pulse/returns.cpp, returns::return_variable_stack_reference1_bad, 2, STACK_VARIABLE_ADDRESS_ESCAPE, no_bucket, ERROR, [C++ temporary created,assigned to `x`,returned here] codetoanalyze/cpp/pulse/returns.cpp, returns::return_variable_stack_reference2_bad, 3, STACK_VARIABLE_ADDRESS_ESCAPE, no_bucket, ERROR, [C++ temporary created,assigned to `x`,assigned to `y`,returned here] +codetoanalyze/cpp/pulse/temporaries.cpp, temporaries::call_mk_UniquePtr_A_deref_bad, 4, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,when calling `~UniquePtr` here,when calling `__infer_inner_destructor_~UniquePtr` here,memory was invalidated by `delete` on `*(*(&this.x_))` here,use-after-lifetime part of the trace starts here,assigned to `return`,returned from call to `temporaries::UniquePtr::get()`,assigned to `a`,invalid access to `*(a.s_)` here] codetoanalyze/cpp/pulse/use_after_delete.cpp, delete_in_branch_bad, 5, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,returned from call to `__new(sizeof(Simple))`,assigned to `s`,memory was invalidated by `delete` on `s` here,use-after-lifetime part of the trace starts here,returned from call to `__new(sizeof(Simple))`,assigned to `s`,invalid access to `*(s.f)` here] codetoanalyze/cpp/pulse/use_after_delete.cpp, delete_in_loop_bad, 3, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,returned from call to `__new(sizeof(Simple))`,assigned to `s`,memory was invalidated by `delete` on `s` here,use-after-lifetime part of the trace starts here,returned from call to `__new(sizeof(Simple))`,assigned to `s`,invalid access to `s` here] codetoanalyze/cpp/pulse/use_after_delete.cpp, deref_deleted_bad, 3, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,returned from call to `__new(sizeof(Simple))`,assigned to `s`,memory was invalidated by `delete` on `s` here,use-after-lifetime part of the trace starts here,returned from call to `__new(sizeof(Simple))`,assigned to `s`,when calling `Simple` here,invalid access to `*(__param_0.f)` here] @@ -25,12 +26,14 @@ codetoanalyze/cpp/pulse/use_after_delete.cpp, reassign_field_of_deleted_bad, 3, codetoanalyze/cpp/pulse/use_after_delete.cpp, use_in_branch_bad, 4, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,returned from call to `__new(sizeof(Simple))`,assigned to `s`,memory was invalidated by `delete` on `s` here,use-after-lifetime part of the trace starts here,returned from call to `__new(sizeof(Simple))`,assigned to `s`,when calling `Simple` here,invalid access to `*(__param_0.f)` here] codetoanalyze/cpp/pulse/use_after_delete.cpp, use_in_loop_bad, 4, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,returned from call to `__new(sizeof(Simple))`,assigned to `s`,memory was invalidated by `delete` on `s` here,use-after-lifetime part of the trace starts here,returned from call to `__new(sizeof(Simple))`,assigned to `s`,invalid access to `*(s.f)` here] codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::double_destructor_bad, 5, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,when calling `~S` here,when calling `__infer_inner_destructor_~S` here,memory was invalidated by `delete` on `*(*(&this.f))` here,use-after-lifetime part of the trace starts here,variable declared,when calling `~S` here,when calling `__infer_inner_destructor_~S` here,invalid access to `*(*(&this.f))` here] -codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::placement_new_aliasing1_bad, 5, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,returned from call to `__new(sizeof(use_after_destructor::S))`,assigned to `s`,returned from call to `(sizeof(use_after_destructor::S),s)`,assigned to `alias`,memory was invalidated by `delete` on `alias` here,use-after-lifetime part of the trace starts here,returned from call to `__new(sizeof(use_after_destructor::S))`,assigned to `s`,invalid access to `*(s.f)` here] -codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::placement_new_aliasing2_bad, 5, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,returned from call to `__new(sizeof(use_after_destructor::S))`,assigned to `s`,memory was invalidated by `delete` on `s` here,use-after-lifetime part of the trace starts here,returned from call to `__new(sizeof(use_after_destructor::S))`,assigned to `s`,returned from call to `(sizeof(use_after_destructor::S),s)`,assigned to `alias`,invalid access to `*(alias.f)` here] -codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::placement_new_aliasing3_bad, 6, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,returned from call to `__new(sizeof(use_after_destructor::S))`,assigned to `s`,memory was invalidated by `delete` on `alias` here,use-after-lifetime part of the trace starts here,returned from call to `__new(sizeof(use_after_destructor::S))`,assigned to `s`,assigned to `alias`,invalid access to `*(alias.f)` here] +codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::placement_new_aliasing1_bad, 5, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,returned from call to `__new(sizeof(use_after_destructor::S))`,assigned to `s`,returned from call to `(sizeof(use_after_destructor::S),s)`,assigned to `alias`,memory was invalidated by `delete` on `s` here,use-after-lifetime part of the trace starts here,returned from call to `__new(sizeof(use_after_destructor::S))`,assigned to `s`,invalid access to `*(s.f)` here] +codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::placement_new_aliasing2_bad, 5, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,returned from call to `__new(sizeof(use_after_destructor::S))`,assigned to `s`,memory was invalidated by `delete` on `alias` here,use-after-lifetime part of the trace starts here,returned from call to `__new(sizeof(use_after_destructor::S))`,assigned to `s`,returned from call to `(sizeof(use_after_destructor::S),s)`,assigned to `alias`,invalid access to `*(alias.f)` here] +codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::placement_new_aliasing3_bad, 6, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,returned from call to `__new(sizeof(use_after_destructor::S))`,assigned to `s`,memory was invalidated by `delete` on `s` here,use-after-lifetime part of the trace starts here,returned from call to `__new(sizeof(use_after_destructor::S))`,assigned to `s`,assigned to `alias`,invalid access to `*(alias.f)` here] codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::reinit_after_explicit_destructor2_bad, 5, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,when calling `~S` here,when calling `__infer_inner_destructor_~S` here,memory was invalidated by `delete` on `*(*(&this.f))` here,use-after-lifetime part of the trace starts here,variable declared,when calling `~S` here,when calling `__infer_inner_destructor_~S` here,invalid access to `*(*(&this.f))` here] +codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::reinit_after_explicit_destructor_bad, 4, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,when calling `~S` here,when calling `__infer_inner_destructor_~S` here,memory was invalidated by `delete` on `*(*(&this.f))` here,use-after-lifetime part of the trace starts here,assigned to `*(this.f)`,returned from call to `use_after_destructor::S::operator=()`,invalid access to `*(*(&s.f))` here] codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::use_after_destructor_bad, 3, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,when calling `~S` here,when calling `__infer_inner_destructor_~S` here,memory was invalidated by `delete` on `*(*(&this.f))` here,use-after-lifetime part of the trace starts here,returned from call to `__new(sizeof(int))`,assigned to `*(this.f)`,returned from call to `use_after_destructor::S::S()`,invalid access to `*(*(&s.f))` here] codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::use_after_scope1_bad, 7, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,when calling `~S` here,when calling `__infer_inner_destructor_~S` here,memory was invalidated by `delete` on `*(*(&this.f))` here,use-after-lifetime part of the trace starts here,variable declared,when calling `~S` here,when calling `__infer_inner_destructor_~S` here,invalid access to `*(*(&this.f))` here] +codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::use_after_scope2_bad, 3, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,when calling `~S` here,when calling `__infer_inner_destructor_~S` here,memory was invalidated by `delete` on `*(*(&this.f))` here,use-after-lifetime part of the trace starts here,variable declared,when calling `~S` here,when calling `__infer_inner_destructor_~S` here,invalid access to `*(*(&this.f))` here] codetoanalyze/cpp/pulse/use_after_destructor.cpp, use_after_destructor::use_after_scope4_bad, 6, USE_AFTER_LIFETIME, no_bucket, ERROR, [invalidation part of the trace starts here,memory is the address of a stack variable `c` whose lifetime has ended here,use-after-lifetime part of the trace starts here,invalid access to `*(pc.f)` here] codetoanalyze/cpp/pulse/use_after_free.cpp, double_free_global_bad, 2, USE_AFTER_FREE, no_bucket, ERROR, [invalidation part of the trace starts here,when calling `free_global_pointer_ok()` here,memory was invalidated by call to `free()` on `global_pointer` here,use-after-lifetime part of the trace starts here,when calling `free_global_pointer_ok()` here,invalid access to `global_pointer` here] codetoanalyze/cpp/pulse/use_after_free.cpp, double_free_simple_bad, 2, USE_AFTER_FREE, no_bucket, ERROR, [invalidation part of the trace starts here,memory was invalidated by call to `free()` on `x` here,use-after-lifetime part of the trace starts here,invalid access to `x` here] diff --git a/infer/tests/codetoanalyze/cpp/pulse/temporaries.cpp b/infer/tests/codetoanalyze/cpp/pulse/temporaries.cpp index 7cbf6ee06..7dbfa9278 100644 --- a/infer/tests/codetoanalyze/cpp/pulse/temporaries.cpp +++ b/infer/tests/codetoanalyze/cpp/pulse/temporaries.cpp @@ -39,7 +39,7 @@ struct A { UniquePtr mk_UniquePtr_A() { return UniquePtr(new A); } -int FN_call_mk_UniquePtr_A_deref_bad() { +int call_mk_UniquePtr_A_deref_bad() { A* a = mk_UniquePtr_A().get(); // temporary unique_ptr returned by // `mk_UniquePtr_A` is destroyed at the end // of the statement @@ -59,12 +59,16 @@ int call_mk_UniquePtr_A_copy_object_ok() { return a.s_; } -void temporary_in_conditional_ok() { +void temporary_in_ternary_ok() { while (true) { int x = true ? 0 : A(4).s_; } } +void temporary_in_condition_ok() { + while (true && A(4).s_ && true) {} +} + void call_mk_UniquePtr_A_get_field_ok() { int x = A().s_; } int FN_bind_temporary_to_const_bad() { diff --git a/infer/tests/codetoanalyze/cpp/pulse/use_after_destructor.cpp b/infer/tests/codetoanalyze/cpp/pulse/use_after_destructor.cpp index b285fb733..d25644d4d 100644 --- a/infer/tests/codetoanalyze/cpp/pulse/use_after_destructor.cpp +++ b/infer/tests/codetoanalyze/cpp/pulse/use_after_destructor.cpp @@ -43,7 +43,7 @@ int reinit_after_explicit_destructor_ok() { return *s.f; } -int FN_reinit_after_explicit_destructor_bad() { +int reinit_after_explicit_destructor_bad() { S s(1); s.~S(); s = S(2); // a temporary is created then operator= is called @@ -97,11 +97,10 @@ void use_after_scope1_bad() { // destructor for s here; second time the value held by s has been destructed } -void FN_use_after_scope2_bad() { +// same as above +void use_after_scope2_bad() { S s(1); - { - s = S(1); - } // destructor runs here, but our frontend currently doesn't insert it + { s = S(1); } } struct POD { diff --git a/infer/tests/codetoanalyze/cpp/shared/conditional/binary_conditional.cpp.dot b/infer/tests/codetoanalyze/cpp/shared/conditional/binary_conditional.cpp.dot index ef3b55ad6..3dd992128 100644 --- a/infer/tests/codetoanalyze/cpp/shared/conditional/binary_conditional.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/shared/conditional/binary_conditional.cpp.dot @@ -1,6 +1,6 @@ /* @generated */ digraph cfg { -"binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_1" [label="1: Start binary_conditional::binaryConditional\nFormals: \nLocals: x:binary_conditional::X 0$?%__sil_tmpSIL_materialize_temp__n$6:binary_conditional::X 0$?%__sil_tmpSIL_temp_conditional___n$9:binary_conditional::X 0$?%__sil_tmpSIL_materialize_temp__n$5:binary_conditional::X a:binary_conditional::X \n " color=yellow style=filled] +"binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_1" [label="1: Start binary_conditional::binaryConditional\nFormals: \nLocals: x:binary_conditional::X 0$?%__sil_tmpSIL_materialize_temp__n$6:binary_conditional::X 0$?%__sil_tmpSIL_temp_conditional___n$14:binary_conditional::X 0$?%__sil_tmpSIL_materialize_temp__n$5:binary_conditional::X a:binary_conditional::X \n " color=yellow style=filled] "binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_1" -> "binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_12" ; @@ -15,44 +15,44 @@ digraph cfg { "binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_4" -> "binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_11" ; -"binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_5" [label="5: Call _fun_binary_conditional::X::operator_bool \n _=*&0$?%__sil_tmpSIL_materialize_temp__n$6:binary_conditional::X [line 22, column 9]\n n$11=_fun_binary_conditional::X::operator_bool(&0$?%__sil_tmpSIL_materialize_temp__n$6:binary_conditional::X&) [line 22, column 9]\n EXIT_SCOPE(_); [line 22, column 9]\n " shape="box"] +"binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_5" [label="5: Call _fun_binary_conditional::X::operator_bool \n _=*&0$?%__sil_tmpSIL_materialize_temp__n$6:binary_conditional::X [line 22, column 9]\n n$16=_fun_binary_conditional::X::operator_bool(&0$?%__sil_tmpSIL_materialize_temp__n$6:binary_conditional::X&) [line 22, column 9]\n EXIT_SCOPE(_); [line 22, column 9]\n " shape="box"] "binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_5" -> "binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_6" ; "binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_5" -> "binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_7" ; -"binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_6" [label="6: Prune (true branch, boolean exp) \n PRUNE(n$11, true); [line 22, column 9]\n EXIT_SCOPE(n$11); [line 22, column 9]\n " shape="invhouse"] +"binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_6" [label="6: Prune (true branch, boolean exp) \n PRUNE(n$16, true); [line 22, column 9]\n EXIT_SCOPE(n$16); [line 22, column 9]\n " shape="invhouse"] "binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_6" -> "binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_8" ; -"binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_7" [label="7: Prune (false branch, boolean exp) \n PRUNE(!n$11, false); [line 22, column 9]\n EXIT_SCOPE(n$11,0$?%__sil_tmpSIL_materialize_temp__n$6); [line 22, column 9]\n " shape="invhouse"] +"binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_7" [label="7: Prune (false branch, boolean exp) \n PRUNE(!n$16, false); [line 22, column 9]\n EXIT_SCOPE(n$16); [line 22, column 9]\n " shape="invhouse"] "binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_7" -> "binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_9" ; -"binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_8" [label="8: ConditionalStmt Branch \n n$12=_fun_binary_conditional::X::X(&0$?%__sil_tmpSIL_materialize_temp__n$5:binary_conditional::X*,&0$?%__sil_tmpSIL_materialize_temp__n$6:binary_conditional::X&) [line 22, column 9]\n *&0$?%__sil_tmpSIL_temp_conditional___n$9:binary_conditional::X=&0$?%__sil_tmpSIL_materialize_temp__n$5 [line 22, column 9]\n EXIT_SCOPE(n$12,0$?%__sil_tmpSIL_materialize_temp__n$6); [line 22, column 9]\n APPLY_ABSTRACTION; [line 22, column 9]\n " shape="box"] +"binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_8" [label="8: ConditionalStmt Branch \n n$17=_fun_binary_conditional::X::X(&0$?%__sil_tmpSIL_materialize_temp__n$5:binary_conditional::X*,&0$?%__sil_tmpSIL_materialize_temp__n$6:binary_conditional::X&) [line 22, column 9]\n *&0$?%__sil_tmpSIL_temp_conditional___n$14:binary_conditional::X=&0$?%__sil_tmpSIL_materialize_temp__n$5 [line 22, column 9]\n EXIT_SCOPE(n$17); [line 22, column 9]\n APPLY_ABSTRACTION; [line 22, column 9]\n " shape="box"] "binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_8" -> "binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_4" ; -"binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_9" [label="9: ConditionalStmt Branch \n n$13=_fun_binary_conditional::X::X(&0$?%__sil_tmpSIL_materialize_temp__n$5:binary_conditional::X*,&a:binary_conditional::X&) [line 22, column 19]\n *&0$?%__sil_tmpSIL_temp_conditional___n$9:binary_conditional::X=&0$?%__sil_tmpSIL_materialize_temp__n$5 [line 22, column 9]\n EXIT_SCOPE(n$13); [line 22, column 9]\n APPLY_ABSTRACTION; [line 22, column 9]\n " shape="box"] +"binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_9" [label="9: ConditionalStmt Branch \n n$18=_fun_binary_conditional::X::X(&0$?%__sil_tmpSIL_materialize_temp__n$5:binary_conditional::X*,&a:binary_conditional::X&) [line 22, column 19]\n *&0$?%__sil_tmpSIL_temp_conditional___n$14:binary_conditional::X=&0$?%__sil_tmpSIL_materialize_temp__n$5 [line 22, column 9]\n EXIT_SCOPE(n$18); [line 22, column 9]\n APPLY_ABSTRACTION; [line 22, column 9]\n " shape="box"] "binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_9" -> "binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_4" ; -"binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_10" [label="10: BinaryConditionalStmt Init \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$6:binary_conditional::X); [line 22, column 9]\n n$8=_fun_binary_conditional::getX(&0$?%__sil_tmpSIL_materialize_temp__n$6:binary_conditional::X*) assign_last [line 22, column 9]\n EXIT_SCOPE(n$8); [line 22, column 9]\n " shape="box"] +"binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_10" [label="10: BinaryConditionalStmt Init \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$6:binary_conditional::X); [line 22, column 9]\n n$13=_fun_binary_conditional::getX(&0$?%__sil_tmpSIL_materialize_temp__n$6:binary_conditional::X*) assign_last [line 22, column 9]\n EXIT_SCOPE(n$13); [line 22, column 9]\n " shape="box"] "binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_10" -> "binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_5" ; -"binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_11" [label="11: DeclStmt \n VARIABLE_DECLARED(x:binary_conditional::X); [line 22, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$5:binary_conditional::X); [line 22, column 9]\n n$14=*&0$?%__sil_tmpSIL_temp_conditional___n$9:binary_conditional::X [line 22, column 9]\n *&0$?%__sil_tmpSIL_materialize_temp__n$5:binary_conditional::X=n$14 [line 22, column 9]\n n$15=_fun_binary_conditional::X::X(&x:binary_conditional::X*,&0$?%__sil_tmpSIL_materialize_temp__n$5:binary_conditional::X&) [line 22, column 9]\n NULLIFY(&0$?%__sil_tmpSIL_temp_conditional___n$9); [line 22, column 9]\n EXIT_SCOPE(n$14,n$15,0$?%__sil_tmpSIL_materialize_temp__n$5,0$?%__sil_tmpSIL_temp_conditional___n$9); [line 22, column 9]\n " shape="box"] +"binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_11" [label="11: DeclStmt \n VARIABLE_DECLARED(x:binary_conditional::X); [line 22, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$5:binary_conditional::X); [line 22, column 9]\n n$19=*&0$?%__sil_tmpSIL_temp_conditional___n$14:binary_conditional::X [line 22, column 9]\n *&0$?%__sil_tmpSIL_materialize_temp__n$5:binary_conditional::X=n$19 [line 22, column 9]\n n$20=_fun_binary_conditional::X::X(&x:binary_conditional::X*,&0$?%__sil_tmpSIL_materialize_temp__n$5:binary_conditional::X&) [line 22, column 9]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$6:binary_conditional::X [line 22, column 19]\n n$8=_fun_binary_conditional::X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$6:binary_conditional::X*) injected [line 22, column 19]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$5:binary_conditional::X [line 22, column 19]\n n$10=_fun_binary_conditional::X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$5:binary_conditional::X*) injected [line 22, column 19]\n NULLIFY(&0$?%__sil_tmpSIL_temp_conditional___n$14); [line 22, column 19]\n EXIT_SCOPE(_,_,n$8,n$10,n$19,n$20,0$?%__sil_tmpSIL_materialize_temp__n$5,0$?%__sil_tmpSIL_materialize_temp__n$6,0$?%__sil_tmpSIL_temp_conditional___n$14); [line 22, column 19]\n " shape="box"] "binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_11" -> "binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_3" ; -"binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_12" [label="12: DeclStmt \n VARIABLE_DECLARED(a:binary_conditional::X); [line 21, column 3]\n n$16=_fun_binary_conditional::X::X(&a:binary_conditional::X*) [line 21, column 5]\n EXIT_SCOPE(n$16); [line 21, column 5]\n " shape="box"] +"binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_12" [label="12: DeclStmt \n VARIABLE_DECLARED(a:binary_conditional::X); [line 21, column 3]\n n$21=_fun_binary_conditional::X::X(&a:binary_conditional::X*) [line 21, column 5]\n EXIT_SCOPE(n$21); [line 21, column 5]\n " shape="box"] "binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_12" -> "binaryConditional#binary_conditional#15641211300815748363.a0f7e256e24b7117cb94c66e5aa27a30_10" ; -"conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_1" [label="1: Start binary_conditional::conditional\nFormals: \nLocals: x:binary_conditional::X 0$?%__sil_tmpSIL_temp_conditional___n$6:binary_conditional::X 0$?%__sil_tmpSIL_materialize_temp__n$7:binary_conditional::X 0$?%__sil_tmpSIL_materialize_temp__n$12:binary_conditional::X 0$?%__sil_tmpSIL_materialize_temp__n$5:binary_conditional::X a:binary_conditional::X \n " color=yellow style=filled] +"conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_1" [label="1: Start binary_conditional::conditional\nFormals: \nLocals: x:binary_conditional::X 0$?%__sil_tmpSIL_temp_conditional___n$9:binary_conditional::X 0$?%__sil_tmpSIL_materialize_temp__n$10:binary_conditional::X 0$?%__sil_tmpSIL_materialize_temp__n$15:binary_conditional::X 0$?%__sil_tmpSIL_materialize_temp__n$5:binary_conditional::X a:binary_conditional::X \n " color=yellow style=filled] "conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_1" -> "conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_11" ; -"conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_2" [label="2: Exit binary_conditional::conditional \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$7); [line 28, column 1]\n NULLIFY(&a); [line 28, column 1]\n NULLIFY(&x); [line 28, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$12); [line 28, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$5); [line 28, column 1]\n " color=yellow style=filled] +"conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_2" [label="2: Exit binary_conditional::conditional \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$15); [line 28, column 1]\n NULLIFY(&a); [line 28, column 1]\n NULLIFY(&x); [line 28, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$5); [line 28, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$10); [line 28, column 1]\n " color=yellow style=filled] "conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_3" [label="3: Destruction(Scope) \n _=*&x:binary_conditional::X [line 28, column 1]\n n$1=_fun_binary_conditional::X::~X(&x:binary_conditional::X*) injected [line 28, column 1]\n _=*&a:binary_conditional::X [line 28, column 1]\n n$3=_fun_binary_conditional::X::~X(&a:binary_conditional::X*) injected [line 28, column 1]\n EXIT_SCOPE(_,_,n$1,n$3,x,a); [line 28, column 1]\n APPLY_ABSTRACTION; [line 28, column 1]\n " shape="box"] @@ -63,32 +63,32 @@ digraph cfg { "conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_4" -> "conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_10" ; -"conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_5" [label="5: Call _fun_binary_conditional::X::operator_bool \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$7:binary_conditional::X); [line 27, column 9]\n n$9=_fun_binary_conditional::getX(&0$?%__sil_tmpSIL_materialize_temp__n$7:binary_conditional::X*) assign_last [line 27, column 9]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$7:binary_conditional::X [line 27, column 9]\n n$11=_fun_binary_conditional::X::operator_bool(&0$?%__sil_tmpSIL_materialize_temp__n$7:binary_conditional::X&) [line 27, column 9]\n EXIT_SCOPE(_,n$9,0$?%__sil_tmpSIL_materialize_temp__n$7); [line 27, column 9]\n " shape="box"] +"conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_5" [label="5: Call _fun_binary_conditional::X::operator_bool \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$10:binary_conditional::X); [line 27, column 9]\n n$12=_fun_binary_conditional::getX(&0$?%__sil_tmpSIL_materialize_temp__n$10:binary_conditional::X*) assign_last [line 27, column 9]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$10:binary_conditional::X [line 27, column 9]\n n$14=_fun_binary_conditional::X::operator_bool(&0$?%__sil_tmpSIL_materialize_temp__n$10:binary_conditional::X&) [line 27, column 9]\n EXIT_SCOPE(_,n$12,0$?%__sil_tmpSIL_materialize_temp__n$10); [line 27, column 9]\n " shape="box"] "conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_5" -> "conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_6" ; "conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_5" -> "conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_7" ; -"conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_6" [label="6: Prune (true branch, boolean exp) \n PRUNE(n$11, true); [line 27, column 9]\n EXIT_SCOPE(n$11); [line 27, column 9]\n " shape="invhouse"] +"conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_6" [label="6: Prune (true branch, boolean exp) \n PRUNE(n$14, true); [line 27, column 9]\n EXIT_SCOPE(n$14); [line 27, column 9]\n " shape="invhouse"] "conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_6" -> "conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_8" ; -"conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_7" [label="7: Prune (false branch, boolean exp) \n PRUNE(!n$11, false); [line 27, column 9]\n EXIT_SCOPE(n$11); [line 27, column 9]\n " shape="invhouse"] +"conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_7" [label="7: Prune (false branch, boolean exp) \n PRUNE(!n$14, false); [line 27, column 9]\n EXIT_SCOPE(n$14); [line 27, column 9]\n " shape="invhouse"] "conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_7" -> "conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_9" ; -"conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_8" [label="8: ConditionalStmt Branch \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$12:binary_conditional::X); [line 27, column 18]\n n$14=_fun_binary_conditional::getX(&0$?%__sil_tmpSIL_materialize_temp__n$12:binary_conditional::X*) assign_last [line 27, column 18]\n n$15=_fun_binary_conditional::X::X(&0$?%__sil_tmpSIL_materialize_temp__n$5:binary_conditional::X*,&0$?%__sil_tmpSIL_materialize_temp__n$12:binary_conditional::X&) [line 27, column 18]\n *&0$?%__sil_tmpSIL_temp_conditional___n$6:binary_conditional::X=&0$?%__sil_tmpSIL_materialize_temp__n$5 [line 27, column 9]\n EXIT_SCOPE(n$14,n$15,0$?%__sil_tmpSIL_materialize_temp__n$12); [line 27, column 9]\n APPLY_ABSTRACTION; [line 27, column 9]\n " shape="box"] +"conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_8" [label="8: ConditionalStmt Branch \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$15:binary_conditional::X); [line 27, column 18]\n n$17=_fun_binary_conditional::getX(&0$?%__sil_tmpSIL_materialize_temp__n$15:binary_conditional::X*) assign_last [line 27, column 18]\n n$18=_fun_binary_conditional::X::X(&0$?%__sil_tmpSIL_materialize_temp__n$5:binary_conditional::X*,&0$?%__sil_tmpSIL_materialize_temp__n$15:binary_conditional::X&) [line 27, column 18]\n *&0$?%__sil_tmpSIL_temp_conditional___n$9:binary_conditional::X=&0$?%__sil_tmpSIL_materialize_temp__n$5 [line 27, column 9]\n EXIT_SCOPE(n$17,n$18,0$?%__sil_tmpSIL_materialize_temp__n$15); [line 27, column 9]\n APPLY_ABSTRACTION; [line 27, column 9]\n " shape="box"] "conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_8" -> "conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_4" ; -"conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_9" [label="9: ConditionalStmt Branch \n n$16=_fun_binary_conditional::X::X(&0$?%__sil_tmpSIL_materialize_temp__n$5:binary_conditional::X*,&a:binary_conditional::X&) [line 27, column 27]\n *&0$?%__sil_tmpSIL_temp_conditional___n$6:binary_conditional::X=&0$?%__sil_tmpSIL_materialize_temp__n$5 [line 27, column 9]\n EXIT_SCOPE(n$16); [line 27, column 9]\n APPLY_ABSTRACTION; [line 27, column 9]\n " shape="box"] +"conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_9" [label="9: ConditionalStmt Branch \n n$19=_fun_binary_conditional::X::X(&0$?%__sil_tmpSIL_materialize_temp__n$5:binary_conditional::X*,&a:binary_conditional::X&) [line 27, column 27]\n *&0$?%__sil_tmpSIL_temp_conditional___n$9:binary_conditional::X=&0$?%__sil_tmpSIL_materialize_temp__n$5 [line 27, column 9]\n EXIT_SCOPE(n$19); [line 27, column 9]\n APPLY_ABSTRACTION; [line 27, column 9]\n " shape="box"] "conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_9" -> "conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_4" ; -"conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_10" [label="10: DeclStmt \n VARIABLE_DECLARED(x:binary_conditional::X); [line 27, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$5:binary_conditional::X); [line 27, column 9]\n n$17=*&0$?%__sil_tmpSIL_temp_conditional___n$6:binary_conditional::X [line 27, column 9]\n *&0$?%__sil_tmpSIL_materialize_temp__n$5:binary_conditional::X=n$17 [line 27, column 9]\n n$18=_fun_binary_conditional::X::X(&x:binary_conditional::X*,&0$?%__sil_tmpSIL_materialize_temp__n$5:binary_conditional::X&) [line 27, column 9]\n NULLIFY(&0$?%__sil_tmpSIL_temp_conditional___n$6); [line 27, column 9]\n EXIT_SCOPE(n$17,n$18,0$?%__sil_tmpSIL_temp_conditional___n$6,0$?%__sil_tmpSIL_materialize_temp__n$5); [line 27, column 9]\n " shape="box"] +"conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_10" [label="10: DeclStmt \n VARIABLE_DECLARED(x:binary_conditional::X); [line 27, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$5:binary_conditional::X); [line 27, column 9]\n n$20=*&0$?%__sil_tmpSIL_temp_conditional___n$9:binary_conditional::X [line 27, column 9]\n *&0$?%__sil_tmpSIL_materialize_temp__n$5:binary_conditional::X=n$20 [line 27, column 9]\n n$21=_fun_binary_conditional::X::X(&x:binary_conditional::X*,&0$?%__sil_tmpSIL_materialize_temp__n$5:binary_conditional::X&) [line 27, column 9]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$5:binary_conditional::X [line 27, column 27]\n n$7=_fun_binary_conditional::X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$5:binary_conditional::X*) injected [line 27, column 27]\n NULLIFY(&0$?%__sil_tmpSIL_temp_conditional___n$9); [line 27, column 27]\n EXIT_SCOPE(_,n$7,n$20,n$21,0$?%__sil_tmpSIL_materialize_temp__n$5,0$?%__sil_tmpSIL_temp_conditional___n$9); [line 27, column 27]\n " shape="box"] "conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_10" -> "conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_3" ; -"conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_11" [label="11: DeclStmt \n VARIABLE_DECLARED(a:binary_conditional::X); [line 26, column 3]\n n$19=_fun_binary_conditional::X::X(&a:binary_conditional::X*) [line 26, column 5]\n EXIT_SCOPE(n$19); [line 26, column 5]\n " shape="box"] +"conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_11" [label="11: DeclStmt \n VARIABLE_DECLARED(a:binary_conditional::X); [line 26, column 3]\n n$22=_fun_binary_conditional::X::X(&a:binary_conditional::X*) [line 26, column 5]\n EXIT_SCOPE(n$22); [line 26, column 5]\n " shape="box"] "conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_11" -> "conditional#binary_conditional#4777209206611953450.41decaebdce6325bd31c1d47d4647c45_5" ; diff --git a/infer/tests/codetoanalyze/cpp/shared/constructors/constructor_array.cpp.dot b/infer/tests/codetoanalyze/cpp/shared/constructors/constructor_array.cpp.dot index 3995e3d33..cc236e9de 100644 --- a/infer/tests/codetoanalyze/cpp/shared/constructors/constructor_array.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/shared/constructors/constructor_array.cpp.dot @@ -1,17 +1,17 @@ /* @generated */ digraph cfg { -"array_of_person#7945672701495610995.0fecf6778237d47d15191cac7fab514c_1" [label="1: Start array_of_person\nFormals: \nLocals: arr:Person[10*4] 0$?%__sil_tmpSIL_materialize_temp__n$1:Person 0$?%__sil_tmpSIL_materialize_temp__n$4:Person 0$?%__sil_tmpSIL_materialize_temp__n$7:Person \n " color=yellow style=filled] +"array_of_person#7945672701495610995.0fecf6778237d47d15191cac7fab514c_1" [label="1: Start array_of_person\nFormals: \nLocals: arr:Person[10*4] 0$?%__sil_tmpSIL_materialize_temp__n$1:Person 0$?%__sil_tmpSIL_materialize_temp__n$2:Person 0$?%__sil_tmpSIL_materialize_temp__n$3:Person \n " color=yellow style=filled] "array_of_person#7945672701495610995.0fecf6778237d47d15191cac7fab514c_1" -> "array_of_person#7945672701495610995.0fecf6778237d47d15191cac7fab514c_4" ; -"array_of_person#7945672701495610995.0fecf6778237d47d15191cac7fab514c_2" [label="2: Exit array_of_person \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$7); [line 18, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$1); [line 18, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$4); [line 18, column 1]\n NULLIFY(&arr); [line 18, column 1]\n " color=yellow style=filled] +"array_of_person#7945672701495610995.0fecf6778237d47d15191cac7fab514c_2" [label="2: Exit array_of_person \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$1); [line 18, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$2); [line 18, column 1]\n NULLIFY(&arr); [line 18, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$3); [line 18, column 1]\n " color=yellow style=filled] "array_of_person#7945672701495610995.0fecf6778237d47d15191cac7fab514c_3" [label="3: Return Stmt \n n$0=*&arr[0].x:int [line 17, column 10]\n *&return:int=n$0 [line 17, column 3]\n EXIT_SCOPE(n$0,arr); [line 17, column 3]\n APPLY_ABSTRACTION; [line 17, column 3]\n " shape="box"] "array_of_person#7945672701495610995.0fecf6778237d47d15191cac7fab514c_3" -> "array_of_person#7945672701495610995.0fecf6778237d47d15191cac7fab514c_2" ; -"array_of_person#7945672701495610995.0fecf6778237d47d15191cac7fab514c_4" [label="4: DeclStmt \n VARIABLE_DECLARED(arr:Person[10*4]); [line 16, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:Person); [line 16, column 21]\n n$2=_fun_Person::Person(&0$?%__sil_tmpSIL_materialize_temp__n$1:Person*) [line 16, column 21]\n n$3=_fun_Person::Person(&arr[0]:Person*,&0$?%__sil_tmpSIL_materialize_temp__n$1:Person&) [line 16, column 21]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$4:Person); [line 16, column 31]\n n$5=_fun_Person::Person(&0$?%__sil_tmpSIL_materialize_temp__n$4:Person*) [line 16, column 31]\n n$6=_fun_Person::Person(&arr[1]:Person*,&0$?%__sil_tmpSIL_materialize_temp__n$4:Person&) [line 16, column 31]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$7:Person); [line 16, column 41]\n n$8=_fun_Person::Person(&0$?%__sil_tmpSIL_materialize_temp__n$7:Person*) [line 16, column 41]\n n$9=_fun_Person::Person(&arr[2]:Person*,&0$?%__sil_tmpSIL_materialize_temp__n$7:Person&) [line 16, column 41]\n EXIT_SCOPE(n$2,n$3,n$5,n$6,n$8,n$9,0$?%__sil_tmpSIL_materialize_temp__n$4,0$?%__sil_tmpSIL_materialize_temp__n$1,0$?%__sil_tmpSIL_materialize_temp__n$7); [line 16, column 41]\n " shape="box"] +"array_of_person#7945672701495610995.0fecf6778237d47d15191cac7fab514c_4" [label="4: DeclStmt \n VARIABLE_DECLARED(arr:Person[10*4]); [line 16, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:Person); [line 16, column 21]\n n$11=_fun_Person::Person(&0$?%__sil_tmpSIL_materialize_temp__n$1:Person*) [line 16, column 21]\n n$12=_fun_Person::Person(&arr[0]:Person*,&0$?%__sil_tmpSIL_materialize_temp__n$1:Person&) [line 16, column 21]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$2:Person); [line 16, column 31]\n n$13=_fun_Person::Person(&0$?%__sil_tmpSIL_materialize_temp__n$2:Person*) [line 16, column 31]\n n$14=_fun_Person::Person(&arr[1]:Person*,&0$?%__sil_tmpSIL_materialize_temp__n$2:Person&) [line 16, column 31]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$3:Person); [line 16, column 41]\n n$15=_fun_Person::Person(&0$?%__sil_tmpSIL_materialize_temp__n$3:Person*) [line 16, column 41]\n n$16=_fun_Person::Person(&arr[2]:Person*,&0$?%__sil_tmpSIL_materialize_temp__n$3:Person&) [line 16, column 41]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$3:Person [line 16, column 49]\n n$5=_fun_Person::~Person(&0$?%__sil_tmpSIL_materialize_temp__n$3:Person*) injected [line 16, column 49]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$2:Person [line 16, column 49]\n n$7=_fun_Person::~Person(&0$?%__sil_tmpSIL_materialize_temp__n$2:Person*) injected [line 16, column 49]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$1:Person [line 16, column 49]\n n$9=_fun_Person::~Person(&0$?%__sil_tmpSIL_materialize_temp__n$1:Person*) injected [line 16, column 49]\n EXIT_SCOPE(_,_,_,n$5,n$7,n$9,n$11,n$12,n$13,n$14,n$15,n$16,0$?%__sil_tmpSIL_materialize_temp__n$3,0$?%__sil_tmpSIL_materialize_temp__n$2,0$?%__sil_tmpSIL_materialize_temp__n$1); [line 16, column 49]\n " shape="box"] "array_of_person#7945672701495610995.0fecf6778237d47d15191cac7fab514c_4" -> "array_of_person#7945672701495610995.0fecf6778237d47d15191cac7fab514c_3" ; @@ -49,18 +49,18 @@ digraph cfg { "initialization_mixed_styles_not_handled_correctly#5603413470418470631.422782850043f1b48105fbbb47efe379_5" -> "initialization_mixed_styles_not_handled_correctly#5603413470418470631.422782850043f1b48105fbbb47efe379_4" ; -"matrix_of_person#2881910427017022824.27f7f148c4911c13b3061cef6fe2673d_1" [label="1: Start matrix_of_person\nFormals: \nLocals: arr:Person[2*4][2*8] 0$?%__sil_tmpSIL_materialize_temp__n$1:Person 0$?%__sil_tmpSIL_materialize_temp__n$4:Person 0$?%__sil_tmpSIL_materialize_temp__n$7:Person 0$?%__sil_tmpSIL_materialize_temp__n$10:Person \n " color=yellow style=filled] +"matrix_of_person#2881910427017022824.27f7f148c4911c13b3061cef6fe2673d_1" [label="1: Start matrix_of_person\nFormals: \nLocals: arr:Person[2*4][2*8] 0$?%__sil_tmpSIL_materialize_temp__n$1:Person 0$?%__sil_tmpSIL_materialize_temp__n$2:Person 0$?%__sil_tmpSIL_materialize_temp__n$3:Person 0$?%__sil_tmpSIL_materialize_temp__n$4:Person \n " color=yellow style=filled] "matrix_of_person#2881910427017022824.27f7f148c4911c13b3061cef6fe2673d_1" -> "matrix_of_person#2881910427017022824.27f7f148c4911c13b3061cef6fe2673d_4" ; -"matrix_of_person#2881910427017022824.27f7f148c4911c13b3061cef6fe2673d_2" [label="2: Exit matrix_of_person \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$7); [line 23, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$1); [line 23, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$4); [line 23, column 1]\n NULLIFY(&arr); [line 23, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$10); [line 23, column 1]\n " color=yellow style=filled] +"matrix_of_person#2881910427017022824.27f7f148c4911c13b3061cef6fe2673d_2" [label="2: Exit matrix_of_person \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$1); [line 23, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$2); [line 23, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$4); [line 23, column 1]\n NULLIFY(&arr); [line 23, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$3); [line 23, column 1]\n " color=yellow style=filled] "matrix_of_person#2881910427017022824.27f7f148c4911c13b3061cef6fe2673d_3" [label="3: Return Stmt \n n$0=*&arr[0][1].x:int [line 22, column 10]\n *&return:int=n$0 [line 22, column 3]\n EXIT_SCOPE(n$0,arr); [line 22, column 3]\n APPLY_ABSTRACTION; [line 22, column 3]\n " shape="box"] "matrix_of_person#2881910427017022824.27f7f148c4911c13b3061cef6fe2673d_3" -> "matrix_of_person#2881910427017022824.27f7f148c4911c13b3061cef6fe2673d_2" ; -"matrix_of_person#2881910427017022824.27f7f148c4911c13b3061cef6fe2673d_4" [label="4: DeclStmt \n VARIABLE_DECLARED(arr:Person[2*4][2*8]); [line 21, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:Person); [line 21, column 23]\n n$2=_fun_Person::Person(&0$?%__sil_tmpSIL_materialize_temp__n$1:Person*) [line 21, column 23]\n n$3=_fun_Person::Person(&arr[0][0]:Person*,&0$?%__sil_tmpSIL_materialize_temp__n$1:Person&) [line 21, column 23]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$4:Person); [line 21, column 33]\n n$5=_fun_Person::Person(&0$?%__sil_tmpSIL_materialize_temp__n$4:Person*) [line 21, column 33]\n n$6=_fun_Person::Person(&arr[0][1]:Person*,&0$?%__sil_tmpSIL_materialize_temp__n$4:Person&) [line 21, column 33]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$7:Person); [line 21, column 43]\n n$8=_fun_Person::Person(&0$?%__sil_tmpSIL_materialize_temp__n$7:Person*) [line 21, column 43]\n n$9=_fun_Person::Person(&arr[1][0]:Person*,&0$?%__sil_tmpSIL_materialize_temp__n$7:Person&) [line 21, column 43]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$10:Person); [line 21, column 53]\n n$11=_fun_Person::Person(&0$?%__sil_tmpSIL_materialize_temp__n$10:Person*) [line 21, column 53]\n n$12=_fun_Person::Person(&arr[1][1]:Person*,&0$?%__sil_tmpSIL_materialize_temp__n$10:Person&) [line 21, column 53]\n EXIT_SCOPE(n$2,n$3,n$5,n$6,n$8,n$9,n$11,n$12,0$?%__sil_tmpSIL_materialize_temp__n$10,0$?%__sil_tmpSIL_materialize_temp__n$4,0$?%__sil_tmpSIL_materialize_temp__n$1,0$?%__sil_tmpSIL_materialize_temp__n$7); [line 21, column 53]\n " shape="box"] +"matrix_of_person#2881910427017022824.27f7f148c4911c13b3061cef6fe2673d_4" [label="4: DeclStmt \n VARIABLE_DECLARED(arr:Person[2*4][2*8]); [line 21, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:Person); [line 21, column 23]\n n$14=_fun_Person::Person(&0$?%__sil_tmpSIL_materialize_temp__n$1:Person*) [line 21, column 23]\n n$15=_fun_Person::Person(&arr[0][0]:Person*,&0$?%__sil_tmpSIL_materialize_temp__n$1:Person&) [line 21, column 23]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$2:Person); [line 21, column 33]\n n$16=_fun_Person::Person(&0$?%__sil_tmpSIL_materialize_temp__n$2:Person*) [line 21, column 33]\n n$17=_fun_Person::Person(&arr[0][1]:Person*,&0$?%__sil_tmpSIL_materialize_temp__n$2:Person&) [line 21, column 33]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$3:Person); [line 21, column 43]\n n$18=_fun_Person::Person(&0$?%__sil_tmpSIL_materialize_temp__n$3:Person*) [line 21, column 43]\n n$19=_fun_Person::Person(&arr[1][0]:Person*,&0$?%__sil_tmpSIL_materialize_temp__n$3:Person&) [line 21, column 43]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$4:Person); [line 21, column 53]\n n$20=_fun_Person::Person(&0$?%__sil_tmpSIL_materialize_temp__n$4:Person*) [line 21, column 53]\n n$21=_fun_Person::Person(&arr[1][1]:Person*,&0$?%__sil_tmpSIL_materialize_temp__n$4:Person&) [line 21, column 53]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$4:Person [line 21, column 61]\n n$6=_fun_Person::~Person(&0$?%__sil_tmpSIL_materialize_temp__n$4:Person*) injected [line 21, column 61]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$3:Person [line 21, column 61]\n n$8=_fun_Person::~Person(&0$?%__sil_tmpSIL_materialize_temp__n$3:Person*) injected [line 21, column 61]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$2:Person [line 21, column 61]\n n$10=_fun_Person::~Person(&0$?%__sil_tmpSIL_materialize_temp__n$2:Person*) injected [line 21, column 61]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$1:Person [line 21, column 61]\n n$12=_fun_Person::~Person(&0$?%__sil_tmpSIL_materialize_temp__n$1:Person*) injected [line 21, column 61]\n EXIT_SCOPE(_,_,_,_,n$6,n$8,n$10,n$12,n$14,n$15,n$16,n$17,n$18,n$19,n$20,n$21,0$?%__sil_tmpSIL_materialize_temp__n$3,0$?%__sil_tmpSIL_materialize_temp__n$4,0$?%__sil_tmpSIL_materialize_temp__n$2,0$?%__sil_tmpSIL_materialize_temp__n$1); [line 21, column 61]\n " shape="box"] "matrix_of_person#2881910427017022824.27f7f148c4911c13b3061cef6fe2673d_4" -> "matrix_of_person#2881910427017022824.27f7f148c4911c13b3061cef6fe2673d_3" ; diff --git a/infer/tests/codetoanalyze/cpp/shared/constructors/copy_move_constructor.cpp.dot b/infer/tests/codetoanalyze/cpp/shared/constructors/copy_move_constructor.cpp.dot index e7d1e653f..b29557a11 100644 --- a/infer/tests/codetoanalyze/cpp/shared/constructors/copy_move_constructor.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/shared/constructors/copy_move_constructor.cpp.dot @@ -34,15 +34,15 @@ digraph cfg { "copyX_moveX_div1#copy_move_constructor#6853813819184662211.00e91897e7d9fcfa93de911bba9a1399_3" -> "copyX_moveX_div1#copy_move_constructor#6853813819184662211.00e91897e7d9fcfa93de911bba9a1399_2" ; -"copyX_moveX_div1#copy_move_constructor#6853813819184662211.00e91897e7d9fcfa93de911bba9a1399_4" [label="4: DeclStmt \n VARIABLE_DECLARED(d2:int); [line 68, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$7:copy_move_constructor::X); [line 68, column 16]\n n$9=_fun_copy_move_constructor::getX(1:int,&0$?%__sil_tmpSIL_materialize_temp__n$7:copy_move_constructor::X*) assign_last [line 68, column 16]\n n$10=*&0$?%__sil_tmpSIL_materialize_temp__n$7.f:int [line 68, column 16]\n *&d2:int=(1 / n$10) [line 68, column 3]\n EXIT_SCOPE(n$9,n$10,0$?%__sil_tmpSIL_materialize_temp__n$7); [line 68, column 3]\n " shape="box"] +"copyX_moveX_div1#copy_move_constructor#6853813819184662211.00e91897e7d9fcfa93de911bba9a1399_4" [label="4: DeclStmt \n VARIABLE_DECLARED(d2:int); [line 68, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$7:copy_move_constructor::X); [line 68, column 16]\n n$12=_fun_copy_move_constructor::getX(1:int,&0$?%__sil_tmpSIL_materialize_temp__n$7:copy_move_constructor::X*) assign_last [line 68, column 16]\n n$13=*&0$?%__sil_tmpSIL_materialize_temp__n$7.f:int [line 68, column 16]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$7:copy_move_constructor::X [line 68, column 24]\n n$9=_fun_copy_move_constructor::X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$7:copy_move_constructor::X*) injected [line 68, column 24]\n *&d2:int=(1 / n$13) [line 68, column 3]\n EXIT_SCOPE(_,n$9,n$12,n$13,0$?%__sil_tmpSIL_materialize_temp__n$7); [line 68, column 3]\n " shape="box"] "copyX_moveX_div1#copy_move_constructor#6853813819184662211.00e91897e7d9fcfa93de911bba9a1399_4" -> "copyX_moveX_div1#copy_move_constructor#6853813819184662211.00e91897e7d9fcfa93de911bba9a1399_3" ; -"copyX_moveX_div1#copy_move_constructor#6853813819184662211.00e91897e7d9fcfa93de911bba9a1399_5" [label="5: DeclStmt \n VARIABLE_DECLARED(d1:int); [line 67, column 3]\n n$11=*&x2.f:int [line 67, column 16]\n *&d1:int=(1 / n$11) [line 67, column 3]\n EXIT_SCOPE(n$11); [line 67, column 3]\n " shape="box"] +"copyX_moveX_div1#copy_move_constructor#6853813819184662211.00e91897e7d9fcfa93de911bba9a1399_5" [label="5: DeclStmt \n VARIABLE_DECLARED(d1:int); [line 67, column 3]\n n$14=*&x2.f:int [line 67, column 16]\n *&d1:int=(1 / n$14) [line 67, column 3]\n EXIT_SCOPE(n$14); [line 67, column 3]\n " shape="box"] "copyX_moveX_div1#copy_move_constructor#6853813819184662211.00e91897e7d9fcfa93de911bba9a1399_5" -> "copyX_moveX_div1#copy_move_constructor#6853813819184662211.00e91897e7d9fcfa93de911bba9a1399_4" ; -"copyX_moveX_div1#copy_move_constructor#6853813819184662211.00e91897e7d9fcfa93de911bba9a1399_6" [label="6: DeclStmt \n VARIABLE_DECLARED(x2:copy_move_constructor::X); [line 66, column 3]\n n$12=_fun_copy_move_constructor::X::X(&x2:copy_move_constructor::X*,&x1:copy_move_constructor::X&) [line 66, column 10]\n EXIT_SCOPE(n$12); [line 66, column 10]\n " shape="box"] +"copyX_moveX_div1#copy_move_constructor#6853813819184662211.00e91897e7d9fcfa93de911bba9a1399_6" [label="6: DeclStmt \n VARIABLE_DECLARED(x2:copy_move_constructor::X); [line 66, column 3]\n n$15=_fun_copy_move_constructor::X::X(&x2:copy_move_constructor::X*,&x1:copy_move_constructor::X&) [line 66, column 10]\n EXIT_SCOPE(n$15); [line 66, column 10]\n " shape="box"] "copyX_moveX_div1#copy_move_constructor#6853813819184662211.00e91897e7d9fcfa93de911bba9a1399_6" -> "copyX_moveX_div1#copy_move_constructor#6853813819184662211.00e91897e7d9fcfa93de911bba9a1399_5" ; @@ -50,7 +50,7 @@ digraph cfg { "copyX_moveX_div1#copy_move_constructor#6853813819184662211.00e91897e7d9fcfa93de911bba9a1399_7" -> "copyX_moveX_div1#copy_move_constructor#6853813819184662211.00e91897e7d9fcfa93de911bba9a1399_6" ; -"copyX_moveX_div1#copy_move_constructor#6853813819184662211.00e91897e7d9fcfa93de911bba9a1399_8" [label="8: DeclStmt \n VARIABLE_DECLARED(x1:copy_move_constructor::X); [line 64, column 3]\n n$13=_fun_copy_move_constructor::X::X(&x1:copy_move_constructor::X*) [line 64, column 5]\n EXIT_SCOPE(n$13); [line 64, column 5]\n " shape="box"] +"copyX_moveX_div1#copy_move_constructor#6853813819184662211.00e91897e7d9fcfa93de911bba9a1399_8" [label="8: DeclStmt \n VARIABLE_DECLARED(x1:copy_move_constructor::X); [line 64, column 3]\n n$16=_fun_copy_move_constructor::X::X(&x1:copy_move_constructor::X*) [line 64, column 5]\n EXIT_SCOPE(n$16); [line 64, column 5]\n " shape="box"] "copyX_moveX_div1#copy_move_constructor#6853813819184662211.00e91897e7d9fcfa93de911bba9a1399_8" -> "copyX_moveX_div1#copy_move_constructor#6853813819184662211.00e91897e7d9fcfa93de911bba9a1399_7" ; @@ -88,15 +88,15 @@ digraph cfg { "copyY_moveY_div1#copy_move_constructor#5827233588222911615.5716e8b7acbd3ff43f18c7c5954c6565_3" -> "copyY_moveY_div1#copy_move_constructor#5827233588222911615.5716e8b7acbd3ff43f18c7c5954c6565_2" ; -"copyY_moveY_div1#copy_move_constructor#5827233588222911615.5716e8b7acbd3ff43f18c7c5954c6565_4" [label="4: DeclStmt \n VARIABLE_DECLARED(d2:int); [line 77, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$7:copy_move_constructor::Y); [line 77, column 16]\n n$9=_fun_copy_move_constructor::getY(2:int,&0$?%__sil_tmpSIL_materialize_temp__n$7:copy_move_constructor::Y*) assign_last [line 77, column 16]\n n$10=*&0$?%__sil_tmpSIL_materialize_temp__n$7.f:int [line 77, column 16]\n *&d2:int=(1 / n$10) [line 77, column 3]\n EXIT_SCOPE(n$9,n$10,0$?%__sil_tmpSIL_materialize_temp__n$7); [line 77, column 3]\n " shape="box"] +"copyY_moveY_div1#copy_move_constructor#5827233588222911615.5716e8b7acbd3ff43f18c7c5954c6565_4" [label="4: DeclStmt \n VARIABLE_DECLARED(d2:int); [line 77, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$7:copy_move_constructor::Y); [line 77, column 16]\n n$12=_fun_copy_move_constructor::getY(2:int,&0$?%__sil_tmpSIL_materialize_temp__n$7:copy_move_constructor::Y*) assign_last [line 77, column 16]\n n$13=*&0$?%__sil_tmpSIL_materialize_temp__n$7.f:int [line 77, column 16]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$7:copy_move_constructor::Y [line 77, column 24]\n n$9=_fun_copy_move_constructor::Y::~Y(&0$?%__sil_tmpSIL_materialize_temp__n$7:copy_move_constructor::Y*) injected [line 77, column 24]\n *&d2:int=(1 / n$13) [line 77, column 3]\n EXIT_SCOPE(_,n$9,n$12,n$13,0$?%__sil_tmpSIL_materialize_temp__n$7); [line 77, column 3]\n " shape="box"] "copyY_moveY_div1#copy_move_constructor#5827233588222911615.5716e8b7acbd3ff43f18c7c5954c6565_4" -> "copyY_moveY_div1#copy_move_constructor#5827233588222911615.5716e8b7acbd3ff43f18c7c5954c6565_3" ; -"copyY_moveY_div1#copy_move_constructor#5827233588222911615.5716e8b7acbd3ff43f18c7c5954c6565_5" [label="5: DeclStmt \n VARIABLE_DECLARED(d1:int); [line 76, column 3]\n n$11=*&y2.f:int [line 76, column 16]\n *&d1:int=(1 / n$11) [line 76, column 3]\n EXIT_SCOPE(n$11); [line 76, column 3]\n " shape="box"] +"copyY_moveY_div1#copy_move_constructor#5827233588222911615.5716e8b7acbd3ff43f18c7c5954c6565_5" [label="5: DeclStmt \n VARIABLE_DECLARED(d1:int); [line 76, column 3]\n n$14=*&y2.f:int [line 76, column 16]\n *&d1:int=(1 / n$14) [line 76, column 3]\n EXIT_SCOPE(n$14); [line 76, column 3]\n " shape="box"] "copyY_moveY_div1#copy_move_constructor#5827233588222911615.5716e8b7acbd3ff43f18c7c5954c6565_5" -> "copyY_moveY_div1#copy_move_constructor#5827233588222911615.5716e8b7acbd3ff43f18c7c5954c6565_4" ; -"copyY_moveY_div1#copy_move_constructor#5827233588222911615.5716e8b7acbd3ff43f18c7c5954c6565_6" [label="6: DeclStmt \n VARIABLE_DECLARED(y2:copy_move_constructor::Y); [line 75, column 3]\n n$12=_fun_copy_move_constructor::Y::Y(&y2:copy_move_constructor::Y*,&y1:copy_move_constructor::Y&) [line 75, column 10]\n EXIT_SCOPE(n$12); [line 75, column 10]\n " shape="box"] +"copyY_moveY_div1#copy_move_constructor#5827233588222911615.5716e8b7acbd3ff43f18c7c5954c6565_6" [label="6: DeclStmt \n VARIABLE_DECLARED(y2:copy_move_constructor::Y); [line 75, column 3]\n n$15=_fun_copy_move_constructor::Y::Y(&y2:copy_move_constructor::Y*,&y1:copy_move_constructor::Y&) [line 75, column 10]\n EXIT_SCOPE(n$15); [line 75, column 10]\n " shape="box"] "copyY_moveY_div1#copy_move_constructor#5827233588222911615.5716e8b7acbd3ff43f18c7c5954c6565_6" -> "copyY_moveY_div1#copy_move_constructor#5827233588222911615.5716e8b7acbd3ff43f18c7c5954c6565_5" ; @@ -104,7 +104,7 @@ digraph cfg { "copyY_moveY_div1#copy_move_constructor#5827233588222911615.5716e8b7acbd3ff43f18c7c5954c6565_7" -> "copyY_moveY_div1#copy_move_constructor#5827233588222911615.5716e8b7acbd3ff43f18c7c5954c6565_6" ; -"copyY_moveY_div1#copy_move_constructor#5827233588222911615.5716e8b7acbd3ff43f18c7c5954c6565_8" [label="8: DeclStmt \n VARIABLE_DECLARED(y1:copy_move_constructor::Y); [line 73, column 3]\n n$13=_fun_copy_move_constructor::Y::Y(&y1:copy_move_constructor::Y*) [line 73, column 5]\n EXIT_SCOPE(n$13); [line 73, column 5]\n " shape="box"] +"copyY_moveY_div1#copy_move_constructor#5827233588222911615.5716e8b7acbd3ff43f18c7c5954c6565_8" [label="8: DeclStmt \n VARIABLE_DECLARED(y1:copy_move_constructor::Y); [line 73, column 3]\n n$16=_fun_copy_move_constructor::Y::Y(&y1:copy_move_constructor::Y*) [line 73, column 5]\n EXIT_SCOPE(n$16); [line 73, column 5]\n " shape="box"] "copyY_moveY_div1#copy_move_constructor#5827233588222911615.5716e8b7acbd3ff43f18c7c5954c6565_8" -> "copyY_moveY_div1#copy_move_constructor#5827233588222911615.5716e8b7acbd3ff43f18c7c5954c6565_7" ; @@ -153,7 +153,7 @@ digraph cfg { "moveX_div0#copy_move_constructor#2229557375196326562.f23c95e594ab41ba50090dccb989c3e3_2" [label="2: Exit copy_move_constructor::moveX_div0 \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$0); [line 46, column 42]\n " color=yellow style=filled] -"moveX_div0#copy_move_constructor#2229557375196326562.f23c95e594ab41ba50090dccb989c3e3_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:copy_move_constructor::X); [line 46, column 31]\n n$2=_fun_copy_move_constructor::getX(0:int,&0$?%__sil_tmpSIL_materialize_temp__n$0:copy_move_constructor::X*) assign_last [line 46, column 31]\n n$3=*&0$?%__sil_tmpSIL_materialize_temp__n$0.f:int [line 46, column 31]\n *&return:int=(1 / n$3) [line 46, column 20]\n EXIT_SCOPE(n$2,n$3,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 46, column 20]\n APPLY_ABSTRACTION; [line 46, column 20]\n " shape="box"] +"moveX_div0#copy_move_constructor#2229557375196326562.f23c95e594ab41ba50090dccb989c3e3_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:copy_move_constructor::X); [line 46, column 31]\n n$5=_fun_copy_move_constructor::getX(0:int,&0$?%__sil_tmpSIL_materialize_temp__n$0:copy_move_constructor::X*) assign_last [line 46, column 31]\n n$6=*&0$?%__sil_tmpSIL_materialize_temp__n$0.f:int [line 46, column 31]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:copy_move_constructor::X [line 46, column 39]\n n$2=_fun_copy_move_constructor::X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$0:copy_move_constructor::X*) injected [line 46, column 39]\n *&return:int=(1 / n$6) [line 46, column 20]\n EXIT_SCOPE(_,n$2,n$5,n$6,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 46, column 20]\n APPLY_ABSTRACTION; [line 46, column 20]\n " shape="box"] "moveX_div0#copy_move_constructor#2229557375196326562.f23c95e594ab41ba50090dccb989c3e3_3" -> "moveX_div0#copy_move_constructor#2229557375196326562.f23c95e594ab41ba50090dccb989c3e3_2" ; @@ -164,7 +164,7 @@ digraph cfg { "moveY_div0#copy_move_constructor#15307842160732522395.eee7693240d3ce27d5c30f34d771cb57_2" [label="2: Exit copy_move_constructor::moveY_div0 \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$0); [line 55, column 42]\n " color=yellow style=filled] -"moveY_div0#copy_move_constructor#15307842160732522395.eee7693240d3ce27d5c30f34d771cb57_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:copy_move_constructor::Y); [line 55, column 31]\n n$2=_fun_copy_move_constructor::getY(1:int,&0$?%__sil_tmpSIL_materialize_temp__n$0:copy_move_constructor::Y*) assign_last [line 55, column 31]\n n$3=*&0$?%__sil_tmpSIL_materialize_temp__n$0.f:int [line 55, column 31]\n *&return:int=(1 / n$3) [line 55, column 20]\n EXIT_SCOPE(n$2,n$3,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 55, column 20]\n APPLY_ABSTRACTION; [line 55, column 20]\n " shape="box"] +"moveY_div0#copy_move_constructor#15307842160732522395.eee7693240d3ce27d5c30f34d771cb57_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:copy_move_constructor::Y); [line 55, column 31]\n n$5=_fun_copy_move_constructor::getY(1:int,&0$?%__sil_tmpSIL_materialize_temp__n$0:copy_move_constructor::Y*) assign_last [line 55, column 31]\n n$6=*&0$?%__sil_tmpSIL_materialize_temp__n$0.f:int [line 55, column 31]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:copy_move_constructor::Y [line 55, column 39]\n n$2=_fun_copy_move_constructor::Y::~Y(&0$?%__sil_tmpSIL_materialize_temp__n$0:copy_move_constructor::Y*) injected [line 55, column 39]\n *&return:int=(1 / n$6) [line 55, column 20]\n EXIT_SCOPE(_,n$2,n$5,n$6,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 55, column 20]\n APPLY_ABSTRACTION; [line 55, column 20]\n " shape="box"] "moveY_div0#copy_move_constructor#15307842160732522395.eee7693240d3ce27d5c30f34d771cb57_3" -> "moveY_div0#copy_move_constructor#15307842160732522395.eee7693240d3ce27d5c30f34d771cb57_2" ; @@ -183,7 +183,7 @@ digraph cfg { "moveY_moveY_copyY_div0#copy_move_constructor#11319351724516006746.d5d5d96d98dcf1c634b647be30001d2e_4" -> "moveY_moveY_copyY_div0#copy_move_constructor#11319351724516006746.d5d5d96d98dcf1c634b647be30001d2e_3" ; -"moveY_moveY_copyY_div0#copy_move_constructor#11319351724516006746.d5d5d96d98dcf1c634b647be30001d2e_5" [label="5: DeclStmt \n VARIABLE_DECLARED(y1:copy_move_constructor::Y); [line 58, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$7:copy_move_constructor::Y const ); [line 58, column 10]\n n$9=_fun_copy_move_constructor::getY(2:int,&0$?%__sil_tmpSIL_materialize_temp__n$7:copy_move_constructor::Y*) assign_last [line 58, column 10]\n n$10=_fun_copy_move_constructor::Y::Y(&y1:copy_move_constructor::Y*,&0$?%__sil_tmpSIL_materialize_temp__n$7:copy_move_constructor::Y const &) [line 58, column 10]\n EXIT_SCOPE(n$9,n$10,0$?%__sil_tmpSIL_materialize_temp__n$7); [line 58, column 10]\n " shape="box"] +"moveY_moveY_copyY_div0#copy_move_constructor#11319351724516006746.d5d5d96d98dcf1c634b647be30001d2e_5" [label="5: DeclStmt \n VARIABLE_DECLARED(y1:copy_move_constructor::Y); [line 58, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$7:copy_move_constructor::Y const ); [line 58, column 10]\n n$12=_fun_copy_move_constructor::getY(2:int,&0$?%__sil_tmpSIL_materialize_temp__n$7:copy_move_constructor::Y*) assign_last [line 58, column 10]\n n$13=_fun_copy_move_constructor::Y::Y(&y1:copy_move_constructor::Y*,&0$?%__sil_tmpSIL_materialize_temp__n$7:copy_move_constructor::Y const &) [line 58, column 10]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$7:copy_move_constructor::Y const [line 58, column 16]\n n$9=_fun_copy_move_constructor::Y::~Y(&0$?%__sil_tmpSIL_materialize_temp__n$7:copy_move_constructor::Y const *) injected [line 58, column 16]\n EXIT_SCOPE(_,n$9,n$12,n$13,0$?%__sil_tmpSIL_materialize_temp__n$7); [line 58, column 16]\n " shape="box"] "moveY_moveY_copyY_div0#copy_move_constructor#11319351724516006746.d5d5d96d98dcf1c634b647be30001d2e_5" -> "moveY_moveY_copyY_div0#copy_move_constructor#11319351724516006746.d5d5d96d98dcf1c634b647be30001d2e_4" ; diff --git a/infer/tests/codetoanalyze/cpp/shared/constructors/temp_object.cpp.dot b/infer/tests/codetoanalyze/cpp/shared/constructors/temp_object.cpp.dot index 960e6d580..1ed9325a1 100644 --- a/infer/tests/codetoanalyze/cpp/shared/constructors/temp_object.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/shared/constructors/temp_object.cpp.dot @@ -11,7 +11,7 @@ digraph cfg { "assign_temp_div0#temp_object#6618523570396537240.fa2055065ca23850cee50c855993cd3a_3" -> "assign_temp_div0#temp_object#6618523570396537240.fa2055065ca23850cee50c855993cd3a_2" ; -"assign_temp_div0#temp_object#6618523570396537240.fa2055065ca23850cee50c855993cd3a_4" [label="4: DeclStmt \n VARIABLE_DECLARED(x:temp_object::X); [line 27, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$5:temp_object::X const ); [line 27, column 9]\n n$6=_fun_temp_object::X::X(&0$?%__sil_tmpSIL_materialize_temp__n$5:temp_object::X const *,0:int,1:int) [line 27, column 9]\n n$7=_fun_temp_object::X::X(&x:temp_object::X*,&0$?%__sil_tmpSIL_materialize_temp__n$5:temp_object::X const &) [line 27, column 9]\n EXIT_SCOPE(n$6,n$7,0$?%__sil_tmpSIL_materialize_temp__n$5); [line 27, column 9]\n " shape="box"] +"assign_temp_div0#temp_object#6618523570396537240.fa2055065ca23850cee50c855993cd3a_4" [label="4: DeclStmt \n VARIABLE_DECLARED(x:temp_object::X); [line 27, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$5:temp_object::X const ); [line 27, column 9]\n n$9=_fun_temp_object::X::X(&0$?%__sil_tmpSIL_materialize_temp__n$5:temp_object::X const *,0:int,1:int) [line 27, column 9]\n n$10=_fun_temp_object::X::X(&x:temp_object::X*,&0$?%__sil_tmpSIL_materialize_temp__n$5:temp_object::X const &) [line 27, column 9]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$5:temp_object::X const [line 27, column 15]\n n$7=_fun_temp_object::X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$5:temp_object::X const *) injected [line 27, column 15]\n EXIT_SCOPE(_,n$7,n$9,n$10,0$?%__sil_tmpSIL_materialize_temp__n$5); [line 27, column 15]\n " shape="box"] "assign_temp_div0#temp_object#6618523570396537240.fa2055065ca23850cee50c855993cd3a_4" -> "assign_temp_div0#temp_object#6618523570396537240.fa2055065ca23850cee50c855993cd3a_3" ; @@ -33,7 +33,7 @@ digraph cfg { "getX#temp_object(class temp_object::X)#4720444219866178245.c6d7bacbd2aa751dffef569ff17890e7_2" [label="2: Exit temp_object::getX \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$1); [line 24, column 40]\n " color=yellow style=filled] -"getX#temp_object(class temp_object::X)#4720444219866178245.c6d7bacbd2aa751dffef569ff17890e7_3" [label="3: Return Stmt \n n$0=*&__return_param:temp_object::X* [line 24, column 24]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:temp_object::X const ); [line 24, column 31]\n n$2=*&a:int [line 24, column 33]\n n$3=*&b:int [line 24, column 36]\n n$4=_fun_temp_object::X::X(&0$?%__sil_tmpSIL_materialize_temp__n$1:temp_object::X const *,n$2:int,n$3:int) [line 24, column 31]\n n$5=_fun_temp_object::X::X(n$0:temp_object::X*,&0$?%__sil_tmpSIL_materialize_temp__n$1:temp_object::X const &) [line 24, column 31]\n NULLIFY(&a); [line 24, column 31]\n NULLIFY(&b); [line 24, column 31]\n NULLIFY(&__return_param); [line 24, column 31]\n EXIT_SCOPE(n$0,n$2,n$3,n$4,n$5,a,b,__return_param,0$?%__sil_tmpSIL_materialize_temp__n$1); [line 24, column 31]\n APPLY_ABSTRACTION; [line 24, column 31]\n " shape="box"] +"getX#temp_object(class temp_object::X)#4720444219866178245.c6d7bacbd2aa751dffef569ff17890e7_3" [label="3: Return Stmt \n n$0=*&__return_param:temp_object::X* [line 24, column 24]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:temp_object::X const ); [line 24, column 31]\n n$5=*&a:int [line 24, column 33]\n n$6=*&b:int [line 24, column 36]\n n$7=_fun_temp_object::X::X(&0$?%__sil_tmpSIL_materialize_temp__n$1:temp_object::X const *,n$5:int,n$6:int) [line 24, column 31]\n n$8=_fun_temp_object::X::X(n$0:temp_object::X*,&0$?%__sil_tmpSIL_materialize_temp__n$1:temp_object::X const &) [line 24, column 31]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$1:temp_object::X const [line 24, column 37]\n n$3=_fun_temp_object::X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$1:temp_object::X const *) injected [line 24, column 37]\n NULLIFY(&a); [line 24, column 37]\n NULLIFY(&b); [line 24, column 37]\n NULLIFY(&__return_param); [line 24, column 37]\n EXIT_SCOPE(_,n$0,n$3,n$5,n$6,n$7,n$8,a,b,__return_param,0$?%__sil_tmpSIL_materialize_temp__n$1); [line 24, column 37]\n APPLY_ABSTRACTION; [line 24, column 37]\n " shape="box"] "getX#temp_object(class temp_object::X)#4720444219866178245.c6d7bacbd2aa751dffef569ff17890e7_3" -> "getX#temp_object(class temp_object::X)#4720444219866178245.c6d7bacbd2aa751dffef569ff17890e7_2" ; @@ -44,7 +44,7 @@ digraph cfg { "getX_field_div0#temp_object#12698122843139253036.854c4a3940ca05110785248e1303db49_2" [label="2: Exit temp_object::getX_field_div0 \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$0); [line 37, column 51]\n " color=yellow style=filled] -"getX_field_div0#temp_object#12698122843139253036.854c4a3940ca05110785248e1303db49_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X); [line 37, column 36]\n n$2=_fun_temp_object::getX(0:int,1:int,&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X*) assign_last [line 37, column 36]\n n$3=*&0$?%__sil_tmpSIL_materialize_temp__n$0.f:int [line 37, column 36]\n n$4=_fun_temp_object::div(n$3:int) [line 37, column 32]\n *&return:int=n$4 [line 37, column 25]\n EXIT_SCOPE(n$2,n$3,n$4,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 37, column 25]\n APPLY_ABSTRACTION; [line 37, column 25]\n " shape="box"] +"getX_field_div0#temp_object#12698122843139253036.854c4a3940ca05110785248e1303db49_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X); [line 37, column 36]\n n$5=_fun_temp_object::getX(0:int,1:int,&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X*) assign_last [line 37, column 36]\n n$6=*&0$?%__sil_tmpSIL_materialize_temp__n$0.f:int [line 37, column 36]\n n$7=_fun_temp_object::div(n$6:int) [line 37, column 32]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X [line 37, column 48]\n n$2=_fun_temp_object::X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X*) injected [line 37, column 48]\n *&return:int=n$7 [line 37, column 25]\n EXIT_SCOPE(_,n$2,n$5,n$6,n$7,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 37, column 25]\n APPLY_ABSTRACTION; [line 37, column 25]\n " shape="box"] "getX_field_div0#temp_object#12698122843139253036.854c4a3940ca05110785248e1303db49_3" -> "getX_field_div0#temp_object#12698122843139253036.854c4a3940ca05110785248e1303db49_2" ; @@ -55,7 +55,7 @@ digraph cfg { "getX_field_div1#temp_object#11953596240866039963.ee557e5aaabf95f2c8b1284adfc7249e_2" [label="2: Exit temp_object::getX_field_div1 \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$0); [line 43, column 51]\n " color=yellow style=filled] -"getX_field_div1#temp_object#11953596240866039963.ee557e5aaabf95f2c8b1284adfc7249e_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X); [line 43, column 36]\n n$2=_fun_temp_object::getX(1:int,0:int,&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X*) assign_last [line 43, column 36]\n n$3=*&0$?%__sil_tmpSIL_materialize_temp__n$0.f:int [line 43, column 36]\n n$4=_fun_temp_object::div(n$3:int) [line 43, column 32]\n *&return:int=n$4 [line 43, column 25]\n EXIT_SCOPE(n$2,n$3,n$4,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 43, column 25]\n APPLY_ABSTRACTION; [line 43, column 25]\n " shape="box"] +"getX_field_div1#temp_object#11953596240866039963.ee557e5aaabf95f2c8b1284adfc7249e_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X); [line 43, column 36]\n n$5=_fun_temp_object::getX(1:int,0:int,&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X*) assign_last [line 43, column 36]\n n$6=*&0$?%__sil_tmpSIL_materialize_temp__n$0.f:int [line 43, column 36]\n n$7=_fun_temp_object::div(n$6:int) [line 43, column 32]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X [line 43, column 48]\n n$2=_fun_temp_object::X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X*) injected [line 43, column 48]\n *&return:int=n$7 [line 43, column 25]\n EXIT_SCOPE(_,n$2,n$5,n$6,n$7,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 43, column 25]\n APPLY_ABSTRACTION; [line 43, column 25]\n " shape="box"] "getX_field_div1#temp_object#11953596240866039963.ee557e5aaabf95f2c8b1284adfc7249e_3" -> "getX_field_div1#temp_object#11953596240866039963.ee557e5aaabf95f2c8b1284adfc7249e_2" ; @@ -66,7 +66,7 @@ digraph cfg { "getX_method_div0#temp_object#10654710522454889600.9c743f651914acdd07ad2c70becfd89c_2" [label="2: Exit temp_object::getX_method_div0 \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$0); [line 39, column 51]\n " color=yellow style=filled] -"getX_method_div0#temp_object#10654710522454889600.9c743f651914acdd07ad2c70becfd89c_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X); [line 39, column 33]\n n$2=_fun_temp_object::getX(0:int,1:int,&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X*) assign_last [line 39, column 33]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X [line 39, column 33]\n n$4=_fun_temp_object::X::div(&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X&) [line 39, column 33]\n *&return:int=n$4 [line 39, column 26]\n EXIT_SCOPE(_,n$2,n$4,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 39, column 26]\n APPLY_ABSTRACTION; [line 39, column 26]\n " shape="box"] +"getX_method_div0#temp_object#10654710522454889600.9c743f651914acdd07ad2c70becfd89c_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X); [line 39, column 33]\n n$5=_fun_temp_object::getX(0:int,1:int,&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X*) assign_last [line 39, column 33]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X [line 39, column 33]\n n$7=_fun_temp_object::X::div(&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X&) [line 39, column 33]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X [line 39, column 48]\n n$2=_fun_temp_object::X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X*) injected [line 39, column 48]\n *&return:int=n$7 [line 39, column 26]\n EXIT_SCOPE(_,_,n$2,n$5,n$7,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 39, column 26]\n APPLY_ABSTRACTION; [line 39, column 26]\n " shape="box"] "getX_method_div0#temp_object#10654710522454889600.9c743f651914acdd07ad2c70becfd89c_3" -> "getX_method_div0#temp_object#10654710522454889600.9c743f651914acdd07ad2c70becfd89c_2" ; @@ -77,7 +77,7 @@ digraph cfg { "temp_field2_div0#temp_object#17763200808338657027.dd874be310bbf8e78129b073d73ad49f_2" [label="2: Exit temp_object::temp_field2_div0 \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$0); [line 33, column 46]\n " color=yellow style=filled] -"temp_field2_div0#temp_object#17763200808338657027.dd874be310bbf8e78129b073d73ad49f_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X); [line 33, column 37]\n n$1=_fun_temp_object::X::X(&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X*,0:int) [line 33, column 37]\n n$2=*&0$?%__sil_tmpSIL_materialize_temp__n$0.f:int [line 33, column 37]\n n$3=_fun_temp_object::div(n$2:int) [line 33, column 33]\n *&return:int=n$3 [line 33, column 26]\n EXIT_SCOPE(n$1,n$2,n$3,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 33, column 26]\n APPLY_ABSTRACTION; [line 33, column 26]\n " shape="box"] +"temp_field2_div0#temp_object#17763200808338657027.dd874be310bbf8e78129b073d73ad49f_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X); [line 33, column 37]\n n$4=_fun_temp_object::X::X(&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X*,0:int) [line 33, column 37]\n n$5=*&0$?%__sil_tmpSIL_materialize_temp__n$0.f:int [line 33, column 37]\n n$6=_fun_temp_object::div(n$5:int) [line 33, column 33]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X [line 33, column 43]\n n$2=_fun_temp_object::X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X*) injected [line 33, column 43]\n *&return:int=n$6 [line 33, column 26]\n EXIT_SCOPE(_,n$2,n$4,n$5,n$6,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 33, column 26]\n APPLY_ABSTRACTION; [line 33, column 26]\n " shape="box"] "temp_field2_div0#temp_object#17763200808338657027.dd874be310bbf8e78129b073d73ad49f_3" -> "temp_field2_div0#temp_object#17763200808338657027.dd874be310bbf8e78129b073d73ad49f_2" ; @@ -88,7 +88,7 @@ digraph cfg { "temp_field_div0#temp_object#15412040659245592666.f5d0fb2d0c8f868e114b6379ad654aef_2" [label="2: Exit temp_object::temp_field_div0 \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$0); [line 31, column 48]\n " color=yellow style=filled] -"temp_field_div0#temp_object#15412040659245592666.f5d0fb2d0c8f868e114b6379ad654aef_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X); [line 31, column 36]\n n$1=_fun_temp_object::X::X(&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X*,0:int,1:int) [line 31, column 36]\n n$2=*&0$?%__sil_tmpSIL_materialize_temp__n$0.f:int [line 31, column 36]\n n$3=_fun_temp_object::div(n$2:int) [line 31, column 32]\n *&return:int=n$3 [line 31, column 25]\n EXIT_SCOPE(n$1,n$2,n$3,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 31, column 25]\n APPLY_ABSTRACTION; [line 31, column 25]\n " shape="box"] +"temp_field_div0#temp_object#15412040659245592666.f5d0fb2d0c8f868e114b6379ad654aef_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X); [line 31, column 36]\n n$4=_fun_temp_object::X::X(&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X*,0:int,1:int) [line 31, column 36]\n n$5=*&0$?%__sil_tmpSIL_materialize_temp__n$0.f:int [line 31, column 36]\n n$6=_fun_temp_object::div(n$5:int) [line 31, column 32]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X [line 31, column 45]\n n$2=_fun_temp_object::X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X*) injected [line 31, column 45]\n *&return:int=n$6 [line 31, column 25]\n EXIT_SCOPE(_,n$2,n$4,n$5,n$6,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 31, column 25]\n APPLY_ABSTRACTION; [line 31, column 25]\n " shape="box"] "temp_field_div0#temp_object#15412040659245592666.f5d0fb2d0c8f868e114b6379ad654aef_3" -> "temp_field_div0#temp_object#15412040659245592666.f5d0fb2d0c8f868e114b6379ad654aef_2" ; @@ -99,7 +99,7 @@ digraph cfg { "temp_field_div1#temp_object#14919979518945721169.463c8bf1b85b2fefc9473e70e135e02d_2" [label="2: Exit temp_object::temp_field_div1 \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$0); [line 41, column 48]\n " color=yellow style=filled] -"temp_field_div1#temp_object#14919979518945721169.463c8bf1b85b2fefc9473e70e135e02d_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X); [line 41, column 36]\n n$1=_fun_temp_object::X::X(&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X*,1:int,0:int) [line 41, column 36]\n n$2=*&0$?%__sil_tmpSIL_materialize_temp__n$0.f:int [line 41, column 36]\n n$3=_fun_temp_object::div(n$2:int) [line 41, column 32]\n *&return:int=n$3 [line 41, column 25]\n EXIT_SCOPE(n$1,n$2,n$3,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 41, column 25]\n APPLY_ABSTRACTION; [line 41, column 25]\n " shape="box"] +"temp_field_div1#temp_object#14919979518945721169.463c8bf1b85b2fefc9473e70e135e02d_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X); [line 41, column 36]\n n$4=_fun_temp_object::X::X(&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X*,1:int,0:int) [line 41, column 36]\n n$5=*&0$?%__sil_tmpSIL_materialize_temp__n$0.f:int [line 41, column 36]\n n$6=_fun_temp_object::div(n$5:int) [line 41, column 32]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X [line 41, column 45]\n n$2=_fun_temp_object::X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X*) injected [line 41, column 45]\n *&return:int=n$6 [line 41, column 25]\n EXIT_SCOPE(_,n$2,n$4,n$5,n$6,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 41, column 25]\n APPLY_ABSTRACTION; [line 41, column 25]\n " shape="box"] "temp_field_div1#temp_object#14919979518945721169.463c8bf1b85b2fefc9473e70e135e02d_3" -> "temp_field_div1#temp_object#14919979518945721169.463c8bf1b85b2fefc9473e70e135e02d_2" ; @@ -110,7 +110,7 @@ digraph cfg { "temp_method_div0#temp_object#17009651611825801298.b27a48cdb872e8bc72f1181813e5d666_2" [label="2: Exit temp_object::temp_method_div0 \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$0); [line 35, column 48]\n " color=yellow style=filled] -"temp_method_div0#temp_object#17009651611825801298.b27a48cdb872e8bc72f1181813e5d666_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X); [line 35, column 33]\n n$1=_fun_temp_object::X::X(&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X*,0:int,1:int) [line 35, column 33]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X [line 35, column 33]\n n$3=_fun_temp_object::X::div(&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X&) [line 35, column 33]\n *&return:int=n$3 [line 35, column 26]\n EXIT_SCOPE(_,n$1,n$3,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 35, column 26]\n APPLY_ABSTRACTION; [line 35, column 26]\n " shape="box"] +"temp_method_div0#temp_object#17009651611825801298.b27a48cdb872e8bc72f1181813e5d666_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X); [line 35, column 33]\n n$4=_fun_temp_object::X::X(&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X*,0:int,1:int) [line 35, column 33]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X [line 35, column 33]\n n$6=_fun_temp_object::X::div(&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X&) [line 35, column 33]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X [line 35, column 45]\n n$2=_fun_temp_object::X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$0:temp_object::X*) injected [line 35, column 45]\n *&return:int=n$6 [line 35, column 26]\n EXIT_SCOPE(_,_,n$2,n$4,n$6,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 35, column 26]\n APPLY_ABSTRACTION; [line 35, column 26]\n " shape="box"] "temp_method_div0#temp_object#17009651611825801298.b27a48cdb872e8bc72f1181813e5d666_3" -> "temp_method_div0#temp_object#17009651611825801298.b27a48cdb872e8bc72f1181813e5d666_2" ; diff --git a/infer/tests/codetoanalyze/cpp/shared/exceptions/Exceptions.cpp.dot b/infer/tests/codetoanalyze/cpp/shared/exceptions/Exceptions.cpp.dot index e2c3b07b4..93636c22f 100644 --- a/infer/tests/codetoanalyze/cpp/shared/exceptions/Exceptions.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/shared/exceptions/Exceptions.cpp.dot @@ -1,114 +1,134 @@ /* @generated */ digraph cfg { -"FN_deref_null_after_catch_bad#4627123003703707696.43441e3badf1bb571cbe770f9d51a51c_1" [label="1: Start FN_deref_null_after_catch_bad\nFormals: i:int*\nLocals: 0$?%__sil_tmp__temp_construct_n$2:std::runtime_error 0$?%__sil_tmpSIL_materialize_temp__n$3:std::runtime_error const \n " color=yellow style=filled] +"FN_deref_null_after_catch_bad#4627123003703707696.43441e3badf1bb571cbe770f9d51a51c_1" [label="1: Start FN_deref_null_after_catch_bad\nFormals: i:int*\nLocals: 0$?%__sil_tmp__temp_construct_n$6:std::runtime_error 0$?%__sil_tmpSIL_materialize_temp__n$2:std::runtime_error const \n " color=yellow style=filled] - "FN_deref_null_after_catch_bad#4627123003703707696.43441e3badf1bb571cbe770f9d51a51c_1" -> "FN_deref_null_after_catch_bad#4627123003703707696.43441e3badf1bb571cbe770f9d51a51c_5" ; -"FN_deref_null_after_catch_bad#4627123003703707696.43441e3badf1bb571cbe770f9d51a51c_2" [label="2: Exit FN_deref_null_after_catch_bad \n NULLIFY(&0$?%__sil_tmp__temp_construct_n$2); [line 53, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$3); [line 53, column 1]\n " color=yellow style=filled] + "FN_deref_null_after_catch_bad#4627123003703707696.43441e3badf1bb571cbe770f9d51a51c_1" -> "FN_deref_null_after_catch_bad#4627123003703707696.43441e3badf1bb571cbe770f9d51a51c_6" ; +"FN_deref_null_after_catch_bad#4627123003703707696.43441e3badf1bb571cbe770f9d51a51c_2" [label="2: Exit FN_deref_null_after_catch_bad \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$2); [line 53, column 1]\n NULLIFY(&0$?%__sil_tmp__temp_construct_n$6); [line 53, column 1]\n " color=yellow style=filled] -"FN_deref_null_after_catch_bad#4627123003703707696.43441e3badf1bb571cbe770f9d51a51c_3" [label="3: Return Stmt \n n$0=*&i:int* [line 52, column 11]\n n$1=*n$0:int [line 52, column 10]\n *&return:int=n$1 [line 52, column 3]\n NULLIFY(&i); [line 52, column 3]\n EXIT_SCOPE(n$0,n$1,i); [line 52, column 3]\n APPLY_ABSTRACTION; [line 52, column 3]\n " shape="box"] +"FN_deref_null_after_catch_bad#4627123003703707696.43441e3badf1bb571cbe770f9d51a51c_3" [label="3: Return Stmt \n n$0=*&i:int* [line 52, column 11]\n n$1=*n$0:int [line 52, column 10]\n *&return:int=n$1 [line 52, column 3]\n NULLIFY(&i); [line 52, column 3]\n EXIT_SCOPE(n$0,n$1,0$?%__sil_tmpSIL_materialize_temp__n$2,i); [line 52, column 3]\n APPLY_ABSTRACTION; [line 52, column 3]\n " shape="box"] "FN_deref_null_after_catch_bad#4627123003703707696.43441e3badf1bb571cbe770f9d51a51c_3" -> "FN_deref_null_after_catch_bad#4627123003703707696.43441e3badf1bb571cbe770f9d51a51c_2" ; -"FN_deref_null_after_catch_bad#4627123003703707696.43441e3badf1bb571cbe770f9d51a51c_4" [label="4: ObjCCPPThrow \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$3:std::runtime_error const ); [line 48, column 11]\n n$4=_fun_std::runtime_error::runtime_error(&0$?%__sil_tmpSIL_materialize_temp__n$3:std::runtime_error const *,\"error\":char const *) [line 48, column 11]\n n$5=_fun_std::runtime_error::runtime_error(&0$?%__sil_tmp__temp_construct_n$2:std::runtime_error*,&0$?%__sil_tmpSIL_materialize_temp__n$3:std::runtime_error const &) [line 48, column 11]\n n$6=_fun___infer_objc_cpp_throw(&0$?%__sil_tmp__temp_construct_n$2:std::runtime_error) [line 48, column 5]\n EXIT_SCOPE(n$4,n$5,n$6,0$?%__sil_tmpSIL_materialize_temp__n$3); [line 48, column 5]\n APPLY_ABSTRACTION; [line 48, column 5]\n " shape="box"] +"FN_deref_null_after_catch_bad#4627123003703707696.43441e3badf1bb571cbe770f9d51a51c_4" [label="4: Destruction(temporaries cleanup) \n _=*&0$?%__sil_tmpSIL_materialize_temp__n$2:std::runtime_error const [line 48, column 37]\n n$4=_fun_std::runtime_error::~runtime_error(&0$?%__sil_tmpSIL_materialize_temp__n$2:std::runtime_error const *) injected virtual [line 48, column 37]\n EXIT_SCOPE(_,n$4,0$?%__sil_tmpSIL_materialize_temp__n$2); [line 48, column 37]\n APPLY_ABSTRACTION; [line 48, column 37]\n " shape="box"] "FN_deref_null_after_catch_bad#4627123003703707696.43441e3badf1bb571cbe770f9d51a51c_4" -> "FN_deref_null_after_catch_bad#4627123003703707696.43441e3badf1bb571cbe770f9d51a51c_3" ; - "FN_deref_null_after_catch_bad#4627123003703707696.43441e3badf1bb571cbe770f9d51a51c_4" -> "FN_deref_null_after_catch_bad#4627123003703707696.43441e3badf1bb571cbe770f9d51a51c_6" [color="red" ]; -"FN_deref_null_after_catch_bad#4627123003703707696.43441e3badf1bb571cbe770f9d51a51c_5" [label="5: BinaryOperatorStmt: Assign \n n$7=*&i:int* [line 47, column 6]\n *n$7:int=2 [line 47, column 5]\n EXIT_SCOPE(n$7); [line 47, column 5]\n " shape="box"] + "FN_deref_null_after_catch_bad#4627123003703707696.43441e3badf1bb571cbe770f9d51a51c_4" -> "FN_deref_null_after_catch_bad#4627123003703707696.43441e3badf1bb571cbe770f9d51a51c_7" [color="red" ]; +"FN_deref_null_after_catch_bad#4627123003703707696.43441e3badf1bb571cbe770f9d51a51c_5" [label="5: ObjCCPPThrow \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$2:std::runtime_error const ); [line 48, column 11]\n n$7=_fun_std::runtime_error::runtime_error(&0$?%__sil_tmpSIL_materialize_temp__n$2:std::runtime_error const *,\"error\":char const *) [line 48, column 11]\n n$8=_fun_std::runtime_error::runtime_error(&0$?%__sil_tmp__temp_construct_n$6:std::runtime_error*,&0$?%__sil_tmpSIL_materialize_temp__n$2:std::runtime_error const &) [line 48, column 11]\n n$9=_fun___infer_objc_cpp_throw(&0$?%__sil_tmp__temp_construct_n$6:std::runtime_error) [line 48, column 5]\n EXIT_SCOPE(n$7,n$8,n$9); [line 48, column 5]\n " shape="box"] "FN_deref_null_after_catch_bad#4627123003703707696.43441e3badf1bb571cbe770f9d51a51c_5" -> "FN_deref_null_after_catch_bad#4627123003703707696.43441e3badf1bb571cbe770f9d51a51c_4" ; -"FN_deref_null_after_catch_bad#4627123003703707696.43441e3badf1bb571cbe770f9d51a51c_6" [label="6: BinaryOperatorStmt: Assign \n *&i:int*=null [line 50, column 5]\n APPLY_ABSTRACTION; [line 50, column 5]\n " shape="box"] +"FN_deref_null_after_catch_bad#4627123003703707696.43441e3badf1bb571cbe770f9d51a51c_6" [label="6: BinaryOperatorStmt: Assign \n n$10=*&i:int* [line 47, column 6]\n *n$10:int=2 [line 47, column 5]\n EXIT_SCOPE(n$10); [line 47, column 5]\n " shape="box"] - "FN_deref_null_after_catch_bad#4627123003703707696.43441e3badf1bb571cbe770f9d51a51c_6" -> "FN_deref_null_after_catch_bad#4627123003703707696.43441e3badf1bb571cbe770f9d51a51c_3" ; -"FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_1" [label="1: Start FN_deref_null_in_catch_bad\nFormals: \nLocals: 0$?%__sil_tmp__temp_construct_n$0:std::runtime_error 0$?%__sil_tmpSIL_materialize_temp__n$1:std::runtime_error const i:int* \n " color=yellow style=filled] + "FN_deref_null_after_catch_bad#4627123003703707696.43441e3badf1bb571cbe770f9d51a51c_6" -> "FN_deref_null_after_catch_bad#4627123003703707696.43441e3badf1bb571cbe770f9d51a51c_5" ; +"FN_deref_null_after_catch_bad#4627123003703707696.43441e3badf1bb571cbe770f9d51a51c_7" [label="7: BinaryOperatorStmt: Assign \n *&i:int*=null [line 50, column 5]\n APPLY_ABSTRACTION; [line 50, column 5]\n " shape="box"] - "FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_1" -> "FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_6" ; -"FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_2" [label="2: Exit FN_deref_null_in_catch_bad \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$1); [line 43, column 1]\n NULLIFY(&0$?%__sil_tmp__temp_construct_n$0); [line 43, column 1]\n " color=yellow style=filled] + "FN_deref_null_after_catch_bad#4627123003703707696.43441e3badf1bb571cbe770f9d51a51c_7" -> "FN_deref_null_after_catch_bad#4627123003703707696.43441e3badf1bb571cbe770f9d51a51c_3" ; +"FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_1" [label="1: Start FN_deref_null_in_catch_bad\nFormals: \nLocals: 0$?%__sil_tmp__temp_construct_n$4:std::runtime_error 0$?%__sil_tmpSIL_materialize_temp__n$0:std::runtime_error const i:int* \n " color=yellow style=filled] -"FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_3" [label="3: Return Stmt \n *&return:int=0 [line 42, column 3]\n NULLIFY(&i); [line 42, column 3]\n EXIT_SCOPE(i); [line 42, column 3]\n APPLY_ABSTRACTION; [line 42, column 3]\n " shape="box"] + "FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_1" -> "FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_7" ; +"FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_2" [label="2: Exit FN_deref_null_in_catch_bad \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$0); [line 43, column 1]\n NULLIFY(&0$?%__sil_tmp__temp_construct_n$4); [line 43, column 1]\n " color=yellow style=filled] + + +"FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_3" [label="3: Return Stmt \n *&return:int=0 [line 42, column 3]\n NULLIFY(&i); [line 42, column 3]\n EXIT_SCOPE(i,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 42, column 3]\n APPLY_ABSTRACTION; [line 42, column 3]\n " shape="box"] "FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_3" -> "FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_2" ; -"FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_4" [label="4: ObjCCPPThrow \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:std::runtime_error const ); [line 38, column 11]\n n$2=_fun_std::runtime_error::runtime_error(&0$?%__sil_tmpSIL_materialize_temp__n$1:std::runtime_error const *,\"error\":char const *) [line 38, column 11]\n n$3=_fun_std::runtime_error::runtime_error(&0$?%__sil_tmp__temp_construct_n$0:std::runtime_error*,&0$?%__sil_tmpSIL_materialize_temp__n$1:std::runtime_error const &) [line 38, column 11]\n n$4=_fun___infer_objc_cpp_throw(&0$?%__sil_tmp__temp_construct_n$0:std::runtime_error) [line 38, column 5]\n EXIT_SCOPE(n$2,n$3,n$4,0$?%__sil_tmpSIL_materialize_temp__n$1); [line 38, column 5]\n " shape="box"] +"FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_4" [label="4: Destruction(temporaries cleanup) \n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:std::runtime_error const [line 38, column 37]\n n$2=_fun_std::runtime_error::~runtime_error(&0$?%__sil_tmpSIL_materialize_temp__n$0:std::runtime_error const *) injected virtual [line 38, column 37]\n EXIT_SCOPE(_,n$2,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 38, column 37]\n APPLY_ABSTRACTION; [line 38, column 37]\n " shape="box"] "FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_4" -> "FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_3" ; - "FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_4" -> "FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_5" [color="red" ]; -"FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_5" [label="5: Return Stmt \n n$5=*&i:int* [line 40, column 13]\n n$6=*n$5:int [line 40, column 12]\n *&return:int=n$6 [line 40, column 5]\n NULLIFY(&i); [line 40, column 5]\n EXIT_SCOPE(n$5,n$6,i); [line 40, column 5]\n APPLY_ABSTRACTION; [line 40, column 5]\n " shape="box"] + "FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_4" -> "FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_6" [color="red" ]; +"FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_5" [label="5: ObjCCPPThrow \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:std::runtime_error const ); [line 38, column 11]\n n$5=_fun_std::runtime_error::runtime_error(&0$?%__sil_tmpSIL_materialize_temp__n$0:std::runtime_error const *,\"error\":char const *) [line 38, column 11]\n n$6=_fun_std::runtime_error::runtime_error(&0$?%__sil_tmp__temp_construct_n$4:std::runtime_error*,&0$?%__sil_tmpSIL_materialize_temp__n$0:std::runtime_error const &) [line 38, column 11]\n n$7=_fun___infer_objc_cpp_throw(&0$?%__sil_tmp__temp_construct_n$4:std::runtime_error) [line 38, column 5]\n EXIT_SCOPE(n$5,n$6,n$7); [line 38, column 5]\n " shape="box"] + + + "FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_5" -> "FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_4" ; +"FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_6" [label="6: Return Stmt \n n$8=*&i:int* [line 40, column 13]\n n$9=*n$8:int [line 40, column 12]\n *&return:int=n$9 [line 40, column 5]\n NULLIFY(&i); [line 40, column 5]\n EXIT_SCOPE(n$8,n$9,i); [line 40, column 5]\n APPLY_ABSTRACTION; [line 40, column 5]\n " shape="box"] - "FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_5" -> "FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_2" ; -"FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_6" [label="6: DeclStmt \n VARIABLE_DECLARED(i:int*); [line 36, column 3]\n *&i:int*=null [line 36, column 3]\n " shape="box"] + "FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_6" -> "FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_2" ; +"FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_7" [label="7: DeclStmt \n VARIABLE_DECLARED(i:int*); [line 36, column 3]\n *&i:int*=null [line 36, column 3]\n " shape="box"] - "FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_6" -> "FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_4" ; -"FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_1" [label="1: Start FN_multiple_catches_bad\nFormals: b:_Bool\nLocals: 0$?%__sil_tmp__temp_construct_n$1:std::length_error 0$?%__sil_tmpSIL_materialize_temp__n$2:std::length_error const 0$?%__sil_tmp__temp_construct_n$6:std::range_error 0$?%__sil_tmpSIL_materialize_temp__n$7:std::range_error const j:int* i:int* \n " color=yellow style=filled] + "FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_7" -> "FN_deref_null_in_catch_bad#9297890526029657977.c83eec7c9ab8ce2e38ddbc08f8c3dfeb_5" ; +"FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_1" [label="1: Start FN_multiple_catches_bad\nFormals: b:_Bool\nLocals: 0$?%__sil_tmp__temp_construct_n$5:std::length_error 0$?%__sil_tmpSIL_materialize_temp__n$1:std::length_error const 0$?%__sil_tmp__temp_construct_n$13:std::range_error 0$?%__sil_tmpSIL_materialize_temp__n$9:std::range_error const j:int* i:int* \n " color=yellow style=filled] - "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_1" -> "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_12" ; -"FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_2" [label="2: Exit FN_multiple_catches_bad \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$7); [line 70, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$2); [line 70, column 1]\n NULLIFY(&0$?%__sil_tmp__temp_construct_n$6); [line 70, column 1]\n NULLIFY(&0$?%__sil_tmp__temp_construct_n$1); [line 70, column 1]\n " color=yellow style=filled] + "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_1" -> "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_14" ; +"FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_2" [label="2: Exit FN_multiple_catches_bad \n NULLIFY(&0$?%__sil_tmp__temp_construct_n$5); [line 70, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$1); [line 70, column 1]\n NULLIFY(&0$?%__sil_tmp__temp_construct_n$13); [line 70, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$9); [line 70, column 1]\n " color=yellow style=filled] "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_3" [label="3: Return Stmt \n *&return:int=0 [line 69, column 3]\n NULLIFY(&i); [line 69, column 3]\n NULLIFY(&j); [line 69, column 3]\n EXIT_SCOPE(i,j); [line 69, column 3]\n APPLY_ABSTRACTION; [line 69, column 3]\n " shape="box"] "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_3" -> "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_2" ; -"FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_4" [label="4: + \n " ] +"FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_4" [label="4: + \n EXIT_SCOPE(0$?%__sil_tmpSIL_materialize_temp__n$9,0$?%__sil_tmpSIL_materialize_temp__n$1); [line 59, column 5]\n " ] "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_4" -> "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_3" ; - "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_4" -> "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_10" [color="red" ]; - "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_4" -> "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_9" [color="red" ]; + "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_4" -> "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_12" [color="red" ]; + "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_4" -> "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_11" [color="red" ]; "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_5" [label="5: Prune (true branch, if) \n n$0=*&b:_Bool [line 59, column 9]\n PRUNE(n$0, true); [line 59, column 9]\n NULLIFY(&b); [line 59, column 9]\n EXIT_SCOPE(n$0,b); [line 59, column 9]\n " shape="invhouse"] - "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_5" -> "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_7" ; + "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_5" -> "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_8" ; "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_6" [label="6: Prune (false branch, if) \n n$0=*&b:_Bool [line 59, column 9]\n PRUNE(!n$0, false); [line 59, column 9]\n NULLIFY(&b); [line 59, column 9]\n EXIT_SCOPE(n$0,b); [line 59, column 9]\n " shape="invhouse"] - "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_6" -> "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_8" ; -"FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_7" [label="7: ObjCCPPThrow \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$2:std::length_error const ); [line 60, column 13]\n n$3=_fun_std::length_error::length_error(&0$?%__sil_tmpSIL_materialize_temp__n$2:std::length_error const *,\"error\":char const *) [line 60, column 13]\n n$4=_fun_std::length_error::length_error(&0$?%__sil_tmp__temp_construct_n$1:std::length_error*,&0$?%__sil_tmpSIL_materialize_temp__n$2:std::length_error const &) [line 60, column 13]\n n$5=_fun___infer_objc_cpp_throw(&0$?%__sil_tmp__temp_construct_n$1:std::length_error) [line 60, column 7]\n EXIT_SCOPE(n$3,n$4,n$5,0$?%__sil_tmpSIL_materialize_temp__n$2); [line 60, column 7]\n APPLY_ABSTRACTION; [line 60, column 7]\n " shape="box"] + "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_6" -> "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_10" ; +"FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_7" [label="7: Destruction(temporaries cleanup) \n _=*&0$?%__sil_tmpSIL_materialize_temp__n$1:std::length_error const [line 60, column 38]\n n$3=_fun_std::length_error::~length_error(&0$?%__sil_tmpSIL_materialize_temp__n$1:std::length_error const *) injected virtual [line 60, column 38]\n EXIT_SCOPE(_,n$3,0$?%__sil_tmpSIL_materialize_temp__n$1); [line 60, column 38]\n APPLY_ABSTRACTION; [line 60, column 38]\n " shape="box"] "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_7" -> "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_4" ; -"FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_8" [label="8: ObjCCPPThrow \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$7:std::range_error const ); [line 62, column 13]\n n$8=_fun_std::range_error::range_error(&0$?%__sil_tmpSIL_materialize_temp__n$7:std::range_error const *,\"error\":char const *) [line 62, column 13]\n n$9=_fun_std::range_error::range_error(&0$?%__sil_tmp__temp_construct_n$6:std::range_error*,&0$?%__sil_tmpSIL_materialize_temp__n$7:std::range_error const &) [line 62, column 13]\n n$10=_fun___infer_objc_cpp_throw(&0$?%__sil_tmp__temp_construct_n$6:std::range_error) [line 62, column 7]\n EXIT_SCOPE(n$8,n$9,n$10,0$?%__sil_tmpSIL_materialize_temp__n$7); [line 62, column 7]\n APPLY_ABSTRACTION; [line 62, column 7]\n " shape="box"] +"FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_8" [label="8: ObjCCPPThrow \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:std::length_error const ); [line 60, column 13]\n n$6=_fun_std::length_error::length_error(&0$?%__sil_tmpSIL_materialize_temp__n$1:std::length_error const *,\"error\":char const *) [line 60, column 13]\n n$7=_fun_std::length_error::length_error(&0$?%__sil_tmp__temp_construct_n$5:std::length_error*,&0$?%__sil_tmpSIL_materialize_temp__n$1:std::length_error const &) [line 60, column 13]\n n$8=_fun___infer_objc_cpp_throw(&0$?%__sil_tmp__temp_construct_n$5:std::length_error) [line 60, column 7]\n EXIT_SCOPE(n$6,n$7,n$8); [line 60, column 7]\n " shape="box"] + + + "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_8" -> "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_7" ; +"FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_9" [label="9: Destruction(temporaries cleanup) \n _=*&0$?%__sil_tmpSIL_materialize_temp__n$9:std::range_error const [line 62, column 37]\n n$11=_fun_std::range_error::~range_error(&0$?%__sil_tmpSIL_materialize_temp__n$9:std::range_error const *) injected virtual [line 62, column 37]\n EXIT_SCOPE(_,n$11,0$?%__sil_tmpSIL_materialize_temp__n$9); [line 62, column 37]\n APPLY_ABSTRACTION; [line 62, column 37]\n " shape="box"] - "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_8" -> "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_4" ; -"FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_9" [label="9: Return Stmt \n n$12=*&i:int* [line 65, column 13]\n n$13=*n$12:int [line 65, column 12]\n *&return:int=n$13 [line 65, column 5]\n NULLIFY(&i); [line 65, column 5]\n NULLIFY(&j); [line 65, column 5]\n EXIT_SCOPE(n$12,n$13,i,j); [line 65, column 5]\n APPLY_ABSTRACTION; [line 65, column 5]\n " shape="box"] + "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_9" -> "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_4" ; +"FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_10" [label="10: ObjCCPPThrow \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$9:std::range_error const ); [line 62, column 13]\n n$14=_fun_std::range_error::range_error(&0$?%__sil_tmpSIL_materialize_temp__n$9:std::range_error const *,\"error\":char const *) [line 62, column 13]\n n$15=_fun_std::range_error::range_error(&0$?%__sil_tmp__temp_construct_n$13:std::range_error*,&0$?%__sil_tmpSIL_materialize_temp__n$9:std::range_error const &) [line 62, column 13]\n n$16=_fun___infer_objc_cpp_throw(&0$?%__sil_tmp__temp_construct_n$13:std::range_error) [line 62, column 7]\n EXIT_SCOPE(n$14,n$15,n$16); [line 62, column 7]\n " shape="box"] - "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_9" -> "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_2" ; -"FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_10" [label="10: Return Stmt \n n$14=*&j:int* [line 67, column 13]\n n$15=*n$14:int [line 67, column 12]\n *&return:int=n$15 [line 67, column 5]\n NULLIFY(&i); [line 67, column 5]\n NULLIFY(&j); [line 67, column 5]\n EXIT_SCOPE(n$14,n$15,i,j); [line 67, column 5]\n APPLY_ABSTRACTION; [line 67, column 5]\n " shape="box"] + "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_10" -> "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_9" ; +"FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_11" [label="11: Return Stmt \n n$18=*&i:int* [line 65, column 13]\n n$19=*n$18:int [line 65, column 12]\n *&return:int=n$19 [line 65, column 5]\n NULLIFY(&i); [line 65, column 5]\n NULLIFY(&j); [line 65, column 5]\n EXIT_SCOPE(n$18,n$19,i,j); [line 65, column 5]\n APPLY_ABSTRACTION; [line 65, column 5]\n " shape="box"] - "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_10" -> "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_2" ; -"FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_11" [label="11: DeclStmt \n VARIABLE_DECLARED(j:int*); [line 57, column 3]\n *&j:int*=null [line 57, column 3]\n " shape="box"] + "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_11" -> "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_2" ; +"FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_12" [label="12: Return Stmt \n n$20=*&j:int* [line 67, column 13]\n n$21=*n$20:int [line 67, column 12]\n *&return:int=n$21 [line 67, column 5]\n NULLIFY(&i); [line 67, column 5]\n NULLIFY(&j); [line 67, column 5]\n EXIT_SCOPE(n$20,n$21,i,j); [line 67, column 5]\n APPLY_ABSTRACTION; [line 67, column 5]\n " shape="box"] - "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_11" -> "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_5" ; - "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_11" -> "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_6" ; -"FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_12" [label="12: DeclStmt \n VARIABLE_DECLARED(i:int*); [line 56, column 3]\n *&i:int*=null [line 56, column 3]\n " shape="box"] + "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_12" -> "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_2" ; +"FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_13" [label="13: DeclStmt \n VARIABLE_DECLARED(j:int*); [line 57, column 3]\n *&j:int*=null [line 57, column 3]\n " shape="box"] - "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_12" -> "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_11" ; -"basic_throw_ok#10529188890980782893.c9e1b8dd080b2621cfca65612331859d_1" [label="1: Start basic_throw_ok\nFormals: \nLocals: 0$?%__sil_tmp__temp_construct_n$0:std::runtime_error 0$?%__sil_tmpSIL_materialize_temp__n$1:std::runtime_error const \n " color=yellow style=filled] + "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_13" -> "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_5" ; + "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_13" -> "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_6" ; +"FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_14" [label="14: DeclStmt \n VARIABLE_DECLARED(i:int*); [line 56, column 3]\n *&i:int*=null [line 56, column 3]\n " shape="box"] - "basic_throw_ok#10529188890980782893.c9e1b8dd080b2621cfca65612331859d_1" -> "basic_throw_ok#10529188890980782893.c9e1b8dd080b2621cfca65612331859d_3" ; -"basic_throw_ok#10529188890980782893.c9e1b8dd080b2621cfca65612331859d_2" [label="2: Exit basic_throw_ok \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$1); [line 27, column 64]\n NULLIFY(&0$?%__sil_tmp__temp_construct_n$0); [line 27, column 64]\n " color=yellow style=filled] + "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_14" -> "FN_multiple_catches_bad#4595182522053295670.680a793e449c2d7439ff6441ca69fa98_13" ; +"basic_throw_ok#10529188890980782893.c9e1b8dd080b2621cfca65612331859d_1" [label="1: Start basic_throw_ok\nFormals: \nLocals: 0$?%__sil_tmp__temp_construct_n$4:std::runtime_error 0$?%__sil_tmpSIL_materialize_temp__n$0:std::runtime_error const \n " color=yellow style=filled] -"basic_throw_ok#10529188890980782893.c9e1b8dd080b2621cfca65612331859d_3" [label="3: ObjCCPPThrow \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:std::runtime_error const ); [line 27, column 31]\n n$2=_fun_std::runtime_error::runtime_error(&0$?%__sil_tmpSIL_materialize_temp__n$1:std::runtime_error const *,\"throwing!\":char const *) [line 27, column 31]\n n$3=_fun_std::runtime_error::runtime_error(&0$?%__sil_tmp__temp_construct_n$0:std::runtime_error*,&0$?%__sil_tmpSIL_materialize_temp__n$1:std::runtime_error const &) [line 27, column 31]\n n$4=_fun___infer_objc_cpp_throw(&0$?%__sil_tmp__temp_construct_n$0:std::runtime_error) [line 27, column 25]\n EXIT_SCOPE(n$2,n$3,n$4,0$?%__sil_tmpSIL_materialize_temp__n$1); [line 27, column 25]\n APPLY_ABSTRACTION; [line 27, column 25]\n " shape="box"] + "basic_throw_ok#10529188890980782893.c9e1b8dd080b2621cfca65612331859d_1" -> "basic_throw_ok#10529188890980782893.c9e1b8dd080b2621cfca65612331859d_4" ; +"basic_throw_ok#10529188890980782893.c9e1b8dd080b2621cfca65612331859d_2" [label="2: Exit basic_throw_ok \n EXIT_SCOPE(0$?%__sil_tmpSIL_materialize_temp__n$0); [line 27, column 64]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$0); [line 27, column 64]\n NULLIFY(&0$?%__sil_tmp__temp_construct_n$4); [line 27, column 64]\n " color=yellow style=filled] + + +"basic_throw_ok#10529188890980782893.c9e1b8dd080b2621cfca65612331859d_3" [label="3: Destruction(temporaries cleanup) \n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:std::runtime_error const [line 27, column 61]\n n$2=_fun_std::runtime_error::~runtime_error(&0$?%__sil_tmpSIL_materialize_temp__n$0:std::runtime_error const *) injected virtual [line 27, column 61]\n EXIT_SCOPE(_,n$2,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 27, column 61]\n APPLY_ABSTRACTION; [line 27, column 61]\n " shape="box"] "basic_throw_ok#10529188890980782893.c9e1b8dd080b2621cfca65612331859d_3" -> "basic_throw_ok#10529188890980782893.c9e1b8dd080b2621cfca65612331859d_2" ; +"basic_throw_ok#10529188890980782893.c9e1b8dd080b2621cfca65612331859d_4" [label="4: ObjCCPPThrow \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:std::runtime_error const ); [line 27, column 31]\n n$5=_fun_std::runtime_error::runtime_error(&0$?%__sil_tmpSIL_materialize_temp__n$0:std::runtime_error const *,\"throwing!\":char const *) [line 27, column 31]\n n$6=_fun_std::runtime_error::runtime_error(&0$?%__sil_tmp__temp_construct_n$4:std::runtime_error*,&0$?%__sil_tmpSIL_materialize_temp__n$0:std::runtime_error const &) [line 27, column 31]\n n$7=_fun___infer_objc_cpp_throw(&0$?%__sil_tmp__temp_construct_n$4:std::runtime_error) [line 27, column 25]\n EXIT_SCOPE(n$5,n$6,n$7); [line 27, column 25]\n " shape="box"] + + + "basic_throw_ok#10529188890980782893.c9e1b8dd080b2621cfca65612331859d_4" -> "basic_throw_ok#10529188890980782893.c9e1b8dd080b2621cfca65612331859d_3" ; "call_deref_with_null#4611966425999531792.6346543307e9a799421a89e451b917c2_1" [label="1: Start call_deref_with_null\nFormals: \nLocals: \n " color=yellow style=filled] @@ -120,25 +140,29 @@ digraph cfg { "call_deref_with_null#4611966425999531792.6346543307e9a799421a89e451b917c2_3" -> "call_deref_with_null#4611966425999531792.6346543307e9a799421a89e451b917c2_2" ; -"dead_deref_null_after_throw_ok#12025371096822526715.42d41c040f3a321bb94f60bf7b55d001_1" [label="1: Start dead_deref_null_after_throw_ok\nFormals: \nLocals: 0$?%__sil_tmp__temp_construct_n$2:std::runtime_error 0$?%__sil_tmpSIL_materialize_temp__n$3:std::runtime_error const i:int* \n " color=yellow style=filled] +"dead_deref_null_after_throw_ok#12025371096822526715.42d41c040f3a321bb94f60bf7b55d001_1" [label="1: Start dead_deref_null_after_throw_ok\nFormals: \nLocals: 0$?%__sil_tmp__temp_construct_n$6:std::runtime_error 0$?%__sil_tmpSIL_materialize_temp__n$2:std::runtime_error const i:int* \n " color=yellow style=filled] - "dead_deref_null_after_throw_ok#12025371096822526715.42d41c040f3a321bb94f60bf7b55d001_1" -> "dead_deref_null_after_throw_ok#12025371096822526715.42d41c040f3a321bb94f60bf7b55d001_5" ; -"dead_deref_null_after_throw_ok#12025371096822526715.42d41c040f3a321bb94f60bf7b55d001_2" [label="2: Exit dead_deref_null_after_throw_ok \n NULLIFY(&0$?%__sil_tmp__temp_construct_n$2); [line 33, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$3); [line 33, column 1]\n " color=yellow style=filled] + "dead_deref_null_after_throw_ok#12025371096822526715.42d41c040f3a321bb94f60bf7b55d001_1" -> "dead_deref_null_after_throw_ok#12025371096822526715.42d41c040f3a321bb94f60bf7b55d001_6" ; +"dead_deref_null_after_throw_ok#12025371096822526715.42d41c040f3a321bb94f60bf7b55d001_2" [label="2: Exit dead_deref_null_after_throw_ok \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$2); [line 33, column 1]\n NULLIFY(&0$?%__sil_tmp__temp_construct_n$6); [line 33, column 1]\n " color=yellow style=filled] -"dead_deref_null_after_throw_ok#12025371096822526715.42d41c040f3a321bb94f60bf7b55d001_3" [label="3: Return Stmt \n n$0=*&i:int* [line 32, column 11]\n n$1=*n$0:int [line 32, column 10]\n *&return:int=n$1 [line 32, column 3]\n NULLIFY(&i); [line 32, column 3]\n EXIT_SCOPE(n$0,n$1,i); [line 32, column 3]\n APPLY_ABSTRACTION; [line 32, column 3]\n " shape="box"] +"dead_deref_null_after_throw_ok#12025371096822526715.42d41c040f3a321bb94f60bf7b55d001_3" [label="3: Return Stmt \n n$0=*&i:int* [line 32, column 11]\n n$1=*n$0:int [line 32, column 10]\n *&return:int=n$1 [line 32, column 3]\n NULLIFY(&i); [line 32, column 3]\n EXIT_SCOPE(n$0,n$1,0$?%__sil_tmpSIL_materialize_temp__n$2,i); [line 32, column 3]\n APPLY_ABSTRACTION; [line 32, column 3]\n " shape="box"] "dead_deref_null_after_throw_ok#12025371096822526715.42d41c040f3a321bb94f60bf7b55d001_3" -> "dead_deref_null_after_throw_ok#12025371096822526715.42d41c040f3a321bb94f60bf7b55d001_2" ; -"dead_deref_null_after_throw_ok#12025371096822526715.42d41c040f3a321bb94f60bf7b55d001_4" [label="4: ObjCCPPThrow \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$3:std::runtime_error const ); [line 31, column 9]\n n$4=_fun_std::runtime_error::runtime_error(&0$?%__sil_tmpSIL_materialize_temp__n$3:std::runtime_error const *,\"throwing!\":char const *) [line 31, column 9]\n n$5=_fun_std::runtime_error::runtime_error(&0$?%__sil_tmp__temp_construct_n$2:std::runtime_error*,&0$?%__sil_tmpSIL_materialize_temp__n$3:std::runtime_error const &) [line 31, column 9]\n n$6=_fun___infer_objc_cpp_throw(&0$?%__sil_tmp__temp_construct_n$2:std::runtime_error) [line 31, column 3]\n EXIT_SCOPE(n$4,n$5,n$6,0$?%__sil_tmpSIL_materialize_temp__n$3); [line 31, column 3]\n " shape="box"] +"dead_deref_null_after_throw_ok#12025371096822526715.42d41c040f3a321bb94f60bf7b55d001_4" [label="4: Destruction(temporaries cleanup) \n _=*&0$?%__sil_tmpSIL_materialize_temp__n$2:std::runtime_error const [line 31, column 39]\n n$4=_fun_std::runtime_error::~runtime_error(&0$?%__sil_tmpSIL_materialize_temp__n$2:std::runtime_error const *) injected virtual [line 31, column 39]\n EXIT_SCOPE(_,n$4,0$?%__sil_tmpSIL_materialize_temp__n$2); [line 31, column 39]\n APPLY_ABSTRACTION; [line 31, column 39]\n " shape="box"] "dead_deref_null_after_throw_ok#12025371096822526715.42d41c040f3a321bb94f60bf7b55d001_4" -> "dead_deref_null_after_throw_ok#12025371096822526715.42d41c040f3a321bb94f60bf7b55d001_3" ; -"dead_deref_null_after_throw_ok#12025371096822526715.42d41c040f3a321bb94f60bf7b55d001_5" [label="5: DeclStmt \n VARIABLE_DECLARED(i:int*); [line 30, column 3]\n *&i:int*=null [line 30, column 3]\n " shape="box"] +"dead_deref_null_after_throw_ok#12025371096822526715.42d41c040f3a321bb94f60bf7b55d001_5" [label="5: ObjCCPPThrow \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$2:std::runtime_error const ); [line 31, column 9]\n n$7=_fun_std::runtime_error::runtime_error(&0$?%__sil_tmpSIL_materialize_temp__n$2:std::runtime_error const *,\"throwing!\":char const *) [line 31, column 9]\n n$8=_fun_std::runtime_error::runtime_error(&0$?%__sil_tmp__temp_construct_n$6:std::runtime_error*,&0$?%__sil_tmpSIL_materialize_temp__n$2:std::runtime_error const &) [line 31, column 9]\n n$9=_fun___infer_objc_cpp_throw(&0$?%__sil_tmp__temp_construct_n$6:std::runtime_error) [line 31, column 3]\n EXIT_SCOPE(n$7,n$8,n$9); [line 31, column 3]\n " shape="box"] "dead_deref_null_after_throw_ok#12025371096822526715.42d41c040f3a321bb94f60bf7b55d001_5" -> "dead_deref_null_after_throw_ok#12025371096822526715.42d41c040f3a321bb94f60bf7b55d001_4" ; +"dead_deref_null_after_throw_ok#12025371096822526715.42d41c040f3a321bb94f60bf7b55d001_6" [label="6: DeclStmt \n VARIABLE_DECLARED(i:int*); [line 30, column 3]\n *&i:int*=null [line 30, column 3]\n " shape="box"] + + + "dead_deref_null_after_throw_ok#12025371096822526715.42d41c040f3a321bb94f60bf7b55d001_6" -> "dead_deref_null_after_throw_ok#12025371096822526715.42d41c040f3a321bb94f60bf7b55d001_5" ; "deref#13506892413034678690.824465c4193ad2288eb512b1083edab3_1" [label="1: Start deref\nFormals: p:int*\nLocals: \n " color=yellow style=filled] diff --git a/infer/tests/codetoanalyze/cpp/shared/lambda/lambda1.cpp.dot b/infer/tests/codetoanalyze/cpp/shared/lambda/lambda1.cpp.dot index 68d217ccf..6049ecc4a 100644 --- a/infer/tests/codetoanalyze/cpp/shared/lambda/lambda1.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/shared/lambda/lambda1.cpp.dot @@ -11,45 +11,49 @@ digraph cfg { "bar#13629960763458822780.27859d4aca4c920a20241f1b78082005_3" -> "bar#13629960763458822780.27859d4aca4c920a20241f1b78082005_2" ; -"bar#13629960763458822780.27859d4aca4c920a20241f1b78082005_4" [label="4: DeclStmt \n VARIABLE_DECLARED(func:bar::lambda_shared_lambda_lambda1.cpp:9:15); [line 9, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$5:bar::lambda_shared_lambda_lambda1.cpp:9:15); [line 9, column 15]\n *&0$?%__sil_tmpSIL_materialize_temp__n$5:bar::lambda_shared_lambda_lambda1.cpp:9:15=(_fun_bar::lambda_shared_lambda_lambda1.cpp:9:15::operator()) [line 9, column 15]\n n$6=_fun_bar::lambda_shared_lambda_lambda1.cpp:9:15::(&func:bar::lambda_shared_lambda_lambda1.cpp:9:15*,&0$?%__sil_tmpSIL_materialize_temp__n$5:bar::lambda_shared_lambda_lambda1.cpp:9:15&) [line 9, column 15]\n EXIT_SCOPE(n$6,0$?%__sil_tmpSIL_materialize_temp__n$5); [line 9, column 15]\n " shape="box"] +"bar#13629960763458822780.27859d4aca4c920a20241f1b78082005_4" [label="4: DeclStmt \n VARIABLE_DECLARED(func:bar::lambda_shared_lambda_lambda1.cpp:9:15); [line 9, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$5:bar::lambda_shared_lambda_lambda1.cpp:9:15); [line 9, column 15]\n *&0$?%__sil_tmpSIL_materialize_temp__n$5:bar::lambda_shared_lambda_lambda1.cpp:9:15=(_fun_bar::lambda_shared_lambda_lambda1.cpp:9:15::operator()) [line 9, column 15]\n n$9=_fun_bar::lambda_shared_lambda_lambda1.cpp:9:15::(&func:bar::lambda_shared_lambda_lambda1.cpp:9:15*,&0$?%__sil_tmpSIL_materialize_temp__n$5:bar::lambda_shared_lambda_lambda1.cpp:9:15&) [line 9, column 15]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$5:bar::lambda_shared_lambda_lambda1.cpp:9:15 [line 12, column 3]\n n$7=_fun_bar::lambda_shared_lambda_lambda1.cpp:9:15::~(&0$?%__sil_tmpSIL_materialize_temp__n$5:bar::lambda_shared_lambda_lambda1.cpp:9:15*) injected [line 12, column 3]\n EXIT_SCOPE(_,n$7,n$9,0$?%__sil_tmpSIL_materialize_temp__n$5); [line 12, column 3]\n " shape="box"] "bar#13629960763458822780.27859d4aca4c920a20241f1b78082005_4" -> "bar#13629960763458822780.27859d4aca4c920a20241f1b78082005_3" ; -"capture_by_ref#4375601249296069049.1d794578c048d96b25fb1e90dbaa8225_1" [label="1: Start capture_by_ref\nFormals: \nLocals: 0$?%__sil_tmpSIL_materialize_temp__n$2:capture_by_ref::lambda_shared_lambda_lambda1.cpp:36:3 x:int \n " color=yellow style=filled] +"capture_by_ref#4375601249296069049.1d794578c048d96b25fb1e90dbaa8225_1" [label="1: Start capture_by_ref\nFormals: \nLocals: 0$?%__sil_tmpSIL_materialize_temp__n$1:capture_by_ref::lambda_shared_lambda_lambda1.cpp:36:3 x:int \n " color=yellow style=filled] - "capture_by_ref#4375601249296069049.1d794578c048d96b25fb1e90dbaa8225_1" -> "capture_by_ref#4375601249296069049.1d794578c048d96b25fb1e90dbaa8225_5" ; -"capture_by_ref#4375601249296069049.1d794578c048d96b25fb1e90dbaa8225_2" [label="2: Exit capture_by_ref \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$2); [line 38, column 1]\n " color=yellow style=filled] + "capture_by_ref#4375601249296069049.1d794578c048d96b25fb1e90dbaa8225_1" -> "capture_by_ref#4375601249296069049.1d794578c048d96b25fb1e90dbaa8225_6" ; +"capture_by_ref#4375601249296069049.1d794578c048d96b25fb1e90dbaa8225_2" [label="2: Exit capture_by_ref \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$1); [line 38, column 1]\n " color=yellow style=filled] -"capture_by_ref#4375601249296069049.1d794578c048d96b25fb1e90dbaa8225_3" [label="3: Return Stmt \n n$0=*&x:int [line 37, column 10]\n *&return:int=n$0 [line 37, column 3]\n NULLIFY(&x); [line 37, column 3]\n EXIT_SCOPE(n$0,x); [line 37, column 3]\n APPLY_ABSTRACTION; [line 37, column 3]\n " shape="box"] +"capture_by_ref#4375601249296069049.1d794578c048d96b25fb1e90dbaa8225_3" [label="3: Return Stmt \n n$0=*&x:int [line 37, column 10]\n *&return:int=n$0 [line 37, column 3]\n NULLIFY(&x); [line 37, column 3]\n EXIT_SCOPE(n$0,x,0$?%__sil_tmpSIL_materialize_temp__n$1); [line 37, column 3]\n APPLY_ABSTRACTION; [line 37, column 3]\n " shape="box"] "capture_by_ref#4375601249296069049.1d794578c048d96b25fb1e90dbaa8225_3" -> "capture_by_ref#4375601249296069049.1d794578c048d96b25fb1e90dbaa8225_2" ; -"capture_by_ref#4375601249296069049.1d794578c048d96b25fb1e90dbaa8225_4" [label="4: Call _fun_capture_by_ref::lambda_shared_lambda_lambda1.cpp:36:3::operator() \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$2:capture_by_ref::lambda_shared_lambda_lambda1.cpp:36:3); [line 36, column 3]\n *&0$?%__sil_tmpSIL_materialize_temp__n$2:capture_by_ref::lambda_shared_lambda_lambda1.cpp:36:3=(_fun_capture_by_ref::lambda_shared_lambda_lambda1.cpp:36:3::operator(),&x) [line 36, column 3]\n n$3=_fun_capture_by_ref::lambda_shared_lambda_lambda1.cpp:36:3::operator()(&0$?%__sil_tmpSIL_materialize_temp__n$2:capture_by_ref::lambda_shared_lambda_lambda1.cpp:36:3&) [line 36, column 3]\n EXIT_SCOPE(n$3,0$?%__sil_tmpSIL_materialize_temp__n$2); [line 36, column 3]\n " shape="box"] +"capture_by_ref#4375601249296069049.1d794578c048d96b25fb1e90dbaa8225_4" [label="4: Destruction(temporaries cleanup) \n _=*&0$?%__sil_tmpSIL_materialize_temp__n$1:capture_by_ref::lambda_shared_lambda_lambda1.cpp:36:3 [line 36, column 19]\n n$3=_fun_capture_by_ref::lambda_shared_lambda_lambda1.cpp:36:3::~(&0$?%__sil_tmpSIL_materialize_temp__n$1:capture_by_ref::lambda_shared_lambda_lambda1.cpp:36:3*) injected [line 36, column 19]\n EXIT_SCOPE(_,n$3,0$?%__sil_tmpSIL_materialize_temp__n$1); [line 36, column 19]\n APPLY_ABSTRACTION; [line 36, column 19]\n " shape="box"] "capture_by_ref#4375601249296069049.1d794578c048d96b25fb1e90dbaa8225_4" -> "capture_by_ref#4375601249296069049.1d794578c048d96b25fb1e90dbaa8225_3" ; -"capture_by_ref#4375601249296069049.1d794578c048d96b25fb1e90dbaa8225_5" [label="5: DeclStmt \n VARIABLE_DECLARED(x:int); [line 35, column 3]\n *&x:int=0 [line 35, column 3]\n " shape="box"] +"capture_by_ref#4375601249296069049.1d794578c048d96b25fb1e90dbaa8225_5" [label="5: Call _fun_capture_by_ref::lambda_shared_lambda_lambda1.cpp:36:3::operator() \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:capture_by_ref::lambda_shared_lambda_lambda1.cpp:36:3); [line 36, column 3]\n *&0$?%__sil_tmpSIL_materialize_temp__n$1:capture_by_ref::lambda_shared_lambda_lambda1.cpp:36:3=(_fun_capture_by_ref::lambda_shared_lambda_lambda1.cpp:36:3::operator(),&x) [line 36, column 3]\n n$6=_fun_capture_by_ref::lambda_shared_lambda_lambda1.cpp:36:3::operator()(&0$?%__sil_tmpSIL_materialize_temp__n$1:capture_by_ref::lambda_shared_lambda_lambda1.cpp:36:3&) [line 36, column 3]\n EXIT_SCOPE(n$6); [line 36, column 3]\n " shape="box"] "capture_by_ref#4375601249296069049.1d794578c048d96b25fb1e90dbaa8225_5" -> "capture_by_ref#4375601249296069049.1d794578c048d96b25fb1e90dbaa8225_4" ; -"foo#972162870672026475.86d7db357d6a36081d09067fb38ce85e_1" [label="1: Start foo\nFormals: \nLocals: y:foo::lambda_shared_lambda_lambda1.cpp:18:12 0$?%__sil_tmpSIL_materialize_temp__n$7:foo::lambda_shared_lambda_lambda1.cpp:18:12 unused:foo::lambda_shared_lambda_lambda1.cpp:17:17 0$?%__sil_tmpSIL_materialize_temp__n$9:foo::lambda_shared_lambda_lambda1.cpp:17:17 \n " color=yellow style=filled] +"capture_by_ref#4375601249296069049.1d794578c048d96b25fb1e90dbaa8225_6" [label="6: DeclStmt \n VARIABLE_DECLARED(x:int); [line 35, column 3]\n *&x:int=0 [line 35, column 3]\n " shape="box"] + + + "capture_by_ref#4375601249296069049.1d794578c048d96b25fb1e90dbaa8225_6" -> "capture_by_ref#4375601249296069049.1d794578c048d96b25fb1e90dbaa8225_5" ; +"foo#972162870672026475.86d7db357d6a36081d09067fb38ce85e_1" [label="1: Start foo\nFormals: \nLocals: y:foo::lambda_shared_lambda_lambda1.cpp:18:12 0$?%__sil_tmpSIL_materialize_temp__n$7:foo::lambda_shared_lambda_lambda1.cpp:18:12 unused:foo::lambda_shared_lambda_lambda1.cpp:17:17 0$?%__sil_tmpSIL_materialize_temp__n$12:foo::lambda_shared_lambda_lambda1.cpp:17:17 \n " color=yellow style=filled] "foo#972162870672026475.86d7db357d6a36081d09067fb38ce85e_1" -> "foo#972162870672026475.86d7db357d6a36081d09067fb38ce85e_5" ; -"foo#972162870672026475.86d7db357d6a36081d09067fb38ce85e_2" [label="2: Exit foo \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$7); [line 20, column 1]\n NULLIFY(&unused); [line 20, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$9); [line 20, column 1]\n NULLIFY(&y); [line 20, column 1]\n " color=yellow style=filled] +"foo#972162870672026475.86d7db357d6a36081d09067fb38ce85e_2" [label="2: Exit foo \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$7); [line 20, column 1]\n NULLIFY(&unused); [line 20, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$12); [line 20, column 1]\n NULLIFY(&y); [line 20, column 1]\n " color=yellow style=filled] "foo#972162870672026475.86d7db357d6a36081d09067fb38ce85e_3" [label="3: Return Stmt \n n$1=_fun_foo::lambda_shared_lambda_lambda1.cpp:18:12::operator()(&y:foo::lambda_shared_lambda_lambda1.cpp:18:12&,3:int) [line 19, column 19]\n *&return:int=(5 / (4 - n$1)) [line 19, column 3]\n _=*&y:foo::lambda_shared_lambda_lambda1.cpp:18:12 [line 19, column 23]\n n$3=_fun_foo::lambda_shared_lambda_lambda1.cpp:18:12::~(&y:foo::lambda_shared_lambda_lambda1.cpp:18:12*) injected [line 19, column 23]\n _=*&unused:foo::lambda_shared_lambda_lambda1.cpp:17:17 [line 19, column 23]\n n$5=_fun_foo::lambda_shared_lambda_lambda1.cpp:17:17::~(&unused:foo::lambda_shared_lambda_lambda1.cpp:17:17*) injected [line 19, column 23]\n EXIT_SCOPE(_,_,n$1,n$3,n$5,y,unused); [line 19, column 23]\n APPLY_ABSTRACTION; [line 19, column 23]\n " shape="box"] "foo#972162870672026475.86d7db357d6a36081d09067fb38ce85e_3" -> "foo#972162870672026475.86d7db357d6a36081d09067fb38ce85e_2" ; -"foo#972162870672026475.86d7db357d6a36081d09067fb38ce85e_4" [label="4: DeclStmt \n VARIABLE_DECLARED(y:foo::lambda_shared_lambda_lambda1.cpp:18:12); [line 18, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$7:foo::lambda_shared_lambda_lambda1.cpp:18:12); [line 18, column 12]\n *&0$?%__sil_tmpSIL_materialize_temp__n$7:foo::lambda_shared_lambda_lambda1.cpp:18:12=(_fun_foo::lambda_shared_lambda_lambda1.cpp:18:12::operator()) [line 18, column 12]\n n$8=_fun_foo::lambda_shared_lambda_lambda1.cpp:18:12::(&y:foo::lambda_shared_lambda_lambda1.cpp:18:12*,&0$?%__sil_tmpSIL_materialize_temp__n$7:foo::lambda_shared_lambda_lambda1.cpp:18:12&) [line 18, column 12]\n EXIT_SCOPE(n$8,0$?%__sil_tmpSIL_materialize_temp__n$7); [line 18, column 12]\n " shape="box"] +"foo#972162870672026475.86d7db357d6a36081d09067fb38ce85e_4" [label="4: DeclStmt \n VARIABLE_DECLARED(y:foo::lambda_shared_lambda_lambda1.cpp:18:12); [line 18, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$7:foo::lambda_shared_lambda_lambda1.cpp:18:12); [line 18, column 12]\n *&0$?%__sil_tmpSIL_materialize_temp__n$7:foo::lambda_shared_lambda_lambda1.cpp:18:12=(_fun_foo::lambda_shared_lambda_lambda1.cpp:18:12::operator()) [line 18, column 12]\n n$11=_fun_foo::lambda_shared_lambda_lambda1.cpp:18:12::(&y:foo::lambda_shared_lambda_lambda1.cpp:18:12*,&0$?%__sil_tmpSIL_materialize_temp__n$7:foo::lambda_shared_lambda_lambda1.cpp:18:12&) [line 18, column 12]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$7:foo::lambda_shared_lambda_lambda1.cpp:18:12 [line 18, column 36]\n n$9=_fun_foo::lambda_shared_lambda_lambda1.cpp:18:12::~(&0$?%__sil_tmpSIL_materialize_temp__n$7:foo::lambda_shared_lambda_lambda1.cpp:18:12*) injected [line 18, column 36]\n EXIT_SCOPE(_,n$9,n$11,0$?%__sil_tmpSIL_materialize_temp__n$7); [line 18, column 36]\n " shape="box"] "foo#972162870672026475.86d7db357d6a36081d09067fb38ce85e_4" -> "foo#972162870672026475.86d7db357d6a36081d09067fb38ce85e_3" ; -"foo#972162870672026475.86d7db357d6a36081d09067fb38ce85e_5" [label="5: DeclStmt \n VARIABLE_DECLARED(unused:foo::lambda_shared_lambda_lambda1.cpp:17:17); [line 17, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$9:foo::lambda_shared_lambda_lambda1.cpp:17:17); [line 17, column 17]\n *&0$?%__sil_tmpSIL_materialize_temp__n$9:foo::lambda_shared_lambda_lambda1.cpp:17:17=(_fun_foo::lambda_shared_lambda_lambda1.cpp:17:17::operator()) [line 17, column 17]\n n$10=_fun_foo::lambda_shared_lambda_lambda1.cpp:17:17::(&unused:foo::lambda_shared_lambda_lambda1.cpp:17:17*,&0$?%__sil_tmpSIL_materialize_temp__n$9:foo::lambda_shared_lambda_lambda1.cpp:17:17&) [line 17, column 17]\n EXIT_SCOPE(n$10,0$?%__sil_tmpSIL_materialize_temp__n$9); [line 17, column 17]\n " shape="box"] +"foo#972162870672026475.86d7db357d6a36081d09067fb38ce85e_5" [label="5: DeclStmt \n VARIABLE_DECLARED(unused:foo::lambda_shared_lambda_lambda1.cpp:17:17); [line 17, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$12:foo::lambda_shared_lambda_lambda1.cpp:17:17); [line 17, column 17]\n *&0$?%__sil_tmpSIL_materialize_temp__n$12:foo::lambda_shared_lambda_lambda1.cpp:17:17=(_fun_foo::lambda_shared_lambda_lambda1.cpp:17:17::operator()) [line 17, column 17]\n n$16=_fun_foo::lambda_shared_lambda_lambda1.cpp:17:17::(&unused:foo::lambda_shared_lambda_lambda1.cpp:17:17*,&0$?%__sil_tmpSIL_materialize_temp__n$12:foo::lambda_shared_lambda_lambda1.cpp:17:17&) [line 17, column 17]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$12:foo::lambda_shared_lambda_lambda1.cpp:17:17 [line 17, column 38]\n n$14=_fun_foo::lambda_shared_lambda_lambda1.cpp:17:17::~(&0$?%__sil_tmpSIL_materialize_temp__n$12:foo::lambda_shared_lambda_lambda1.cpp:17:17*) injected [line 17, column 38]\n EXIT_SCOPE(_,n$14,n$16,0$?%__sil_tmpSIL_materialize_temp__n$12); [line 17, column 38]\n " shape="box"] "foo#972162870672026475.86d7db357d6a36081d09067fb38ce85e_5" -> "foo#972162870672026475.86d7db357d6a36081d09067fb38ce85e_4" ; @@ -64,30 +68,30 @@ digraph cfg { "fooOK#5521302935427608539.9c36ec052efdd50972817d895666852a_3" -> "fooOK#5521302935427608539.9c36ec052efdd50972817d895666852a_2" ; -"fooOK#5521302935427608539.9c36ec052efdd50972817d895666852a_4" [label="4: DeclStmt \n VARIABLE_DECLARED(y:fooOK::lambda_shared_lambda_lambda1.cpp:24:12); [line 24, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$5:fooOK::lambda_shared_lambda_lambda1.cpp:24:12); [line 24, column 12]\n *&0$?%__sil_tmpSIL_materialize_temp__n$5:fooOK::lambda_shared_lambda_lambda1.cpp:24:12=(_fun_fooOK::lambda_shared_lambda_lambda1.cpp:24:12::operator()) [line 24, column 12]\n n$6=_fun_fooOK::lambda_shared_lambda_lambda1.cpp:24:12::(&y:fooOK::lambda_shared_lambda_lambda1.cpp:24:12*,&0$?%__sil_tmpSIL_materialize_temp__n$5:fooOK::lambda_shared_lambda_lambda1.cpp:24:12&) [line 24, column 12]\n EXIT_SCOPE(n$6,0$?%__sil_tmpSIL_materialize_temp__n$5); [line 24, column 12]\n " shape="box"] +"fooOK#5521302935427608539.9c36ec052efdd50972817d895666852a_4" [label="4: DeclStmt \n VARIABLE_DECLARED(y:fooOK::lambda_shared_lambda_lambda1.cpp:24:12); [line 24, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$5:fooOK::lambda_shared_lambda_lambda1.cpp:24:12); [line 24, column 12]\n *&0$?%__sil_tmpSIL_materialize_temp__n$5:fooOK::lambda_shared_lambda_lambda1.cpp:24:12=(_fun_fooOK::lambda_shared_lambda_lambda1.cpp:24:12::operator()) [line 24, column 12]\n n$9=_fun_fooOK::lambda_shared_lambda_lambda1.cpp:24:12::(&y:fooOK::lambda_shared_lambda_lambda1.cpp:24:12*,&0$?%__sil_tmpSIL_materialize_temp__n$5:fooOK::lambda_shared_lambda_lambda1.cpp:24:12&) [line 24, column 12]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$5:fooOK::lambda_shared_lambda_lambda1.cpp:24:12 [line 24, column 36]\n n$7=_fun_fooOK::lambda_shared_lambda_lambda1.cpp:24:12::~(&0$?%__sil_tmpSIL_materialize_temp__n$5:fooOK::lambda_shared_lambda_lambda1.cpp:24:12*) injected [line 24, column 36]\n EXIT_SCOPE(_,n$7,n$9,0$?%__sil_tmpSIL_materialize_temp__n$5); [line 24, column 36]\n " shape="box"] "fooOK#5521302935427608539.9c36ec052efdd50972817d895666852a_4" -> "fooOK#5521302935427608539.9c36ec052efdd50972817d895666852a_3" ; -"init_capture1#11582985675627962568.58b9ce334267f411dc5e1c70bd53eb81_1" [label="1: Start init_capture1\nFormals: \nLocals: 0$?%__sil_tmpSIL_materialize_temp__n$1:init_capture1::lambda_shared_lambda_lambda1.cpp:41:10 \n " color=yellow style=filled] +"init_capture1#11582985675627962568.58b9ce334267f411dc5e1c70bd53eb81_1" [label="1: Start init_capture1\nFormals: \nLocals: 0$?%__sil_tmpSIL_materialize_temp__n$0:init_capture1::lambda_shared_lambda_lambda1.cpp:41:10 \n " color=yellow style=filled] "init_capture1#11582985675627962568.58b9ce334267f411dc5e1c70bd53eb81_1" -> "init_capture1#11582985675627962568.58b9ce334267f411dc5e1c70bd53eb81_3" ; -"init_capture1#11582985675627962568.58b9ce334267f411dc5e1c70bd53eb81_2" [label="2: Exit init_capture1 \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$1); [line 42, column 1]\n " color=yellow style=filled] +"init_capture1#11582985675627962568.58b9ce334267f411dc5e1c70bd53eb81_2" [label="2: Exit init_capture1 \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$0); [line 42, column 1]\n " color=yellow style=filled] "init_capture1#11582985675627962568.58b9ce334267f411dc5e1c70bd53eb81_3" [label="3: DeclStmt \n VARIABLE_DECLARED(i:int); [line 41, column 10]\n *&i:int=0 [line 41, column 10]\n " shape="box"] "init_capture1#11582985675627962568.58b9ce334267f411dc5e1c70bd53eb81_3" -> "init_capture1#11582985675627962568.58b9ce334267f411dc5e1c70bd53eb81_4" ; -"init_capture1#11582985675627962568.58b9ce334267f411dc5e1c70bd53eb81_4" [label="4: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:init_capture1::lambda_shared_lambda_lambda1.cpp:41:10); [line 41, column 10]\n *&0$?%__sil_tmpSIL_materialize_temp__n$1:init_capture1::lambda_shared_lambda_lambda1.cpp:41:10=(_fun_init_capture1::lambda_shared_lambda_lambda1.cpp:41:10::operator(),&i) [line 41, column 10]\n n$2=_fun_init_capture1::lambda_shared_lambda_lambda1.cpp:41:10::operator()(&0$?%__sil_tmpSIL_materialize_temp__n$1:init_capture1::lambda_shared_lambda_lambda1.cpp:41:10&) [line 41, column 10]\n *&return:int=n$2 [line 41, column 3]\n NULLIFY(&i); [line 41, column 3]\n EXIT_SCOPE(n$2,i,0$?%__sil_tmpSIL_materialize_temp__n$1); [line 41, column 3]\n APPLY_ABSTRACTION; [line 41, column 3]\n " shape="box"] +"init_capture1#11582985675627962568.58b9ce334267f411dc5e1c70bd53eb81_4" [label="4: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:init_capture1::lambda_shared_lambda_lambda1.cpp:41:10); [line 41, column 10]\n *&0$?%__sil_tmpSIL_materialize_temp__n$0:init_capture1::lambda_shared_lambda_lambda1.cpp:41:10=(_fun_init_capture1::lambda_shared_lambda_lambda1.cpp:41:10::operator(),&i) [line 41, column 10]\n n$5=_fun_init_capture1::lambda_shared_lambda_lambda1.cpp:41:10::operator()(&0$?%__sil_tmpSIL_materialize_temp__n$0:init_capture1::lambda_shared_lambda_lambda1.cpp:41:10&) [line 41, column 10]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:init_capture1::lambda_shared_lambda_lambda1.cpp:41:10 [line 41, column 34]\n n$2=_fun_init_capture1::lambda_shared_lambda_lambda1.cpp:41:10::~(&0$?%__sil_tmpSIL_materialize_temp__n$0:init_capture1::lambda_shared_lambda_lambda1.cpp:41:10*) injected [line 41, column 34]\n *&return:int=n$5 [line 41, column 3]\n NULLIFY(&i); [line 41, column 3]\n EXIT_SCOPE(_,n$2,n$5,i,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 41, column 3]\n APPLY_ABSTRACTION; [line 41, column 3]\n " shape="box"] "init_capture1#11582985675627962568.58b9ce334267f411dc5e1c70bd53eb81_4" -> "init_capture1#11582985675627962568.58b9ce334267f411dc5e1c70bd53eb81_2" ; -"init_capture2#11582143449720942167.039b5039af3b7807e4b00950523a9f3a_1" [label="1: Start init_capture2\nFormals: \nLocals: 0$?%__sil_tmpSIL_materialize_temp__n$1:init_capture2::lambda_shared_lambda_lambda1.cpp:46:10 i:int \n " color=yellow style=filled] +"init_capture2#11582143449720942167.039b5039af3b7807e4b00950523a9f3a_1" [label="1: Start init_capture2\nFormals: \nLocals: 0$?%__sil_tmpSIL_materialize_temp__n$0:init_capture2::lambda_shared_lambda_lambda1.cpp:46:10 i:int \n " color=yellow style=filled] "init_capture2#11582143449720942167.039b5039af3b7807e4b00950523a9f3a_1" -> "init_capture2#11582143449720942167.039b5039af3b7807e4b00950523a9f3a_7" ; -"init_capture2#11582143449720942167.039b5039af3b7807e4b00950523a9f3a_2" [label="2: Exit init_capture2 \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$1); [line 47, column 1]\n " color=yellow style=filled] +"init_capture2#11582143449720942167.039b5039af3b7807e4b00950523a9f3a_2" [label="2: Exit init_capture2 \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$0); [line 47, column 1]\n " color=yellow style=filled] "init_capture2#11582143449720942167.039b5039af3b7807e4b00950523a9f3a_3" [label="3: DeclStmt \n VARIABLE_DECLARED(c:int); [line 46, column 10]\n *&c:int=3 [line 46, column 10]\n " shape="box"] @@ -98,11 +102,11 @@ digraph cfg { "init_capture2#11582143449720942167.039b5039af3b7807e4b00950523a9f3a_4" -> "init_capture2#11582143449720942167.039b5039af3b7807e4b00950523a9f3a_3" ; -"init_capture2#11582143449720942167.039b5039af3b7807e4b00950523a9f3a_5" [label="5: DeclStmt \n VARIABLE_DECLARED(a:int); [line 46, column 10]\n n$2=*&i:int [line 46, column 15]\n *&a:int=n$2 [line 46, column 10]\n NULLIFY(&i); [line 46, column 10]\n EXIT_SCOPE(n$2,i); [line 46, column 10]\n " shape="box"] +"init_capture2#11582143449720942167.039b5039af3b7807e4b00950523a9f3a_5" [label="5: DeclStmt \n VARIABLE_DECLARED(a:int); [line 46, column 10]\n n$5=*&i:int [line 46, column 15]\n *&a:int=n$5 [line 46, column 10]\n NULLIFY(&i); [line 46, column 10]\n EXIT_SCOPE(n$5,i); [line 46, column 10]\n " shape="box"] "init_capture2#11582143449720942167.039b5039af3b7807e4b00950523a9f3a_5" -> "init_capture2#11582143449720942167.039b5039af3b7807e4b00950523a9f3a_4" ; -"init_capture2#11582143449720942167.039b5039af3b7807e4b00950523a9f3a_6" [label="6: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:init_capture2::lambda_shared_lambda_lambda1.cpp:46:10); [line 46, column 10]\n *&0$?%__sil_tmpSIL_materialize_temp__n$1:init_capture2::lambda_shared_lambda_lambda1.cpp:46:10=(_fun_init_capture2::lambda_shared_lambda_lambda1.cpp:46:10::operator(),&a,&b,&c) [line 46, column 10]\n n$3=_fun_init_capture2::lambda_shared_lambda_lambda1.cpp:46:10::operator()(&0$?%__sil_tmpSIL_materialize_temp__n$1:init_capture2::lambda_shared_lambda_lambda1.cpp:46:10&) [line 46, column 10]\n *&return:int=n$3 [line 46, column 3]\n NULLIFY(&a); [line 46, column 3]\n NULLIFY(&b); [line 46, column 3]\n NULLIFY(&c); [line 46, column 3]\n EXIT_SCOPE(n$3,a,b,c,0$?%__sil_tmpSIL_materialize_temp__n$1); [line 46, column 3]\n APPLY_ABSTRACTION; [line 46, column 3]\n " shape="box"] +"init_capture2#11582143449720942167.039b5039af3b7807e4b00950523a9f3a_6" [label="6: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:init_capture2::lambda_shared_lambda_lambda1.cpp:46:10); [line 46, column 10]\n *&0$?%__sil_tmpSIL_materialize_temp__n$0:init_capture2::lambda_shared_lambda_lambda1.cpp:46:10=(_fun_init_capture2::lambda_shared_lambda_lambda1.cpp:46:10::operator(),&a,&b,&c) [line 46, column 10]\n n$6=_fun_init_capture2::lambda_shared_lambda_lambda1.cpp:46:10::operator()(&0$?%__sil_tmpSIL_materialize_temp__n$0:init_capture2::lambda_shared_lambda_lambda1.cpp:46:10&) [line 46, column 10]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:init_capture2::lambda_shared_lambda_lambda1.cpp:46:10 [line 46, column 56]\n n$2=_fun_init_capture2::lambda_shared_lambda_lambda1.cpp:46:10::~(&0$?%__sil_tmpSIL_materialize_temp__n$0:init_capture2::lambda_shared_lambda_lambda1.cpp:46:10*) injected [line 46, column 56]\n *&return:int=n$6 [line 46, column 3]\n NULLIFY(&a); [line 46, column 3]\n NULLIFY(&b); [line 46, column 3]\n NULLIFY(&c); [line 46, column 3]\n EXIT_SCOPE(_,n$2,n$6,a,b,0$?%__sil_tmpSIL_materialize_temp__n$0,c); [line 46, column 3]\n APPLY_ABSTRACTION; [line 46, column 3]\n " shape="box"] "init_capture2#11582143449720942167.039b5039af3b7807e4b00950523a9f3a_6" -> "init_capture2#11582143449720942167.039b5039af3b7807e4b00950523a9f3a_2" ; @@ -110,14 +114,14 @@ digraph cfg { "init_capture2#11582143449720942167.039b5039af3b7807e4b00950523a9f3a_7" -> "init_capture2#11582143449720942167.039b5039af3b7807e4b00950523a9f3a_5" ; -"normal_capture#5533029764254319855.11493b249dddd657790695e287170b84_1" [label="1: Start normal_capture\nFormals: \nLocals: 0$?%__sil_tmpSIL_materialize_temp__n$1:normal_capture::lambda_shared_lambda_lambda1.cpp:31:10 y:int x:int \n " color=yellow style=filled] +"normal_capture#5533029764254319855.11493b249dddd657790695e287170b84_1" [label="1: Start normal_capture\nFormals: \nLocals: 0$?%__sil_tmpSIL_materialize_temp__n$0:normal_capture::lambda_shared_lambda_lambda1.cpp:31:10 y:int x:int \n " color=yellow style=filled] "normal_capture#5533029764254319855.11493b249dddd657790695e287170b84_1" -> "normal_capture#5533029764254319855.11493b249dddd657790695e287170b84_5" ; -"normal_capture#5533029764254319855.11493b249dddd657790695e287170b84_2" [label="2: Exit normal_capture \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$1); [line 32, column 1]\n " color=yellow style=filled] +"normal_capture#5533029764254319855.11493b249dddd657790695e287170b84_2" [label="2: Exit normal_capture \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$0); [line 32, column 1]\n " color=yellow style=filled] -"normal_capture#5533029764254319855.11493b249dddd657790695e287170b84_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:normal_capture::lambda_shared_lambda_lambda1.cpp:31:10); [line 31, column 10]\n n$3=*&x:int [line 31, column 10]\n n$2=*&y:int [line 31, column 10]\n *&0$?%__sil_tmpSIL_materialize_temp__n$1:normal_capture::lambda_shared_lambda_lambda1.cpp:31:10=(_fun_normal_capture::lambda_shared_lambda_lambda1.cpp:31:10::operator(),(n$3 &x:int),(n$2 &y:int)) [line 31, column 10]\n n$4=_fun_normal_capture::lambda_shared_lambda_lambda1.cpp:31:10::operator()(&0$?%__sil_tmpSIL_materialize_temp__n$1:normal_capture::lambda_shared_lambda_lambda1.cpp:31:10&) [line 31, column 10]\n *&return:int=n$4 [line 31, column 3]\n NULLIFY(&y); [line 31, column 3]\n NULLIFY(&x); [line 31, column 3]\n EXIT_SCOPE(n$2,n$3,n$4,y,0$?%__sil_tmpSIL_materialize_temp__n$1,x); [line 31, column 3]\n APPLY_ABSTRACTION; [line 31, column 3]\n " shape="box"] +"normal_capture#5533029764254319855.11493b249dddd657790695e287170b84_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:normal_capture::lambda_shared_lambda_lambda1.cpp:31:10); [line 31, column 10]\n n$6=*&x:int [line 31, column 10]\n n$5=*&y:int [line 31, column 10]\n *&0$?%__sil_tmpSIL_materialize_temp__n$0:normal_capture::lambda_shared_lambda_lambda1.cpp:31:10=(_fun_normal_capture::lambda_shared_lambda_lambda1.cpp:31:10::operator(),(n$6 &x:int),(n$5 &y:int)) [line 31, column 10]\n n$7=_fun_normal_capture::lambda_shared_lambda_lambda1.cpp:31:10::operator()(&0$?%__sil_tmpSIL_materialize_temp__n$0:normal_capture::lambda_shared_lambda_lambda1.cpp:31:10&) [line 31, column 10]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:normal_capture::lambda_shared_lambda_lambda1.cpp:31:10 [line 31, column 37]\n n$2=_fun_normal_capture::lambda_shared_lambda_lambda1.cpp:31:10::~(&0$?%__sil_tmpSIL_materialize_temp__n$0:normal_capture::lambda_shared_lambda_lambda1.cpp:31:10*) injected [line 31, column 37]\n *&return:int=n$7 [line 31, column 3]\n NULLIFY(&y); [line 31, column 3]\n NULLIFY(&x); [line 31, column 3]\n EXIT_SCOPE(_,n$2,n$5,n$6,n$7,y,0$?%__sil_tmpSIL_materialize_temp__n$0,x); [line 31, column 3]\n APPLY_ABSTRACTION; [line 31, column 3]\n " shape="box"] "normal_capture#5533029764254319855.11493b249dddd657790695e287170b84_3" -> "normal_capture#5533029764254319855.11493b249dddd657790695e287170b84_2" ; @@ -140,15 +144,15 @@ digraph cfg { "struct_capture#7773507847510274281.f3db763dc0b20b24ec397f7802254c90_3" -> "struct_capture#7773507847510274281.f3db763dc0b20b24ec397f7802254c90_2" ; -"struct_capture#7773507847510274281.f3db763dc0b20b24ec397f7802254c90_4" [label="4: DeclStmt \n VARIABLE_DECLARED(f:struct_capture::lambda_shared_lambda_lambda1.cpp:77:12); [line 77, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$9:struct_capture::lambda_shared_lambda_lambda1.cpp:77:12); [line 77, column 12]\n n$11=*&x:SomeStruct [line 77, column 12]\n n$10=*&y:SomeStruct [line 77, column 12]\n *&0$?%__sil_tmpSIL_materialize_temp__n$9:struct_capture::lambda_shared_lambda_lambda1.cpp:77:12=(_fun_struct_capture::lambda_shared_lambda_lambda1.cpp:77:12::operator(),(n$11 &x:SomeStruct),(n$10 &y:SomeStruct)) [line 77, column 12]\n n$12=_fun_struct_capture::lambda_shared_lambda_lambda1.cpp:77:12::(&f:struct_capture::lambda_shared_lambda_lambda1.cpp:77:12*,&0$?%__sil_tmpSIL_materialize_temp__n$9:struct_capture::lambda_shared_lambda_lambda1.cpp:77:12&) [line 77, column 12]\n EXIT_SCOPE(n$10,n$11,n$12,0$?%__sil_tmpSIL_materialize_temp__n$9); [line 77, column 12]\n " shape="box"] +"struct_capture#7773507847510274281.f3db763dc0b20b24ec397f7802254c90_4" [label="4: DeclStmt \n VARIABLE_DECLARED(f:struct_capture::lambda_shared_lambda_lambda1.cpp:77:12); [line 77, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$9:struct_capture::lambda_shared_lambda_lambda1.cpp:77:12); [line 77, column 12]\n n$14=*&x:SomeStruct [line 77, column 12]\n n$13=*&y:SomeStruct [line 77, column 12]\n *&0$?%__sil_tmpSIL_materialize_temp__n$9:struct_capture::lambda_shared_lambda_lambda1.cpp:77:12=(_fun_struct_capture::lambda_shared_lambda_lambda1.cpp:77:12::operator(),(n$14 &x:SomeStruct),(n$13 &y:SomeStruct)) [line 77, column 12]\n n$15=_fun_struct_capture::lambda_shared_lambda_lambda1.cpp:77:12::(&f:struct_capture::lambda_shared_lambda_lambda1.cpp:77:12*,&0$?%__sil_tmpSIL_materialize_temp__n$9:struct_capture::lambda_shared_lambda_lambda1.cpp:77:12&) [line 77, column 12]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$9:struct_capture::lambda_shared_lambda_lambda1.cpp:77:12 [line 77, column 41]\n n$11=_fun_struct_capture::lambda_shared_lambda_lambda1.cpp:77:12::~(&0$?%__sil_tmpSIL_materialize_temp__n$9:struct_capture::lambda_shared_lambda_lambda1.cpp:77:12*) injected [line 77, column 41]\n EXIT_SCOPE(_,n$11,n$13,n$14,n$15,0$?%__sil_tmpSIL_materialize_temp__n$9); [line 77, column 41]\n " shape="box"] "struct_capture#7773507847510274281.f3db763dc0b20b24ec397f7802254c90_4" -> "struct_capture#7773507847510274281.f3db763dc0b20b24ec397f7802254c90_3" ; -"struct_capture#7773507847510274281.f3db763dc0b20b24ec397f7802254c90_5" [label="5: DeclStmt \n VARIABLE_DECLARED(y:SomeStruct); [line 76, column 3]\n n$13=_fun_SomeStruct::SomeStruct(&y:SomeStruct*) [line 76, column 14]\n EXIT_SCOPE(n$13); [line 76, column 14]\n " shape="box"] +"struct_capture#7773507847510274281.f3db763dc0b20b24ec397f7802254c90_5" [label="5: DeclStmt \n VARIABLE_DECLARED(y:SomeStruct); [line 76, column 3]\n n$16=_fun_SomeStruct::SomeStruct(&y:SomeStruct*) [line 76, column 14]\n EXIT_SCOPE(n$16); [line 76, column 14]\n " shape="box"] "struct_capture#7773507847510274281.f3db763dc0b20b24ec397f7802254c90_5" -> "struct_capture#7773507847510274281.f3db763dc0b20b24ec397f7802254c90_4" ; -"struct_capture#7773507847510274281.f3db763dc0b20b24ec397f7802254c90_6" [label="6: DeclStmt \n VARIABLE_DECLARED(x:SomeStruct); [line 75, column 3]\n n$14=_fun_SomeStruct::SomeStruct(&x:SomeStruct*) [line 75, column 14]\n EXIT_SCOPE(n$14); [line 75, column 14]\n " shape="box"] +"struct_capture#7773507847510274281.f3db763dc0b20b24ec397f7802254c90_6" [label="6: DeclStmt \n VARIABLE_DECLARED(x:SomeStruct); [line 75, column 3]\n n$17=_fun_SomeStruct::SomeStruct(&x:SomeStruct*) [line 75, column 14]\n EXIT_SCOPE(n$17); [line 75, column 14]\n " shape="box"] "struct_capture#7773507847510274281.f3db763dc0b20b24ec397f7802254c90_6" -> "struct_capture#7773507847510274281.f3db763dc0b20b24ec397f7802254c90_5" ; @@ -163,7 +167,7 @@ digraph cfg { "capture_this_explicit#Capture#(13194085360619722149).2dba35a78268b10ad413414cc832a8f0_3" -> "capture_this_explicit#Capture#(13194085360619722149).2dba35a78268b10ad413414cc832a8f0_2" ; -"capture_this_explicit#Capture#(13194085360619722149).2dba35a78268b10ad413414cc832a8f0_4" [label="4: DeclStmt \n VARIABLE_DECLARED(lambda:Capture::capture_this_explicit::lambda_shared_lambda_lambda1.cpp:51:19); [line 51, column 5]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$3:Capture::capture_this_explicit::lambda_shared_lambda_lambda1.cpp:51:19); [line 51, column 19]\n *&0$?%__sil_tmpSIL_materialize_temp__n$3:Capture::capture_this_explicit::lambda_shared_lambda_lambda1.cpp:51:19=(_fun_Capture::capture_this_explicit::lambda_shared_lambda_lambda1.cpp:51:19::operator(),&this) [line 51, column 19]\n n$4=_fun_Capture::capture_this_explicit::lambda_shared_lambda_lambda1.cpp:51:19::(&lambda:Capture::capture_this_explicit::lambda_shared_lambda_lambda1.cpp:51:19*,&0$?%__sil_tmpSIL_materialize_temp__n$3:Capture::capture_this_explicit::lambda_shared_lambda_lambda1.cpp:51:19&) [line 51, column 19]\n NULLIFY(&this); [line 51, column 19]\n EXIT_SCOPE(n$4,0$?%__sil_tmpSIL_materialize_temp__n$3,this); [line 51, column 19]\n " shape="box"] +"capture_this_explicit#Capture#(13194085360619722149).2dba35a78268b10ad413414cc832a8f0_4" [label="4: DeclStmt \n VARIABLE_DECLARED(lambda:Capture::capture_this_explicit::lambda_shared_lambda_lambda1.cpp:51:19); [line 51, column 5]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$3:Capture::capture_this_explicit::lambda_shared_lambda_lambda1.cpp:51:19); [line 51, column 19]\n *&0$?%__sil_tmpSIL_materialize_temp__n$3:Capture::capture_this_explicit::lambda_shared_lambda_lambda1.cpp:51:19=(_fun_Capture::capture_this_explicit::lambda_shared_lambda_lambda1.cpp:51:19::operator(),&this) [line 51, column 19]\n n$7=_fun_Capture::capture_this_explicit::lambda_shared_lambda_lambda1.cpp:51:19::(&lambda:Capture::capture_this_explicit::lambda_shared_lambda_lambda1.cpp:51:19*,&0$?%__sil_tmpSIL_materialize_temp__n$3:Capture::capture_this_explicit::lambda_shared_lambda_lambda1.cpp:51:19&) [line 51, column 19]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$3:Capture::capture_this_explicit::lambda_shared_lambda_lambda1.cpp:51:19 [line 51, column 43]\n n$5=_fun_Capture::capture_this_explicit::lambda_shared_lambda_lambda1.cpp:51:19::~(&0$?%__sil_tmpSIL_materialize_temp__n$3:Capture::capture_this_explicit::lambda_shared_lambda_lambda1.cpp:51:19*) injected [line 51, column 43]\n NULLIFY(&this); [line 51, column 43]\n EXIT_SCOPE(_,n$5,n$7,0$?%__sil_tmpSIL_materialize_temp__n$3,this); [line 51, column 43]\n " shape="box"] "capture_this_explicit#Capture#(13194085360619722149).2dba35a78268b10ad413414cc832a8f0_4" -> "capture_this_explicit#Capture#(13194085360619722149).2dba35a78268b10ad413414cc832a8f0_3" ; @@ -178,7 +182,7 @@ digraph cfg { "capture_this_with_auto#Capture#(15696525048884093218).38be242109186a45cc282c38962c68e2_3" -> "capture_this_with_auto#Capture#(15696525048884093218).38be242109186a45cc282c38962c68e2_2" ; -"capture_this_with_auto#Capture#(15696525048884093218).38be242109186a45cc282c38962c68e2_4" [label="4: DeclStmt \n VARIABLE_DECLARED(lambda:Capture::capture_this_with_auto::lambda_shared_lambda_lambda1.cpp:65:19); [line 65, column 5]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$3:Capture::capture_this_with_auto::lambda_shared_lambda_lambda1.cpp:65:19); [line 65, column 19]\n *&0$?%__sil_tmpSIL_materialize_temp__n$3:Capture::capture_this_with_auto::lambda_shared_lambda_lambda1.cpp:65:19=(_fun_Capture::capture_this_with_auto::lambda_shared_lambda_lambda1.cpp:65:19::operator(),&this) [line 65, column 19]\n n$4=_fun_Capture::capture_this_with_auto::lambda_shared_lambda_lambda1.cpp:65:19::(&lambda:Capture::capture_this_with_auto::lambda_shared_lambda_lambda1.cpp:65:19*,&0$?%__sil_tmpSIL_materialize_temp__n$3:Capture::capture_this_with_auto::lambda_shared_lambda_lambda1.cpp:65:19&) [line 65, column 19]\n NULLIFY(&this); [line 65, column 19]\n EXIT_SCOPE(n$4,0$?%__sil_tmpSIL_materialize_temp__n$3,this); [line 65, column 19]\n " shape="box"] +"capture_this_with_auto#Capture#(15696525048884093218).38be242109186a45cc282c38962c68e2_4" [label="4: DeclStmt \n VARIABLE_DECLARED(lambda:Capture::capture_this_with_auto::lambda_shared_lambda_lambda1.cpp:65:19); [line 65, column 5]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$3:Capture::capture_this_with_auto::lambda_shared_lambda_lambda1.cpp:65:19); [line 65, column 19]\n *&0$?%__sil_tmpSIL_materialize_temp__n$3:Capture::capture_this_with_auto::lambda_shared_lambda_lambda1.cpp:65:19=(_fun_Capture::capture_this_with_auto::lambda_shared_lambda_lambda1.cpp:65:19::operator(),&this) [line 65, column 19]\n n$7=_fun_Capture::capture_this_with_auto::lambda_shared_lambda_lambda1.cpp:65:19::(&lambda:Capture::capture_this_with_auto::lambda_shared_lambda_lambda1.cpp:65:19*,&0$?%__sil_tmpSIL_materialize_temp__n$3:Capture::capture_this_with_auto::lambda_shared_lambda_lambda1.cpp:65:19&) [line 65, column 19]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$3:Capture::capture_this_with_auto::lambda_shared_lambda_lambda1.cpp:65:19 [line 65, column 40]\n n$5=_fun_Capture::capture_this_with_auto::lambda_shared_lambda_lambda1.cpp:65:19::~(&0$?%__sil_tmpSIL_materialize_temp__n$3:Capture::capture_this_with_auto::lambda_shared_lambda_lambda1.cpp:65:19*) injected [line 65, column 40]\n NULLIFY(&this); [line 65, column 40]\n EXIT_SCOPE(_,n$5,n$7,0$?%__sil_tmpSIL_materialize_temp__n$3,this); [line 65, column 40]\n " shape="box"] "capture_this_with_auto#Capture#(15696525048884093218).38be242109186a45cc282c38962c68e2_4" -> "capture_this_with_auto#Capture#(15696525048884093218).38be242109186a45cc282c38962c68e2_3" ; @@ -193,7 +197,7 @@ digraph cfg { "capture_star_this#Capture#(2506493005619132138).63fd6aa2a7efbd48dc1a62c0c2bd2161_3" -> "capture_star_this#Capture#(2506493005619132138).63fd6aa2a7efbd48dc1a62c0c2bd2161_2" ; -"capture_star_this#Capture#(2506493005619132138).63fd6aa2a7efbd48dc1a62c0c2bd2161_4" [label="4: DeclStmt \n VARIABLE_DECLARED(lambda:Capture::capture_star_this::lambda_shared_lambda_lambda1.cpp:55:19); [line 55, column 5]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$3:Capture::capture_star_this::lambda_shared_lambda_lambda1.cpp:55:19); [line 55, column 19]\n n$4=*&this:Capture* [line 55, column 19]\n *&0$?%__sil_tmpSIL_materialize_temp__n$3:Capture::capture_star_this::lambda_shared_lambda_lambda1.cpp:55:19=(_fun_Capture::capture_star_this::lambda_shared_lambda_lambda1.cpp:55:19::operator(),(n$4 &this:Capture*)) [line 55, column 19]\n n$5=_fun_Capture::capture_star_this::lambda_shared_lambda_lambda1.cpp:55:19::(&lambda:Capture::capture_star_this::lambda_shared_lambda_lambda1.cpp:55:19*,&0$?%__sil_tmpSIL_materialize_temp__n$3:Capture::capture_star_this::lambda_shared_lambda_lambda1.cpp:55:19&) [line 55, column 19]\n NULLIFY(&this); [line 55, column 19]\n EXIT_SCOPE(n$4,n$5,0$?%__sil_tmpSIL_materialize_temp__n$3,this); [line 55, column 19]\n " shape="box"] +"capture_star_this#Capture#(2506493005619132138).63fd6aa2a7efbd48dc1a62c0c2bd2161_4" [label="4: DeclStmt \n VARIABLE_DECLARED(lambda:Capture::capture_star_this::lambda_shared_lambda_lambda1.cpp:55:19); [line 55, column 5]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$3:Capture::capture_star_this::lambda_shared_lambda_lambda1.cpp:55:19); [line 55, column 19]\n n$7=*&this:Capture* [line 55, column 19]\n *&0$?%__sil_tmpSIL_materialize_temp__n$3:Capture::capture_star_this::lambda_shared_lambda_lambda1.cpp:55:19=(_fun_Capture::capture_star_this::lambda_shared_lambda_lambda1.cpp:55:19::operator(),(n$7 &this:Capture*)) [line 55, column 19]\n n$8=_fun_Capture::capture_star_this::lambda_shared_lambda_lambda1.cpp:55:19::(&lambda:Capture::capture_star_this::lambda_shared_lambda_lambda1.cpp:55:19*,&0$?%__sil_tmpSIL_materialize_temp__n$3:Capture::capture_star_this::lambda_shared_lambda_lambda1.cpp:55:19&) [line 55, column 19]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$3:Capture::capture_star_this::lambda_shared_lambda_lambda1.cpp:55:19 [line 57, column 5]\n n$5=_fun_Capture::capture_star_this::lambda_shared_lambda_lambda1.cpp:55:19::~(&0$?%__sil_tmpSIL_materialize_temp__n$3:Capture::capture_star_this::lambda_shared_lambda_lambda1.cpp:55:19*) injected [line 57, column 5]\n NULLIFY(&this); [line 57, column 5]\n EXIT_SCOPE(_,n$5,n$7,n$8,0$?%__sil_tmpSIL_materialize_temp__n$3,this); [line 57, column 5]\n " shape="box"] "capture_star_this#Capture#(2506493005619132138).63fd6aa2a7efbd48dc1a62c0c2bd2161_4" -> "capture_star_this#Capture#(2506493005619132138).63fd6aa2a7efbd48dc1a62c0c2bd2161_3" ; @@ -208,7 +212,7 @@ digraph cfg { "capture_this_with_equal#Capture#(805776379555510952).ecd73e9a4e2bef0d060a242b61508f10_3" -> "capture_this_with_equal#Capture#(805776379555510952).ecd73e9a4e2bef0d060a242b61508f10_2" ; -"capture_this_with_equal#Capture#(805776379555510952).ecd73e9a4e2bef0d060a242b61508f10_4" [label="4: DeclStmt \n VARIABLE_DECLARED(lambda:Capture::capture_this_with_equal::lambda_shared_lambda_lambda1.cpp:61:19); [line 61, column 5]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$3:Capture::capture_this_with_equal::lambda_shared_lambda_lambda1.cpp:61:19); [line 61, column 19]\n *&0$?%__sil_tmpSIL_materialize_temp__n$3:Capture::capture_this_with_equal::lambda_shared_lambda_lambda1.cpp:61:19=(_fun_Capture::capture_this_with_equal::lambda_shared_lambda_lambda1.cpp:61:19::operator(),&this) [line 61, column 19]\n n$4=_fun_Capture::capture_this_with_equal::lambda_shared_lambda_lambda1.cpp:61:19::(&lambda:Capture::capture_this_with_equal::lambda_shared_lambda_lambda1.cpp:61:19*,&0$?%__sil_tmpSIL_materialize_temp__n$3:Capture::capture_this_with_equal::lambda_shared_lambda_lambda1.cpp:61:19&) [line 61, column 19]\n NULLIFY(&this); [line 61, column 19]\n EXIT_SCOPE(n$4,0$?%__sil_tmpSIL_materialize_temp__n$3,this); [line 61, column 19]\n " shape="box"] +"capture_this_with_equal#Capture#(805776379555510952).ecd73e9a4e2bef0d060a242b61508f10_4" [label="4: DeclStmt \n VARIABLE_DECLARED(lambda:Capture::capture_this_with_equal::lambda_shared_lambda_lambda1.cpp:61:19); [line 61, column 5]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$3:Capture::capture_this_with_equal::lambda_shared_lambda_lambda1.cpp:61:19); [line 61, column 19]\n *&0$?%__sil_tmpSIL_materialize_temp__n$3:Capture::capture_this_with_equal::lambda_shared_lambda_lambda1.cpp:61:19=(_fun_Capture::capture_this_with_equal::lambda_shared_lambda_lambda1.cpp:61:19::operator(),&this) [line 61, column 19]\n n$7=_fun_Capture::capture_this_with_equal::lambda_shared_lambda_lambda1.cpp:61:19::(&lambda:Capture::capture_this_with_equal::lambda_shared_lambda_lambda1.cpp:61:19*,&0$?%__sil_tmpSIL_materialize_temp__n$3:Capture::capture_this_with_equal::lambda_shared_lambda_lambda1.cpp:61:19&) [line 61, column 19]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$3:Capture::capture_this_with_equal::lambda_shared_lambda_lambda1.cpp:61:19 [line 61, column 40]\n n$5=_fun_Capture::capture_this_with_equal::lambda_shared_lambda_lambda1.cpp:61:19::~(&0$?%__sil_tmpSIL_materialize_temp__n$3:Capture::capture_this_with_equal::lambda_shared_lambda_lambda1.cpp:61:19*) injected [line 61, column 40]\n NULLIFY(&this); [line 61, column 40]\n EXIT_SCOPE(_,n$5,n$7,0$?%__sil_tmpSIL_materialize_temp__n$3,this); [line 61, column 40]\n " shape="box"] "capture_this_with_equal#Capture#(805776379555510952).ecd73e9a4e2bef0d060a242b61508f10_4" -> "capture_this_with_equal#Capture#(805776379555510952).ecd73e9a4e2bef0d060a242b61508f10_3" ; diff --git a/infer/tests/codetoanalyze/cpp/shared/methods/byvals.cpp.dot b/infer/tests/codetoanalyze/cpp/shared/methods/byvals.cpp.dot index f21035372..ae5557f69 100644 --- a/infer/tests/codetoanalyze/cpp/shared/methods/byvals.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/shared/methods/byvals.cpp.dot @@ -84,7 +84,7 @@ digraph cfg { "make_id#pass_by_val(class pass_by_val::Id)#6647322778693099135.704a07df7f1fd4912e21bd274744a5e0_2" [label="2: Exit pass_by_val::make_id \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$1); [line 60, column 1]\n " color=yellow style=filled] -"make_id#pass_by_val(class pass_by_val::Id)#6647322778693099135.704a07df7f1fd4912e21bd274744a5e0_3" [label="3: Return Stmt \n n$0=*&__return_param:pass_by_val::Id* [line 59, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:pass_by_val::Id); [line 59, column 10]\n n$2=*&args:int& [line 59, column 35]\n n$3=_fun_std::forward(n$2:int&) [line 59, column 16]\n n$4=*n$3:int [line 59, column 16]\n n$5=*&args:int& [line 59, column 35]\n n$6=_fun_std::forward(n$5:int&) [line 59, column 16]\n n$7=*&args:int& [line 59, column 35]\n n$8=_fun_std::forward(n$7:int&) [line 59, column 16]\n n$9=_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 59, column 10]\n n$10=_fun_pass_by_val::Id::Id(n$0:pass_by_val::Id*,&0$?%__sil_tmpSIL_materialize_temp__n$1:pass_by_val::Id&) [line 59, column 10]\n NULLIFY(&args); [line 59, column 10]\n NULLIFY(&__return_param); [line 59, column 10]\n NULLIFY(&args); [line 59, column 10]\n NULLIFY(&args); [line 59, column 10]\n EXIT_SCOPE(n$0,n$2,n$3,n$4,n$5,n$6,n$7,n$8,n$9,n$10,args,__return_param,args,args,0$?%__sil_tmpSIL_materialize_temp__n$1); [line 59, column 10]\n APPLY_ABSTRACTION; [line 59, column 10]\n " shape="box"] +"make_id#pass_by_val(class pass_by_val::Id)#6647322778693099135.704a07df7f1fd4912e21bd274744a5e0_3" [label="3: Return Stmt \n n$0=*&__return_param:pass_by_val::Id* [line 59, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:pass_by_val::Id); [line 59, column 10]\n n$5=*&args:int& [line 59, column 35]\n n$6=_fun_std::forward(n$5:int&) [line 59, column 16]\n n$7=*n$6:int [line 59, column 16]\n n$8=*&args:int& [line 59, column 35]\n n$9=_fun_std::forward(n$8:int&) [line 59, column 16]\n n$10=*&args:int& [line 59, column 35]\n n$11=_fun_std::forward(n$10:int&) [line 59, column 16]\n n$12=_fun_pass_by_val::Id::Id(&0$?%__sil_tmpSIL_materialize_temp__n$1:pass_by_val::Id*,n$7:int,n$9:int&,n$11:int&) [line 59, column 10]\n n$13=_fun_pass_by_val::Id::Id(n$0:pass_by_val::Id*,&0$?%__sil_tmpSIL_materialize_temp__n$1:pass_by_val::Id&) [line 59, column 10]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$1:pass_by_val::Id [line 59, column 43]\n n$3=_fun_pass_by_val::Id::~Id(&0$?%__sil_tmpSIL_materialize_temp__n$1:pass_by_val::Id*) injected [line 59, column 43]\n NULLIFY(&args); [line 59, column 43]\n NULLIFY(&__return_param); [line 59, column 43]\n NULLIFY(&args); [line 59, column 43]\n NULLIFY(&args); [line 59, column 43]\n EXIT_SCOPE(_,n$0,n$3,n$5,n$6,n$7,n$8,n$9,n$10,n$11,n$12,n$13,args,__return_param,args,args,0$?%__sil_tmpSIL_materialize_temp__n$1); [line 59, column 43]\n APPLY_ABSTRACTION; [line 59, column 43]\n " shape="box"] "make_id#pass_by_val(class pass_by_val::Id)#6647322778693099135.704a07df7f1fd4912e21bd274744a5e0_3" -> "make_id#pass_by_val(class pass_by_val::Id)#6647322778693099135.704a07df7f1fd4912e21bd274744a5e0_2" ; @@ -95,7 +95,7 @@ digraph cfg { "perfect_forwarding_by_ref#pass_by_val(class pass_by_val::Id)#7578991627406493712.4a78b0c805a8de47693f8c723da2ec49_2" [label="2: Exit pass_by_val::perfect_forwarding_by_ref \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$1); [line 65, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$2); [line 65, column 1]\n NULLIFY(&b); [line 65, column 1]\n NULLIFY(&a); [line 65, column 1]\n " color=yellow style=filled] -"perfect_forwarding_by_ref#pass_by_val(class pass_by_val::Id)#7578991627406493712.4a78b0c805a8de47693f8c723da2ec49_3" [label="3: Return Stmt \n n$0=*&__return_param:pass_by_val::Id* [line 64, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:pass_by_val::Id); [line 64, column 10]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$2:int); [line 64, column 29]\n *&0$?%__sil_tmpSIL_materialize_temp__n$2:int=2 [line 64, column 29]\n n$4=_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*) assign_last [line 64, column 10]\n n$5=_fun_pass_by_val::Id::Id(n$0:pass_by_val::Id*,&0$?%__sil_tmpSIL_materialize_temp__n$1:pass_by_val::Id&) [line 64, column 10]\n NULLIFY(&__return_param); [line 64, column 10]\n EXIT_SCOPE(n$0,n$4,n$5,a,__return_param,b,0$?%__sil_tmpSIL_materialize_temp__n$2,0$?%__sil_tmpSIL_materialize_temp__n$1); [line 64, column 10]\n APPLY_ABSTRACTION; [line 64, column 10]\n " shape="box"] +"perfect_forwarding_by_ref#pass_by_val(class pass_by_val::Id)#7578991627406493712.4a78b0c805a8de47693f8c723da2ec49_3" [label="3: Return Stmt \n n$0=*&__return_param:pass_by_val::Id* [line 64, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:pass_by_val::Id); [line 64, column 10]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$2:int); [line 64, column 29]\n *&0$?%__sil_tmpSIL_materialize_temp__n$2:int=2 [line 64, column 29]\n n$7=_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*) assign_last [line 64, column 10]\n n$8=_fun_pass_by_val::Id::Id(n$0:pass_by_val::Id*,&0$?%__sil_tmpSIL_materialize_temp__n$1:pass_by_val::Id&) [line 64, column 10]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$1:pass_by_val::Id [line 64, column 30]\n n$4=_fun_pass_by_val::Id::~Id(&0$?%__sil_tmpSIL_materialize_temp__n$1:pass_by_val::Id*) injected [line 64, column 30]\n NULLIFY(&__return_param); [line 64, column 30]\n EXIT_SCOPE(_,n$0,n$4,n$7,n$8,a,__return_param,b,0$?%__sil_tmpSIL_materialize_temp__n$2,0$?%__sil_tmpSIL_materialize_temp__n$1); [line 64, column 30]\n APPLY_ABSTRACTION; [line 64, column 30]\n " shape="box"] "perfect_forwarding_by_ref#pass_by_val(class pass_by_val::Id)#7578991627406493712.4a78b0c805a8de47693f8c723da2ec49_3" -> "perfect_forwarding_by_ref#pass_by_val(class pass_by_val::Id)#7578991627406493712.4a78b0c805a8de47693f8c723da2ec49_2" ; diff --git a/infer/tests/codetoanalyze/cpp/shared/methods/conversion_operator.cpp.dot b/infer/tests/codetoanalyze/cpp/shared/methods/conversion_operator.cpp.dot index 4576984ee..ec938c337 100644 --- a/infer/tests/codetoanalyze/cpp/shared/methods/conversion_operator.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/shared/methods/conversion_operator.cpp.dot @@ -120,14 +120,14 @@ digraph cfg { "branch_no_div#conversion_operator#18429458682592639842.4c7cf0cc20989fd2ea431840e11b2521_10" -> "branch_no_div#conversion_operator#18429458682592639842.4c7cf0cc20989fd2ea431840e11b2521_5" ; -"y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_1" [label="1: Start conversion_operator::y_branch_div0\nFormals: \nLocals: 0$?%__sil_tmpSIL_materialize_temp__n$1:conversion_operator::X const 0$?%__sil_tmpSIL_materialize_temp__n$0:conversion_operator::X 0$?%__sil_tmpSIL_materialize_temp__n$9:conversion_operator::X const 0$?%__sil_tmpSIL_materialize_temp__n$8:conversion_operator::X v:int 0$?%__sil_tmpSIL_materialize_temp__n$18:conversion_operator::X const 0$?%__sil_tmpSIL_materialize_temp__n$17:conversion_operator::X y:conversion_operator::Y \n " color=yellow style=filled] +"y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_1" [label="1: Start conversion_operator::y_branch_div0\nFormals: \nLocals: 0$?%__sil_tmpSIL_materialize_temp__n$1:conversion_operator::X const 0$?%__sil_tmpSIL_materialize_temp__n$0:conversion_operator::X 0$?%__sil_tmpSIL_materialize_temp__n$14:conversion_operator::X const 0$?%__sil_tmpSIL_materialize_temp__n$13:conversion_operator::X v:int 0$?%__sil_tmpSIL_materialize_temp__n$28:conversion_operator::X const 0$?%__sil_tmpSIL_materialize_temp__n$27:conversion_operator::X y:conversion_operator::Y \n " color=yellow style=filled] - "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_1" -> "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_12" ; -"y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_2" [label="2: Exit conversion_operator::y_branch_div0 \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$1); [line 50, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$18); [line 50, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$0); [line 50, column 1]\n NULLIFY(&y); [line 50, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$17); [line 50, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$9); [line 50, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$8); [line 50, column 1]\n " color=yellow style=filled] + "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_1" -> "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_13" ; +"y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_2" [label="2: Exit conversion_operator::y_branch_div0 \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$1); [line 50, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$14); [line 50, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$0); [line 50, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$13); [line 50, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$28); [line 50, column 1]\n NULLIFY(&y); [line 50, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$27); [line 50, column 1]\n " color=yellow style=filled] -"y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:conversion_operator::X); [line 49, column 10]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:conversion_operator::X const ); [line 49, column 13]\n _=*&y:conversion_operator::Y [line 49, column 13]\n n$4=_fun_conversion_operator::Y::operator_X(&y:conversion_operator::Y&,&0$?%__sil_tmpSIL_materialize_temp__n$1:conversion_operator::X*) assign_last [line 49, column 13]\n n$5=_fun_conversion_operator::X::X(&0$?%__sil_tmpSIL_materialize_temp__n$0:conversion_operator::X*,&0$?%__sil_tmpSIL_materialize_temp__n$1:conversion_operator::X const &) [line 49, column 10]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:conversion_operator::X [line 49, column 10]\n n$7=_fun_conversion_operator::X::operator_int(&0$?%__sil_tmpSIL_materialize_temp__n$0:conversion_operator::X&) [line 49, column 10]\n *&return:int=n$7 [line 49, column 3]\n EXIT_SCOPE(_,_,n$4,n$5,n$7,y,0$?%__sil_tmpSIL_materialize_temp__n$0,0$?%__sil_tmpSIL_materialize_temp__n$1); [line 49, column 3]\n APPLY_ABSTRACTION; [line 49, column 3]\n " shape="box"] +"y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:conversion_operator::X); [line 49, column 10]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:conversion_operator::X const ); [line 49, column 13]\n _=*&y:conversion_operator::Y [line 49, column 13]\n n$9=_fun_conversion_operator::Y::operator_X(&y:conversion_operator::Y&,&0$?%__sil_tmpSIL_materialize_temp__n$1:conversion_operator::X*) assign_last [line 49, column 13]\n n$10=_fun_conversion_operator::X::X(&0$?%__sil_tmpSIL_materialize_temp__n$0:conversion_operator::X*,&0$?%__sil_tmpSIL_materialize_temp__n$1:conversion_operator::X const &) [line 49, column 10]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:conversion_operator::X [line 49, column 10]\n n$12=_fun_conversion_operator::X::operator_int(&0$?%__sil_tmpSIL_materialize_temp__n$0:conversion_operator::X&) [line 49, column 10]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$1:conversion_operator::X const [line 49, column 13]\n n$3=_fun_conversion_operator::X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$1:conversion_operator::X const *) injected [line 49, column 13]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:conversion_operator::X [line 49, column 13]\n n$5=_fun_conversion_operator::X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$0:conversion_operator::X*) injected [line 49, column 13]\n *&return:int=n$12 [line 49, column 3]\n EXIT_SCOPE(_,_,_,_,n$3,n$5,n$9,n$10,n$12,y,0$?%__sil_tmpSIL_materialize_temp__n$0,0$?%__sil_tmpSIL_materialize_temp__n$1); [line 49, column 3]\n APPLY_ABSTRACTION; [line 49, column 3]\n " shape="box"] "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_3" -> "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_2" ; @@ -135,39 +135,43 @@ digraph cfg { "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_4" -> "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_3" ; -"y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_5" [label="5: Call _fun_conversion_operator::X::operator_bool \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$8:conversion_operator::X); [line 45, column 7]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$9:conversion_operator::X const ); [line 45, column 10]\n _=*&y:conversion_operator::Y [line 45, column 10]\n n$12=_fun_conversion_operator::Y::operator_X(&y:conversion_operator::Y&,&0$?%__sil_tmpSIL_materialize_temp__n$9:conversion_operator::X*) assign_last [line 45, column 10]\n n$13=_fun_conversion_operator::X::X(&0$?%__sil_tmpSIL_materialize_temp__n$8:conversion_operator::X*,&0$?%__sil_tmpSIL_materialize_temp__n$9:conversion_operator::X const &) [line 45, column 7]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$8:conversion_operator::X [line 45, column 7]\n n$15=_fun_conversion_operator::X::operator_bool(&0$?%__sil_tmpSIL_materialize_temp__n$8:conversion_operator::X&) [line 45, column 7]\n EXIT_SCOPE(_,_,n$12,n$13,0$?%__sil_tmpSIL_materialize_temp__n$8,0$?%__sil_tmpSIL_materialize_temp__n$9); [line 45, column 7]\n " shape="box"] +"y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_5" [label="5: Destruction(temporaries cleanup) \n _=*&0$?%__sil_tmpSIL_materialize_temp__n$14:conversion_operator::X const [line 45, column 10]\n n$16=_fun_conversion_operator::X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$14:conversion_operator::X const *) injected [line 45, column 10]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$13:conversion_operator::X [line 45, column 10]\n n$18=_fun_conversion_operator::X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$13:conversion_operator::X*) injected [line 45, column 10]\n EXIT_SCOPE(_,_,n$16,n$18,0$?%__sil_tmpSIL_materialize_temp__n$13,0$?%__sil_tmpSIL_materialize_temp__n$14); [line 45, column 10]\n " shape="box"] - "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_5" -> "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_6" ; "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_5" -> "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_7" ; -"y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_6" [label="6: Prune (true branch, if) \n PRUNE(n$15, true); [line 45, column 7]\n EXIT_SCOPE(n$15); [line 45, column 7]\n " shape="invhouse"] + "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_5" -> "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_8" ; +"y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_6" [label="6: Call _fun_conversion_operator::X::operator_bool \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$13:conversion_operator::X); [line 45, column 7]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$14:conversion_operator::X const ); [line 45, column 10]\n _=*&y:conversion_operator::Y [line 45, column 10]\n n$22=_fun_conversion_operator::Y::operator_X(&y:conversion_operator::Y&,&0$?%__sil_tmpSIL_materialize_temp__n$14:conversion_operator::X*) assign_last [line 45, column 10]\n n$23=_fun_conversion_operator::X::X(&0$?%__sil_tmpSIL_materialize_temp__n$13:conversion_operator::X*,&0$?%__sil_tmpSIL_materialize_temp__n$14:conversion_operator::X const &) [line 45, column 7]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$13:conversion_operator::X [line 45, column 7]\n n$25=_fun_conversion_operator::X::operator_bool(&0$?%__sil_tmpSIL_materialize_temp__n$13:conversion_operator::X&) [line 45, column 7]\n EXIT_SCOPE(_,_,n$22,n$23); [line 45, column 7]\n " shape="box"] - "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_6" -> "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_9" ; -"y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_7" [label="7: Prune (false branch, if) \n PRUNE(!n$15, false); [line 45, column 7]\n EXIT_SCOPE(n$15); [line 45, column 7]\n " shape="invhouse"] + "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_6" -> "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_5" ; +"y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_7" [label="7: Prune (true branch, if) \n PRUNE(n$25, true); [line 45, column 7]\n EXIT_SCOPE(n$25); [line 45, column 7]\n " shape="invhouse"] - "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_7" -> "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_4" ; -"y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_8" [label="8: Return Stmt \n n$16=*&v:int [line 47, column 16]\n *&return:int=(1 / n$16) [line 47, column 5]\n NULLIFY(&v); [line 47, column 5]\n EXIT_SCOPE(n$16,v); [line 47, column 5]\n APPLY_ABSTRACTION; [line 47, column 5]\n " shape="box"] + "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_7" -> "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_10" ; +"y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_8" [label="8: Prune (false branch, if) \n PRUNE(!n$25, false); [line 45, column 7]\n EXIT_SCOPE(n$25); [line 45, column 7]\n " shape="invhouse"] - "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_8" -> "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_2" ; -"y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_9" [label="9: DeclStmt \n VARIABLE_DECLARED(v:int); [line 46, column 5]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$17:conversion_operator::X); [line 46, column 13]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$18:conversion_operator::X const ); [line 46, column 16]\n _=*&y:conversion_operator::Y [line 46, column 16]\n n$21=_fun_conversion_operator::Y::operator_X(&y:conversion_operator::Y&,&0$?%__sil_tmpSIL_materialize_temp__n$18:conversion_operator::X*) assign_last [line 46, column 16]\n n$22=_fun_conversion_operator::X::X(&0$?%__sil_tmpSIL_materialize_temp__n$17:conversion_operator::X*,&0$?%__sil_tmpSIL_materialize_temp__n$18:conversion_operator::X const &) [line 46, column 13]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$17:conversion_operator::X [line 46, column 13]\n n$24=_fun_conversion_operator::X::operator_int(&0$?%__sil_tmpSIL_materialize_temp__n$17:conversion_operator::X&) [line 46, column 13]\n *&v:int=n$24 [line 46, column 5]\n EXIT_SCOPE(_,_,n$21,n$22,n$24,0$?%__sil_tmpSIL_materialize_temp__n$17,y,0$?%__sil_tmpSIL_materialize_temp__n$18); [line 46, column 5]\n " shape="box"] + "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_8" -> "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_4" ; +"y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_9" [label="9: Return Stmt \n n$26=*&v:int [line 47, column 16]\n *&return:int=(1 / n$26) [line 47, column 5]\n NULLIFY(&v); [line 47, column 5]\n EXIT_SCOPE(n$26,v); [line 47, column 5]\n APPLY_ABSTRACTION; [line 47, column 5]\n " shape="box"] - "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_9" -> "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_8" ; -"y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_10" [label="10: BinaryOperatorStmt: Assign \n *&y.b:int=1 [line 44, column 3]\n " shape="box"] + "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_9" -> "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_2" ; +"y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_10" [label="10: DeclStmt \n VARIABLE_DECLARED(v:int); [line 46, column 5]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$27:conversion_operator::X); [line 46, column 13]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$28:conversion_operator::X const ); [line 46, column 16]\n _=*&y:conversion_operator::Y [line 46, column 16]\n n$36=_fun_conversion_operator::Y::operator_X(&y:conversion_operator::Y&,&0$?%__sil_tmpSIL_materialize_temp__n$28:conversion_operator::X*) assign_last [line 46, column 16]\n n$37=_fun_conversion_operator::X::X(&0$?%__sil_tmpSIL_materialize_temp__n$27:conversion_operator::X*,&0$?%__sil_tmpSIL_materialize_temp__n$28:conversion_operator::X const &) [line 46, column 13]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$27:conversion_operator::X [line 46, column 13]\n n$39=_fun_conversion_operator::X::operator_int(&0$?%__sil_tmpSIL_materialize_temp__n$27:conversion_operator::X&) [line 46, column 13]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$28:conversion_operator::X const [line 46, column 16]\n n$30=_fun_conversion_operator::X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$28:conversion_operator::X const *) injected [line 46, column 16]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$27:conversion_operator::X [line 46, column 16]\n n$32=_fun_conversion_operator::X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$27:conversion_operator::X*) injected [line 46, column 16]\n *&v:int=n$39 [line 46, column 5]\n EXIT_SCOPE(_,_,_,_,n$30,n$32,n$36,n$37,n$39,0$?%__sil_tmpSIL_materialize_temp__n$27,y,0$?%__sil_tmpSIL_materialize_temp__n$28); [line 46, column 5]\n " shape="box"] - "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_10" -> "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_5" ; -"y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_11" [label="11: BinaryOperatorStmt: Assign \n *&y.f:int=0 [line 43, column 3]\n " shape="box"] + "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_10" -> "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_9" ; +"y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_11" [label="11: BinaryOperatorStmt: Assign \n *&y.b:int=1 [line 44, column 3]\n " shape="box"] - "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_11" -> "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_10" ; -"y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_12" [label="12: DeclStmt \n VARIABLE_DECLARED(y:conversion_operator::Y); [line 42, column 3]\n n$27=_fun_conversion_operator::Y::Y(&y:conversion_operator::Y*) [line 42, column 5]\n EXIT_SCOPE(n$27); [line 42, column 5]\n " shape="box"] + "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_11" -> "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_6" ; +"y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_12" [label="12: BinaryOperatorStmt: Assign \n *&y.f:int=0 [line 43, column 3]\n " shape="box"] "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_12" -> "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_11" ; +"y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_13" [label="13: DeclStmt \n VARIABLE_DECLARED(y:conversion_operator::Y); [line 42, column 3]\n n$42=_fun_conversion_operator::Y::Y(&y:conversion_operator::Y*) [line 42, column 5]\n EXIT_SCOPE(n$42); [line 42, column 5]\n " shape="box"] + + + "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_13" -> "y_branch_div0#conversion_operator#7606471872775172252.4a93f184f35976e9e7dc6663bc4d47a2_12" ; "operator_int#X#conversion_operator#(11584960464019118495).bbe1ab264905e56e75a1b45ae475ffe0_1" [label="1: Start conversion_operator::X::operator_int\nFormals: this:conversion_operator::X*\nLocals: \n " color=yellow style=filled] @@ -227,7 +231,7 @@ digraph cfg { "operator_X#Y#conversion_operator(class conversion_operator::X)#(9875474444891926125).86894a9a1bdbf53dc3721d092420d60c_2" [label="2: Exit conversion_operator::Y::operator_X \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$1); [line 27, column 34]\n " color=yellow style=filled] -"operator_X#Y#conversion_operator(class conversion_operator::X)#(9875474444891926125).86894a9a1bdbf53dc3721d092420d60c_3" [label="3: Return Stmt \n n$0=*&__return_param:conversion_operator::X* [line 27, column 18]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:conversion_operator::X const ); [line 27, column 25]\n n$2=*&this:conversion_operator::Y* [line 27, column 27]\n n$3=*n$2.f:int [line 27, column 27]\n n$4=*&this:conversion_operator::Y* [line 27, column 30]\n n$5=*n$4.b:int [line 27, column 30]\n n$6=_fun_conversion_operator::X::X(&0$?%__sil_tmpSIL_materialize_temp__n$1:conversion_operator::X const *,n$3:int,n$5:_Bool) [line 27, column 25]\n n$7=_fun_conversion_operator::X::X(n$0:conversion_operator::X*,&0$?%__sil_tmpSIL_materialize_temp__n$1:conversion_operator::X const &) [line 27, column 25]\n NULLIFY(&__return_param); [line 27, column 25]\n NULLIFY(&this); [line 27, column 25]\n EXIT_SCOPE(n$0,n$2,n$3,n$4,n$5,n$6,n$7,__return_param,0$?%__sil_tmpSIL_materialize_temp__n$1,this); [line 27, column 25]\n APPLY_ABSTRACTION; [line 27, column 25]\n " shape="box"] +"operator_X#Y#conversion_operator(class conversion_operator::X)#(9875474444891926125).86894a9a1bdbf53dc3721d092420d60c_3" [label="3: Return Stmt \n n$0=*&__return_param:conversion_operator::X* [line 27, column 18]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:conversion_operator::X const ); [line 27, column 25]\n n$5=*&this:conversion_operator::Y* [line 27, column 27]\n n$6=*n$5.f:int [line 27, column 27]\n n$7=*&this:conversion_operator::Y* [line 27, column 30]\n n$8=*n$7.b:int [line 27, column 30]\n n$9=_fun_conversion_operator::X::X(&0$?%__sil_tmpSIL_materialize_temp__n$1:conversion_operator::X const *,n$6:int,n$8:_Bool) [line 27, column 25]\n n$10=_fun_conversion_operator::X::X(n$0:conversion_operator::X*,&0$?%__sil_tmpSIL_materialize_temp__n$1:conversion_operator::X const &) [line 27, column 25]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$1:conversion_operator::X const [line 27, column 31]\n n$3=_fun_conversion_operator::X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$1:conversion_operator::X const *) injected [line 27, column 31]\n NULLIFY(&__return_param); [line 27, column 31]\n NULLIFY(&this); [line 27, column 31]\n EXIT_SCOPE(_,n$0,n$3,n$5,n$6,n$7,n$8,n$9,n$10,__return_param,0$?%__sil_tmpSIL_materialize_temp__n$1,this); [line 27, column 31]\n APPLY_ABSTRACTION; [line 27, column 31]\n " shape="box"] "operator_X#Y#conversion_operator(class conversion_operator::X)#(9875474444891926125).86894a9a1bdbf53dc3721d092420d60c_3" -> "operator_X#Y#conversion_operator(class conversion_operator::X)#(9875474444891926125).86894a9a1bdbf53dc3721d092420d60c_2" ; diff --git a/infer/tests/codetoanalyze/cpp/shared/methods/return_struct.cpp.dot b/infer/tests/codetoanalyze/cpp/shared/methods/return_struct.cpp.dot index 96f000ec5..0d08bcf51 100644 --- a/infer/tests/codetoanalyze/cpp/shared/methods/return_struct.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/shared/methods/return_struct.cpp.dot @@ -11,7 +11,7 @@ digraph cfg { "test(class A)#14183353284361723530.f22d37fbaacc66a7efb8fb240415be10_3" -> "test(class A)#14183353284361723530.f22d37fbaacc66a7efb8fb240415be10_2" ; -"test(class A)#14183353284361723530.f22d37fbaacc66a7efb8fb240415be10_4" [label="4: DeclStmt \n VARIABLE_DECLARED(x:X); [line 20, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$4:X); [line 20, column 9]\n n$5=*&a:A* [line 20, column 9]\n _=*n$5:A [line 20, column 9]\n n$8=_fun_A::get(n$5:A*,1:int,&0$?%__sil_tmpSIL_materialize_temp__n$4:X*) assign_last [line 20, column 9]\n n$9=_fun_X::X(&x:X*,&0$?%__sil_tmpSIL_materialize_temp__n$4:X&) [line 20, column 9]\n NULLIFY(&a); [line 20, column 9]\n EXIT_SCOPE(_,n$5,n$8,n$9,a,0$?%__sil_tmpSIL_materialize_temp__n$4); [line 20, column 9]\n " shape="box"] +"test(class A)#14183353284361723530.f22d37fbaacc66a7efb8fb240415be10_4" [label="4: DeclStmt \n VARIABLE_DECLARED(x:X); [line 20, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$4:X); [line 20, column 9]\n n$8=*&a:A* [line 20, column 9]\n _=*n$8:A [line 20, column 9]\n n$11=_fun_A::get(n$8:A*,1:int,&0$?%__sil_tmpSIL_materialize_temp__n$4:X*) assign_last [line 20, column 9]\n n$12=_fun_X::X(&x:X*,&0$?%__sil_tmpSIL_materialize_temp__n$4:X&) [line 20, column 9]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$4:X [line 20, column 17]\n n$6=_fun_X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$4:X*) injected [line 20, column 17]\n NULLIFY(&a); [line 20, column 17]\n EXIT_SCOPE(_,_,n$6,n$8,n$11,n$12,a,0$?%__sil_tmpSIL_materialize_temp__n$4); [line 20, column 17]\n " shape="box"] "test(class A)#14183353284361723530.f22d37fbaacc66a7efb8fb240415be10_4" -> "test(class A)#14183353284361723530.f22d37fbaacc66a7efb8fb240415be10_3" ; diff --git a/infer/tests/codetoanalyze/cpp/shared/types/inheritance_casts.cpp.dot b/infer/tests/codetoanalyze/cpp/shared/types/inheritance_casts.cpp.dot index 41c82a320..4417300a1 100644 --- a/infer/tests/codetoanalyze/cpp/shared/types/inheritance_casts.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/shared/types/inheritance_casts.cpp.dot @@ -18,7 +18,7 @@ digraph cfg { "div0_A#inheritance_casts#7658516495554603699.e5c3e3413f6eac12dda7dd76db597c34_2" [label="2: Exit inheritance_casts::div0_A \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$0); [line 26, column 37]\n " color=yellow style=filled] -"div0_A#inheritance_casts#7658516495554603699.e5c3e3413f6eac12dda7dd76db597c34_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:inheritance_casts::A const ); [line 26, column 27]\n n$2=_fun_inheritance_casts::getA(0:int,&0$?%__sil_tmpSIL_materialize_temp__n$0:inheritance_casts::A*) assign_last [line 26, column 27]\n n$3=_fun_inheritance_casts::div(&0$?%__sil_tmpSIL_materialize_temp__n$0:inheritance_casts::A const &) [line 26, column 23]\n *&return:int=n$3 [line 26, column 16]\n EXIT_SCOPE(n$2,n$3,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 26, column 16]\n APPLY_ABSTRACTION; [line 26, column 16]\n " shape="box"] +"div0_A#inheritance_casts#7658516495554603699.e5c3e3413f6eac12dda7dd76db597c34_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:inheritance_casts::A const ); [line 26, column 27]\n n$5=_fun_inheritance_casts::getA(0:int,&0$?%__sil_tmpSIL_materialize_temp__n$0:inheritance_casts::A*) assign_last [line 26, column 27]\n n$6=_fun_inheritance_casts::div(&0$?%__sil_tmpSIL_materialize_temp__n$0:inheritance_casts::A const &) [line 26, column 23]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:inheritance_casts::A const [line 26, column 34]\n n$2=_fun_inheritance_casts::A::~A(&0$?%__sil_tmpSIL_materialize_temp__n$0:inheritance_casts::A const *) injected [line 26, column 34]\n *&return:int=n$6 [line 26, column 16]\n EXIT_SCOPE(_,n$2,n$5,n$6,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 26, column 16]\n APPLY_ABSTRACTION; [line 26, column 16]\n " shape="box"] "div0_A#inheritance_casts#7658516495554603699.e5c3e3413f6eac12dda7dd76db597c34_3" -> "div0_A#inheritance_casts#7658516495554603699.e5c3e3413f6eac12dda7dd76db597c34_2" ; @@ -29,7 +29,7 @@ digraph cfg { "div0_B#inheritance_casts#9651791439006644302.4d2c177357a796fa9b436df4f92f3de8_2" [label="2: Exit inheritance_casts::div0_B \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$0); [line 30, column 37]\n " color=yellow style=filled] -"div0_B#inheritance_casts#9651791439006644302.4d2c177357a796fa9b436df4f92f3de8_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:inheritance_casts::B const ); [line 30, column 27]\n n$2=_fun_inheritance_casts::getB(0:int,&0$?%__sil_tmpSIL_materialize_temp__n$0:inheritance_casts::B*) assign_last [line 30, column 27]\n n$3=_fun_inheritance_casts::div(&0$?%__sil_tmpSIL_materialize_temp__n$0:inheritance_casts::B const &) [line 30, column 23]\n *&return:int=n$3 [line 30, column 16]\n EXIT_SCOPE(n$2,n$3,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 30, column 16]\n APPLY_ABSTRACTION; [line 30, column 16]\n " shape="box"] +"div0_B#inheritance_casts#9651791439006644302.4d2c177357a796fa9b436df4f92f3de8_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:inheritance_casts::B const ); [line 30, column 27]\n n$5=_fun_inheritance_casts::getB(0:int,&0$?%__sil_tmpSIL_materialize_temp__n$0:inheritance_casts::B*) assign_last [line 30, column 27]\n n$6=_fun_inheritance_casts::div(&0$?%__sil_tmpSIL_materialize_temp__n$0:inheritance_casts::B const &) [line 30, column 23]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:inheritance_casts::B const [line 30, column 34]\n n$2=_fun_inheritance_casts::B::~B(&0$?%__sil_tmpSIL_materialize_temp__n$0:inheritance_casts::B const *) injected [line 30, column 34]\n *&return:int=n$6 [line 30, column 16]\n EXIT_SCOPE(_,n$2,n$5,n$6,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 30, column 16]\n APPLY_ABSTRACTION; [line 30, column 16]\n " shape="box"] "div0_B#inheritance_casts#9651791439006644302.4d2c177357a796fa9b436df4f92f3de8_3" -> "div0_B#inheritance_casts#9651791439006644302.4d2c177357a796fa9b436df4f92f3de8_2" ; @@ -40,7 +40,7 @@ digraph cfg { "div1_A#inheritance_casts#14706027417800210732.96d94ec773e2890c763d57de8a52982b_2" [label="2: Exit inheritance_casts::div1_A \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$0); [line 28, column 37]\n " color=yellow style=filled] -"div1_A#inheritance_casts#14706027417800210732.96d94ec773e2890c763d57de8a52982b_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:inheritance_casts::A const ); [line 28, column 27]\n n$2=_fun_inheritance_casts::getA(1:int,&0$?%__sil_tmpSIL_materialize_temp__n$0:inheritance_casts::A*) assign_last [line 28, column 27]\n n$3=_fun_inheritance_casts::div(&0$?%__sil_tmpSIL_materialize_temp__n$0:inheritance_casts::A const &) [line 28, column 23]\n *&return:int=n$3 [line 28, column 16]\n EXIT_SCOPE(n$2,n$3,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 28, column 16]\n APPLY_ABSTRACTION; [line 28, column 16]\n " shape="box"] +"div1_A#inheritance_casts#14706027417800210732.96d94ec773e2890c763d57de8a52982b_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:inheritance_casts::A const ); [line 28, column 27]\n n$5=_fun_inheritance_casts::getA(1:int,&0$?%__sil_tmpSIL_materialize_temp__n$0:inheritance_casts::A*) assign_last [line 28, column 27]\n n$6=_fun_inheritance_casts::div(&0$?%__sil_tmpSIL_materialize_temp__n$0:inheritance_casts::A const &) [line 28, column 23]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:inheritance_casts::A const [line 28, column 34]\n n$2=_fun_inheritance_casts::A::~A(&0$?%__sil_tmpSIL_materialize_temp__n$0:inheritance_casts::A const *) injected [line 28, column 34]\n *&return:int=n$6 [line 28, column 16]\n EXIT_SCOPE(_,n$2,n$5,n$6,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 28, column 16]\n APPLY_ABSTRACTION; [line 28, column 16]\n " shape="box"] "div1_A#inheritance_casts#14706027417800210732.96d94ec773e2890c763d57de8a52982b_3" -> "div1_A#inheritance_casts#14706027417800210732.96d94ec773e2890c763d57de8a52982b_2" ; @@ -51,7 +51,7 @@ digraph cfg { "div1_B#inheritance_casts#15202051198007397773.6fa30ed113dcaca42095f52f33fb0c86_2" [label="2: Exit inheritance_casts::div1_B \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$0); [line 32, column 37]\n " color=yellow style=filled] -"div1_B#inheritance_casts#15202051198007397773.6fa30ed113dcaca42095f52f33fb0c86_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:inheritance_casts::B const ); [line 32, column 27]\n n$2=_fun_inheritance_casts::getB(1:int,&0$?%__sil_tmpSIL_materialize_temp__n$0:inheritance_casts::B*) assign_last [line 32, column 27]\n n$3=_fun_inheritance_casts::div(&0$?%__sil_tmpSIL_materialize_temp__n$0:inheritance_casts::B const &) [line 32, column 23]\n *&return:int=n$3 [line 32, column 16]\n EXIT_SCOPE(n$2,n$3,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 32, column 16]\n APPLY_ABSTRACTION; [line 32, column 16]\n " shape="box"] +"div1_B#inheritance_casts#15202051198007397773.6fa30ed113dcaca42095f52f33fb0c86_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:inheritance_casts::B const ); [line 32, column 27]\n n$5=_fun_inheritance_casts::getB(1:int,&0$?%__sil_tmpSIL_materialize_temp__n$0:inheritance_casts::B*) assign_last [line 32, column 27]\n n$6=_fun_inheritance_casts::div(&0$?%__sil_tmpSIL_materialize_temp__n$0:inheritance_casts::B const &) [line 32, column 23]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:inheritance_casts::B const [line 32, column 34]\n n$2=_fun_inheritance_casts::B::~B(&0$?%__sil_tmpSIL_materialize_temp__n$0:inheritance_casts::B const *) injected [line 32, column 34]\n *&return:int=n$6 [line 32, column 16]\n EXIT_SCOPE(_,n$2,n$5,n$6,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 32, column 16]\n APPLY_ABSTRACTION; [line 32, column 16]\n " shape="box"] "div1_B#inheritance_casts#15202051198007397773.6fa30ed113dcaca42095f52f33fb0c86_3" -> "div1_B#inheritance_casts#15202051198007397773.6fa30ed113dcaca42095f52f33fb0c86_2" ; diff --git a/infer/tests/codetoanalyze/cpp/shared/types/return_struct.cpp.dot b/infer/tests/codetoanalyze/cpp/shared/types/return_struct.cpp.dot index 4a7cf7388..2c0175781 100644 --- a/infer/tests/codetoanalyze/cpp/shared/types/return_struct.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/shared/types/return_struct.cpp.dot @@ -30,7 +30,7 @@ digraph cfg { "get_div0#return_struct#3543093399648500387.0c3db3a444952aefeee44e54da50327a_3" -> "get_div0#return_struct#3543093399648500387.0c3db3a444952aefeee44e54da50327a_2" ; -"get_div0#return_struct#3543093399648500387.0c3db3a444952aefeee44e54da50327a_4" [label="4: DeclStmt \n VARIABLE_DECLARED(x:return_struct::X); [line 26, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$4:return_struct::X const ); [line 26, column 9]\n n$6=_fun_return_struct::get(0:int,&0$?%__sil_tmpSIL_materialize_temp__n$4:return_struct::X*) assign_last [line 26, column 9]\n n$7=_fun_return_struct::X::X(&x:return_struct::X*,&0$?%__sil_tmpSIL_materialize_temp__n$4:return_struct::X const &) [line 26, column 9]\n EXIT_SCOPE(n$6,n$7,0$?%__sil_tmpSIL_materialize_temp__n$4); [line 26, column 9]\n " shape="box"] +"get_div0#return_struct#3543093399648500387.0c3db3a444952aefeee44e54da50327a_4" [label="4: DeclStmt \n VARIABLE_DECLARED(x:return_struct::X); [line 26, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$4:return_struct::X const ); [line 26, column 9]\n n$9=_fun_return_struct::get(0:int,&0$?%__sil_tmpSIL_materialize_temp__n$4:return_struct::X*) assign_last [line 26, column 9]\n n$10=_fun_return_struct::X::X(&x:return_struct::X*,&0$?%__sil_tmpSIL_materialize_temp__n$4:return_struct::X const &) [line 26, column 9]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$4:return_struct::X const [line 26, column 14]\n n$6=_fun_return_struct::X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$4:return_struct::X const *) injected [line 26, column 14]\n EXIT_SCOPE(_,n$6,n$9,n$10,0$?%__sil_tmpSIL_materialize_temp__n$4); [line 26, column 14]\n " shape="box"] "get_div0#return_struct#3543093399648500387.0c3db3a444952aefeee44e54da50327a_4" -> "get_div0#return_struct#3543093399648500387.0c3db3a444952aefeee44e54da50327a_3" ; @@ -45,25 +45,29 @@ digraph cfg { "get_div1#return_struct#4287655186293816212.dabfacf04a7d838f8bdc3ef21786303d_3" -> "get_div1#return_struct#4287655186293816212.dabfacf04a7d838f8bdc3ef21786303d_2" ; -"get_div1#return_struct#4287655186293816212.dabfacf04a7d838f8bdc3ef21786303d_4" [label="4: DeclStmt \n VARIABLE_DECLARED(x:return_struct::X); [line 38, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$4:return_struct::X const ); [line 38, column 9]\n n$6=_fun_return_struct::get(1:int,&0$?%__sil_tmpSIL_materialize_temp__n$4:return_struct::X*) assign_last [line 38, column 9]\n n$7=_fun_return_struct::X::X(&x:return_struct::X*,&0$?%__sil_tmpSIL_materialize_temp__n$4:return_struct::X const &) [line 38, column 9]\n EXIT_SCOPE(n$6,n$7,0$?%__sil_tmpSIL_materialize_temp__n$4); [line 38, column 9]\n " shape="box"] +"get_div1#return_struct#4287655186293816212.dabfacf04a7d838f8bdc3ef21786303d_4" [label="4: DeclStmt \n VARIABLE_DECLARED(x:return_struct::X); [line 38, column 3]\n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$4:return_struct::X const ); [line 38, column 9]\n n$9=_fun_return_struct::get(1:int,&0$?%__sil_tmpSIL_materialize_temp__n$4:return_struct::X*) assign_last [line 38, column 9]\n n$10=_fun_return_struct::X::X(&x:return_struct::X*,&0$?%__sil_tmpSIL_materialize_temp__n$4:return_struct::X const &) [line 38, column 9]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$4:return_struct::X const [line 38, column 14]\n n$6=_fun_return_struct::X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$4:return_struct::X const *) injected [line 38, column 14]\n EXIT_SCOPE(_,n$6,n$9,n$10,0$?%__sil_tmpSIL_materialize_temp__n$4); [line 38, column 14]\n " shape="box"] "get_div1#return_struct#4287655186293816212.dabfacf04a7d838f8bdc3ef21786303d_4" -> "get_div1#return_struct#4287655186293816212.dabfacf04a7d838f8bdc3ef21786303d_3" ; -"get_field_div0#return_struct#5765383981880135147.23dc82d8c29aaec22d9b9a68808820c3_1" [label="1: Start return_struct::get_field_div0\nFormals: \nLocals: 0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X 0$?%__sil_tmpSIL_materialize_temp__n$4:return_struct::X \n " color=yellow style=filled] +"get_field_div0#return_struct#5765383981880135147.23dc82d8c29aaec22d9b9a68808820c3_1" [label="1: Start return_struct::get_field_div0\nFormals: \nLocals: 0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X 0$?%__sil_tmpSIL_materialize_temp__n$7:return_struct::X \n " color=yellow style=filled] - "get_field_div0#return_struct#5765383981880135147.23dc82d8c29aaec22d9b9a68808820c3_1" -> "get_field_div0#return_struct#5765383981880135147.23dc82d8c29aaec22d9b9a68808820c3_4" ; -"get_field_div0#return_struct#5765383981880135147.23dc82d8c29aaec22d9b9a68808820c3_2" [label="2: Exit return_struct::get_field_div0 \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$0); [line 33, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$4); [line 33, column 1]\n " color=yellow style=filled] + "get_field_div0#return_struct#5765383981880135147.23dc82d8c29aaec22d9b9a68808820c3_1" -> "get_field_div0#return_struct#5765383981880135147.23dc82d8c29aaec22d9b9a68808820c3_5" ; +"get_field_div0#return_struct#5765383981880135147.23dc82d8c29aaec22d9b9a68808820c3_2" [label="2: Exit return_struct::get_field_div0 \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$7); [line 33, column 1]\n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$0); [line 33, column 1]\n " color=yellow style=filled] -"get_field_div0#return_struct#5765383981880135147.23dc82d8c29aaec22d9b9a68808820c3_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X); [line 32, column 14]\n n$2=_fun_return_struct::get(0:int,&0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X*) assign_last [line 32, column 14]\n n$3=*&0$?%__sil_tmpSIL_materialize_temp__n$0.f:int [line 32, column 14]\n *&return:int=(1 / n$3) [line 32, column 3]\n EXIT_SCOPE(n$2,n$3,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 32, column 3]\n APPLY_ABSTRACTION; [line 32, column 3]\n " shape="box"] +"get_field_div0#return_struct#5765383981880135147.23dc82d8c29aaec22d9b9a68808820c3_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X); [line 32, column 14]\n n$5=_fun_return_struct::get(0:int,&0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X*) assign_last [line 32, column 14]\n n$6=*&0$?%__sil_tmpSIL_materialize_temp__n$0.f:int [line 32, column 14]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X [line 32, column 21]\n n$2=_fun_return_struct::X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X*) injected [line 32, column 21]\n *&return:int=(1 / n$6) [line 32, column 3]\n EXIT_SCOPE(_,n$2,n$5,n$6,0$?%__sil_tmpSIL_materialize_temp__n$0,0$?%__sil_tmpSIL_materialize_temp__n$7); [line 32, column 3]\n APPLY_ABSTRACTION; [line 32, column 3]\n " shape="box"] "get_field_div0#return_struct#5765383981880135147.23dc82d8c29aaec22d9b9a68808820c3_3" -> "get_field_div0#return_struct#5765383981880135147.23dc82d8c29aaec22d9b9a68808820c3_2" ; -"get_field_div0#return_struct#5765383981880135147.23dc82d8c29aaec22d9b9a68808820c3_4" [label="4: Call _fun_return_struct::X::skip \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$4:return_struct::X); [line 31, column 3]\n n$6=_fun_return_struct::get(0:int,&0$?%__sil_tmpSIL_materialize_temp__n$4:return_struct::X*) assign_last [line 31, column 3]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$4:return_struct::X [line 31, column 3]\n n$8=_fun_return_struct::X::skip(&0$?%__sil_tmpSIL_materialize_temp__n$4:return_struct::X&) [line 31, column 3]\n EXIT_SCOPE(_,n$6,n$8,0$?%__sil_tmpSIL_materialize_temp__n$4); [line 31, column 3]\n " shape="box"] +"get_field_div0#return_struct#5765383981880135147.23dc82d8c29aaec22d9b9a68808820c3_4" [label="4: Destruction(temporaries cleanup) \n _=*&0$?%__sil_tmpSIL_materialize_temp__n$7:return_struct::X [line 31, column 15]\n n$9=_fun_return_struct::X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$7:return_struct::X*) injected [line 31, column 15]\n EXIT_SCOPE(_,n$9,0$?%__sil_tmpSIL_materialize_temp__n$7); [line 31, column 15]\n APPLY_ABSTRACTION; [line 31, column 15]\n " shape="box"] "get_field_div0#return_struct#5765383981880135147.23dc82d8c29aaec22d9b9a68808820c3_4" -> "get_field_div0#return_struct#5765383981880135147.23dc82d8c29aaec22d9b9a68808820c3_3" ; +"get_field_div0#return_struct#5765383981880135147.23dc82d8c29aaec22d9b9a68808820c3_5" [label="5: Call _fun_return_struct::X::skip \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$7:return_struct::X); [line 31, column 3]\n n$12=_fun_return_struct::get(0:int,&0$?%__sil_tmpSIL_materialize_temp__n$7:return_struct::X*) assign_last [line 31, column 3]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$7:return_struct::X [line 31, column 3]\n n$14=_fun_return_struct::X::skip(&0$?%__sil_tmpSIL_materialize_temp__n$7:return_struct::X&) [line 31, column 3]\n EXIT_SCOPE(_,n$12,n$14); [line 31, column 3]\n " shape="box"] + + + "get_field_div0#return_struct#5765383981880135147.23dc82d8c29aaec22d9b9a68808820c3_5" -> "get_field_div0#return_struct#5765383981880135147.23dc82d8c29aaec22d9b9a68808820c3_4" ; "get_field_div1#return_struct#6265027354366635900.8e009a5c61cd6a7375811ae0019c838c_1" [label="1: Start return_struct::get_field_div1\nFormals: \nLocals: 0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X \n " color=yellow style=filled] @@ -71,7 +75,7 @@ digraph cfg { "get_field_div1#return_struct#6265027354366635900.8e009a5c61cd6a7375811ae0019c838c_2" [label="2: Exit return_struct::get_field_div1 \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$0); [line 42, column 45]\n " color=yellow style=filled] -"get_field_div1#return_struct#6265027354366635900.8e009a5c61cd6a7375811ae0019c838c_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X); [line 42, column 35]\n n$2=_fun_return_struct::get(1:int,&0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X*) assign_last [line 42, column 35]\n n$3=*&0$?%__sil_tmpSIL_materialize_temp__n$0.f:int [line 42, column 35]\n *&return:int=(1 / n$3) [line 42, column 24]\n EXIT_SCOPE(n$2,n$3,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 42, column 24]\n APPLY_ABSTRACTION; [line 42, column 24]\n " shape="box"] +"get_field_div1#return_struct#6265027354366635900.8e009a5c61cd6a7375811ae0019c838c_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X); [line 42, column 35]\n n$5=_fun_return_struct::get(1:int,&0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X*) assign_last [line 42, column 35]\n n$6=*&0$?%__sil_tmpSIL_materialize_temp__n$0.f:int [line 42, column 35]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X [line 42, column 42]\n n$2=_fun_return_struct::X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X*) injected [line 42, column 42]\n *&return:int=(1 / n$6) [line 42, column 24]\n EXIT_SCOPE(_,n$2,n$5,n$6,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 42, column 24]\n APPLY_ABSTRACTION; [line 42, column 24]\n " shape="box"] "get_field_div1#return_struct#6265027354366635900.8e009a5c61cd6a7375811ae0019c838c_3" -> "get_field_div1#return_struct#6265027354366635900.8e009a5c61cd6a7375811ae0019c838c_2" ; @@ -82,7 +86,7 @@ digraph cfg { "get_method_div0#return_struct#1033779568239724265.1e897486d64ba4a977e56cdd041d6ba7_2" [label="2: Exit return_struct::get_method_div0 \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$0); [line 35, column 46]\n " color=yellow style=filled] -"get_method_div0#return_struct#1033779568239724265.1e897486d64ba4a977e56cdd041d6ba7_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X); [line 35, column 32]\n n$2=_fun_return_struct::get(0:int,&0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X*) assign_last [line 35, column 32]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X [line 35, column 32]\n n$4=_fun_return_struct::X::div(&0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X&) [line 35, column 32]\n *&return:int=n$4 [line 35, column 25]\n EXIT_SCOPE(_,n$2,n$4,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 35, column 25]\n APPLY_ABSTRACTION; [line 35, column 25]\n " shape="box"] +"get_method_div0#return_struct#1033779568239724265.1e897486d64ba4a977e56cdd041d6ba7_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X); [line 35, column 32]\n n$5=_fun_return_struct::get(0:int,&0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X*) assign_last [line 35, column 32]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X [line 35, column 32]\n n$7=_fun_return_struct::X::div(&0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X&) [line 35, column 32]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X [line 35, column 43]\n n$2=_fun_return_struct::X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X*) injected [line 35, column 43]\n *&return:int=n$7 [line 35, column 25]\n EXIT_SCOPE(_,_,n$2,n$5,n$7,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 35, column 25]\n APPLY_ABSTRACTION; [line 35, column 25]\n " shape="box"] "get_method_div0#return_struct#1033779568239724265.1e897486d64ba4a977e56cdd041d6ba7_3" -> "get_method_div0#return_struct#1033779568239724265.1e897486d64ba4a977e56cdd041d6ba7_2" ; @@ -93,7 +97,7 @@ digraph cfg { "get_method_div1#return_struct#1525840708539595762.816387a0cceab2d825a8393a6ca5d5a1_2" [label="2: Exit return_struct::get_method_div1 \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$0); [line 44, column 46]\n " color=yellow style=filled] -"get_method_div1#return_struct#1525840708539595762.816387a0cceab2d825a8393a6ca5d5a1_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X); [line 44, column 32]\n n$2=_fun_return_struct::get(1:int,&0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X*) assign_last [line 44, column 32]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X [line 44, column 32]\n n$4=_fun_return_struct::X::div(&0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X&) [line 44, column 32]\n *&return:int=n$4 [line 44, column 25]\n EXIT_SCOPE(_,n$2,n$4,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 44, column 25]\n APPLY_ABSTRACTION; [line 44, column 25]\n " shape="box"] +"get_method_div1#return_struct#1525840708539595762.816387a0cceab2d825a8393a6ca5d5a1_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X); [line 44, column 32]\n n$5=_fun_return_struct::get(1:int,&0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X*) assign_last [line 44, column 32]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X [line 44, column 32]\n n$7=_fun_return_struct::X::div(&0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X&) [line 44, column 32]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X [line 44, column 43]\n n$2=_fun_return_struct::X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$0:return_struct::X*) injected [line 44, column 43]\n *&return:int=n$7 [line 44, column 25]\n EXIT_SCOPE(_,_,n$2,n$5,n$7,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 44, column 25]\n APPLY_ABSTRACTION; [line 44, column 25]\n " shape="box"] "get_method_div1#return_struct#1525840708539595762.816387a0cceab2d825a8393a6ca5d5a1_3" -> "get_method_div1#return_struct#1525840708539595762.816387a0cceab2d825a8393a6ca5d5a1_2" ; 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 3e02c19f1..adae1a60c 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 @@ -79,25 +79,25 @@ digraph cfg { "set_f#struct_pass_by_value#449985082730240817.3244dc0de9a72d4ec2d03e236d94d06e_3" -> "set_f#struct_pass_by_value#449985082730240817.3244dc0de9a72d4ec2d03e236d94d06e_2" ; -"temp_div0#struct_pass_by_value#12428807554484697371.c8fca64e841f1b138c802c96104d913c_1" [label="1: Start struct_pass_by_value::temp_div0\nFormals: \nLocals: 0$?%__sil_tmp__temp_construct_n$0:struct_pass_by_value::X 0$?%__sil_tmpSIL_materialize_temp__n$1:struct_pass_by_value::X \n " color=yellow style=filled] +"temp_div0#struct_pass_by_value#12428807554484697371.c8fca64e841f1b138c802c96104d913c_1" [label="1: Start struct_pass_by_value::temp_div0\nFormals: \nLocals: 0$?%__sil_tmp__temp_construct_n$4:struct_pass_by_value::X 0$?%__sil_tmpSIL_materialize_temp__n$0:struct_pass_by_value::X \n " color=yellow style=filled] "temp_div0#struct_pass_by_value#12428807554484697371.c8fca64e841f1b138c802c96104d913c_1" -> "temp_div0#struct_pass_by_value#12428807554484697371.c8fca64e841f1b138c802c96104d913c_3" ; -"temp_div0#struct_pass_by_value#12428807554484697371.c8fca64e841f1b138c802c96104d913c_2" [label="2: Exit struct_pass_by_value::temp_div0 \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$1); [line 35, column 43]\n NULLIFY(&0$?%__sil_tmp__temp_construct_n$0); [line 35, column 43]\n " color=yellow style=filled] +"temp_div0#struct_pass_by_value#12428807554484697371.c8fca64e841f1b138c802c96104d913c_2" [label="2: Exit struct_pass_by_value::temp_div0 \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$0); [line 35, column 43]\n NULLIFY(&0$?%__sil_tmp__temp_construct_n$4); [line 35, column 43]\n " color=yellow style=filled] -"temp_div0#struct_pass_by_value#12428807554484697371.c8fca64e841f1b138c802c96104d913c_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:struct_pass_by_value::X); [line 35, column 36]\n n$2=_fun_struct_pass_by_value::X::X(&0$?%__sil_tmpSIL_materialize_temp__n$1:struct_pass_by_value::X*,0:int) [line 35, column 36]\n n$3=_fun_struct_pass_by_value::X::X(&0$?%__sil_tmp__temp_construct_n$0:struct_pass_by_value::X*,&0$?%__sil_tmpSIL_materialize_temp__n$1:struct_pass_by_value::X&) [line 35, column 36]\n n$4=_fun_struct_pass_by_value::get_f(&0$?%__sil_tmp__temp_construct_n$0:struct_pass_by_value::X) [line 35, column 30]\n *&return:int=(1 / n$4) [line 35, column 19]\n EXIT_SCOPE(n$2,n$3,n$4,0$?%__sil_tmpSIL_materialize_temp__n$1); [line 35, column 19]\n APPLY_ABSTRACTION; [line 35, column 19]\n " shape="box"] +"temp_div0#struct_pass_by_value#12428807554484697371.c8fca64e841f1b138c802c96104d913c_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:struct_pass_by_value::X); [line 35, column 36]\n n$5=_fun_struct_pass_by_value::X::X(&0$?%__sil_tmpSIL_materialize_temp__n$0:struct_pass_by_value::X*,0:int) [line 35, column 36]\n n$6=_fun_struct_pass_by_value::X::X(&0$?%__sil_tmp__temp_construct_n$4:struct_pass_by_value::X*,&0$?%__sil_tmpSIL_materialize_temp__n$0:struct_pass_by_value::X&) [line 35, column 36]\n n$7=_fun_struct_pass_by_value::get_f(&0$?%__sil_tmp__temp_construct_n$4:struct_pass_by_value::X) [line 35, column 30]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:struct_pass_by_value::X [line 35, column 40]\n n$2=_fun_struct_pass_by_value::X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$0:struct_pass_by_value::X*) injected [line 35, column 40]\n *&return:int=(1 / n$7) [line 35, column 19]\n EXIT_SCOPE(_,n$2,n$5,n$6,n$7,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 35, column 19]\n APPLY_ABSTRACTION; [line 35, column 19]\n " shape="box"] "temp_div0#struct_pass_by_value#12428807554484697371.c8fca64e841f1b138c802c96104d913c_3" -> "temp_div0#struct_pass_by_value#12428807554484697371.c8fca64e841f1b138c802c96104d913c_2" ; -"temp_div1#struct_pass_by_value#13173334156757910444.11618e43948d09c7324724af84bc0d5b_1" [label="1: Start struct_pass_by_value::temp_div1\nFormals: \nLocals: 0$?%__sil_tmp__temp_construct_n$0:struct_pass_by_value::X 0$?%__sil_tmpSIL_materialize_temp__n$1:struct_pass_by_value::X \n " color=yellow style=filled] +"temp_div1#struct_pass_by_value#13173334156757910444.11618e43948d09c7324724af84bc0d5b_1" [label="1: Start struct_pass_by_value::temp_div1\nFormals: \nLocals: 0$?%__sil_tmp__temp_construct_n$4:struct_pass_by_value::X 0$?%__sil_tmpSIL_materialize_temp__n$0:struct_pass_by_value::X \n " color=yellow style=filled] "temp_div1#struct_pass_by_value#13173334156757910444.11618e43948d09c7324724af84bc0d5b_1" -> "temp_div1#struct_pass_by_value#13173334156757910444.11618e43948d09c7324724af84bc0d5b_3" ; -"temp_div1#struct_pass_by_value#13173334156757910444.11618e43948d09c7324724af84bc0d5b_2" [label="2: Exit struct_pass_by_value::temp_div1 \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$1); [line 37, column 43]\n NULLIFY(&0$?%__sil_tmp__temp_construct_n$0); [line 37, column 43]\n " color=yellow style=filled] +"temp_div1#struct_pass_by_value#13173334156757910444.11618e43948d09c7324724af84bc0d5b_2" [label="2: Exit struct_pass_by_value::temp_div1 \n NULLIFY(&0$?%__sil_tmpSIL_materialize_temp__n$0); [line 37, column 43]\n NULLIFY(&0$?%__sil_tmp__temp_construct_n$4); [line 37, column 43]\n " color=yellow style=filled] -"temp_div1#struct_pass_by_value#13173334156757910444.11618e43948d09c7324724af84bc0d5b_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$1:struct_pass_by_value::X); [line 37, column 36]\n n$2=_fun_struct_pass_by_value::X::X(&0$?%__sil_tmpSIL_materialize_temp__n$1:struct_pass_by_value::X*,1:int) [line 37, column 36]\n n$3=_fun_struct_pass_by_value::X::X(&0$?%__sil_tmp__temp_construct_n$0:struct_pass_by_value::X*,&0$?%__sil_tmpSIL_materialize_temp__n$1:struct_pass_by_value::X&) [line 37, column 36]\n n$4=_fun_struct_pass_by_value::get_f(&0$?%__sil_tmp__temp_construct_n$0:struct_pass_by_value::X) [line 37, column 30]\n *&return:int=(1 / n$4) [line 37, column 19]\n EXIT_SCOPE(n$2,n$3,n$4,0$?%__sil_tmpSIL_materialize_temp__n$1); [line 37, column 19]\n APPLY_ABSTRACTION; [line 37, column 19]\n " shape="box"] +"temp_div1#struct_pass_by_value#13173334156757910444.11618e43948d09c7324724af84bc0d5b_3" [label="3: Return Stmt \n VARIABLE_DECLARED(0$?%__sil_tmpSIL_materialize_temp__n$0:struct_pass_by_value::X); [line 37, column 36]\n n$5=_fun_struct_pass_by_value::X::X(&0$?%__sil_tmpSIL_materialize_temp__n$0:struct_pass_by_value::X*,1:int) [line 37, column 36]\n n$6=_fun_struct_pass_by_value::X::X(&0$?%__sil_tmp__temp_construct_n$4:struct_pass_by_value::X*,&0$?%__sil_tmpSIL_materialize_temp__n$0:struct_pass_by_value::X&) [line 37, column 36]\n n$7=_fun_struct_pass_by_value::get_f(&0$?%__sil_tmp__temp_construct_n$4:struct_pass_by_value::X) [line 37, column 30]\n _=*&0$?%__sil_tmpSIL_materialize_temp__n$0:struct_pass_by_value::X [line 37, column 40]\n n$2=_fun_struct_pass_by_value::X::~X(&0$?%__sil_tmpSIL_materialize_temp__n$0:struct_pass_by_value::X*) injected [line 37, column 40]\n *&return:int=(1 / n$7) [line 37, column 19]\n EXIT_SCOPE(_,n$2,n$5,n$6,n$7,0$?%__sil_tmpSIL_materialize_temp__n$0); [line 37, column 19]\n APPLY_ABSTRACTION; [line 37, column 19]\n " shape="box"] "temp_div1#struct_pass_by_value#13173334156757910444.11618e43948d09c7324724af84bc0d5b_3" -> "temp_div1#struct_pass_by_value#13173334156757910444.11618e43948d09c7324724af84bc0d5b_2" ; diff --git a/infer/tests/codetoanalyze/cpp/uninit/issues.exp b/infer/tests/codetoanalyze/cpp/uninit/issues.exp index 15110f6f1..3e3bcce5a 100644 --- a/infer/tests/codetoanalyze/cpp/uninit/issues.exp +++ b/infer/tests/codetoanalyze/cpp/uninit/issues.exp @@ -16,6 +16,7 @@ codetoanalyze/cpp/uninit/uninit.cpp, bad1, 2, UNINITIALIZED_VALUE, no_bucket, ER codetoanalyze/cpp/uninit/uninit.cpp, bad2, 2, UNINITIALIZED_VALUE, no_bucket, ERROR, [] codetoanalyze/cpp/uninit/uninit.cpp, branch1_FP, 11, UNINITIALIZED_VALUE, no_bucket, ERROR, [] codetoanalyze/cpp/uninit/uninit.cpp, capture_by_ref_init2_FP, 4, UNINITIALIZED_VALUE, no_bucket, ERROR, [] +codetoanalyze/cpp/uninit/uninit.cpp, capture_by_ref_init2_FP, 4, UNINITIALIZED_VALUE, no_bucket, ERROR, [] codetoanalyze/cpp/uninit/uninit.cpp, capture_by_ref_init_FP, 3, UNINITIALIZED_VALUE, no_bucket, ERROR, [] codetoanalyze/cpp/uninit/uninit.cpp, condition_no_init_bad, 2, UNINITIALIZED_VALUE, no_bucket, ERROR, [] codetoanalyze/cpp/uninit/uninit.cpp, copy_pointer_bad, 3, UNINITIALIZED_VALUE, no_bucket, ERROR, []