From 3f49f3a1d4fc5158aa43401373c2ba4950605b26 Mon Sep 17 00:00:00 2001 From: Sam Blackshear Date: Tue, 10 May 2016 17:45:42 -0700 Subject: [PATCH] using liveness to add removetemps instructions Reviewed By: jberdine Differential Revision: D3245574 fbshipit-source-id: 02c1bcd --- infer/src/backend/preanal.ml | 31 ++++- .../conditional_operator/array_access.c.dot | 12 +- .../conditional_operator.c.dot | 26 ++-- .../if_short_circuit.c.dot | 42 +++--- .../conditional_operator/int_negation.c.dot | 12 +- .../nestedoperators/assign_in_condition.c.dot | 6 +- .../c/frontend/nestedoperators/gnuexpr.c.dot | 4 +- .../c/frontend/switchstmt/switch.c.dot | 120 +++++++++--------- .../c/frontend/unusual_exps/generic_exp.c.dot | 4 +- .../constructors/std_init_list.cpp.dot | 6 +- .../methods/conversion_operator.cpp.dot | 24 ++-- .../var_decl_inside_switch.cpp.dot | 10 +- .../frontend/templates/sizeof_pack.cpp.dot | 4 +- .../cpp/frontend/types/typeid_expr.cpp.dot | 24 ++-- .../MemoryLeakExample.dot | 4 +- .../objc/frontend/block/BlockVar.dot | 8 +- .../objc/frontend/block/block-it.dot | 18 +-- .../objc/frontend/block/block.dot | 4 +- .../objc/frontend/block/block_no_args.dot | 2 +- .../objc/frontend/block/block_release.dot | 2 +- .../objc/frontend/block/retain_cycle.dot | 2 +- .../fast_enumeration/Fast_enumeration.dot | 6 +- .../objc/frontend/protocol/protocol.dot | 6 +- .../objc/frontend/vardecl/initlist.dot | 2 +- 24 files changed, 198 insertions(+), 181 deletions(-) diff --git a/infer/src/backend/preanal.ml b/infer/src/backend/preanal.ml index 725fa4cbd..9096899c6 100644 --- a/infer/src/backend/preanal.ml +++ b/infer/src/backend/preanal.ml @@ -485,9 +485,18 @@ module NullifyTransferFunctions = struct | None -> astate let exec_instr ((active_defs, to_nullify) as astate) _ = function + | Sil.Letderef (lhs_id, _, _, _) -> + VarDomain.add (Var.LogicalVar lhs_id) active_defs, to_nullify + | Sil.Call (lhs_ids, _, _, _, _) -> + let active_defs' = + IList.fold_left + (fun acc id -> VarDomain.add (Var.LogicalVar id) acc) + active_defs + lhs_ids in + active_defs', to_nullify | Sil.Set (Sil.Lvar lhs_pvar, _, _, _) -> VarDomain.add (Var.ProgramVar lhs_pvar) active_defs, to_nullify - | Sil.Set _ | Letderef _ | Call _ | Prune _ | Declare_locals _ | Stackop _ | Remove_temps _ + | Sil.Set _ | Prune _ | Declare_locals _ | Stackop _ | Remove_temps _ | Abstract _ -> astate | Sil.Nullify _ -> @@ -531,19 +540,27 @@ let add_nullify_instrs tenv _ pdesc = if nullify_instrs <> [] then Cfg.Node.append_instrs_temps node (IList.rev nullify_instrs) [] in + let node_add_removetmps_instructions node ids = + if ids <> [] then + let loc = Cfg.Node.get_last_loc node in + Cfg.Node.append_instrs_temps node [Sil.Remove_temps (IList.rev ids, loc)] [] in + IList.iter (fun node -> match NullifyAnalysis.extract_post (ProcCfg.Exceptional.id node) nullify_inv_map with | Some (_, to_nullify) -> - let pvars_to_nullify = + let pvars_to_nullify, ids_to_remove = Var.Set.fold - (fun var acc -> match var with + (fun var (pvars_acc, ids_acc) -> match var with (* we nullify all address taken variables at the end of the procedure *) | ProgramVar pvar when not (AddressTaken.Domain.mem pvar address_taken_vars) -> - pvar :: acc - | _ -> acc) + pvar :: pvars_acc, ids_acc + | LogicalVar id -> + pvars_acc, id :: ids_acc + | _ -> pvars_acc, ids_acc) to_nullify - [] in + ([], []) in + node_add_removetmps_instructions node ids_to_remove; node_add_nullify_instructions node pvars_to_nullify | None -> ()) (ProcCfg.Exceptional.nodes nullify_proc_cfg); @@ -556,10 +573,10 @@ let add_nullify_instrs tenv _ pdesc = let old_nullify_analysis = false let doit ?(f_translate_typ=None) cfg cg tenv = - add_removetemps_instructions cfg; if old_nullify_analysis then begin + add_removetemps_instructions cfg; AllPreds.mk_table cfg; Cfg.iter_proc_desc cfg (analyze_and_annotate_proc cfg tenv); AllPreds.clear_table () diff --git a/infer/tests/codetoanalyze/c/frontend/conditional_operator/array_access.c.dot b/infer/tests/codetoanalyze/c/frontend/conditional_operator/array_access.c.dot index facd96700..077f9f3aa 100644 --- a/infer/tests/codetoanalyze/c/frontend/conditional_operator/array_access.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/conditional_operator/array_access.c.dot @@ -28,15 +28,15 @@ digraph iCFG { 13 -> 10 ; -12 [label="12: Prune (false branch) \n n$6=*&p:int ** [line 15]\n n$9=*n$8:int [line 15]\n n$10=*n$6[n$9]:int * [line 15]\n PRUNE((n$10 == 0), false); [line 15]\n REMOVE_TEMPS(n$7,n$8,n$9,n$6,n$10); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="invhouse"] +12 [label="12: Prune (false branch) \n n$6=*&p:int ** [line 15]\n n$9=*n$8:int [line 15]\n n$10=*n$6[n$9]:int * [line 15]\n PRUNE((n$10 == 0), false); [line 15]\n REMOVE_TEMPS(n$6,n$8,n$9,n$10); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="invhouse"] 12 -> 9 ; -11 [label="11: Prune (true branch) \n n$6=*&p:int ** [line 15]\n n$9=*n$8:int [line 15]\n n$10=*n$6[n$9]:int * [line 15]\n PRUNE((n$10 != 0), true); [line 15]\n REMOVE_TEMPS(n$7,n$8,n$9,n$6,n$10); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="invhouse"] +11 [label="11: Prune (true branch) \n n$6=*&p:int ** [line 15]\n n$9=*n$8:int [line 15]\n n$10=*n$6[n$9]:int * [line 15]\n PRUNE((n$10 != 0), true); [line 15]\n REMOVE_TEMPS(n$6,n$8,n$9,n$10); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="invhouse"] 11 -> 9 ; -10 [label="10: UnaryOperator \n n$7=*&p:int ** [line 15]\n n$8=*n$7:int * [line 15]\n " shape="box"] +10 [label="10: UnaryOperator \n n$7=*&p:int ** [line 15]\n n$8=*n$7:int * [line 15]\n REMOVE_TEMPS(n$7); [line 15]\n " shape="box"] 10 -> 11 ; @@ -45,15 +45,15 @@ digraph iCFG { 9 -> 5 ; -8 [label="8: Prune (false branch) \n n$1=*n$0:int * [line 17]\n n$4=*n$3:int [line 17]\n n$5=*n$1[n$4]:int [line 17]\n PRUNE((n$5 == 0), false); [line 17]\n REMOVE_TEMPS(n$2,n$3,n$4,n$0,n$1,n$5); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="invhouse"] +8 [label="8: Prune (false branch) \n n$1=*n$0:int * [line 17]\n n$4=*n$3:int [line 17]\n n$5=*n$1[n$4]:int [line 17]\n PRUNE((n$5 == 0), false); [line 17]\n REMOVE_TEMPS(n$0,n$1,n$3,n$4,n$5); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="invhouse"] 8 -> 3 ; -7 [label="7: Prune (true branch) \n n$1=*n$0:int * [line 17]\n n$4=*n$3:int [line 17]\n n$5=*n$1[n$4]:int [line 17]\n PRUNE((n$5 != 0), true); [line 17]\n REMOVE_TEMPS(n$2,n$3,n$4,n$0,n$1,n$5); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="invhouse"] +7 [label="7: Prune (true branch) \n n$1=*n$0:int * [line 17]\n n$4=*n$3:int [line 17]\n n$5=*n$1[n$4]:int [line 17]\n PRUNE((n$5 != 0), true); [line 17]\n REMOVE_TEMPS(n$0,n$1,n$3,n$4,n$5); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="invhouse"] 7 -> 3 ; -6 [label="6: UnaryOperator \n n$2=*&p:int ** [line 17]\n n$3=*n$2:int * [line 17]\n NULLIFY(&p); [line 17]\n " shape="box"] +6 [label="6: UnaryOperator \n n$2=*&p:int ** [line 17]\n n$3=*n$2:int * [line 17]\n REMOVE_TEMPS(n$2); [line 17]\n NULLIFY(&p); [line 17]\n " shape="box"] 6 -> 7 ; diff --git a/infer/tests/codetoanalyze/c/frontend/conditional_operator/conditional_operator.c.dot b/infer/tests/codetoanalyze/c/frontend/conditional_operator/conditional_operator.c.dot index 2fc72adc3..2c7016dea 100644 --- a/infer/tests/codetoanalyze/c/frontend/conditional_operator/conditional_operator.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/conditional_operator/conditional_operator.c.dot @@ -1,9 +1,9 @@ digraph iCFG { -66 [label="66: Return Stmt \n n$3=*&SIL_temp_conditional___n$2:int [line 35]\n *&return:int =n$3 [line 35]\n REMOVE_TEMPS(n$3,n$0,n$1); [line 35]\n NULLIFY(&SIL_temp_conditional___n$2); [line 35]\n APPLY_ABSTRACTION; [line 35]\n " shape="box"] +66 [label="66: Return Stmt \n n$3=*&SIL_temp_conditional___n$2:int [line 35]\n *&return:int =n$3 [line 35]\n REMOVE_TEMPS(n$3); [line 35]\n NULLIFY(&SIL_temp_conditional___n$2); [line 35]\n APPLY_ABSTRACTION; [line 35]\n " shape="box"] 66 -> 59 ; -65 [label="65: BinaryConditinalStmt Init \n n$0=_fun_test2(2:int ) [line 35]\n n$1=_fun_test2((2 + n$0):int ) [line 35]\n " shape="box"] +65 [label="65: BinaryConditinalStmt Init \n n$0=_fun_test2(2:int ) [line 35]\n n$1=_fun_test2((2 + n$0):int ) [line 35]\n REMOVE_TEMPS(n$0); [line 35]\n " shape="box"] 65 -> 61 ; @@ -12,11 +12,11 @@ digraph iCFG { 64 -> 60 ; -63 [label="63: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =n$1 [line 35]\n APPLY_ABSTRACTION; [line 35]\n " shape="box"] +63 [label="63: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =n$1 [line 35]\n REMOVE_TEMPS(n$1); [line 35]\n APPLY_ABSTRACTION; [line 35]\n " shape="box"] 63 -> 60 ; -62 [label="62: Prune (false branch) \n PRUNE((n$1 == 0), false); [line 35]\n " shape="invhouse"] +62 [label="62: Prune (false branch) \n PRUNE((n$1 == 0), false); [line 35]\n REMOVE_TEMPS(n$1); [line 35]\n " shape="invhouse"] 62 -> 64 ; @@ -71,7 +71,7 @@ digraph iCFG { 49 -> 53 ; 49 -> 54 ; -48 [label="48: Return Stmt \n n$2=*&SIL_temp_conditional___n$1:int [line 28]\n *&return:int =n$2 [line 28]\n REMOVE_TEMPS(n$2,n$0); [line 28]\n NULLIFY(&SIL_temp_conditional___n$1); [line 28]\n APPLY_ABSTRACTION; [line 28]\n " shape="box"] +48 [label="48: Return Stmt \n n$2=*&SIL_temp_conditional___n$1:int [line 28]\n *&return:int =n$2 [line 28]\n REMOVE_TEMPS(n$2); [line 28]\n NULLIFY(&SIL_temp_conditional___n$1); [line 28]\n APPLY_ABSTRACTION; [line 28]\n " shape="box"] 48 -> 41 ; @@ -84,11 +84,11 @@ digraph iCFG { 46 -> 42 ; -45 [label="45: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =n$0 [line 28]\n APPLY_ABSTRACTION; [line 28]\n " shape="box"] +45 [label="45: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =n$0 [line 28]\n REMOVE_TEMPS(n$0); [line 28]\n APPLY_ABSTRACTION; [line 28]\n " shape="box"] 45 -> 42 ; -44 [label="44: Prune (false branch) \n PRUNE((n$0 == 0), false); [line 28]\n " shape="invhouse"] +44 [label="44: Prune (false branch) \n PRUNE((n$0 == 0), false); [line 28]\n REMOVE_TEMPS(n$0); [line 28]\n " shape="invhouse"] 44 -> 46 ; @@ -107,7 +107,7 @@ digraph iCFG { 40 -> 47 ; -39 [label="39: Return Stmt \n n$2=*&SIL_temp_conditional___n$1:int [line 26]\n n$3=_fun_test2(n$2:int ) [line 26]\n *&return:int =n$3 [line 26]\n REMOVE_TEMPS(n$2,n$0,n$3); [line 26]\n NULLIFY(&SIL_temp_conditional___n$1); [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"] +39 [label="39: Return Stmt \n n$2=*&SIL_temp_conditional___n$1:int [line 26]\n n$3=_fun_test2(n$2:int ) [line 26]\n *&return:int =n$3 [line 26]\n REMOVE_TEMPS(n$2,n$3); [line 26]\n NULLIFY(&SIL_temp_conditional___n$1); [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"] 39 -> 32 ; @@ -120,11 +120,11 @@ digraph iCFG { 37 -> 33 ; -36 [label="36: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =n$0 [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"] +36 [label="36: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =n$0 [line 26]\n REMOVE_TEMPS(n$0); [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"] 36 -> 33 ; -35 [label="35: Prune (false branch) \n PRUNE((n$0 == 0), false); [line 26]\n " shape="invhouse"] +35 [label="35: Prune (false branch) \n PRUNE((n$0 == 0), false); [line 26]\n REMOVE_TEMPS(n$0); [line 26]\n " shape="invhouse"] 35 -> 37 ; @@ -143,7 +143,7 @@ digraph iCFG { 31 -> 38 ; -30 [label="30: DeclStmt \n n$3=*&SIL_temp_conditional___n$2:int [line 22]\n *&x:int =n$3 [line 22]\n REMOVE_TEMPS(n$3,n$1); [line 22]\n NULLIFY(&SIL_temp_conditional___n$2); [line 22]\n " shape="box"] +30 [label="30: DeclStmt \n n$3=*&SIL_temp_conditional___n$2:int [line 22]\n *&x:int =n$3 [line 22]\n REMOVE_TEMPS(n$3); [line 22]\n NULLIFY(&SIL_temp_conditional___n$2); [line 22]\n " shape="box"] 30 -> 23 ; @@ -156,11 +156,11 @@ digraph iCFG { 28 -> 24 ; -27 [label="27: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =n$1 [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"] +27 [label="27: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =n$1 [line 22]\n REMOVE_TEMPS(n$1); [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"] 27 -> 24 ; -26 [label="26: Prune (false branch) \n PRUNE((n$1 == 0), false); [line 22]\n " shape="invhouse"] +26 [label="26: Prune (false branch) \n PRUNE((n$1 == 0), false); [line 22]\n REMOVE_TEMPS(n$1); [line 22]\n " shape="invhouse"] 26 -> 28 ; 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 f60a30e65..bc57f09d2 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 @@ -8,15 +8,15 @@ digraph iCFG { 94 -> 90 ; -93 [label="93: Prune (false branch) \n PRUNE(((n$12 == 39) == 0), false); [line 52]\n REMOVE_TEMPS(n$11,n$12); [line 52]\n APPLY_ABSTRACTION; [line 52]\n " shape="invhouse"] +93 [label="93: Prune (false branch) \n PRUNE(((n$12 == 39) == 0), false); [line 52]\n REMOVE_TEMPS(n$12); [line 52]\n APPLY_ABSTRACTION; [line 52]\n " shape="invhouse"] 93 -> 90 ; -92 [label="92: Prune (true branch) \n PRUNE(((n$12 == 39) != 0), true); [line 52]\n REMOVE_TEMPS(n$11,n$12); [line 52]\n " shape="invhouse"] +92 [label="92: Prune (true branch) \n PRUNE(((n$12 == 39) != 0), true); [line 52]\n REMOVE_TEMPS(n$12); [line 52]\n " shape="invhouse"] 92 -> 94 ; -91 [label="91: BinaryOperatorStmt: EQ \n n$11=*&spec:char * [line 52]\n n$12=*n$11:char [line 52]\n NULLIFY(&spec); [line 52]\n " shape="box"] +91 [label="91: BinaryOperatorStmt: EQ \n n$11=*&spec:char * [line 52]\n n$12=*n$11:char [line 52]\n REMOVE_TEMPS(n$11); [line 52]\n NULLIFY(&spec); [line 52]\n " shape="box"] 91 -> 92 ; @@ -45,15 +45,15 @@ digraph iCFG { 85 -> 81 ; -84 [label="84: Prune (false branch) \n PRUNE((n$9 == 0), false); [line 49]\n REMOVE_TEMPS(n$8,n$9); [line 49]\n " shape="invhouse"] +84 [label="84: Prune (false branch) \n PRUNE((n$9 == 0), false); [line 49]\n REMOVE_TEMPS(n$9); [line 49]\n " shape="invhouse"] 84 -> 86 ; -83 [label="83: Prune (true branch) \n PRUNE((n$9 != 0), true); [line 49]\n REMOVE_TEMPS(n$8,n$9); [line 49]\n " shape="invhouse"] +83 [label="83: Prune (true branch) \n PRUNE((n$9 != 0), true); [line 49]\n REMOVE_TEMPS(n$9); [line 49]\n " shape="invhouse"] 83 -> 85 ; -82 [label="82: BinaryOperatorStmt: Assign \n n$8=_fun_getenv(\"BLOCKSIZE\":char *) [line 49]\n *&spec:char *=n$8 [line 49]\n n$9=*&spec:char * [line 49]\n " shape="box"] +82 [label="82: BinaryOperatorStmt: Assign \n n$8=_fun_getenv(\"BLOCKSIZE\":char *) [line 49]\n *&spec:char *=n$8 [line 49]\n n$9=*&spec:char * [line 49]\n REMOVE_TEMPS(n$8); [line 49]\n " shape="box"] 82 -> 83 ; @@ -79,15 +79,15 @@ digraph iCFG { 77 -> 73 ; -76 [label="76: Prune (false branch) \n PRUNE((n$5 == 0), false); [line 49]\n REMOVE_TEMPS(n$4,n$5); [line 49]\n " shape="invhouse"] +76 [label="76: Prune (false branch) \n PRUNE((n$5 == 0), false); [line 49]\n REMOVE_TEMPS(n$5); [line 49]\n " shape="invhouse"] 76 -> 78 ; -75 [label="75: Prune (true branch) \n PRUNE((n$5 != 0), true); [line 49]\n REMOVE_TEMPS(n$4,n$5); [line 49]\n " shape="invhouse"] +75 [label="75: Prune (true branch) \n PRUNE((n$5 != 0), true); [line 49]\n REMOVE_TEMPS(n$5); [line 49]\n " shape="invhouse"] 75 -> 77 ; -74 [label="74: BinaryOperatorStmt: Assign \n n$4=_fun_getenv(\"BLOCK_SIZE\":char *) [line 49]\n *&spec:char *=n$4 [line 49]\n n$5=*&spec:char * [line 49]\n " shape="box"] +74 [label="74: BinaryOperatorStmt: Assign \n n$4=_fun_getenv(\"BLOCK_SIZE\":char *) [line 49]\n *&spec:char *=n$4 [line 49]\n n$5=*&spec:char * [line 49]\n REMOVE_TEMPS(n$4); [line 49]\n " shape="box"] 74 -> 75 ; @@ -165,15 +165,15 @@ digraph iCFG { 56 -> 52 ; -55 [label="55: Prune (false branch) \n PRUNE((n$9 == 0), false); [line 37]\n REMOVE_TEMPS(n$8,n$9); [line 37]\n " shape="invhouse"] +55 [label="55: Prune (false branch) \n PRUNE((n$9 == 0), false); [line 37]\n REMOVE_TEMPS(n$9); [line 37]\n " shape="invhouse"] 55 -> 57 ; -54 [label="54: Prune (true branch) \n PRUNE((n$9 != 0), true); [line 37]\n REMOVE_TEMPS(n$8,n$9); [line 37]\n " shape="invhouse"] +54 [label="54: Prune (true branch) \n PRUNE((n$9 != 0), true); [line 37]\n REMOVE_TEMPS(n$9); [line 37]\n " shape="invhouse"] 54 -> 56 ; -53 [label="53: BinaryOperatorStmt: Assign \n n$8=_fun_getenv(\"BLOCKSIZE\":char *) [line 37]\n *&spec:char *=n$8 [line 37]\n n$9=*&spec:char * [line 37]\n " shape="box"] +53 [label="53: BinaryOperatorStmt: Assign \n n$8=_fun_getenv(\"BLOCKSIZE\":char *) [line 37]\n *&spec:char *=n$8 [line 37]\n n$9=*&spec:char * [line 37]\n REMOVE_TEMPS(n$8); [line 37]\n " shape="box"] 53 -> 54 ; @@ -199,15 +199,15 @@ digraph iCFG { 48 -> 44 ; -47 [label="47: Prune (false branch) \n PRUNE((n$5 == 0), false); [line 36]\n REMOVE_TEMPS(n$4,n$5); [line 36]\n " shape="invhouse"] +47 [label="47: Prune (false branch) \n PRUNE((n$5 == 0), false); [line 36]\n REMOVE_TEMPS(n$5); [line 36]\n " shape="invhouse"] 47 -> 49 ; -46 [label="46: Prune (true branch) \n PRUNE((n$5 != 0), true); [line 36]\n REMOVE_TEMPS(n$4,n$5); [line 36]\n " shape="invhouse"] +46 [label="46: Prune (true branch) \n PRUNE((n$5 != 0), true); [line 36]\n REMOVE_TEMPS(n$5); [line 36]\n " shape="invhouse"] 46 -> 48 ; -45 [label="45: BinaryOperatorStmt: Assign \n n$4=_fun_getenv(\"BLOCK_SIZE\":char *) [line 36]\n *&spec:char *=n$4 [line 36]\n n$5=*&spec:char * [line 36]\n NULLIFY(&spec); [line 36]\n " shape="box"] +45 [label="45: BinaryOperatorStmt: Assign \n n$4=_fun_getenv(\"BLOCK_SIZE\":char *) [line 36]\n *&spec:char *=n$4 [line 36]\n n$5=*&spec:char * [line 36]\n REMOVE_TEMPS(n$4); [line 36]\n NULLIFY(&spec); [line 36]\n " shape="box"] 45 -> 46 ; @@ -282,15 +282,15 @@ digraph iCFG { 28 -> 24 ; -27 [label="27: Prune (false branch) \n PRUNE((n$5 == 0), false); [line 22]\n REMOVE_TEMPS(n$4,n$5); [line 22]\n " shape="invhouse"] +27 [label="27: Prune (false branch) \n PRUNE((n$5 == 0), false); [line 22]\n REMOVE_TEMPS(n$5); [line 22]\n " shape="invhouse"] 27 -> 29 ; -26 [label="26: Prune (true branch) \n PRUNE((n$5 != 0), true); [line 22]\n REMOVE_TEMPS(n$4,n$5); [line 22]\n " shape="invhouse"] +26 [label="26: Prune (true branch) \n PRUNE((n$5 != 0), true); [line 22]\n REMOVE_TEMPS(n$5); [line 22]\n " shape="invhouse"] 26 -> 28 ; -25 [label="25: BinaryOperatorStmt: Assign \n n$4=_fun_getenv(\"BLOCK\":char *) [line 22]\n *&x:int *=n$4 [line 22]\n n$5=*&x:int * [line 22]\n " shape="box"] +25 [label="25: BinaryOperatorStmt: Assign \n n$4=_fun_getenv(\"BLOCK\":char *) [line 22]\n *&x:int *=n$4 [line 22]\n n$5=*&x:int * [line 22]\n REMOVE_TEMPS(n$4); [line 22]\n " shape="box"] 25 -> 26 ; @@ -353,15 +353,15 @@ digraph iCFG { 11 -> 3 ; -10 [label="10: Prune (false branch) \n PRUNE(((n$2 == 2) == 0), false); [line 14]\n REMOVE_TEMPS(n$1,n$2); [line 14]\n " shape="invhouse"] +10 [label="10: Prune (false branch) \n PRUNE(((n$2 == 2) == 0), false); [line 14]\n REMOVE_TEMPS(n$2); [line 14]\n " shape="invhouse"] 10 -> 12 ; -9 [label="9: Prune (true branch) \n PRUNE(((n$2 == 2) != 0), true); [line 14]\n REMOVE_TEMPS(n$1,n$2); [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="invhouse"] +9 [label="9: Prune (true branch) \n PRUNE(((n$2 == 2) != 0), true); [line 14]\n REMOVE_TEMPS(n$2); [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="invhouse"] 9 -> 11 ; -8 [label="8: BinaryOperatorStmt: EQ \n n$1=*&x:int * [line 14]\n n$2=*n$1:int [line 14]\n NULLIFY(&x); [line 14]\n " shape="box"] +8 [label="8: BinaryOperatorStmt: EQ \n n$1=*&x:int * [line 14]\n n$2=*n$1:int [line 14]\n REMOVE_TEMPS(n$1); [line 14]\n NULLIFY(&x); [line 14]\n " shape="box"] 8 -> 9 ; diff --git a/infer/tests/codetoanalyze/c/frontend/conditional_operator/int_negation.c.dot b/infer/tests/codetoanalyze/c/frontend/conditional_operator/int_negation.c.dot index 694b2e083..524ffc7c8 100644 --- a/infer/tests/codetoanalyze/c/frontend/conditional_operator/int_negation.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/conditional_operator/int_negation.c.dot @@ -39,15 +39,15 @@ digraph iCFG { 25 -> 14 ; -24 [label="24: Prune (false branch) \n PRUNE((n$3 == 0), false); [line 22]\n REMOVE_TEMPS(n$2,n$3); [line 22]\n " shape="invhouse"] +24 [label="24: Prune (false branch) \n PRUNE((n$3 == 0), false); [line 22]\n REMOVE_TEMPS(n$3); [line 22]\n " shape="invhouse"] 24 -> 26 ; -23 [label="23: Prune (true branch) \n PRUNE((n$3 != 0), true); [line 22]\n REMOVE_TEMPS(n$2,n$3); [line 22]\n " shape="invhouse"] +23 [label="23: Prune (true branch) \n PRUNE((n$3 != 0), true); [line 22]\n REMOVE_TEMPS(n$3); [line 22]\n " shape="invhouse"] 23 -> 25 ; -22 [label="22: Call _fun_identity \n n$2=*&SIL_temp_conditional___n$0:int [line 22]\n n$3=_fun_identity(n$2:int ) [line 22]\n NULLIFY(&SIL_temp_conditional___n$0); [line 22]\n " shape="box"] +22 [label="22: Call _fun_identity \n n$2=*&SIL_temp_conditional___n$0:int [line 22]\n n$3=_fun_identity(n$2:int ) [line 22]\n REMOVE_TEMPS(n$2); [line 22]\n NULLIFY(&SIL_temp_conditional___n$0); [line 22]\n " shape="box"] 22 -> 23 ; @@ -96,15 +96,15 @@ digraph iCFG { 11 -> 5 ; -10 [label="10: Prune (false branch) \n PRUNE((n$1 == 0), false); [line 13]\n REMOVE_TEMPS(n$0,n$1); [line 13]\n " shape="invhouse"] +10 [label="10: Prune (false branch) \n PRUNE((n$1 == 0), false); [line 13]\n REMOVE_TEMPS(n$1); [line 13]\n " shape="invhouse"] 10 -> 12 ; -9 [label="9: Prune (true branch) \n PRUNE((n$1 != 0), true); [line 13]\n REMOVE_TEMPS(n$0,n$1); [line 13]\n " shape="invhouse"] +9 [label="9: Prune (true branch) \n PRUNE((n$1 != 0), true); [line 13]\n REMOVE_TEMPS(n$1); [line 13]\n " shape="invhouse"] 9 -> 11 ; -8 [label="8: Call _fun_identity \n n$0=*&x:int [line 13]\n n$1=_fun_identity(n$0:int ) [line 13]\n NULLIFY(&x); [line 13]\n " shape="box"] +8 [label="8: Call _fun_identity \n n$0=*&x:int [line 13]\n n$1=_fun_identity(n$0:int ) [line 13]\n REMOVE_TEMPS(n$0); [line 13]\n NULLIFY(&x); [line 13]\n " shape="box"] 8 -> 9 ; diff --git a/infer/tests/codetoanalyze/c/frontend/nestedoperators/assign_in_condition.c.dot b/infer/tests/codetoanalyze/c/frontend/nestedoperators/assign_in_condition.c.dot index faf0297f6..61a2c74f3 100644 --- a/infer/tests/codetoanalyze/c/frontend/nestedoperators/assign_in_condition.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/nestedoperators/assign_in_condition.c.dot @@ -3,15 +3,15 @@ digraph iCFG { 8 -> 2 ; -7 [label="7: Prune (false branch) \n PRUNE((n$1 == 0), false); [line 11]\n REMOVE_TEMPS(n$0,n$1); [line 11]\n " shape="invhouse"] +7 [label="7: Prune (false branch) \n PRUNE((n$1 == 0), false); [line 11]\n REMOVE_TEMPS(n$1); [line 11]\n " shape="invhouse"] 7 -> 4 ; -6 [label="6: Prune (true branch) \n PRUNE((n$1 != 0), true); [line 11]\n REMOVE_TEMPS(n$0,n$1); [line 11]\n " shape="invhouse"] +6 [label="6: Prune (true branch) \n PRUNE((n$1 != 0), true); [line 11]\n REMOVE_TEMPS(n$1); [line 11]\n " shape="invhouse"] 6 -> 8 ; -5 [label="5: BinaryOperatorStmt: Assign \n n$0=*&p:int * [line 11]\n *n$0:int =0 [line 11]\n n$1=*n$0:int [line 11]\n NULLIFY(&p); [line 11]\n " shape="box"] +5 [label="5: BinaryOperatorStmt: Assign \n n$0=*&p:int * [line 11]\n *n$0:int =0 [line 11]\n n$1=*n$0:int [line 11]\n REMOVE_TEMPS(n$0); [line 11]\n NULLIFY(&p); [line 11]\n " shape="box"] 5 -> 6 ; diff --git a/infer/tests/codetoanalyze/c/frontend/nestedoperators/gnuexpr.c.dot b/infer/tests/codetoanalyze/c/frontend/nestedoperators/gnuexpr.c.dot index 51e594d20..2801e3842 100644 --- a/infer/tests/codetoanalyze/c/frontend/nestedoperators/gnuexpr.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/nestedoperators/gnuexpr.c.dot @@ -1,5 +1,5 @@ digraph iCFG { -8 [label="8: Return Stmt \n n$2=*&p:int * [line 22]\n n$3=*n$2:int [line 22]\n *&x:int =n$3 [line 22]\n *&y:int =1 [line 23]\n n$0=*&x:int [line 24]\n n$1=*&y:int [line 24]\n n$4=*(n$0 + n$1):int [line 21]\n *&return:int =n$4 [line 21]\n REMOVE_TEMPS(n$4,n$0,n$1,n$2,n$3); [line 21]\n NULLIFY(&p); [line 21]\n NULLIFY(&x); [line 21]\n NULLIFY(&y); [line 21]\n APPLY_ABSTRACTION; [line 21]\n " shape="box"] +8 [label="8: Return Stmt \n n$2=*&p:int * [line 22]\n n$3=*n$2:int [line 22]\n *&x:int =n$3 [line 22]\n *&y:int =1 [line 23]\n n$0=*&x:int [line 24]\n n$1=*&y:int [line 24]\n n$4=*(n$0 + n$1):int [line 21]\n *&return:int =n$4 [line 21]\n REMOVE_TEMPS(n$0,n$1,n$2,n$3,n$4); [line 21]\n NULLIFY(&p); [line 21]\n NULLIFY(&x); [line 21]\n NULLIFY(&y); [line 21]\n APPLY_ABSTRACTION; [line 21]\n " shape="box"] 8 -> 7 ; @@ -14,7 +14,7 @@ digraph iCFG { 5 -> 4 ; -4 [label="4: BinaryOperatorStmt: Assign \n *&X:int =4 [line 14]\n n$0=*&X:int [line 15]\n n$1=*n$0:int [line 13]\n *&y:int =n$1 [line 13]\n REMOVE_TEMPS(n$1,n$0); [line 13]\n NULLIFY(&X); [line 13]\n NULLIFY(&y); [line 13]\n " shape="box"] +4 [label="4: BinaryOperatorStmt: Assign \n *&X:int =4 [line 14]\n n$0=*&X:int [line 15]\n n$1=*n$0:int [line 13]\n *&y:int =n$1 [line 13]\n REMOVE_TEMPS(n$0,n$1); [line 13]\n NULLIFY(&X); [line 13]\n NULLIFY(&y); [line 13]\n " shape="box"] 4 -> 3 ; diff --git a/infer/tests/codetoanalyze/c/frontend/switchstmt/switch.c.dot b/infer/tests/codetoanalyze/c/frontend/switchstmt/switch.c.dot index 7e9c9b524..58527ab30 100644 --- a/infer/tests/codetoanalyze/c/frontend/switchstmt/switch.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/switchstmt/switch.c.dot @@ -3,11 +3,11 @@ digraph iCFG { 195 -> 186 ; -194 [label="194: Prune (false branch) \n PRUNE(((n$3 == 0) == 0), false); [line 194]\n APPLY_ABSTRACTION; [line 194]\n " shape="invhouse"] +194 [label="194: Prune (false branch) \n PRUNE(((n$3 == 0) == 0), false); [line 194]\n REMOVE_TEMPS(n$3); [line 194]\n APPLY_ABSTRACTION; [line 194]\n " shape="invhouse"] 194 -> 184 ; -193 [label="193: Prune (true branch) \n PRUNE(((n$3 == 0) != 0), true); [line 194]\n " shape="invhouse"] +193 [label="193: Prune (true branch) \n PRUNE(((n$3 == 0) != 0), true); [line 194]\n REMOVE_TEMPS(n$3); [line 194]\n " shape="invhouse"] 193 -> 192 ; @@ -15,7 +15,7 @@ digraph iCFG { 192 -> 184 ; -191 [label="191: Switch_stmt \n n$2=*&SIL_temp_conditional___n$0:int [line 193]\n *&value:int =n$2 [line 193]\n n$3=*&value:int [line 193]\n NULLIFY(&SIL_temp_conditional___n$0); [line 193]\n NULLIFY(&value); [line 193]\n " shape="box"] +191 [label="191: Switch_stmt \n n$2=*&SIL_temp_conditional___n$0:int [line 193]\n *&value:int =n$2 [line 193]\n n$3=*&value:int [line 193]\n REMOVE_TEMPS(n$2); [line 193]\n NULLIFY(&SIL_temp_conditional___n$0); [line 193]\n NULLIFY(&value); [line 193]\n " shape="box"] 191 -> 193 ; @@ -45,7 +45,7 @@ digraph iCFG { 185 -> 191 ; -184 [label="184: Return Stmt \n *&return:int =0 [line 197]\n REMOVE_TEMPS(n$2,n$3); [line 197]\n APPLY_ABSTRACTION; [line 197]\n " shape="box"] +184 [label="184: Return Stmt \n *&return:int =0 [line 197]\n APPLY_ABSTRACTION; [line 197]\n " shape="box"] 184 -> 183 ; @@ -60,11 +60,11 @@ digraph iCFG { 181 -> 180 ; -180 [label="180: Switch_stmt \n *&value:int =7 [line 187]\n n$0=*&value:int [line 187]\n NULLIFY(&value); [line 187]\n " shape="box"] +180 [label="180: Switch_stmt \n *&value:int =7 [line 187]\n n$0=*&value:int [line 187]\n REMOVE_TEMPS(n$0); [line 187]\n NULLIFY(&value); [line 187]\n " shape="box"] 180 -> 179 ; -179 [label="179: Return Stmt \n *&return:int =0 [line 188]\n REMOVE_TEMPS(n$0); [line 188]\n APPLY_ABSTRACTION; [line 188]\n " shape="box"] +179 [label="179: Return Stmt \n *&return:int =0 [line 188]\n APPLY_ABSTRACTION; [line 188]\n " shape="box"] 179 -> 178 ; @@ -79,11 +79,11 @@ digraph iCFG { 176 -> 175 ; -175 [label="175: Switch_stmt \n n$0=*&value:int [line 181]\n NULLIFY(&value); [line 181]\n " shape="box"] +175 [label="175: Switch_stmt \n n$0=*&value:int [line 181]\n REMOVE_TEMPS(n$0); [line 181]\n NULLIFY(&value); [line 181]\n " shape="box"] 175 -> 174 ; -174 [label="174: Return Stmt \n *&return:int =0 [line 182]\n REMOVE_TEMPS(n$0); [line 182]\n APPLY_ABSTRACTION; [line 182]\n " shape="box"] +174 [label="174: Return Stmt \n *&return:int =0 [line 182]\n APPLY_ABSTRACTION; [line 182]\n " shape="box"] 174 -> 173 ; @@ -103,7 +103,7 @@ digraph iCFG { 170 -> 165 ; 170 -> 166 ; -169 [label="169: Prune (true branch) \n PRUNE(((n$3 == 0) != 0), true); [line 161]\n NULLIFY(&value); [line 161]\n " shape="invhouse"] +169 [label="169: Prune (true branch) \n PRUNE(((n$3 == 0) != 0), true); [line 161]\n REMOVE_TEMPS(n$3); [line 161]\n NULLIFY(&value); [line 161]\n " shape="invhouse"] 169 -> 168 ; @@ -120,7 +120,7 @@ digraph iCFG { 166 -> 160 ; 166 -> 161 ; -165 [label="165: Prune (true branch) \n PRUNE(((n$3 == 1) != 0), true); [line 164]\n " shape="invhouse"] +165 [label="165: Prune (true branch) \n PRUNE(((n$3 == 1) != 0), true); [line 164]\n REMOVE_TEMPS(n$3); [line 164]\n " shape="invhouse"] 165 -> 164 ; @@ -141,15 +141,15 @@ digraph iCFG { 161 -> 158 ; 161 -> 159 ; -160 [label="160: Prune (true branch) \n PRUNE(((n$3 == 2) != 0), true); [line 170]\n APPLY_ABSTRACTION; [line 170]\n " shape="invhouse"] +160 [label="160: Prune (true branch) \n PRUNE(((n$3 == 2) != 0), true); [line 170]\n REMOVE_TEMPS(n$3); [line 170]\n APPLY_ABSTRACTION; [line 170]\n " shape="invhouse"] 160 -> 150 ; -159 [label="159: Prune (false branch) \n PRUNE(((n$3 == 3) == 0), false); [line 171]\n APPLY_ABSTRACTION; [line 171]\n " shape="invhouse"] +159 [label="159: Prune (false branch) \n PRUNE(((n$3 == 3) == 0), false); [line 171]\n REMOVE_TEMPS(n$3); [line 171]\n APPLY_ABSTRACTION; [line 171]\n " shape="invhouse"] 159 -> 150 ; -158 [label="158: Prune (true branch) \n PRUNE(((n$3 == 3) != 0), true); [line 171]\n APPLY_ABSTRACTION; [line 171]\n " shape="invhouse"] +158 [label="158: Prune (true branch) \n PRUNE(((n$3 == 3) != 0), true); [line 171]\n REMOVE_TEMPS(n$3); [line 171]\n APPLY_ABSTRACTION; [line 171]\n " shape="invhouse"] 158 -> 150 ; @@ -183,7 +183,7 @@ digraph iCFG { 151 -> 157 ; -150 [label="150: DeclStmt \n *&a:int =0 [line 174]\n REMOVE_TEMPS(n$3); [line 174]\n NULLIFY(&a); [line 174]\n APPLY_ABSTRACTION; [line 174]\n " shape="box"] +150 [label="150: DeclStmt \n *&a:int =0 [line 174]\n NULLIFY(&a); [line 174]\n APPLY_ABSTRACTION; [line 174]\n " shape="box"] 150 -> 146 ; @@ -224,7 +224,7 @@ digraph iCFG { 141 -> 137 ; 141 -> 138 ; -140 [label="140: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 142]\n " shape="invhouse"] +140 [label="140: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 142]\n REMOVE_TEMPS(n$0); [line 142]\n " shape="invhouse"] 140 -> 139 ; @@ -237,7 +237,7 @@ digraph iCFG { 138 -> 132 ; 138 -> 133 ; -137 [label="137: Prune (true branch) \n PRUNE(((n$0 == 1) != 0), true); [line 145]\n " shape="invhouse"] +137 [label="137: Prune (true branch) \n PRUNE(((n$0 == 1) != 0), true); [line 145]\n REMOVE_TEMPS(n$0); [line 145]\n " shape="invhouse"] 137 -> 136 ; @@ -258,15 +258,15 @@ digraph iCFG { 133 -> 130 ; 133 -> 131 ; -132 [label="132: Prune (true branch) \n PRUNE(((n$0 == 2) != 0), true); [line 150]\n APPLY_ABSTRACTION; [line 150]\n " shape="invhouse"] +132 [label="132: Prune (true branch) \n PRUNE(((n$0 == 2) != 0), true); [line 150]\n REMOVE_TEMPS(n$0); [line 150]\n APPLY_ABSTRACTION; [line 150]\n " shape="invhouse"] 132 -> 128 ; -131 [label="131: Prune (false branch) \n PRUNE(((n$0 == 3) == 0), false); [line 151]\n APPLY_ABSTRACTION; [line 151]\n " shape="invhouse"] +131 [label="131: Prune (false branch) \n PRUNE(((n$0 == 3) == 0), false); [line 151]\n REMOVE_TEMPS(n$0); [line 151]\n APPLY_ABSTRACTION; [line 151]\n " shape="invhouse"] 131 -> 128 ; -130 [label="130: Prune (true branch) \n PRUNE(((n$0 == 3) != 0), true); [line 151]\n APPLY_ABSTRACTION; [line 151]\n " shape="invhouse"] +130 [label="130: Prune (true branch) \n PRUNE(((n$0 == 3) != 0), true); [line 151]\n REMOVE_TEMPS(n$0); [line 151]\n APPLY_ABSTRACTION; [line 151]\n " shape="invhouse"] 130 -> 128 ; @@ -275,7 +275,7 @@ digraph iCFG { 129 -> 140 ; 129 -> 141 ; -128 [label="128: Return Stmt \n *&return:int =0 [line 154]\n REMOVE_TEMPS(n$0); [line 154]\n APPLY_ABSTRACTION; [line 154]\n " shape="box"] +128 [label="128: Return Stmt \n *&return:int =0 [line 154]\n APPLY_ABSTRACTION; [line 154]\n " shape="box"] 128 -> 127 ; @@ -306,7 +306,7 @@ digraph iCFG { 121 -> 117 ; 121 -> 118 ; -120 [label="120: Prune (true branch) \n PRUNE(((n$2 == 0) != 0), true); [line 122]\n " shape="invhouse"] +120 [label="120: Prune (true branch) \n PRUNE(((n$2 == 0) != 0), true); [line 122]\n REMOVE_TEMPS(n$2); [line 122]\n " shape="invhouse"] 120 -> 119 ; @@ -319,7 +319,7 @@ digraph iCFG { 118 -> 112 ; 118 -> 113 ; -117 [label="117: Prune (true branch) \n PRUNE(((n$2 == 1) != 0), true); [line 125]\n " shape="invhouse"] +117 [label="117: Prune (true branch) \n PRUNE(((n$2 == 1) != 0), true); [line 125]\n REMOVE_TEMPS(n$2); [line 125]\n " shape="invhouse"] 117 -> 116 ; @@ -340,15 +340,15 @@ digraph iCFG { 113 -> 110 ; 113 -> 111 ; -112 [label="112: Prune (true branch) \n PRUNE(((n$2 == 2) != 0), true); [line 130]\n APPLY_ABSTRACTION; [line 130]\n " shape="invhouse"] +112 [label="112: Prune (true branch) \n PRUNE(((n$2 == 2) != 0), true); [line 130]\n REMOVE_TEMPS(n$2); [line 130]\n APPLY_ABSTRACTION; [line 130]\n " shape="invhouse"] 112 -> 102 ; -111 [label="111: Prune (false branch) \n PRUNE(((n$2 == 3) == 0), false); [line 131]\n APPLY_ABSTRACTION; [line 131]\n " shape="invhouse"] +111 [label="111: Prune (false branch) \n PRUNE(((n$2 == 3) == 0), false); [line 131]\n REMOVE_TEMPS(n$2); [line 131]\n APPLY_ABSTRACTION; [line 131]\n " shape="invhouse"] 111 -> 102 ; -110 [label="110: Prune (true branch) \n PRUNE(((n$2 == 3) != 0), true); [line 131]\n APPLY_ABSTRACTION; [line 131]\n " shape="invhouse"] +110 [label="110: Prune (true branch) \n PRUNE(((n$2 == 3) != 0), true); [line 131]\n REMOVE_TEMPS(n$2); [line 131]\n APPLY_ABSTRACTION; [line 131]\n " shape="invhouse"] 110 -> 102 ; @@ -382,7 +382,7 @@ digraph iCFG { 103 -> 109 ; -102 [label="102: Return Stmt \n *&return:int =0 [line 134]\n REMOVE_TEMPS(n$2); [line 134]\n APPLY_ABSTRACTION; [line 134]\n " shape="box"] +102 [label="102: Return Stmt \n *&return:int =0 [line 134]\n APPLY_ABSTRACTION; [line 134]\n " shape="box"] 102 -> 101 ; @@ -401,19 +401,19 @@ digraph iCFG { 98 -> 97 ; -97 [label="97: Call _fun_printf \n n$4=_fun_printf(\"(out)HELLO WORLD!\":char *) [line 108]\n REMOVE_TEMPS(n$4); [line 108]\n " shape="box"] +97 [label="97: Call _fun_printf \n n$4=_fun_printf(\"(out)HELLO WORLD!\":char *) [line 108]\n " shape="box"] 97 -> 96 ; -96 [label="96: BinaryOperatorStmt: Assign \n n$3=*&value:int [line 109]\n *&x:int =(n$3 + 1) [line 109]\n REMOVE_TEMPS(n$3); [line 109]\n APPLY_ABSTRACTION; [line 109]\n " shape="box"] +96 [label="96: BinaryOperatorStmt: Assign \n n$3=*&value:int [line 109]\n *&x:int =(n$3 + 1) [line 109]\n APPLY_ABSTRACTION; [line 109]\n " shape="box"] 96 -> 88 ; -95 [label="95: Prune (false branch) \n PRUNE(((n$1 == 0) == 0), false); [line 111]\n APPLY_ABSTRACTION; [line 111]\n " shape="invhouse"] +95 [label="95: Prune (false branch) \n PRUNE(((n$1 == 0) == 0), false); [line 111]\n REMOVE_TEMPS(n$1); [line 111]\n APPLY_ABSTRACTION; [line 111]\n " shape="invhouse"] 95 -> 88 ; -94 [label="94: Prune (true branch) \n PRUNE(((n$1 == 0) != 0), true); [line 111]\n " shape="invhouse"] +94 [label="94: Prune (true branch) \n PRUNE(((n$1 == 0) != 0), true); [line 111]\n REMOVE_TEMPS(n$1); [line 111]\n " shape="invhouse"] 94 -> 93 ; @@ -439,7 +439,7 @@ digraph iCFG { 89 -> 90 ; 89 -> 91 ; -88 [label="88: + \n REMOVE_TEMPS(n$1); [line 105]\n " ] +88 [label="88: + \n " ] 88 -> 89 ; @@ -462,11 +462,11 @@ digraph iCFG { 83 -> 82 ; -82 [label="82: Call _fun_printf \n n$4=_fun_printf(\"(out)HELLO WORLD!\":char *) [line 82]\n REMOVE_TEMPS(n$4); [line 82]\n " shape="box"] +82 [label="82: Call _fun_printf \n n$4=_fun_printf(\"(out)HELLO WORLD!\":char *) [line 82]\n " shape="box"] 82 -> 81 ; -81 [label="81: BinaryOperatorStmt: Assign \n n$3=*&value:int [line 83]\n *&x:int =(n$3 + 1) [line 83]\n REMOVE_TEMPS(n$3); [line 83]\n APPLY_ABSTRACTION; [line 83]\n " shape="box"] +81 [label="81: BinaryOperatorStmt: Assign \n n$3=*&value:int [line 83]\n *&x:int =(n$3 + 1) [line 83]\n APPLY_ABSTRACTION; [line 83]\n " shape="box"] 81 -> 78 ; @@ -475,7 +475,7 @@ digraph iCFG { 80 -> 75 ; 80 -> 76 ; -79 [label="79: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 84]\n APPLY_ABSTRACTION; [line 84]\n " shape="invhouse"] +79 [label="79: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 84]\n REMOVE_TEMPS(n$0); [line 84]\n APPLY_ABSTRACTION; [line 84]\n " shape="invhouse"] 79 -> 78 ; @@ -492,7 +492,7 @@ digraph iCFG { 76 -> 70 ; 76 -> 71 ; -75 [label="75: Prune (true branch) \n PRUNE(((n$0 == 1) != 0), true); [line 90]\n APPLY_ABSTRACTION; [line 90]\n " shape="invhouse"] +75 [label="75: Prune (true branch) \n PRUNE(((n$0 == 1) != 0), true); [line 90]\n REMOVE_TEMPS(n$0); [line 90]\n APPLY_ABSTRACTION; [line 90]\n " shape="invhouse"] 75 -> 74 ; @@ -513,15 +513,15 @@ digraph iCFG { 71 -> 68 ; 71 -> 69 ; -70 [label="70: Prune (true branch) \n PRUNE(((n$0 == 2) != 0), true); [line 96]\n APPLY_ABSTRACTION; [line 96]\n " shape="invhouse"] +70 [label="70: Prune (true branch) \n PRUNE(((n$0 == 2) != 0), true); [line 96]\n REMOVE_TEMPS(n$0); [line 96]\n APPLY_ABSTRACTION; [line 96]\n " shape="invhouse"] 70 -> 65 ; -69 [label="69: Prune (false branch) \n PRUNE(((n$0 == 3) == 0), false); [line 97]\n " shape="invhouse"] +69 [label="69: Prune (false branch) \n PRUNE(((n$0 == 3) == 0), false); [line 97]\n REMOVE_TEMPS(n$0); [line 97]\n " shape="invhouse"] 69 -> 67 ; -68 [label="68: Prune (true branch) \n PRUNE(((n$0 == 3) != 0), true); [line 97]\n APPLY_ABSTRACTION; [line 97]\n " shape="invhouse"] +68 [label="68: Prune (true branch) \n PRUNE(((n$0 == 3) != 0), true); [line 97]\n REMOVE_TEMPS(n$0); [line 97]\n APPLY_ABSTRACTION; [line 97]\n " shape="invhouse"] 68 -> 65 ; @@ -534,7 +534,7 @@ digraph iCFG { 66 -> 79 ; 66 -> 80 ; -65 [label="65: Return Stmt \n *&return:int =0 [line 100]\n REMOVE_TEMPS(n$0); [line 100]\n APPLY_ABSTRACTION; [line 100]\n " shape="box"] +65 [label="65: Return Stmt \n *&return:int =0 [line 100]\n APPLY_ABSTRACTION; [line 100]\n " shape="box"] 65 -> 64 ; @@ -554,7 +554,7 @@ digraph iCFG { 61 -> 57 ; 61 -> 58 ; -60 [label="60: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 63]\n " shape="invhouse"] +60 [label="60: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 63]\n REMOVE_TEMPS(n$0); [line 63]\n " shape="invhouse"] 60 -> 59 ; @@ -567,7 +567,7 @@ digraph iCFG { 58 -> 52 ; 58 -> 53 ; -57 [label="57: Prune (true branch) \n PRUNE(((n$0 == 1) != 0), true); [line 66]\n " shape="invhouse"] +57 [label="57: Prune (true branch) \n PRUNE(((n$0 == 1) != 0), true); [line 66]\n REMOVE_TEMPS(n$0); [line 66]\n " shape="invhouse"] 57 -> 56 ; @@ -588,15 +588,15 @@ digraph iCFG { 53 -> 50 ; 53 -> 51 ; -52 [label="52: Prune (true branch) \n PRUNE(((n$0 == 2) != 0), true); [line 71]\n APPLY_ABSTRACTION; [line 71]\n " shape="invhouse"] +52 [label="52: Prune (true branch) \n PRUNE(((n$0 == 2) != 0), true); [line 71]\n REMOVE_TEMPS(n$0); [line 71]\n APPLY_ABSTRACTION; [line 71]\n " shape="invhouse"] 52 -> 48 ; -51 [label="51: Prune (false branch) \n PRUNE(((n$0 == 3) == 0), false); [line 72]\n APPLY_ABSTRACTION; [line 72]\n " shape="invhouse"] +51 [label="51: Prune (false branch) \n PRUNE(((n$0 == 3) == 0), false); [line 72]\n REMOVE_TEMPS(n$0); [line 72]\n APPLY_ABSTRACTION; [line 72]\n " shape="invhouse"] 51 -> 48 ; -50 [label="50: Prune (true branch) \n PRUNE(((n$0 == 3) != 0), true); [line 72]\n APPLY_ABSTRACTION; [line 72]\n " shape="invhouse"] +50 [label="50: Prune (true branch) \n PRUNE(((n$0 == 3) != 0), true); [line 72]\n REMOVE_TEMPS(n$0); [line 72]\n APPLY_ABSTRACTION; [line 72]\n " shape="invhouse"] 50 -> 48 ; @@ -605,7 +605,7 @@ digraph iCFG { 49 -> 60 ; 49 -> 61 ; -48 [label="48: Return Stmt \n *&return:int =0 [line 75]\n REMOVE_TEMPS(n$0); [line 75]\n APPLY_ABSTRACTION; [line 75]\n " shape="box"] +48 [label="48: Return Stmt \n *&return:int =0 [line 75]\n APPLY_ABSTRACTION; [line 75]\n " shape="box"] 48 -> 47 ; @@ -624,11 +624,11 @@ digraph iCFG { 44 -> 43 ; -43 [label="43: Call _fun_printf \n n$4=_fun_printf(\"(out)HELLO WORLD!\":char *) [line 39]\n REMOVE_TEMPS(n$4); [line 39]\n " shape="box"] +43 [label="43: Call _fun_printf \n n$4=_fun_printf(\"(out)HELLO WORLD!\":char *) [line 39]\n " shape="box"] 43 -> 42 ; -42 [label="42: BinaryOperatorStmt: Assign \n n$3=*&value:int [line 40]\n *&x:int =(n$3 + 1) [line 40]\n REMOVE_TEMPS(n$3); [line 40]\n APPLY_ABSTRACTION; [line 40]\n " shape="box"] +42 [label="42: BinaryOperatorStmt: Assign \n n$3=*&value:int [line 40]\n *&x:int =(n$3 + 1) [line 40]\n APPLY_ABSTRACTION; [line 40]\n " shape="box"] 42 -> 39 ; @@ -637,7 +637,7 @@ digraph iCFG { 41 -> 36 ; 41 -> 37 ; -40 [label="40: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 41]\n APPLY_ABSTRACTION; [line 41]\n " shape="invhouse"] +40 [label="40: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 41]\n REMOVE_TEMPS(n$0); [line 41]\n APPLY_ABSTRACTION; [line 41]\n " shape="invhouse"] 40 -> 39 ; @@ -654,7 +654,7 @@ digraph iCFG { 37 -> 31 ; 37 -> 32 ; -36 [label="36: Prune (true branch) \n PRUNE(((n$0 == 1) != 0), true); [line 47]\n APPLY_ABSTRACTION; [line 47]\n " shape="invhouse"] +36 [label="36: Prune (true branch) \n PRUNE(((n$0 == 1) != 0), true); [line 47]\n REMOVE_TEMPS(n$0); [line 47]\n APPLY_ABSTRACTION; [line 47]\n " shape="invhouse"] 36 -> 35 ; @@ -675,15 +675,15 @@ digraph iCFG { 32 -> 29 ; 32 -> 30 ; -31 [label="31: Prune (true branch) \n PRUNE(((n$0 == 2) != 0), true); [line 53]\n APPLY_ABSTRACTION; [line 53]\n " shape="invhouse"] +31 [label="31: Prune (true branch) \n PRUNE(((n$0 == 2) != 0), true); [line 53]\n REMOVE_TEMPS(n$0); [line 53]\n APPLY_ABSTRACTION; [line 53]\n " shape="invhouse"] 31 -> 26 ; -30 [label="30: Prune (false branch) \n PRUNE(((n$0 == 3) == 0), false); [line 54]\n " shape="invhouse"] +30 [label="30: Prune (false branch) \n PRUNE(((n$0 == 3) == 0), false); [line 54]\n REMOVE_TEMPS(n$0); [line 54]\n " shape="invhouse"] 30 -> 28 ; -29 [label="29: Prune (true branch) \n PRUNE(((n$0 == 3) != 0), true); [line 54]\n APPLY_ABSTRACTION; [line 54]\n " shape="invhouse"] +29 [label="29: Prune (true branch) \n PRUNE(((n$0 == 3) != 0), true); [line 54]\n REMOVE_TEMPS(n$0); [line 54]\n APPLY_ABSTRACTION; [line 54]\n " shape="invhouse"] 29 -> 26 ; @@ -696,7 +696,7 @@ digraph iCFG { 27 -> 40 ; 27 -> 41 ; -26 [label="26: Return Stmt \n *&return:int =0 [line 57]\n REMOVE_TEMPS(n$0); [line 57]\n APPLY_ABSTRACTION; [line 57]\n " shape="box"] +26 [label="26: Return Stmt \n *&return:int =0 [line 57]\n APPLY_ABSTRACTION; [line 57]\n " shape="box"] 26 -> 25 ; @@ -715,11 +715,11 @@ digraph iCFG { 22 -> 21 ; -21 [label="21: Call _fun_printf \n n$7=_fun_printf(\"(out)HELLO WORLD!\":char *) [line 17]\n REMOVE_TEMPS(n$7); [line 17]\n " shape="box"] +21 [label="21: Call _fun_printf \n n$7=_fun_printf(\"(out)HELLO WORLD!\":char *) [line 17]\n " shape="box"] 21 -> 20 ; -20 [label="20: BinaryOperatorStmt: Assign \n n$6=*&value:int [line 18]\n *&x:int =(n$6 + 1) [line 18]\n REMOVE_TEMPS(n$6); [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +20 [label="20: BinaryOperatorStmt: Assign \n n$6=*&value:int [line 18]\n *&x:int =(n$6 + 1) [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] 20 -> 17 ; @@ -728,7 +728,7 @@ digraph iCFG { 19 -> 15 ; 19 -> 16 ; -18 [label="18: Prune (true branch) \n PRUNE(((n$2 == 0) != 0), true); [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="invhouse"] +18 [label="18: Prune (true branch) \n PRUNE(((n$2 == 0) != 0), true); [line 19]\n REMOVE_TEMPS(n$2); [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="invhouse"] 18 -> 17 ; @@ -741,7 +741,7 @@ digraph iCFG { 16 -> 12 ; 16 -> 13 ; -15 [label="15: Prune (true branch) \n PRUNE(((n$2 == 1) != 0), true); [line 22]\n " shape="invhouse"] +15 [label="15: Prune (true branch) \n PRUNE(((n$2 == 1) != 0), true); [line 22]\n REMOVE_TEMPS(n$2); [line 22]\n " shape="invhouse"] 15 -> 14 ; @@ -749,11 +749,11 @@ digraph iCFG { 14 -> 4 ; -13 [label="13: Prune (false branch) \n PRUNE(((n$2 == 2) == 0), false); [line 25]\n " shape="invhouse"] +13 [label="13: Prune (false branch) \n PRUNE(((n$2 == 2) == 0), false); [line 25]\n REMOVE_TEMPS(n$2); [line 25]\n " shape="invhouse"] 13 -> 10 ; -12 [label="12: Prune (true branch) \n PRUNE(((n$2 == 2) != 0), true); [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="invhouse"] +12 [label="12: Prune (true branch) \n PRUNE(((n$2 == 2) != 0), true); [line 25]\n REMOVE_TEMPS(n$2); [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="invhouse"] 12 -> 11 ; @@ -770,7 +770,7 @@ digraph iCFG { 9 -> 18 ; 9 -> 19 ; -8 [label="8: Call _fun_printf \n n$1=_fun_printf(\"(after_switch)HELLO WORLD!\":char *) [line 30]\n REMOVE_TEMPS(n$1,n$2); [line 30]\n APPLY_ABSTRACTION; [line 30]\n " shape="box"] +8 [label="8: Call _fun_printf \n n$1=_fun_printf(\"(after_switch)HELLO WORLD!\":char *) [line 30]\n REMOVE_TEMPS(n$1); [line 30]\n APPLY_ABSTRACTION; [line 30]\n " shape="box"] 8 -> 4 ; diff --git a/infer/tests/codetoanalyze/c/frontend/unusual_exps/generic_exp.c.dot b/infer/tests/codetoanalyze/c/frontend/unusual_exps/generic_exp.c.dot index 72a1654fb..25c45a34c 100644 --- a/infer/tests/codetoanalyze/c/frontend/unusual_exps/generic_exp.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/unusual_exps/generic_exp.c.dot @@ -1,9 +1,9 @@ digraph iCFG { -4 [label="4: DeclStmt \n *&x:void =_t$1 [line 15]\n NULLIFY(&x); [line 15]\n " shape="box"] +4 [label="4: DeclStmt \n *&x:void =_t$1 [line 15]\n REMOVE_TEMPS(_t$1); [line 15]\n NULLIFY(&x); [line 15]\n " shape="box"] 4 -> 3 ; -3 [label="3: DeclStmt \n *&z:void =_t$0 [line 16]\n NULLIFY(&z); [line 16]\n APPLY_ABSTRACTION; [line 16]\n " shape="box"] +3 [label="3: DeclStmt \n *&z:void =_t$0 [line 16]\n REMOVE_TEMPS(_t$0); [line 16]\n NULLIFY(&z); [line 16]\n APPLY_ABSTRACTION; [line 16]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/constructors/std_init_list.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/constructors/std_init_list.cpp.dot index aa472eba2..829dcf2df 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/constructors/std_init_list.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/constructors/std_init_list.cpp.dot @@ -10,15 +10,15 @@ digraph iCFG { 9 -> 11 ; -8 [label="8: Prune (false branch) \n PRUNE(((n$3 != n$5) == 0), false); [line 15]\n REMOVE_TEMPS(n$3,n$4,n$5); [line 15]\n NULLIFY(&i); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="invhouse"] +8 [label="8: Prune (false branch) \n PRUNE(((n$3 != n$5) == 0), false); [line 15]\n REMOVE_TEMPS(n$3,n$5); [line 15]\n NULLIFY(&i); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="invhouse"] 8 -> 2 ; -7 [label="7: Prune (true branch) \n PRUNE(((n$3 != n$5) != 0), true); [line 15]\n REMOVE_TEMPS(n$3,n$4,n$5); [line 15]\n " shape="invhouse"] +7 [label="7: Prune (true branch) \n PRUNE(((n$3 != n$5) != 0), true); [line 15]\n REMOVE_TEMPS(n$3,n$5); [line 15]\n " shape="invhouse"] 7 -> 5 ; -6 [label="6: BinaryOperatorStmt: NE \n n$3=*&i:int * [line 15]\n n$4=*&list:class std::initializer_list [line 15]\n n$5=_fun_std::initializer_list_end(&list:class std::initializer_list &) [line 15]\n " shape="box"] +6 [label="6: BinaryOperatorStmt: NE \n n$3=*&i:int * [line 15]\n n$4=*&list:class std::initializer_list [line 15]\n n$5=_fun_std::initializer_list_end(&list:class std::initializer_list &) [line 15]\n REMOVE_TEMPS(n$4); [line 15]\n " shape="box"] 6 -> 7 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/methods/conversion_operator.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/methods/conversion_operator.cpp.dot index f989bbe44..3ff9a0cdc 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/methods/conversion_operator.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/methods/conversion_operator.cpp.dot @@ -11,15 +11,15 @@ digraph iCFG { 59 -> 53 ; -58 [label="58: Prune (false branch) \n PRUNE((n$3 == 0), false); [line 63]\n REMOVE_TEMPS(n$2,n$3); [line 63]\n " shape="invhouse"] +58 [label="58: Prune (false branch) \n PRUNE((n$3 == 0), false); [line 63]\n REMOVE_TEMPS(n$3); [line 63]\n " shape="invhouse"] 58 -> 55 ; -57 [label="57: Prune (true branch) \n PRUNE((n$3 != 0), true); [line 63]\n REMOVE_TEMPS(n$2,n$3); [line 63]\n " shape="invhouse"] +57 [label="57: Prune (true branch) \n PRUNE((n$3 != 0), true); [line 63]\n REMOVE_TEMPS(n$3); [line 63]\n " shape="invhouse"] 57 -> 60 ; -56 [label="56: Call _fun_X_operator bool \n n$2=*&x:class X [line 63]\n n$3=_fun_X_operator bool(&x:class X &) [line 63]\n " shape="box"] +56 [label="56: Call _fun_X_operator bool \n n$2=*&x:class X [line 63]\n n$3=_fun_X_operator bool(&x:class X &) [line 63]\n REMOVE_TEMPS(n$2); [line 63]\n " shape="box"] 56 -> 57 ; @@ -51,15 +51,15 @@ digraph iCFG { 49 -> 43 ; -48 [label="48: Prune (false branch) \n PRUNE((n$3 == 0), false); [line 54]\n REMOVE_TEMPS(n$2,n$3); [line 54]\n " shape="invhouse"] +48 [label="48: Prune (false branch) \n PRUNE((n$3 == 0), false); [line 54]\n REMOVE_TEMPS(n$3); [line 54]\n " shape="invhouse"] 48 -> 45 ; -47 [label="47: Prune (true branch) \n PRUNE((n$3 != 0), true); [line 54]\n REMOVE_TEMPS(n$2,n$3); [line 54]\n " shape="invhouse"] +47 [label="47: Prune (true branch) \n PRUNE((n$3 != 0), true); [line 54]\n REMOVE_TEMPS(n$3); [line 54]\n " shape="invhouse"] 47 -> 50 ; -46 [label="46: Call _fun_X_operator bool \n n$2=*&x:class X [line 54]\n n$3=_fun_X_operator bool(&x:class X &) [line 54]\n " shape="box"] +46 [label="46: Call _fun_X_operator bool \n n$2=*&x:class X [line 54]\n n$3=_fun_X_operator bool(&x:class X &) [line 54]\n REMOVE_TEMPS(n$2); [line 54]\n " shape="box"] 46 -> 47 ; @@ -99,15 +99,15 @@ digraph iCFG { 37 -> 31 ; -36 [label="36: Prune (false branch) \n PRUNE((n$9 == 0), false); [line 45]\n REMOVE_TEMPS(n$7,n$9); [line 45]\n " shape="invhouse"] +36 [label="36: Prune (false branch) \n PRUNE((n$9 == 0), false); [line 45]\n REMOVE_TEMPS(n$9); [line 45]\n " shape="invhouse"] 36 -> 33 ; -35 [label="35: Prune (true branch) \n PRUNE((n$9 != 0), true); [line 45]\n REMOVE_TEMPS(n$7,n$9); [line 45]\n " shape="invhouse"] +35 [label="35: Prune (true branch) \n PRUNE((n$9 != 0), true); [line 45]\n REMOVE_TEMPS(n$9); [line 45]\n " shape="invhouse"] 35 -> 38 ; -34 [label="34: Call _fun_X_operator bool \n n$7=*&y:class Y [line 45]\n _fun_Y_operator X(&y:class Y &,&SIL_materialize_temp__n$6:class X *) [line 45]\n _fun_X_X(&__temp_construct_n$5:class X *,&SIL_materialize_temp__n$6:class X &) [line 45]\n n$9=_fun_X_operator bool(&__temp_construct_n$5:class X &) [line 45]\n " shape="box"] +34 [label="34: Call _fun_X_operator bool \n n$7=*&y:class Y [line 45]\n _fun_Y_operator X(&y:class Y &,&SIL_materialize_temp__n$6:class X *) [line 45]\n _fun_X_X(&__temp_construct_n$5:class X *,&SIL_materialize_temp__n$6:class X &) [line 45]\n n$9=_fun_X_operator bool(&__temp_construct_n$5:class X &) [line 45]\n REMOVE_TEMPS(n$7); [line 45]\n " shape="box"] 34 -> 35 ; @@ -139,15 +139,15 @@ digraph iCFG { 27 -> 21 ; -26 [label="26: Prune (false branch) \n PRUNE((n$3 == 0), false); [line 34]\n REMOVE_TEMPS(n$2,n$3); [line 34]\n " shape="invhouse"] +26 [label="26: Prune (false branch) \n PRUNE((n$3 == 0), false); [line 34]\n REMOVE_TEMPS(n$3); [line 34]\n " shape="invhouse"] 26 -> 23 ; -25 [label="25: Prune (true branch) \n PRUNE((n$3 != 0), true); [line 34]\n REMOVE_TEMPS(n$2,n$3); [line 34]\n " shape="invhouse"] +25 [label="25: Prune (true branch) \n PRUNE((n$3 != 0), true); [line 34]\n REMOVE_TEMPS(n$3); [line 34]\n " shape="invhouse"] 25 -> 28 ; -24 [label="24: Call _fun_X_operator bool \n n$2=*&x:class X [line 34]\n n$3=_fun_X_operator bool(&x:class X &) [line 34]\n " shape="box"] +24 [label="24: Call _fun_X_operator bool \n n$2=*&x:class X [line 34]\n n$3=_fun_X_operator bool(&x:class X &) [line 34]\n REMOVE_TEMPS(n$2); [line 34]\n " shape="box"] 24 -> 25 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/nestedoperators/var_decl_inside_switch.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/nestedoperators/var_decl_inside_switch.cpp.dot index 6a9142562..5ccfa0c2b 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/nestedoperators/var_decl_inside_switch.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/nestedoperators/var_decl_inside_switch.cpp.dot @@ -4,7 +4,7 @@ digraph iCFG { 14 -> 11 ; 14 -> 12 ; -13 [label="13: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 12]\n NULLIFY(&x); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="invhouse"] +13 [label="13: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 12]\n REMOVE_TEMPS(n$0); [line 12]\n NULLIFY(&x); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="invhouse"] 13 -> 10 ; @@ -13,7 +13,7 @@ digraph iCFG { 12 -> 8 ; 12 -> 9 ; -11 [label="11: Prune (true branch) \n PRUNE(((n$0 == 1) != 0), true); [line 13]\n NULLIFY(&x); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="invhouse"] +11 [label="11: Prune (true branch) \n PRUNE(((n$0 == 1) != 0), true); [line 13]\n REMOVE_TEMPS(n$0); [line 13]\n NULLIFY(&x); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="invhouse"] 11 -> 10 ; @@ -21,11 +21,11 @@ digraph iCFG { 10 -> 2 ; -9 [label="9: Prune (false branch) \n PRUNE(((n$0 == 2) == 0), false); [line 15]\n " shape="invhouse"] +9 [label="9: Prune (false branch) \n PRUNE(((n$0 == 2) == 0), false); [line 15]\n REMOVE_TEMPS(n$0); [line 15]\n " shape="invhouse"] 9 -> 5 ; -8 [label="8: Prune (true branch) \n PRUNE(((n$0 == 2) != 0), true); [line 15]\n NULLIFY(&x); [line 15]\n " shape="invhouse"] +8 [label="8: Prune (true branch) \n PRUNE(((n$0 == 2) != 0), true); [line 15]\n REMOVE_TEMPS(n$0); [line 15]\n NULLIFY(&x); [line 15]\n " shape="invhouse"] 8 -> 7 ; @@ -50,7 +50,7 @@ digraph iCFG { 3 -> 13 ; 3 -> 14 ; -2 [label="2: Exit get \n REMOVE_TEMPS(n$0); [line 20]\n " color=yellow style=filled] +2 [label="2: Exit get \n " color=yellow style=filled] 1 [label="1: Start get\nFormals: a:int \nLocals: x:int \n DECLARE_LOCALS(&return,&x); [line 10]\n " color=yellow style=filled] diff --git a/infer/tests/codetoanalyze/cpp/frontend/templates/sizeof_pack.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/templates/sizeof_pack.cpp.dot index 3d7c94c08..7fb024eb2 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/templates/sizeof_pack.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/templates/sizeof_pack.cpp.dot @@ -8,11 +8,11 @@ digraph iCFG { 10 -> 5 ; -9 [label="9: Prune (false branch) \n PRUNE(((_t$0 == 0) == 0), false); [line 17]\n NULLIFY(&seed); [line 17]\n " shape="invhouse"] +9 [label="9: Prune (false branch) \n PRUNE(((_t$0 == 0) == 0), false); [line 17]\n REMOVE_TEMPS(_t$0); [line 17]\n NULLIFY(&seed); [line 17]\n " shape="invhouse"] 9 -> 7 ; -8 [label="8: Prune (true branch) \n PRUNE(((_t$0 == 0) != 0), true); [line 17]\n " shape="invhouse"] +8 [label="8: Prune (true branch) \n PRUNE(((_t$0 == 0) != 0), true); [line 17]\n REMOVE_TEMPS(_t$0); [line 17]\n " shape="invhouse"] 8 -> 10 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/types/typeid_expr.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/types/typeid_expr.cpp.dot index 4eabf042d..5c3d94ed0 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/types/typeid_expr.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/types/typeid_expr.cpp.dot @@ -11,15 +11,15 @@ digraph iCFG { 68 -> 62 ; -67 [label="67: Prune (false branch) \n PRUNE(((n$0 == n$3) == 0), false); [line 64]\n REMOVE_TEMPS(n$0,n$1,n$2,n$3); [line 64]\n " shape="invhouse"] +67 [label="67: Prune (false branch) \n PRUNE(((n$0 == n$3) == 0), false); [line 64]\n REMOVE_TEMPS(n$0,n$3); [line 64]\n " shape="invhouse"] 67 -> 69 ; -66 [label="66: Prune (true branch) \n PRUNE(((n$0 == n$3) != 0), true); [line 64]\n REMOVE_TEMPS(n$0,n$1,n$2,n$3); [line 64]\n " shape="invhouse"] +66 [label="66: Prune (true branch) \n PRUNE(((n$0 == n$3) != 0), true); [line 64]\n REMOVE_TEMPS(n$0,n$3); [line 64]\n " shape="invhouse"] 66 -> 68 ; -65 [label="65: BinaryOperatorStmt: EQ \n n$0=_fun_template_typeid(&person:class Person &) [line 64]\n n$1=_fun___cxx_typeid(sizeof(class std::type_info ):void ,n$1.__type_name:void ,&person:class Person ) [line 64]\n n$2=*n$1:class std::type_info [line 64]\n n$3=_fun_std::type_info_name(n$1:class std::type_info &) [line 64]\n " shape="box"] +65 [label="65: BinaryOperatorStmt: EQ \n n$0=_fun_template_typeid(&person:class Person &) [line 64]\n n$1=_fun___cxx_typeid(sizeof(class std::type_info ):void ,n$1.__type_name:void ,&person:class Person ) [line 64]\n n$2=*n$1:class std::type_info [line 64]\n n$3=_fun_std::type_info_name(n$1:class std::type_info &) [line 64]\n REMOVE_TEMPS(n$1,n$2); [line 64]\n " shape="box"] 65 -> 66 ; @@ -66,15 +66,15 @@ digraph iCFG { 54 -> 48 ; -53 [label="53: Prune (false branch) \n PRUNE(((n$3 == n$6) == 0), false); [line 50]\n REMOVE_TEMPS(n$0,n$1,n$2,n$3,n$4,n$5,n$6); [line 50]\n " shape="invhouse"] +53 [label="53: Prune (false branch) \n PRUNE(((n$3 == n$6) == 0), false); [line 50]\n REMOVE_TEMPS(n$3,n$6); [line 50]\n " shape="invhouse"] 53 -> 55 ; -52 [label="52: Prune (true branch) \n PRUNE(((n$3 == n$6) != 0), true); [line 50]\n REMOVE_TEMPS(n$0,n$1,n$2,n$3,n$4,n$5,n$6); [line 50]\n " shape="invhouse"] +52 [label="52: Prune (true branch) \n PRUNE(((n$3 == n$6) != 0), true); [line 50]\n REMOVE_TEMPS(n$3,n$6); [line 50]\n " shape="invhouse"] 52 -> 54 ; -51 [label="51: BinaryOperatorStmt: EQ \n n$0=*&ptr:class Person * [line 50]\n n$1=_fun___cxx_typeid(sizeof(class std::type_info ):void ,n$1.__type_name:void ,n$0:class Person ) [line 50]\n n$2=*n$1:class std::type_info [line 50]\n n$3=_fun_std::type_info_name(n$1:class std::type_info &) [line 50]\n n$4=_fun___cxx_typeid(sizeof(class std::type_info ):void ,n$4.__type_name:void ,&person:class Person ) [line 50]\n n$5=*n$4:class std::type_info [line 50]\n n$6=_fun_std::type_info_name(n$4:class std::type_info &) [line 50]\n NULLIFY(&ptr); [line 50]\n " shape="box"] +51 [label="51: BinaryOperatorStmt: EQ \n n$0=*&ptr:class Person * [line 50]\n n$1=_fun___cxx_typeid(sizeof(class std::type_info ):void ,n$1.__type_name:void ,n$0:class Person ) [line 50]\n n$2=*n$1:class std::type_info [line 50]\n n$3=_fun_std::type_info_name(n$1:class std::type_info &) [line 50]\n n$4=_fun___cxx_typeid(sizeof(class std::type_info ):void ,n$4.__type_name:void ,&person:class Person ) [line 50]\n n$5=*n$4:class std::type_info [line 50]\n n$6=_fun_std::type_info_name(n$4:class std::type_info &) [line 50]\n REMOVE_TEMPS(n$0,n$1,n$2,n$4,n$5); [line 50]\n NULLIFY(&ptr); [line 50]\n " shape="box"] 51 -> 52 ; @@ -110,15 +110,15 @@ digraph iCFG { 43 -> 37 ; -42 [label="42: Prune (false branch) \n PRUNE((n$3 == 0), false); [line 42]\n REMOVE_TEMPS(n$0,n$1,n$2,n$3); [line 42]\n " shape="invhouse"] +42 [label="42: Prune (false branch) \n PRUNE((n$3 == 0), false); [line 42]\n REMOVE_TEMPS(n$3); [line 42]\n " shape="invhouse"] 42 -> 44 ; -41 [label="41: Prune (true branch) \n PRUNE((n$3 != 0), true); [line 42]\n REMOVE_TEMPS(n$0,n$1,n$2,n$3); [line 42]\n " shape="invhouse"] +41 [label="41: Prune (true branch) \n PRUNE((n$3 != 0), true); [line 42]\n REMOVE_TEMPS(n$3); [line 42]\n " shape="invhouse"] 41 -> 43 ; -40 [label="40: Call _fun_std::type_info_operator== \n n$0=_fun___cxx_typeid(sizeof(class std::type_info ):void ,n$0.__type_name:void ,&employee:class Employee ) [line 42]\n n$1=*&ptr:class Person * [line 42]\n n$2=_fun___cxx_typeid(sizeof(class std::type_info ):void ,n$2.__type_name:void ,n$1:class Person ) [line 42]\n n$3=_fun_std::type_info_operator==(n$0:class std::type_info &,n$2:class std::type_info &) [line 42]\n NULLIFY(&ptr); [line 42]\n " shape="box"] +40 [label="40: Call _fun_std::type_info_operator== \n n$0=_fun___cxx_typeid(sizeof(class std::type_info ):void ,n$0.__type_name:void ,&employee:class Employee ) [line 42]\n n$1=*&ptr:class Person * [line 42]\n n$2=_fun___cxx_typeid(sizeof(class std::type_info ):void ,n$2.__type_name:void ,n$1:class Person ) [line 42]\n n$3=_fun_std::type_info_operator==(n$0:class std::type_info &,n$2:class std::type_info &) [line 42]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 42]\n NULLIFY(&ptr); [line 42]\n " shape="box"] 40 -> 41 ; @@ -206,15 +206,15 @@ digraph iCFG { 19 -> 13 ; -18 [label="18: Prune (false branch) \n PRUNE((n$2 == 0), false); [line 22]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 22]\n " shape="invhouse"] +18 [label="18: Prune (false branch) \n PRUNE((n$2 == 0), false); [line 22]\n REMOVE_TEMPS(n$2); [line 22]\n " shape="invhouse"] 18 -> 20 ; -17 [label="17: Prune (true branch) \n PRUNE((n$2 != 0), true); [line 22]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 22]\n " shape="invhouse"] +17 [label="17: Prune (true branch) \n PRUNE((n$2 != 0), true); [line 22]\n REMOVE_TEMPS(n$2); [line 22]\n " shape="invhouse"] 17 -> 19 ; -16 [label="16: Call _fun_std::type_info_operator== \n n$0=_fun___cxx_typeid(sizeof(class std::type_info ):void ,n$0.__type_name:void ,&t:int ) [line 22]\n n$1=_fun___cxx_typeid(sizeof(class std::type_info ):void ,n$1.__type_name:void ,&person:class Person ) [line 22]\n n$2=_fun_std::type_info_operator==(n$0:class std::type_info &,n$1:class std::type_info &) [line 22]\n NULLIFY(&t); [line 22]\n " shape="box"] +16 [label="16: Call _fun_std::type_info_operator== \n n$0=_fun___cxx_typeid(sizeof(class std::type_info ):void ,n$0.__type_name:void ,&t:int ) [line 22]\n n$1=_fun___cxx_typeid(sizeof(class std::type_info ):void ,n$1.__type_name:void ,&person:class Person ) [line 22]\n n$2=_fun_std::type_info_operator==(n$0:class std::type_info &,n$1:class std::type_info &) [line 22]\n REMOVE_TEMPS(n$0,n$1); [line 22]\n NULLIFY(&t); [line 22]\n " shape="box"] 16 -> 17 ; diff --git a/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/MemoryLeakExample.dot b/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/MemoryLeakExample.dot index b7460f12e..35f6953fc 100644 --- a/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/MemoryLeakExample.dot +++ b/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/MemoryLeakExample.dot @@ -7,7 +7,7 @@ digraph iCFG { 72 -> 71 ; -71 [label="71: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_MemoryLeakExample_blockFreeNoLeakTODO______2); [line 105]\n n$56=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_MemoryLeakExample_blockFreeNoLeakTODO______2 ):unsigned long ) [line 105]\n *&__objc_anonymous_block_MemoryLeakExample_blockFreeNoLeakTODO______2:class __objc_anonymous_block_MemoryLeakExample_blockFreeNoLeakTODO______2 =n$56 [line 105]\n n$57=*&x:int * [line 105]\n *n$56.x:int *=n$57 [line 105]\n n$51=*&x:int * [line 105]\n *&blk:_fn_ (*)=(_fun___objc_anonymous_block_MemoryLeakExample_blockFreeNoLeakTODO______2,n$51) [line 105]\n REMOVE_TEMPS(n$56,n$57,n$51); [line 105]\n NULLIFY(&__objc_anonymous_block_MemoryLeakExample_blockFreeNoLeakTODO______2); [line 105]\n NULLIFY(&x); [line 105]\n " shape="box"] +71 [label="71: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_MemoryLeakExample_blockFreeNoLeakTODO______2); [line 105]\n n$56=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_MemoryLeakExample_blockFreeNoLeakTODO______2 ):unsigned long ) [line 105]\n *&__objc_anonymous_block_MemoryLeakExample_blockFreeNoLeakTODO______2:class __objc_anonymous_block_MemoryLeakExample_blockFreeNoLeakTODO______2 =n$56 [line 105]\n n$57=*&x:int * [line 105]\n *n$56.x:int *=n$57 [line 105]\n n$51=*&x:int * [line 105]\n *&blk:_fn_ (*)=(_fun___objc_anonymous_block_MemoryLeakExample_blockFreeNoLeakTODO______2,n$51) [line 105]\n REMOVE_TEMPS(n$51,n$56,n$57); [line 105]\n NULLIFY(&__objc_anonymous_block_MemoryLeakExample_blockFreeNoLeakTODO______2); [line 105]\n NULLIFY(&x); [line 105]\n " shape="box"] 71 -> 65 ; @@ -49,7 +49,7 @@ digraph iCFG { 61 -> 60 ; -60 [label="60: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_MemoryLeakExample_blockCapturedVarLeak______1); [line 96]\n n$45=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_MemoryLeakExample_blockCapturedVarLeak______1 ):unsigned long ) [line 96]\n *&__objc_anonymous_block_MemoryLeakExample_blockCapturedVarLeak______1:class __objc_anonymous_block_MemoryLeakExample_blockCapturedVarLeak______1 =n$45 [line 96]\n n$46=*&x:int * [line 96]\n *n$45.x:int *=n$46 [line 96]\n n$42=*&x:int * [line 96]\n *&blk:_fn_ (*)=(_fun___objc_anonymous_block_MemoryLeakExample_blockCapturedVarLeak______1,n$42) [line 96]\n REMOVE_TEMPS(n$45,n$46,n$42); [line 96]\n NULLIFY(&__objc_anonymous_block_MemoryLeakExample_blockCapturedVarLeak______1); [line 96]\n NULLIFY(&x); [line 96]\n " shape="box"] +60 [label="60: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_MemoryLeakExample_blockCapturedVarLeak______1); [line 96]\n n$45=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_MemoryLeakExample_blockCapturedVarLeak______1 ):unsigned long ) [line 96]\n *&__objc_anonymous_block_MemoryLeakExample_blockCapturedVarLeak______1:class __objc_anonymous_block_MemoryLeakExample_blockCapturedVarLeak______1 =n$45 [line 96]\n n$46=*&x:int * [line 96]\n *n$45.x:int *=n$46 [line 96]\n n$42=*&x:int * [line 96]\n *&blk:_fn_ (*)=(_fun___objc_anonymous_block_MemoryLeakExample_blockCapturedVarLeak______1,n$42) [line 96]\n REMOVE_TEMPS(n$42,n$45,n$46); [line 96]\n NULLIFY(&__objc_anonymous_block_MemoryLeakExample_blockCapturedVarLeak______1); [line 96]\n NULLIFY(&x); [line 96]\n " shape="box"] 60 -> 56 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/block/BlockVar.dot b/infer/tests/codetoanalyze/objc/frontend/block/BlockVar.dot index cd5654350..4a44117c1 100644 --- a/infer/tests/codetoanalyze/objc/frontend/block/BlockVar.dot +++ b/infer/tests/codetoanalyze/objc/frontend/block/BlockVar.dot @@ -7,7 +7,7 @@ digraph iCFG { 53 -> 52 ; -52 [label="52: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_BlockVar_capturedNoNullDeref______5); [line 59]\n n$37=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_BlockVar_capturedNoNullDeref______5 ):unsigned long ) [line 59]\n *&__objc_anonymous_block_BlockVar_capturedNoNullDeref______5:class __objc_anonymous_block_BlockVar_capturedNoNullDeref______5 =n$37 [line 59]\n n$38=*&x:int * [line 59]\n *n$37.x:int *=n$38 [line 59]\n n$34=*&x:int * [line 59]\n *&my_block:_fn_ (*)=(_fun___objc_anonymous_block_BlockVar_capturedNoNullDeref______5,n$34) [line 59]\n REMOVE_TEMPS(n$37,n$38,n$34); [line 59]\n NULLIFY(&__objc_anonymous_block_BlockVar_capturedNoNullDeref______5); [line 59]\n NULLIFY(&x); [line 59]\n " shape="box"] +52 [label="52: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_BlockVar_capturedNoNullDeref______5); [line 59]\n n$37=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_BlockVar_capturedNoNullDeref______5 ):unsigned long ) [line 59]\n *&__objc_anonymous_block_BlockVar_capturedNoNullDeref______5:class __objc_anonymous_block_BlockVar_capturedNoNullDeref______5 =n$37 [line 59]\n n$38=*&x:int * [line 59]\n *n$37.x:int *=n$38 [line 59]\n n$34=*&x:int * [line 59]\n *&my_block:_fn_ (*)=(_fun___objc_anonymous_block_BlockVar_capturedNoNullDeref______5,n$34) [line 59]\n REMOVE_TEMPS(n$34,n$37,n$38); [line 59]\n NULLIFY(&__objc_anonymous_block_BlockVar_capturedNoNullDeref______5); [line 59]\n NULLIFY(&x); [line 59]\n " shape="box"] 52 -> 48 ; @@ -41,7 +41,7 @@ digraph iCFG { 44 -> 43 ; -43 [label="43: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_BlockVar_capturedNullDeref______4); [line 50]\n n$30=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_BlockVar_capturedNullDeref______4 ):unsigned long ) [line 50]\n *&__objc_anonymous_block_BlockVar_capturedNullDeref______4:class __objc_anonymous_block_BlockVar_capturedNullDeref______4 =n$30 [line 50]\n n$31=*&x:int * [line 50]\n *n$30.x:int *=n$31 [line 50]\n n$27=*&x:int * [line 50]\n *&my_block:_fn_ (*)=(_fun___objc_anonymous_block_BlockVar_capturedNullDeref______4,n$27) [line 50]\n REMOVE_TEMPS(n$30,n$31,n$27); [line 50]\n NULLIFY(&__objc_anonymous_block_BlockVar_capturedNullDeref______4); [line 50]\n NULLIFY(&x); [line 50]\n " shape="box"] +43 [label="43: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_BlockVar_capturedNullDeref______4); [line 50]\n n$30=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_BlockVar_capturedNullDeref______4 ):unsigned long ) [line 50]\n *&__objc_anonymous_block_BlockVar_capturedNullDeref______4:class __objc_anonymous_block_BlockVar_capturedNullDeref______4 =n$30 [line 50]\n n$31=*&x:int * [line 50]\n *n$30.x:int *=n$31 [line 50]\n n$27=*&x:int * [line 50]\n *&my_block:_fn_ (*)=(_fun___objc_anonymous_block_BlockVar_capturedNullDeref______4,n$27) [line 50]\n REMOVE_TEMPS(n$27,n$30,n$31); [line 50]\n NULLIFY(&__objc_anonymous_block_BlockVar_capturedNullDeref______4); [line 50]\n NULLIFY(&x); [line 50]\n " shape="box"] 43 -> 39 ; @@ -75,7 +75,7 @@ digraph iCFG { 35 -> 34 ; -34 [label="34: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_BlockVar_blockPostOk______3); [line 42]\n n$23=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_BlockVar_blockPostOk______3 ):unsigned long ) [line 42]\n *&__objc_anonymous_block_BlockVar_blockPostOk______3:class __objc_anonymous_block_BlockVar_blockPostOk______3 =n$23 [line 42]\n n$24=*&x:int * [line 42]\n *n$23.x:int *=n$24 [line 42]\n n$21=*&x:int * [line 42]\n *&my_block:_fn_ (*)=(_fun___objc_anonymous_block_BlockVar_blockPostOk______3,n$21) [line 42]\n REMOVE_TEMPS(n$23,n$24,n$21); [line 42]\n NULLIFY(&__objc_anonymous_block_BlockVar_blockPostOk______3); [line 42]\n NULLIFY(&x); [line 42]\n " shape="box"] +34 [label="34: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_BlockVar_blockPostOk______3); [line 42]\n n$23=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_BlockVar_blockPostOk______3 ):unsigned long ) [line 42]\n *&__objc_anonymous_block_BlockVar_blockPostOk______3:class __objc_anonymous_block_BlockVar_blockPostOk______3 =n$23 [line 42]\n n$24=*&x:int * [line 42]\n *n$23.x:int *=n$24 [line 42]\n n$21=*&x:int * [line 42]\n *&my_block:_fn_ (*)=(_fun___objc_anonymous_block_BlockVar_blockPostOk______3,n$21) [line 42]\n REMOVE_TEMPS(n$21,n$23,n$24); [line 42]\n NULLIFY(&__objc_anonymous_block_BlockVar_blockPostOk______3); [line 42]\n NULLIFY(&x); [line 42]\n " shape="box"] 34 -> 30 ; @@ -105,7 +105,7 @@ digraph iCFG { 27 -> 26 ; -26 [label="26: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_BlockVar_blockPostBad______2); [line 33]\n n$16=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_BlockVar_blockPostBad______2 ):unsigned long ) [line 33]\n *&__objc_anonymous_block_BlockVar_blockPostBad______2:class __objc_anonymous_block_BlockVar_blockPostBad______2 =n$16 [line 33]\n n$17=*&x:int * [line 33]\n *n$16.x:int *=n$17 [line 33]\n n$14=*&x:int * [line 33]\n *&my_block:_fn_ (*)=(_fun___objc_anonymous_block_BlockVar_blockPostBad______2,n$14) [line 33]\n REMOVE_TEMPS(n$16,n$17,n$14); [line 33]\n NULLIFY(&__objc_anonymous_block_BlockVar_blockPostBad______2); [line 33]\n NULLIFY(&x); [line 33]\n " shape="box"] +26 [label="26: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_BlockVar_blockPostBad______2); [line 33]\n n$16=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_BlockVar_blockPostBad______2 ):unsigned long ) [line 33]\n *&__objc_anonymous_block_BlockVar_blockPostBad______2:class __objc_anonymous_block_BlockVar_blockPostBad______2 =n$16 [line 33]\n n$17=*&x:int * [line 33]\n *n$16.x:int *=n$17 [line 33]\n n$14=*&x:int * [line 33]\n *&my_block:_fn_ (*)=(_fun___objc_anonymous_block_BlockVar_blockPostBad______2,n$14) [line 33]\n REMOVE_TEMPS(n$14,n$16,n$17); [line 33]\n NULLIFY(&__objc_anonymous_block_BlockVar_blockPostBad______2); [line 33]\n NULLIFY(&x); [line 33]\n " shape="box"] 26 -> 22 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/block/block-it.dot b/infer/tests/codetoanalyze/objc/frontend/block/block-it.dot index bb4278244..ebb03592c 100644 --- a/infer/tests/codetoanalyze/objc/frontend/block/block-it.dot +++ b/infer/tests/codetoanalyze/objc/frontend/block/block-it.dot @@ -55,15 +55,15 @@ digraph iCFG { 41 -> 38 ; -40 [label="40: Prune (false branch) \n PRUNE(((n$30 == 1) == 0), false); [line 55]\n REMOVE_TEMPS(n$29,n$30); [line 55]\n " shape="invhouse"] +40 [label="40: Prune (false branch) \n PRUNE(((n$30 == 1) == 0), false); [line 55]\n REMOVE_TEMPS(n$30); [line 55]\n " shape="invhouse"] 40 -> 37 ; -39 [label="39: Prune (true branch) \n PRUNE(((n$30 == 1) != 0), true); [line 55]\n REMOVE_TEMPS(n$29,n$30); [line 55]\n NULLIFY(&enumerateObjectsUsingBlock); [line 55]\n NULLIFY(&idx); [line 55]\n NULLIFY(&objects); [line 55]\n APPLY_ABSTRACTION; [line 55]\n " shape="invhouse"] +39 [label="39: Prune (true branch) \n PRUNE(((n$30 == 1) != 0), true); [line 55]\n REMOVE_TEMPS(n$30); [line 55]\n NULLIFY(&enumerateObjectsUsingBlock); [line 55]\n NULLIFY(&idx); [line 55]\n NULLIFY(&objects); [line 55]\n APPLY_ABSTRACTION; [line 55]\n " shape="invhouse"] 39 -> 30 ; -38 [label="38: BinaryOperatorStmt: EQ \n n$29=*&stop:_Bool * [line 55]\n n$30=*n$29:_Bool [line 55]\n " shape="box"] +38 [label="38: BinaryOperatorStmt: EQ \n n$29=*&stop:_Bool * [line 55]\n n$30=*n$29:_Bool [line 55]\n REMOVE_TEMPS(n$29); [line 55]\n " shape="box"] 38 -> 39 ; @@ -72,15 +72,15 @@ digraph iCFG { 37 -> 33 ; -36 [label="36: Prune (false branch) \n PRUNE(((n$26 < n$28) == 0), false); [line 51]\n REMOVE_TEMPS(n$26,n$27,n$28); [line 51]\n NULLIFY(&enumerateObjectsUsingBlock); [line 51]\n NULLIFY(&idx); [line 51]\n NULLIFY(&objects); [line 51]\n APPLY_ABSTRACTION; [line 51]\n " shape="invhouse"] +36 [label="36: Prune (false branch) \n PRUNE(((n$26 < n$28) == 0), false); [line 51]\n REMOVE_TEMPS(n$26,n$28); [line 51]\n NULLIFY(&enumerateObjectsUsingBlock); [line 51]\n NULLIFY(&idx); [line 51]\n NULLIFY(&objects); [line 51]\n APPLY_ABSTRACTION; [line 51]\n " shape="invhouse"] 36 -> 30 ; -35 [label="35: Prune (true branch) \n PRUNE(((n$26 < n$28) != 0), true); [line 51]\n REMOVE_TEMPS(n$26,n$27,n$28); [line 51]\n " shape="invhouse"] +35 [label="35: Prune (true branch) \n PRUNE(((n$26 < n$28) != 0), true); [line 51]\n REMOVE_TEMPS(n$26,n$28); [line 51]\n " shape="invhouse"] 35 -> 42 ; -34 [label="34: BinaryOperatorStmt: LT \n n$26=*&idx:unsigned long [line 51]\n n$27=*&objects:class NSArray * [line 51]\n n$28=_fun_NSArray_count(n$27:class NSArray *) [line 51]\n " shape="box"] +34 [label="34: BinaryOperatorStmt: LT \n n$26=*&idx:unsigned long [line 51]\n n$27=*&objects:class NSArray * [line 51]\n n$28=_fun_NSArray_count(n$27:class NSArray *) [line 51]\n REMOVE_TEMPS(n$27); [line 51]\n " shape="box"] 34 -> 35 ; @@ -181,15 +181,15 @@ digraph iCFG { 10 -> 6 ; -9 [label="9: Prune (false branch) \n PRUNE(((n$3 < n$5) == 0), false); [line 21]\n REMOVE_TEMPS(n$3,n$4,n$5); [line 21]\n NULLIFY(&idx); [line 21]\n NULLIFY(&infer___objc_anonymous_block_MyBlock_array______1); [line 21]\n NULLIFY(&objects); [line 21]\n APPLY_ABSTRACTION; [line 21]\n " shape="invhouse"] +9 [label="9: Prune (false branch) \n PRUNE(((n$3 < n$5) == 0), false); [line 21]\n REMOVE_TEMPS(n$3,n$5); [line 21]\n NULLIFY(&idx); [line 21]\n NULLIFY(&infer___objc_anonymous_block_MyBlock_array______1); [line 21]\n NULLIFY(&objects); [line 21]\n APPLY_ABSTRACTION; [line 21]\n " shape="invhouse"] 9 -> 3 ; -8 [label="8: Prune (true branch) \n PRUNE(((n$3 < n$5) != 0), true); [line 21]\n REMOVE_TEMPS(n$3,n$4,n$5); [line 21]\n " shape="invhouse"] +8 [label="8: Prune (true branch) \n PRUNE(((n$3 < n$5) != 0), true); [line 21]\n REMOVE_TEMPS(n$3,n$5); [line 21]\n " shape="invhouse"] 8 -> 15 ; -7 [label="7: BinaryOperatorStmt: LT \n n$3=*&idx:unsigned long [line 21]\n n$4=*&objects:class NSArray * [line 21]\n n$5=_fun_NSArray_count(n$4:class NSArray *) virtual [line 21]\n " shape="box"] +7 [label="7: BinaryOperatorStmt: LT \n n$3=*&idx:unsigned long [line 21]\n n$4=*&objects:class NSArray * [line 21]\n n$5=_fun_NSArray_count(n$4:class NSArray *) virtual [line 21]\n REMOVE_TEMPS(n$4); [line 21]\n " shape="box"] 7 -> 8 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/block/block.dot b/infer/tests/codetoanalyze/objc/frontend/block/block.dot index b1e606ef5..3633cb5d3 100644 --- a/infer/tests/codetoanalyze/objc/frontend/block/block.dot +++ b/infer/tests/codetoanalyze/objc/frontend/block/block.dot @@ -18,7 +18,7 @@ digraph iCFG { 21 -> 20 ; -20 [label="20: BinaryOperatorStmt: Assign \n DECLARE_LOCALS(&__objc_anonymous_block_main1______2); [line 18]\n n$27=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_main1______2 ):unsigned long ) [line 18]\n *&__objc_anonymous_block_main1______2:class __objc_anonymous_block_main1______2 =n$27 [line 18]\n n$28=*&x:int [line 18]\n *n$27.x:int =n$28 [line 18]\n n$11=*&x:int [line 18]\n *&addblock:_fn_ (*)=(_fun___objc_anonymous_block_main1______2,n$11) [line 18]\n REMOVE_TEMPS(n$27,n$28,n$11); [line 18]\n NULLIFY(&__objc_anonymous_block_main1______2); [line 18]\n NULLIFY(&x); [line 18]\n " shape="box"] +20 [label="20: BinaryOperatorStmt: Assign \n DECLARE_LOCALS(&__objc_anonymous_block_main1______2); [line 18]\n n$27=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_main1______2 ):unsigned long ) [line 18]\n *&__objc_anonymous_block_main1______2:class __objc_anonymous_block_main1______2 =n$27 [line 18]\n n$28=*&x:int [line 18]\n *n$27.x:int =n$28 [line 18]\n n$11=*&x:int [line 18]\n *&addblock:_fn_ (*)=(_fun___objc_anonymous_block_main1______2,n$11) [line 18]\n REMOVE_TEMPS(n$11,n$27,n$28); [line 18]\n NULLIFY(&__objc_anonymous_block_main1______2); [line 18]\n NULLIFY(&x); [line 18]\n " shape="box"] 20 -> 10 ; @@ -26,7 +26,7 @@ digraph iCFG { 19 -> 18 ; -18 [label="18: BinaryOperatorStmt: Assign \n DECLARE_LOCALS(&__objc_anonymous_block___objc_anonymous_block_main1______2______3); [line 24]\n n$23=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block___objc_anonymous_block_main1______2______3 ):unsigned long ) [line 24]\n *&__objc_anonymous_block___objc_anonymous_block_main1______2______3:class __objc_anonymous_block___objc_anonymous_block_main1______2______3 =n$23 [line 24]\n n$24=*&x:int [line 24]\n n$25=*&bla:int [line 24]\n n$26=*&#GB$main1_s:int [line 24]\n *n$23.x:int =n$24 [line 24]\n *n$23.bla:int =n$25 [line 24]\n *n$23.main1_s:int =n$26 [line 24]\n n$17=*&x:int [line 24]\n n$18=*&bla:int [line 24]\n *&addblock2:_fn_ (*)=(_fun___objc_anonymous_block___objc_anonymous_block_main1______2______3,n$17,n$18) [line 24]\n REMOVE_TEMPS(n$23,n$24,n$25,n$26,n$17,n$18); [line 24]\n NULLIFY(&__objc_anonymous_block___objc_anonymous_block_main1______2______3); [line 24]\n NULLIFY(&x); [line 24]\n " shape="box"] +18 [label="18: BinaryOperatorStmt: Assign \n DECLARE_LOCALS(&__objc_anonymous_block___objc_anonymous_block_main1______2______3); [line 24]\n n$23=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block___objc_anonymous_block_main1______2______3 ):unsigned long ) [line 24]\n *&__objc_anonymous_block___objc_anonymous_block_main1______2______3:class __objc_anonymous_block___objc_anonymous_block_main1______2______3 =n$23 [line 24]\n n$24=*&x:int [line 24]\n n$25=*&bla:int [line 24]\n n$26=*&#GB$main1_s:int [line 24]\n *n$23.x:int =n$24 [line 24]\n *n$23.bla:int =n$25 [line 24]\n *n$23.main1_s:int =n$26 [line 24]\n n$17=*&x:int [line 24]\n n$18=*&bla:int [line 24]\n *&addblock2:_fn_ (*)=(_fun___objc_anonymous_block___objc_anonymous_block_main1______2______3,n$17,n$18) [line 24]\n REMOVE_TEMPS(n$17,n$18,n$23,n$24,n$25,n$26); [line 24]\n NULLIFY(&__objc_anonymous_block___objc_anonymous_block_main1______2______3); [line 24]\n NULLIFY(&x); [line 24]\n " shape="box"] 18 -> 14 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/block/block_no_args.dot b/infer/tests/codetoanalyze/objc/frontend/block/block_no_args.dot index 706869953..0af4f4193 100644 --- a/infer/tests/codetoanalyze/objc/frontend/block/block_no_args.dot +++ b/infer/tests/codetoanalyze/objc/frontend/block/block_no_args.dot @@ -7,7 +7,7 @@ digraph iCFG { 16 -> 15 ; -15 [label="15: BinaryOperatorStmt: Assign \n DECLARE_LOCALS(&__objc_anonymous_block_My_manager_m______1); [line 25]\n n$7=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_My_manager_m______1 ):unsigned long ) [line 25]\n *&__objc_anonymous_block_My_manager_m______1:class __objc_anonymous_block_My_manager_m______1 =n$7 [line 25]\n n$8=*&z:int [line 25]\n n$9=*&#GB$g:int [line 25]\n *n$7.z:int =n$8 [line 25]\n *n$7.g:int =n$9 [line 25]\n n$5=*&z:int [line 25]\n *&b:_fn_ (*)=(_fun___objc_anonymous_block_My_manager_m______1,n$5) [line 25]\n REMOVE_TEMPS(n$7,n$8,n$9,n$5); [line 25]\n NULLIFY(&__objc_anonymous_block_My_manager_m______1); [line 25]\n " shape="box"] +15 [label="15: BinaryOperatorStmt: Assign \n DECLARE_LOCALS(&__objc_anonymous_block_My_manager_m______1); [line 25]\n n$7=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_My_manager_m______1 ):unsigned long ) [line 25]\n *&__objc_anonymous_block_My_manager_m______1:class __objc_anonymous_block_My_manager_m______1 =n$7 [line 25]\n n$8=*&z:int [line 25]\n n$9=*&#GB$g:int [line 25]\n *n$7.z:int =n$8 [line 25]\n *n$7.g:int =n$9 [line 25]\n n$5=*&z:int [line 25]\n *&b:_fn_ (*)=(_fun___objc_anonymous_block_My_manager_m______1,n$5) [line 25]\n REMOVE_TEMPS(n$5,n$7,n$8,n$9); [line 25]\n NULLIFY(&__objc_anonymous_block_My_manager_m______1); [line 25]\n " shape="box"] 15 -> 11 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/block/block_release.dot b/infer/tests/codetoanalyze/objc/frontend/block/block_release.dot index 04279a75d..80d47b867 100644 --- a/infer/tests/codetoanalyze/objc/frontend/block/block_release.dot +++ b/infer/tests/codetoanalyze/objc/frontend/block/block_release.dot @@ -11,7 +11,7 @@ digraph iCFG { 17 -> 16 ; -16 [label="16: BinaryOperatorStmt: Assign \n DECLARE_LOCALS(&__objc_anonymous_block_My_manager_blockReleaseTODO______1); [line 25]\n n$8=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_My_manager_blockReleaseTODO______1 ):unsigned long ) [line 25]\n *&__objc_anonymous_block_My_manager_blockReleaseTODO______1:class __objc_anonymous_block_My_manager_blockReleaseTODO______1 =n$8 [line 25]\n n$9=*&newImage:struct CGImage * [line 25]\n *n$8.newImage:struct CGImage *=n$9 [line 25]\n n$5=*&newImage:struct CGImage * [line 25]\n *&b:_fn_ (*)=(_fun___objc_anonymous_block_My_manager_blockReleaseTODO______1,n$5) [line 25]\n REMOVE_TEMPS(n$8,n$9,n$5); [line 25]\n NULLIFY(&__objc_anonymous_block_My_manager_blockReleaseTODO______1); [line 25]\n NULLIFY(&newImage); [line 25]\n " shape="box"] +16 [label="16: BinaryOperatorStmt: Assign \n DECLARE_LOCALS(&__objc_anonymous_block_My_manager_blockReleaseTODO______1); [line 25]\n n$8=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_My_manager_blockReleaseTODO______1 ):unsigned long ) [line 25]\n *&__objc_anonymous_block_My_manager_blockReleaseTODO______1:class __objc_anonymous_block_My_manager_blockReleaseTODO______1 =n$8 [line 25]\n n$9=*&newImage:struct CGImage * [line 25]\n *n$8.newImage:struct CGImage *=n$9 [line 25]\n n$5=*&newImage:struct CGImage * [line 25]\n *&b:_fn_ (*)=(_fun___objc_anonymous_block_My_manager_blockReleaseTODO______1,n$5) [line 25]\n REMOVE_TEMPS(n$5,n$8,n$9); [line 25]\n NULLIFY(&__objc_anonymous_block_My_manager_blockReleaseTODO______1); [line 25]\n NULLIFY(&newImage); [line 25]\n " shape="box"] 16 -> 8 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/block/retain_cycle.dot b/infer/tests/codetoanalyze/objc/frontend/block/retain_cycle.dot index 94e207abe..189ae5b87 100644 --- a/infer/tests/codetoanalyze/objc/frontend/block/retain_cycle.dot +++ b/infer/tests/codetoanalyze/objc/frontend/block/retain_cycle.dot @@ -37,7 +37,7 @@ digraph iCFG { 10 -> 9 ; -9 [label="9: Message Call: sHandler: \n n$0=*&self:class A * [line 47]\n n$1=*n$0._b:class B * [line 47]\n DECLARE_LOCALS(&__objc_anonymous_block_A_capture______1); [line 47]\n n$5=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_capture______1 ):unsigned long ) [line 47]\n *&__objc_anonymous_block_A_capture______1:class __objc_anonymous_block_A_capture______1 =n$5 [line 47]\n n$6=*&self:class A * [line 47]\n *n$5.self:class A *=n$6 [line 47]\n n$2=*&self:class A * [line 47]\n n$7=*&__objc_anonymous_block_A_capture______1:_fn_ (*) [line 47]\n _fun_B_sHandler:(n$1:class B *,n$7:_fn_ (*),n$2:_fn_ (*)) virtual [line 47]\n REMOVE_TEMPS(n$0,n$1,n$5,n$6,n$2,n$7); [line 47]\n NULLIFY(&__objc_anonymous_block_A_capture______1); [line 47]\n NULLIFY(&self); [line 47]\n APPLY_ABSTRACTION; [line 47]\n " shape="box"] +9 [label="9: Message Call: sHandler: \n n$0=*&self:class A * [line 47]\n n$1=*n$0._b:class B * [line 47]\n DECLARE_LOCALS(&__objc_anonymous_block_A_capture______1); [line 47]\n n$5=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_capture______1 ):unsigned long ) [line 47]\n *&__objc_anonymous_block_A_capture______1:class __objc_anonymous_block_A_capture______1 =n$5 [line 47]\n n$6=*&self:class A * [line 47]\n *n$5.self:class A *=n$6 [line 47]\n n$2=*&self:class A * [line 47]\n n$7=*&__objc_anonymous_block_A_capture______1:_fn_ (*) [line 47]\n _fun_B_sHandler:(n$1:class B *,n$7:_fn_ (*),n$2:_fn_ (*)) virtual [line 47]\n REMOVE_TEMPS(n$0,n$1,n$2,n$5,n$6,n$7); [line 47]\n NULLIFY(&__objc_anonymous_block_A_capture______1); [line 47]\n NULLIFY(&self); [line 47]\n APPLY_ABSTRACTION; [line 47]\n " shape="box"] 9 -> 5 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/fast_enumeration/Fast_enumeration.dot b/infer/tests/codetoanalyze/objc/frontend/fast_enumeration/Fast_enumeration.dot index bc355e19b..56a7c9bba 100644 --- a/infer/tests/codetoanalyze/objc/frontend/fast_enumeration/Fast_enumeration.dot +++ b/infer/tests/codetoanalyze/objc/frontend/fast_enumeration/Fast_enumeration.dot @@ -11,15 +11,15 @@ digraph iCFG { 19 -> 15 ; -18 [label="18: Prune (false branch) \n PRUNE((n$12 == 0), false); [line 28]\n REMOVE_TEMPS(n$10,n$11,n$12); [line 28]\n NULLIFY(&item); [line 28]\n " shape="invhouse"] +18 [label="18: Prune (false branch) \n PRUNE((n$12 == 0), false); [line 28]\n REMOVE_TEMPS(n$12); [line 28]\n NULLIFY(&item); [line 28]\n " shape="invhouse"] 18 -> 14 ; -17 [label="17: Prune (true branch) \n PRUNE((n$12 != 0), true); [line 28]\n REMOVE_TEMPS(n$10,n$11,n$12); [line 28]\n " shape="invhouse"] +17 [label="17: Prune (true branch) \n PRUNE((n$12 != 0), true); [line 28]\n REMOVE_TEMPS(n$12); [line 28]\n " shape="invhouse"] 17 -> 19 ; -16 [label="16: BinaryOperatorStmt: Assign \n n$10=*&items:class NSArray * [line 28]\n n$11=_fun_NSArray_nextObject(n$10:class NSArray *) virtual [line 28]\n *&item:class NSArray *=n$11 [line 28]\n n$12=*&item:class NSArray * [line 28]\n " shape="box"] +16 [label="16: BinaryOperatorStmt: Assign \n n$10=*&items:class NSArray * [line 28]\n n$11=_fun_NSArray_nextObject(n$10:class NSArray *) virtual [line 28]\n *&item:class NSArray *=n$11 [line 28]\n n$12=*&item:class NSArray * [line 28]\n REMOVE_TEMPS(n$10,n$11); [line 28]\n " shape="box"] 16 -> 17 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/protocol/protocol.dot b/infer/tests/codetoanalyze/objc/frontend/protocol/protocol.dot index 2ec7f4af8..c8b1af7c5 100644 --- a/infer/tests/codetoanalyze/objc/frontend/protocol/protocol.dot +++ b/infer/tests/codetoanalyze/objc/frontend/protocol/protocol.dot @@ -3,15 +3,15 @@ digraph iCFG { 8 -> 2 ; -7 [label="7: Prune (false branch) \n PRUNE((n$1 == 0), false); [line 25]\n REMOVE_TEMPS(n$0,n$1); [line 25]\n " shape="invhouse"] +7 [label="7: Prune (false branch) \n PRUNE((n$1 == 0), false); [line 25]\n REMOVE_TEMPS(n$1); [line 25]\n " shape="invhouse"] 7 -> 3 ; -6 [label="6: Prune (true branch) \n PRUNE((n$1 != 0), true); [line 25]\n REMOVE_TEMPS(n$0,n$1); [line 25]\n " shape="invhouse"] +6 [label="6: Prune (true branch) \n PRUNE((n$1 != 0), true); [line 25]\n REMOVE_TEMPS(n$1); [line 25]\n " shape="invhouse"] 6 -> 8 ; -5 [label="5: Message Call: conformsToProtocol: \n n$0=*&self:class Bla * [line 25]\n n$1=_fun_Bla_conformsToProtocol:(n$0:class Bla *,\"Foo\":class Protocol *) virtual [line 25]\n NULLIFY(&self); [line 25]\n " shape="box"] +5 [label="5: Message Call: conformsToProtocol: \n n$0=*&self:class Bla * [line 25]\n n$1=_fun_Bla_conformsToProtocol:(n$0:class Bla *,\"Foo\":class Protocol *) virtual [line 25]\n REMOVE_TEMPS(n$0); [line 25]\n NULLIFY(&self); [line 25]\n " shape="box"] 5 -> 6 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/vardecl/initlist.dot b/infer/tests/codetoanalyze/objc/frontend/vardecl/initlist.dot index 990c1686f..0e705755d 100644 --- a/infer/tests/codetoanalyze/objc/frontend/vardecl/initlist.dot +++ b/infer/tests/codetoanalyze/objc/frontend/vardecl/initlist.dot @@ -7,7 +7,7 @@ digraph iCFG { 7 -> 6 ; -6 [label="6: DeclStmt \n n$2=*&c1:class C * [line 24]\n n$3=_fun_NSObject_init(n$2:class C *) virtual [line 24]\n n$1=*&c1:class C * [line 24]\n n$0=*&c2:class C * [line 24]\n *&a[0]:class C *=n$3 [line 24]\n *&a[1]:class C *=n$1 [line 24]\n *&a[2]:class C *=n$0 [line 24]\n REMOVE_TEMPS(n$2,n$3,n$1,n$0); [line 24]\n NULLIFY(&a); [line 24]\n NULLIFY(&c1); [line 24]\n NULLIFY(&c2); [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +6 [label="6: DeclStmt \n n$2=*&c1:class C * [line 24]\n n$3=_fun_NSObject_init(n$2:class C *) virtual [line 24]\n n$1=*&c1:class C * [line 24]\n n$0=*&c2:class C * [line 24]\n *&a[0]:class C *=n$3 [line 24]\n *&a[1]:class C *=n$1 [line 24]\n *&a[2]:class C *=n$0 [line 24]\n REMOVE_TEMPS(n$0,n$1,n$2,n$3); [line 24]\n NULLIFY(&a); [line 24]\n NULLIFY(&c1); [line 24]\n NULLIFY(&c2); [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] 6 -> 5 ;