diff --git a/infer/src/clang/cTrans.ml b/infer/src/clang/cTrans.ml index 5a6d6b9c9..c21262757 100644 --- a/infer/src/clang/cTrans.ml +++ b/infer/src/clang/cTrans.ml @@ -1526,7 +1526,9 @@ module CTrans_funct (F : CModule_type.CFrontend) : CModule_type.CTranslation = s Procdesc.append_locals procdesc [(Pvar.get_name pvar, var_typ)] ; let continuation' = mk_cond_continuation trans_state.continuation in let trans_state' = {trans_state with continuation= continuation'; succ_nodes= []} in - let res_trans_cond = exec_with_priority_exception trans_state' cond cond_trans in + let res_trans_cond = + exec_with_priority_exception trans_state' cond (cond_trans ~negate_cond:false) + in (* Note: by contruction prune nodes are leafs_nodes_cond *) do_branch true exp1 var_typ res_trans_cond.leaf_nodes join_node pvar ; do_branch false exp2 var_typ res_trans_cond.leaf_nodes join_node pvar ; @@ -1573,11 +1575,13 @@ module CTrans_funct (F : CModule_type.CFrontend) : CModule_type.CTranslation = s (* Translate a condition for if/loops statement. It shorts-circuit and/or. *) (* The invariant is that the translation of a condition always contains (at least) *) (* the prune nodes. Moreover these are always the leaf nodes of the translation. *) - and cond_trans trans_state cond = + and cond_trans ~negate_cond trans_state cond = let context = trans_state.context in let si, _ = Clang_ast_proj.get_stmt_tuple cond in let sil_loc = CLocation.get_sil_location si context in - let mk_prune_node b e ins = create_prune_node b e ins sil_loc Sil.Ik_if context in + let mk_prune_node ~branch ~negate_cond e ins = + create_prune_node ~branch ~negate_cond e ins sil_loc Sil.Ik_if context + in let extract_exp el = extract_exp_from_list el "@\nWARNING: Missing expression for Conditional operator. Need to be fixed" @@ -1609,13 +1613,13 @@ module CTrans_funct (F : CModule_type.CFrontend) : CModule_type.CTranslation = s let e', instrs' = define_condition_side_effects res_trans_cond.exps res_trans_cond.instrs sil_loc in - let prune_t = mk_prune_node true e' instrs' in - let prune_f = mk_prune_node false e' instrs' in + let prune_t = mk_prune_node ~branch:true ~negate_cond e' instrs' in + let prune_f = mk_prune_node ~branch:false ~negate_cond:(not negate_cond) e' instrs' in List.iter ~f:(fun n' -> Procdesc.node_set_succs_exn context.procdesc n' [prune_t; prune_f] []) res_trans_cond.leaf_nodes ; let rnodes = - if Int.equal (List.length res_trans_cond.root_nodes) 0 then [prune_t; prune_f] + if List.is_empty res_trans_cond.root_nodes then [prune_t; prune_f] else res_trans_cond.root_nodes in { empty_res_trans with @@ -1629,11 +1633,11 @@ module CTrans_funct (F : CModule_type.CFrontend) : CModule_type.CTranslation = s (* translation of s2 (i.e., the case when we need to fully evaluate*) (* the condition to decide its truth value). *) let short_circuit binop s1 s2 = - let res_trans_s1 = cond_trans trans_state s1 in + let res_trans_s1 = cond_trans ~negate_cond trans_state s1 in let prune_nodes_t, prune_nodes_f = List.partition_tf ~f:is_true_prune_node res_trans_s1.leaf_nodes in - let res_trans_s2 = cond_trans trans_state s2 in + let res_trans_s2 = cond_trans ~negate_cond trans_state s2 in (* prune_to_s2 is the prune node that is connected with the root node of the *) (* translation of s2.*) (* prune_to_short_c is the prune node that is connected directly with the branch *) @@ -1651,7 +1655,7 @@ module CTrans_funct (F : CModule_type.CFrontend) : CModule_type.CTranslation = s ~f:(fun n -> Procdesc.node_set_succs_exn context.procdesc n res_trans_s2.root_nodes []) prune_to_s2 ; let root_nodes_to_parent = - if Int.equal (List.length res_trans_s1.root_nodes) 0 then res_trans_s1.leaf_nodes + if List.is_empty res_trans_s1.root_nodes then res_trans_s1.leaf_nodes else res_trans_s1.root_nodes in let exp1, typ1 = extract_exp res_trans_s1.exps in @@ -1668,18 +1672,20 @@ module CTrans_funct (F : CModule_type.CFrontend) : CModule_type.CTranslation = s let open Clang_ast_t in match cond with | BinaryOperator (_, [s1; s2], _, boi) -> ( - match boi.Clang_ast_t.boi_kind with + match boi.boi_kind with | `LAnd - -> short_circuit Binop.LAnd s1 s2 + -> short_circuit (if negate_cond then Binop.LOr else Binop.LAnd) s1 s2 | `LOr - -> short_circuit Binop.LOr s1 s2 + -> short_circuit (if negate_cond then Binop.LAnd else Binop.LOr) s1 s2 | `LT | `GT | `LE | `GE | `EQ | `NE -> no_short_circuit_cond ~is_cmp:true | _ -> no_short_circuit_cond ~is_cmp:false ) | ParenExpr (_, [s], _) -> (* condition can be wrapped in parenthesys *) - cond_trans trans_state s + cond_trans ~negate_cond trans_state s + | UnaryOperator (_, [s], _, {uoi_kind= `LNot}) + -> cond_trans ~negate_cond:(not negate_cond) trans_state s | _ -> no_short_circuit_cond ~is_cmp:false @@ -1720,7 +1726,7 @@ module CTrans_funct (F : CModule_type.CFrontend) : CModule_type.CTranslation = s -> (* set the flat to inform that we are translating a condition of a if *) let continuation' = mk_cond_continuation trans_state.continuation in let trans_state'' = {trans_state with continuation= continuation'; succ_nodes= []} in - let res_trans_cond = cond_trans trans_state'' cond in + let res_trans_cond = cond_trans ~negate_cond:false trans_state'' cond in let res_trans_decl = declStmt_in_condition_trans trans_state decl_stmt res_trans_cond in (* Note: by contruction prune nodes are leafs_nodes_cond *) do_branch true stmt1 res_trans_cond.leaf_nodes ; @@ -1837,12 +1843,14 @@ module CTrans_funct (F : CModule_type.CFrontend) : CModule_type.CTranslation = s let sil_eq_cond = Exp.BinOp (Binop.Eq, switch_e_cond', e_const') in let sil_loc = CLocation.get_sil_location stmt_info context in let true_prune_node = - create_prune_node true [(sil_eq_cond, switch_e_cond'_typ)] - res_trans_case_const.instrs sil_loc Sil.Ik_switch context + create_prune_node ~branch:true ~negate_cond:false + [(sil_eq_cond, switch_e_cond'_typ)] res_trans_case_const.instrs sil_loc + Sil.Ik_switch context in let false_prune_node = - create_prune_node false [(sil_eq_cond, switch_e_cond'_typ)] - res_trans_case_const.instrs sil_loc Sil.Ik_switch context + create_prune_node ~branch:false ~negate_cond:true + [(sil_eq_cond, switch_e_cond'_typ)] res_trans_case_const.instrs sil_loc + Sil.Ik_switch context in (true_prune_node, false_prune_node) | _ @@ -1928,7 +1936,7 @@ module CTrans_funct (F : CModule_type.CFrontend) : CModule_type.CTranslation = s in let cond_stmt = Loops.get_cond loop_kind in let trans_state_cond = {trans_state with continuation= continuation_cond; succ_nodes= []} in - let res_trans_cond = cond_trans trans_state_cond cond_stmt in + let res_trans_cond = cond_trans ~negate_cond:false trans_state_cond cond_stmt in let decl_stmt_opt = match loop_kind with | Loops.For (_, decl_stmt, _, _, _) diff --git a/infer/src/clang/cTrans_utils.ml b/infer/src/clang/cTrans_utils.ml index af0150d67..5e3401755 100644 --- a/infer/src/clang/cTrans_utils.ml +++ b/infer/src/clang/cTrans_utils.ml @@ -49,12 +49,12 @@ module Nodes = struct let procdesc = CContext.get_procdesc context in Procdesc.create_node procdesc loc node_kind instrs - let create_prune_node branch e_cond instrs_cond loc ik context = + let create_prune_node ~branch ~negate_cond e_cond instrs_cond loc ik context = let e_cond', _ = extract_exp_from_list e_cond "@\nWARNING: Missing expression for Conditional operator. Need to be fixed" in - let e_cond'' = if branch then e_cond' else Exp.UnOp (Unop.LNot, e_cond', None) in + let e_cond'' = if negate_cond then Exp.UnOp (Unop.LNot, e_cond', None) else e_cond' in let instrs_cond' = instrs_cond @ [Sil.Prune (e_cond'', loc, branch, ik)] in create_node (prune_kind branch) instrs_cond' loc context diff --git a/infer/src/clang/cTrans_utils.mli b/infer/src/clang/cTrans_utils.mli index 9e763fd0a..d00c8e5b2 100644 --- a/infer/src/clang/cTrans_utils.mli +++ b/infer/src/clang/cTrans_utils.mli @@ -125,8 +125,8 @@ module Nodes : sig val is_join_node : Procdesc.Node.t -> bool val create_prune_node : - bool -> (Exp.t * Typ.t) list -> Sil.instr list -> Location.t -> Sil.if_kind -> CContext.t - -> Procdesc.Node.t + branch:bool -> negate_cond:bool -> (Exp.t * Typ.t) list -> Sil.instr list -> Location.t + -> Sil.if_kind -> CContext.t -> Procdesc.Node.t val is_prune_node : Procdesc.Node.t -> bool diff --git a/infer/tests/codetoanalyze/c/bufferoverrun/issues.exp b/infer/tests/codetoanalyze/c/bufferoverrun/issues.exp index 4a1809eda..d1cbfb852 100644 --- a/infer/tests/codetoanalyze/c/bufferoverrun/issues.exp +++ b/infer/tests/codetoanalyze/c/bufferoverrun/issues.exp @@ -57,15 +57,11 @@ codetoanalyze/c/bufferoverrun/prune_alias.c, prune_alias_le_Ok, 3, CONDITION_ALW codetoanalyze/c/bufferoverrun/prune_alias.c, prune_alias_lt_Ok, 3, CONDITION_ALWAYS_FALSE, [] codetoanalyze/c/bufferoverrun/prune_alias.c, prune_alias_ne_Ok, 3, CONDITION_ALWAYS_FALSE, [] codetoanalyze/c/bufferoverrun/prune_alias.c, prune_alias_not_Ok, 3, CONDITION_ALWAYS_FALSE, [] -codetoanalyze/c/bufferoverrun/prune_alias.c, prune_alias_not_Ok, 3, CONDITION_ALWAYS_TRUE, [] codetoanalyze/c/bufferoverrun/prune_alias.c, prune_alias_not_Ok, 7, CONDITION_ALWAYS_FALSE, [] -codetoanalyze/c/bufferoverrun/prune_alias.c, prune_alias_not_Ok, 7, CONDITION_ALWAYS_TRUE, [] codetoanalyze/c/bufferoverrun/prune_alias.c, prune_alias_not_Ok, 11, CONDITION_ALWAYS_FALSE, [] -codetoanalyze/c/bufferoverrun/prune_alias.c, prune_alias_not_Ok, 11, CONDITION_ALWAYS_TRUE, [] codetoanalyze/c/bufferoverrun/prune_alias.c, prune_alias_or_Ok, 3, CONDITION_ALWAYS_FALSE, [] codetoanalyze/c/bufferoverrun/prune_alias.c, prune_alias_or_Ok, 3, CONDITION_ALWAYS_FALSE, [] codetoanalyze/c/bufferoverrun/prune_constant.c, prune_constant_false_Ok, 3, CONDITION_ALWAYS_FALSE, [] -codetoanalyze/c/bufferoverrun/prune_constant.c, prune_constant_not_Bad, 3, CONDITION_ALWAYS_FALSE, [] codetoanalyze/c/bufferoverrun/prune_constant.c, prune_constant_not_Bad, 3, CONDITION_ALWAYS_TRUE, [] codetoanalyze/c/bufferoverrun/prune_constant.c, prune_constant_not_Bad, 4, BUFFER_OVERRUN_L1, [ArrayDeclaration,Assignment,ArrayAccess: Offset: [1, 1] Size: [1, 1]] codetoanalyze/c/bufferoverrun/prune_constant.c, prune_constant_true_Ok, 3, CONDITION_ALWAYS_TRUE, [] diff --git a/infer/tests/codetoanalyze/c/frontend/conditional_operator/if_short_circuit.c.dot b/infer/tests/codetoanalyze/c/frontend/conditional_operator/if_short_circuit.c.dot index 75b164cc2..c1497f2fc 100644 --- a/infer/tests/codetoanalyze/c/frontend/conditional_operator/if_short_circuit.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/conditional_operator/if_short_circuit.c.dot @@ -1,126 +1,63 @@ /* @generated */ digraph iCFG { -"test_loop.254a9d372f8f45542e409771135b9322_1" [label="1: Start test_loop\nFormals: \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:int 0$?%__sil_tmpSIL_temp_conditional___n$3:int 0$?%__sil_tmpSIL_temp_conditional___n$7:int block_size:char* spec:char* \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0,&0$?%__sil_tmpSIL_temp_conditional___n$3,&0$?%__sil_tmpSIL_temp_conditional___n$7,&block_size,&spec); [line 29, column 1]\n " color=yellow style=filled] +"test_loop.254a9d372f8f45542e409771135b9322_1" [label="1: Start test_loop\nFormals: \nLocals: block_size:char* spec:char* \n DECLARE_LOCALS(&return,&block_size,&spec); [line 29, column 1]\n " color=yellow style=filled] - "test_loop.254a9d372f8f45542e409771135b9322_1" -> "test_loop.254a9d372f8f45542e409771135b9322_28" ; + "test_loop.254a9d372f8f45542e409771135b9322_1" -> "test_loop.254a9d372f8f45542e409771135b9322_13" ; "test_loop.254a9d372f8f45542e409771135b9322_2" [label="2: Exit test_loop \n " color=yellow style=filled] "test_loop.254a9d372f8f45542e409771135b9322_3" [label="3: + \n " ] + "test_loop.254a9d372f8f45542e409771135b9322_3" -> "test_loop.254a9d372f8f45542e409771135b9322_4" ; "test_loop.254a9d372f8f45542e409771135b9322_3" -> "test_loop.254a9d372f8f45542e409771135b9322_5" ; - "test_loop.254a9d372f8f45542e409771135b9322_3" -> "test_loop.254a9d372f8f45542e409771135b9322_6" ; -"test_loop.254a9d372f8f45542e409771135b9322_4" [label="4: + \n " ] +"test_loop.254a9d372f8f45542e409771135b9322_4" [label="4: Prune (true branch) \n n$0=*&spec:char* [line 36, column 12]\n PRUNE(!n$0, true); [line 36, column 12]\n " shape="invhouse"] - "test_loop.254a9d372f8f45542e409771135b9322_4" -> "test_loop.254a9d372f8f45542e409771135b9322_9" ; - "test_loop.254a9d372f8f45542e409771135b9322_4" -> "test_loop.254a9d372f8f45542e409771135b9322_10" ; -"test_loop.254a9d372f8f45542e409771135b9322_5" [label="5: Prune (true branch) \n n$1=*&spec:char* [line 36, column 12]\n PRUNE(n$1, true); [line 36, column 12]\n " shape="invhouse"] + "test_loop.254a9d372f8f45542e409771135b9322_4" -> "test_loop.254a9d372f8f45542e409771135b9322_6" ; +"test_loop.254a9d372f8f45542e409771135b9322_5" [label="5: Prune (false branch) \n n$0=*&spec:char* [line 36, column 12]\n PRUNE(n$0, false); [line 36, column 12]\n " shape="invhouse"] - "test_loop.254a9d372f8f45542e409771135b9322_5" -> "test_loop.254a9d372f8f45542e409771135b9322_7" ; -"test_loop.254a9d372f8f45542e409771135b9322_6" [label="6: Prune (false branch) \n n$1=*&spec:char* [line 36, column 12]\n PRUNE(!n$1, false); [line 36, column 12]\n " shape="invhouse"] + "test_loop.254a9d372f8f45542e409771135b9322_5" -> "test_loop.254a9d372f8f45542e409771135b9322_2" ; +"test_loop.254a9d372f8f45542e409771135b9322_6" [label="6: BinaryOperatorStmt: Assign \n n$1=_fun_getenv(\"BLOCK_SIZE\":char const *) [line 36, column 29]\n *&spec:char*=n$1 [line 36, column 22]\n n$2=*&spec:char* [line 36, column 22]\n " shape="box"] + "test_loop.254a9d372f8f45542e409771135b9322_6" -> "test_loop.254a9d372f8f45542e409771135b9322_7" ; "test_loop.254a9d372f8f45542e409771135b9322_6" -> "test_loop.254a9d372f8f45542e409771135b9322_8" ; -"test_loop.254a9d372f8f45542e409771135b9322_7" [label="7: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int=0 [line 36, column 11]\n " shape="box"] +"test_loop.254a9d372f8f45542e409771135b9322_7" [label="7: Prune (true branch) \n PRUNE(!n$2, true); [line 36, column 22]\n " shape="invhouse"] - "test_loop.254a9d372f8f45542e409771135b9322_7" -> "test_loop.254a9d372f8f45542e409771135b9322_4" ; -"test_loop.254a9d372f8f45542e409771135b9322_8" [label="8: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int=1 [line 36, column 11]\n " shape="box"] + "test_loop.254a9d372f8f45542e409771135b9322_7" -> "test_loop.254a9d372f8f45542e409771135b9322_9" ; +"test_loop.254a9d372f8f45542e409771135b9322_8" [label="8: Prune (false branch) \n PRUNE(n$2, false); [line 36, column 22]\n " shape="invhouse"] - "test_loop.254a9d372f8f45542e409771135b9322_8" -> "test_loop.254a9d372f8f45542e409771135b9322_4" ; -"test_loop.254a9d372f8f45542e409771135b9322_9" [label="9: Prune (true branch) \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 36, column 11]\n PRUNE(n$2, true); [line 36, column 11]\n " shape="invhouse"] + "test_loop.254a9d372f8f45542e409771135b9322_8" -> "test_loop.254a9d372f8f45542e409771135b9322_2" ; +"test_loop.254a9d372f8f45542e409771135b9322_9" [label="9: BinaryOperatorStmt: Assign \n n$3=_fun_getenv(\"BLOCKSIZE\":char const *) [line 37, column 20]\n *&spec:char*=n$3 [line 37, column 13]\n n$4=*&spec:char* [line 37, column 13]\n " shape="box"] - "test_loop.254a9d372f8f45542e409771135b9322_9" -> "test_loop.254a9d372f8f45542e409771135b9322_12" ; -"test_loop.254a9d372f8f45542e409771135b9322_10" [label="10: Prune (false branch) \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 36, column 11]\n PRUNE(!n$2, false); [line 36, column 11]\n " shape="invhouse"] + "test_loop.254a9d372f8f45542e409771135b9322_9" -> "test_loop.254a9d372f8f45542e409771135b9322_10" ; + "test_loop.254a9d372f8f45542e409771135b9322_9" -> "test_loop.254a9d372f8f45542e409771135b9322_11" ; +"test_loop.254a9d372f8f45542e409771135b9322_10" [label="10: Prune (true branch) \n PRUNE(!n$4, true); [line 37, column 13]\n " shape="invhouse"] - "test_loop.254a9d372f8f45542e409771135b9322_10" -> "test_loop.254a9d372f8f45542e409771135b9322_2" ; -"test_loop.254a9d372f8f45542e409771135b9322_11" [label="11: + \n " ] + "test_loop.254a9d372f8f45542e409771135b9322_10" -> "test_loop.254a9d372f8f45542e409771135b9322_12" ; +"test_loop.254a9d372f8f45542e409771135b9322_11" [label="11: Prune (false branch) \n PRUNE(n$4, false); [line 37, column 13]\n " shape="invhouse"] - "test_loop.254a9d372f8f45542e409771135b9322_11" -> "test_loop.254a9d372f8f45542e409771135b9322_17" ; - "test_loop.254a9d372f8f45542e409771135b9322_11" -> "test_loop.254a9d372f8f45542e409771135b9322_18" ; -"test_loop.254a9d372f8f45542e409771135b9322_12" [label="12: BinaryOperatorStmt: Assign \n n$4=_fun_getenv(\"BLOCK_SIZE\":char const *) [line 36, column 29]\n *&spec:char*=n$4 [line 36, column 22]\n n$5=*&spec:char* [line 36, column 22]\n " shape="box"] + "test_loop.254a9d372f8f45542e409771135b9322_11" -> "test_loop.254a9d372f8f45542e409771135b9322_2" ; +"test_loop.254a9d372f8f45542e409771135b9322_12" [label="12: BinaryOperatorStmt: Assign \n *&block_size:char*=null [line 38, column 5]\n " shape="box"] - "test_loop.254a9d372f8f45542e409771135b9322_12" -> "test_loop.254a9d372f8f45542e409771135b9322_13" ; - "test_loop.254a9d372f8f45542e409771135b9322_12" -> "test_loop.254a9d372f8f45542e409771135b9322_14" ; -"test_loop.254a9d372f8f45542e409771135b9322_13" [label="13: Prune (true branch) \n PRUNE(n$5, true); [line 36, column 22]\n " shape="invhouse"] + "test_loop.254a9d372f8f45542e409771135b9322_12" -> "test_loop.254a9d372f8f45542e409771135b9322_3" ; +"test_loop.254a9d372f8f45542e409771135b9322_13" [label="13: BinaryOperatorStmt: Assign \n n$5=_fun_getenv(\"BLOCK\":char const *) [line 34, column 10]\n *&spec:char*=n$5 [line 34, column 3]\n " shape="box"] - "test_loop.254a9d372f8f45542e409771135b9322_13" -> "test_loop.254a9d372f8f45542e409771135b9322_15" ; -"test_loop.254a9d372f8f45542e409771135b9322_14" [label="14: Prune (false branch) \n PRUNE(!n$5, false); [line 36, column 22]\n " shape="invhouse"] + "test_loop.254a9d372f8f45542e409771135b9322_13" -> "test_loop.254a9d372f8f45542e409771135b9322_3" ; +"main.fad58de7366495db4650cfefac2fcd61_1" [label="1: Start main\nFormals: \nLocals: block_size:char* spec:char* \n DECLARE_LOCALS(&return,&block_size,&spec); [line 42, column 1]\n " color=yellow style=filled] - "test_loop.254a9d372f8f45542e409771135b9322_14" -> "test_loop.254a9d372f8f45542e409771135b9322_16" ; -"test_loop.254a9d372f8f45542e409771135b9322_15" [label="15: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int=0 [line 36, column 20]\n " shape="box"] - - - "test_loop.254a9d372f8f45542e409771135b9322_15" -> "test_loop.254a9d372f8f45542e409771135b9322_11" ; -"test_loop.254a9d372f8f45542e409771135b9322_16" [label="16: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int=1 [line 36, column 20]\n " shape="box"] - - - "test_loop.254a9d372f8f45542e409771135b9322_16" -> "test_loop.254a9d372f8f45542e409771135b9322_11" ; -"test_loop.254a9d372f8f45542e409771135b9322_17" [label="17: Prune (true branch) \n n$6=*&0$?%__sil_tmpSIL_temp_conditional___n$3:int [line 36, column 20]\n PRUNE(n$6, true); [line 36, column 20]\n " shape="invhouse"] - - - "test_loop.254a9d372f8f45542e409771135b9322_17" -> "test_loop.254a9d372f8f45542e409771135b9322_20" ; -"test_loop.254a9d372f8f45542e409771135b9322_18" [label="18: Prune (false branch) \n n$6=*&0$?%__sil_tmpSIL_temp_conditional___n$3:int [line 36, column 20]\n PRUNE(!n$6, false); [line 36, column 20]\n " shape="invhouse"] - - - "test_loop.254a9d372f8f45542e409771135b9322_18" -> "test_loop.254a9d372f8f45542e409771135b9322_2" ; -"test_loop.254a9d372f8f45542e409771135b9322_19" [label="19: + \n " ] - - - "test_loop.254a9d372f8f45542e409771135b9322_19" -> "test_loop.254a9d372f8f45542e409771135b9322_25" ; - "test_loop.254a9d372f8f45542e409771135b9322_19" -> "test_loop.254a9d372f8f45542e409771135b9322_26" ; -"test_loop.254a9d372f8f45542e409771135b9322_20" [label="20: BinaryOperatorStmt: Assign \n n$8=_fun_getenv(\"BLOCKSIZE\":char const *) [line 37, column 20]\n *&spec:char*=n$8 [line 37, column 13]\n n$9=*&spec:char* [line 37, column 13]\n " shape="box"] - - - "test_loop.254a9d372f8f45542e409771135b9322_20" -> "test_loop.254a9d372f8f45542e409771135b9322_21" ; - "test_loop.254a9d372f8f45542e409771135b9322_20" -> "test_loop.254a9d372f8f45542e409771135b9322_22" ; -"test_loop.254a9d372f8f45542e409771135b9322_21" [label="21: Prune (true branch) \n PRUNE(n$9, true); [line 37, column 13]\n " shape="invhouse"] - - - "test_loop.254a9d372f8f45542e409771135b9322_21" -> "test_loop.254a9d372f8f45542e409771135b9322_23" ; -"test_loop.254a9d372f8f45542e409771135b9322_22" [label="22: Prune (false branch) \n PRUNE(!n$9, false); [line 37, column 13]\n " shape="invhouse"] - - - "test_loop.254a9d372f8f45542e409771135b9322_22" -> "test_loop.254a9d372f8f45542e409771135b9322_24" ; -"test_loop.254a9d372f8f45542e409771135b9322_23" [label="23: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$7:int=0 [line 37, column 11]\n " shape="box"] - - - "test_loop.254a9d372f8f45542e409771135b9322_23" -> "test_loop.254a9d372f8f45542e409771135b9322_19" ; -"test_loop.254a9d372f8f45542e409771135b9322_24" [label="24: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$7:int=1 [line 37, column 11]\n " shape="box"] - - - "test_loop.254a9d372f8f45542e409771135b9322_24" -> "test_loop.254a9d372f8f45542e409771135b9322_19" ; -"test_loop.254a9d372f8f45542e409771135b9322_25" [label="25: Prune (true branch) \n n$10=*&0$?%__sil_tmpSIL_temp_conditional___n$7:int [line 37, column 11]\n PRUNE(n$10, true); [line 37, column 11]\n " shape="invhouse"] - - - "test_loop.254a9d372f8f45542e409771135b9322_25" -> "test_loop.254a9d372f8f45542e409771135b9322_27" ; -"test_loop.254a9d372f8f45542e409771135b9322_26" [label="26: Prune (false branch) \n n$10=*&0$?%__sil_tmpSIL_temp_conditional___n$7:int [line 37, column 11]\n PRUNE(!n$10, false); [line 37, column 11]\n " shape="invhouse"] - - - "test_loop.254a9d372f8f45542e409771135b9322_26" -> "test_loop.254a9d372f8f45542e409771135b9322_2" ; -"test_loop.254a9d372f8f45542e409771135b9322_27" [label="27: BinaryOperatorStmt: Assign \n *&block_size:char*=null [line 38, column 5]\n " shape="box"] - - - "test_loop.254a9d372f8f45542e409771135b9322_27" -> "test_loop.254a9d372f8f45542e409771135b9322_3" ; -"test_loop.254a9d372f8f45542e409771135b9322_28" [label="28: BinaryOperatorStmt: Assign \n n$11=_fun_getenv(\"BLOCK\":char const *) [line 34, column 10]\n *&spec:char*=n$11 [line 34, column 3]\n " shape="box"] - - - "test_loop.254a9d372f8f45542e409771135b9322_28" -> "test_loop.254a9d372f8f45542e409771135b9322_3" ; -"main.fad58de7366495db4650cfefac2fcd61_1" [label="1: Start main\nFormals: \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:int 0$?%__sil_tmpSIL_temp_conditional___n$3:int 0$?%__sil_tmpSIL_temp_conditional___n$7:int block_size:char* spec:char* \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0,&0$?%__sil_tmpSIL_temp_conditional___n$3,&0$?%__sil_tmpSIL_temp_conditional___n$7,&block_size,&spec); [line 42, column 1]\n " color=yellow style=filled] - - - "main.fad58de7366495db4650cfefac2fcd61_1" -> "main.fad58de7366495db4650cfefac2fcd61_34" ; + "main.fad58de7366495db4650cfefac2fcd61_1" -> "main.fad58de7366495db4650cfefac2fcd61_19" ; "main.fad58de7366495db4650cfefac2fcd61_2" [label="2: Exit main \n " color=yellow style=filled] @@ -132,133 +69,70 @@ digraph iCFG { "main.fad58de7366495db4650cfefac2fcd61_4" -> "main.fad58de7366495db4650cfefac2fcd61_3" ; -"main.fad58de7366495db4650cfefac2fcd61_5" [label="5: + \n " ] +"main.fad58de7366495db4650cfefac2fcd61_5" [label="5: Prune (true branch) \n n$0=*&spec:char* [line 49, column 8]\n PRUNE(!n$0, true); [line 49, column 8]\n " shape="invhouse"] - "main.fad58de7366495db4650cfefac2fcd61_5" -> "main.fad58de7366495db4650cfefac2fcd61_10" ; - "main.fad58de7366495db4650cfefac2fcd61_5" -> "main.fad58de7366495db4650cfefac2fcd61_11" ; -"main.fad58de7366495db4650cfefac2fcd61_6" [label="6: Prune (true branch) \n n$1=*&spec:char* [line 49, column 8]\n PRUNE(n$1, true); [line 49, column 8]\n " shape="invhouse"] + "main.fad58de7366495db4650cfefac2fcd61_5" -> "main.fad58de7366495db4650cfefac2fcd61_7" ; +"main.fad58de7366495db4650cfefac2fcd61_6" [label="6: Prune (false branch) \n n$0=*&spec:char* [line 49, column 8]\n PRUNE(n$0, false); [line 49, column 8]\n " shape="invhouse"] - "main.fad58de7366495db4650cfefac2fcd61_6" -> "main.fad58de7366495db4650cfefac2fcd61_8" ; -"main.fad58de7366495db4650cfefac2fcd61_7" [label="7: Prune (false branch) \n n$1=*&spec:char* [line 49, column 8]\n PRUNE(!n$1, false); [line 49, column 8]\n " shape="invhouse"] + "main.fad58de7366495db4650cfefac2fcd61_6" -> "main.fad58de7366495db4650cfefac2fcd61_15" ; +"main.fad58de7366495db4650cfefac2fcd61_7" [label="7: BinaryOperatorStmt: Assign \n n$1=_fun_getenv(\"BLOCK_SIZE\":char const *) [line 49, column 25]\n *&spec:char*=n$1 [line 49, column 18]\n n$2=*&spec:char* [line 49, column 18]\n " shape="box"] + "main.fad58de7366495db4650cfefac2fcd61_7" -> "main.fad58de7366495db4650cfefac2fcd61_8" ; "main.fad58de7366495db4650cfefac2fcd61_7" -> "main.fad58de7366495db4650cfefac2fcd61_9" ; -"main.fad58de7366495db4650cfefac2fcd61_8" [label="8: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int=0 [line 49, column 7]\n " shape="box"] +"main.fad58de7366495db4650cfefac2fcd61_8" [label="8: Prune (true branch) \n PRUNE(!n$2, true); [line 49, column 18]\n " shape="invhouse"] - "main.fad58de7366495db4650cfefac2fcd61_8" -> "main.fad58de7366495db4650cfefac2fcd61_5" ; -"main.fad58de7366495db4650cfefac2fcd61_9" [label="9: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int=1 [line 49, column 7]\n " shape="box"] + "main.fad58de7366495db4650cfefac2fcd61_8" -> "main.fad58de7366495db4650cfefac2fcd61_10" ; +"main.fad58de7366495db4650cfefac2fcd61_9" [label="9: Prune (false branch) \n PRUNE(n$2, false); [line 49, column 18]\n " shape="invhouse"] - "main.fad58de7366495db4650cfefac2fcd61_9" -> "main.fad58de7366495db4650cfefac2fcd61_5" ; -"main.fad58de7366495db4650cfefac2fcd61_10" [label="10: Prune (true branch) \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 49, column 7]\n PRUNE(n$2, true); [line 49, column 7]\n " shape="invhouse"] + "main.fad58de7366495db4650cfefac2fcd61_9" -> "main.fad58de7366495db4650cfefac2fcd61_15" ; +"main.fad58de7366495db4650cfefac2fcd61_10" [label="10: BinaryOperatorStmt: Assign \n n$3=_fun_getenv(\"BLOCKSIZE\":char const *) [line 49, column 59]\n *&spec:char*=n$3 [line 49, column 52]\n n$4=*&spec:char* [line 49, column 52]\n " shape="box"] - "main.fad58de7366495db4650cfefac2fcd61_10" -> "main.fad58de7366495db4650cfefac2fcd61_13" ; -"main.fad58de7366495db4650cfefac2fcd61_11" [label="11: Prune (false branch) \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 49, column 7]\n PRUNE(!n$2, false); [line 49, column 7]\n " shape="invhouse"] + "main.fad58de7366495db4650cfefac2fcd61_10" -> "main.fad58de7366495db4650cfefac2fcd61_11" ; + "main.fad58de7366495db4650cfefac2fcd61_10" -> "main.fad58de7366495db4650cfefac2fcd61_12" ; +"main.fad58de7366495db4650cfefac2fcd61_11" [label="11: Prune (true branch) \n PRUNE(!n$4, true); [line 49, column 52]\n " shape="invhouse"] - "main.fad58de7366495db4650cfefac2fcd61_11" -> "main.fad58de7366495db4650cfefac2fcd61_30" ; -"main.fad58de7366495db4650cfefac2fcd61_12" [label="12: + \n " ] + "main.fad58de7366495db4650cfefac2fcd61_11" -> "main.fad58de7366495db4650cfefac2fcd61_13" ; +"main.fad58de7366495db4650cfefac2fcd61_12" [label="12: Prune (false branch) \n PRUNE(n$4, false); [line 49, column 52]\n " shape="invhouse"] - "main.fad58de7366495db4650cfefac2fcd61_12" -> "main.fad58de7366495db4650cfefac2fcd61_18" ; - "main.fad58de7366495db4650cfefac2fcd61_12" -> "main.fad58de7366495db4650cfefac2fcd61_19" ; -"main.fad58de7366495db4650cfefac2fcd61_13" [label="13: BinaryOperatorStmt: Assign \n n$4=_fun_getenv(\"BLOCK_SIZE\":char const *) [line 49, column 25]\n *&spec:char*=n$4 [line 49, column 18]\n n$5=*&spec:char* [line 49, column 18]\n " shape="box"] + "main.fad58de7366495db4650cfefac2fcd61_12" -> "main.fad58de7366495db4650cfefac2fcd61_15" ; +"main.fad58de7366495db4650cfefac2fcd61_13" [label="13: BinaryOperatorStmt: Assign \n *&block_size:char*=null [line 50, column 5]\n " shape="box"] - "main.fad58de7366495db4650cfefac2fcd61_13" -> "main.fad58de7366495db4650cfefac2fcd61_14" ; - "main.fad58de7366495db4650cfefac2fcd61_13" -> "main.fad58de7366495db4650cfefac2fcd61_15" ; -"main.fad58de7366495db4650cfefac2fcd61_14" [label="14: Prune (true branch) \n PRUNE(n$5, true); [line 49, column 18]\n " shape="invhouse"] + "main.fad58de7366495db4650cfefac2fcd61_13" -> "main.fad58de7366495db4650cfefac2fcd61_4" ; +"main.fad58de7366495db4650cfefac2fcd61_14" [label="14: + \n " ] - "main.fad58de7366495db4650cfefac2fcd61_14" -> "main.fad58de7366495db4650cfefac2fcd61_16" ; -"main.fad58de7366495db4650cfefac2fcd61_15" [label="15: Prune (false branch) \n PRUNE(!n$5, false); [line 49, column 18]\n " shape="invhouse"] + "main.fad58de7366495db4650cfefac2fcd61_14" -> "main.fad58de7366495db4650cfefac2fcd61_4" ; +"main.fad58de7366495db4650cfefac2fcd61_15" [label="15: BinaryOperatorStmt: EQ \n n$5=*&spec:char* [line 52, column 10]\n n$6=*n$5:char [line 52, column 9]\n " shape="box"] + "main.fad58de7366495db4650cfefac2fcd61_15" -> "main.fad58de7366495db4650cfefac2fcd61_16" ; "main.fad58de7366495db4650cfefac2fcd61_15" -> "main.fad58de7366495db4650cfefac2fcd61_17" ; -"main.fad58de7366495db4650cfefac2fcd61_16" [label="16: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int=0 [line 49, column 16]\n " shape="box"] - - - "main.fad58de7366495db4650cfefac2fcd61_16" -> "main.fad58de7366495db4650cfefac2fcd61_12" ; -"main.fad58de7366495db4650cfefac2fcd61_17" [label="17: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int=1 [line 49, column 16]\n " shape="box"] - - - "main.fad58de7366495db4650cfefac2fcd61_17" -> "main.fad58de7366495db4650cfefac2fcd61_12" ; -"main.fad58de7366495db4650cfefac2fcd61_18" [label="18: Prune (true branch) \n n$6=*&0$?%__sil_tmpSIL_temp_conditional___n$3:int [line 49, column 16]\n PRUNE(n$6, true); [line 49, column 16]\n " shape="invhouse"] - - - "main.fad58de7366495db4650cfefac2fcd61_18" -> "main.fad58de7366495db4650cfefac2fcd61_21" ; -"main.fad58de7366495db4650cfefac2fcd61_19" [label="19: Prune (false branch) \n n$6=*&0$?%__sil_tmpSIL_temp_conditional___n$3:int [line 49, column 16]\n PRUNE(!n$6, false); [line 49, column 16]\n " shape="invhouse"] - - - "main.fad58de7366495db4650cfefac2fcd61_19" -> "main.fad58de7366495db4650cfefac2fcd61_30" ; -"main.fad58de7366495db4650cfefac2fcd61_20" [label="20: + \n " ] - - - "main.fad58de7366495db4650cfefac2fcd61_20" -> "main.fad58de7366495db4650cfefac2fcd61_26" ; - "main.fad58de7366495db4650cfefac2fcd61_20" -> "main.fad58de7366495db4650cfefac2fcd61_27" ; -"main.fad58de7366495db4650cfefac2fcd61_21" [label="21: BinaryOperatorStmt: Assign \n n$8=_fun_getenv(\"BLOCKSIZE\":char const *) [line 49, column 59]\n *&spec:char*=n$8 [line 49, column 52]\n n$9=*&spec:char* [line 49, column 52]\n " shape="box"] +"main.fad58de7366495db4650cfefac2fcd61_16" [label="16: Prune (true branch) \n PRUNE((n$6 == 39), true); [line 52, column 9]\n " shape="invhouse"] - "main.fad58de7366495db4650cfefac2fcd61_21" -> "main.fad58de7366495db4650cfefac2fcd61_22" ; - "main.fad58de7366495db4650cfefac2fcd61_21" -> "main.fad58de7366495db4650cfefac2fcd61_23" ; -"main.fad58de7366495db4650cfefac2fcd61_22" [label="22: Prune (true branch) \n PRUNE(n$9, true); [line 49, column 52]\n " shape="invhouse"] + "main.fad58de7366495db4650cfefac2fcd61_16" -> "main.fad58de7366495db4650cfefac2fcd61_18" ; +"main.fad58de7366495db4650cfefac2fcd61_17" [label="17: Prune (false branch) \n PRUNE(!(n$6 == 39), false); [line 52, column 9]\n " shape="invhouse"] - "main.fad58de7366495db4650cfefac2fcd61_22" -> "main.fad58de7366495db4650cfefac2fcd61_24" ; -"main.fad58de7366495db4650cfefac2fcd61_23" [label="23: Prune (false branch) \n PRUNE(!n$9, false); [line 49, column 52]\n " shape="invhouse"] + "main.fad58de7366495db4650cfefac2fcd61_17" -> "main.fad58de7366495db4650cfefac2fcd61_14" ; +"main.fad58de7366495db4650cfefac2fcd61_18" [label="18: BinaryOperatorStmt: Assign \n *&block_size:char*=null [line 53, column 7]\n " shape="box"] - "main.fad58de7366495db4650cfefac2fcd61_23" -> "main.fad58de7366495db4650cfefac2fcd61_25" ; -"main.fad58de7366495db4650cfefac2fcd61_24" [label="24: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$7:int=0 [line 49, column 50]\n " shape="box"] + "main.fad58de7366495db4650cfefac2fcd61_18" -> "main.fad58de7366495db4650cfefac2fcd61_14" ; +"main.fad58de7366495db4650cfefac2fcd61_19" [label="19: BinaryOperatorStmt: Assign \n n$7=_fun_getenv(\"BLOCK\":char const *) [line 47, column 10]\n *&spec:char*=n$7 [line 47, column 3]\n " shape="box"] - "main.fad58de7366495db4650cfefac2fcd61_24" -> "main.fad58de7366495db4650cfefac2fcd61_20" ; -"main.fad58de7366495db4650cfefac2fcd61_25" [label="25: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$7:int=1 [line 49, column 50]\n " shape="box"] - - - "main.fad58de7366495db4650cfefac2fcd61_25" -> "main.fad58de7366495db4650cfefac2fcd61_20" ; -"main.fad58de7366495db4650cfefac2fcd61_26" [label="26: Prune (true branch) \n n$10=*&0$?%__sil_tmpSIL_temp_conditional___n$7:int [line 49, column 50]\n PRUNE(n$10, true); [line 49, column 50]\n " shape="invhouse"] - - - "main.fad58de7366495db4650cfefac2fcd61_26" -> "main.fad58de7366495db4650cfefac2fcd61_28" ; -"main.fad58de7366495db4650cfefac2fcd61_27" [label="27: Prune (false branch) \n n$10=*&0$?%__sil_tmpSIL_temp_conditional___n$7:int [line 49, column 50]\n PRUNE(!n$10, false); [line 49, column 50]\n " shape="invhouse"] - - - "main.fad58de7366495db4650cfefac2fcd61_27" -> "main.fad58de7366495db4650cfefac2fcd61_30" ; -"main.fad58de7366495db4650cfefac2fcd61_28" [label="28: BinaryOperatorStmt: Assign \n *&block_size:char*=null [line 50, column 5]\n " shape="box"] - - - "main.fad58de7366495db4650cfefac2fcd61_28" -> "main.fad58de7366495db4650cfefac2fcd61_4" ; -"main.fad58de7366495db4650cfefac2fcd61_29" [label="29: + \n " ] - - - "main.fad58de7366495db4650cfefac2fcd61_29" -> "main.fad58de7366495db4650cfefac2fcd61_4" ; -"main.fad58de7366495db4650cfefac2fcd61_30" [label="30: BinaryOperatorStmt: EQ \n n$11=*&spec:char* [line 52, column 10]\n n$12=*n$11:char [line 52, column 9]\n " shape="box"] - - - "main.fad58de7366495db4650cfefac2fcd61_30" -> "main.fad58de7366495db4650cfefac2fcd61_31" ; - "main.fad58de7366495db4650cfefac2fcd61_30" -> "main.fad58de7366495db4650cfefac2fcd61_32" ; -"main.fad58de7366495db4650cfefac2fcd61_31" [label="31: Prune (true branch) \n PRUNE((n$12 == 39), true); [line 52, column 9]\n " shape="invhouse"] - - - "main.fad58de7366495db4650cfefac2fcd61_31" -> "main.fad58de7366495db4650cfefac2fcd61_33" ; -"main.fad58de7366495db4650cfefac2fcd61_32" [label="32: Prune (false branch) \n PRUNE(!(n$12 == 39), false); [line 52, column 9]\n " shape="invhouse"] - - - "main.fad58de7366495db4650cfefac2fcd61_32" -> "main.fad58de7366495db4650cfefac2fcd61_29" ; -"main.fad58de7366495db4650cfefac2fcd61_33" [label="33: BinaryOperatorStmt: Assign \n *&block_size:char*=null [line 53, column 7]\n " shape="box"] - - - "main.fad58de7366495db4650cfefac2fcd61_33" -> "main.fad58de7366495db4650cfefac2fcd61_29" ; -"main.fad58de7366495db4650cfefac2fcd61_34" [label="34: BinaryOperatorStmt: Assign \n n$13=_fun_getenv(\"BLOCK\":char const *) [line 47, column 10]\n *&spec:char*=n$13 [line 47, column 3]\n " shape="box"] - - - "main.fad58de7366495db4650cfefac2fcd61_34" -> "main.fad58de7366495db4650cfefac2fcd61_6" ; - "main.fad58de7366495db4650cfefac2fcd61_34" -> "main.fad58de7366495db4650cfefac2fcd61_7" ; + "main.fad58de7366495db4650cfefac2fcd61_19" -> "main.fad58de7366495db4650cfefac2fcd61_5" ; + "main.fad58de7366495db4650cfefac2fcd61_19" -> "main.fad58de7366495db4650cfefac2fcd61_6" ; "shortcircuit_or.5845fe75b89f8af7ec1944cd207962af_1" [label="1: Start shortcircuit_or\nFormals: x:int*\nLocals: \n DECLARE_LOCALS(&return); [line 12, column 1]\n " color=yellow style=filled] @@ -308,11 +182,11 @@ digraph iCFG { "shortcircuit_or.5845fe75b89f8af7ec1944cd207962af_12" -> "shortcircuit_or.5845fe75b89f8af7ec1944cd207962af_3" ; -"shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_1" [label="1: Start shortcircuit_and\nFormals: x:int*\nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$0:int 0$?%__sil_tmpSIL_temp_conditional___n$3:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$0,&0$?%__sil_tmpSIL_temp_conditional___n$3); [line 21, column 1]\n " color=yellow style=filled] +"shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_1" [label="1: Start shortcircuit_and\nFormals: x:int*\nLocals: \n DECLARE_LOCALS(&return); [line 21, column 1]\n " color=yellow style=filled] + "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_1" -> "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_5" ; "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_1" -> "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_6" ; - "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_1" -> "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_7" ; "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_2" [label="2: Exit shortcircuit_and \n " color=yellow style=filled] @@ -324,75 +198,33 @@ digraph iCFG { "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_4" -> "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_2" ; -"shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_5" [label="5: + \n " ] +"shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_5" [label="5: Prune (true branch) \n n$0=*&x:int* [line 22, column 8]\n PRUNE(!n$0, true); [line 22, column 8]\n " shape="invhouse"] - "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_5" -> "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_10" ; - "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_5" -> "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_11" ; -"shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_6" [label="6: Prune (true branch) \n n$1=*&x:int* [line 22, column 8]\n PRUNE(n$1, true); [line 22, column 8]\n " shape="invhouse"] + "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_5" -> "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_7" ; +"shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_6" [label="6: Prune (false branch) \n n$0=*&x:int* [line 22, column 8]\n PRUNE(n$0, false); [line 22, column 8]\n " shape="invhouse"] - "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_6" -> "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_8" ; -"shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_7" [label="7: Prune (false branch) \n n$1=*&x:int* [line 22, column 8]\n PRUNE(!n$1, false); [line 22, column 8]\n " shape="invhouse"] + "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_6" -> "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_11" ; +"shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_7" [label="7: BinaryOperatorStmt: Assign \n n$1=_fun_getenv(\"BLOCK\":char const *) [line 22, column 19]\n *&x:int*=n$1 [line 22, column 15]\n n$2=*&x:int* [line 22, column 15]\n " shape="box"] + "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_7" -> "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_8" ; "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_7" -> "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_9" ; -"shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_8" [label="8: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int=0 [line 22, column 7]\n " shape="box"] - - - "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_8" -> "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_5" ; -"shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_9" [label="9: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$0:int=1 [line 22, column 7]\n " shape="box"] - - - "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_9" -> "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_5" ; -"shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_10" [label="10: Prune (true branch) \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 22, column 7]\n PRUNE(n$2, true); [line 22, column 7]\n " shape="invhouse"] - - - "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_10" -> "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_13" ; -"shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_11" [label="11: Prune (false branch) \n n$2=*&0$?%__sil_tmpSIL_temp_conditional___n$0:int [line 22, column 7]\n PRUNE(!n$2, false); [line 22, column 7]\n " shape="invhouse"] - - - "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_11" -> "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_21" ; -"shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_12" [label="12: + \n " ] - - - "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_12" -> "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_18" ; - "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_12" -> "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_19" ; -"shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_13" [label="13: BinaryOperatorStmt: Assign \n n$4=_fun_getenv(\"BLOCK\":char const *) [line 22, column 19]\n *&x:int*=n$4 [line 22, column 15]\n n$5=*&x:int* [line 22, column 15]\n " shape="box"] - - - "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_13" -> "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_14" ; - "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_13" -> "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_15" ; -"shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_14" [label="14: Prune (true branch) \n PRUNE(n$5, true); [line 22, column 15]\n " shape="invhouse"] - - - "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_14" -> "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_16" ; -"shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_15" [label="15: Prune (false branch) \n PRUNE(!n$5, false); [line 22, column 15]\n " shape="invhouse"] - - - "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_15" -> "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_17" ; -"shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_16" [label="16: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int=0 [line 22, column 13]\n " shape="box"] - - - "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_16" -> "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_12" ; -"shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_17" [label="17: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int=1 [line 22, column 13]\n " shape="box"] - - - "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_17" -> "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_12" ; -"shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_18" [label="18: Prune (true branch) \n n$6=*&0$?%__sil_tmpSIL_temp_conditional___n$3:int [line 22, column 13]\n PRUNE(n$6, true); [line 22, column 13]\n " shape="invhouse"] +"shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_8" [label="8: Prune (true branch) \n PRUNE(!n$2, true); [line 22, column 15]\n " shape="invhouse"] - "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_18" -> "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_20" ; -"shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_19" [label="19: Prune (false branch) \n n$6=*&0$?%__sil_tmpSIL_temp_conditional___n$3:int [line 22, column 13]\n PRUNE(!n$6, false); [line 22, column 13]\n " shape="invhouse"] + "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_8" -> "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_10" ; +"shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_9" [label="9: Prune (false branch) \n PRUNE(n$2, false); [line 22, column 15]\n " shape="invhouse"] - "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_19" -> "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_21" ; -"shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_20" [label="20: BinaryOperatorStmt: Assign \n *&x:int*=17 [line 23, column 5]\n " shape="box"] + "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_9" -> "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_11" ; +"shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_10" [label="10: BinaryOperatorStmt: Assign \n *&x:int*=17 [line 23, column 5]\n " shape="box"] - "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_20" -> "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_3" ; -"shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_21" [label="21: BinaryOperatorStmt: Assign \n n$7=*&x:int* [line 25, column 6]\n *n$7:int=32 [line 25, column 5]\n " shape="box"] + "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_10" -> "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_3" ; +"shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_11" [label="11: BinaryOperatorStmt: Assign \n n$3=*&x:int* [line 25, column 6]\n *n$3:int=32 [line 25, column 5]\n " shape="box"] - "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_21" -> "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_3" ; + "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_11" -> "shortcircuit_and.10f9635d805ff3bd29dfc80b8f8d12da_3" ; } diff --git a/infer/tests/codetoanalyze/c/frontend/gotostmt/goto_ex.c.dot b/infer/tests/codetoanalyze/c/frontend/gotostmt/goto_ex.c.dot index 7231c2fdd..d2eb84e91 100644 --- a/infer/tests/codetoanalyze/c/frontend/gotostmt/goto_ex.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/gotostmt/goto_ex.c.dot @@ -103,10 +103,10 @@ digraph iCFG { "g1.0120a4f9196a5f9eb9f523f31f914da7_11" -> "g1.0120a4f9196a5f9eb9f523f31f914da7_8" ; -"g2.e1c80488853d86ab9d6decfe30d8930f_1" [label="1: Start g2\nFormals: \nLocals: 0$?%__sil_tmpSIL_temp_conditional___n$1:int 0$?%__sil_tmpSIL_temp_conditional___n$4:int a:int \n DECLARE_LOCALS(&return,&0$?%__sil_tmpSIL_temp_conditional___n$1,&0$?%__sil_tmpSIL_temp_conditional___n$4,&a); [line 37, column 1]\n " color=yellow style=filled] +"g2.e1c80488853d86ab9d6decfe30d8930f_1" [label="1: Start g2\nFormals: \nLocals: a:int \n DECLARE_LOCALS(&return,&a); [line 37, column 1]\n " color=yellow style=filled] - "g2.e1c80488853d86ab9d6decfe30d8930f_1" -> "g2.e1c80488853d86ab9d6decfe30d8930f_34" ; + "g2.e1c80488853d86ab9d6decfe30d8930f_1" -> "g2.e1c80488853d86ab9d6decfe30d8930f_24" ; "g2.e1c80488853d86ab9d6decfe30d8930f_2" [label="2: Exit g2 \n " color=yellow style=filled] @@ -158,92 +158,50 @@ digraph iCFG { "g2.e1c80488853d86ab9d6decfe30d8930f_14" [label="14: Skip GotoLabel_stepB \n " color="gray"] - "g2.e1c80488853d86ab9d6decfe30d8930f_14" -> "g2.e1c80488853d86ab9d6decfe30d8930f_33" ; + "g2.e1c80488853d86ab9d6decfe30d8930f_14" -> "g2.e1c80488853d86ab9d6decfe30d8930f_23" ; "g2.e1c80488853d86ab9d6decfe30d8930f_15" [label="15: + \n " ] "g2.e1c80488853d86ab9d6decfe30d8930f_15" -> "g2.e1c80488853d86ab9d6decfe30d8930f_11" ; -"g2.e1c80488853d86ab9d6decfe30d8930f_16" [label="16: + \n " ] +"g2.e1c80488853d86ab9d6decfe30d8930f_16" [label="16: Call _fun_getValue \n n$1=_fun_getValue() [line 44, column 8]\n " shape="box"] - "g2.e1c80488853d86ab9d6decfe30d8930f_16" -> "g2.e1c80488853d86ab9d6decfe30d8930f_22" ; - "g2.e1c80488853d86ab9d6decfe30d8930f_16" -> "g2.e1c80488853d86ab9d6decfe30d8930f_23" ; -"g2.e1c80488853d86ab9d6decfe30d8930f_17" [label="17: Call _fun_getValue \n n$2=_fun_getValue() [line 44, column 8]\n " shape="box"] + "g2.e1c80488853d86ab9d6decfe30d8930f_16" -> "g2.e1c80488853d86ab9d6decfe30d8930f_17" ; + "g2.e1c80488853d86ab9d6decfe30d8930f_16" -> "g2.e1c80488853d86ab9d6decfe30d8930f_18" ; +"g2.e1c80488853d86ab9d6decfe30d8930f_17" [label="17: Prune (true branch) \n PRUNE(!n$1, true); [line 44, column 8]\n " shape="invhouse"] - "g2.e1c80488853d86ab9d6decfe30d8930f_17" -> "g2.e1c80488853d86ab9d6decfe30d8930f_18" ; - "g2.e1c80488853d86ab9d6decfe30d8930f_17" -> "g2.e1c80488853d86ab9d6decfe30d8930f_19" ; -"g2.e1c80488853d86ab9d6decfe30d8930f_18" [label="18: Prune (true branch) \n PRUNE(n$2, true); [line 44, column 8]\n " shape="invhouse"] + "g2.e1c80488853d86ab9d6decfe30d8930f_17" -> "g2.e1c80488853d86ab9d6decfe30d8930f_8" ; +"g2.e1c80488853d86ab9d6decfe30d8930f_18" [label="18: Prune (false branch) \n PRUNE(n$1, false); [line 44, column 8]\n " shape="invhouse"] - "g2.e1c80488853d86ab9d6decfe30d8930f_18" -> "g2.e1c80488853d86ab9d6decfe30d8930f_20" ; -"g2.e1c80488853d86ab9d6decfe30d8930f_19" [label="19: Prune (false branch) \n PRUNE(!n$2, false); [line 44, column 8]\n " shape="invhouse"] + "g2.e1c80488853d86ab9d6decfe30d8930f_18" -> "g2.e1c80488853d86ab9d6decfe30d8930f_15" ; +"g2.e1c80488853d86ab9d6decfe30d8930f_19" [label="19: + \n " ] - "g2.e1c80488853d86ab9d6decfe30d8930f_19" -> "g2.e1c80488853d86ab9d6decfe30d8930f_21" ; -"g2.e1c80488853d86ab9d6decfe30d8930f_20" [label="20: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$1:int=0 [line 44, column 7]\n " shape="box"] + "g2.e1c80488853d86ab9d6decfe30d8930f_19" -> "g2.e1c80488853d86ab9d6decfe30d8930f_16" ; +"g2.e1c80488853d86ab9d6decfe30d8930f_20" [label="20: Call _fun_getValue \n n$2=_fun_getValue() [line 42, column 8]\n " shape="box"] - "g2.e1c80488853d86ab9d6decfe30d8930f_20" -> "g2.e1c80488853d86ab9d6decfe30d8930f_16" ; -"g2.e1c80488853d86ab9d6decfe30d8930f_21" [label="21: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$1:int=1 [line 44, column 7]\n " shape="box"] + "g2.e1c80488853d86ab9d6decfe30d8930f_20" -> "g2.e1c80488853d86ab9d6decfe30d8930f_21" ; + "g2.e1c80488853d86ab9d6decfe30d8930f_20" -> "g2.e1c80488853d86ab9d6decfe30d8930f_22" ; +"g2.e1c80488853d86ab9d6decfe30d8930f_21" [label="21: Prune (true branch) \n PRUNE(!n$2, true); [line 42, column 8]\n " shape="invhouse"] - "g2.e1c80488853d86ab9d6decfe30d8930f_21" -> "g2.e1c80488853d86ab9d6decfe30d8930f_16" ; -"g2.e1c80488853d86ab9d6decfe30d8930f_22" [label="22: Prune (true branch) \n n$3=*&0$?%__sil_tmpSIL_temp_conditional___n$1:int [line 44, column 7]\n PRUNE(n$3, true); [line 44, column 7]\n " shape="invhouse"] + "g2.e1c80488853d86ab9d6decfe30d8930f_21" -> "g2.e1c80488853d86ab9d6decfe30d8930f_5" ; +"g2.e1c80488853d86ab9d6decfe30d8930f_22" [label="22: Prune (false branch) \n PRUNE(n$2, false); [line 42, column 8]\n " shape="invhouse"] - "g2.e1c80488853d86ab9d6decfe30d8930f_22" -> "g2.e1c80488853d86ab9d6decfe30d8930f_8" ; -"g2.e1c80488853d86ab9d6decfe30d8930f_23" [label="23: Prune (false branch) \n n$3=*&0$?%__sil_tmpSIL_temp_conditional___n$1:int [line 44, column 7]\n PRUNE(!n$3, false); [line 44, column 7]\n " shape="invhouse"] + "g2.e1c80488853d86ab9d6decfe30d8930f_22" -> "g2.e1c80488853d86ab9d6decfe30d8930f_19" ; +"g2.e1c80488853d86ab9d6decfe30d8930f_23" [label="23: BinaryOperatorStmt: Assign \n *&a:int=1 [line 40, column 3]\n " shape="box"] - "g2.e1c80488853d86ab9d6decfe30d8930f_23" -> "g2.e1c80488853d86ab9d6decfe30d8930f_15" ; -"g2.e1c80488853d86ab9d6decfe30d8930f_24" [label="24: + \n " ] + "g2.e1c80488853d86ab9d6decfe30d8930f_23" -> "g2.e1c80488853d86ab9d6decfe30d8930f_20" ; +"g2.e1c80488853d86ab9d6decfe30d8930f_24" [label="24: DeclStmt \n *&a:int=0 [line 38, column 3]\n " shape="box"] - "g2.e1c80488853d86ab9d6decfe30d8930f_24" -> "g2.e1c80488853d86ab9d6decfe30d8930f_17" ; -"g2.e1c80488853d86ab9d6decfe30d8930f_25" [label="25: + \n " ] - - - "g2.e1c80488853d86ab9d6decfe30d8930f_25" -> "g2.e1c80488853d86ab9d6decfe30d8930f_31" ; - "g2.e1c80488853d86ab9d6decfe30d8930f_25" -> "g2.e1c80488853d86ab9d6decfe30d8930f_32" ; -"g2.e1c80488853d86ab9d6decfe30d8930f_26" [label="26: Call _fun_getValue \n n$5=_fun_getValue() [line 42, column 8]\n " shape="box"] - - - "g2.e1c80488853d86ab9d6decfe30d8930f_26" -> "g2.e1c80488853d86ab9d6decfe30d8930f_27" ; - "g2.e1c80488853d86ab9d6decfe30d8930f_26" -> "g2.e1c80488853d86ab9d6decfe30d8930f_28" ; -"g2.e1c80488853d86ab9d6decfe30d8930f_27" [label="27: Prune (true branch) \n PRUNE(n$5, true); [line 42, column 8]\n " shape="invhouse"] - - - "g2.e1c80488853d86ab9d6decfe30d8930f_27" -> "g2.e1c80488853d86ab9d6decfe30d8930f_29" ; -"g2.e1c80488853d86ab9d6decfe30d8930f_28" [label="28: Prune (false branch) \n PRUNE(!n$5, false); [line 42, column 8]\n " shape="invhouse"] - - - "g2.e1c80488853d86ab9d6decfe30d8930f_28" -> "g2.e1c80488853d86ab9d6decfe30d8930f_30" ; -"g2.e1c80488853d86ab9d6decfe30d8930f_29" [label="29: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$4:int=0 [line 42, column 7]\n " shape="box"] - - - "g2.e1c80488853d86ab9d6decfe30d8930f_29" -> "g2.e1c80488853d86ab9d6decfe30d8930f_25" ; -"g2.e1c80488853d86ab9d6decfe30d8930f_30" [label="30: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$4:int=1 [line 42, column 7]\n " shape="box"] - - - "g2.e1c80488853d86ab9d6decfe30d8930f_30" -> "g2.e1c80488853d86ab9d6decfe30d8930f_25" ; -"g2.e1c80488853d86ab9d6decfe30d8930f_31" [label="31: Prune (true branch) \n n$6=*&0$?%__sil_tmpSIL_temp_conditional___n$4:int [line 42, column 7]\n PRUNE(n$6, true); [line 42, column 7]\n " shape="invhouse"] - - - "g2.e1c80488853d86ab9d6decfe30d8930f_31" -> "g2.e1c80488853d86ab9d6decfe30d8930f_5" ; -"g2.e1c80488853d86ab9d6decfe30d8930f_32" [label="32: Prune (false branch) \n n$6=*&0$?%__sil_tmpSIL_temp_conditional___n$4:int [line 42, column 7]\n PRUNE(!n$6, false); [line 42, column 7]\n " shape="invhouse"] - - - "g2.e1c80488853d86ab9d6decfe30d8930f_32" -> "g2.e1c80488853d86ab9d6decfe30d8930f_24" ; -"g2.e1c80488853d86ab9d6decfe30d8930f_33" [label="33: BinaryOperatorStmt: Assign \n *&a:int=1 [line 40, column 3]\n " shape="box"] - - - "g2.e1c80488853d86ab9d6decfe30d8930f_33" -> "g2.e1c80488853d86ab9d6decfe30d8930f_26" ; -"g2.e1c80488853d86ab9d6decfe30d8930f_34" [label="34: DeclStmt \n *&a:int=0 [line 38, column 3]\n " shape="box"] - - - "g2.e1c80488853d86ab9d6decfe30d8930f_34" -> "g2.e1c80488853d86ab9d6decfe30d8930f_14" ; -"g3.8a9fd7dfda802921fdc4079f9a528ce8_1" [label="1: Start g3\nFormals: \nLocals: a:int 0$?%__sil_tmpSIL_temp_conditional___n$4:int 0$?%__sil_tmpSIL_temp_conditional___n$7:int \n DECLARE_LOCALS(&return,&a,&0$?%__sil_tmpSIL_temp_conditional___n$4,&0$?%__sil_tmpSIL_temp_conditional___n$7); [line 59, column 1]\n " color=yellow style=filled] + "g2.e1c80488853d86ab9d6decfe30d8930f_24" -> "g2.e1c80488853d86ab9d6decfe30d8930f_14" ; +"g3.8a9fd7dfda802921fdc4079f9a528ce8_1" [label="1: Start g3\nFormals: \nLocals: a:int \n DECLARE_LOCALS(&return,&a); [line 59, column 1]\n " color=yellow style=filled] "g3.8a9fd7dfda802921fdc4079f9a528ce8_1" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_15" ; @@ -302,88 +260,46 @@ digraph iCFG { "g3.8a9fd7dfda802921fdc4079f9a528ce8_15" [label="15: Skip GotoLabel_stepB \n " color="gray"] - "g3.8a9fd7dfda802921fdc4079f9a528ce8_15" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_34" ; + "g3.8a9fd7dfda802921fdc4079f9a528ce8_15" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_24" ; "g3.8a9fd7dfda802921fdc4079f9a528ce8_16" [label="16: + \n " ] "g3.8a9fd7dfda802921fdc4079f9a528ce8_16" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_12" ; -"g3.8a9fd7dfda802921fdc4079f9a528ce8_17" [label="17: + \n " ] - - - "g3.8a9fd7dfda802921fdc4079f9a528ce8_17" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_23" ; - "g3.8a9fd7dfda802921fdc4079f9a528ce8_17" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_24" ; -"g3.8a9fd7dfda802921fdc4079f9a528ce8_18" [label="18: Call _fun_getValue \n n$5=_fun_getValue() [line 65, column 8]\n " shape="box"] - - - "g3.8a9fd7dfda802921fdc4079f9a528ce8_18" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_19" ; - "g3.8a9fd7dfda802921fdc4079f9a528ce8_18" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_20" ; -"g3.8a9fd7dfda802921fdc4079f9a528ce8_19" [label="19: Prune (true branch) \n PRUNE(n$5, true); [line 65, column 8]\n " shape="invhouse"] - - - "g3.8a9fd7dfda802921fdc4079f9a528ce8_19" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_21" ; -"g3.8a9fd7dfda802921fdc4079f9a528ce8_20" [label="20: Prune (false branch) \n PRUNE(!n$5, false); [line 65, column 8]\n " shape="invhouse"] - - - "g3.8a9fd7dfda802921fdc4079f9a528ce8_20" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_22" ; -"g3.8a9fd7dfda802921fdc4079f9a528ce8_21" [label="21: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$4:int=0 [line 65, column 7]\n " shape="box"] - - - "g3.8a9fd7dfda802921fdc4079f9a528ce8_21" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_17" ; -"g3.8a9fd7dfda802921fdc4079f9a528ce8_22" [label="22: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$4:int=1 [line 65, column 7]\n " shape="box"] - - - "g3.8a9fd7dfda802921fdc4079f9a528ce8_22" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_17" ; -"g3.8a9fd7dfda802921fdc4079f9a528ce8_23" [label="23: Prune (true branch) \n n$6=*&0$?%__sil_tmpSIL_temp_conditional___n$4:int [line 65, column 7]\n PRUNE(n$6, true); [line 65, column 7]\n " shape="invhouse"] - - - "g3.8a9fd7dfda802921fdc4079f9a528ce8_23" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_8" ; -"g3.8a9fd7dfda802921fdc4079f9a528ce8_24" [label="24: Prune (false branch) \n n$6=*&0$?%__sil_tmpSIL_temp_conditional___n$4:int [line 65, column 7]\n PRUNE(!n$6, false); [line 65, column 7]\n " shape="invhouse"] - - - "g3.8a9fd7dfda802921fdc4079f9a528ce8_24" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_16" ; -"g3.8a9fd7dfda802921fdc4079f9a528ce8_25" [label="25: + \n " ] - - - "g3.8a9fd7dfda802921fdc4079f9a528ce8_25" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_18" ; -"g3.8a9fd7dfda802921fdc4079f9a528ce8_26" [label="26: + \n " ] +"g3.8a9fd7dfda802921fdc4079f9a528ce8_17" [label="17: Call _fun_getValue \n n$4=_fun_getValue() [line 65, column 8]\n " shape="box"] - "g3.8a9fd7dfda802921fdc4079f9a528ce8_26" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_32" ; - "g3.8a9fd7dfda802921fdc4079f9a528ce8_26" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_33" ; -"g3.8a9fd7dfda802921fdc4079f9a528ce8_27" [label="27: Call _fun_getValue \n n$8=_fun_getValue() [line 63, column 8]\n " shape="box"] + "g3.8a9fd7dfda802921fdc4079f9a528ce8_17" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_18" ; + "g3.8a9fd7dfda802921fdc4079f9a528ce8_17" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_19" ; +"g3.8a9fd7dfda802921fdc4079f9a528ce8_18" [label="18: Prune (true branch) \n PRUNE(!n$4, true); [line 65, column 8]\n " shape="invhouse"] - "g3.8a9fd7dfda802921fdc4079f9a528ce8_27" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_28" ; - "g3.8a9fd7dfda802921fdc4079f9a528ce8_27" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_29" ; -"g3.8a9fd7dfda802921fdc4079f9a528ce8_28" [label="28: Prune (true branch) \n PRUNE(n$8, true); [line 63, column 8]\n " shape="invhouse"] + "g3.8a9fd7dfda802921fdc4079f9a528ce8_18" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_8" ; +"g3.8a9fd7dfda802921fdc4079f9a528ce8_19" [label="19: Prune (false branch) \n PRUNE(n$4, false); [line 65, column 8]\n " shape="invhouse"] - "g3.8a9fd7dfda802921fdc4079f9a528ce8_28" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_30" ; -"g3.8a9fd7dfda802921fdc4079f9a528ce8_29" [label="29: Prune (false branch) \n PRUNE(!n$8, false); [line 63, column 8]\n " shape="invhouse"] + "g3.8a9fd7dfda802921fdc4079f9a528ce8_19" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_16" ; +"g3.8a9fd7dfda802921fdc4079f9a528ce8_20" [label="20: + \n " ] - "g3.8a9fd7dfda802921fdc4079f9a528ce8_29" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_31" ; -"g3.8a9fd7dfda802921fdc4079f9a528ce8_30" [label="30: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$7:int=0 [line 63, column 7]\n " shape="box"] + "g3.8a9fd7dfda802921fdc4079f9a528ce8_20" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_17" ; +"g3.8a9fd7dfda802921fdc4079f9a528ce8_21" [label="21: Call _fun_getValue \n n$5=_fun_getValue() [line 63, column 8]\n " shape="box"] - "g3.8a9fd7dfda802921fdc4079f9a528ce8_30" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_26" ; -"g3.8a9fd7dfda802921fdc4079f9a528ce8_31" [label="31: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$7:int=1 [line 63, column 7]\n " shape="box"] + "g3.8a9fd7dfda802921fdc4079f9a528ce8_21" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_22" ; + "g3.8a9fd7dfda802921fdc4079f9a528ce8_21" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_23" ; +"g3.8a9fd7dfda802921fdc4079f9a528ce8_22" [label="22: Prune (true branch) \n PRUNE(!n$5, true); [line 63, column 8]\n " shape="invhouse"] - "g3.8a9fd7dfda802921fdc4079f9a528ce8_31" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_26" ; -"g3.8a9fd7dfda802921fdc4079f9a528ce8_32" [label="32: Prune (true branch) \n n$9=*&0$?%__sil_tmpSIL_temp_conditional___n$7:int [line 63, column 7]\n PRUNE(n$9, true); [line 63, column 7]\n " shape="invhouse"] + "g3.8a9fd7dfda802921fdc4079f9a528ce8_22" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_5" ; +"g3.8a9fd7dfda802921fdc4079f9a528ce8_23" [label="23: Prune (false branch) \n PRUNE(n$5, false); [line 63, column 8]\n " shape="invhouse"] - "g3.8a9fd7dfda802921fdc4079f9a528ce8_32" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_5" ; -"g3.8a9fd7dfda802921fdc4079f9a528ce8_33" [label="33: Prune (false branch) \n n$9=*&0$?%__sil_tmpSIL_temp_conditional___n$7:int [line 63, column 7]\n PRUNE(!n$9, false); [line 63, column 7]\n " shape="invhouse"] + "g3.8a9fd7dfda802921fdc4079f9a528ce8_23" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_20" ; +"g3.8a9fd7dfda802921fdc4079f9a528ce8_24" [label="24: Call _fun_printf \n n$6=_fun_printf(\"B\\n\":char const *) [line 61, column 3]\n " shape="box"] - "g3.8a9fd7dfda802921fdc4079f9a528ce8_33" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_25" ; -"g3.8a9fd7dfda802921fdc4079f9a528ce8_34" [label="34: Call _fun_printf \n n$10=_fun_printf(\"B\\n\":char const *) [line 61, column 3]\n " shape="box"] - - - "g3.8a9fd7dfda802921fdc4079f9a528ce8_34" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_27" ; -"g4.b0b5c8f28ad7834e70a958a8882fa59a_1" [label="1: Start g4\nFormals: \nLocals: a:int 0$?%__sil_tmpSIL_temp_conditional___n$4:int 0$?%__sil_tmpSIL_temp_conditional___n$7:int \n DECLARE_LOCALS(&return,&a,&0$?%__sil_tmpSIL_temp_conditional___n$4,&0$?%__sil_tmpSIL_temp_conditional___n$7); [line 81, column 1]\n " color=yellow style=filled] + "g3.8a9fd7dfda802921fdc4079f9a528ce8_24" -> "g3.8a9fd7dfda802921fdc4079f9a528ce8_21" ; +"g4.b0b5c8f28ad7834e70a958a8882fa59a_1" [label="1: Start g4\nFormals: \nLocals: a:int \n DECLARE_LOCALS(&return,&a); [line 81, column 1]\n " color=yellow style=filled] "g4.b0b5c8f28ad7834e70a958a8882fa59a_1" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_14" ; @@ -438,88 +354,46 @@ digraph iCFG { "g4.b0b5c8f28ad7834e70a958a8882fa59a_14" [label="14: Skip GotoLabel_stepB \n " color="gray"] - "g4.b0b5c8f28ad7834e70a958a8882fa59a_14" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_33" ; + "g4.b0b5c8f28ad7834e70a958a8882fa59a_14" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_23" ; "g4.b0b5c8f28ad7834e70a958a8882fa59a_15" [label="15: + \n " ] "g4.b0b5c8f28ad7834e70a958a8882fa59a_15" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_11" ; -"g4.b0b5c8f28ad7834e70a958a8882fa59a_16" [label="16: + \n " ] - - - "g4.b0b5c8f28ad7834e70a958a8882fa59a_16" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_22" ; - "g4.b0b5c8f28ad7834e70a958a8882fa59a_16" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_23" ; -"g4.b0b5c8f28ad7834e70a958a8882fa59a_17" [label="17: Call _fun_getValue \n n$5=_fun_getValue() [line 87, column 8]\n " shape="box"] - - - "g4.b0b5c8f28ad7834e70a958a8882fa59a_17" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_18" ; - "g4.b0b5c8f28ad7834e70a958a8882fa59a_17" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_19" ; -"g4.b0b5c8f28ad7834e70a958a8882fa59a_18" [label="18: Prune (true branch) \n PRUNE(n$5, true); [line 87, column 8]\n " shape="invhouse"] - - - "g4.b0b5c8f28ad7834e70a958a8882fa59a_18" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_20" ; -"g4.b0b5c8f28ad7834e70a958a8882fa59a_19" [label="19: Prune (false branch) \n PRUNE(!n$5, false); [line 87, column 8]\n " shape="invhouse"] - - - "g4.b0b5c8f28ad7834e70a958a8882fa59a_19" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_21" ; -"g4.b0b5c8f28ad7834e70a958a8882fa59a_20" [label="20: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$4:int=0 [line 87, column 7]\n " shape="box"] - - - "g4.b0b5c8f28ad7834e70a958a8882fa59a_20" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_16" ; -"g4.b0b5c8f28ad7834e70a958a8882fa59a_21" [label="21: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$4:int=1 [line 87, column 7]\n " shape="box"] +"g4.b0b5c8f28ad7834e70a958a8882fa59a_16" [label="16: Call _fun_getValue \n n$4=_fun_getValue() [line 87, column 8]\n " shape="box"] - "g4.b0b5c8f28ad7834e70a958a8882fa59a_21" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_16" ; -"g4.b0b5c8f28ad7834e70a958a8882fa59a_22" [label="22: Prune (true branch) \n n$6=*&0$?%__sil_tmpSIL_temp_conditional___n$4:int [line 87, column 7]\n PRUNE(n$6, true); [line 87, column 7]\n " shape="invhouse"] + "g4.b0b5c8f28ad7834e70a958a8882fa59a_16" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_17" ; + "g4.b0b5c8f28ad7834e70a958a8882fa59a_16" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_18" ; +"g4.b0b5c8f28ad7834e70a958a8882fa59a_17" [label="17: Prune (true branch) \n PRUNE(!n$4, true); [line 87, column 8]\n " shape="invhouse"] - "g4.b0b5c8f28ad7834e70a958a8882fa59a_22" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_8" ; -"g4.b0b5c8f28ad7834e70a958a8882fa59a_23" [label="23: Prune (false branch) \n n$6=*&0$?%__sil_tmpSIL_temp_conditional___n$4:int [line 87, column 7]\n PRUNE(!n$6, false); [line 87, column 7]\n " shape="invhouse"] + "g4.b0b5c8f28ad7834e70a958a8882fa59a_17" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_8" ; +"g4.b0b5c8f28ad7834e70a958a8882fa59a_18" [label="18: Prune (false branch) \n PRUNE(n$4, false); [line 87, column 8]\n " shape="invhouse"] - "g4.b0b5c8f28ad7834e70a958a8882fa59a_23" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_15" ; -"g4.b0b5c8f28ad7834e70a958a8882fa59a_24" [label="24: + \n " ] + "g4.b0b5c8f28ad7834e70a958a8882fa59a_18" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_15" ; +"g4.b0b5c8f28ad7834e70a958a8882fa59a_19" [label="19: + \n " ] - "g4.b0b5c8f28ad7834e70a958a8882fa59a_24" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_17" ; -"g4.b0b5c8f28ad7834e70a958a8882fa59a_25" [label="25: + \n " ] + "g4.b0b5c8f28ad7834e70a958a8882fa59a_19" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_16" ; +"g4.b0b5c8f28ad7834e70a958a8882fa59a_20" [label="20: Call _fun_getValue \n n$5=_fun_getValue() [line 85, column 8]\n " shape="box"] - "g4.b0b5c8f28ad7834e70a958a8882fa59a_25" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_31" ; - "g4.b0b5c8f28ad7834e70a958a8882fa59a_25" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_32" ; -"g4.b0b5c8f28ad7834e70a958a8882fa59a_26" [label="26: Call _fun_getValue \n n$8=_fun_getValue() [line 85, column 8]\n " shape="box"] + "g4.b0b5c8f28ad7834e70a958a8882fa59a_20" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_21" ; + "g4.b0b5c8f28ad7834e70a958a8882fa59a_20" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_22" ; +"g4.b0b5c8f28ad7834e70a958a8882fa59a_21" [label="21: Prune (true branch) \n PRUNE(!n$5, true); [line 85, column 8]\n " shape="invhouse"] - "g4.b0b5c8f28ad7834e70a958a8882fa59a_26" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_27" ; - "g4.b0b5c8f28ad7834e70a958a8882fa59a_26" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_28" ; -"g4.b0b5c8f28ad7834e70a958a8882fa59a_27" [label="27: Prune (true branch) \n PRUNE(n$8, true); [line 85, column 8]\n " shape="invhouse"] + "g4.b0b5c8f28ad7834e70a958a8882fa59a_21" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_5" ; +"g4.b0b5c8f28ad7834e70a958a8882fa59a_22" [label="22: Prune (false branch) \n PRUNE(n$5, false); [line 85, column 8]\n " shape="invhouse"] - "g4.b0b5c8f28ad7834e70a958a8882fa59a_27" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_29" ; -"g4.b0b5c8f28ad7834e70a958a8882fa59a_28" [label="28: Prune (false branch) \n PRUNE(!n$8, false); [line 85, column 8]\n " shape="invhouse"] + "g4.b0b5c8f28ad7834e70a958a8882fa59a_22" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_19" ; +"g4.b0b5c8f28ad7834e70a958a8882fa59a_23" [label="23: Call _fun_printf \n n$6=_fun_printf(\"B\\n\":char const *) [line 83, column 3]\n " shape="box"] - "g4.b0b5c8f28ad7834e70a958a8882fa59a_28" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_30" ; -"g4.b0b5c8f28ad7834e70a958a8882fa59a_29" [label="29: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$7:int=0 [line 85, column 7]\n " shape="box"] - - - "g4.b0b5c8f28ad7834e70a958a8882fa59a_29" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_25" ; -"g4.b0b5c8f28ad7834e70a958a8882fa59a_30" [label="30: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$7:int=1 [line 85, column 7]\n " shape="box"] - - - "g4.b0b5c8f28ad7834e70a958a8882fa59a_30" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_25" ; -"g4.b0b5c8f28ad7834e70a958a8882fa59a_31" [label="31: Prune (true branch) \n n$9=*&0$?%__sil_tmpSIL_temp_conditional___n$7:int [line 85, column 7]\n PRUNE(n$9, true); [line 85, column 7]\n " shape="invhouse"] - - - "g4.b0b5c8f28ad7834e70a958a8882fa59a_31" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_5" ; -"g4.b0b5c8f28ad7834e70a958a8882fa59a_32" [label="32: Prune (false branch) \n n$9=*&0$?%__sil_tmpSIL_temp_conditional___n$7:int [line 85, column 7]\n PRUNE(!n$9, false); [line 85, column 7]\n " shape="invhouse"] - - - "g4.b0b5c8f28ad7834e70a958a8882fa59a_32" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_24" ; -"g4.b0b5c8f28ad7834e70a958a8882fa59a_33" [label="33: Call _fun_printf \n n$10=_fun_printf(\"B\\n\":char const *) [line 83, column 3]\n " shape="box"] - - - "g4.b0b5c8f28ad7834e70a958a8882fa59a_33" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_26" ; -"g5.37c965a8d6d7bec292c7b11ff315d9ea_1" [label="1: Start g5\nFormals: \nLocals: a:int 0$?%__sil_tmpSIL_temp_conditional___n$3:int 0$?%__sil_tmpSIL_temp_conditional___n$6:int \n DECLARE_LOCALS(&return,&a,&0$?%__sil_tmpSIL_temp_conditional___n$3,&0$?%__sil_tmpSIL_temp_conditional___n$6); [line 102, column 1]\n " color=yellow style=filled] + "g4.b0b5c8f28ad7834e70a958a8882fa59a_23" -> "g4.b0b5c8f28ad7834e70a958a8882fa59a_20" ; +"g5.37c965a8d6d7bec292c7b11ff315d9ea_1" [label="1: Start g5\nFormals: \nLocals: a:int \n DECLARE_LOCALS(&return,&a); [line 102, column 1]\n " color=yellow style=filled] "g5.37c965a8d6d7bec292c7b11ff315d9ea_1" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_13" ; @@ -570,88 +444,46 @@ digraph iCFG { "g5.37c965a8d6d7bec292c7b11ff315d9ea_13" [label="13: Skip GotoLabel_stepB \n " color="gray"] - "g5.37c965a8d6d7bec292c7b11ff315d9ea_13" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_32" ; + "g5.37c965a8d6d7bec292c7b11ff315d9ea_13" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_22" ; "g5.37c965a8d6d7bec292c7b11ff315d9ea_14" [label="14: + \n " ] "g5.37c965a8d6d7bec292c7b11ff315d9ea_14" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_10" ; -"g5.37c965a8d6d7bec292c7b11ff315d9ea_15" [label="15: + \n " ] - - - "g5.37c965a8d6d7bec292c7b11ff315d9ea_15" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_21" ; - "g5.37c965a8d6d7bec292c7b11ff315d9ea_15" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_22" ; -"g5.37c965a8d6d7bec292c7b11ff315d9ea_16" [label="16: Call _fun_getValue \n n$4=_fun_getValue() [line 108, column 8]\n " shape="box"] - - - "g5.37c965a8d6d7bec292c7b11ff315d9ea_16" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_17" ; - "g5.37c965a8d6d7bec292c7b11ff315d9ea_16" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_18" ; -"g5.37c965a8d6d7bec292c7b11ff315d9ea_17" [label="17: Prune (true branch) \n PRUNE(n$4, true); [line 108, column 8]\n " shape="invhouse"] - - - "g5.37c965a8d6d7bec292c7b11ff315d9ea_17" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_19" ; -"g5.37c965a8d6d7bec292c7b11ff315d9ea_18" [label="18: Prune (false branch) \n PRUNE(!n$4, false); [line 108, column 8]\n " shape="invhouse"] - - - "g5.37c965a8d6d7bec292c7b11ff315d9ea_18" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_20" ; -"g5.37c965a8d6d7bec292c7b11ff315d9ea_19" [label="19: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int=0 [line 108, column 7]\n " shape="box"] - - - "g5.37c965a8d6d7bec292c7b11ff315d9ea_19" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_15" ; -"g5.37c965a8d6d7bec292c7b11ff315d9ea_20" [label="20: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int=1 [line 108, column 7]\n " shape="box"] - - - "g5.37c965a8d6d7bec292c7b11ff315d9ea_20" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_15" ; -"g5.37c965a8d6d7bec292c7b11ff315d9ea_21" [label="21: Prune (true branch) \n n$5=*&0$?%__sil_tmpSIL_temp_conditional___n$3:int [line 108, column 7]\n PRUNE(n$5, true); [line 108, column 7]\n " shape="invhouse"] - - - "g5.37c965a8d6d7bec292c7b11ff315d9ea_21" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_3" ; -"g5.37c965a8d6d7bec292c7b11ff315d9ea_22" [label="22: Prune (false branch) \n n$5=*&0$?%__sil_tmpSIL_temp_conditional___n$3:int [line 108, column 7]\n PRUNE(!n$5, false); [line 108, column 7]\n " shape="invhouse"] - - - "g5.37c965a8d6d7bec292c7b11ff315d9ea_22" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_14" ; -"g5.37c965a8d6d7bec292c7b11ff315d9ea_23" [label="23: + \n " ] - - - "g5.37c965a8d6d7bec292c7b11ff315d9ea_23" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_16" ; -"g5.37c965a8d6d7bec292c7b11ff315d9ea_24" [label="24: + \n " ] +"g5.37c965a8d6d7bec292c7b11ff315d9ea_15" [label="15: Call _fun_getValue \n n$3=_fun_getValue() [line 108, column 8]\n " shape="box"] - "g5.37c965a8d6d7bec292c7b11ff315d9ea_24" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_30" ; - "g5.37c965a8d6d7bec292c7b11ff315d9ea_24" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_31" ; -"g5.37c965a8d6d7bec292c7b11ff315d9ea_25" [label="25: Call _fun_getValue \n n$7=_fun_getValue() [line 106, column 8]\n " shape="box"] + "g5.37c965a8d6d7bec292c7b11ff315d9ea_15" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_16" ; + "g5.37c965a8d6d7bec292c7b11ff315d9ea_15" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_17" ; +"g5.37c965a8d6d7bec292c7b11ff315d9ea_16" [label="16: Prune (true branch) \n PRUNE(!n$3, true); [line 108, column 8]\n " shape="invhouse"] - "g5.37c965a8d6d7bec292c7b11ff315d9ea_25" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_26" ; - "g5.37c965a8d6d7bec292c7b11ff315d9ea_25" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_27" ; -"g5.37c965a8d6d7bec292c7b11ff315d9ea_26" [label="26: Prune (true branch) \n PRUNE(n$7, true); [line 106, column 8]\n " shape="invhouse"] + "g5.37c965a8d6d7bec292c7b11ff315d9ea_16" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_3" ; +"g5.37c965a8d6d7bec292c7b11ff315d9ea_17" [label="17: Prune (false branch) \n PRUNE(n$3, false); [line 108, column 8]\n " shape="invhouse"] - "g5.37c965a8d6d7bec292c7b11ff315d9ea_26" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_28" ; -"g5.37c965a8d6d7bec292c7b11ff315d9ea_27" [label="27: Prune (false branch) \n PRUNE(!n$7, false); [line 106, column 8]\n " shape="invhouse"] + "g5.37c965a8d6d7bec292c7b11ff315d9ea_17" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_14" ; +"g5.37c965a8d6d7bec292c7b11ff315d9ea_18" [label="18: + \n " ] - "g5.37c965a8d6d7bec292c7b11ff315d9ea_27" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_29" ; -"g5.37c965a8d6d7bec292c7b11ff315d9ea_28" [label="28: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$6:int=0 [line 106, column 7]\n " shape="box"] + "g5.37c965a8d6d7bec292c7b11ff315d9ea_18" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_15" ; +"g5.37c965a8d6d7bec292c7b11ff315d9ea_19" [label="19: Call _fun_getValue \n n$4=_fun_getValue() [line 106, column 8]\n " shape="box"] - "g5.37c965a8d6d7bec292c7b11ff315d9ea_28" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_24" ; -"g5.37c965a8d6d7bec292c7b11ff315d9ea_29" [label="29: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$6:int=1 [line 106, column 7]\n " shape="box"] + "g5.37c965a8d6d7bec292c7b11ff315d9ea_19" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_20" ; + "g5.37c965a8d6d7bec292c7b11ff315d9ea_19" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_21" ; +"g5.37c965a8d6d7bec292c7b11ff315d9ea_20" [label="20: Prune (true branch) \n PRUNE(!n$4, true); [line 106, column 8]\n " shape="invhouse"] - "g5.37c965a8d6d7bec292c7b11ff315d9ea_29" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_24" ; -"g5.37c965a8d6d7bec292c7b11ff315d9ea_30" [label="30: Prune (true branch) \n n$8=*&0$?%__sil_tmpSIL_temp_conditional___n$6:int [line 106, column 7]\n PRUNE(n$8, true); [line 106, column 7]\n " shape="invhouse"] + "g5.37c965a8d6d7bec292c7b11ff315d9ea_20" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_5" ; +"g5.37c965a8d6d7bec292c7b11ff315d9ea_21" [label="21: Prune (false branch) \n PRUNE(n$4, false); [line 106, column 8]\n " shape="invhouse"] - "g5.37c965a8d6d7bec292c7b11ff315d9ea_30" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_5" ; -"g5.37c965a8d6d7bec292c7b11ff315d9ea_31" [label="31: Prune (false branch) \n n$8=*&0$?%__sil_tmpSIL_temp_conditional___n$6:int [line 106, column 7]\n PRUNE(!n$8, false); [line 106, column 7]\n " shape="invhouse"] + "g5.37c965a8d6d7bec292c7b11ff315d9ea_21" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_18" ; +"g5.37c965a8d6d7bec292c7b11ff315d9ea_22" [label="22: Call _fun_printf \n n$5=_fun_printf(\"B\\n\":char const *) [line 104, column 3]\n " shape="box"] - "g5.37c965a8d6d7bec292c7b11ff315d9ea_31" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_23" ; -"g5.37c965a8d6d7bec292c7b11ff315d9ea_32" [label="32: Call _fun_printf \n n$9=_fun_printf(\"B\\n\":char const *) [line 104, column 3]\n " shape="box"] - - - "g5.37c965a8d6d7bec292c7b11ff315d9ea_32" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_25" ; -"g6.4a4314ef967aad20a9e7c423bc16e39c_1" [label="1: Start g6\nFormals: \nLocals: a:int 0$?%__sil_tmpSIL_temp_conditional___n$3:int 0$?%__sil_tmpSIL_temp_conditional___n$6:int \n DECLARE_LOCALS(&return,&a,&0$?%__sil_tmpSIL_temp_conditional___n$3,&0$?%__sil_tmpSIL_temp_conditional___n$6); [line 124, column 1]\n " color=yellow style=filled] + "g5.37c965a8d6d7bec292c7b11ff315d9ea_22" -> "g5.37c965a8d6d7bec292c7b11ff315d9ea_19" ; +"g6.4a4314ef967aad20a9e7c423bc16e39c_1" [label="1: Start g6\nFormals: \nLocals: a:int \n DECLARE_LOCALS(&return,&a); [line 124, column 1]\n " color=yellow style=filled] "g6.4a4314ef967aad20a9e7c423bc16e39c_1" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_13" ; @@ -702,87 +534,45 @@ digraph iCFG { "g6.4a4314ef967aad20a9e7c423bc16e39c_13" [label="13: Skip GotoLabel_stepB \n " color="gray"] - "g6.4a4314ef967aad20a9e7c423bc16e39c_13" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_32" ; + "g6.4a4314ef967aad20a9e7c423bc16e39c_13" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_22" ; "g6.4a4314ef967aad20a9e7c423bc16e39c_14" [label="14: + \n " ] "g6.4a4314ef967aad20a9e7c423bc16e39c_14" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_10" ; -"g6.4a4314ef967aad20a9e7c423bc16e39c_15" [label="15: + \n " ] - - - "g6.4a4314ef967aad20a9e7c423bc16e39c_15" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_21" ; - "g6.4a4314ef967aad20a9e7c423bc16e39c_15" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_22" ; -"g6.4a4314ef967aad20a9e7c423bc16e39c_16" [label="16: Call _fun_getValue \n n$4=_fun_getValue() [line 130, column 8]\n " shape="box"] - - - "g6.4a4314ef967aad20a9e7c423bc16e39c_16" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_17" ; - "g6.4a4314ef967aad20a9e7c423bc16e39c_16" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_18" ; -"g6.4a4314ef967aad20a9e7c423bc16e39c_17" [label="17: Prune (true branch) \n PRUNE(n$4, true); [line 130, column 8]\n " shape="invhouse"] - - - "g6.4a4314ef967aad20a9e7c423bc16e39c_17" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_19" ; -"g6.4a4314ef967aad20a9e7c423bc16e39c_18" [label="18: Prune (false branch) \n PRUNE(!n$4, false); [line 130, column 8]\n " shape="invhouse"] - - - "g6.4a4314ef967aad20a9e7c423bc16e39c_18" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_20" ; -"g6.4a4314ef967aad20a9e7c423bc16e39c_19" [label="19: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int=0 [line 130, column 7]\n " shape="box"] - - - "g6.4a4314ef967aad20a9e7c423bc16e39c_19" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_15" ; -"g6.4a4314ef967aad20a9e7c423bc16e39c_20" [label="20: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$3:int=1 [line 130, column 7]\n " shape="box"] - - - "g6.4a4314ef967aad20a9e7c423bc16e39c_20" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_15" ; -"g6.4a4314ef967aad20a9e7c423bc16e39c_21" [label="21: Prune (true branch) \n n$5=*&0$?%__sil_tmpSIL_temp_conditional___n$3:int [line 130, column 7]\n PRUNE(n$5, true); [line 130, column 7]\n " shape="invhouse"] - - - "g6.4a4314ef967aad20a9e7c423bc16e39c_21" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_3" ; -"g6.4a4314ef967aad20a9e7c423bc16e39c_22" [label="22: Prune (false branch) \n n$5=*&0$?%__sil_tmpSIL_temp_conditional___n$3:int [line 130, column 7]\n PRUNE(!n$5, false); [line 130, column 7]\n " shape="invhouse"] - - - "g6.4a4314ef967aad20a9e7c423bc16e39c_22" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_14" ; -"g6.4a4314ef967aad20a9e7c423bc16e39c_23" [label="23: + \n " ] - - - "g6.4a4314ef967aad20a9e7c423bc16e39c_23" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_16" ; -"g6.4a4314ef967aad20a9e7c423bc16e39c_24" [label="24: + \n " ] - - - "g6.4a4314ef967aad20a9e7c423bc16e39c_24" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_30" ; - "g6.4a4314ef967aad20a9e7c423bc16e39c_24" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_31" ; -"g6.4a4314ef967aad20a9e7c423bc16e39c_25" [label="25: Call _fun_getValue \n n$7=_fun_getValue() [line 128, column 8]\n " shape="box"] +"g6.4a4314ef967aad20a9e7c423bc16e39c_15" [label="15: Call _fun_getValue \n n$3=_fun_getValue() [line 130, column 8]\n " shape="box"] - "g6.4a4314ef967aad20a9e7c423bc16e39c_25" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_26" ; - "g6.4a4314ef967aad20a9e7c423bc16e39c_25" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_27" ; -"g6.4a4314ef967aad20a9e7c423bc16e39c_26" [label="26: Prune (true branch) \n PRUNE(n$7, true); [line 128, column 8]\n " shape="invhouse"] + "g6.4a4314ef967aad20a9e7c423bc16e39c_15" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_16" ; + "g6.4a4314ef967aad20a9e7c423bc16e39c_15" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_17" ; +"g6.4a4314ef967aad20a9e7c423bc16e39c_16" [label="16: Prune (true branch) \n PRUNE(!n$3, true); [line 130, column 8]\n " shape="invhouse"] - "g6.4a4314ef967aad20a9e7c423bc16e39c_26" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_28" ; -"g6.4a4314ef967aad20a9e7c423bc16e39c_27" [label="27: Prune (false branch) \n PRUNE(!n$7, false); [line 128, column 8]\n " shape="invhouse"] + "g6.4a4314ef967aad20a9e7c423bc16e39c_16" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_3" ; +"g6.4a4314ef967aad20a9e7c423bc16e39c_17" [label="17: Prune (false branch) \n PRUNE(n$3, false); [line 130, column 8]\n " shape="invhouse"] - "g6.4a4314ef967aad20a9e7c423bc16e39c_27" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_29" ; -"g6.4a4314ef967aad20a9e7c423bc16e39c_28" [label="28: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$6:int=0 [line 128, column 7]\n " shape="box"] + "g6.4a4314ef967aad20a9e7c423bc16e39c_17" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_14" ; +"g6.4a4314ef967aad20a9e7c423bc16e39c_18" [label="18: + \n " ] - "g6.4a4314ef967aad20a9e7c423bc16e39c_28" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_24" ; -"g6.4a4314ef967aad20a9e7c423bc16e39c_29" [label="29: ConditinalStmt Branch \n *&0$?%__sil_tmpSIL_temp_conditional___n$6:int=1 [line 128, column 7]\n " shape="box"] + "g6.4a4314ef967aad20a9e7c423bc16e39c_18" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_15" ; +"g6.4a4314ef967aad20a9e7c423bc16e39c_19" [label="19: Call _fun_getValue \n n$4=_fun_getValue() [line 128, column 8]\n " shape="box"] - "g6.4a4314ef967aad20a9e7c423bc16e39c_29" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_24" ; -"g6.4a4314ef967aad20a9e7c423bc16e39c_30" [label="30: Prune (true branch) \n n$8=*&0$?%__sil_tmpSIL_temp_conditional___n$6:int [line 128, column 7]\n PRUNE(n$8, true); [line 128, column 7]\n " shape="invhouse"] + "g6.4a4314ef967aad20a9e7c423bc16e39c_19" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_20" ; + "g6.4a4314ef967aad20a9e7c423bc16e39c_19" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_21" ; +"g6.4a4314ef967aad20a9e7c423bc16e39c_20" [label="20: Prune (true branch) \n PRUNE(!n$4, true); [line 128, column 8]\n " shape="invhouse"] - "g6.4a4314ef967aad20a9e7c423bc16e39c_30" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_5" ; -"g6.4a4314ef967aad20a9e7c423bc16e39c_31" [label="31: Prune (false branch) \n n$8=*&0$?%__sil_tmpSIL_temp_conditional___n$6:int [line 128, column 7]\n PRUNE(!n$8, false); [line 128, column 7]\n " shape="invhouse"] + "g6.4a4314ef967aad20a9e7c423bc16e39c_20" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_5" ; +"g6.4a4314ef967aad20a9e7c423bc16e39c_21" [label="21: Prune (false branch) \n PRUNE(n$4, false); [line 128, column 8]\n " shape="invhouse"] - "g6.4a4314ef967aad20a9e7c423bc16e39c_31" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_23" ; -"g6.4a4314ef967aad20a9e7c423bc16e39c_32" [label="32: Call _fun_printf \n n$9=_fun_printf(\"B\\n\":char const *) [line 126, column 3]\n " shape="box"] + "g6.4a4314ef967aad20a9e7c423bc16e39c_21" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_18" ; +"g6.4a4314ef967aad20a9e7c423bc16e39c_22" [label="22: Call _fun_printf \n n$5=_fun_printf(\"B\\n\":char const *) [line 126, column 3]\n " shape="box"] - "g6.4a4314ef967aad20a9e7c423bc16e39c_32" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_25" ; + "g6.4a4314ef967aad20a9e7c423bc16e39c_22" -> "g6.4a4314ef967aad20a9e7c423bc16e39c_19" ; "g7.727bb92f57c3951d11695a52c92c2b0c_1" [label="1: Start g7\nFormals: \nLocals: v:int k:int j:int i:int \n DECLARE_LOCALS(&return,&v,&k,&j,&i); [line 146, column 1]\n " color=yellow style=filled] diff --git a/infer/tests/codetoanalyze/cpp/bufferoverrun/issues.exp b/infer/tests/codetoanalyze/cpp/bufferoverrun/issues.exp index 519f5209f..2ef53d2dd 100644 --- a/infer/tests/codetoanalyze/cpp/bufferoverrun/issues.exp +++ b/infer/tests/codetoanalyze/cpp/bufferoverrun/issues.exp @@ -11,11 +11,9 @@ codetoanalyze/cpp/bufferoverrun/repro1.cpp, am_Good_FP, 5, BUFFER_OVERRUN_L5, [C codetoanalyze/cpp/bufferoverrun/simple_vector.cpp, instantiate_my_vector_oob_Ok, 3, BUFFER_OVERRUN_L1, [Call,Assignment,Call,Call,Call,ArrayDeclaration,Assignment,ArrayAccess: Offset: [42, 42] Size: [42, 42] @ codetoanalyze/cpp/bufferoverrun/simple_vector.cpp:21:23 by call `my_vector_oob_Bad()` ] codetoanalyze/cpp/bufferoverrun/simple_vector.cpp, my_vector_oob_Bad, 2, BUFFER_OVERRUN_L2, [Call,Call,ArrayDeclaration,Assignment,ArrayAccess: Offset: [max(0, s$4), s$5] Size: [max(0, s$4), s$5] @ codetoanalyze/cpp/bufferoverrun/simple_vector.cpp:21:23 by call `int_vector_access_at()` ] codetoanalyze/cpp/bufferoverrun/trivial.cpp, trivial, 2, BUFFER_OVERRUN_L1, [ArrayDeclaration,ArrayAccess: Offset: [10, 10] Size: [10, 10]] -codetoanalyze/cpp/bufferoverrun/vector.cpp, call_safe_access4_Good_FP, 2, BUFFER_OVERRUN_L1, [Call,Call,Assignment,Call,Call,Assignment,Return,Call,Assignment,Call,Call,Call,Call,Call,ArrayDeclaration,Assignment,ArrayAccess: Offset: [0, 0] Size: [0, 0]] codetoanalyze/cpp/bufferoverrun/vector.cpp, just_test_model_FP, 16, BUFFER_OVERRUN_L5, [Call,ArrayAccess: Offset: [-oo, +oo] Size: [0, +oo]] codetoanalyze/cpp/bufferoverrun/vector.cpp, just_test_model_FP, 18, BUFFER_OVERRUN_L3, [Call,Call,Call,Assignment,Call,Call,Call,Call,Call,ArrayDeclaration,Assignment,ArrayAccess: Offset: [1, 1] Size: [0, +oo]] codetoanalyze/cpp/bufferoverrun/vector.cpp, out_of_bound_Bad, 2, BUFFER_OVERRUN_L2, [Call,Call,Call,ArrayDeclaration,Assignment,ArrayAccess: Offset: [max(0, s$12), s$13] Size: [max(0, s$12), s$13]] codetoanalyze/cpp/bufferoverrun/vector.cpp, push_back_Bad, 3, BUFFER_OVERRUN_L1, [Call,Call,Assignment,Call,Assignment,Call,Call,ArrayDeclaration,Assignment,ArrayAccess: Offset: [1, 1] Size: [1, 1]] codetoanalyze/cpp/bufferoverrun/vector.cpp, reserve_Bad, 3, BUFFER_OVERRUN_L1, [Call,Call,Assignment,Call,Call,Call,ArrayDeclaration,Assignment,ArrayAccess: Offset: [0, 0] Size: [0, 0]] codetoanalyze/cpp/bufferoverrun/vector.cpp, safe_access3_Good, 2, CONDITION_ALWAYS_FALSE, [] -codetoanalyze/cpp/bufferoverrun/vector.cpp, safe_access3_Good, 2, CONDITION_ALWAYS_TRUE, [] diff --git a/infer/tests/codetoanalyze/cpp/bufferoverrun/vector.cpp b/infer/tests/codetoanalyze/cpp/bufferoverrun/vector.cpp index fe7f89bd3..288fde272 100644 --- a/infer/tests/codetoanalyze/cpp/bufferoverrun/vector.cpp +++ b/infer/tests/codetoanalyze/cpp/bufferoverrun/vector.cpp @@ -117,7 +117,7 @@ void safe_access4(std::vector v) { } } -void call_safe_access4_Good_FP() { +void call_safe_access4_Good() { std::vector v; safe_access4(v); } diff --git a/infer/tests/codetoanalyze/cpp/errors/issues.exp b/infer/tests/codetoanalyze/cpp/errors/issues.exp index 16cef79c6..02e8ad248 100644 --- a/infer/tests/codetoanalyze/cpp/errors/issues.exp +++ b/infer/tests/codetoanalyze/cpp/errors/issues.exp @@ -21,25 +21,25 @@ codetoanalyze/cpp/errors/memory_leaks/array_leak.cpp, no_leak, 2, DANGLING_POINT codetoanalyze/cpp/errors/memory_leaks/object_leak.cpp, object_leak, 0, MEMORY_LEAK, [start of procedure object_leak(),start of procedure Rectangle,return from a call to Rectangle_Rectangle,start of procedure Rectangle,return from a call to Rectangle_Rectangle] codetoanalyze/cpp/errors/memory_leaks/raii_malloc.cpp, memory_leak, 0, MEMORY_LEAK, [start of procedure memory_leak()] codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::compare_exchange_strong_possible_npe1_bad, 6, NULL_DEREFERENCE, [start of procedure atomic_test::compare_exchange_strong_possible_npe1_bad(),Condition is true,Condition is true,Condition is true] -codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::compare_exchange_strong_possible_npe2_bad, 6, NULL_DEREFERENCE, [start of procedure atomic_test::compare_exchange_strong_possible_npe2_bad(),Condition is true,Condition is true,Condition is false,Condition is true] +codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::compare_exchange_strong_possible_npe2_bad, 6, NULL_DEREFERENCE, [start of procedure atomic_test::compare_exchange_strong_possible_npe2_bad(),Condition is true,Condition is true,Condition is true] codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::compare_exchange_weak_possible_npe1_bad, 6, NULL_DEREFERENCE, [start of procedure atomic_test::compare_exchange_weak_possible_npe1_bad(),Condition is true,Condition is true,Condition is true] -codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::compare_exchange_weak_possible_npe2_bad, 6, NULL_DEREFERENCE, [start of procedure atomic_test::compare_exchange_weak_possible_npe2_bad(),Condition is true,Condition is true,Condition is false,Condition is true] +codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::compare_exchange_weak_possible_npe2_bad, 6, NULL_DEREFERENCE, [start of procedure atomic_test::compare_exchange_weak_possible_npe2_bad(),Condition is true,Condition is true,Condition is true] codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::exchange_possible_npe_bad, 5, NULL_DEREFERENCE, [start of procedure atomic_test::exchange_possible_npe_bad(),Condition is true,Condition is true] codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::is_zero_possible_npe_bad, 6, NULL_DEREFERENCE, [start of procedure atomic_test::is_zero_possible_npe_bad(),start of procedure A,return from a call to atomic_test::A_A,start of procedure add,return from a call to atomic_test::A_add,start of procedure sub,return from a call to atomic_test::A_sub,start of procedure is_zero,Condition is true,return from a call to atomic_test::A_is_zero,Condition is true] codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::load_store_possible_npe_bad, 5, NULL_DEREFERENCE, [start of procedure atomic_test::load_store_possible_npe_bad(),Condition is true] -codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::not_zero_possible_npe_bad, 6, NULL_DEREFERENCE, [start of procedure atomic_test::not_zero_possible_npe_bad(),start of procedure A,return from a call to atomic_test::A_A,start of procedure sub,return from a call to atomic_test::A_sub,start of procedure sub,return from a call to atomic_test::A_sub,start of procedure is_zero,Condition is false,return from a call to atomic_test::A_is_zero,Condition is false,Condition is true] +codetoanalyze/cpp/errors/models/atomic.cpp, atomic_test::not_zero_possible_npe_bad, 6, NULL_DEREFERENCE, [start of procedure atomic_test::not_zero_possible_npe_bad(),start of procedure A,return from a call to atomic_test::A_A,start of procedure sub,return from a call to atomic_test::A_sub,start of procedure sub,return from a call to atomic_test::A_sub,start of procedure is_zero,Condition is false,return from a call to atomic_test::A_is_zero,Condition is true] codetoanalyze/cpp/errors/models/cmp.cpp, operator_eq_bad, 4, NULL_DEREFERENCE, [start of procedure operator_eq_bad(),start of procedure operator==(),Condition is true,Condition is true,return from a call to operator==,Condition is true] codetoanalyze/cpp/errors/models/cmp.cpp, operator_ge_bad, 4, NULL_DEREFERENCE, [start of procedure operator_ge_bad(),start of procedure operator>=(),start of procedure operator<(),Condition is false,Condition is false,Condition is false,return from a call to operator<,Condition is false,return from a call to operator>=,Condition is true] codetoanalyze/cpp/errors/models/cmp.cpp, operator_gt_bad, 4, NULL_DEREFERENCE, [start of procedure operator_gt_bad(),start of procedure operator>(),start of procedure operator<(),Condition is false,Condition is false,Condition is true,return from a call to operator<,return from a call to operator>,Condition is true] codetoanalyze/cpp/errors/models/cmp.cpp, operator_le_bad, 4, NULL_DEREFERENCE, [start of procedure operator_le_bad(),start of procedure operator<=(),start of procedure operator<(),Condition is false,Condition is false,Condition is false,return from a call to operator<,Condition is false,return from a call to operator<=,Condition is true] codetoanalyze/cpp/errors/models/cmp.cpp, operator_lt_bad, 4, NULL_DEREFERENCE, [start of procedure operator_lt_bad(),start of procedure operator<(),Condition is false,Condition is false,Condition is true,return from a call to operator<,Condition is true] -codetoanalyze/cpp/errors/models/cmp.cpp, operator_neq_bad, 4, NULL_DEREFERENCE, [start of procedure operator_neq_bad(),start of procedure operator!=(),start of procedure operator==(),Condition is true,Condition is true,return from a call to operator==,Condition is true,return from a call to operator!=,Condition is false,Condition is true] +codetoanalyze/cpp/errors/models/cmp.cpp, operator_neq_bad, 4, NULL_DEREFERENCE, [start of procedure operator_neq_bad(),start of procedure operator!=(),start of procedure operator==(),Condition is true,Condition is true,return from a call to operator==,Condition is true,return from a call to operator!=,Condition is true] codetoanalyze/cpp/errors/models/cmp.cpp, std_equal_to_bad, 4, NULL_DEREFERENCE, [start of procedure std_equal_to_bad(),Condition is true] codetoanalyze/cpp/errors/models/cmp.cpp, std_greater_bad, 4, NULL_DEREFERENCE, [start of procedure std_greater_bad(),Condition is true] codetoanalyze/cpp/errors/models/cmp.cpp, std_greater_equal_bad, 4, NULL_DEREFERENCE, [start of procedure std_greater_equal_bad(),Condition is true] codetoanalyze/cpp/errors/models/cmp.cpp, std_less_bad, 4, NULL_DEREFERENCE, [start of procedure std_less_bad(),Condition is true] codetoanalyze/cpp/errors/models/cmp.cpp, std_less_equal_bad, 4, NULL_DEREFERENCE, [start of procedure std_less_equal_bad(),Condition is true] -codetoanalyze/cpp/errors/models/cmp.cpp, std_not_equal_to_bad, 4, NULL_DEREFERENCE, [start of procedure std_not_equal_to_bad(),Condition is false,Condition is true] +codetoanalyze/cpp/errors/models/cmp.cpp, std_not_equal_to_bad, 4, NULL_DEREFERENCE, [start of procedure std_not_equal_to_bad(),Condition is true] codetoanalyze/cpp/errors/models/move.cpp, move::div0_moved_from, 3, DIVIDE_BY_ZERO, [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, [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, [start of procedure pair::deref_pair_null0_bad(),start of procedure pair::pairOfZeroNull(),return from a call to pair::pairOfZeroNull] @@ -64,10 +64,10 @@ 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_ok_field_deref, 4, UNINITIALIZED_VALUE, [start of procedure boxed_ptr::smart_ptr_ok_field_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] codetoanalyze/cpp/errors/npe/boxed_ptr.cpp, boxed_ptr::smart_ptr_result_method_null_deref, 4, NULL_DEREFERENCE, [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/boxed_ptr.cpp, boxed_ptr::smart_ptr_result_method_ok_deref, 4, UNINITIALIZED_VALUE, [start of procedure boxed_ptr::smart_ptr_result_method_ok_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 getPtr,return from a call to boxed_ptr::X_getPtr] -codetoanalyze/cpp/errors/npe/cancellation.cpp, cancellation_test::size_nonzero_deref2_bad, 4, NULL_DEREFERENCE, [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,Condition is false,Condition is true] -codetoanalyze/cpp/errors/npe/cancellation.cpp, cancellation_test::size_nonzero_deref_bad, 4, NULL_DEREFERENCE, [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,Condition is false,Condition is true] -codetoanalyze/cpp/errors/npe/cancellation.cpp, cancellation_test::size_nonzero_deref_iter2_bad, 4, NULL_DEREFERENCE, [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,Condition is false,Condition is true] -codetoanalyze/cpp/errors/npe/cancellation.cpp, cancellation_test::size_nonzero_deref_iter_bad, 4, NULL_DEREFERENCE, [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,Condition is false,Condition is true] +codetoanalyze/cpp/errors/npe/cancellation.cpp, cancellation_test::size_nonzero_deref2_bad, 4, NULL_DEREFERENCE, [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,Condition is true] +codetoanalyze/cpp/errors/npe/cancellation.cpp, cancellation_test::size_nonzero_deref_bad, 4, NULL_DEREFERENCE, [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,Condition is true] +codetoanalyze/cpp/errors/npe/cancellation.cpp, cancellation_test::size_nonzero_deref_iter2_bad, 4, NULL_DEREFERENCE, [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,Condition is true] +codetoanalyze/cpp/errors/npe/cancellation.cpp, cancellation_test::size_nonzero_deref_iter_bad, 4, NULL_DEREFERENCE, [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,Condition is true] codetoanalyze/cpp/errors/npe/cancellation.cpp, cancellation_test::size_zero_deref2_bad, 4, NULL_DEREFERENCE, [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,Condition is true] codetoanalyze/cpp/errors/npe/cancellation.cpp, cancellation_test::size_zero_deref_bad, 4, NULL_DEREFERENCE, [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,Condition is true] codetoanalyze/cpp/errors/npe/cancellation.cpp, cancellation_test::size_zero_deref_iter2_bad, 4, NULL_DEREFERENCE, [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,Condition is true] @@ -104,7 +104,7 @@ codetoanalyze/cpp/errors/smart_ptr/const_volatile_type.cpp, test_volatile3, 3, N codetoanalyze/cpp/errors/smart_ptr/const_volatile_type.cpp, test_volatile4, 2, NULL_DEREFERENCE, [start of procedure test_volatile4()] codetoanalyze/cpp/errors/smart_ptr/deref_after_move_example.cpp, deref_after_mode_example::Person_Person, 1, MEMORY_LEAK, [start of procedure Person] codetoanalyze/cpp/errors/smart_ptr/deref_after_move_example.cpp, deref_after_mode_example::deref_after_move_crash, 4, NULL_DEREFERENCE, [start of procedure deref_after_mode_example::deref_after_move_crash(),Skipping Person: function or method not found,start of procedure move_age,return from a call to deref_after_mode_example::Person_move_age,start of procedure access_age] -codetoanalyze/cpp/errors/smart_ptr/shared_ptr_constructors.cpp, shared_ptr_constructors::aliasing_member_null_bad, 4, NULL_DEREFERENCE, [start of procedure shared_ptr_constructors::aliasing_member_null_bad(),start of procedure shared_ptr_constructors::aliasing_construct_from_internal(),start of procedure shared_ptr_constructors::internal_null_def(),Skipping shared_ptr_constructors::external_def(): function or method not found,return from a call to shared_ptr_constructors::internal_null_def,Condition is true,Condition is false,return from a call to shared_ptr_constructors::aliasing_construct_from_internal] +codetoanalyze/cpp/errors/smart_ptr/shared_ptr_constructors.cpp, shared_ptr_constructors::aliasing_member_null_bad, 4, NULL_DEREFERENCE, [start of procedure shared_ptr_constructors::aliasing_member_null_bad(),start of procedure shared_ptr_constructors::aliasing_construct_from_internal(),start of procedure shared_ptr_constructors::internal_null_def(),Skipping shared_ptr_constructors::external_def(): function or method not found,return from a call to shared_ptr_constructors::internal_null_def,Condition is false,return from a call to shared_ptr_constructors::aliasing_construct_from_internal] codetoanalyze/cpp/errors/smart_ptr/shared_ptr_constructors.cpp, shared_ptr_constructors::get_from_base1_null_f1_deref, 6, NULL_DEREFERENCE, [start of procedure shared_ptr_constructors::get_from_base1_null_f1_deref(),start of procedure Base,return from a call to shared_ptr_constructors::Base_Base,start of procedure shared_ptr_constructors::getFromBase1(),return from a call to shared_ptr_constructors::getFromBase1] codetoanalyze/cpp/errors/smart_ptr/shared_ptr_constructors.cpp, shared_ptr_constructors::get_from_base1_nullptr_deref, 0, NULL_DEREFERENCE, [start of procedure shared_ptr_constructors::get_from_base1_nullptr_deref(),start of procedure shared_ptr_constructors::getFromBase1(),return from a call to shared_ptr_constructors::getFromBase1] codetoanalyze/cpp/errors/smart_ptr/shared_ptr_constructors.cpp, shared_ptr_constructors::get_from_base2_null_f1_deref, 6, NULL_DEREFERENCE, [start of procedure shared_ptr_constructors::get_from_base2_null_f1_deref(),start of procedure Base,return from a call to shared_ptr_constructors::Base_Base,start of procedure shared_ptr_constructors::getFromBase2(),return from a call to shared_ptr_constructors::getFromBase2] @@ -161,15 +161,15 @@ codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::unique_ptr_ codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::unique_ptr_move_null_deref, 3, NULL_DEREFERENCE, [start of procedure unique_ptr::unique_ptr_move_null_deref()] codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::unique_ptr_move_ok_deref, 3, MEMORY_LEAK, [start of procedure unique_ptr::unique_ptr_move_ok_deref()] codetoanalyze/cpp/errors/smart_ptr/unique_ptr_deref.cpp, unique_ptr::unique_ptr_move_ok_deref, 3, UNINITIALIZED_VALUE, [start of procedure unique_ptr::unique_ptr_move_ok_deref()] -codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::safeGetFromSharedBaseAssign_bad, 4, NULL_DEREFERENCE, [start of procedure weak_ptr_derefs::safeGetFromSharedBaseAssign_bad(),Skipping std::make_shared(): function or method not found,start of procedure weak_ptr_constructors::fromSharedBaseAssign(),return from a call to weak_ptr_constructors::fromSharedBaseAssign,start of procedure weak_ptr_derefs::safeGet(),Condition is true,Condition is false,return from a call to weak_ptr_derefs::safeGet] -codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::safeGetFromSharedBaseConstr_bad, 4, NULL_DEREFERENCE, [start of procedure weak_ptr_derefs::safeGetFromSharedBaseConstr_bad(),Skipping std::make_shared(): function or method not found,start of procedure weak_ptr_constructors::fromSharedBaseConstr(),return from a call to weak_ptr_constructors::fromSharedBaseConstr,start of procedure weak_ptr_derefs::safeGet(),Condition is true,Condition is false,return from a call to weak_ptr_derefs::safeGet] -codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::safeGetFromSharedDerivedAssign_bad, 4, NULL_DEREFERENCE, [start of procedure weak_ptr_derefs::safeGetFromSharedDerivedAssign_bad(),Skipping std::make_shared(): function or method not found,start of procedure weak_ptr_constructors::fromSharedDerivedAssign(),return from a call to weak_ptr_constructors::fromSharedDerivedAssign,start of procedure weak_ptr_derefs::safeGet(),Condition is true,Condition is false,return from a call to weak_ptr_derefs::safeGet] -codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::safeGetFromSharedDerivedConstr2_bad, 4, NULL_DEREFERENCE, [start of procedure weak_ptr_derefs::safeGetFromSharedDerivedConstr2_bad(),Skipping std::make_shared(): function or method not found,start of procedure weak_ptr_constructors::fromSharedDerivedConstr2(),return from a call to weak_ptr_constructors::fromSharedDerivedConstr2,start of procedure weak_ptr_derefs::safeGet(),Condition is true,Condition is false,return from a call to weak_ptr_derefs::safeGet] -codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::safeGetFromSharedDerivedConstr_bad, 4, NULL_DEREFERENCE, [start of procedure weak_ptr_derefs::safeGetFromSharedDerivedConstr_bad(),Skipping std::make_shared(): function or method not found,start of procedure weak_ptr_constructors::fromSharedDerivedConstr(),return from a call to weak_ptr_constructors::fromSharedDerivedConstr,start of procedure weak_ptr_derefs::safeGet(),Condition is true,Condition is false,return from a call to weak_ptr_derefs::safeGet] -codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::safeGetFromWeakBaseAssign_bad, 4, NULL_DEREFERENCE, [start of procedure weak_ptr_derefs::safeGetFromWeakBaseAssign_bad(),Skipping std::make_shared(): function or method not found,start of procedure weak_ptr_constructors::fromWeakBaseAssign(),return from a call to weak_ptr_constructors::fromWeakBaseAssign,start of procedure weak_ptr_derefs::safeGet(),Condition is true,Condition is false,return from a call to weak_ptr_derefs::safeGet] -codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::safeGetFromWeakBaseConstr_bad, 4, NULL_DEREFERENCE, [start of procedure weak_ptr_derefs::safeGetFromWeakBaseConstr_bad(),Skipping std::make_shared(): function or method not found,start of procedure weak_ptr_constructors::fromWeakBaseConstr(),return from a call to weak_ptr_constructors::fromWeakBaseConstr,start of procedure weak_ptr_derefs::safeGet(),Condition is true,Condition is false,return from a call to weak_ptr_derefs::safeGet] -codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::safeGetFromWeakDerivedAssign_bad, 4, NULL_DEREFERENCE, [start of procedure weak_ptr_derefs::safeGetFromWeakDerivedAssign_bad(),Skipping std::make_shared(): function or method not found,start of procedure weak_ptr_constructors::fromWeakDerivedAssign(),return from a call to weak_ptr_constructors::fromWeakDerivedAssign,start of procedure weak_ptr_derefs::safeGet(),Condition is true,Condition is false,return from a call to weak_ptr_derefs::safeGet] -codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::safeGetFromWeakDerivedConstr_bad, 4, NULL_DEREFERENCE, [start of procedure weak_ptr_derefs::safeGetFromWeakDerivedConstr_bad(),Skipping std::make_shared(): function or method not found,start of procedure weak_ptr_constructors::fromWeakDerivedConstr(),return from a call to weak_ptr_constructors::fromWeakDerivedConstr,start of procedure weak_ptr_derefs::safeGet(),Condition is true,Condition is false,return from a call to weak_ptr_derefs::safeGet] +codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::safeGetFromSharedBaseAssign_bad, 4, NULL_DEREFERENCE, [start of procedure weak_ptr_derefs::safeGetFromSharedBaseAssign_bad(),Skipping std::make_shared(): function or method not found,start of procedure weak_ptr_constructors::fromSharedBaseAssign(),return from a call to weak_ptr_constructors::fromSharedBaseAssign,start of procedure weak_ptr_derefs::safeGet(),Condition is false,return from a call to weak_ptr_derefs::safeGet] +codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::safeGetFromSharedBaseConstr_bad, 4, NULL_DEREFERENCE, [start of procedure weak_ptr_derefs::safeGetFromSharedBaseConstr_bad(),Skipping std::make_shared(): function or method not found,start of procedure weak_ptr_constructors::fromSharedBaseConstr(),return from a call to weak_ptr_constructors::fromSharedBaseConstr,start of procedure weak_ptr_derefs::safeGet(),Condition is false,return from a call to weak_ptr_derefs::safeGet] +codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::safeGetFromSharedDerivedAssign_bad, 4, NULL_DEREFERENCE, [start of procedure weak_ptr_derefs::safeGetFromSharedDerivedAssign_bad(),Skipping std::make_shared(): function or method not found,start of procedure weak_ptr_constructors::fromSharedDerivedAssign(),return from a call to weak_ptr_constructors::fromSharedDerivedAssign,start of procedure weak_ptr_derefs::safeGet(),Condition is false,return from a call to weak_ptr_derefs::safeGet] +codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::safeGetFromSharedDerivedConstr2_bad, 4, NULL_DEREFERENCE, [start of procedure weak_ptr_derefs::safeGetFromSharedDerivedConstr2_bad(),Skipping std::make_shared(): function or method not found,start of procedure weak_ptr_constructors::fromSharedDerivedConstr2(),return from a call to weak_ptr_constructors::fromSharedDerivedConstr2,start of procedure weak_ptr_derefs::safeGet(),Condition is false,return from a call to weak_ptr_derefs::safeGet] +codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::safeGetFromSharedDerivedConstr_bad, 4, NULL_DEREFERENCE, [start of procedure weak_ptr_derefs::safeGetFromSharedDerivedConstr_bad(),Skipping std::make_shared(): function or method not found,start of procedure weak_ptr_constructors::fromSharedDerivedConstr(),return from a call to weak_ptr_constructors::fromSharedDerivedConstr,start of procedure weak_ptr_derefs::safeGet(),Condition is false,return from a call to weak_ptr_derefs::safeGet] +codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::safeGetFromWeakBaseAssign_bad, 4, NULL_DEREFERENCE, [start of procedure weak_ptr_derefs::safeGetFromWeakBaseAssign_bad(),Skipping std::make_shared(): function or method not found,start of procedure weak_ptr_constructors::fromWeakBaseAssign(),return from a call to weak_ptr_constructors::fromWeakBaseAssign,start of procedure weak_ptr_derefs::safeGet(),Condition is false,return from a call to weak_ptr_derefs::safeGet] +codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::safeGetFromWeakBaseConstr_bad, 4, NULL_DEREFERENCE, [start of procedure weak_ptr_derefs::safeGetFromWeakBaseConstr_bad(),Skipping std::make_shared(): function or method not found,start of procedure weak_ptr_constructors::fromWeakBaseConstr(),return from a call to weak_ptr_constructors::fromWeakBaseConstr,start of procedure weak_ptr_derefs::safeGet(),Condition is false,return from a call to weak_ptr_derefs::safeGet] +codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::safeGetFromWeakDerivedAssign_bad, 4, NULL_DEREFERENCE, [start of procedure weak_ptr_derefs::safeGetFromWeakDerivedAssign_bad(),Skipping std::make_shared(): function or method not found,start of procedure weak_ptr_constructors::fromWeakDerivedAssign(),return from a call to weak_ptr_constructors::fromWeakDerivedAssign,start of procedure weak_ptr_derefs::safeGet(),Condition is false,return from a call to weak_ptr_derefs::safeGet] +codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_derefs::safeGetFromWeakDerivedConstr_bad, 4, NULL_DEREFERENCE, [start of procedure weak_ptr_derefs::safeGetFromWeakDerivedConstr_bad(),Skipping std::make_shared(): function or method not found,start of procedure weak_ptr_constructors::fromWeakDerivedConstr(),return from a call to weak_ptr_constructors::fromWeakDerivedConstr,start of procedure weak_ptr_derefs::safeGet(),Condition is false,return from a call to weak_ptr_derefs::safeGet] codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_observers::empty_weak_lock_returns_null_bad, 3, NULL_DEREFERENCE, [start of procedure weak_ptr_observers::empty_weak_lock_returns_null_bad()] codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_observers::expired_after_reset_bad, 5, expired after weak_ptr reset is true, [start of procedure weak_ptr_observers::expired_after_reset_bad(),Condition is true,return from a call to weak_ptr_observers::expired_after_reset_bad] codetoanalyze/cpp/errors/smart_ptr/weak_ptr.cpp, weak_ptr_observers::expired_after_swap_bad, 6, expired after weak_ptr swap with empty is true, [start of procedure weak_ptr_observers::expired_after_swap_bad(),Condition is true,return from a call to weak_ptr_observers::expired_after_swap_bad] @@ -240,8 +240,8 @@ codetoanalyze/cpp/errors/vector/empty_access.cpp, vector_as_param_clear, 3, EMPT codetoanalyze/cpp/errors/vector/empty_access.cpp, vector_as_param_empty, 2, EMPTY_VECTOR_ACCESS, [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, [start of procedure iterator_access::possible_npe(),Condition is true,Condition is true,Condition is true] codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::empty_deref1_bad, 4, NULL_DEREFERENCE, [start of procedure iterator_compare::empty_deref1_bad(),start of procedure iterator_compare::is_empty(),return from a call to iterator_compare::is_empty,Condition is true] -codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::empty_deref2_bad, 4, NULL_DEREFERENCE, [start of procedure iterator_compare::empty_deref2_bad(),start of procedure iterator_compare::not_empty(),return from a call to iterator_compare::not_empty,Condition is false,Condition is true] -codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::not_empty_deref1_bad, 4, NULL_DEREFERENCE, [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,Condition is false,Condition is true] +codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::empty_deref2_bad, 4, NULL_DEREFERENCE, [start of procedure iterator_compare::empty_deref2_bad(),start of procedure iterator_compare::not_empty(),return from a call to iterator_compare::not_empty,Condition is true] +codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::not_empty_deref1_bad, 4, NULL_DEREFERENCE, [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,Condition is true] codetoanalyze/cpp/errors/vector/iterator_cmp.cpp, iterator_compare::not_empty_deref2_bad, 4, NULL_DEREFERENCE, [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,Condition is true] codetoanalyze/cpp/errors/vector/loop.cpp, non_empty_vector_loop_bad, 4, NULL_DEREFERENCE, [start of procedure non_empty_vector_loop_bad(),Condition is true] codetoanalyze/cpp/shared/attributes/annotate.cpp, derefFirstArg2_null_deref, 2, NULL_DEREFERENCE, [start of procedure derefFirstArg2_null_deref()]