diff --git a/infer/src/IR/Cfg.re b/infer/src/IR/Cfg.re index a30ac612e..d906cdf48 100644 --- a/infer/src/IR/Cfg.re +++ b/infer/src/IR/Cfg.re @@ -727,11 +727,15 @@ let module Node = { Sil.Prune (convert_exp origin_exp) loc is_true_branch if_kind, ...instrs ] - | Sil.Nullify origin_pvar loc => [Sil.Nullify (convert_pvar origin_pvar) loc, ...instrs] | Sil.Declare_locals typed_vars loc => { let new_typed_vars = IList.map (fun (pvar, typ) => (convert_pvar pvar, typ)) typed_vars; [Sil.Declare_locals new_typed_vars loc, ...instrs] } + | Sil.Nullify _ + | Abstract _ + | Sil.Remove_temps _ => + /* these are generated instructions that will be replaced by the preanalysis */ + instrs | instr => [instr, ...instrs]; let convert_node_kind = fun diff --git a/infer/src/backend/interproc.ml b/infer/src/backend/interproc.ml index 25ec3254b..62dd790db 100644 --- a/infer/src/backend/interproc.ml +++ b/infer/src/backend/interproc.ml @@ -1429,6 +1429,7 @@ let do_analysis exe_env = let analyze_ondemand proc_desc = let proc_name = Cfg.Procdesc.get_proc_name proc_desc in let tenv = Exe_env.get_tenv exe_env proc_name in + Preanal.doit proc_desc (Exe_env.get_cg exe_env) tenv; let summaryfp = Config.run_in_footprint_mode (analyze_proc exe_env) proc_desc in Specs.add_summary proc_name summaryfp; diff --git a/infer/src/backend/preanal.ml b/infer/src/backend/preanal.ml index 1a0767d9c..1632fe8dc 100644 --- a/infer/src/backend/preanal.ml +++ b/infer/src/backend/preanal.ml @@ -11,25 +11,7 @@ open! Utils (** mutate the cfg/cg to add dynamic dispatch handling *) -let add_dispatch_calls pdesc cg tenv f_translate_typ_opt = - let pname_translate_types pname = - match f_translate_typ_opt with - | Some f_translate_typ -> - (match pname with - | Procname.Java pname_java -> - let param_type_strs = - IList.map Procname.java_type_to_string (Procname.java_get_parameters pname_java) in - let receiver_type_str = Procname.java_get_class_name pname_java in - let return_type_str = Procname.java_get_return_type pname_java in - IList.iter - (fun typ_str -> f_translate_typ tenv typ_str) - (return_type_str :: (receiver_type_str :: param_type_strs)) - | Procname.C _ - | Procname.ObjC_Cpp _ - | Procname.Block _ -> - (* TODO: support this for C/CPP/Obj-C *) - ()) - | None -> () in +let add_dispatch_calls pdesc cg tenv = let node_add_dispatch_calls caller_pname node = (* TODO: handle dynamic dispatch for virtual calls as well *) let call_flags_is_dispatch call_flags = @@ -65,9 +47,7 @@ let add_dispatch_calls pdesc cg tenv f_translate_typ_opt = because choosing all targets is too expensive for everyday use *) [target_pname] in IList.iter - (fun target_pname -> - pname_translate_types target_pname; - Cg.add_edge cg caller_pname target_pname) + (fun target_pname -> Cg.add_edge cg caller_pname target_pname) targets_to_add; let call_flags' = { call_flags with Sil.cf_targets = targets_to_add; } in Sil.Call (ret_ids, call_exp, args, loc, call_flags') @@ -79,7 +59,8 @@ let add_dispatch_calls pdesc cg tenv f_translate_typ_opt = IList.map replace_dispatch_calls instrs |> Cfg.Node.replace_instrs node in let pname = Cfg.Procdesc.get_proc_name pdesc in - Cfg.Procdesc.iter_nodes (node_add_dispatch_calls pname) pdesc + if Procname.is_java pname then + Cfg.Procdesc.iter_nodes (node_add_dispatch_calls pname) pdesc (** add instructions to perform abstraction *) let add_abstraction_instructions pdesc = @@ -237,8 +218,7 @@ let add_nullify_instrs pdesc tenv = let exit_node = ProcCfg.Exceptional.exit_node nullify_proc_cfg in node_add_nullify_instructions exit_node (AddressTaken.Domain.elements address_taken_vars) -let doit ?(f_translate_typ=None) pdesc cg tenv = +let doit pdesc cg tenv = add_nullify_instrs pdesc tenv; - if !Config.curr_language = Config.Java - then add_dispatch_calls pdesc cg tenv f_translate_typ; + add_dispatch_calls pdesc cg tenv; add_abstraction_instructions pdesc; diff --git a/infer/src/backend/preanal.mli b/infer/src/backend/preanal.mli index 0c4856dda..1c8688ad0 100644 --- a/infer/src/backend/preanal.mli +++ b/infer/src/backend/preanal.mli @@ -13,5 +13,4 @@ open! Utils (** Preanalysis for eliminating dead local variables *) (** Perform liveness analysis *) -val doit : ?f_translate_typ:(Tenv.t -> string -> unit) option -> Cfg.Procdesc.t -> Cg.t -> Tenv.t - -> unit +val doit : Cfg.Procdesc.t -> Cg.t -> Tenv.t -> unit diff --git a/infer/src/clang/cFrontend.ml b/infer/src/clang/cFrontend.ml index 5c70a385b..6964d527e 100644 --- a/infer/src/clang/cFrontend.ml +++ b/infer/src/clang/cFrontend.ml @@ -66,7 +66,6 @@ let do_source_file source_file ast = let tenv_file = DB.source_dir_get_internal_file source_dir ".tenv" in let cfg_file = DB.source_dir_get_internal_file source_dir ".cfg" in let cg_file = DB.source_dir_get_internal_file source_dir ".cg" in - Cfg.iter_proc_desc cfg (fun _ pdesc -> Preanal.doit pdesc call_graph tenv); Cg.store_to_file cg_file call_graph; Cfg.store_cfg_to_file cfg_file true cfg; (*Logging.out "Tenv %a@." Sil.pp_tenv tenv;*) diff --git a/infer/src/java/jMain.ml b/infer/src/java/jMain.ml index 0dbc6d70f..0498d006f 100644 --- a/infer/src/java/jMain.ml +++ b/infer/src/java/jMain.ml @@ -42,18 +42,12 @@ let init_global_state source_file = Config.nLOC := nLOC -let store_icfg tenv cg cfg program = - let f_translate_typ tenv typ_str = - let cn = JBasics.make_cn typ_str in - ignore (JTransType.get_class_type program tenv cn) in +let store_icfg tenv cg cfg = let source_dir = DB.source_dir_from_source_file !DB.current_source in begin let cfg_file = DB.source_dir_get_internal_file source_dir ".cfg" in let cg_file = DB.source_dir_get_internal_file source_dir ".cg" in if Config.create_harness then Harness.create_harness cfg cg tenv; - Cfg.iter_proc_desc - cfg - (fun _ pdesc -> Preanal.doit ~f_translate_typ:(Some f_translate_typ) pdesc cg tenv); Cg.store_to_file cg_file cg; Cfg.store_cfg_to_file cfg_file true cfg; if Config.debug_mode then @@ -75,7 +69,7 @@ let do_source_file JFrontend.compute_source_icfg linereader classes program tenv source_basename package_opt in - store_icfg tenv call_graph cfg program + store_icfg tenv call_graph cfg let capture_libs linereader program tenv = @@ -90,7 +84,7 @@ let capture_libs linereader program tenv = init_global_state fake_source_file; let call_graph, cfg = JFrontend.compute_class_icfg linereader program tenv node in - store_icfg tenv call_graph cfg program; + store_icfg tenv call_graph cfg; JFrontend.cache_classname cn; end in JBasics.ClassMap.iter (capture_class tenv) (JClasspath.get_classmap program) diff --git a/infer/src/llvm/lMain.ml b/infer/src/llvm/lMain.ml index 4f0772582..c0c6101da 100644 --- a/infer/src/llvm/lMain.ml +++ b/infer/src/llvm/lMain.ml @@ -30,12 +30,11 @@ let init_global_state source_filename = Ident.NameGenerator.reset (); Config.nLOC := FileLOC.file_get_loc source_filename -let store_icfg tenv cg cfg = +let store_icfg cg cfg = let source_dir = DB.source_dir_from_source_file !DB.current_source in let get_internal_file = DB.source_dir_get_internal_file source_dir in let cg_file = get_internal_file ".cg" in let cfg_file = get_internal_file ".cfg" in - Cfg.iter_proc_desc cfg (fun _ pdesc -> Preanal.doit pdesc cg tenv); Cg.store_to_file cg_file cg; Cfg.store_cfg_to_file cfg_file true cfg; if Config.debug_mode then @@ -57,5 +56,5 @@ let () = let lexbuf = Lexing.from_channel stdin in let prog = LParser.program LLexer.token lexbuf in let (cfg, cg, tenv) = LTrans.trans_program prog in - store_icfg tenv cg cfg; + store_icfg cg cfg; store_tenv tenv diff --git a/infer/tests/codetoanalyze/c/frontend/arithmetic/compound_assignment.c.dot b/infer/tests/codetoanalyze/c/frontend/arithmetic/compound_assignment.c.dot index dbcd75a2a..9c9dff8bf 100644 --- a/infer/tests/codetoanalyze/c/frontend/arithmetic/compound_assignment.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/arithmetic/compound_assignment.c.dot @@ -4,19 +4,19 @@ digraph iCFG { 15 -> 14 ; -14 [label="14: BinaryOperatorStmt: AddAssign \n n$9=*&x:double [line 12]\n *&x:double =(n$9 + 1.000000) [line 12]\n REMOVE_TEMPS(n$9); [line 12]\n " shape="box"] +14 [label="14: BinaryOperatorStmt: AddAssign \n n$9=*&x:double [line 12]\n *&x:double =(n$9 + 1.000000) [line 12]\n " shape="box"] 14 -> 13 ; -13 [label="13: BinaryOperatorStmt: SubAssign \n n$8=*&x:double [line 13]\n *&x:double =(n$8 - 1.000000) [line 13]\n REMOVE_TEMPS(n$8); [line 13]\n " shape="box"] +13 [label="13: BinaryOperatorStmt: SubAssign \n n$8=*&x:double [line 13]\n *&x:double =(n$8 - 1.000000) [line 13]\n " shape="box"] 13 -> 12 ; -12 [label="12: BinaryOperatorStmt: DivAssign \n n$7=*&x:double [line 14]\n *&x:double =(n$7 / 1.000000) [line 14]\n REMOVE_TEMPS(n$7); [line 14]\n " shape="box"] +12 [label="12: BinaryOperatorStmt: DivAssign \n n$7=*&x:double [line 14]\n *&x:double =(n$7 / 1.000000) [line 14]\n " shape="box"] 12 -> 11 ; -11 [label="11: BinaryOperatorStmt: MulAssign \n n$6=*&x:double [line 15]\n *&x:double =(n$6 * 1.000000) [line 15]\n REMOVE_TEMPS(n$6); [line 15]\n NULLIFY(&x); [line 15]\n " shape="box"] +11 [label="11: BinaryOperatorStmt: MulAssign \n n$6=*&x:double [line 15]\n *&x:double =(n$6 * 1.000000) [line 15]\n " shape="box"] 11 -> 10 ; @@ -24,31 +24,31 @@ digraph iCFG { 10 -> 9 ; -9 [label="9: BinaryOperatorStmt: ShlAssign \n n$5=*&b:int [line 17]\n *&b:int =(n$5 << 1) [line 17]\n REMOVE_TEMPS(n$5); [line 17]\n " shape="box"] +9 [label="9: BinaryOperatorStmt: ShlAssign \n n$5=*&b:int [line 17]\n *&b:int =(n$5 << 1) [line 17]\n " shape="box"] 9 -> 8 ; -8 [label="8: BinaryOperatorStmt: ShrAssign \n n$4=*&b:int [line 18]\n *&b:int =(n$4 >> 1) [line 18]\n REMOVE_TEMPS(n$4); [line 18]\n " shape="box"] +8 [label="8: BinaryOperatorStmt: ShrAssign \n n$4=*&b:int [line 18]\n *&b:int =(n$4 >> 1) [line 18]\n " shape="box"] 8 -> 7 ; -7 [label="7: BinaryOperatorStmt: RemAssing \n n$3=*&b:int [line 19]\n *&b:int =(n$3 % 1) [line 19]\n REMOVE_TEMPS(n$3); [line 19]\n " shape="box"] +7 [label="7: BinaryOperatorStmt: RemAssing \n n$3=*&b:int [line 19]\n *&b:int =(n$3 % 1) [line 19]\n " shape="box"] 7 -> 6 ; -6 [label="6: BinaryOperatorStmt: AndAssign \n n$2=*&b:int [line 20]\n *&b:int =(n$2 & 1) [line 20]\n REMOVE_TEMPS(n$2); [line 20]\n " shape="box"] +6 [label="6: BinaryOperatorStmt: AndAssign \n n$2=*&b:int [line 20]\n *&b:int =(n$2 & 1) [line 20]\n " shape="box"] 6 -> 5 ; -5 [label="5: BinaryOperatorStmt: OrAssign \n n$1=*&b:int [line 21]\n *&b:int =(n$1 | 1) [line 21]\n REMOVE_TEMPS(n$1); [line 21]\n " shape="box"] +5 [label="5: BinaryOperatorStmt: OrAssign \n n$1=*&b:int [line 21]\n *&b:int =(n$1 | 1) [line 21]\n " shape="box"] 5 -> 4 ; -4 [label="4: BinaryOperatorStmt: XorAssign \n n$0=*&b:int [line 22]\n *&b:int =(n$0 ^ 1) [line 22]\n REMOVE_TEMPS(n$0); [line 22]\n NULLIFY(&b); [line 22]\n " shape="box"] +4 [label="4: BinaryOperatorStmt: XorAssign \n n$0=*&b:int [line 22]\n *&b:int =(n$0 ^ 1) [line 22]\n " shape="box"] 4 -> 3 ; -3 [label="3: Return Stmt \n *&return:int =0 [line 23]\n APPLY_ABSTRACTION; [line 23]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =0 [line 23]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/arithmetic/int_const.c.dot b/infer/tests/codetoanalyze/c/frontend/arithmetic/int_const.c.dot index 47e993faa..fdeedc6c8 100644 --- a/infer/tests/codetoanalyze/c/frontend/arithmetic/int_const.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/arithmetic/int_const.c.dot @@ -4,15 +4,15 @@ digraph iCFG { 6 -> 5 ; -5 [label="5: DeclStmt \n *&large_int:int =9223372036854775807 [line 19]\n NULLIFY(&large_int); [line 19]\n " shape="box"] +5 [label="5: DeclStmt \n *&large_int:int =9223372036854775807 [line 19]\n " shape="box"] 5 -> 4 ; -4 [label="4: DeclStmt \n *&overflow_int:int =n$0 [line 20]\n REMOVE_TEMPS(n$0); [line 20]\n NULLIFY(&overflow_int); [line 20]\n " shape="box"] +4 [label="4: DeclStmt \n *&overflow_int:int =n$0 [line 20]\n " shape="box"] 4 -> 3 ; -3 [label="3: Return Stmt \n *&return:int =0 [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =0 [line 22]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/arithmetic/plus_expr.c.dot b/infer/tests/codetoanalyze/c/frontend/arithmetic/plus_expr.c.dot index 80c69b35c..4bacfe355 100644 --- a/infer/tests/codetoanalyze/c/frontend/arithmetic/plus_expr.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/arithmetic/plus_expr.c.dot @@ -8,7 +8,7 @@ digraph iCFG { 4 -> 3 ; -3 [label="3: Return Stmt \n n$0=*&x:int [line 13]\n n$1=*&z:int [line 13]\n *&return:int =(n$0 + n$1) [line 13]\n REMOVE_TEMPS(n$0,n$1); [line 13]\n NULLIFY(&x); [line 13]\n NULLIFY(&z); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&x:int [line 13]\n n$1=*&z:int [line 13]\n *&return:int =(n$0 + n$1) [line 13]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/arithmetic/unary.c.dot b/infer/tests/codetoanalyze/c/frontend/arithmetic/unary.c.dot index 639b0c5f4..49694f941 100644 --- a/infer/tests/codetoanalyze/c/frontend/arithmetic/unary.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/arithmetic/unary.c.dot @@ -4,31 +4,31 @@ digraph iCFG { 15 -> 14 ; -14 [label="14: BinaryOperatorStmt: Assign \n n$12=*&x:int [line 14]\n *&y:int =~n$12 [line 14]\n REMOVE_TEMPS(n$12); [line 14]\n NULLIFY(&y); [line 14]\n " shape="box"] +14 [label="14: BinaryOperatorStmt: Assign \n n$12=*&x:int [line 14]\n *&y:int =~n$12 [line 14]\n " shape="box"] 14 -> 13 ; -13 [label="13: BinaryOperatorStmt: Assign \n n$11=*&x:int [line 15]\n *&y:int =-n$11 [line 15]\n REMOVE_TEMPS(n$11); [line 15]\n NULLIFY(&y); [line 15]\n " shape="box"] +13 [label="13: BinaryOperatorStmt: Assign \n n$11=*&x:int [line 15]\n *&y:int =-n$11 [line 15]\n " shape="box"] 13 -> 12 ; -12 [label="12: BinaryOperatorStmt: Assign \n n$10=*&x:int [line 16]\n *&y:int =n$10 [line 16]\n REMOVE_TEMPS(n$10); [line 16]\n NULLIFY(&y); [line 16]\n " shape="box"] +12 [label="12: BinaryOperatorStmt: Assign \n n$10=*&x:int [line 16]\n *&y:int =n$10 [line 16]\n " shape="box"] 12 -> 11 ; -11 [label="11: BinaryOperatorStmt: Assign \n n$9=*&x:int [line 18]\n *&x:int =(n$9 + 1) [line 18]\n *&y:int =n$9 [line 18]\n REMOVE_TEMPS(n$9); [line 18]\n NULLIFY(&y); [line 18]\n " shape="box"] +11 [label="11: BinaryOperatorStmt: Assign \n n$9=*&x:int [line 18]\n *&x:int =(n$9 + 1) [line 18]\n *&y:int =n$9 [line 18]\n " shape="box"] 11 -> 10 ; -10 [label="10: BinaryOperatorStmt: Assign \n n$8=*&x:int [line 19]\n *&x:int =(n$8 + 1) [line 19]\n *&y:int =(n$8 + 1) [line 19]\n REMOVE_TEMPS(n$8); [line 19]\n NULLIFY(&y); [line 19]\n " shape="box"] +10 [label="10: BinaryOperatorStmt: Assign \n n$8=*&x:int [line 19]\n *&x:int =(n$8 + 1) [line 19]\n *&y:int =(n$8 + 1) [line 19]\n " shape="box"] 10 -> 9 ; -9 [label="9: BinaryOperatorStmt: Assign \n n$7=*&x:int [line 21]\n *&x:int =(n$7 - 1) [line 21]\n *&y:int =(n$7 - 1) [line 21]\n REMOVE_TEMPS(n$7); [line 21]\n NULLIFY(&y); [line 21]\n " shape="box"] +9 [label="9: BinaryOperatorStmt: Assign \n n$7=*&x:int [line 21]\n *&x:int =(n$7 - 1) [line 21]\n *&y:int =(n$7 - 1) [line 21]\n " shape="box"] 9 -> 8 ; -8 [label="8: BinaryOperatorStmt: Assign \n n$6=*&x:int [line 22]\n *&x:int =(n$6 - 1) [line 22]\n *&y:int =n$6 [line 22]\n REMOVE_TEMPS(n$6); [line 22]\n NULLIFY(&x); [line 22]\n NULLIFY(&y); [line 22]\n " shape="box"] +8 [label="8: BinaryOperatorStmt: Assign \n n$6=*&x:int [line 22]\n *&x:int =(n$6 - 1) [line 22]\n *&y:int =n$6 [line 22]\n " shape="box"] 8 -> 7 ; @@ -36,23 +36,23 @@ digraph iCFG { 7 -> 6 ; -6 [label="6: BinaryOperatorStmt: Assign \n n$4=*&b:int * [line 28]\n n$5=*(n$4 + 1):int [line 28]\n *&a:int =n$5 [line 28]\n REMOVE_TEMPS(n$4,n$5); [line 28]\n " shape="box"] +6 [label="6: BinaryOperatorStmt: Assign \n n$4=*&b:int * [line 28]\n n$5=*(n$4 + 1):int [line 28]\n *&a:int =n$5 [line 28]\n " shape="box"] 6 -> 5 ; -5 [label="5: BinaryOperatorStmt: Assign \n n$1=*&b:int * [line 29]\n n$2=*&b:int * [line 29]\n n$3=*n$2:int [line 29]\n *n$1:int =(n$3 + 1) [line 29]\n REMOVE_TEMPS(n$1,n$2,n$3); [line 29]\n NULLIFY(&b); [line 29]\n " shape="box"] +5 [label="5: BinaryOperatorStmt: Assign \n n$1=*&b:int * [line 29]\n n$2=*&b:int * [line 29]\n n$3=*n$2:int [line 29]\n *n$1:int =(n$3 + 1) [line 29]\n " shape="box"] 5 -> 4 ; -4 [label="4: BinaryOperatorStmt: Assign \n n$0=*&a:int [line 30]\n *&a:int =n$0 [line 30]\n REMOVE_TEMPS(n$0); [line 30]\n " shape="box"] +4 [label="4: BinaryOperatorStmt: Assign \n n$0=*&a:int [line 30]\n *&a:int =n$0 [line 30]\n " shape="box"] 4 -> 3 ; -3 [label="3: Return Stmt \n *&return:int =0 [line 32]\n APPLY_ABSTRACTION; [line 32]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =0 [line 32]\n " shape="box"] 3 -> 2 ; -2 [label="2: Exit main \n NULLIFY(&a); [line 33]\n " color=yellow style=filled] +2 [label="2: Exit main \n " color=yellow style=filled] 1 [label="1: Start main\nFormals: \nLocals: b:int * a:int y:int x:int \n DECLARE_LOCALS(&return,&b,&a,&y,&x); [line 10]\n " color=yellow style=filled] diff --git a/infer/tests/codetoanalyze/c/frontend/booleans/bool_example.c.dot b/infer/tests/codetoanalyze/c/frontend/booleans/bool_example.c.dot index cbdb49d64..1d88a05dc 100644 --- a/infer/tests/codetoanalyze/c/frontend/booleans/bool_example.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/booleans/bool_example.c.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -3 [label="3: Return Stmt \n n$0=*&e:_Bool [line 12]\n *&return:_Bool =n$0 [line 12]\n REMOVE_TEMPS(n$0); [line 12]\n NULLIFY(&e); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&e:_Bool [line 12]\n *&return:_Bool =n$0 [line 12]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/booleans/condition_as_param.c.dot b/infer/tests/codetoanalyze/c/frontend/booleans/condition_as_param.c.dot index 38b1d836c..5dfd96e33 100644 --- a/infer/tests/codetoanalyze/c/frontend/booleans/condition_as_param.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/booleans/condition_as_param.c.dot @@ -4,7 +4,7 @@ digraph iCFG { 6 -> 5 ; -5 [label="5: Call _fun_check \n n$0=*&x:int [line 14]\n _fun_check((n$0 < 2):int ) [line 14]\n REMOVE_TEMPS(n$0); [line 14]\n NULLIFY(&x); [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +5 [label="5: Call _fun_check \n n$0=*&x:int [line 14]\n _fun_check((n$0 < 2):int ) [line 14]\n " shape="box"] 5 -> 4 ; diff --git a/infer/tests/codetoanalyze/c/frontend/c_prototype/prototype.c.dot b/infer/tests/codetoanalyze/c/frontend/c_prototype/prototype.c.dot index 91600d518..6f7f7d87d 100644 --- a/infer/tests/codetoanalyze/c/frontend/c_prototype/prototype.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/c_prototype/prototype.c.dot @@ -1,10 +1,10 @@ /* @generated */ digraph iCFG { -7 [label="7: BinaryOperatorStmt: Assign \n n$0=_fun_sum(2:int ,3:int ) [line 20]\n *&total:int =n$0 [line 20]\n REMOVE_TEMPS(n$0); [line 20]\n NULLIFY(&total); [line 20]\n " shape="box"] +7 [label="7: BinaryOperatorStmt: Assign \n n$0=_fun_sum(2:int ,3:int ) [line 20]\n *&total:int =n$0 [line 20]\n " shape="box"] 7 -> 3 ; -6 [label="6: Return Stmt \n n$0=*&a:int [line 25]\n n$1=*&b:int [line 25]\n *&return:int =(n$0 + n$1) [line 25]\n REMOVE_TEMPS(n$0,n$1); [line 25]\n NULLIFY(&a); [line 25]\n NULLIFY(&b); [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="box"] +6 [label="6: Return Stmt \n n$0=*&a:int [line 25]\n n$1=*&b:int [line 25]\n *&return:int =(n$0 + n$1) [line 25]\n " shape="box"] 6 -> 5 ; @@ -15,7 +15,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: Return Stmt \n *&return:int =0 [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =0 [line 22]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/comma/comma.c.dot b/infer/tests/codetoanalyze/c/frontend/comma/comma.c.dot index c44389ed0..5a35d53bb 100644 --- a/infer/tests/codetoanalyze/c/frontend/comma/comma.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/comma/comma.c.dot @@ -4,19 +4,19 @@ digraph iCFG { 19 -> 18 ; -18 [label="18: DeclStmt \n *&b:int =7 [line 23]\n NULLIFY(&b); [line 23]\n " shape="box"] +18 [label="18: DeclStmt \n *&b:int =7 [line 23]\n " shape="box"] 18 -> 17 ; -17 [label="17: DeclStmt \n *&c:int =3 [line 23]\n NULLIFY(&c); [line 23]\n " shape="box"] +17 [label="17: DeclStmt \n *&c:int =3 [line 23]\n " shape="box"] 17 -> 16 ; -16 [label="16: DeclStmt \n n$1=*&a:int [line 24]\n *&a:int =(n$1 * 2) [line 24]\n n$2=*&a:int [line 24]\n n$3=*&a:int [line 24]\n *&a:int =(n$3 + 1) [line 24]\n *&b:int =(7 * n$3) [line 24]\n n$4=*&b:int [line 24]\n n$5=*&a:int [line 24]\n n$6=*&b:int [line 24]\n *&c:int =((n$5 + n$6) + 9) [line 24]\n n$7=*&c:int [line 24]\n n$8=*&c:int [line 24]\n *&d:int =n$8 [line 24]\n REMOVE_TEMPS(n$1,n$2,n$3,n$4,n$5,n$6,n$7,n$8); [line 24]\n NULLIFY(&a); [line 24]\n NULLIFY(&b); [line 24]\n NULLIFY(&c); [line 24]\n " shape="box"] +16 [label="16: DeclStmt \n n$1=*&a:int [line 24]\n *&a:int =(n$1 * 2) [line 24]\n n$2=*&a:int [line 24]\n n$3=*&a:int [line 24]\n *&a:int =(n$3 + 1) [line 24]\n *&b:int =(7 * n$3) [line 24]\n n$4=*&b:int [line 24]\n n$5=*&a:int [line 24]\n n$6=*&b:int [line 24]\n *&c:int =((n$5 + n$6) + 9) [line 24]\n n$7=*&c:int [line 24]\n n$8=*&c:int [line 24]\n *&d:int =n$8 [line 24]\n " shape="box"] 16 -> 15 ; -15 [label="15: Return Stmt \n n$0=*&d:int [line 25]\n *&return:int =n$0 [line 25]\n REMOVE_TEMPS(n$0); [line 25]\n NULLIFY(&d); [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="box"] +15 [label="15: Return Stmt \n n$0=*&d:int [line 25]\n *&return:int =n$0 [line 25]\n " shape="box"] 15 -> 14 ; @@ -31,15 +31,15 @@ digraph iCFG { 12 -> 11 ; -11 [label="11: DeclStmt \n *&b:int =7 [line 17]\n NULLIFY(&b); [line 17]\n " shape="box"] +11 [label="11: DeclStmt \n *&b:int =7 [line 17]\n " shape="box"] 11 -> 10 ; -10 [label="10: DeclStmt \n n$1=*&a:int [line 18]\n *&a:int =(n$1 * 2) [line 18]\n n$2=*&a:int [line 18]\n n$3=*&a:int [line 18]\n *&a:int =(n$3 + 1) [line 18]\n *&b:int =(7 * n$3) [line 18]\n n$4=*&b:int [line 18]\n n$5=*&a:int [line 18]\n n$6=*&b:int [line 18]\n *&d:int =((n$5 + n$6) + 9) [line 18]\n REMOVE_TEMPS(n$1,n$2,n$3,n$4,n$5,n$6); [line 18]\n NULLIFY(&a); [line 18]\n NULLIFY(&b); [line 18]\n " shape="box"] +10 [label="10: DeclStmt \n n$1=*&a:int [line 18]\n *&a:int =(n$1 * 2) [line 18]\n n$2=*&a:int [line 18]\n n$3=*&a:int [line 18]\n *&a:int =(n$3 + 1) [line 18]\n *&b:int =(7 * n$3) [line 18]\n n$4=*&b:int [line 18]\n n$5=*&a:int [line 18]\n n$6=*&b:int [line 18]\n *&d:int =((n$5 + n$6) + 9) [line 18]\n " shape="box"] 10 -> 9 ; -9 [label="9: Return Stmt \n n$0=*&d:int [line 19]\n *&return:int =n$0 [line 19]\n REMOVE_TEMPS(n$0); [line 19]\n NULLIFY(&d); [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +9 [label="9: Return Stmt \n n$0=*&d:int [line 19]\n *&return:int =n$0 [line 19]\n " shape="box"] 9 -> 8 ; @@ -54,15 +54,15 @@ digraph iCFG { 6 -> 5 ; -5 [label="5: DeclStmt \n *&b:int =7 [line 11]\n NULLIFY(&b); [line 11]\n " shape="box"] +5 [label="5: DeclStmt \n *&b:int =7 [line 11]\n " shape="box"] 5 -> 4 ; -4 [label="4: DeclStmt \n n$1=*&a:int [line 12]\n *&a:int =(n$1 * 2) [line 12]\n n$2=*&a:int [line 12]\n n$3=*&a:int [line 12]\n *&a:int =(n$3 + 1) [line 12]\n *&b:int =(7 * n$3) [line 12]\n n$4=*&b:int [line 12]\n *&d:int =n$4 [line 12]\n REMOVE_TEMPS(n$1,n$2,n$3,n$4); [line 12]\n NULLIFY(&a); [line 12]\n NULLIFY(&b); [line 12]\n " shape="box"] +4 [label="4: DeclStmt \n n$1=*&a:int [line 12]\n *&a:int =(n$1 * 2) [line 12]\n n$2=*&a:int [line 12]\n n$3=*&a:int [line 12]\n *&a:int =(n$3 + 1) [line 12]\n *&b:int =(7 * n$3) [line 12]\n n$4=*&b:int [line 12]\n *&d:int =n$4 [line 12]\n " shape="box"] 4 -> 3 ; -3 [label="3: Return Stmt \n n$0=*&d:int [line 13]\n *&return:int =n$0 [line 13]\n REMOVE_TEMPS(n$0); [line 13]\n NULLIFY(&d); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&d:int [line 13]\n *&return:int =n$0 [line 13]\n " shape="box"] 3 -> 2 ; 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 267775d3d..eed19c4e6 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 @@ -1,10 +1,10 @@ /* @generated */ digraph iCFG { -19 [label="19: Prune (false branch) \n n$14=*&p:int ** [line 11]\n n$15=*n$14[0]:int * [line 11]\n PRUNE((n$15 == 0), false); [line 11]\n REMOVE_TEMPS(n$14,n$15); [line 11]\n APPLY_ABSTRACTION; [line 11]\n " shape="invhouse"] +19 [label="19: Prune (false branch) \n n$14=*&p:int ** [line 11]\n n$15=*n$14[0]:int * [line 11]\n PRUNE((n$15 == 0), false); [line 11]\n " shape="invhouse"] 19 -> 17 ; -18 [label="18: Prune (true branch) \n n$14=*&p:int ** [line 11]\n n$15=*n$14[0]:int * [line 11]\n PRUNE((n$15 != 0), true); [line 11]\n REMOVE_TEMPS(n$14,n$15); [line 11]\n APPLY_ABSTRACTION; [line 11]\n " shape="invhouse"] +18 [label="18: Prune (true branch) \n n$14=*&p:int ** [line 11]\n n$15=*n$14[0]:int * [line 11]\n PRUNE((n$15 != 0), true); [line 11]\n " shape="invhouse"] 18 -> 17 ; @@ -12,11 +12,11 @@ digraph iCFG { 17 -> 14 ; -16 [label="16: Prune (false branch) \n n$12=*n$11:int * [line 13]\n n$13=*n$12[1]:int [line 13]\n PRUNE((n$13 == 0), false); [line 13]\n REMOVE_TEMPS(n$11,n$12,n$13); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="invhouse"] +16 [label="16: Prune (false branch) \n n$12=*n$11:int * [line 13]\n n$13=*n$12[1]:int [line 13]\n PRUNE((n$13 == 0), false); [line 13]\n " shape="invhouse"] 16 -> 13 ; -15 [label="15: Prune (true branch) \n n$12=*n$11:int * [line 13]\n n$13=*n$12[1]:int [line 13]\n PRUNE((n$13 != 0), true); [line 13]\n REMOVE_TEMPS(n$11,n$12,n$13); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="invhouse"] +15 [label="15: Prune (true branch) \n n$12=*n$11:int * [line 13]\n n$13=*n$12[1]:int [line 13]\n PRUNE((n$13 != 0), true); [line 13]\n " shape="invhouse"] 15 -> 13 ; @@ -29,15 +29,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$6,n$8,n$9,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 " 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$6,n$8,n$9,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 " shape="invhouse"] 11 -> 9 ; -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 [label="10: UnaryOperator \n n$7=*&p:int ** [line 15]\n n$8=*n$7:int * [line 15]\n " shape="box"] 10 -> 11 ; @@ -46,15 +46,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$0,n$1,n$3,n$4,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 " 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$0,n$1,n$3,n$4,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 " shape="invhouse"] 7 -> 3 ; -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 [label="6: UnaryOperator \n n$2=*&p:int ** [line 17]\n n$3=*n$2:int * [line 17]\n " shape="box"] 6 -> 7 ; @@ -63,7 +63,7 @@ digraph iCFG { 5 -> 6 ; -4 [label="4: between_join_and_exit \n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +4 [label="4: between_join_and_exit \n " shape="box"] 4 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/conditional_operator/binary_operator.c.dot b/infer/tests/codetoanalyze/c/frontend/conditional_operator/binary_operator.c.dot index 366c1393e..d7cfe1e36 100644 --- a/infer/tests/codetoanalyze/c/frontend/conditional_operator/binary_operator.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/conditional_operator/binary_operator.c.dot @@ -1,15 +1,15 @@ /* @generated */ digraph iCFG { -48 [label="48: BinaryOperatorStmt: Assign \n n$31=*&SIL_temp_conditional___n$28:int [line 13]\n *&x1:int =(n$31 + 77) [line 13]\n REMOVE_TEMPS(n$31); [line 13]\n NULLIFY(&SIL_temp_conditional___n$28); [line 13]\n NULLIFY(&x1); [line 13]\n " shape="box"] +48 [label="48: BinaryOperatorStmt: Assign \n n$31=*&SIL_temp_conditional___n$28:int [line 13]\n *&x1:int =(n$31 + 77) [line 13]\n " shape="box"] 48 -> 38 ; 48 -> 39 ; -47 [label="47: ConditinalStmt Branch \n n$30=*&z:int [line 13]\n *&SIL_temp_conditional___n$28:int =n$30 [line 13]\n REMOVE_TEMPS(n$30); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="box"] +47 [label="47: ConditinalStmt Branch \n n$30=*&z:int [line 13]\n *&SIL_temp_conditional___n$28:int =n$30 [line 13]\n " shape="box"] 47 -> 43 ; -46 [label="46: ConditinalStmt Branch \n n$29=*&z:int [line 13]\n *&SIL_temp_conditional___n$28:int =n$29 [line 13]\n REMOVE_TEMPS(n$29); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="box"] +46 [label="46: ConditinalStmt Branch \n n$29=*&z:int [line 13]\n *&SIL_temp_conditional___n$28:int =n$29 [line 13]\n " shape="box"] 46 -> 43 ; @@ -25,16 +25,16 @@ digraph iCFG { 43 -> 48 ; -42 [label="42: BinaryOperatorStmt: Assign \n n$27=*&SIL_temp_conditional___n$24:int [line 16]\n *&x2:int =(77 + n$27) [line 16]\n REMOVE_TEMPS(n$27); [line 16]\n NULLIFY(&SIL_temp_conditional___n$24); [line 16]\n NULLIFY(&x2); [line 16]\n " shape="box"] +42 [label="42: BinaryOperatorStmt: Assign \n n$27=*&SIL_temp_conditional___n$24:int [line 16]\n *&x2:int =(77 + n$27) [line 16]\n " shape="box"] 42 -> 27 ; 42 -> 28 ; -41 [label="41: ConditinalStmt Branch \n n$26=*&z:int [line 16]\n *&SIL_temp_conditional___n$24:int =n$26 [line 16]\n REMOVE_TEMPS(n$26); [line 16]\n APPLY_ABSTRACTION; [line 16]\n " shape="box"] +41 [label="41: ConditinalStmt Branch \n n$26=*&z:int [line 16]\n *&SIL_temp_conditional___n$24:int =n$26 [line 16]\n " shape="box"] 41 -> 37 ; -40 [label="40: ConditinalStmt Branch \n n$25=*&z:int [line 16]\n *&SIL_temp_conditional___n$24:int =n$25 [line 16]\n REMOVE_TEMPS(n$25); [line 16]\n APPLY_ABSTRACTION; [line 16]\n " shape="box"] +40 [label="40: ConditinalStmt Branch \n n$25=*&z:int [line 16]\n *&SIL_temp_conditional___n$24:int =n$25 [line 16]\n " shape="box"] 40 -> 37 ; @@ -50,16 +50,16 @@ digraph iCFG { 37 -> 42 ; -36 [label="36: BinaryOperatorStmt: Assign \n n$19=*&SIL_temp_conditional___n$16:int [line 19]\n n$23=*&SIL_temp_conditional___n$20:int [line 19]\n *&x3:int =(n$19 + n$23) [line 19]\n REMOVE_TEMPS(n$19,n$23); [line 19]\n NULLIFY(&SIL_temp_conditional___n$16); [line 19]\n NULLIFY(&SIL_temp_conditional___n$20); [line 19]\n NULLIFY(&x3); [line 19]\n " shape="box"] +36 [label="36: BinaryOperatorStmt: Assign \n n$19=*&SIL_temp_conditional___n$16:int [line 19]\n n$23=*&SIL_temp_conditional___n$20:int [line 19]\n *&x3:int =(n$19 + n$23) [line 19]\n " shape="box"] 36 -> 21 ; 36 -> 22 ; -35 [label="35: ConditinalStmt Branch \n n$22=*&z:int [line 19]\n *&SIL_temp_conditional___n$20:int =n$22 [line 19]\n REMOVE_TEMPS(n$22); [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +35 [label="35: ConditinalStmt Branch \n n$22=*&z:int [line 19]\n *&SIL_temp_conditional___n$20:int =n$22 [line 19]\n " shape="box"] 35 -> 31 ; -34 [label="34: ConditinalStmt Branch \n n$21=*&z:int [line 19]\n *&SIL_temp_conditional___n$20:int =n$21 [line 19]\n REMOVE_TEMPS(n$21); [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +34 [label="34: ConditinalStmt Branch \n n$21=*&z:int [line 19]\n *&SIL_temp_conditional___n$20:int =n$21 [line 19]\n " shape="box"] 34 -> 31 ; @@ -75,11 +75,11 @@ digraph iCFG { 31 -> 36 ; -30 [label="30: ConditinalStmt Branch \n n$18=*&z:int [line 19]\n *&SIL_temp_conditional___n$16:int =n$18 [line 19]\n REMOVE_TEMPS(n$18); [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +30 [label="30: ConditinalStmt Branch \n n$18=*&z:int [line 19]\n *&SIL_temp_conditional___n$16:int =n$18 [line 19]\n " shape="box"] 30 -> 26 ; -29 [label="29: ConditinalStmt Branch \n n$17=*&z:int [line 19]\n *&SIL_temp_conditional___n$16:int =n$17 [line 19]\n REMOVE_TEMPS(n$17); [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +29 [label="29: ConditinalStmt Branch \n n$17=*&z:int [line 19]\n *&SIL_temp_conditional___n$16:int =n$17 [line 19]\n " shape="box"] 29 -> 26 ; @@ -96,16 +96,16 @@ digraph iCFG { 26 -> 32 ; 26 -> 33 ; -25 [label="25: DeclStmt \n n$15=*&SIL_temp_conditional___n$12:int [line 22]\n *&y1:int =(n$15 + 77) [line 22]\n REMOVE_TEMPS(n$15); [line 22]\n NULLIFY(&SIL_temp_conditional___n$12); [line 22]\n NULLIFY(&y1); [line 22]\n " shape="box"] +25 [label="25: DeclStmt \n n$15=*&SIL_temp_conditional___n$12:int [line 22]\n *&y1:int =(n$15 + 77) [line 22]\n " shape="box"] 25 -> 15 ; 25 -> 16 ; -24 [label="24: ConditinalStmt Branch \n n$14=*&z:int [line 22]\n *&SIL_temp_conditional___n$12:int =n$14 [line 22]\n REMOVE_TEMPS(n$14); [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"] +24 [label="24: ConditinalStmt Branch \n n$14=*&z:int [line 22]\n *&SIL_temp_conditional___n$12:int =n$14 [line 22]\n " shape="box"] 24 -> 20 ; -23 [label="23: ConditinalStmt Branch \n n$13=*&z:int [line 22]\n *&SIL_temp_conditional___n$12:int =n$13 [line 22]\n REMOVE_TEMPS(n$13); [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"] +23 [label="23: ConditinalStmt Branch \n n$13=*&z:int [line 22]\n *&SIL_temp_conditional___n$12:int =n$13 [line 22]\n " shape="box"] 23 -> 20 ; @@ -121,16 +121,16 @@ digraph iCFG { 20 -> 25 ; -19 [label="19: DeclStmt \n n$11=*&SIL_temp_conditional___n$8:int [line 24]\n *&y2:int =(77 + n$11) [line 24]\n REMOVE_TEMPS(n$11); [line 24]\n NULLIFY(&SIL_temp_conditional___n$8); [line 24]\n NULLIFY(&y2); [line 24]\n " shape="box"] +19 [label="19: DeclStmt \n n$11=*&SIL_temp_conditional___n$8:int [line 24]\n *&y2:int =(77 + n$11) [line 24]\n " shape="box"] 19 -> 4 ; 19 -> 5 ; -18 [label="18: ConditinalStmt Branch \n n$10=*&z:int [line 24]\n *&SIL_temp_conditional___n$8:int =n$10 [line 24]\n REMOVE_TEMPS(n$10); [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +18 [label="18: ConditinalStmt Branch \n n$10=*&z:int [line 24]\n *&SIL_temp_conditional___n$8:int =n$10 [line 24]\n " shape="box"] 18 -> 14 ; -17 [label="17: ConditinalStmt Branch \n n$9=*&z:int [line 24]\n *&SIL_temp_conditional___n$8:int =n$9 [line 24]\n REMOVE_TEMPS(n$9); [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +17 [label="17: ConditinalStmt Branch \n n$9=*&z:int [line 24]\n *&SIL_temp_conditional___n$8:int =n$9 [line 24]\n " shape="box"] 17 -> 14 ; @@ -146,15 +146,15 @@ digraph iCFG { 14 -> 19 ; -13 [label="13: DeclStmt \n n$3=*&SIL_temp_conditional___n$0:int [line 26]\n n$7=*&SIL_temp_conditional___n$4:int [line 26]\n *&y3:int =(n$3 + n$7) [line 26]\n REMOVE_TEMPS(n$3,n$7); [line 26]\n NULLIFY(&SIL_temp_conditional___n$0); [line 26]\n NULLIFY(&SIL_temp_conditional___n$4); [line 26]\n NULLIFY(&y3); [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"] +13 [label="13: DeclStmt \n n$3=*&SIL_temp_conditional___n$0:int [line 26]\n n$7=*&SIL_temp_conditional___n$4:int [line 26]\n *&y3:int =(n$3 + n$7) [line 26]\n " shape="box"] 13 -> 2 ; -12 [label="12: ConditinalStmt Branch \n n$6=*&z:int [line 26]\n *&SIL_temp_conditional___n$4:int =n$6 [line 26]\n REMOVE_TEMPS(n$6); [line 26]\n NULLIFY(&z); [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"] +12 [label="12: ConditinalStmt Branch \n n$6=*&z:int [line 26]\n *&SIL_temp_conditional___n$4:int =n$6 [line 26]\n " shape="box"] 12 -> 8 ; -11 [label="11: ConditinalStmt Branch \n n$5=*&z:int [line 26]\n *&SIL_temp_conditional___n$4:int =n$5 [line 26]\n REMOVE_TEMPS(n$5); [line 26]\n NULLIFY(&z); [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"] +11 [label="11: ConditinalStmt Branch \n n$5=*&z:int [line 26]\n *&SIL_temp_conditional___n$4:int =n$5 [line 26]\n " shape="box"] 11 -> 8 ; @@ -170,11 +170,11 @@ digraph iCFG { 8 -> 13 ; -7 [label="7: ConditinalStmt Branch \n n$2=*&z:int [line 26]\n *&SIL_temp_conditional___n$0:int =n$2 [line 26]\n REMOVE_TEMPS(n$2); [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"] +7 [label="7: ConditinalStmt Branch \n n$2=*&z:int [line 26]\n *&SIL_temp_conditional___n$0:int =n$2 [line 26]\n " shape="box"] 7 -> 3 ; -6 [label="6: ConditinalStmt Branch \n n$1=*&z:int [line 26]\n *&SIL_temp_conditional___n$0:int =n$1 [line 26]\n REMOVE_TEMPS(n$1); [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"] +6 [label="6: ConditinalStmt Branch \n n$1=*&z:int [line 26]\n *&SIL_temp_conditional___n$0:int =n$1 [line 26]\n " shape="box"] 6 -> 3 ; diff --git a/infer/tests/codetoanalyze/c/frontend/conditional_operator/cond2.c.dot b/infer/tests/codetoanalyze/c/frontend/conditional_operator/cond2.c.dot index b097c8e90..aca8321bf 100644 --- a/infer/tests/codetoanalyze/c/frontend/conditional_operator/cond2.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/conditional_operator/cond2.c.dot @@ -1,23 +1,23 @@ /* @generated */ digraph iCFG { -58 [label="58: BinaryOperatorStmt: Assign \n n$9=*&SIL_temp_conditional___n$5:int [line 23]\n *&y:int =n$9 [line 23]\n REMOVE_TEMPS(n$9); [line 23]\n NULLIFY(&SIL_temp_conditional___n$5); [line 23]\n NULLIFY(&y); [line 23]\n " shape="box"] +58 [label="58: BinaryOperatorStmt: Assign \n n$9=*&SIL_temp_conditional___n$5:int [line 23]\n *&y:int =n$9 [line 23]\n " shape="box"] 58 -> 42 ; 58 -> 43 ; -57 [label="57: ConditinalStmt Branch \n n$8=*&x:int [line 23]\n *&x:int =(n$8 - 1) [line 23]\n *&SIL_temp_conditional___n$5:int =n$8 [line 23]\n REMOVE_TEMPS(n$8); [line 23]\n NULLIFY(&x); [line 23]\n APPLY_ABSTRACTION; [line 23]\n " shape="box"] +57 [label="57: ConditinalStmt Branch \n n$8=*&x:int [line 23]\n *&x:int =(n$8 - 1) [line 23]\n *&SIL_temp_conditional___n$5:int =n$8 [line 23]\n " shape="box"] 57 -> 52 ; -56 [label="56: ConditinalStmt Branch \n n$7=*&x:int [line 23]\n *&x:int =(n$7 + 1) [line 23]\n *&SIL_temp_conditional___n$5:int =(n$7 + 1) [line 23]\n REMOVE_TEMPS(n$7); [line 23]\n NULLIFY(&x); [line 23]\n APPLY_ABSTRACTION; [line 23]\n " shape="box"] +56 [label="56: ConditinalStmt Branch \n n$7=*&x:int [line 23]\n *&x:int =(n$7 + 1) [line 23]\n *&SIL_temp_conditional___n$5:int =(n$7 + 1) [line 23]\n " shape="box"] 56 -> 52 ; -55 [label="55: Prune (false branch) \n PRUNE(((n$6 > 1) == 0), false); [line 23]\n REMOVE_TEMPS(n$6); [line 23]\n " shape="invhouse"] +55 [label="55: Prune (false branch) \n PRUNE(((n$6 > 1) == 0), false); [line 23]\n " shape="invhouse"] 55 -> 57 ; -54 [label="54: Prune (true branch) \n PRUNE(((n$6 > 1) != 0), true); [line 23]\n REMOVE_TEMPS(n$6); [line 23]\n " shape="invhouse"] +54 [label="54: Prune (true branch) \n PRUNE(((n$6 > 1) != 0), true); [line 23]\n " shape="invhouse"] 54 -> 56 ; @@ -30,36 +30,36 @@ digraph iCFG { 52 -> 58 ; -51 [label="51: Return Stmt \n n$4=*&SIL_temp_conditional___n$0:int [line 24]\n *&return:int =(0 + n$4) [line 24]\n REMOVE_TEMPS(n$4); [line 24]\n NULLIFY(&SIL_temp_conditional___n$0); [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +51 [label="51: Return Stmt \n n$4=*&SIL_temp_conditional___n$0:int [line 24]\n *&return:int =(0 + n$4) [line 24]\n " shape="box"] 51 -> 39 ; -50 [label="50: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =0 [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +50 [label="50: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =0 [line 24]\n " shape="box"] 50 -> 40 ; -49 [label="49: ConditinalStmt Branch \n *&x:int =1 [line 24]\n n$3=*&x:int [line 24]\n *&SIL_temp_conditional___n$0:int =n$3 [line 24]\n REMOVE_TEMPS(n$3); [line 24]\n NULLIFY(&x); [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +49 [label="49: ConditinalStmt Branch \n *&x:int =1 [line 24]\n n$3=*&x:int [line 24]\n *&SIL_temp_conditional___n$0:int =n$3 [line 24]\n " shape="box"] 49 -> 40 ; -48 [label="48: Prune (false branch) \n PRUNE(((n$2 > 1) == 0), false); [line 24]\n REMOVE_TEMPS(n$2); [line 24]\n " shape="invhouse"] +48 [label="48: Prune (false branch) \n PRUNE(((n$2 > 1) == 0), false); [line 24]\n " shape="invhouse"] 48 -> 50 ; -47 [label="47: Prune (true branch) \n PRUNE(((n$2 > 1) != 0), true); [line 24]\n REMOVE_TEMPS(n$2); [line 24]\n " shape="invhouse"] +47 [label="47: Prune (true branch) \n PRUNE(((n$2 > 1) != 0), true); [line 24]\n " shape="invhouse"] 47 -> 49 ; -46 [label="46: BinaryOperatorStmt: GT \n n$2=*&SIL_temp_conditional___n$1:int [line 24]\n NULLIFY(&SIL_temp_conditional___n$1); [line 24]\n " shape="box"] +46 [label="46: BinaryOperatorStmt: GT \n n$2=*&SIL_temp_conditional___n$1:int [line 24]\n " shape="box"] 46 -> 47 ; 46 -> 48 ; -45 [label="45: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =2 [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +45 [label="45: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =2 [line 24]\n " shape="box"] 45 -> 41 ; -44 [label="44: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =1 [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +44 [label="44: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =1 [line 24]\n " shape="box"] 44 -> 41 ; @@ -91,15 +91,15 @@ digraph iCFG { 37 -> 31 ; 37 -> 32 ; -36 [label="36: BinaryOperatorStmt: Assign \n *&x:int =0 [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="box"] +36 [label="36: BinaryOperatorStmt: Assign \n *&x:int =0 [line 13]\n " shape="box"] 36 -> 30 ; -35 [label="35: Prune (false branch) \n PRUNE(((7 < n$10) == 0), false); [line 12]\n REMOVE_TEMPS(n$10); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="invhouse"] +35 [label="35: Prune (false branch) \n PRUNE(((7 < n$10) == 0), false); [line 12]\n " shape="invhouse"] 35 -> 30 ; -34 [label="34: Prune (true branch) \n PRUNE(((7 < n$10) != 0), true); [line 12]\n REMOVE_TEMPS(n$10); [line 12]\n NULLIFY(&x); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="invhouse"] +34 [label="34: Prune (true branch) \n PRUNE(((7 < n$10) != 0), true); [line 12]\n " shape="invhouse"] 34 -> 36 ; @@ -112,7 +112,7 @@ digraph iCFG { 32 -> 33 ; -31 [label="31: Prune (true branch) \n PRUNE(((3 < 4) != 0), true); [line 12]\n NULLIFY(&x); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="invhouse"] +31 [label="31: Prune (true branch) \n PRUNE(((3 < 4) != 0), true); [line 12]\n " shape="invhouse"] 31 -> 36 ; @@ -125,28 +125,28 @@ digraph iCFG { 29 -> 21 ; 29 -> 22 ; -28 [label="28: DeclStmt \n n$9=*&SIL_temp_conditional___n$6:int [line 16]\n *&n:int =n$9 [line 16]\n REMOVE_TEMPS(n$9); [line 16]\n NULLIFY(&SIL_temp_conditional___n$6); [line 16]\n NULLIFY(&n); [line 16]\n " shape="box"] +28 [label="28: DeclStmt \n n$9=*&SIL_temp_conditional___n$6:int [line 16]\n *&n:int =n$9 [line 16]\n " shape="box"] 28 -> 10 ; 28 -> 11 ; -27 [label="27: ConditinalStmt Branch \n *&SIL_temp_conditional___n$6:int =2 [line 16]\n APPLY_ABSTRACTION; [line 16]\n " shape="box"] +27 [label="27: ConditinalStmt Branch \n *&SIL_temp_conditional___n$6:int =2 [line 16]\n " shape="box"] 27 -> 20 ; -26 [label="26: ConditinalStmt Branch \n *&SIL_temp_conditional___n$6:int =1 [line 16]\n APPLY_ABSTRACTION; [line 16]\n " shape="box"] +26 [label="26: ConditinalStmt Branch \n *&SIL_temp_conditional___n$6:int =1 [line 16]\n " shape="box"] 26 -> 20 ; -25 [label="25: Prune (false branch) \n PRUNE(((7 < (n$7 - n$8)) == 0), false); [line 16]\n REMOVE_TEMPS(n$7,n$8); [line 16]\n " shape="invhouse"] +25 [label="25: Prune (false branch) \n PRUNE(((7 < (n$7 - n$8)) == 0), false); [line 16]\n " shape="invhouse"] 25 -> 27 ; -24 [label="24: Prune (true branch) \n PRUNE(((7 < (n$7 - n$8)) != 0), true); [line 16]\n REMOVE_TEMPS(n$7,n$8); [line 16]\n APPLY_ABSTRACTION; [line 16]\n " shape="invhouse"] +24 [label="24: Prune (true branch) \n PRUNE(((7 < (n$7 - n$8)) != 0), true); [line 16]\n " shape="invhouse"] 24 -> 26 ; -23 [label="23: BinaryOperatorStmt: LT \n n$7=*&x:int [line 16]\n *&x:int =(n$7 + 1) [line 16]\n n$8=*&y:int [line 16]\n NULLIFY(&x); [line 16]\n NULLIFY(&y); [line 16]\n " shape="box"] +23 [label="23: BinaryOperatorStmt: LT \n n$7=*&x:int [line 16]\n *&x:int =(n$7 + 1) [line 16]\n n$8=*&y:int [line 16]\n " shape="box"] 23 -> 24 ; @@ -155,7 +155,7 @@ digraph iCFG { 22 -> 23 ; -21 [label="21: Prune (true branch) \n PRUNE(((3 < 4) != 0), true); [line 16]\n NULLIFY(&x); [line 16]\n NULLIFY(&y); [line 16]\n APPLY_ABSTRACTION; [line 16]\n " shape="invhouse"] +21 [label="21: Prune (true branch) \n PRUNE(((3 < 4) != 0), true); [line 16]\n " shape="invhouse"] 21 -> 26 ; @@ -163,20 +163,20 @@ digraph iCFG { 20 -> 28 ; -19 [label="19: BinaryOperatorStmt: Assign \n n$5=*&SIL_temp_conditional___n$2:int [line 17]\n *&n:int =n$5 [line 17]\n REMOVE_TEMPS(n$5); [line 17]\n NULLIFY(&SIL_temp_conditional___n$2); [line 17]\n NULLIFY(&n); [line 17]\n " shape="box"] +19 [label="19: BinaryOperatorStmt: Assign \n n$5=*&SIL_temp_conditional___n$2:int [line 17]\n *&n:int =n$5 [line 17]\n " shape="box"] 19 -> 4 ; 19 -> 5 ; -18 [label="18: ConditinalStmt Branch \n n$4=*&SIL_temp_conditional___n$3:int [line 17]\n *&SIL_temp_conditional___n$2:int =n$4 [line 17]\n REMOVE_TEMPS(n$4); [line 17]\n NULLIFY(&SIL_temp_conditional___n$3); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +18 [label="18: ConditinalStmt Branch \n n$4=*&SIL_temp_conditional___n$3:int [line 17]\n *&SIL_temp_conditional___n$2:int =n$4 [line 17]\n " shape="box"] 18 -> 9 ; -17 [label="17: ConditinalStmt Branch \n *&SIL_temp_conditional___n$3:int =2 [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +17 [label="17: ConditinalStmt Branch \n *&SIL_temp_conditional___n$3:int =2 [line 17]\n " shape="box"] 17 -> 13 ; -16 [label="16: ConditinalStmt Branch \n *&SIL_temp_conditional___n$3:int =1 [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +16 [label="16: ConditinalStmt Branch \n *&SIL_temp_conditional___n$3:int =1 [line 17]\n " shape="box"] 16 -> 13 ; @@ -192,7 +192,7 @@ digraph iCFG { 13 -> 18 ; -12 [label="12: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =1 [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +12 [label="12: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =1 [line 17]\n " shape="box"] 12 -> 9 ; @@ -209,15 +209,15 @@ digraph iCFG { 9 -> 19 ; -8 [label="8: Return Stmt \n n$1=*&SIL_temp_conditional___n$0:int [line 18]\n *&return:int =(0 + n$1) [line 18]\n REMOVE_TEMPS(n$1); [line 18]\n NULLIFY(&SIL_temp_conditional___n$0); [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +8 [label="8: Return Stmt \n n$1=*&SIL_temp_conditional___n$0:int [line 18]\n *&return:int =(0 + n$1) [line 18]\n " shape="box"] 8 -> 2 ; -7 [label="7: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =0 [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +7 [label="7: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =0 [line 18]\n " shape="box"] 7 -> 3 ; -6 [label="6: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =1 [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +6 [label="6: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =1 [line 18]\n " shape="box"] 6 -> 3 ; 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 8ba016e7b..eac2506aa 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,23 +1,23 @@ /* @generated */ 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); [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 " 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 REMOVE_TEMPS(n$0); [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 " shape="box"] 65 -> 61 ; 65 -> 62 ; -64 [label="64: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =2 [line 35]\n APPLY_ABSTRACTION; [line 35]\n " shape="box"] +64 [label="64: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =2 [line 35]\n " shape="box"] 64 -> 60 ; -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 [label="63: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =n$1 [line 35]\n " shape="box"] 63 -> 60 ; -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 [label="62: Prune (false branch) \n PRUNE((n$1 == 0), false); [line 35]\n " shape="invhouse"] 62 -> 64 ; @@ -36,15 +36,15 @@ digraph iCFG { 58 -> 65 ; -57 [label="57: DeclStmt \n n$4=*&SIL_temp_conditional___n$1:int [line 31]\n *&z:int =n$4 [line 31]\n REMOVE_TEMPS(n$4); [line 31]\n NULLIFY(&SIL_temp_conditional___n$1); [line 31]\n " shape="box"] +57 [label="57: DeclStmt \n n$4=*&SIL_temp_conditional___n$1:int [line 31]\n *&z:int =n$4 [line 31]\n " shape="box"] 57 -> 51 ; -56 [label="56: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =0 [line 31]\n APPLY_ABSTRACTION; [line 31]\n " shape="box"] +56 [label="56: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =0 [line 31]\n " shape="box"] 56 -> 52 ; -55 [label="55: ConditinalStmt Branch \n n$2=*&p:int * [line 31]\n n$3=*n$2:int [line 31]\n *&SIL_temp_conditional___n$1:int =n$3 [line 31]\n REMOVE_TEMPS(n$2,n$3); [line 31]\n NULLIFY(&p); [line 31]\n APPLY_ABSTRACTION; [line 31]\n " shape="box"] +55 [label="55: ConditinalStmt Branch \n n$2=*&p:int * [line 31]\n n$3=*n$2:int [line 31]\n *&SIL_temp_conditional___n$1:int =n$3 [line 31]\n " shape="box"] 55 -> 52 ; @@ -60,7 +60,7 @@ digraph iCFG { 52 -> 57 ; -51 [label="51: Return Stmt \n n$0=*&z:int [line 32]\n *&return:int =n$0 [line 32]\n REMOVE_TEMPS(n$0); [line 32]\n NULLIFY(&z); [line 32]\n APPLY_ABSTRACTION; [line 32]\n " shape="box"] +51 [label="51: Return Stmt \n n$0=*&z:int [line 32]\n *&return:int =n$0 [line 32]\n " shape="box"] 51 -> 50 ; @@ -72,24 +72,24 @@ 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); [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 " shape="box"] 48 -> 41 ; -47 [label="47: BinaryConditinalStmt Init \n n$0=*&b:int [line 28]\n NULLIFY(&b); [line 28]\n " shape="box"] +47 [label="47: BinaryConditinalStmt Init \n n$0=*&b:int [line 28]\n " shape="box"] 47 -> 43 ; 47 -> 44 ; -46 [label="46: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =1 [line 28]\n APPLY_ABSTRACTION; [line 28]\n " shape="box"] +46 [label="46: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =1 [line 28]\n " shape="box"] 46 -> 42 ; -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 [label="45: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =n$0 [line 28]\n " shape="box"] 45 -> 42 ; -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 [label="44: Prune (false branch) \n PRUNE((n$0 == 0), false); [line 28]\n " shape="invhouse"] 44 -> 46 ; @@ -108,24 +108,24 @@ 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$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 " shape="box"] 39 -> 32 ; -38 [label="38: BinaryConditinalStmt Init \n n$0=*&b:int [line 26]\n NULLIFY(&b); [line 26]\n " shape="box"] +38 [label="38: BinaryConditinalStmt Init \n n$0=*&b:int [line 26]\n " shape="box"] 38 -> 34 ; 38 -> 35 ; -37 [label="37: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =1 [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"] +37 [label="37: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =1 [line 26]\n " shape="box"] 37 -> 33 ; -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 [label="36: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =n$0 [line 26]\n " shape="box"] 36 -> 33 ; -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 [label="35: Prune (false branch) \n PRUNE((n$0 == 0), false); [line 26]\n " shape="invhouse"] 35 -> 37 ; @@ -144,24 +144,24 @@ 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); [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 " shape="box"] 30 -> 23 ; -29 [label="29: BinaryConditinalStmt Init \n n$1=*&b:int [line 22]\n NULLIFY(&b); [line 22]\n " shape="box"] +29 [label="29: BinaryConditinalStmt Init \n n$1=*&b:int [line 22]\n " shape="box"] 29 -> 25 ; 29 -> 26 ; -28 [label="28: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =1 [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"] +28 [label="28: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =1 [line 22]\n " shape="box"] 28 -> 24 ; -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 [label="27: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =n$1 [line 22]\n " shape="box"] 27 -> 24 ; -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 [label="26: Prune (false branch) \n PRUNE((n$1 == 0), false); [line 22]\n " shape="invhouse"] 26 -> 28 ; @@ -173,7 +173,7 @@ digraph iCFG { 24 -> 30 ; -23 [label="23: Return Stmt \n n$0=*&x:int [line 23]\n *&return:int =n$0 [line 23]\n REMOVE_TEMPS(n$0); [line 23]\n NULLIFY(&x); [line 23]\n APPLY_ABSTRACTION; [line 23]\n " shape="box"] +23 [label="23: Return Stmt \n n$0=*&x:int [line 23]\n *&return:int =n$0 [line 23]\n " shape="box"] 23 -> 22 ; @@ -184,23 +184,23 @@ digraph iCFG { 21 -> 29 ; -20 [label="20: DeclStmt \n n$4=*&SIL_temp_conditional___n$1:int [line 17]\n *&x:int =n$4 [line 17]\n REMOVE_TEMPS(n$4); [line 17]\n NULLIFY(&SIL_temp_conditional___n$1); [line 17]\n " shape="box"] +20 [label="20: DeclStmt \n n$4=*&SIL_temp_conditional___n$1:int [line 17]\n *&x:int =n$4 [line 17]\n " shape="box"] 20 -> 14 ; -19 [label="19: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =1 [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +19 [label="19: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =1 [line 17]\n " shape="box"] 19 -> 15 ; -18 [label="18: ConditinalStmt Branch \n n$3=*&b:int [line 17]\n *&SIL_temp_conditional___n$1:int =n$3 [line 17]\n REMOVE_TEMPS(n$3); [line 17]\n NULLIFY(&b); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +18 [label="18: ConditinalStmt Branch \n n$3=*&b:int [line 17]\n *&SIL_temp_conditional___n$1:int =n$3 [line 17]\n " shape="box"] 18 -> 15 ; -17 [label="17: Prune (false branch) \n n$2=*&b:int [line 17]\n PRUNE((n$2 == 0), false); [line 17]\n REMOVE_TEMPS(n$2); [line 17]\n NULLIFY(&b); [line 17]\n " shape="invhouse"] +17 [label="17: Prune (false branch) \n n$2=*&b:int [line 17]\n PRUNE((n$2 == 0), false); [line 17]\n " shape="invhouse"] 17 -> 19 ; -16 [label="16: Prune (true branch) \n n$2=*&b:int [line 17]\n PRUNE((n$2 != 0), true); [line 17]\n REMOVE_TEMPS(n$2); [line 17]\n " shape="invhouse"] +16 [label="16: Prune (true branch) \n n$2=*&b:int [line 17]\n PRUNE((n$2 != 0), true); [line 17]\n " shape="invhouse"] 16 -> 18 ; @@ -208,7 +208,7 @@ digraph iCFG { 15 -> 20 ; -14 [label="14: Return Stmt \n n$0=*&x:int [line 18]\n *&return:int =n$0 [line 18]\n REMOVE_TEMPS(n$0); [line 18]\n NULLIFY(&x); [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +14 [label="14: Return Stmt \n n$0=*&x:int [line 18]\n *&return:int =n$0 [line 18]\n " shape="box"] 14 -> 13 ; @@ -220,23 +220,23 @@ digraph iCFG { 12 -> 16 ; 12 -> 17 ; -11 [label="11: Return Stmt \n n$3=*&SIL_temp_conditional___n$0:int [line 14]\n n$4=_fun_test2(n$3:int ) [line 14]\n *&return:int =n$4 [line 14]\n REMOVE_TEMPS(n$3,n$4); [line 14]\n NULLIFY(&SIL_temp_conditional___n$0); [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +11 [label="11: Return Stmt \n n$3=*&SIL_temp_conditional___n$0:int [line 14]\n n$4=_fun_test2(n$3:int ) [line 14]\n *&return:int =n$4 [line 14]\n " shape="box"] 11 -> 5 ; -10 [label="10: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =1 [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +10 [label="10: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =1 [line 14]\n " shape="box"] 10 -> 6 ; -9 [label="9: ConditinalStmt Branch \n n$2=*&b:int [line 14]\n *&SIL_temp_conditional___n$0:int =n$2 [line 14]\n REMOVE_TEMPS(n$2); [line 14]\n NULLIFY(&b); [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +9 [label="9: ConditinalStmt Branch \n n$2=*&b:int [line 14]\n *&SIL_temp_conditional___n$0:int =n$2 [line 14]\n " shape="box"] 9 -> 6 ; -8 [label="8: Prune (false branch) \n n$1=*&b:int [line 14]\n PRUNE((n$1 == 0), false); [line 14]\n REMOVE_TEMPS(n$1); [line 14]\n NULLIFY(&b); [line 14]\n " shape="invhouse"] +8 [label="8: Prune (false branch) \n n$1=*&b:int [line 14]\n PRUNE((n$1 == 0), false); [line 14]\n " shape="invhouse"] 8 -> 10 ; -7 [label="7: Prune (true branch) \n n$1=*&b:int [line 14]\n PRUNE((n$1 != 0), true); [line 14]\n REMOVE_TEMPS(n$1); [line 14]\n " shape="invhouse"] +7 [label="7: Prune (true branch) \n n$1=*&b:int [line 14]\n PRUNE((n$1 != 0), true); [line 14]\n " shape="invhouse"] 7 -> 9 ; @@ -252,7 +252,7 @@ digraph iCFG { 4 -> 7 ; 4 -> 8 ; -3 [label="3: Return Stmt \n n$0=*&x:int [line 12]\n *&return:int =n$0 [line 12]\n REMOVE_TEMPS(n$0); [line 12]\n NULLIFY(&x); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&x:int [line 12]\n *&return:int =n$0 [line 12]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/conditional_operator/function_call.c.dot b/infer/tests/codetoanalyze/c/frontend/conditional_operator/function_call.c.dot index 0d09bcab6..4d6ca0435 100644 --- a/infer/tests/codetoanalyze/c/frontend/conditional_operator/function_call.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/conditional_operator/function_call.c.dot @@ -1,14 +1,14 @@ /* @generated */ digraph iCFG { -67 [label="67: Call n$1 \n n$1=*&SIL_temp_conditional___n$0:_fn_ (*) [line 20]\n n$3=*&SIL_temp_conditional___n$2:int [line 20]\n n$5=*&SIL_temp_conditional___n$4:int [line 20]\n n$1(n$3:int ,2:int ,n$5:int ) [line 20]\n REMOVE_TEMPS(n$1,n$3,n$5); [line 20]\n NULLIFY(&SIL_temp_conditional___n$0); [line 20]\n NULLIFY(&SIL_temp_conditional___n$2); [line 20]\n NULLIFY(&SIL_temp_conditional___n$4); [line 20]\n APPLY_ABSTRACTION; [line 20]\n " shape="box"] +67 [label="67: Call n$1 \n n$1=*&SIL_temp_conditional___n$0:_fn_ (*) [line 20]\n n$3=*&SIL_temp_conditional___n$2:int [line 20]\n n$5=*&SIL_temp_conditional___n$4:int [line 20]\n n$1(n$3:int ,2:int ,n$5:int ) [line 20]\n " shape="box"] 67 -> 51 ; -66 [label="66: ConditinalStmt Branch \n *&SIL_temp_conditional___n$4:int =3 [line 20]\n APPLY_ABSTRACTION; [line 20]\n " shape="box"] +66 [label="66: ConditinalStmt Branch \n *&SIL_temp_conditional___n$4:int =3 [line 20]\n " shape="box"] 66 -> 62 ; -65 [label="65: ConditinalStmt Branch \n *&SIL_temp_conditional___n$4:int =3 [line 20]\n APPLY_ABSTRACTION; [line 20]\n " shape="box"] +65 [label="65: ConditinalStmt Branch \n *&SIL_temp_conditional___n$4:int =3 [line 20]\n " shape="box"] 65 -> 62 ; @@ -24,11 +24,11 @@ digraph iCFG { 62 -> 67 ; -61 [label="61: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =1 [line 20]\n APPLY_ABSTRACTION; [line 20]\n " shape="box"] +61 [label="61: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =1 [line 20]\n " shape="box"] 61 -> 57 ; -60 [label="60: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =1 [line 20]\n APPLY_ABSTRACTION; [line 20]\n " shape="box"] +60 [label="60: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =1 [line 20]\n " shape="box"] 60 -> 57 ; @@ -45,11 +45,11 @@ digraph iCFG { 57 -> 63 ; 57 -> 64 ; -56 [label="56: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:_fn_ (*)=_fun_some_f [line 20]\n APPLY_ABSTRACTION; [line 20]\n " shape="box"] +56 [label="56: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:_fn_ (*)=_fun_some_f [line 20]\n " shape="box"] 56 -> 52 ; -55 [label="55: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:_fn_ (*)=_fun_some_f [line 20]\n APPLY_ABSTRACTION; [line 20]\n " shape="box"] +55 [label="55: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:_fn_ (*)=_fun_some_f [line 20]\n " shape="box"] 55 -> 52 ; @@ -74,15 +74,15 @@ digraph iCFG { 50 -> 53 ; 50 -> 54 ; -49 [label="49: Call _fun_some_f \n n$1=*&SIL_temp_conditional___n$0:int [line 18]\n n$3=*&SIL_temp_conditional___n$2:int [line 18]\n n$5=*&SIL_temp_conditional___n$4:int [line 18]\n _fun_some_f(n$1:int ,n$3:int ,n$5:int ) [line 18]\n REMOVE_TEMPS(n$1,n$3,n$5); [line 18]\n NULLIFY(&SIL_temp_conditional___n$0); [line 18]\n NULLIFY(&SIL_temp_conditional___n$2); [line 18]\n NULLIFY(&SIL_temp_conditional___n$4); [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +49 [label="49: Call _fun_some_f \n n$1=*&SIL_temp_conditional___n$0:int [line 18]\n n$3=*&SIL_temp_conditional___n$2:int [line 18]\n n$5=*&SIL_temp_conditional___n$4:int [line 18]\n _fun_some_f(n$1:int ,n$3:int ,n$5:int ) [line 18]\n " shape="box"] 49 -> 33 ; -48 [label="48: ConditinalStmt Branch \n *&SIL_temp_conditional___n$4:int =3 [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +48 [label="48: ConditinalStmt Branch \n *&SIL_temp_conditional___n$4:int =3 [line 18]\n " shape="box"] 48 -> 44 ; -47 [label="47: ConditinalStmt Branch \n *&SIL_temp_conditional___n$4:int =3 [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +47 [label="47: ConditinalStmt Branch \n *&SIL_temp_conditional___n$4:int =3 [line 18]\n " shape="box"] 47 -> 44 ; @@ -98,11 +98,11 @@ digraph iCFG { 44 -> 49 ; -43 [label="43: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =2 [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +43 [label="43: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =2 [line 18]\n " shape="box"] 43 -> 39 ; -42 [label="42: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =2 [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +42 [label="42: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =2 [line 18]\n " shape="box"] 42 -> 39 ; @@ -119,11 +119,11 @@ digraph iCFG { 39 -> 45 ; 39 -> 46 ; -38 [label="38: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =1 [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +38 [label="38: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =1 [line 18]\n " shape="box"] 38 -> 34 ; -37 [label="37: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =1 [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +37 [label="37: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =1 [line 18]\n " shape="box"] 37 -> 34 ; @@ -148,15 +148,15 @@ digraph iCFG { 32 -> 35 ; 32 -> 36 ; -31 [label="31: Call n$1 \n n$1=*&SIL_temp_conditional___n$0:_fn_ (*) [line 15]\n n$3=*&SIL_temp_conditional___n$2:int [line 15]\n n$5=*&SIL_temp_conditional___n$4:int [line 15]\n n$7=*&SIL_temp_conditional___n$6:int [line 15]\n n$1(n$3:int ,n$5:int ,n$7:int ) [line 15]\n REMOVE_TEMPS(n$1,n$3,n$5,n$7); [line 15]\n NULLIFY(&SIL_temp_conditional___n$0); [line 15]\n NULLIFY(&SIL_temp_conditional___n$2); [line 15]\n NULLIFY(&SIL_temp_conditional___n$4); [line 15]\n NULLIFY(&SIL_temp_conditional___n$6); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +31 [label="31: Call n$1 \n n$1=*&SIL_temp_conditional___n$0:_fn_ (*) [line 15]\n n$3=*&SIL_temp_conditional___n$2:int [line 15]\n n$5=*&SIL_temp_conditional___n$4:int [line 15]\n n$7=*&SIL_temp_conditional___n$6:int [line 15]\n n$1(n$3:int ,n$5:int ,n$7:int ) [line 15]\n " shape="box"] 31 -> 10 ; -30 [label="30: ConditinalStmt Branch \n *&SIL_temp_conditional___n$6:int =3 [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +30 [label="30: ConditinalStmt Branch \n *&SIL_temp_conditional___n$6:int =3 [line 15]\n " shape="box"] 30 -> 26 ; -29 [label="29: ConditinalStmt Branch \n *&SIL_temp_conditional___n$6:int =3 [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +29 [label="29: ConditinalStmt Branch \n *&SIL_temp_conditional___n$6:int =3 [line 15]\n " shape="box"] 29 -> 26 ; @@ -172,11 +172,11 @@ digraph iCFG { 26 -> 31 ; -25 [label="25: ConditinalStmt Branch \n *&SIL_temp_conditional___n$4:int =2 [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +25 [label="25: ConditinalStmt Branch \n *&SIL_temp_conditional___n$4:int =2 [line 15]\n " shape="box"] 25 -> 21 ; -24 [label="24: ConditinalStmt Branch \n *&SIL_temp_conditional___n$4:int =2 [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +24 [label="24: ConditinalStmt Branch \n *&SIL_temp_conditional___n$4:int =2 [line 15]\n " shape="box"] 24 -> 21 ; @@ -193,11 +193,11 @@ digraph iCFG { 21 -> 27 ; 21 -> 28 ; -20 [label="20: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =1 [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +20 [label="20: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =1 [line 15]\n " shape="box"] 20 -> 16 ; -19 [label="19: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =1 [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +19 [label="19: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =1 [line 15]\n " shape="box"] 19 -> 16 ; @@ -214,11 +214,11 @@ digraph iCFG { 16 -> 22 ; 16 -> 23 ; -15 [label="15: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:_fn_ (*)=_fun_some_f [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +15 [label="15: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:_fn_ (*)=_fun_some_f [line 15]\n " shape="box"] 15 -> 11 ; -14 [label="14: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:_fn_ (*)=_fun_some_f [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +14 [label="14: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:_fn_ (*)=_fun_some_f [line 15]\n " shape="box"] 14 -> 11 ; @@ -243,15 +243,15 @@ digraph iCFG { 9 -> 12 ; 9 -> 13 ; -8 [label="8: Call n$1 \n n$1=*&SIL_temp_conditional___n$0:_fn_ (*) [line 12]\n n$1(1:int ,2:int ,3:int ) [line 12]\n REMOVE_TEMPS(n$1); [line 12]\n NULLIFY(&SIL_temp_conditional___n$0); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +8 [label="8: Call n$1 \n n$1=*&SIL_temp_conditional___n$0:_fn_ (*) [line 12]\n n$1(1:int ,2:int ,3:int ) [line 12]\n " shape="box"] 8 -> 2 ; -7 [label="7: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:_fn_ (*)=_fun_some_f [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +7 [label="7: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:_fn_ (*)=_fun_some_f [line 12]\n " shape="box"] 7 -> 3 ; -6 [label="6: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:_fn_ (*)=_fun_some_f [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +6 [label="6: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:_fn_ (*)=_fun_some_f [line 12]\n " shape="box"] 6 -> 3 ; 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 ccdc9397d..400445516 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,23 +1,23 @@ /* @generated */ digraph iCFG { -95 [label="95: BinaryOperatorStmt: Assign \n n$13=_fun_getenv(\"BLOCK\":char *) [line 47]\n *&spec:char *=n$13 [line 47]\n REMOVE_TEMPS(n$13); [line 47]\n " shape="box"] +95 [label="95: BinaryOperatorStmt: Assign \n n$13=_fun_getenv(\"BLOCK\":char *) [line 47]\n *&spec:char *=n$13 [line 47]\n " shape="box"] 95 -> 67 ; 95 -> 68 ; -94 [label="94: BinaryOperatorStmt: Assign \n *&block_size:char *=0 [line 53]\n NULLIFY(&block_size); [line 53]\n APPLY_ABSTRACTION; [line 53]\n " shape="box"] +94 [label="94: BinaryOperatorStmt: Assign \n *&block_size:char *=0 [line 53]\n " shape="box"] 94 -> 90 ; -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 [label="93: Prune (false branch) \n PRUNE(((n$12 == 39) == 0), false); [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$12); [line 52]\n " shape="invhouse"] +92 [label="92: Prune (true branch) \n PRUNE(((n$12 == 39) != 0), true); [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 REMOVE_TEMPS(n$11); [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 " shape="box"] 91 -> 92 ; @@ -26,35 +26,35 @@ digraph iCFG { 90 -> 65 ; -89 [label="89: BinaryOperatorStmt: Assign \n *&block_size:char *=0 [line 50]\n NULLIFY(&block_size); [line 50]\n APPLY_ABSTRACTION; [line 50]\n " shape="box"] +89 [label="89: BinaryOperatorStmt: Assign \n *&block_size:char *=0 [line 50]\n " shape="box"] 89 -> 65 ; -88 [label="88: Prune (false branch) \n n$10=*&SIL_temp_conditional___n$7:int [line 49]\n PRUNE((n$10 == 0), false); [line 49]\n REMOVE_TEMPS(n$10); [line 49]\n NULLIFY(&SIL_temp_conditional___n$7); [line 49]\n APPLY_ABSTRACTION; [line 49]\n " shape="invhouse"] +88 [label="88: Prune (false branch) \n n$10=*&SIL_temp_conditional___n$7:int [line 49]\n PRUNE((n$10 == 0), false); [line 49]\n " shape="invhouse"] 88 -> 91 ; -87 [label="87: Prune (true branch) \n n$10=*&SIL_temp_conditional___n$7:int [line 49]\n PRUNE((n$10 != 0), true); [line 49]\n REMOVE_TEMPS(n$10); [line 49]\n NULLIFY(&SIL_temp_conditional___n$7); [line 49]\n NULLIFY(&spec); [line 49]\n " shape="invhouse"] +87 [label="87: Prune (true branch) \n n$10=*&SIL_temp_conditional___n$7:int [line 49]\n PRUNE((n$10 != 0), true); [line 49]\n " shape="invhouse"] 87 -> 89 ; -86 [label="86: ConditinalStmt Branch \n *&SIL_temp_conditional___n$7:int =1 [line 49]\n APPLY_ABSTRACTION; [line 49]\n " shape="box"] +86 [label="86: ConditinalStmt Branch \n *&SIL_temp_conditional___n$7:int =1 [line 49]\n " shape="box"] 86 -> 81 ; -85 [label="85: ConditinalStmt Branch \n *&SIL_temp_conditional___n$7:int =0 [line 49]\n APPLY_ABSTRACTION; [line 49]\n " shape="box"] +85 [label="85: ConditinalStmt Branch \n *&SIL_temp_conditional___n$7:int =0 [line 49]\n " shape="box"] 85 -> 81 ; -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 [label="84: Prune (false branch) \n PRUNE((n$9 == 0), false); [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$9); [line 49]\n " shape="invhouse"] +83 [label="83: Prune (true branch) \n PRUNE((n$9 != 0), true); [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 REMOVE_TEMPS(n$8); [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 " shape="box"] 82 -> 83 ; @@ -64,31 +64,31 @@ digraph iCFG { 81 -> 87 ; 81 -> 88 ; -80 [label="80: Prune (false branch) \n n$6=*&SIL_temp_conditional___n$3:int [line 49]\n PRUNE((n$6 == 0), false); [line 49]\n REMOVE_TEMPS(n$6); [line 49]\n NULLIFY(&SIL_temp_conditional___n$3); [line 49]\n APPLY_ABSTRACTION; [line 49]\n " shape="invhouse"] +80 [label="80: Prune (false branch) \n n$6=*&SIL_temp_conditional___n$3:int [line 49]\n PRUNE((n$6 == 0), false); [line 49]\n " shape="invhouse"] 80 -> 91 ; -79 [label="79: Prune (true branch) \n n$6=*&SIL_temp_conditional___n$3:int [line 49]\n PRUNE((n$6 != 0), true); [line 49]\n REMOVE_TEMPS(n$6); [line 49]\n NULLIFY(&SIL_temp_conditional___n$3); [line 49]\n NULLIFY(&spec); [line 49]\n " shape="invhouse"] +79 [label="79: Prune (true branch) \n n$6=*&SIL_temp_conditional___n$3:int [line 49]\n PRUNE((n$6 != 0), true); [line 49]\n " shape="invhouse"] 79 -> 82 ; -78 [label="78: ConditinalStmt Branch \n *&SIL_temp_conditional___n$3:int =1 [line 49]\n APPLY_ABSTRACTION; [line 49]\n " shape="box"] +78 [label="78: ConditinalStmt Branch \n *&SIL_temp_conditional___n$3:int =1 [line 49]\n " shape="box"] 78 -> 73 ; -77 [label="77: ConditinalStmt Branch \n *&SIL_temp_conditional___n$3:int =0 [line 49]\n APPLY_ABSTRACTION; [line 49]\n " shape="box"] +77 [label="77: ConditinalStmt Branch \n *&SIL_temp_conditional___n$3:int =0 [line 49]\n " shape="box"] 77 -> 73 ; -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 [label="76: Prune (false branch) \n PRUNE((n$5 == 0), false); [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$5); [line 49]\n " shape="invhouse"] +75 [label="75: Prune (true branch) \n PRUNE((n$5 != 0), true); [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 REMOVE_TEMPS(n$4); [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 " shape="box"] 74 -> 75 ; @@ -98,27 +98,27 @@ digraph iCFG { 73 -> 79 ; 73 -> 80 ; -72 [label="72: Prune (false branch) \n n$2=*&SIL_temp_conditional___n$0:int [line 49]\n PRUNE((n$2 == 0), false); [line 49]\n REMOVE_TEMPS(n$2); [line 49]\n NULLIFY(&SIL_temp_conditional___n$0); [line 49]\n APPLY_ABSTRACTION; [line 49]\n " shape="invhouse"] +72 [label="72: Prune (false branch) \n n$2=*&SIL_temp_conditional___n$0:int [line 49]\n PRUNE((n$2 == 0), false); [line 49]\n " shape="invhouse"] 72 -> 91 ; -71 [label="71: Prune (true branch) \n n$2=*&SIL_temp_conditional___n$0:int [line 49]\n PRUNE((n$2 != 0), true); [line 49]\n REMOVE_TEMPS(n$2); [line 49]\n NULLIFY(&SIL_temp_conditional___n$0); [line 49]\n NULLIFY(&spec); [line 49]\n " shape="invhouse"] +71 [label="71: Prune (true branch) \n n$2=*&SIL_temp_conditional___n$0:int [line 49]\n PRUNE((n$2 != 0), true); [line 49]\n " shape="invhouse"] 71 -> 74 ; -70 [label="70: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =1 [line 49]\n APPLY_ABSTRACTION; [line 49]\n " shape="box"] +70 [label="70: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =1 [line 49]\n " shape="box"] 70 -> 66 ; -69 [label="69: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =0 [line 49]\n APPLY_ABSTRACTION; [line 49]\n " shape="box"] +69 [label="69: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =0 [line 49]\n " shape="box"] 69 -> 66 ; -68 [label="68: Prune (false branch) \n n$1=*&spec:char * [line 49]\n PRUNE((n$1 == 0), false); [line 49]\n REMOVE_TEMPS(n$1); [line 49]\n " shape="invhouse"] +68 [label="68: Prune (false branch) \n n$1=*&spec:char * [line 49]\n PRUNE((n$1 == 0), false); [line 49]\n " shape="invhouse"] 68 -> 70 ; -67 [label="67: Prune (true branch) \n n$1=*&spec:char * [line 49]\n PRUNE((n$1 != 0), true); [line 49]\n REMOVE_TEMPS(n$1); [line 49]\n " shape="invhouse"] +67 [label="67: Prune (true branch) \n n$1=*&spec:char * [line 49]\n PRUNE((n$1 != 0), true); [line 49]\n " shape="invhouse"] 67 -> 69 ; @@ -131,7 +131,7 @@ digraph iCFG { 65 -> 64 ; -64 [label="64: Return Stmt \n *&return:int =0 [line 56]\n APPLY_ABSTRACTION; [line 56]\n " shape="box"] +64 [label="64: Return Stmt \n *&return:int =0 [line 56]\n " shape="box"] 64 -> 63 ; @@ -142,39 +142,39 @@ digraph iCFG { 62 -> 95 ; -61 [label="61: BinaryOperatorStmt: Assign \n n$11=_fun_getenv(\"BLOCK\":char *) [line 34]\n *&spec:char *=n$11 [line 34]\n REMOVE_TEMPS(n$11); [line 34]\n APPLY_ABSTRACTION; [line 34]\n " shape="box"] +61 [label="61: BinaryOperatorStmt: Assign \n n$11=_fun_getenv(\"BLOCK\":char *) [line 34]\n *&spec:char *=n$11 [line 34]\n " shape="box"] 61 -> 36 ; -60 [label="60: BinaryOperatorStmt: Assign \n *&block_size:char *=0 [line 38]\n NULLIFY(&block_size); [line 38]\n APPLY_ABSTRACTION; [line 38]\n " shape="box"] +60 [label="60: BinaryOperatorStmt: Assign \n *&block_size:char *=0 [line 38]\n " shape="box"] 60 -> 36 ; -59 [label="59: Prune (false branch) \n n$10=*&SIL_temp_conditional___n$7:int [line 37]\n PRUNE((n$10 == 0), false); [line 37]\n REMOVE_TEMPS(n$10); [line 37]\n NULLIFY(&SIL_temp_conditional___n$7); [line 37]\n NULLIFY(&spec); [line 37]\n APPLY_ABSTRACTION; [line 37]\n " shape="invhouse"] +59 [label="59: Prune (false branch) \n n$10=*&SIL_temp_conditional___n$7:int [line 37]\n PRUNE((n$10 == 0), false); [line 37]\n " shape="invhouse"] 59 -> 35 ; -58 [label="58: Prune (true branch) \n n$10=*&SIL_temp_conditional___n$7:int [line 37]\n PRUNE((n$10 != 0), true); [line 37]\n REMOVE_TEMPS(n$10); [line 37]\n NULLIFY(&SIL_temp_conditional___n$7); [line 37]\n " shape="invhouse"] +58 [label="58: Prune (true branch) \n n$10=*&SIL_temp_conditional___n$7:int [line 37]\n PRUNE((n$10 != 0), true); [line 37]\n " shape="invhouse"] 58 -> 60 ; -57 [label="57: ConditinalStmt Branch \n *&SIL_temp_conditional___n$7:int =1 [line 37]\n APPLY_ABSTRACTION; [line 37]\n " shape="box"] +57 [label="57: ConditinalStmt Branch \n *&SIL_temp_conditional___n$7:int =1 [line 37]\n " shape="box"] 57 -> 52 ; -56 [label="56: ConditinalStmt Branch \n *&SIL_temp_conditional___n$7:int =0 [line 37]\n APPLY_ABSTRACTION; [line 37]\n " shape="box"] +56 [label="56: ConditinalStmt Branch \n *&SIL_temp_conditional___n$7:int =0 [line 37]\n " shape="box"] 56 -> 52 ; -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 [label="55: Prune (false branch) \n PRUNE((n$9 == 0), false); [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$9); [line 37]\n " shape="invhouse"] +54 [label="54: Prune (true branch) \n PRUNE((n$9 != 0), true); [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 REMOVE_TEMPS(n$8); [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 " shape="box"] 53 -> 54 ; @@ -184,31 +184,31 @@ digraph iCFG { 52 -> 58 ; 52 -> 59 ; -51 [label="51: Prune (false branch) \n n$6=*&SIL_temp_conditional___n$3:int [line 36]\n PRUNE((n$6 == 0), false); [line 36]\n REMOVE_TEMPS(n$6); [line 36]\n NULLIFY(&SIL_temp_conditional___n$3); [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="invhouse"] +51 [label="51: Prune (false branch) \n n$6=*&SIL_temp_conditional___n$3:int [line 36]\n PRUNE((n$6 == 0), false); [line 36]\n " shape="invhouse"] 51 -> 35 ; -50 [label="50: Prune (true branch) \n n$6=*&SIL_temp_conditional___n$3:int [line 36]\n PRUNE((n$6 != 0), true); [line 36]\n REMOVE_TEMPS(n$6); [line 36]\n NULLIFY(&SIL_temp_conditional___n$3); [line 36]\n " shape="invhouse"] +50 [label="50: Prune (true branch) \n n$6=*&SIL_temp_conditional___n$3:int [line 36]\n PRUNE((n$6 != 0), true); [line 36]\n " shape="invhouse"] 50 -> 53 ; -49 [label="49: ConditinalStmt Branch \n *&SIL_temp_conditional___n$3:int =1 [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="box"] +49 [label="49: ConditinalStmt Branch \n *&SIL_temp_conditional___n$3:int =1 [line 36]\n " shape="box"] 49 -> 44 ; -48 [label="48: ConditinalStmt Branch \n *&SIL_temp_conditional___n$3:int =0 [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="box"] +48 [label="48: ConditinalStmt Branch \n *&SIL_temp_conditional___n$3:int =0 [line 36]\n " shape="box"] 48 -> 44 ; -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 [label="47: Prune (false branch) \n PRUNE((n$5 == 0), false); [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$5); [line 36]\n " shape="invhouse"] +46 [label="46: Prune (true branch) \n PRUNE((n$5 != 0), true); [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 REMOVE_TEMPS(n$4); [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 " shape="box"] 45 -> 46 ; @@ -218,27 +218,27 @@ digraph iCFG { 44 -> 50 ; 44 -> 51 ; -43 [label="43: Prune (false branch) \n n$2=*&SIL_temp_conditional___n$0:int [line 36]\n PRUNE((n$2 == 0), false); [line 36]\n REMOVE_TEMPS(n$2); [line 36]\n NULLIFY(&SIL_temp_conditional___n$0); [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="invhouse"] +43 [label="43: Prune (false branch) \n n$2=*&SIL_temp_conditional___n$0:int [line 36]\n PRUNE((n$2 == 0), false); [line 36]\n " shape="invhouse"] 43 -> 35 ; -42 [label="42: Prune (true branch) \n n$2=*&SIL_temp_conditional___n$0:int [line 36]\n PRUNE((n$2 != 0), true); [line 36]\n REMOVE_TEMPS(n$2); [line 36]\n NULLIFY(&SIL_temp_conditional___n$0); [line 36]\n " shape="invhouse"] +42 [label="42: Prune (true branch) \n n$2=*&SIL_temp_conditional___n$0:int [line 36]\n PRUNE((n$2 != 0), true); [line 36]\n " shape="invhouse"] 42 -> 45 ; -41 [label="41: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =1 [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="box"] +41 [label="41: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =1 [line 36]\n " shape="box"] 41 -> 37 ; -40 [label="40: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =0 [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="box"] +40 [label="40: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =0 [line 36]\n " shape="box"] 40 -> 37 ; -39 [label="39: Prune (false branch) \n n$1=*&spec:char * [line 36]\n PRUNE((n$1 == 0), false); [line 36]\n REMOVE_TEMPS(n$1); [line 36]\n NULLIFY(&spec); [line 36]\n " shape="invhouse"] +39 [label="39: Prune (false branch) \n n$1=*&spec:char * [line 36]\n PRUNE((n$1 == 0), false); [line 36]\n " shape="invhouse"] 39 -> 41 ; -38 [label="38: Prune (true branch) \n n$1=*&spec:char * [line 36]\n PRUNE((n$1 != 0), true); [line 36]\n REMOVE_TEMPS(n$1); [line 36]\n NULLIFY(&spec); [line 36]\n " shape="invhouse"] +38 [label="38: Prune (true branch) \n n$1=*&spec:char * [line 36]\n PRUNE((n$1 != 0), true); [line 36]\n " shape="invhouse"] 38 -> 40 ; @@ -259,39 +259,39 @@ digraph iCFG { 34 -> 61 ; -33 [label="33: BinaryOperatorStmt: Assign \n n$7=*&x:int * [line 25]\n *n$7:int =32 [line 25]\n REMOVE_TEMPS(n$7); [line 25]\n NULLIFY(&x); [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="box"] +33 [label="33: BinaryOperatorStmt: Assign \n n$7=*&x:int * [line 25]\n *n$7:int =32 [line 25]\n " shape="box"] 33 -> 15 ; -32 [label="32: BinaryOperatorStmt: Assign \n *&x:int *=17 [line 23]\n NULLIFY(&x); [line 23]\n APPLY_ABSTRACTION; [line 23]\n " shape="box"] +32 [label="32: BinaryOperatorStmt: Assign \n *&x:int *=17 [line 23]\n " shape="box"] 32 -> 15 ; -31 [label="31: Prune (false branch) \n n$6=*&SIL_temp_conditional___n$3:int [line 22]\n PRUNE((n$6 == 0), false); [line 22]\n REMOVE_TEMPS(n$6); [line 22]\n NULLIFY(&SIL_temp_conditional___n$3); [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="invhouse"] +31 [label="31: Prune (false branch) \n n$6=*&SIL_temp_conditional___n$3:int [line 22]\n PRUNE((n$6 == 0), false); [line 22]\n " shape="invhouse"] 31 -> 33 ; -30 [label="30: Prune (true branch) \n n$6=*&SIL_temp_conditional___n$3:int [line 22]\n PRUNE((n$6 != 0), true); [line 22]\n REMOVE_TEMPS(n$6); [line 22]\n NULLIFY(&SIL_temp_conditional___n$3); [line 22]\n NULLIFY(&x); [line 22]\n " shape="invhouse"] +30 [label="30: Prune (true branch) \n n$6=*&SIL_temp_conditional___n$3:int [line 22]\n PRUNE((n$6 != 0), true); [line 22]\n " shape="invhouse"] 30 -> 32 ; -29 [label="29: ConditinalStmt Branch \n *&SIL_temp_conditional___n$3:int =1 [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"] +29 [label="29: ConditinalStmt Branch \n *&SIL_temp_conditional___n$3:int =1 [line 22]\n " shape="box"] 29 -> 24 ; -28 [label="28: ConditinalStmt Branch \n *&SIL_temp_conditional___n$3:int =0 [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"] +28 [label="28: ConditinalStmt Branch \n *&SIL_temp_conditional___n$3:int =0 [line 22]\n " shape="box"] 28 -> 24 ; -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 [label="27: Prune (false branch) \n PRUNE((n$5 == 0), false); [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$5); [line 22]\n " shape="invhouse"] +26 [label="26: Prune (true branch) \n PRUNE((n$5 != 0), true); [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 REMOVE_TEMPS(n$4); [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 " shape="box"] 25 -> 26 ; @@ -301,27 +301,27 @@ digraph iCFG { 24 -> 30 ; 24 -> 31 ; -23 [label="23: Prune (false branch) \n n$2=*&SIL_temp_conditional___n$0:int [line 22]\n PRUNE((n$2 == 0), false); [line 22]\n REMOVE_TEMPS(n$2); [line 22]\n NULLIFY(&SIL_temp_conditional___n$0); [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="invhouse"] +23 [label="23: Prune (false branch) \n n$2=*&SIL_temp_conditional___n$0:int [line 22]\n PRUNE((n$2 == 0), false); [line 22]\n " shape="invhouse"] 23 -> 33 ; -22 [label="22: Prune (true branch) \n n$2=*&SIL_temp_conditional___n$0:int [line 22]\n PRUNE((n$2 != 0), true); [line 22]\n REMOVE_TEMPS(n$2); [line 22]\n NULLIFY(&SIL_temp_conditional___n$0); [line 22]\n " shape="invhouse"] +22 [label="22: Prune (true branch) \n n$2=*&SIL_temp_conditional___n$0:int [line 22]\n PRUNE((n$2 != 0), true); [line 22]\n " shape="invhouse"] 22 -> 25 ; -21 [label="21: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =1 [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"] +21 [label="21: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =1 [line 22]\n " shape="box"] 21 -> 17 ; -20 [label="20: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =0 [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"] +20 [label="20: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =0 [line 22]\n " shape="box"] 20 -> 17 ; -19 [label="19: Prune (false branch) \n n$1=*&x:int * [line 22]\n PRUNE((n$1 == 0), false); [line 22]\n REMOVE_TEMPS(n$1); [line 22]\n " shape="invhouse"] +19 [label="19: Prune (false branch) \n n$1=*&x:int * [line 22]\n PRUNE((n$1 == 0), false); [line 22]\n " shape="invhouse"] 19 -> 21 ; -18 [label="18: Prune (true branch) \n n$1=*&x:int * [line 22]\n PRUNE((n$1 != 0), true); [line 22]\n REMOVE_TEMPS(n$1); [line 22]\n " shape="invhouse"] +18 [label="18: Prune (true branch) \n n$1=*&x:int * [line 22]\n PRUNE((n$1 != 0), true); [line 22]\n " shape="invhouse"] 18 -> 20 ; @@ -330,7 +330,7 @@ digraph iCFG { 17 -> 22 ; 17 -> 23 ; -16 [label="16: between_join_and_exit \n APPLY_ABSTRACTION; [line 22]\n " shape="box"] +16 [label="16: between_join_and_exit \n " shape="box"] 16 -> 14 ; @@ -346,32 +346,32 @@ digraph iCFG { 13 -> 18 ; 13 -> 19 ; -12 [label="12: BinaryOperatorStmt: Assign \n *&x:int *=32 [line 17]\n NULLIFY(&x); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +12 [label="12: BinaryOperatorStmt: Assign \n *&x:int *=32 [line 17]\n " shape="box"] 12 -> 3 ; -11 [label="11: BinaryOperatorStmt: Assign \n *&x:int *=17 [line 15]\n NULLIFY(&x); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +11 [label="11: BinaryOperatorStmt: Assign \n *&x:int *=17 [line 15]\n " shape="box"] 11 -> 3 ; -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 [label="10: Prune (false branch) \n PRUNE(((n$2 == 2) == 0), false); [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$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 " 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 REMOVE_TEMPS(n$1); [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 " shape="box"] 8 -> 9 ; 8 -> 10 ; -7 [label="7: Prune (false branch) \n PRUNE(((n$0 == 0) == 0), false); [line 14]\n REMOVE_TEMPS(n$0); [line 14]\n " shape="invhouse"] +7 [label="7: Prune (false branch) \n PRUNE(((n$0 == 0) == 0), false); [line 14]\n " shape="invhouse"] 7 -> 8 ; -6 [label="6: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 14]\n REMOVE_TEMPS(n$0); [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="invhouse"] +6 [label="6: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 14]\n " shape="invhouse"] 6 -> 11 ; @@ -380,7 +380,7 @@ digraph iCFG { 5 -> 6 ; 5 -> 7 ; -4 [label="4: between_join_and_exit \n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +4 [label="4: between_join_and_exit \n " shape="box"] 4 -> 2 ; 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 4d883f47e..50fd263f1 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 @@ -1,22 +1,22 @@ /* @generated */ digraph iCFG { -34 [label="34: Return Stmt \n n$2=*&SIL_temp_conditional___n$0:int [line 29]\n *&return:int =n$2 [line 29]\n REMOVE_TEMPS(n$2); [line 29]\n NULLIFY(&SIL_temp_conditional___n$0); [line 29]\n APPLY_ABSTRACTION; [line 29]\n " shape="box"] +34 [label="34: Return Stmt \n n$2=*&SIL_temp_conditional___n$0:int [line 29]\n *&return:int =n$2 [line 29]\n " shape="box"] 34 -> 28 ; -33 [label="33: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =1 [line 29]\n APPLY_ABSTRACTION; [line 29]\n " shape="box"] +33 [label="33: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =1 [line 29]\n " shape="box"] 33 -> 29 ; -32 [label="32: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =0 [line 29]\n APPLY_ABSTRACTION; [line 29]\n " shape="box"] +32 [label="32: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =0 [line 29]\n " shape="box"] 32 -> 29 ; -31 [label="31: Prune (false branch) \n n$1=*&x:int [line 29]\n PRUNE((n$1 == 0), false); [line 29]\n REMOVE_TEMPS(n$1); [line 29]\n NULLIFY(&x); [line 29]\n " shape="invhouse"] +31 [label="31: Prune (false branch) \n n$1=*&x:int [line 29]\n PRUNE((n$1 == 0), false); [line 29]\n " shape="invhouse"] 31 -> 33 ; -30 [label="30: Prune (true branch) \n n$1=*&x:int [line 29]\n PRUNE((n$1 != 0), true); [line 29]\n REMOVE_TEMPS(n$1); [line 29]\n NULLIFY(&x); [line 29]\n " shape="invhouse"] +30 [label="30: Prune (true branch) \n n$1=*&x:int [line 29]\n PRUNE((n$1 != 0), true); [line 29]\n " shape="invhouse"] 30 -> 32 ; @@ -32,40 +32,40 @@ digraph iCFG { 27 -> 30 ; 27 -> 31 ; -26 [label="26: Return Stmt \n *&return:int =0 [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="box"] +26 [label="26: Return Stmt \n *&return:int =0 [line 25]\n " shape="box"] 26 -> 14 ; -25 [label="25: Return Stmt \n *&return:int =1 [line 23]\n APPLY_ABSTRACTION; [line 23]\n " shape="box"] +25 [label="25: Return Stmt \n *&return:int =1 [line 23]\n " shape="box"] 25 -> 14 ; -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 [label="24: Prune (false branch) \n PRUNE((n$3 == 0), false); [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$3); [line 22]\n " shape="invhouse"] +23 [label="23: Prune (true branch) \n PRUNE((n$3 != 0), true); [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 REMOVE_TEMPS(n$2); [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 " shape="box"] 22 -> 23 ; 22 -> 24 ; -21 [label="21: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =1 [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"] +21 [label="21: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =1 [line 22]\n " shape="box"] 21 -> 17 ; -20 [label="20: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =0 [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"] +20 [label="20: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =0 [line 22]\n " shape="box"] 20 -> 17 ; -19 [label="19: Prune (false branch) \n n$1=*&x:int [line 22]\n PRUNE((n$1 == 0), false); [line 22]\n REMOVE_TEMPS(n$1); [line 22]\n NULLIFY(&x); [line 22]\n " shape="invhouse"] +19 [label="19: Prune (false branch) \n n$1=*&x:int [line 22]\n PRUNE((n$1 == 0), false); [line 22]\n " shape="invhouse"] 19 -> 21 ; -18 [label="18: Prune (true branch) \n n$1=*&x:int [line 22]\n PRUNE((n$1 != 0), true); [line 22]\n REMOVE_TEMPS(n$1); [line 22]\n NULLIFY(&x); [line 22]\n " shape="invhouse"] +18 [label="18: Prune (true branch) \n n$1=*&x:int [line 22]\n PRUNE((n$1 != 0), true); [line 22]\n " shape="invhouse"] 18 -> 20 ; @@ -73,7 +73,7 @@ digraph iCFG { 17 -> 22 ; -16 [label="16: between_join_and_exit \n APPLY_ABSTRACTION; [line 22]\n " shape="box"] +16 [label="16: between_join_and_exit \n " shape="box"] 16 -> 14 ; @@ -89,28 +89,28 @@ digraph iCFG { 13 -> 18 ; 13 -> 19 ; -12 [label="12: Return Stmt \n *&return:int =0 [line 16]\n APPLY_ABSTRACTION; [line 16]\n " shape="box"] +12 [label="12: Return Stmt \n *&return:int =0 [line 16]\n " shape="box"] 12 -> 5 ; -11 [label="11: Return Stmt \n *&return:int =1 [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +11 [label="11: Return Stmt \n *&return:int =1 [line 14]\n " shape="box"] 11 -> 5 ; -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 [label="10: Prune (false branch) \n PRUNE((n$1 == 0), false); [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$1); [line 13]\n " shape="invhouse"] +9 [label="9: Prune (true branch) \n PRUNE((n$1 != 0), true); [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 REMOVE_TEMPS(n$0); [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 " shape="box"] 8 -> 9 ; 8 -> 10 ; -7 [label="7: between_join_and_exit \n APPLY_ABSTRACTION; [line 13]\n " shape="box"] +7 [label="7: between_join_and_exit \n " shape="box"] 7 -> 5 ; @@ -125,7 +125,7 @@ digraph iCFG { 4 -> 8 ; -3 [label="3: Return Stmt \n n$0=*&x:int [line 10]\n *&return:int =n$0 [line 10]\n REMOVE_TEMPS(n$0); [line 10]\n NULLIFY(&x); [line 10]\n APPLY_ABSTRACTION; [line 10]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&x:int [line 10]\n *&return:int =n$0 [line 10]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/conditional_operator/member_access.c.dot b/infer/tests/codetoanalyze/c/frontend/conditional_operator/member_access.c.dot index e2200de9b..88332ca51 100644 --- a/infer/tests/codetoanalyze/c/frontend/conditional_operator/member_access.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/conditional_operator/member_access.c.dot @@ -1,14 +1,14 @@ /* @generated */ digraph iCFG { -24 [label="24: DeclStmt \n n$3=*&SIL_temp_conditional___n$0:int [line 22]\n *&z:int =n$3 [line 22]\n REMOVE_TEMPS(n$3); [line 22]\n NULLIFY(&SIL_temp_conditional___n$0); [line 22]\n NULLIFY(&z); [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"] +24 [label="24: DeclStmt \n n$3=*&SIL_temp_conditional___n$0:int [line 22]\n *&z:int =n$3 [line 22]\n " shape="box"] 24 -> 18 ; -23 [label="23: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =0 [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"] +23 [label="23: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =0 [line 22]\n " shape="box"] 23 -> 19 ; -22 [label="22: ConditinalStmt Branch \n n$1=_fun_ret_ptr(4:int ) [line 22]\n n$2=*n$1.field:int [line 22]\n *&SIL_temp_conditional___n$0:int =n$2 [line 22]\n REMOVE_TEMPS(n$1,n$2); [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"] +22 [label="22: ConditinalStmt Branch \n n$1=_fun_ret_ptr(4:int ) [line 22]\n n$2=*n$1.field:int [line 22]\n *&SIL_temp_conditional___n$0:int =n$2 [line 22]\n " shape="box"] 22 -> 19 ; @@ -32,15 +32,15 @@ digraph iCFG { 17 -> 20 ; 17 -> 21 ; -16 [label="16: DeclStmt \n n$1=*&SIL_temp_conditional___n$0:int [line 20]\n n$2=_fun_ret_ptr(n$1:int ) [line 20]\n n$3=*n$2.field:int [line 20]\n *&z:int =n$3 [line 20]\n REMOVE_TEMPS(n$1,n$2,n$3); [line 20]\n NULLIFY(&SIL_temp_conditional___n$0); [line 20]\n NULLIFY(&z); [line 20]\n APPLY_ABSTRACTION; [line 20]\n " shape="box"] +16 [label="16: DeclStmt \n n$1=*&SIL_temp_conditional___n$0:int [line 20]\n n$2=_fun_ret_ptr(n$1:int ) [line 20]\n n$3=*n$2.field:int [line 20]\n *&z:int =n$3 [line 20]\n " shape="box"] 16 -> 10 ; -15 [label="15: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =3 [line 20]\n APPLY_ABSTRACTION; [line 20]\n " shape="box"] +15 [label="15: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =3 [line 20]\n " shape="box"] 15 -> 11 ; -14 [label="14: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =2 [line 20]\n APPLY_ABSTRACTION; [line 20]\n " shape="box"] +14 [label="14: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =2 [line 20]\n " shape="box"] 14 -> 11 ; @@ -64,15 +64,15 @@ digraph iCFG { 9 -> 12 ; 9 -> 13 ; -8 [label="8: DeclStmt \n n$3=*&SIL_temp_conditional___n$0:struct s * [line 17]\n n$4=*n$3.field:int [line 17]\n *&z:int =n$4 [line 17]\n REMOVE_TEMPS(n$3,n$4); [line 17]\n NULLIFY(&SIL_temp_conditional___n$0); [line 17]\n NULLIFY(&z); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +8 [label="8: DeclStmt \n n$3=*&SIL_temp_conditional___n$0:struct s * [line 17]\n n$4=*n$3.field:int [line 17]\n *&z:int =n$4 [line 17]\n " shape="box"] 8 -> 2 ; -7 [label="7: ConditinalStmt Branch \n n$2=*&q:struct s * [line 17]\n *&SIL_temp_conditional___n$0:struct s *=n$2 [line 17]\n REMOVE_TEMPS(n$2); [line 17]\n NULLIFY(&q); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +7 [label="7: ConditinalStmt Branch \n n$2=*&q:struct s * [line 17]\n *&SIL_temp_conditional___n$0:struct s *=n$2 [line 17]\n " shape="box"] 7 -> 3 ; -6 [label="6: ConditinalStmt Branch \n n$1=*&p:struct s * [line 17]\n *&SIL_temp_conditional___n$0:struct s *=n$1 [line 17]\n REMOVE_TEMPS(n$1); [line 17]\n NULLIFY(&p); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +6 [label="6: ConditinalStmt Branch \n n$1=*&p:struct s * [line 17]\n *&SIL_temp_conditional___n$0:struct s *=n$1 [line 17]\n " shape="box"] 6 -> 3 ; diff --git a/infer/tests/codetoanalyze/c/frontend/conditional_operator/preincrement.c.dot b/infer/tests/codetoanalyze/c/frontend/conditional_operator/preincrement.c.dot index 34b55da88..2e383c903 100644 --- a/infer/tests/codetoanalyze/c/frontend/conditional_operator/preincrement.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/conditional_operator/preincrement.c.dot @@ -1,20 +1,20 @@ /* @generated */ digraph iCFG { -26 [label="26: BinaryOperatorStmt: AddAssign \n n$16=*&p:struct s * [line 15]\n n$17=*n$16.x:int [line 15]\n *n$16.x:int =(n$17 + 1) [line 15]\n REMOVE_TEMPS(n$16,n$17); [line 15]\n " shape="box"] +26 [label="26: BinaryOperatorStmt: AddAssign \n n$16=*&p:struct s * [line 15]\n n$17=*n$16.x:int [line 15]\n *n$16.x:int =(n$17 + 1) [line 15]\n " shape="box"] 26 -> 21 ; 26 -> 22 ; -25 [label="25: BinaryOperatorStmt: AddAssign \n n$14=*&SIL_temp_conditional___n$11:struct s * [line 16]\n n$15=*n$14.x:int [line 16]\n *n$14.x:int =(n$15 + 1) [line 16]\n REMOVE_TEMPS(n$14,n$15); [line 16]\n NULLIFY(&SIL_temp_conditional___n$11); [line 16]\n " shape="box"] +25 [label="25: BinaryOperatorStmt: AddAssign \n n$14=*&SIL_temp_conditional___n$11:struct s * [line 16]\n n$15=*n$14.x:int [line 16]\n *n$14.x:int =(n$15 + 1) [line 16]\n " shape="box"] 25 -> 15 ; 25 -> 16 ; -24 [label="24: ConditinalStmt Branch \n n$13=*&p:struct s * [line 16]\n *&SIL_temp_conditional___n$11:struct s *=n$13 [line 16]\n REMOVE_TEMPS(n$13); [line 16]\n APPLY_ABSTRACTION; [line 16]\n " shape="box"] +24 [label="24: ConditinalStmt Branch \n n$13=*&p:struct s * [line 16]\n *&SIL_temp_conditional___n$11:struct s *=n$13 [line 16]\n " shape="box"] 24 -> 20 ; -23 [label="23: ConditinalStmt Branch \n n$12=*&p:struct s * [line 16]\n *&SIL_temp_conditional___n$11:struct s *=n$12 [line 16]\n REMOVE_TEMPS(n$12); [line 16]\n APPLY_ABSTRACTION; [line 16]\n " shape="box"] +23 [label="23: ConditinalStmt Branch \n n$12=*&p:struct s * [line 16]\n *&SIL_temp_conditional___n$11:struct s *=n$12 [line 16]\n " shape="box"] 23 -> 20 ; @@ -30,16 +30,16 @@ digraph iCFG { 20 -> 25 ; -19 [label="19: BinaryOperatorStmt: AddAssign \n n$7=*&p:struct s * [line 17]\n n$9=*&SIL_temp_conditional___n$8:int [line 17]\n n$10=*n$7.x:int [line 17]\n *n$7.x:int =(n$10 + n$9) [line 17]\n REMOVE_TEMPS(n$7,n$9,n$10); [line 17]\n NULLIFY(&SIL_temp_conditional___n$8); [line 17]\n " shape="box"] +19 [label="19: BinaryOperatorStmt: AddAssign \n n$7=*&p:struct s * [line 17]\n n$9=*&SIL_temp_conditional___n$8:int [line 17]\n n$10=*n$7.x:int [line 17]\n *n$7.x:int =(n$10 + n$9) [line 17]\n " shape="box"] 19 -> 4 ; 19 -> 5 ; -18 [label="18: ConditinalStmt Branch \n *&SIL_temp_conditional___n$8:int =7 [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +18 [label="18: ConditinalStmt Branch \n *&SIL_temp_conditional___n$8:int =7 [line 17]\n " shape="box"] 18 -> 14 ; -17 [label="17: ConditinalStmt Branch \n *&SIL_temp_conditional___n$8:int =3 [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +17 [label="17: ConditinalStmt Branch \n *&SIL_temp_conditional___n$8:int =3 [line 17]\n " shape="box"] 17 -> 14 ; @@ -55,15 +55,15 @@ digraph iCFG { 14 -> 19 ; -13 [label="13: BinaryOperatorStmt: AddAssign \n n$3=*&SIL_temp_conditional___n$0:struct s * [line 18]\n n$5=*&SIL_temp_conditional___n$4:int [line 18]\n n$6=*n$3.x:int [line 18]\n *n$3.x:int =(n$6 + n$5) [line 18]\n REMOVE_TEMPS(n$3,n$5,n$6); [line 18]\n NULLIFY(&SIL_temp_conditional___n$0); [line 18]\n NULLIFY(&SIL_temp_conditional___n$4); [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +13 [label="13: BinaryOperatorStmt: AddAssign \n n$3=*&SIL_temp_conditional___n$0:struct s * [line 18]\n n$5=*&SIL_temp_conditional___n$4:int [line 18]\n n$6=*n$3.x:int [line 18]\n *n$3.x:int =(n$6 + n$5) [line 18]\n " shape="box"] 13 -> 2 ; -12 [label="12: ConditinalStmt Branch \n *&SIL_temp_conditional___n$4:int =7 [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +12 [label="12: ConditinalStmt Branch \n *&SIL_temp_conditional___n$4:int =7 [line 18]\n " shape="box"] 12 -> 8 ; -11 [label="11: ConditinalStmt Branch \n *&SIL_temp_conditional___n$4:int =3 [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +11 [label="11: ConditinalStmt Branch \n *&SIL_temp_conditional___n$4:int =3 [line 18]\n " shape="box"] 11 -> 8 ; @@ -79,11 +79,11 @@ digraph iCFG { 8 -> 13 ; -7 [label="7: ConditinalStmt Branch \n n$2=*&p:struct s * [line 18]\n *&SIL_temp_conditional___n$0:struct s *=n$2 [line 18]\n REMOVE_TEMPS(n$2); [line 18]\n NULLIFY(&p); [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +7 [label="7: ConditinalStmt Branch \n n$2=*&p:struct s * [line 18]\n *&SIL_temp_conditional___n$0:struct s *=n$2 [line 18]\n " shape="box"] 7 -> 3 ; -6 [label="6: ConditinalStmt Branch \n n$1=*&p:struct s * [line 18]\n *&SIL_temp_conditional___n$0:struct s *=n$1 [line 18]\n REMOVE_TEMPS(n$1); [line 18]\n NULLIFY(&p); [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +6 [label="6: ConditinalStmt Branch \n n$1=*&p:struct s * [line 18]\n *&SIL_temp_conditional___n$0:struct s *=n$1 [line 18]\n " shape="box"] 6 -> 3 ; diff --git a/infer/tests/codetoanalyze/c/frontend/conditional_operator/unary_operator.c.dot b/infer/tests/codetoanalyze/c/frontend/conditional_operator/unary_operator.c.dot index 47c95ad40..072e72902 100644 --- a/infer/tests/codetoanalyze/c/frontend/conditional_operator/unary_operator.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/conditional_operator/unary_operator.c.dot @@ -1,15 +1,15 @@ /* @generated */ digraph iCFG { -20 [label="20: BinaryOperatorStmt: Assign \n n$13=*&SIL_temp_conditional___n$10:int * [line 12]\n n$14=*n$13:int [line 12]\n *&x:int =n$14 [line 12]\n REMOVE_TEMPS(n$13,n$14); [line 12]\n NULLIFY(&SIL_temp_conditional___n$10); [line 12]\n NULLIFY(&x); [line 12]\n " shape="box"] +20 [label="20: BinaryOperatorStmt: Assign \n n$13=*&SIL_temp_conditional___n$10:int * [line 12]\n n$14=*n$13:int [line 12]\n *&x:int =n$14 [line 12]\n " shape="box"] 20 -> 10 ; 20 -> 11 ; -19 [label="19: ConditinalStmt Branch \n n$12=*&p:int * [line 12]\n *&SIL_temp_conditional___n$10:int *=n$12 [line 12]\n REMOVE_TEMPS(n$12); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +19 [label="19: ConditinalStmt Branch \n n$12=*&p:int * [line 12]\n *&SIL_temp_conditional___n$10:int *=n$12 [line 12]\n " shape="box"] 19 -> 15 ; -18 [label="18: ConditinalStmt Branch \n n$11=*&p:int * [line 12]\n *&SIL_temp_conditional___n$10:int *=n$11 [line 12]\n REMOVE_TEMPS(n$11); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +18 [label="18: ConditinalStmt Branch \n n$11=*&p:int * [line 12]\n *&SIL_temp_conditional___n$10:int *=n$11 [line 12]\n " shape="box"] 18 -> 15 ; @@ -25,16 +25,16 @@ digraph iCFG { 15 -> 20 ; -14 [label="14: DeclStmt \n n$8=*&SIL_temp_conditional___n$5:int * [line 14]\n n$9=*n$8:int [line 14]\n *&y:int =n$9 [line 14]\n REMOVE_TEMPS(n$8,n$9); [line 14]\n NULLIFY(&SIL_temp_conditional___n$5); [line 14]\n NULLIFY(&y); [line 14]\n " shape="box"] +14 [label="14: DeclStmt \n n$8=*&SIL_temp_conditional___n$5:int * [line 14]\n n$9=*n$8:int [line 14]\n *&y:int =n$9 [line 14]\n " shape="box"] 14 -> 4 ; 14 -> 5 ; -13 [label="13: ConditinalStmt Branch \n n$7=*&p:int * [line 14]\n *&SIL_temp_conditional___n$5:int *=n$7 [line 14]\n REMOVE_TEMPS(n$7); [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +13 [label="13: ConditinalStmt Branch \n n$7=*&p:int * [line 14]\n *&SIL_temp_conditional___n$5:int *=n$7 [line 14]\n " shape="box"] 13 -> 9 ; -12 [label="12: ConditinalStmt Branch \n n$6=*&p:int * [line 14]\n *&SIL_temp_conditional___n$5:int *=n$6 [line 14]\n REMOVE_TEMPS(n$6); [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +12 [label="12: ConditinalStmt Branch \n n$6=*&p:int * [line 14]\n *&SIL_temp_conditional___n$5:int *=n$6 [line 14]\n " shape="box"] 12 -> 9 ; @@ -50,15 +50,15 @@ digraph iCFG { 9 -> 14 ; -8 [label="8: UnaryOperator \n n$3=*&SIL_temp_conditional___n$0:int * [line 16]\n REMOVE_TEMPS(n$3); [line 16]\n NULLIFY(&SIL_temp_conditional___n$0); [line 16]\n APPLY_ABSTRACTION; [line 16]\n " shape="box"] +8 [label="8: UnaryOperator \n n$3=*&SIL_temp_conditional___n$0:int * [line 16]\n " shape="box"] 8 -> 2 ; -7 [label="7: ConditinalStmt Branch \n n$2=*&p:int * [line 16]\n *&SIL_temp_conditional___n$0:int *=n$2 [line 16]\n REMOVE_TEMPS(n$2); [line 16]\n NULLIFY(&p); [line 16]\n APPLY_ABSTRACTION; [line 16]\n " shape="box"] +7 [label="7: ConditinalStmt Branch \n n$2=*&p:int * [line 16]\n *&SIL_temp_conditional___n$0:int *=n$2 [line 16]\n " shape="box"] 7 -> 3 ; -6 [label="6: ConditinalStmt Branch \n n$1=*&p:int * [line 16]\n *&SIL_temp_conditional___n$0:int *=n$1 [line 16]\n REMOVE_TEMPS(n$1); [line 16]\n NULLIFY(&p); [line 16]\n APPLY_ABSTRACTION; [line 16]\n " shape="box"] +6 [label="6: ConditinalStmt Branch \n n$1=*&p:int * [line 16]\n *&SIL_temp_conditional___n$0:int *=n$1 [line 16]\n " shape="box"] 6 -> 3 ; diff --git a/infer/tests/codetoanalyze/c/frontend/enumeration/enum.c.dot b/infer/tests/codetoanalyze/c/frontend/enumeration/enum.c.dot index 5e0ba322b..d7cf8327d 100644 --- a/infer/tests/codetoanalyze/c/frontend/enumeration/enum.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/enumeration/enum.c.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -8 [label="8: BinaryOperatorStmt: Assign \n *&today:int =0 [line 22]\n NULLIFY(&today); [line 22]\n " shape="box"] +8 [label="8: BinaryOperatorStmt: Assign \n *&today:int =0 [line 22]\n " shape="box"] 8 -> 7 ; @@ -8,19 +8,19 @@ digraph iCFG { 7 -> 6 ; -6 [label="6: BinaryOperatorStmt: Assign \n n$0=*&today:int [line 24]\n *&today:int =(n$0 + 4) [line 24]\n REMOVE_TEMPS(n$0); [line 24]\n NULLIFY(&today); [line 24]\n " shape="box"] +6 [label="6: BinaryOperatorStmt: Assign \n n$0=*&today:int [line 24]\n *&today:int =(n$0 + 4) [line 24]\n " shape="box"] 6 -> 5 ; -5 [label="5: BinaryOperatorStmt: Assign \n *&today:int =(2 + 1) [line 25]\n NULLIFY(&today); [line 25]\n " shape="box"] +5 [label="5: BinaryOperatorStmt: Assign \n *&today:int =(2 + 1) [line 25]\n " shape="box"] 5 -> 4 ; -4 [label="4: DeclStmt \n *&i:int =(2 + (2 - 0)) [line 26]\n NULLIFY(&i); [line 26]\n " shape="box"] +4 [label="4: DeclStmt \n *&i:int =(2 + (2 - 0)) [line 26]\n " shape="box"] 4 -> 3 ; -3 [label="3: Return Stmt \n *&return:int =0 [line 27]\n APPLY_ABSTRACTION; [line 27]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =0 [line 27]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/enumeration/enum_bitmask.c.dot b/infer/tests/codetoanalyze/c/frontend/enumeration/enum_bitmask.c.dot index 35fc1c09b..4b7853c0f 100644 --- a/infer/tests/codetoanalyze/c/frontend/enumeration/enum_bitmask.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/enumeration/enum_bitmask.c.dot @@ -1,10 +1,10 @@ /* @generated */ digraph iCFG { -4 [label="4: DeclStmt \n *&option1:int =(1 << 0) [line 16]\n NULLIFY(&option1); [line 16]\n " shape="box"] +4 [label="4: DeclStmt \n *&option1:int =(1 << 0) [line 16]\n " shape="box"] 4 -> 3 ; -3 [label="3: DeclStmt \n *&option2:int =(1 << 1) [line 17]\n NULLIFY(&option2); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +3 [label="3: DeclStmt \n *&option2:int =(1 << 1) [line 17]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/enumeration/other_enum.c.dot b/infer/tests/codetoanalyze/c/frontend/enumeration/other_enum.c.dot index c1e18fce7..8bb1346df 100644 --- a/infer/tests/codetoanalyze/c/frontend/enumeration/other_enum.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/enumeration/other_enum.c.dot @@ -8,19 +8,19 @@ digraph iCFG { 19 -> 14 ; -18 [label="18: Return Stmt \n *&return:int =0 [line 28]\n APPLY_ABSTRACTION; [line 28]\n " shape="box"] +18 [label="18: Return Stmt \n *&return:int =0 [line 28]\n " shape="box"] 18 -> 11 ; -17 [label="17: Return Stmt \n n$1=*&foo_g:int [line 26]\n n$2=*&foo_a:int [line 26]\n *&return:int =(n$1 / n$2) [line 26]\n REMOVE_TEMPS(n$1,n$2); [line 26]\n NULLIFY(&foo_a); [line 26]\n NULLIFY(&foo_g); [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"] +17 [label="17: Return Stmt \n n$1=*&foo_g:int [line 26]\n n$2=*&foo_a:int [line 26]\n *&return:int =(n$1 / n$2) [line 26]\n " shape="box"] 17 -> 11 ; -16 [label="16: Prune (false branch) \n PRUNE(((n$0 == 12) == 0), false); [line 25]\n REMOVE_TEMPS(n$0); [line 25]\n NULLIFY(&foo_a); [line 25]\n NULLIFY(&foo_g); [line 25]\n " shape="invhouse"] +16 [label="16: Prune (false branch) \n PRUNE(((n$0 == 12) == 0), false); [line 25]\n " shape="invhouse"] 16 -> 18 ; -15 [label="15: Prune (true branch) \n PRUNE(((n$0 == 12) != 0), true); [line 25]\n REMOVE_TEMPS(n$0); [line 25]\n " shape="invhouse"] +15 [label="15: Prune (true branch) \n PRUNE(((n$0 == 12) != 0), true); [line 25]\n " shape="invhouse"] 15 -> 17 ; @@ -29,7 +29,7 @@ digraph iCFG { 14 -> 15 ; 14 -> 16 ; -13 [label="13: between_join_and_exit \n APPLY_ABSTRACTION; [line 25]\n " shape="box"] +13 [label="13: between_join_and_exit \n " shape="box"] 13 -> 11 ; @@ -44,31 +44,31 @@ digraph iCFG { 10 -> 20 ; -9 [label="9: DeclStmt \n *&foo_a:int =0 [line 13]\n NULLIFY(&foo_a); [line 13]\n " shape="box"] +9 [label="9: DeclStmt \n *&foo_a:int =0 [line 13]\n " shape="box"] 9 -> 8 ; -8 [label="8: DeclStmt \n *&foo_b:int =1 [line 14]\n NULLIFY(&foo_b); [line 14]\n " shape="box"] +8 [label="8: DeclStmt \n *&foo_b:int =1 [line 14]\n " shape="box"] 8 -> 7 ; -7 [label="7: DeclStmt \n *&foo_c:int =10 [line 15]\n NULLIFY(&foo_c); [line 15]\n " shape="box"] +7 [label="7: DeclStmt \n *&foo_c:int =10 [line 15]\n " shape="box"] 7 -> 6 ; -6 [label="6: DeclStmt \n *&foo_d:int =11 [line 16]\n NULLIFY(&foo_d); [line 16]\n " shape="box"] +6 [label="6: DeclStmt \n *&foo_d:int =11 [line 16]\n " shape="box"] 6 -> 5 ; -5 [label="5: DeclStmt \n *&foo_e:int =1 [line 17]\n NULLIFY(&foo_e); [line 17]\n " shape="box"] +5 [label="5: DeclStmt \n *&foo_e:int =1 [line 17]\n " shape="box"] 5 -> 4 ; -4 [label="4: DeclStmt \n *&foo_f:int =2 [line 18]\n NULLIFY(&foo_f); [line 18]\n " shape="box"] +4 [label="4: DeclStmt \n *&foo_f:int =2 [line 18]\n " shape="box"] 4 -> 3 ; -3 [label="3: DeclStmt \n *&foo_g:int =(2 + 10) [line 19]\n NULLIFY(&foo_g); [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +3 [label="3: DeclStmt \n *&foo_g:int =(2 + 10) [line 19]\n " shape="box"] 3 -> 2 ; 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 f7d5d906e..418a58c9c 100644 --- a/infer/tests/codetoanalyze/c/frontend/gotostmt/goto_ex.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/gotostmt/goto_ex.c.dot @@ -13,11 +13,11 @@ digraph iCFG { 250 -> 248 ; 250 -> 249 ; -249 [label="249: Prune (false branch) \n n$10=*&q:int [line 171]\n PRUNE((n$10 == 0), false); [line 171]\n REMOVE_TEMPS(n$10); [line 171]\n NULLIFY(&q); [line 171]\n " shape="invhouse"] +249 [label="249: Prune (false branch) \n n$10=*&q:int [line 171]\n PRUNE((n$10 == 0), false); [line 171]\n " shape="invhouse"] 249 -> 247 ; -248 [label="248: Prune (true branch) \n n$10=*&q:int [line 171]\n PRUNE((n$10 != 0), true); [line 171]\n REMOVE_TEMPS(n$10); [line 171]\n NULLIFY(&q); [line 171]\n APPLY_ABSTRACTION; [line 171]\n " shape="invhouse"] +248 [label="248: Prune (true branch) \n n$10=*&q:int [line 171]\n PRUNE((n$10 != 0), true); [line 171]\n " shape="invhouse"] 248 -> 245 ; @@ -25,7 +25,7 @@ digraph iCFG { 247 -> 228 ; -246 [label="246: DeclStmt \n n$7=*&i:int [line 176]\n n$8=*&j:int [line 176]\n n$9=*&k:int [line 176]\n *&v:int =((n$7 + n$8) + n$9) [line 176]\n REMOVE_TEMPS(n$7,n$8,n$9); [line 176]\n " shape="box"] +246 [label="246: DeclStmt \n n$7=*&i:int [line 176]\n n$8=*&j:int [line 176]\n n$9=*&k:int [line 176]\n *&v:int =((n$7 + n$8) + n$9) [line 176]\n " shape="box"] 246 -> 241 ; @@ -33,19 +33,19 @@ digraph iCFG { 245 -> 244 ; -244 [label="244: Call _fun_printf \n n$6=_fun_printf(\"wow\\n\":char *) [line 179]\n REMOVE_TEMPS(n$6); [line 179]\n APPLY_ABSTRACTION; [line 179]\n " shape="box"] +244 [label="244: Call _fun_printf \n n$6=_fun_printf(\"wow\\n\":char *) [line 179]\n " shape="box"] 244 -> 240 ; -243 [label="243: Prune (false branch) \n PRUNE(((n$5 >= 15) == 0), false); [line 177]\n REMOVE_TEMPS(n$5); [line 177]\n APPLY_ABSTRACTION; [line 177]\n " shape="invhouse"] +243 [label="243: Prune (false branch) \n PRUNE(((n$5 >= 15) == 0), false); [line 177]\n " shape="invhouse"] 243 -> 240 ; -242 [label="242: Prune (true branch) \n PRUNE(((n$5 >= 15) != 0), true); [line 177]\n REMOVE_TEMPS(n$5); [line 177]\n APPLY_ABSTRACTION; [line 177]\n " shape="invhouse"] +242 [label="242: Prune (true branch) \n PRUNE(((n$5 >= 15) != 0), true); [line 177]\n " shape="invhouse"] 242 -> 245 ; -241 [label="241: BinaryOperatorStmt: GE \n n$5=*&v:int [line 177]\n NULLIFY(&v); [line 177]\n " shape="box"] +241 [label="241: BinaryOperatorStmt: GE \n n$5=*&v:int [line 177]\n " shape="box"] 241 -> 242 ; @@ -54,11 +54,11 @@ digraph iCFG { 240 -> 236 ; -239 [label="239: Prune (false branch) \n PRUNE(((n$4 < 10) == 0), false); [line 175]\n REMOVE_TEMPS(n$4); [line 175]\n APPLY_ABSTRACTION; [line 175]\n " shape="invhouse"] +239 [label="239: Prune (false branch) \n PRUNE(((n$4 < 10) == 0), false); [line 175]\n " shape="invhouse"] 239 -> 232 ; -238 [label="238: Prune (true branch) \n PRUNE(((n$4 < 10) != 0), true); [line 175]\n REMOVE_TEMPS(n$4); [line 175]\n " shape="invhouse"] +238 [label="238: Prune (true branch) \n PRUNE(((n$4 < 10) != 0), true); [line 175]\n " shape="invhouse"] 238 -> 246 ; @@ -71,11 +71,11 @@ digraph iCFG { 236 -> 237 ; -235 [label="235: Prune (false branch) \n PRUNE(((n$3 < 10) == 0), false); [line 174]\n REMOVE_TEMPS(n$3); [line 174]\n APPLY_ABSTRACTION; [line 174]\n " shape="invhouse"] +235 [label="235: Prune (false branch) \n PRUNE(((n$3 < 10) == 0), false); [line 174]\n " shape="invhouse"] 235 -> 228 ; -234 [label="234: Prune (true branch) \n PRUNE(((n$3 < 10) != 0), true); [line 174]\n REMOVE_TEMPS(n$3); [line 174]\n APPLY_ABSTRACTION; [line 174]\n " shape="invhouse"] +234 [label="234: Prune (true branch) \n PRUNE(((n$3 < 10) != 0), true); [line 174]\n " shape="invhouse"] 234 -> 236 ; @@ -88,11 +88,11 @@ digraph iCFG { 232 -> 233 ; -231 [label="231: Prune (false branch) \n PRUNE(((n$2 < 10) == 0), false); [line 173]\n REMOVE_TEMPS(n$2); [line 173]\n NULLIFY(&i); [line 173]\n NULLIFY(&j); [line 173]\n NULLIFY(&k); [line 173]\n " shape="invhouse"] +231 [label="231: Prune (false branch) \n PRUNE(((n$2 < 10) == 0), false); [line 173]\n " shape="invhouse"] 231 -> 227 ; -230 [label="230: Prune (true branch) \n PRUNE(((n$2 < 10) != 0), true); [line 173]\n REMOVE_TEMPS(n$2); [line 173]\n APPLY_ABSTRACTION; [line 173]\n " shape="invhouse"] +230 [label="230: Prune (true branch) \n PRUNE(((n$2 < 10) != 0), true); [line 173]\n " shape="invhouse"] 230 -> 232 ; @@ -109,7 +109,7 @@ digraph iCFG { 227 -> 226 ; -226 [label="226: Call _fun_printf \n n$1=_fun_printf(\"out!\\n\":char *) [line 186]\n REMOVE_TEMPS(n$1); [line 186]\n " shape="box"] +226 [label="226: Call _fun_printf \n n$1=_fun_printf(\"out!\\n\":char *) [line 186]\n " shape="box"] 226 -> 225 ; @@ -117,11 +117,11 @@ digraph iCFG { 225 -> 224 ; -224 [label="224: Call _fun_printf \n n$0=_fun_printf(\"terminating!\\n\":char *) [line 188]\n REMOVE_TEMPS(n$0); [line 188]\n " shape="box"] +224 [label="224: Call _fun_printf \n n$0=_fun_printf(\"terminating!\\n\":char *) [line 188]\n " shape="box"] 224 -> 223 ; -223 [label="223: Return Stmt \n *&return:int =2 [line 189]\n APPLY_ABSTRACTION; [line 189]\n " shape="box"] +223 [label="223: Return Stmt \n *&return:int =2 [line 189]\n " shape="box"] 223 -> 222 ; @@ -140,27 +140,27 @@ digraph iCFG { 219 -> 218 ; -218 [label="218: DeclStmt \n *&k:int =0 [line 147]\n APPLY_ABSTRACTION; [line 147]\n " shape="box"] +218 [label="218: DeclStmt \n *&k:int =0 [line 147]\n " shape="box"] 218 -> 200 ; -217 [label="217: DeclStmt \n n$7=*&i:int [line 151]\n n$8=*&j:int [line 151]\n n$9=*&k:int [line 151]\n *&v:int =((n$7 + n$8) + n$9) [line 151]\n REMOVE_TEMPS(n$7,n$8,n$9); [line 151]\n " shape="box"] +217 [label="217: DeclStmt \n n$7=*&i:int [line 151]\n n$8=*&j:int [line 151]\n n$9=*&k:int [line 151]\n *&v:int =((n$7 + n$8) + n$9) [line 151]\n " shape="box"] 217 -> 213 ; -216 [label="216: Call _fun_printf \n n$6=_fun_printf(\"wow\\n\":char *) [line 155]\n REMOVE_TEMPS(n$6); [line 155]\n " shape="box"] +216 [label="216: Call _fun_printf \n n$6=_fun_printf(\"wow\\n\":char *) [line 155]\n " shape="box"] 216 -> 196 ; -215 [label="215: Prune (false branch) \n PRUNE(((n$5 >= 15) == 0), false); [line 152]\n REMOVE_TEMPS(n$5); [line 152]\n " shape="invhouse"] +215 [label="215: Prune (false branch) \n PRUNE(((n$5 >= 15) == 0), false); [line 152]\n " shape="invhouse"] 215 -> 212 ; -214 [label="214: Prune (true branch) \n PRUNE(((n$5 >= 15) != 0), true); [line 152]\n REMOVE_TEMPS(n$5); [line 152]\n NULLIFY(&i); [line 152]\n NULLIFY(&j); [line 152]\n NULLIFY(&k); [line 152]\n APPLY_ABSTRACTION; [line 152]\n " shape="invhouse"] +214 [label="214: Prune (true branch) \n PRUNE(((n$5 >= 15) != 0), true); [line 152]\n " shape="invhouse"] 214 -> 199 ; -213 [label="213: BinaryOperatorStmt: GE \n n$5=*&v:int [line 152]\n NULLIFY(&v); [line 152]\n " shape="box"] +213 [label="213: BinaryOperatorStmt: GE \n n$5=*&v:int [line 152]\n " shape="box"] 213 -> 214 ; @@ -169,11 +169,11 @@ digraph iCFG { 212 -> 208 ; -211 [label="211: Prune (false branch) \n PRUNE(((n$4 < 10) == 0), false); [line 150]\n REMOVE_TEMPS(n$4); [line 150]\n APPLY_ABSTRACTION; [line 150]\n " shape="invhouse"] +211 [label="211: Prune (false branch) \n PRUNE(((n$4 < 10) == 0), false); [line 150]\n " shape="invhouse"] 211 -> 204 ; -210 [label="210: Prune (true branch) \n PRUNE(((n$4 < 10) != 0), true); [line 150]\n REMOVE_TEMPS(n$4); [line 150]\n " shape="invhouse"] +210 [label="210: Prune (true branch) \n PRUNE(((n$4 < 10) != 0), true); [line 150]\n " shape="invhouse"] 210 -> 217 ; @@ -186,11 +186,11 @@ digraph iCFG { 208 -> 209 ; -207 [label="207: Prune (false branch) \n PRUNE(((n$3 < 10) == 0), false); [line 149]\n REMOVE_TEMPS(n$3); [line 149]\n APPLY_ABSTRACTION; [line 149]\n " shape="invhouse"] +207 [label="207: Prune (false branch) \n PRUNE(((n$3 < 10) == 0), false); [line 149]\n " shape="invhouse"] 207 -> 200 ; -206 [label="206: Prune (true branch) \n PRUNE(((n$3 < 10) != 0), true); [line 149]\n REMOVE_TEMPS(n$3); [line 149]\n APPLY_ABSTRACTION; [line 149]\n " shape="invhouse"] +206 [label="206: Prune (true branch) \n PRUNE(((n$3 < 10) != 0), true); [line 149]\n " shape="invhouse"] 206 -> 208 ; @@ -203,11 +203,11 @@ digraph iCFG { 204 -> 205 ; -203 [label="203: Prune (false branch) \n PRUNE(((n$2 < 10) == 0), false); [line 148]\n REMOVE_TEMPS(n$2); [line 148]\n NULLIFY(&i); [line 148]\n NULLIFY(&j); [line 148]\n NULLIFY(&k); [line 148]\n APPLY_ABSTRACTION; [line 148]\n " shape="invhouse"] +203 [label="203: Prune (false branch) \n PRUNE(((n$2 < 10) == 0), false); [line 148]\n " shape="invhouse"] 203 -> 199 ; -202 [label="202: Prune (true branch) \n PRUNE(((n$2 < 10) != 0), true); [line 148]\n REMOVE_TEMPS(n$2); [line 148]\n APPLY_ABSTRACTION; [line 148]\n " shape="invhouse"] +202 [label="202: Prune (true branch) \n PRUNE(((n$2 < 10) != 0), true); [line 148]\n " shape="invhouse"] 202 -> 204 ; @@ -224,7 +224,7 @@ digraph iCFG { 199 -> 198 ; -198 [label="198: Call _fun_printf \n n$1=_fun_printf(\"out!\\n\":char *) [line 162]\n REMOVE_TEMPS(n$1); [line 162]\n " shape="box"] +198 [label="198: Call _fun_printf \n n$1=_fun_printf(\"out!\\n\":char *) [line 162]\n " shape="box"] 198 -> 197 ; @@ -236,11 +236,11 @@ digraph iCFG { 196 -> 195 ; -195 [label="195: Call _fun_printf \n n$0=_fun_printf(\"terminating!\\n\":char *) [line 165]\n REMOVE_TEMPS(n$0); [line 165]\n " shape="box"] +195 [label="195: Call _fun_printf \n n$0=_fun_printf(\"terminating!\\n\":char *) [line 165]\n " shape="box"] 195 -> 194 ; -194 [label="194: Return Stmt \n *&return:int =2 [line 166]\n APPLY_ABSTRACTION; [line 166]\n " shape="box"] +194 [label="194: Return Stmt \n *&return:int =2 [line 166]\n " shape="box"] 194 -> 193 ; @@ -251,31 +251,31 @@ digraph iCFG { 192 -> 220 ; -191 [label="191: Call _fun_printf \n n$9=_fun_printf(\"B\\n\":char *) [line 126]\n REMOVE_TEMPS(n$9); [line 126]\n " shape="box"] +191 [label="191: Call _fun_printf \n n$9=_fun_printf(\"B\\n\":char *) [line 126]\n " shape="box"] 191 -> 184 ; -190 [label="190: Prune (false branch) \n n$8=*&SIL_temp_conditional___n$6:int [line 128]\n PRUNE((n$8 == 0), false); [line 128]\n REMOVE_TEMPS(n$8); [line 128]\n NULLIFY(&SIL_temp_conditional___n$6); [line 128]\n " shape="invhouse"] +190 [label="190: Prune (false branch) \n n$8=*&SIL_temp_conditional___n$6:int [line 128]\n PRUNE((n$8 == 0), false); [line 128]\n " shape="invhouse"] 190 -> 182 ; -189 [label="189: Prune (true branch) \n n$8=*&SIL_temp_conditional___n$6:int [line 128]\n PRUNE((n$8 != 0), true); [line 128]\n REMOVE_TEMPS(n$8); [line 128]\n NULLIFY(&SIL_temp_conditional___n$6); [line 128]\n APPLY_ABSTRACTION; [line 128]\n " shape="invhouse"] +189 [label="189: Prune (true branch) \n n$8=*&SIL_temp_conditional___n$6:int [line 128]\n PRUNE((n$8 != 0), true); [line 128]\n " shape="invhouse"] 189 -> 164 ; -188 [label="188: ConditinalStmt Branch \n *&SIL_temp_conditional___n$6:int =1 [line 128]\n APPLY_ABSTRACTION; [line 128]\n " shape="box"] +188 [label="188: ConditinalStmt Branch \n *&SIL_temp_conditional___n$6:int =1 [line 128]\n " shape="box"] 188 -> 183 ; -187 [label="187: ConditinalStmt Branch \n *&SIL_temp_conditional___n$6:int =0 [line 128]\n APPLY_ABSTRACTION; [line 128]\n " shape="box"] +187 [label="187: ConditinalStmt Branch \n *&SIL_temp_conditional___n$6:int =0 [line 128]\n " shape="box"] 187 -> 183 ; -186 [label="186: Prune (false branch) \n PRUNE((n$7 == 0), false); [line 128]\n REMOVE_TEMPS(n$7); [line 128]\n " shape="invhouse"] +186 [label="186: Prune (false branch) \n PRUNE((n$7 == 0), false); [line 128]\n " shape="invhouse"] 186 -> 188 ; -185 [label="185: Prune (true branch) \n PRUNE((n$7 != 0), true); [line 128]\n REMOVE_TEMPS(n$7); [line 128]\n " shape="invhouse"] +185 [label="185: Prune (true branch) \n PRUNE((n$7 != 0), true); [line 128]\n " shape="invhouse"] 185 -> 187 ; @@ -293,27 +293,27 @@ digraph iCFG { 182 -> 175 ; -181 [label="181: Prune (false branch) \n n$5=*&SIL_temp_conditional___n$3:int [line 130]\n PRUNE((n$5 == 0), false); [line 130]\n REMOVE_TEMPS(n$5); [line 130]\n NULLIFY(&SIL_temp_conditional___n$3); [line 130]\n " shape="invhouse"] +181 [label="181: Prune (false branch) \n n$5=*&SIL_temp_conditional___n$3:int [line 130]\n PRUNE((n$5 == 0), false); [line 130]\n " shape="invhouse"] 181 -> 173 ; -180 [label="180: Prune (true branch) \n n$5=*&SIL_temp_conditional___n$3:int [line 130]\n PRUNE((n$5 != 0), true); [line 130]\n REMOVE_TEMPS(n$5); [line 130]\n NULLIFY(&SIL_temp_conditional___n$3); [line 130]\n APPLY_ABSTRACTION; [line 130]\n " shape="invhouse"] +180 [label="180: Prune (true branch) \n n$5=*&SIL_temp_conditional___n$3:int [line 130]\n PRUNE((n$5 != 0), true); [line 130]\n " shape="invhouse"] 180 -> 162 ; -179 [label="179: ConditinalStmt Branch \n *&SIL_temp_conditional___n$3:int =1 [line 130]\n APPLY_ABSTRACTION; [line 130]\n " shape="box"] +179 [label="179: ConditinalStmt Branch \n *&SIL_temp_conditional___n$3:int =1 [line 130]\n " shape="box"] 179 -> 174 ; -178 [label="178: ConditinalStmt Branch \n *&SIL_temp_conditional___n$3:int =0 [line 130]\n APPLY_ABSTRACTION; [line 130]\n " shape="box"] +178 [label="178: ConditinalStmt Branch \n *&SIL_temp_conditional___n$3:int =0 [line 130]\n " shape="box"] 178 -> 174 ; -177 [label="177: Prune (false branch) \n PRUNE((n$4 == 0), false); [line 130]\n REMOVE_TEMPS(n$4); [line 130]\n " shape="invhouse"] +177 [label="177: Prune (false branch) \n PRUNE((n$4 == 0), false); [line 130]\n " shape="invhouse"] 177 -> 179 ; -176 [label="176: Prune (true branch) \n PRUNE((n$4 != 0), true); [line 130]\n REMOVE_TEMPS(n$4); [line 130]\n " shape="invhouse"] +176 [label="176: Prune (true branch) \n PRUNE((n$4 != 0), true); [line 130]\n " shape="invhouse"] 176 -> 178 ; @@ -335,11 +335,11 @@ digraph iCFG { 172 -> 191 ; -171 [label="171: Prune (false branch) \n PRUNE(((n$2 > 1) == 0), false); [line 132]\n REMOVE_TEMPS(n$2); [line 132]\n " shape="invhouse"] +171 [label="171: Prune (false branch) \n PRUNE(((n$2 > 1) == 0), false); [line 132]\n " shape="invhouse"] 171 -> 168 ; -170 [label="170: Prune (true branch) \n PRUNE(((n$2 > 1) != 0), true); [line 132]\n REMOVE_TEMPS(n$2); [line 132]\n APPLY_ABSTRACTION; [line 132]\n " shape="invhouse"] +170 [label="170: Prune (true branch) \n PRUNE(((n$2 > 1) != 0), true); [line 132]\n " shape="invhouse"] 170 -> 172 ; @@ -352,15 +352,15 @@ digraph iCFG { 168 -> 164 ; -167 [label="167: DeclStmt \n *&a:int =2 [line 137]\n NULLIFY(&a); [line 137]\n " shape="box"] +167 [label="167: DeclStmt \n *&a:int =2 [line 137]\n " shape="box"] 167 -> 166 ; -166 [label="166: Call _fun_printf \n n$1=_fun_printf(\"A\\n\":char *) [line 138]\n REMOVE_TEMPS(n$1); [line 138]\n " shape="box"] +166 [label="166: Call _fun_printf \n n$1=_fun_printf(\"A\\n\":char *) [line 138]\n " shape="box"] 166 -> 165 ; -165 [label="165: Return Stmt \n *&return:int =1 [line 140]\n APPLY_ABSTRACTION; [line 140]\n " shape="box"] +165 [label="165: Return Stmt \n *&return:int =1 [line 140]\n " shape="box"] 165 -> 161 ; @@ -368,7 +368,7 @@ digraph iCFG { 164 -> 163 ; -163 [label="163: Call _fun_printf \n n$0=_fun_printf(\"exit\\n\":char *) [line 142]\n REMOVE_TEMPS(n$0); [line 142]\n APPLY_ABSTRACTION; [line 142]\n " shape="box"] +163 [label="163: Call _fun_printf \n n$0=_fun_printf(\"exit\\n\":char *) [line 142]\n " shape="box"] 163 -> 162 ; @@ -383,31 +383,31 @@ digraph iCFG { 160 -> 172 ; -159 [label="159: Call _fun_printf \n n$9=_fun_printf(\"B\\n\":char *) [line 104]\n REMOVE_TEMPS(n$9); [line 104]\n " shape="box"] +159 [label="159: Call _fun_printf \n n$9=_fun_printf(\"B\\n\":char *) [line 104]\n " shape="box"] 159 -> 152 ; -158 [label="158: Prune (false branch) \n n$8=*&SIL_temp_conditional___n$6:int [line 106]\n PRUNE((n$8 == 0), false); [line 106]\n REMOVE_TEMPS(n$8); [line 106]\n NULLIFY(&SIL_temp_conditional___n$6); [line 106]\n " shape="invhouse"] +158 [label="158: Prune (false branch) \n n$8=*&SIL_temp_conditional___n$6:int [line 106]\n PRUNE((n$8 == 0), false); [line 106]\n " shape="invhouse"] 158 -> 150 ; -157 [label="157: Prune (true branch) \n n$8=*&SIL_temp_conditional___n$6:int [line 106]\n PRUNE((n$8 != 0), true); [line 106]\n REMOVE_TEMPS(n$8); [line 106]\n NULLIFY(&SIL_temp_conditional___n$6); [line 106]\n APPLY_ABSTRACTION; [line 106]\n " shape="invhouse"] +157 [label="157: Prune (true branch) \n n$8=*&SIL_temp_conditional___n$6:int [line 106]\n PRUNE((n$8 != 0), true); [line 106]\n " shape="invhouse"] 157 -> 132 ; -156 [label="156: ConditinalStmt Branch \n *&SIL_temp_conditional___n$6:int =1 [line 106]\n APPLY_ABSTRACTION; [line 106]\n " shape="box"] +156 [label="156: ConditinalStmt Branch \n *&SIL_temp_conditional___n$6:int =1 [line 106]\n " shape="box"] 156 -> 151 ; -155 [label="155: ConditinalStmt Branch \n *&SIL_temp_conditional___n$6:int =0 [line 106]\n APPLY_ABSTRACTION; [line 106]\n " shape="box"] +155 [label="155: ConditinalStmt Branch \n *&SIL_temp_conditional___n$6:int =0 [line 106]\n " shape="box"] 155 -> 151 ; -154 [label="154: Prune (false branch) \n PRUNE((n$7 == 0), false); [line 106]\n REMOVE_TEMPS(n$7); [line 106]\n " shape="invhouse"] +154 [label="154: Prune (false branch) \n PRUNE((n$7 == 0), false); [line 106]\n " shape="invhouse"] 154 -> 156 ; -153 [label="153: Prune (true branch) \n PRUNE((n$7 != 0), true); [line 106]\n REMOVE_TEMPS(n$7); [line 106]\n " shape="invhouse"] +153 [label="153: Prune (true branch) \n PRUNE((n$7 != 0), true); [line 106]\n " shape="invhouse"] 153 -> 155 ; @@ -425,27 +425,27 @@ digraph iCFG { 150 -> 143 ; -149 [label="149: Prune (false branch) \n n$5=*&SIL_temp_conditional___n$3:int [line 108]\n PRUNE((n$5 == 0), false); [line 108]\n REMOVE_TEMPS(n$5); [line 108]\n NULLIFY(&SIL_temp_conditional___n$3); [line 108]\n " shape="invhouse"] +149 [label="149: Prune (false branch) \n n$5=*&SIL_temp_conditional___n$3:int [line 108]\n PRUNE((n$5 == 0), false); [line 108]\n " shape="invhouse"] 149 -> 141 ; -148 [label="148: Prune (true branch) \n n$5=*&SIL_temp_conditional___n$3:int [line 108]\n PRUNE((n$5 != 0), true); [line 108]\n REMOVE_TEMPS(n$5); [line 108]\n NULLIFY(&SIL_temp_conditional___n$3); [line 108]\n APPLY_ABSTRACTION; [line 108]\n " shape="invhouse"] +148 [label="148: Prune (true branch) \n n$5=*&SIL_temp_conditional___n$3:int [line 108]\n PRUNE((n$5 != 0), true); [line 108]\n " shape="invhouse"] 148 -> 130 ; -147 [label="147: ConditinalStmt Branch \n *&SIL_temp_conditional___n$3:int =1 [line 108]\n APPLY_ABSTRACTION; [line 108]\n " shape="box"] +147 [label="147: ConditinalStmt Branch \n *&SIL_temp_conditional___n$3:int =1 [line 108]\n " shape="box"] 147 -> 142 ; -146 [label="146: ConditinalStmt Branch \n *&SIL_temp_conditional___n$3:int =0 [line 108]\n APPLY_ABSTRACTION; [line 108]\n " shape="box"] +146 [label="146: ConditinalStmt Branch \n *&SIL_temp_conditional___n$3:int =0 [line 108]\n " shape="box"] 146 -> 142 ; -145 [label="145: Prune (false branch) \n PRUNE((n$4 == 0), false); [line 108]\n REMOVE_TEMPS(n$4); [line 108]\n " shape="invhouse"] +145 [label="145: Prune (false branch) \n PRUNE((n$4 == 0), false); [line 108]\n " shape="invhouse"] 145 -> 147 ; -144 [label="144: Prune (true branch) \n PRUNE((n$4 != 0), true); [line 108]\n REMOVE_TEMPS(n$4); [line 108]\n " shape="invhouse"] +144 [label="144: Prune (true branch) \n PRUNE((n$4 != 0), true); [line 108]\n " shape="invhouse"] 144 -> 146 ; @@ -467,11 +467,11 @@ digraph iCFG { 140 -> 159 ; -139 [label="139: Prune (false branch) \n PRUNE(((n$2 > 1) == 0), false); [line 110]\n REMOVE_TEMPS(n$2); [line 110]\n " shape="invhouse"] +139 [label="139: Prune (false branch) \n PRUNE(((n$2 > 1) == 0), false); [line 110]\n " shape="invhouse"] 139 -> 136 ; -138 [label="138: Prune (true branch) \n PRUNE(((n$2 > 1) != 0), true); [line 110]\n REMOVE_TEMPS(n$2); [line 110]\n APPLY_ABSTRACTION; [line 110]\n " shape="invhouse"] +138 [label="138: Prune (true branch) \n PRUNE(((n$2 > 1) != 0), true); [line 110]\n " shape="invhouse"] 138 -> 140 ; @@ -484,15 +484,15 @@ digraph iCFG { 136 -> 132 ; -135 [label="135: DeclStmt \n *&a:int =2 [line 115]\n NULLIFY(&a); [line 115]\n " shape="box"] +135 [label="135: DeclStmt \n *&a:int =2 [line 115]\n " shape="box"] 135 -> 134 ; -134 [label="134: Call _fun_printf \n n$1=_fun_printf(\"A\\n\":char *) [line 116]\n REMOVE_TEMPS(n$1); [line 116]\n " shape="box"] +134 [label="134: Call _fun_printf \n n$1=_fun_printf(\"A\\n\":char *) [line 116]\n " shape="box"] 134 -> 133 ; -133 [label="133: Return Stmt \n *&return:int =1 [line 117]\n APPLY_ABSTRACTION; [line 117]\n " shape="box"] +133 [label="133: Return Stmt \n *&return:int =1 [line 117]\n " shape="box"] 133 -> 129 ; @@ -500,7 +500,7 @@ digraph iCFG { 132 -> 131 ; -131 [label="131: Call _fun_printf \n n$0=_fun_printf(\"exit\\n\":char *) [line 120]\n REMOVE_TEMPS(n$0); [line 120]\n APPLY_ABSTRACTION; [line 120]\n " shape="box"] +131 [label="131: Call _fun_printf \n n$0=_fun_printf(\"exit\\n\":char *) [line 120]\n " shape="box"] 131 -> 130 ; @@ -515,31 +515,31 @@ digraph iCFG { 128 -> 140 ; -127 [label="127: Call _fun_printf \n n$10=_fun_printf(\"B\\n\":char *) [line 83]\n REMOVE_TEMPS(n$10); [line 83]\n " shape="box"] +127 [label="127: Call _fun_printf \n n$10=_fun_printf(\"B\\n\":char *) [line 83]\n " shape="box"] 127 -> 120 ; -126 [label="126: Prune (false branch) \n n$9=*&SIL_temp_conditional___n$7:int [line 85]\n PRUNE((n$9 == 0), false); [line 85]\n REMOVE_TEMPS(n$9); [line 85]\n NULLIFY(&SIL_temp_conditional___n$7); [line 85]\n " shape="invhouse"] +126 [label="126: Prune (false branch) \n n$9=*&SIL_temp_conditional___n$7:int [line 85]\n PRUNE((n$9 == 0), false); [line 85]\n " shape="invhouse"] 126 -> 118 ; -125 [label="125: Prune (true branch) \n n$9=*&SIL_temp_conditional___n$7:int [line 85]\n PRUNE((n$9 != 0), true); [line 85]\n REMOVE_TEMPS(n$9); [line 85]\n NULLIFY(&SIL_temp_conditional___n$7); [line 85]\n APPLY_ABSTRACTION; [line 85]\n " shape="invhouse"] +125 [label="125: Prune (true branch) \n n$9=*&SIL_temp_conditional___n$7:int [line 85]\n PRUNE((n$9 != 0), true); [line 85]\n " shape="invhouse"] 125 -> 99 ; -124 [label="124: ConditinalStmt Branch \n *&SIL_temp_conditional___n$7:int =1 [line 85]\n APPLY_ABSTRACTION; [line 85]\n " shape="box"] +124 [label="124: ConditinalStmt Branch \n *&SIL_temp_conditional___n$7:int =1 [line 85]\n " shape="box"] 124 -> 119 ; -123 [label="123: ConditinalStmt Branch \n *&SIL_temp_conditional___n$7:int =0 [line 85]\n APPLY_ABSTRACTION; [line 85]\n " shape="box"] +123 [label="123: ConditinalStmt Branch \n *&SIL_temp_conditional___n$7:int =0 [line 85]\n " shape="box"] 123 -> 119 ; -122 [label="122: Prune (false branch) \n PRUNE((n$8 == 0), false); [line 85]\n REMOVE_TEMPS(n$8); [line 85]\n " shape="invhouse"] +122 [label="122: Prune (false branch) \n PRUNE((n$8 == 0), false); [line 85]\n " shape="invhouse"] 122 -> 124 ; -121 [label="121: Prune (true branch) \n PRUNE((n$8 != 0), true); [line 85]\n REMOVE_TEMPS(n$8); [line 85]\n " shape="invhouse"] +121 [label="121: Prune (true branch) \n PRUNE((n$8 != 0), true); [line 85]\n " shape="invhouse"] 121 -> 123 ; @@ -557,27 +557,27 @@ digraph iCFG { 118 -> 111 ; -117 [label="117: Prune (false branch) \n n$6=*&SIL_temp_conditional___n$4:int [line 87]\n PRUNE((n$6 == 0), false); [line 87]\n REMOVE_TEMPS(n$6); [line 87]\n NULLIFY(&SIL_temp_conditional___n$4); [line 87]\n " shape="invhouse"] +117 [label="117: Prune (false branch) \n n$6=*&SIL_temp_conditional___n$4:int [line 87]\n PRUNE((n$6 == 0), false); [line 87]\n " shape="invhouse"] 117 -> 109 ; -116 [label="116: Prune (true branch) \n n$6=*&SIL_temp_conditional___n$4:int [line 87]\n PRUNE((n$6 != 0), true); [line 87]\n REMOVE_TEMPS(n$6); [line 87]\n NULLIFY(&SIL_temp_conditional___n$4); [line 87]\n APPLY_ABSTRACTION; [line 87]\n " shape="invhouse"] +116 [label="116: Prune (true branch) \n n$6=*&SIL_temp_conditional___n$4:int [line 87]\n PRUNE((n$6 != 0), true); [line 87]\n " shape="invhouse"] 116 -> 102 ; -115 [label="115: ConditinalStmt Branch \n *&SIL_temp_conditional___n$4:int =1 [line 87]\n APPLY_ABSTRACTION; [line 87]\n " shape="box"] +115 [label="115: ConditinalStmt Branch \n *&SIL_temp_conditional___n$4:int =1 [line 87]\n " shape="box"] 115 -> 110 ; -114 [label="114: ConditinalStmt Branch \n *&SIL_temp_conditional___n$4:int =0 [line 87]\n APPLY_ABSTRACTION; [line 87]\n " shape="box"] +114 [label="114: ConditinalStmt Branch \n *&SIL_temp_conditional___n$4:int =0 [line 87]\n " shape="box"] 114 -> 110 ; -113 [label="113: Prune (false branch) \n PRUNE((n$5 == 0), false); [line 87]\n REMOVE_TEMPS(n$5); [line 87]\n " shape="invhouse"] +113 [label="113: Prune (false branch) \n PRUNE((n$5 == 0), false); [line 87]\n " shape="invhouse"] 113 -> 115 ; -112 [label="112: Prune (true branch) \n PRUNE((n$5 != 0), true); [line 87]\n REMOVE_TEMPS(n$5); [line 87]\n " shape="invhouse"] +112 [label="112: Prune (true branch) \n PRUNE((n$5 != 0), true); [line 87]\n " shape="invhouse"] 112 -> 114 ; @@ -599,11 +599,11 @@ digraph iCFG { 108 -> 127 ; -107 [label="107: Prune (false branch) \n PRUNE(((n$3 > 1) == 0), false); [line 89]\n REMOVE_TEMPS(n$3); [line 89]\n " shape="invhouse"] +107 [label="107: Prune (false branch) \n PRUNE(((n$3 > 1) == 0), false); [line 89]\n " shape="invhouse"] 107 -> 104 ; -106 [label="106: Prune (true branch) \n PRUNE(((n$3 > 1) != 0), true); [line 89]\n REMOVE_TEMPS(n$3); [line 89]\n APPLY_ABSTRACTION; [line 89]\n " shape="invhouse"] +106 [label="106: Prune (true branch) \n PRUNE(((n$3 > 1) != 0), true); [line 89]\n " shape="invhouse"] 106 -> 108 ; @@ -616,7 +616,7 @@ digraph iCFG { 104 -> 103 ; -103 [label="103: Call _fun_printf \n n$2=_fun_printf(\"g4\\n\":char *) [line 91]\n REMOVE_TEMPS(n$2); [line 91]\n APPLY_ABSTRACTION; [line 91]\n " shape="box"] +103 [label="103: Call _fun_printf \n n$2=_fun_printf(\"g4\\n\":char *) [line 91]\n " shape="box"] 103 -> 102 ; @@ -624,11 +624,11 @@ digraph iCFG { 102 -> 101 ; -101 [label="101: DeclStmt \n *&a:int =2 [line 94]\n NULLIFY(&a); [line 94]\n " shape="box"] +101 [label="101: DeclStmt \n *&a:int =2 [line 94]\n " shape="box"] 101 -> 100 ; -100 [label="100: Call _fun_printf \n n$1=_fun_printf(\"A\\n\":char *) [line 95]\n REMOVE_TEMPS(n$1); [line 95]\n APPLY_ABSTRACTION; [line 95]\n " shape="box"] +100 [label="100: Call _fun_printf \n n$1=_fun_printf(\"A\\n\":char *) [line 95]\n " shape="box"] 100 -> 99 ; @@ -636,11 +636,11 @@ digraph iCFG { 99 -> 98 ; -98 [label="98: Call _fun_printf \n n$0=_fun_printf(\"exit\\n\":char *) [line 98]\n REMOVE_TEMPS(n$0); [line 98]\n " shape="box"] +98 [label="98: Call _fun_printf \n n$0=_fun_printf(\"exit\\n\":char *) [line 98]\n " shape="box"] 98 -> 97 ; -97 [label="97: Return Stmt \n *&return:int =1 [line 99]\n APPLY_ABSTRACTION; [line 99]\n " shape="box"] +97 [label="97: Return Stmt \n *&return:int =1 [line 99]\n " shape="box"] 97 -> 96 ; @@ -651,31 +651,31 @@ digraph iCFG { 95 -> 108 ; -94 [label="94: Call _fun_printf \n n$10=_fun_printf(\"B\\n\":char *) [line 61]\n REMOVE_TEMPS(n$10); [line 61]\n " shape="box"] +94 [label="94: Call _fun_printf \n n$10=_fun_printf(\"B\\n\":char *) [line 61]\n " shape="box"] 94 -> 87 ; -93 [label="93: Prune (false branch) \n n$9=*&SIL_temp_conditional___n$7:int [line 63]\n PRUNE((n$9 == 0), false); [line 63]\n REMOVE_TEMPS(n$9); [line 63]\n NULLIFY(&SIL_temp_conditional___n$7); [line 63]\n " shape="invhouse"] +93 [label="93: Prune (false branch) \n n$9=*&SIL_temp_conditional___n$7:int [line 63]\n PRUNE((n$9 == 0), false); [line 63]\n " shape="invhouse"] 93 -> 85 ; -92 [label="92: Prune (true branch) \n n$9=*&SIL_temp_conditional___n$7:int [line 63]\n PRUNE((n$9 != 0), true); [line 63]\n REMOVE_TEMPS(n$9); [line 63]\n NULLIFY(&SIL_temp_conditional___n$7); [line 63]\n APPLY_ABSTRACTION; [line 63]\n " shape="invhouse"] +92 [label="92: Prune (true branch) \n n$9=*&SIL_temp_conditional___n$7:int [line 63]\n PRUNE((n$9 != 0), true); [line 63]\n " shape="invhouse"] 92 -> 65 ; -91 [label="91: ConditinalStmt Branch \n *&SIL_temp_conditional___n$7:int =1 [line 63]\n APPLY_ABSTRACTION; [line 63]\n " shape="box"] +91 [label="91: ConditinalStmt Branch \n *&SIL_temp_conditional___n$7:int =1 [line 63]\n " shape="box"] 91 -> 86 ; -90 [label="90: ConditinalStmt Branch \n *&SIL_temp_conditional___n$7:int =0 [line 63]\n APPLY_ABSTRACTION; [line 63]\n " shape="box"] +90 [label="90: ConditinalStmt Branch \n *&SIL_temp_conditional___n$7:int =0 [line 63]\n " shape="box"] 90 -> 86 ; -89 [label="89: Prune (false branch) \n PRUNE((n$8 == 0), false); [line 63]\n REMOVE_TEMPS(n$8); [line 63]\n " shape="invhouse"] +89 [label="89: Prune (false branch) \n PRUNE((n$8 == 0), false); [line 63]\n " shape="invhouse"] 89 -> 91 ; -88 [label="88: Prune (true branch) \n PRUNE((n$8 != 0), true); [line 63]\n REMOVE_TEMPS(n$8); [line 63]\n " shape="invhouse"] +88 [label="88: Prune (true branch) \n PRUNE((n$8 != 0), true); [line 63]\n " shape="invhouse"] 88 -> 90 ; @@ -693,27 +693,27 @@ digraph iCFG { 85 -> 78 ; -84 [label="84: Prune (false branch) \n n$6=*&SIL_temp_conditional___n$4:int [line 65]\n PRUNE((n$6 == 0), false); [line 65]\n REMOVE_TEMPS(n$6); [line 65]\n NULLIFY(&SIL_temp_conditional___n$4); [line 65]\n " shape="invhouse"] +84 [label="84: Prune (false branch) \n n$6=*&SIL_temp_conditional___n$4:int [line 65]\n PRUNE((n$6 == 0), false); [line 65]\n " shape="invhouse"] 84 -> 76 ; -83 [label="83: Prune (true branch) \n n$6=*&SIL_temp_conditional___n$4:int [line 65]\n PRUNE((n$6 != 0), true); [line 65]\n REMOVE_TEMPS(n$6); [line 65]\n NULLIFY(&SIL_temp_conditional___n$4); [line 65]\n " shape="invhouse"] +83 [label="83: Prune (true branch) \n n$6=*&SIL_temp_conditional___n$4:int [line 65]\n PRUNE((n$6 != 0), true); [line 65]\n " shape="invhouse"] 83 -> 68 ; -82 [label="82: ConditinalStmt Branch \n *&SIL_temp_conditional___n$4:int =1 [line 65]\n APPLY_ABSTRACTION; [line 65]\n " shape="box"] +82 [label="82: ConditinalStmt Branch \n *&SIL_temp_conditional___n$4:int =1 [line 65]\n " shape="box"] 82 -> 77 ; -81 [label="81: ConditinalStmt Branch \n *&SIL_temp_conditional___n$4:int =0 [line 65]\n APPLY_ABSTRACTION; [line 65]\n " shape="box"] +81 [label="81: ConditinalStmt Branch \n *&SIL_temp_conditional___n$4:int =0 [line 65]\n " shape="box"] 81 -> 77 ; -80 [label="80: Prune (false branch) \n PRUNE((n$5 == 0), false); [line 65]\n REMOVE_TEMPS(n$5); [line 65]\n " shape="invhouse"] +80 [label="80: Prune (false branch) \n PRUNE((n$5 == 0), false); [line 65]\n " shape="invhouse"] 80 -> 82 ; -79 [label="79: Prune (true branch) \n PRUNE((n$5 != 0), true); [line 65]\n REMOVE_TEMPS(n$5); [line 65]\n " shape="invhouse"] +79 [label="79: Prune (true branch) \n PRUNE((n$5 != 0), true); [line 65]\n " shape="invhouse"] 79 -> 81 ; @@ -735,11 +735,11 @@ digraph iCFG { 75 -> 94 ; -74 [label="74: Prune (false branch) \n PRUNE(((n$3 > 1) == 0), false); [line 67]\n REMOVE_TEMPS(n$3); [line 67]\n " shape="invhouse"] +74 [label="74: Prune (false branch) \n PRUNE(((n$3 > 1) == 0), false); [line 67]\n " shape="invhouse"] 74 -> 71 ; -73 [label="73: Prune (true branch) \n PRUNE(((n$3 > 1) != 0), true); [line 67]\n REMOVE_TEMPS(n$3); [line 67]\n APPLY_ABSTRACTION; [line 67]\n " shape="invhouse"] +73 [label="73: Prune (true branch) \n PRUNE(((n$3 > 1) != 0), true); [line 67]\n " shape="invhouse"] 73 -> 75 ; @@ -752,11 +752,11 @@ digraph iCFG { 71 -> 70 ; -70 [label="70: Call _fun_printf \n n$2=_fun_printf(\"g3\\n\":char *) [line 69]\n REMOVE_TEMPS(n$2); [line 69]\n " shape="box"] +70 [label="70: Call _fun_printf \n n$2=_fun_printf(\"g3\\n\":char *) [line 69]\n " shape="box"] 70 -> 69 ; -69 [label="69: Return Stmt \n *&return:int =0 [line 70]\n APPLY_ABSTRACTION; [line 70]\n " shape="box"] +69 [label="69: Return Stmt \n *&return:int =0 [line 70]\n " shape="box"] 69 -> 62 ; @@ -764,11 +764,11 @@ digraph iCFG { 68 -> 67 ; -67 [label="67: DeclStmt \n *&a:int =2 [line 73]\n NULLIFY(&a); [line 73]\n " shape="box"] +67 [label="67: DeclStmt \n *&a:int =2 [line 73]\n " shape="box"] 67 -> 66 ; -66 [label="66: Call _fun_printf \n n$1=_fun_printf(\"A\\n\":char *) [line 74]\n REMOVE_TEMPS(n$1); [line 74]\n APPLY_ABSTRACTION; [line 74]\n " shape="box"] +66 [label="66: Call _fun_printf \n n$1=_fun_printf(\"A\\n\":char *) [line 74]\n " shape="box"] 66 -> 65 ; @@ -776,11 +776,11 @@ digraph iCFG { 65 -> 64 ; -64 [label="64: Call _fun_printf \n n$0=_fun_printf(\"exit\\n\":char *) [line 77]\n REMOVE_TEMPS(n$0); [line 77]\n " shape="box"] +64 [label="64: Call _fun_printf \n n$0=_fun_printf(\"exit\\n\":char *) [line 77]\n " shape="box"] 64 -> 63 ; -63 [label="63: Return Stmt \n *&return:int =1 [line 78]\n APPLY_ABSTRACTION; [line 78]\n " shape="box"] +63 [label="63: Return Stmt \n *&return:int =1 [line 78]\n " shape="box"] 63 -> 62 ; @@ -791,35 +791,35 @@ digraph iCFG { 61 -> 75 ; -60 [label="60: DeclStmt \n *&a:int =0 [line 38]\n NULLIFY(&a); [line 38]\n APPLY_ABSTRACTION; [line 38]\n " shape="box"] +60 [label="60: DeclStmt \n *&a:int =0 [line 38]\n " shape="box"] 60 -> 40 ; -59 [label="59: BinaryOperatorStmt: Assign \n *&a:int =1 [line 40]\n NULLIFY(&a); [line 40]\n " shape="box"] +59 [label="59: BinaryOperatorStmt: Assign \n *&a:int =1 [line 40]\n " shape="box"] 59 -> 52 ; -58 [label="58: Prune (false branch) \n n$6=*&SIL_temp_conditional___n$4:int [line 42]\n PRUNE((n$6 == 0), false); [line 42]\n REMOVE_TEMPS(n$6); [line 42]\n NULLIFY(&SIL_temp_conditional___n$4); [line 42]\n " shape="invhouse"] +58 [label="58: Prune (false branch) \n n$6=*&SIL_temp_conditional___n$4:int [line 42]\n PRUNE((n$6 == 0), false); [line 42]\n " shape="invhouse"] 58 -> 50 ; -57 [label="57: Prune (true branch) \n n$6=*&SIL_temp_conditional___n$4:int [line 42]\n PRUNE((n$6 != 0), true); [line 42]\n REMOVE_TEMPS(n$6); [line 42]\n NULLIFY(&SIL_temp_conditional___n$4); [line 42]\n " shape="invhouse"] +57 [label="57: Prune (true branch) \n n$6=*&SIL_temp_conditional___n$4:int [line 42]\n PRUNE((n$6 != 0), true); [line 42]\n " shape="invhouse"] 57 -> 31 ; -56 [label="56: ConditinalStmt Branch \n *&SIL_temp_conditional___n$4:int =1 [line 42]\n APPLY_ABSTRACTION; [line 42]\n " shape="box"] +56 [label="56: ConditinalStmt Branch \n *&SIL_temp_conditional___n$4:int =1 [line 42]\n " shape="box"] 56 -> 51 ; -55 [label="55: ConditinalStmt Branch \n *&SIL_temp_conditional___n$4:int =0 [line 42]\n APPLY_ABSTRACTION; [line 42]\n " shape="box"] +55 [label="55: ConditinalStmt Branch \n *&SIL_temp_conditional___n$4:int =0 [line 42]\n " shape="box"] 55 -> 51 ; -54 [label="54: Prune (false branch) \n PRUNE((n$5 == 0), false); [line 42]\n REMOVE_TEMPS(n$5); [line 42]\n " shape="invhouse"] +54 [label="54: Prune (false branch) \n PRUNE((n$5 == 0), false); [line 42]\n " shape="invhouse"] 54 -> 56 ; -53 [label="53: Prune (true branch) \n PRUNE((n$5 != 0), true); [line 42]\n REMOVE_TEMPS(n$5); [line 42]\n " shape="invhouse"] +53 [label="53: Prune (true branch) \n PRUNE((n$5 != 0), true); [line 42]\n " shape="invhouse"] 53 -> 55 ; @@ -837,27 +837,27 @@ digraph iCFG { 50 -> 43 ; -49 [label="49: Prune (false branch) \n n$3=*&SIL_temp_conditional___n$1:int [line 44]\n PRUNE((n$3 == 0), false); [line 44]\n REMOVE_TEMPS(n$3); [line 44]\n NULLIFY(&SIL_temp_conditional___n$1); [line 44]\n " shape="invhouse"] +49 [label="49: Prune (false branch) \n n$3=*&SIL_temp_conditional___n$1:int [line 44]\n PRUNE((n$3 == 0), false); [line 44]\n " shape="invhouse"] 49 -> 41 ; -48 [label="48: Prune (true branch) \n n$3=*&SIL_temp_conditional___n$1:int [line 44]\n PRUNE((n$3 != 0), true); [line 44]\n REMOVE_TEMPS(n$3); [line 44]\n NULLIFY(&SIL_temp_conditional___n$1); [line 44]\n " shape="invhouse"] +48 [label="48: Prune (true branch) \n n$3=*&SIL_temp_conditional___n$1:int [line 44]\n PRUNE((n$3 != 0), true); [line 44]\n " shape="invhouse"] 48 -> 34 ; -47 [label="47: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =1 [line 44]\n APPLY_ABSTRACTION; [line 44]\n " shape="box"] +47 [label="47: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =1 [line 44]\n " shape="box"] 47 -> 42 ; -46 [label="46: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =0 [line 44]\n APPLY_ABSTRACTION; [line 44]\n " shape="box"] +46 [label="46: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =0 [line 44]\n " shape="box"] 46 -> 42 ; -45 [label="45: Prune (false branch) \n PRUNE((n$2 == 0), false); [line 44]\n REMOVE_TEMPS(n$2); [line 44]\n " shape="invhouse"] +45 [label="45: Prune (false branch) \n PRUNE((n$2 == 0), false); [line 44]\n " shape="invhouse"] 45 -> 47 ; -44 [label="44: Prune (true branch) \n PRUNE((n$2 != 0), true); [line 44]\n REMOVE_TEMPS(n$2); [line 44]\n " shape="invhouse"] +44 [label="44: Prune (true branch) \n PRUNE((n$2 != 0), true); [line 44]\n " shape="invhouse"] 44 -> 46 ; @@ -879,11 +879,11 @@ digraph iCFG { 40 -> 59 ; -39 [label="39: Prune (false branch) \n PRUNE(((n$0 > 1) == 0), false); [line 46]\n REMOVE_TEMPS(n$0); [line 46]\n " shape="invhouse"] +39 [label="39: Prune (false branch) \n PRUNE(((n$0 > 1) == 0), false); [line 46]\n " shape="invhouse"] 39 -> 36 ; -38 [label="38: Prune (true branch) \n PRUNE(((n$0 > 1) != 0), true); [line 46]\n REMOVE_TEMPS(n$0); [line 46]\n APPLY_ABSTRACTION; [line 46]\n " shape="invhouse"] +38 [label="38: Prune (true branch) \n PRUNE(((n$0 > 1) != 0), true); [line 46]\n " shape="invhouse"] 38 -> 40 ; @@ -896,7 +896,7 @@ digraph iCFG { 36 -> 35 ; -35 [label="35: Return Stmt \n *&return:int =0 [line 48]\n APPLY_ABSTRACTION; [line 48]\n " shape="box"] +35 [label="35: Return Stmt \n *&return:int =0 [line 48]\n " shape="box"] 35 -> 28 ; @@ -904,11 +904,11 @@ digraph iCFG { 34 -> 33 ; -33 [label="33: BinaryOperatorStmt: Assign \n *&a:int =2 [line 51]\n NULLIFY(&a); [line 51]\n " shape="box"] +33 [label="33: BinaryOperatorStmt: Assign \n *&a:int =2 [line 51]\n " shape="box"] 33 -> 32 ; -32 [label="32: Return Stmt \n *&return:int =2 [line 52]\n APPLY_ABSTRACTION; [line 52]\n " shape="box"] +32 [label="32: Return Stmt \n *&return:int =2 [line 52]\n " shape="box"] 32 -> 28 ; @@ -916,11 +916,11 @@ digraph iCFG { 31 -> 30 ; -30 [label="30: BinaryOperatorStmt: Assign \n *&a:int =3 [line 55]\n NULLIFY(&a); [line 55]\n " shape="box"] +30 [label="30: BinaryOperatorStmt: Assign \n *&a:int =3 [line 55]\n " shape="box"] 30 -> 29 ; -29 [label="29: Return Stmt \n *&return:int =1 [line 56]\n APPLY_ABSTRACTION; [line 56]\n " shape="box"] +29 [label="29: Return Stmt \n *&return:int =1 [line 56]\n " shape="box"] 29 -> 28 ; @@ -931,15 +931,15 @@ digraph iCFG { 27 -> 60 ; -26 [label="26: DeclStmt \n *&a:int =0 [line 27]\n NULLIFY(&a); [line 27]\n " shape="box"] +26 [label="26: DeclStmt \n *&a:int =0 [line 27]\n " shape="box"] 26 -> 23 ; -25 [label="25: Prune (false branch) \n PRUNE(((n$0 > 1) == 0), false); [line 28]\n REMOVE_TEMPS(n$0); [line 28]\n " shape="invhouse"] +25 [label="25: Prune (false branch) \n PRUNE(((n$0 > 1) == 0), false); [line 28]\n " shape="invhouse"] 25 -> 22 ; -24 [label="24: Prune (true branch) \n PRUNE(((n$0 > 1) != 0), true); [line 28]\n REMOVE_TEMPS(n$0); [line 28]\n " shape="invhouse"] +24 [label="24: Prune (true branch) \n PRUNE(((n$0 > 1) != 0), true); [line 28]\n " shape="invhouse"] 24 -> 20 ; @@ -952,7 +952,7 @@ digraph iCFG { 22 -> 21 ; -21 [label="21: Return Stmt \n *&return:int =0 [line 30]\n APPLY_ABSTRACTION; [line 30]\n " shape="box"] +21 [label="21: Return Stmt \n *&return:int =0 [line 30]\n " shape="box"] 21 -> 17 ; @@ -960,11 +960,11 @@ digraph iCFG { 20 -> 19 ; -19 [label="19: BinaryOperatorStmt: Assign \n *&a:int =1 [line 33]\n NULLIFY(&a); [line 33]\n " shape="box"] +19 [label="19: BinaryOperatorStmt: Assign \n *&a:int =1 [line 33]\n " shape="box"] 19 -> 18 ; -18 [label="18: Return Stmt \n *&return:int =1 [line 34]\n APPLY_ABSTRACTION; [line 34]\n " shape="box"] +18 [label="18: Return Stmt \n *&return:int =1 [line 34]\n " shape="box"] 18 -> 17 ; @@ -975,15 +975,15 @@ digraph iCFG { 16 -> 26 ; -15 [label="15: DeclStmt \n *&a:int =0 [line 15]\n NULLIFY(&a); [line 15]\n " shape="box"] +15 [label="15: DeclStmt \n *&a:int =0 [line 15]\n " shape="box"] 15 -> 12 ; -14 [label="14: Prune (false branch) \n PRUNE(((n$0 > 1) == 0), false); [line 16]\n REMOVE_TEMPS(n$0); [line 16]\n " shape="invhouse"] +14 [label="14: Prune (false branch) \n PRUNE(((n$0 > 1) == 0), false); [line 16]\n " shape="invhouse"] 14 -> 11 ; -13 [label="13: Prune (true branch) \n PRUNE(((n$0 > 1) != 0), true); [line 16]\n REMOVE_TEMPS(n$0); [line 16]\n APPLY_ABSTRACTION; [line 16]\n " shape="invhouse"] +13 [label="13: Prune (true branch) \n PRUNE(((n$0 > 1) != 0), true); [line 16]\n " shape="invhouse"] 13 -> 9 ; @@ -996,7 +996,7 @@ digraph iCFG { 11 -> 10 ; -10 [label="10: Skip GotoLabel_stepB \n APPLY_ABSTRACTION; [line 19]\n " color="gray"] +10 [label="10: Skip GotoLabel_stepB \n " color="gray"] 10 -> 9 ; @@ -1008,11 +1008,11 @@ digraph iCFG { 8 -> 7 ; -7 [label="7: BinaryOperatorStmt: Assign \n *&a:int =1 [line 22]\n NULLIFY(&a); [line 22]\n " shape="box"] +7 [label="7: BinaryOperatorStmt: Assign \n *&a:int =1 [line 22]\n " shape="box"] 7 -> 6 ; -6 [label="6: Return Stmt \n *&return:int =1 [line 23]\n APPLY_ABSTRACTION; [line 23]\n " shape="box"] +6 [label="6: Return Stmt \n *&return:int =1 [line 23]\n " shape="box"] 6 -> 5 ; @@ -1023,7 +1023,7 @@ digraph iCFG { 4 -> 15 ; -3 [label="3: Return Stmt \n *&return:int =2 [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =2 [line 12]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/initialization/array_initlistexpr.c.dot b/infer/tests/codetoanalyze/c/frontend/initialization/array_initlistexpr.c.dot index 0ca7e627c..4c742d23b 100644 --- a/infer/tests/codetoanalyze/c/frontend/initialization/array_initlistexpr.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/initialization/array_initlistexpr.c.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -3 [label="3: DeclStmt \n n$0=*&z:int [line 12]\n *&a[0][0]:int =(n$0 + 1) [line 12]\n *&a[0][1]:int =2 [line 12]\n *&a[0][2]:int =3 [line 12]\n *&a[1][0]:int =5 [line 12]\n *&a[1][1]:int =6 [line 12]\n *&a[1][2]:int =7 [line 12]\n REMOVE_TEMPS(n$0); [line 12]\n NULLIFY(&a); [line 12]\n NULLIFY(&z); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +3 [label="3: DeclStmt \n n$0=*&z:int [line 12]\n *&a[0][0]:int =(n$0 + 1) [line 12]\n *&a[0][1]:int =2 [line 12]\n *&a[0][2]:int =3 [line 12]\n *&a[1][0]:int =5 [line 12]\n *&a[1][1]:int =6 [line 12]\n *&a[1][2]:int =7 [line 12]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/initialization/compound_literal.c.dot b/infer/tests/codetoanalyze/c/frontend/initialization/compound_literal.c.dot index e5d2646f8..a47a37971 100644 --- a/infer/tests/codetoanalyze/c/frontend/initialization/compound_literal.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/initialization/compound_literal.c.dot @@ -1,10 +1,10 @@ /* @generated */ digraph iCFG { -7 [label="7: DeclStmt \n *&p.x:int =32 [line 18]\n *&p.y:int =52 [line 18]\n n$1=*&p:struct point [line 18]\n REMOVE_TEMPS(n$1); [line 18]\n " shape="box"] +7 [label="7: DeclStmt \n *&p.x:int =32 [line 18]\n *&p.y:int =52 [line 18]\n n$1=*&p:struct point [line 18]\n " shape="box"] 7 -> 6 ; -6 [label="6: Return Stmt \n n$0=*&p.x:int [line 19]\n *&return:int =(1 / (n$0 - 32)) [line 19]\n REMOVE_TEMPS(n$0); [line 19]\n NULLIFY(&p); [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +6 [label="6: Return Stmt \n n$0=*&p.x:int [line 19]\n *&return:int =(1 / (n$0 - 32)) [line 19]\n " shape="box"] 6 -> 5 ; @@ -15,7 +15,7 @@ digraph iCFG { 4 -> 7 ; -3 [label="3: Return Stmt \n *&SIL_compound_literal__n$0.x:int =52 [line 15]\n *&SIL_compound_literal__n$0.y:int =32 [line 15]\n n$1=*&SIL_compound_literal__n$0.x:int [line 15]\n *&return:int =n$1 [line 15]\n REMOVE_TEMPS(n$1); [line 15]\n NULLIFY(&SIL_compound_literal__n$0); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +3 [label="3: Return Stmt \n *&SIL_compound_literal__n$0.x:int =52 [line 15]\n *&SIL_compound_literal__n$0.y:int =32 [line 15]\n n$1=*&SIL_compound_literal__n$0.x:int [line 15]\n *&return:int =n$1 [line 15]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/initialization/struct_initlistexpr.c.dot b/infer/tests/codetoanalyze/c/frontend/initialization/struct_initlistexpr.c.dot index 0c9d3700b..209c47f32 100644 --- a/infer/tests/codetoanalyze/c/frontend/initialization/struct_initlistexpr.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/initialization/struct_initlistexpr.c.dot @@ -1,10 +1,10 @@ /* @generated */ digraph iCFG { -18 [label="18: BinaryOperatorStmt: Assign \n *&imageDrawRect.origin.x.a:int =0 [line 58]\n *&imageDrawRect.origin.x.b:int =0 [line 58]\n *&imageDrawRect.origin.y:int =0 [line 58]\n *&imageDrawRect.z:int =0 [line 58]\n *&imageDrawRect.size:int =5 [line 58]\n n$1=*&imageDrawRect:struct rect [line 58]\n REMOVE_TEMPS(n$1); [line 58]\n " shape="box"] +18 [label="18: BinaryOperatorStmt: Assign \n *&imageDrawRect.origin.x.a:int =0 [line 58]\n *&imageDrawRect.origin.x.b:int =0 [line 58]\n *&imageDrawRect.origin.y:int =0 [line 58]\n *&imageDrawRect.z:int =0 [line 58]\n *&imageDrawRect.size:int =5 [line 58]\n n$1=*&imageDrawRect:struct rect [line 58]\n " shape="box"] 18 -> 17 ; -17 [label="17: Return Stmt \n n$0=*&imageDrawRect.origin.x.a:int [line 59]\n *&return:int =(1 / n$0) [line 59]\n REMOVE_TEMPS(n$0); [line 59]\n NULLIFY(&imageDrawRect); [line 59]\n APPLY_ABSTRACTION; [line 59]\n " shape="box"] +17 [label="17: Return Stmt \n n$0=*&imageDrawRect.origin.x.a:int [line 59]\n *&return:int =(1 / n$0) [line 59]\n " shape="box"] 17 -> 16 ; @@ -19,7 +19,7 @@ digraph iCFG { 14 -> 13 ; -13 [label="13: Return Stmt \n n$0=*&e.ssn:int [line 36]\n *&return:int =(1 / (n$0 - 12)) [line 36]\n REMOVE_TEMPS(n$0); [line 36]\n NULLIFY(&e); [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="box"] +13 [label="13: Return Stmt \n n$0=*&e.ssn:int [line 36]\n *&return:int =(1 / (n$0 - 12)) [line 36]\n " shape="box"] 13 -> 12 ; @@ -30,11 +30,11 @@ digraph iCFG { 11 -> 14 ; -10 [label="10: BinaryOperatorStmt: Assign \n n$2=*&p:struct Point * [line 20]\n *n$2.x:int =4 [line 20]\n *n$2.y:int =5 [line 20]\n n$3=*n$2:struct Point [line 20]\n REMOVE_TEMPS(n$2,n$3); [line 20]\n " shape="box"] +10 [label="10: BinaryOperatorStmt: Assign \n n$2=*&p:struct Point * [line 20]\n *n$2.x:int =4 [line 20]\n *n$2.y:int =5 [line 20]\n n$3=*n$2:struct Point [line 20]\n " shape="box"] 10 -> 9 ; -9 [label="9: Return Stmt \n n$0=*&p:struct Point * [line 21]\n n$1=*n$0.x:int [line 21]\n *&return:int =(1 / (n$1 - 4)) [line 21]\n REMOVE_TEMPS(n$0,n$1); [line 21]\n NULLIFY(&p); [line 21]\n APPLY_ABSTRACTION; [line 21]\n " shape="box"] +9 [label="9: Return Stmt \n n$0=*&p:struct Point * [line 21]\n n$1=*n$0.x:int [line 21]\n *&return:int =(1 / (n$1 - 4)) [line 21]\n " shape="box"] 9 -> 8 ; @@ -45,7 +45,7 @@ digraph iCFG { 7 -> 10 ; -6 [label="6: DeclStmt \n n$0=_fun_foo() [line 17]\n *&p.x:int =1 [line 17]\n *&p.y:int =(n$0 + 3) [line 17]\n REMOVE_TEMPS(n$0); [line 17]\n NULLIFY(&p); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +6 [label="6: DeclStmt \n n$0=_fun_foo() [line 17]\n *&p.x:int =1 [line 17]\n *&p.y:int =(n$0 + 3) [line 17]\n " shape="box"] 6 -> 5 ; @@ -56,7 +56,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: Return Stmt \n *&return:int =5 [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =5 [line 15]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/loops/do_while.c.dot b/infer/tests/codetoanalyze/c/frontend/loops/do_while.c.dot index f0310944c..e82676408 100644 --- a/infer/tests/codetoanalyze/c/frontend/loops/do_while.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/loops/do_while.c.dot @@ -1,22 +1,22 @@ /* @generated */ digraph iCFG { -10 [label="10: DeclStmt \n *&a:int =10 [line 11]\n NULLIFY(&a); [line 11]\n " shape="box"] +10 [label="10: DeclStmt \n *&a:int =10 [line 11]\n " shape="box"] 10 -> 9 ; -9 [label="9: DeclStmt \n *&b:int =0 [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +9 [label="9: DeclStmt \n *&b:int =0 [line 12]\n " shape="box"] 9 -> 4 ; -8 [label="8: BinaryOperatorStmt: Assign \n *&a:int =1 [line 14]\n NULLIFY(&a); [line 14]\n " shape="box"] +8 [label="8: BinaryOperatorStmt: Assign \n *&a:int =1 [line 14]\n " shape="box"] 8 -> 5 ; -7 [label="7: Prune (false branch) \n PRUNE(((n$0 < 20) == 0), false); [line 15]\n REMOVE_TEMPS(n$0); [line 15]\n NULLIFY(&b); [line 15]\n " shape="invhouse"] +7 [label="7: Prune (false branch) \n PRUNE(((n$0 < 20) == 0), false); [line 15]\n " shape="invhouse"] 7 -> 3 ; -6 [label="6: Prune (true branch) \n PRUNE(((n$0 < 20) != 0), true); [line 15]\n REMOVE_TEMPS(n$0); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="invhouse"] +6 [label="6: Prune (true branch) \n PRUNE(((n$0 < 20) != 0), true); [line 15]\n " shape="invhouse"] 6 -> 4 ; @@ -29,7 +29,7 @@ digraph iCFG { 4 -> 8 ; -3 [label="3: Return Stmt \n *&return:int =0 [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =0 [line 17]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/loops/do_while_condition_side_effects.c.dot b/infer/tests/codetoanalyze/c/frontend/loops/do_while_condition_side_effects.c.dot index 9692868af..2facb4f97 100644 --- a/infer/tests/codetoanalyze/c/frontend/loops/do_while_condition_side_effects.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/loops/do_while_condition_side_effects.c.dot @@ -1,26 +1,26 @@ /* @generated */ digraph iCFG { -10 [label="10: DeclStmt \n *&a:int =10 [line 11]\n NULLIFY(&a); [line 11]\n " shape="box"] +10 [label="10: DeclStmt \n *&a:int =10 [line 11]\n " shape="box"] 10 -> 9 ; -9 [label="9: DeclStmt \n *&b:int =0 [line 12]\n NULLIFY(&b); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +9 [label="9: DeclStmt \n *&b:int =0 [line 12]\n " shape="box"] 9 -> 4 ; -8 [label="8: BinaryOperatorStmt: Assign \n *&a:int =1 [line 14]\n NULLIFY(&a); [line 14]\n " shape="box"] +8 [label="8: BinaryOperatorStmt: Assign \n *&a:int =1 [line 14]\n " shape="box"] 8 -> 5 ; -7 [label="7: Prune (false branch) \n PRUNE((n$0 == 0), false); [line 15]\n REMOVE_TEMPS(n$0); [line 15]\n " shape="invhouse"] +7 [label="7: Prune (false branch) \n PRUNE((n$0 == 0), false); [line 15]\n " shape="invhouse"] 7 -> 3 ; -6 [label="6: Prune (true branch) \n PRUNE((n$0 != 0), true); [line 15]\n REMOVE_TEMPS(n$0); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="invhouse"] +6 [label="6: Prune (true branch) \n PRUNE((n$0 != 0), true); [line 15]\n " shape="invhouse"] 6 -> 4 ; -5 [label="5: BinaryOperatorStmt: Assign \n *&b:int =40 [line 15]\n n$0=*&b:int [line 15]\n NULLIFY(&b); [line 15]\n " shape="box"] +5 [label="5: BinaryOperatorStmt: Assign \n *&b:int =40 [line 15]\n n$0=*&b:int [line 15]\n " shape="box"] 5 -> 6 ; @@ -29,7 +29,7 @@ digraph iCFG { 4 -> 8 ; -3 [label="3: Return Stmt \n *&return:int =0 [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =0 [line 17]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/loops/do_while_nested.c.dot b/infer/tests/codetoanalyze/c/frontend/loops/do_while_nested.c.dot index 325705db7..fd13980a7 100644 --- a/infer/tests/codetoanalyze/c/frontend/loops/do_while_nested.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/loops/do_while_nested.c.dot @@ -1,26 +1,26 @@ /* @generated */ digraph iCFG { -15 [label="15: DeclStmt \n *&a:int =10 [line 11]\n NULLIFY(&a); [line 11]\n " shape="box"] +15 [label="15: DeclStmt \n *&a:int =10 [line 11]\n " shape="box"] 15 -> 14 ; -14 [label="14: DeclStmt \n *&b:int =0 [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +14 [label="14: DeclStmt \n *&b:int =0 [line 12]\n " shape="box"] 14 -> 4 ; -13 [label="13: BinaryOperatorStmt: Assign \n *&a:int =1 [line 14]\n NULLIFY(&a); [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +13 [label="13: BinaryOperatorStmt: Assign \n *&a:int =1 [line 14]\n " shape="box"] 13 -> 8 ; -12 [label="12: BinaryOperatorStmt: Assign \n *&a:int =2 [line 16]\n NULLIFY(&a); [line 16]\n " shape="box"] +12 [label="12: BinaryOperatorStmt: Assign \n *&a:int =2 [line 16]\n " shape="box"] 12 -> 9 ; -11 [label="11: Prune (false branch) \n PRUNE(((n$1 < 30) == 0), false); [line 17]\n REMOVE_TEMPS(n$1); [line 17]\n " shape="invhouse"] +11 [label="11: Prune (false branch) \n PRUNE(((n$1 < 30) == 0), false); [line 17]\n " shape="invhouse"] 11 -> 5 ; -10 [label="10: Prune (true branch) \n PRUNE(((n$1 < 30) != 0), true); [line 17]\n REMOVE_TEMPS(n$1); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="invhouse"] +10 [label="10: Prune (true branch) \n PRUNE(((n$1 < 30) != 0), true); [line 17]\n " shape="invhouse"] 10 -> 8 ; @@ -33,11 +33,11 @@ digraph iCFG { 8 -> 12 ; -7 [label="7: Prune (false branch) \n PRUNE(((n$0 < 20) == 0), false); [line 18]\n REMOVE_TEMPS(n$0); [line 18]\n NULLIFY(&b); [line 18]\n " shape="invhouse"] +7 [label="7: Prune (false branch) \n PRUNE(((n$0 < 20) == 0), false); [line 18]\n " shape="invhouse"] 7 -> 3 ; -6 [label="6: Prune (true branch) \n PRUNE(((n$0 < 20) != 0), true); [line 18]\n REMOVE_TEMPS(n$0); [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="invhouse"] +6 [label="6: Prune (true branch) \n PRUNE(((n$0 < 20) != 0), true); [line 18]\n " shape="invhouse"] 6 -> 4 ; @@ -50,7 +50,7 @@ digraph iCFG { 4 -> 13 ; -3 [label="3: Return Stmt \n *&return:int =0 [line 20]\n APPLY_ABSTRACTION; [line 20]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =0 [line 20]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/loops/for_condition_side_effects.c.dot b/infer/tests/codetoanalyze/c/frontend/loops/for_condition_side_effects.c.dot index 358e4156d..5357c6437 100644 --- a/infer/tests/codetoanalyze/c/frontend/loops/for_condition_side_effects.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/loops/for_condition_side_effects.c.dot @@ -8,28 +8,28 @@ digraph iCFG { 11 -> 5 ; -10 [label="10: BinaryOperatorStmt: AddAssign \n n$2=*&j:int [line 14]\n n$3=*&j:int [line 14]\n *&j:int =(n$3 + n$2) [line 14]\n REMOVE_TEMPS(n$2,n$3); [line 14]\n " shape="box"] +10 [label="10: BinaryOperatorStmt: AddAssign \n n$2=*&j:int [line 14]\n n$3=*&j:int [line 14]\n *&j:int =(n$3 + n$2) [line 14]\n " shape="box"] 10 -> 6 ; -9 [label="9: Prune (false branch) \n PRUNE((n$1 == 0), false); [line 13]\n REMOVE_TEMPS(n$1); [line 13]\n NULLIFY(&i); [line 13]\n NULLIFY(&j); [line 13]\n " shape="invhouse"] +9 [label="9: Prune (false branch) \n PRUNE((n$1 == 0), false); [line 13]\n " shape="invhouse"] 9 -> 3 ; -8 [label="8: Prune (true branch) \n PRUNE((n$1 != 0), true); [line 13]\n REMOVE_TEMPS(n$1); [line 13]\n " shape="invhouse"] +8 [label="8: Prune (true branch) \n PRUNE((n$1 != 0), true); [line 13]\n " shape="invhouse"] 8 -> 10 ; -7 [label="7: BinaryOperatorStmt: Assign \n *&b:int =10 [line 13]\n n$1=*&b:int [line 13]\n NULLIFY(&b); [line 13]\n " shape="box"] +7 [label="7: BinaryOperatorStmt: Assign \n *&b:int =10 [line 13]\n n$1=*&b:int [line 13]\n " shape="box"] 7 -> 8 ; 7 -> 9 ; -6 [label="6: UnaryOperator \n n$0=*&i:int [line 13]\n *&i:int =(n$0 + 1) [line 13]\n REMOVE_TEMPS(n$0); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="box"] +6 [label="6: UnaryOperator \n n$0=*&i:int [line 13]\n *&i:int =(n$0 + 1) [line 13]\n " shape="box"] 6 -> 4 ; -5 [label="5: DeclStmt \n *&b:int =3 [line 13]\n NULLIFY(&b); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="box"] +5 [label="5: DeclStmt \n *&b:int =3 [line 13]\n " shape="box"] 5 -> 4 ; @@ -37,7 +37,7 @@ digraph iCFG { 4 -> 7 ; -3 [label="3: Return Stmt \n *&return:int =0 [line 16]\n APPLY_ABSTRACTION; [line 16]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =0 [line 16]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/loops/for_nested.c.dot b/infer/tests/codetoanalyze/c/frontend/loops/for_nested.c.dot index c8d5e83e9..fc4a8bd95 100644 --- a/infer/tests/codetoanalyze/c/frontend/loops/for_nested.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/loops/for_nested.c.dot @@ -4,15 +4,15 @@ digraph iCFG { 17 -> 5 ; -16 [label="16: BinaryOperatorStmt: Assign \n n$5=*&k:int [line 14]\n n$6=*&i:int [line 14]\n *&k:int =(n$5 + n$6) [line 14]\n REMOVE_TEMPS(n$5,n$6); [line 14]\n " shape="box"] +16 [label="16: BinaryOperatorStmt: Assign \n n$5=*&k:int [line 14]\n n$6=*&i:int [line 14]\n *&k:int =(n$5 + n$6) [line 14]\n " shape="box"] 16 -> 12 ; -15 [label="15: Prune (false branch) \n PRUNE(((n$4 < 10) == 0), false); [line 13]\n REMOVE_TEMPS(n$4); [line 13]\n NULLIFY(&j); [line 13]\n " shape="invhouse"] +15 [label="15: Prune (false branch) \n PRUNE(((n$4 < 10) == 0), false); [line 13]\n " shape="invhouse"] 15 -> 6 ; -14 [label="14: Prune (true branch) \n PRUNE(((n$4 < 10) != 0), true); [line 13]\n REMOVE_TEMPS(n$4); [line 13]\n " shape="invhouse"] +14 [label="14: Prune (true branch) \n PRUNE(((n$4 < 10) != 0), true); [line 13]\n " shape="invhouse"] 14 -> 16 ; @@ -21,11 +21,11 @@ digraph iCFG { 13 -> 14 ; 13 -> 15 ; -12 [label="12: UnaryOperator \n n$3=*&j:int [line 13]\n *&j:int =(n$3 + 1) [line 13]\n REMOVE_TEMPS(n$3); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="box"] +12 [label="12: UnaryOperator \n n$3=*&j:int [line 13]\n *&j:int =(n$3 + 1) [line 13]\n " shape="box"] 12 -> 10 ; -11 [label="11: DeclStmt \n *&j:int =0 [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="box"] +11 [label="11: DeclStmt \n *&j:int =0 [line 13]\n " shape="box"] 11 -> 10 ; @@ -33,11 +33,11 @@ digraph iCFG { 10 -> 13 ; -9 [label="9: Prune (false branch) \n PRUNE(((n$2 < 10) == 0), false); [line 12]\n REMOVE_TEMPS(n$2); [line 12]\n NULLIFY(&i); [line 12]\n " shape="invhouse"] +9 [label="9: Prune (false branch) \n PRUNE(((n$2 < 10) == 0), false); [line 12]\n " shape="invhouse"] 9 -> 3 ; -8 [label="8: Prune (true branch) \n PRUNE(((n$2 < 10) != 0), true); [line 12]\n REMOVE_TEMPS(n$2); [line 12]\n " shape="invhouse"] +8 [label="8: Prune (true branch) \n PRUNE(((n$2 < 10) != 0), true); [line 12]\n " shape="invhouse"] 8 -> 11 ; @@ -46,11 +46,11 @@ digraph iCFG { 7 -> 8 ; 7 -> 9 ; -6 [label="6: UnaryOperator \n n$1=*&i:int [line 12]\n *&i:int =(n$1 + 1) [line 12]\n REMOVE_TEMPS(n$1); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +6 [label="6: UnaryOperator \n n$1=*&i:int [line 12]\n *&i:int =(n$1 + 1) [line 12]\n " shape="box"] 6 -> 4 ; -5 [label="5: DeclStmt \n *&i:int =0 [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +5 [label="5: DeclStmt \n *&i:int =0 [line 12]\n " shape="box"] 5 -> 4 ; @@ -58,7 +58,7 @@ digraph iCFG { 4 -> 7 ; -3 [label="3: Return Stmt \n n$0=*&k:int [line 17]\n *&return:int =n$0 [line 17]\n REMOVE_TEMPS(n$0); [line 17]\n NULLIFY(&k); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&k:int [line 17]\n *&return:int =n$0 [line 17]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/loops/for_no_condition.c.dot b/infer/tests/codetoanalyze/c/frontend/loops/for_no_condition.c.dot index 649dd587f..0428b028b 100644 --- a/infer/tests/codetoanalyze/c/frontend/loops/for_no_condition.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/loops/for_no_condition.c.dot @@ -4,11 +4,11 @@ digraph iCFG { 10 -> 5 ; -9 [label="9: BinaryOperatorStmt: AddAssign \n n$1=*&j:int [line 13]\n n$2=*&j:int [line 13]\n *&j:int =(n$2 + n$1) [line 13]\n REMOVE_TEMPS(n$1,n$2); [line 13]\n " shape="box"] +9 [label="9: BinaryOperatorStmt: AddAssign \n n$1=*&j:int [line 13]\n n$2=*&j:int [line 13]\n *&j:int =(n$2 + n$1) [line 13]\n " shape="box"] 9 -> 6 ; -8 [label="8: Prune (false branch) \n PRUNE((1 == 0), false); [line 12]\n NULLIFY(&b); [line 12]\n NULLIFY(&j); [line 12]\n " shape="invhouse"] +8 [label="8: Prune (false branch) \n PRUNE((1 == 0), false); [line 12]\n " shape="invhouse"] 8 -> 3 ; @@ -16,11 +16,11 @@ digraph iCFG { 7 -> 9 ; -6 [label="6: UnaryOperator \n n$0=*&b:int [line 12]\n *&b:int =(n$0 + 1) [line 12]\n REMOVE_TEMPS(n$0); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +6 [label="6: UnaryOperator \n n$0=*&b:int [line 12]\n *&b:int =(n$0 + 1) [line 12]\n " shape="box"] 6 -> 4 ; -5 [label="5: DeclStmt \n *&b:int =0 [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +5 [label="5: DeclStmt \n *&b:int =0 [line 12]\n " shape="box"] 5 -> 4 ; @@ -29,7 +29,7 @@ digraph iCFG { 4 -> 7 ; 4 -> 8 ; -3 [label="3: Return Stmt \n *&return:int =0 [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =0 [line 15]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/loops/for_no_condition_incr.c.dot b/infer/tests/codetoanalyze/c/frontend/loops/for_no_condition_incr.c.dot index 9e4d56a46..27dd21c07 100644 --- a/infer/tests/codetoanalyze/c/frontend/loops/for_no_condition_incr.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/loops/for_no_condition_incr.c.dot @@ -4,11 +4,11 @@ digraph iCFG { 9 -> 5 ; -8 [label="8: BinaryOperatorStmt: AddAssign \n n$0=*&j:int [line 13]\n n$1=*&j:int [line 13]\n *&j:int =(n$1 + n$0) [line 13]\n REMOVE_TEMPS(n$0,n$1); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="box"] +8 [label="8: BinaryOperatorStmt: AddAssign \n n$0=*&j:int [line 13]\n n$1=*&j:int [line 13]\n *&j:int =(n$1 + n$0) [line 13]\n " shape="box"] 8 -> 4 ; -7 [label="7: Prune (false branch) \n PRUNE((1 == 0), false); [line 12]\n NULLIFY(&j); [line 12]\n " shape="invhouse"] +7 [label="7: Prune (false branch) \n PRUNE((1 == 0), false); [line 12]\n " shape="invhouse"] 7 -> 3 ; @@ -16,7 +16,7 @@ digraph iCFG { 6 -> 8 ; -5 [label="5: DeclStmt \n *&b:int =0 [line 12]\n NULLIFY(&b); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +5 [label="5: DeclStmt \n *&b:int =0 [line 12]\n " shape="box"] 5 -> 4 ; @@ -25,7 +25,7 @@ digraph iCFG { 4 -> 6 ; 4 -> 7 ; -3 [label="3: Return Stmt \n *&return:int =0 [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =0 [line 15]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/loops/for_no_condition_incr_body.c.dot b/infer/tests/codetoanalyze/c/frontend/loops/for_no_condition_incr_body.c.dot index fd34bff78..afd8f9a7f 100644 --- a/infer/tests/codetoanalyze/c/frontend/loops/for_no_condition_incr_body.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/loops/for_no_condition_incr_body.c.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -8 [label="8: DeclStmt \n *&d:int =0 [line 11]\n NULLIFY(&d); [line 11]\n " shape="box"] +8 [label="8: DeclStmt \n *&d:int =0 [line 11]\n " shape="box"] 8 -> 5 ; @@ -8,11 +8,11 @@ digraph iCFG { 7 -> 3 ; -6 [label="6: Prune (true branch) \n PRUNE((1 != 0), true); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="invhouse"] +6 [label="6: Prune (true branch) \n PRUNE((1 != 0), true); [line 12]\n " shape="invhouse"] 6 -> 4 ; -5 [label="5: BinaryOperatorStmt: Assign \n *&d:int =0 [line 12]\n NULLIFY(&d); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +5 [label="5: BinaryOperatorStmt: Assign \n *&d:int =0 [line 12]\n " shape="box"] 5 -> 4 ; @@ -21,7 +21,7 @@ digraph iCFG { 4 -> 6 ; 4 -> 7 ; -3 [label="3: Return Stmt \n *&return:int =0 [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =0 [line 14]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/loops/for_only_body.c.dot b/infer/tests/codetoanalyze/c/frontend/loops/for_only_body.c.dot index 303a784a7..be910b026 100644 --- a/infer/tests/codetoanalyze/c/frontend/loops/for_only_body.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/loops/for_only_body.c.dot @@ -1,14 +1,14 @@ /* @generated */ digraph iCFG { -8 [label="8: DeclStmt \n *&i:int =0 [line 11]\n APPLY_ABSTRACTION; [line 11]\n " shape="box"] +8 [label="8: DeclStmt \n *&i:int =0 [line 11]\n " shape="box"] 8 -> 4 ; -7 [label="7: UnaryOperator \n n$0=*&i:int [line 13]\n *&i:int =(n$0 + 1) [line 13]\n REMOVE_TEMPS(n$0); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="box"] +7 [label="7: UnaryOperator \n n$0=*&i:int [line 13]\n *&i:int =(n$0 + 1) [line 13]\n " shape="box"] 7 -> 4 ; -6 [label="6: Prune (false branch) \n PRUNE((1 == 0), false); [line 14]\n NULLIFY(&i); [line 14]\n " shape="invhouse"] +6 [label="6: Prune (false branch) \n PRUNE((1 == 0), false); [line 14]\n " shape="invhouse"] 6 -> 3 ; @@ -21,7 +21,7 @@ digraph iCFG { 4 -> 5 ; 4 -> 6 ; -3 [label="3: Return Stmt \n *&return:int =0 [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =0 [line 15]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/loops/for_simple.c.dot b/infer/tests/codetoanalyze/c/frontend/loops/for_simple.c.dot index 2dba6ab8c..fb25413f4 100644 --- a/infer/tests/codetoanalyze/c/frontend/loops/for_simple.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/loops/for_simple.c.dot @@ -4,15 +4,15 @@ digraph iCFG { 11 -> 5 ; -10 [label="10: BinaryOperatorStmt: AddAssign \n n$2=*&j:int [line 13]\n n$3=*&j:int [line 13]\n *&j:int =(n$3 + n$2) [line 13]\n REMOVE_TEMPS(n$2,n$3); [line 13]\n " shape="box"] +10 [label="10: BinaryOperatorStmt: AddAssign \n n$2=*&j:int [line 13]\n n$3=*&j:int [line 13]\n *&j:int =(n$3 + n$2) [line 13]\n " shape="box"] 10 -> 6 ; -9 [label="9: Prune (false branch) \n PRUNE(((n$1 < 10) == 0), false); [line 12]\n REMOVE_TEMPS(n$1); [line 12]\n NULLIFY(&i); [line 12]\n NULLIFY(&j); [line 12]\n " shape="invhouse"] +9 [label="9: Prune (false branch) \n PRUNE(((n$1 < 10) == 0), false); [line 12]\n " shape="invhouse"] 9 -> 3 ; -8 [label="8: Prune (true branch) \n PRUNE(((n$1 < 10) != 0), true); [line 12]\n REMOVE_TEMPS(n$1); [line 12]\n " shape="invhouse"] +8 [label="8: Prune (true branch) \n PRUNE(((n$1 < 10) != 0), true); [line 12]\n " shape="invhouse"] 8 -> 10 ; @@ -21,11 +21,11 @@ digraph iCFG { 7 -> 8 ; 7 -> 9 ; -6 [label="6: UnaryOperator \n n$0=*&i:int [line 12]\n *&i:int =(n$0 + 1) [line 12]\n REMOVE_TEMPS(n$0); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +6 [label="6: UnaryOperator \n n$0=*&i:int [line 12]\n *&i:int =(n$0 + 1) [line 12]\n " shape="box"] 6 -> 4 ; -5 [label="5: DeclStmt \n *&i:int =0 [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +5 [label="5: DeclStmt \n *&i:int =0 [line 12]\n " shape="box"] 5 -> 4 ; @@ -33,7 +33,7 @@ digraph iCFG { 4 -> 7 ; -3 [label="3: Return Stmt \n *&return:int =0 [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =0 [line 15]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/loops/for_while_nested.c.dot b/infer/tests/codetoanalyze/c/frontend/loops/for_while_nested.c.dot index 8302d7086..1d145906a 100644 --- a/infer/tests/codetoanalyze/c/frontend/loops/for_while_nested.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/loops/for_while_nested.c.dot @@ -4,15 +4,15 @@ digraph iCFG { 15 -> 5 ; -14 [label="14: UnaryOperator \n n$4=*&k:int [line 14]\n *&k:int =(n$4 + 1) [line 14]\n REMOVE_TEMPS(n$4); [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +14 [label="14: UnaryOperator \n n$4=*&k:int [line 14]\n *&k:int =(n$4 + 1) [line 14]\n " shape="box"] 14 -> 10 ; -13 [label="13: Prune (false branch) \n PRUNE(((n$3 < 10) == 0), false); [line 13]\n REMOVE_TEMPS(n$3); [line 13]\n " shape="invhouse"] +13 [label="13: Prune (false branch) \n PRUNE(((n$3 < 10) == 0), false); [line 13]\n " shape="invhouse"] 13 -> 6 ; -12 [label="12: Prune (true branch) \n PRUNE(((n$3 < 10) != 0), true); [line 13]\n REMOVE_TEMPS(n$3); [line 13]\n " shape="invhouse"] +12 [label="12: Prune (true branch) \n PRUNE(((n$3 < 10) != 0), true); [line 13]\n " shape="invhouse"] 12 -> 14 ; @@ -25,11 +25,11 @@ digraph iCFG { 10 -> 11 ; -9 [label="9: Prune (false branch) \n PRUNE(((n$2 < 10) == 0), false); [line 12]\n REMOVE_TEMPS(n$2); [line 12]\n NULLIFY(&i); [line 12]\n " shape="invhouse"] +9 [label="9: Prune (false branch) \n PRUNE(((n$2 < 10) == 0), false); [line 12]\n " shape="invhouse"] 9 -> 3 ; -8 [label="8: Prune (true branch) \n PRUNE(((n$2 < 10) != 0), true); [line 12]\n REMOVE_TEMPS(n$2); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="invhouse"] +8 [label="8: Prune (true branch) \n PRUNE(((n$2 < 10) != 0), true); [line 12]\n " shape="invhouse"] 8 -> 10 ; @@ -38,11 +38,11 @@ digraph iCFG { 7 -> 8 ; 7 -> 9 ; -6 [label="6: UnaryOperator \n n$1=*&i:int [line 12]\n *&i:int =(n$1 + 1) [line 12]\n REMOVE_TEMPS(n$1); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +6 [label="6: UnaryOperator \n n$1=*&i:int [line 12]\n *&i:int =(n$1 + 1) [line 12]\n " shape="box"] 6 -> 4 ; -5 [label="5: DeclStmt \n *&i:int =0 [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +5 [label="5: DeclStmt \n *&i:int =0 [line 12]\n " shape="box"] 5 -> 4 ; @@ -50,7 +50,7 @@ digraph iCFG { 4 -> 7 ; -3 [label="3: Return Stmt \n n$0=*&k:int [line 17]\n *&return:int =n$0 [line 17]\n REMOVE_TEMPS(n$0); [line 17]\n NULLIFY(&k); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&k:int [line 17]\n *&return:int =n$0 [line 17]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/loops/while.c.dot b/infer/tests/codetoanalyze/c/frontend/loops/while.c.dot index e584ce7c7..fcd54f8fc 100644 --- a/infer/tests/codetoanalyze/c/frontend/loops/while.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/loops/while.c.dot @@ -1,18 +1,18 @@ /* @generated */ digraph iCFG { -9 [label="9: DeclStmt \n *&i:int =0 [line 11]\n APPLY_ABSTRACTION; [line 11]\n " shape="box"] +9 [label="9: DeclStmt \n *&i:int =0 [line 11]\n " shape="box"] 9 -> 4 ; -8 [label="8: UnaryOperator \n n$1=*&i:int [line 13]\n *&i:int =(n$1 + 1) [line 13]\n REMOVE_TEMPS(n$1); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="box"] +8 [label="8: UnaryOperator \n n$1=*&i:int [line 13]\n *&i:int =(n$1 + 1) [line 13]\n " shape="box"] 8 -> 4 ; -7 [label="7: Prune (false branch) \n PRUNE(((n$0 <= 10) == 0), false); [line 12]\n REMOVE_TEMPS(n$0); [line 12]\n NULLIFY(&i); [line 12]\n " shape="invhouse"] +7 [label="7: Prune (false branch) \n PRUNE(((n$0 <= 10) == 0), false); [line 12]\n " shape="invhouse"] 7 -> 3 ; -6 [label="6: Prune (true branch) \n PRUNE(((n$0 <= 10) != 0), true); [line 12]\n REMOVE_TEMPS(n$0); [line 12]\n " shape="invhouse"] +6 [label="6: Prune (true branch) \n PRUNE(((n$0 <= 10) != 0), true); [line 12]\n " shape="invhouse"] 6 -> 8 ; @@ -25,7 +25,7 @@ digraph iCFG { 4 -> 5 ; -3 [label="3: Return Stmt \n *&return:int =0 [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =0 [line 15]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/loops/while_condition_side_effects.c.dot b/infer/tests/codetoanalyze/c/frontend/loops/while_condition_side_effects.c.dot index 17cf678e2..0df804470 100644 --- a/infer/tests/codetoanalyze/c/frontend/loops/while_condition_side_effects.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/loops/while_condition_side_effects.c.dot @@ -1,18 +1,18 @@ /* @generated */ digraph iCFG { -9 [label="9: DeclStmt \n *&i:int =0 [line 11]\n NULLIFY(&i); [line 11]\n APPLY_ABSTRACTION; [line 11]\n " shape="box"] +9 [label="9: DeclStmt \n *&i:int =0 [line 11]\n " shape="box"] 9 -> 4 ; -8 [label="8: UnaryOperator \n n$1=*&i:int [line 13]\n *&i:int =(n$1 + 1) [line 13]\n REMOVE_TEMPS(n$1); [line 13]\n NULLIFY(&i); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="box"] +8 [label="8: UnaryOperator \n n$1=*&i:int [line 13]\n *&i:int =(n$1 + 1) [line 13]\n " shape="box"] 8 -> 4 ; -7 [label="7: Prune (false branch) \n PRUNE((n$0 == 0), false); [line 12]\n REMOVE_TEMPS(n$0); [line 12]\n NULLIFY(&i); [line 12]\n " shape="invhouse"] +7 [label="7: Prune (false branch) \n PRUNE((n$0 == 0), false); [line 12]\n " shape="invhouse"] 7 -> 3 ; -6 [label="6: Prune (true branch) \n PRUNE((n$0 != 0), true); [line 12]\n REMOVE_TEMPS(n$0); [line 12]\n " shape="invhouse"] +6 [label="6: Prune (true branch) \n PRUNE((n$0 != 0), true); [line 12]\n " shape="invhouse"] 6 -> 8 ; @@ -25,7 +25,7 @@ digraph iCFG { 4 -> 5 ; -3 [label="3: Return Stmt \n *&return:int =0 [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =0 [line 15]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/loops/while_nested.c.dot b/infer/tests/codetoanalyze/c/frontend/loops/while_nested.c.dot index a6dda8dbc..975ef769b 100644 --- a/infer/tests/codetoanalyze/c/frontend/loops/while_nested.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/loops/while_nested.c.dot @@ -4,19 +4,19 @@ digraph iCFG { 15 -> 14 ; -14 [label="14: DeclStmt \n *&k:int =0 [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +14 [label="14: DeclStmt \n *&k:int =0 [line 12]\n " shape="box"] 14 -> 4 ; -13 [label="13: UnaryOperator \n n$3=*&k:int [line 15]\n *&k:int =(n$3 + 1) [line 15]\n REMOVE_TEMPS(n$3); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +13 [label="13: UnaryOperator \n n$3=*&k:int [line 15]\n *&k:int =(n$3 + 1) [line 15]\n " shape="box"] 13 -> 9 ; -12 [label="12: Prune (false branch) \n PRUNE(((n$2 <= 5) == 0), false); [line 14]\n REMOVE_TEMPS(n$2); [line 14]\n " shape="invhouse"] +12 [label="12: Prune (false branch) \n PRUNE(((n$2 <= 5) == 0), false); [line 14]\n " shape="invhouse"] 12 -> 8 ; -11 [label="11: Prune (true branch) \n PRUNE(((n$2 <= 5) != 0), true); [line 14]\n REMOVE_TEMPS(n$2); [line 14]\n " shape="invhouse"] +11 [label="11: Prune (true branch) \n PRUNE(((n$2 <= 5) != 0), true); [line 14]\n " shape="invhouse"] 11 -> 13 ; @@ -29,15 +29,15 @@ digraph iCFG { 9 -> 10 ; -8 [label="8: UnaryOperator \n n$1=*&i:int [line 17]\n *&i:int =(n$1 + 1) [line 17]\n REMOVE_TEMPS(n$1); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +8 [label="8: UnaryOperator \n n$1=*&i:int [line 17]\n *&i:int =(n$1 + 1) [line 17]\n " shape="box"] 8 -> 4 ; -7 [label="7: Prune (false branch) \n PRUNE(((n$0 <= 10) == 0), false); [line 13]\n REMOVE_TEMPS(n$0); [line 13]\n NULLIFY(&i); [line 13]\n NULLIFY(&k); [line 13]\n " shape="invhouse"] +7 [label="7: Prune (false branch) \n PRUNE(((n$0 <= 10) == 0), false); [line 13]\n " shape="invhouse"] 7 -> 3 ; -6 [label="6: Prune (true branch) \n PRUNE(((n$0 <= 10) != 0), true); [line 13]\n REMOVE_TEMPS(n$0); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="invhouse"] +6 [label="6: Prune (true branch) \n PRUNE(((n$0 <= 10) != 0), true); [line 13]\n " shape="invhouse"] 6 -> 9 ; @@ -50,7 +50,7 @@ digraph iCFG { 4 -> 5 ; -3 [label="3: Return Stmt \n *&return:int =0 [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =0 [line 19]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/loops/while_no_body.c.dot b/infer/tests/codetoanalyze/c/frontend/loops/while_no_body.c.dot index 60a8a7661..44c379d43 100644 --- a/infer/tests/codetoanalyze/c/frontend/loops/while_no_body.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/loops/while_no_body.c.dot @@ -4,7 +4,7 @@ digraph iCFG { 6 -> 3 ; -5 [label="5: Prune (true branch) \n PRUNE((1 != 0), true); [line 11]\n APPLY_ABSTRACTION; [line 11]\n " shape="invhouse"] +5 [label="5: Prune (true branch) \n PRUNE((1 != 0), true); [line 11]\n " shape="invhouse"] 5 -> 4 ; @@ -13,7 +13,7 @@ digraph iCFG { 4 -> 5 ; 4 -> 6 ; -3 [label="3: Return Stmt \n *&return:int =0 [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =0 [line 13]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/loops/while_with_continue_and_break.c.dot b/infer/tests/codetoanalyze/c/frontend/loops/while_with_continue_and_break.c.dot index 92f6dba21..faaca12d7 100644 --- a/infer/tests/codetoanalyze/c/frontend/loops/while_with_continue_and_break.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/loops/while_with_continue_and_break.c.dot @@ -1,18 +1,18 @@ /* @generated */ digraph iCFG { -19 [label="19: DeclStmt \n *&x:int =0 [line 11]\n APPLY_ABSTRACTION; [line 11]\n " shape="box"] +19 [label="19: DeclStmt \n *&x:int =0 [line 11]\n " shape="box"] 19 -> 4 ; -18 [label="18: BinaryOperatorStmt: AddAssign \n n$2=*&x:int [line 14]\n *&x:int =(n$2 + 1) [line 14]\n REMOVE_TEMPS(n$2); [line 14]\n " shape="box"] +18 [label="18: BinaryOperatorStmt: AddAssign \n n$2=*&x:int [line 14]\n *&x:int =(n$2 + 1) [line 14]\n " shape="box"] 18 -> 15 ; -17 [label="17: Prune (false branch) \n PRUNE(((n$1 > 5) == 0), false); [line 15]\n REMOVE_TEMPS(n$1); [line 15]\n " shape="invhouse"] +17 [label="17: Prune (false branch) \n PRUNE(((n$1 > 5) == 0), false); [line 15]\n " shape="invhouse"] 17 -> 14 ; -16 [label="16: Prune (true branch) \n PRUNE(((n$1 > 5) != 0), true); [line 15]\n REMOVE_TEMPS(n$1); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="invhouse"] +16 [label="16: Prune (true branch) \n PRUNE(((n$1 > 5) != 0), true); [line 15]\n " shape="invhouse"] 16 -> 8 ; @@ -25,7 +25,7 @@ digraph iCFG { 14 -> 11 ; -13 [label="13: Prune (false branch) \n PRUNE((2 == 0), false); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="invhouse"] +13 [label="13: Prune (false branch) \n PRUNE((2 == 0), false); [line 13]\n " shape="invhouse"] 13 -> 8 ; @@ -38,11 +38,11 @@ digraph iCFG { 11 -> 12 ; 11 -> 13 ; -10 [label="10: Prune (false branch) \n PRUNE(((n$0 == 2) == 0), false); [line 19]\n REMOVE_TEMPS(n$0); [line 19]\n " shape="invhouse"] +10 [label="10: Prune (false branch) \n PRUNE(((n$0 == 2) == 0), false); [line 19]\n " shape="invhouse"] 10 -> 7 ; -9 [label="9: Prune (true branch) \n PRUNE(((n$0 == 2) != 0), true); [line 19]\n REMOVE_TEMPS(n$0); [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="invhouse"] +9 [label="9: Prune (true branch) \n PRUNE(((n$0 == 2) != 0), true); [line 19]\n " shape="invhouse"] 9 -> 4 ; @@ -55,11 +55,11 @@ digraph iCFG { 7 -> 4 ; -6 [label="6: Prune (false branch) \n PRUNE((1 == 0), false); [line 12]\n NULLIFY(&x); [line 12]\n " shape="invhouse"] +6 [label="6: Prune (false branch) \n PRUNE((1 == 0), false); [line 12]\n " shape="invhouse"] 6 -> 3 ; -5 [label="5: Prune (true branch) \n PRUNE((1 != 0), true); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="invhouse"] +5 [label="5: Prune (true branch) \n PRUNE((1 != 0), true); [line 12]\n " shape="invhouse"] 5 -> 11 ; @@ -68,7 +68,7 @@ digraph iCFG { 4 -> 5 ; 4 -> 6 ; -3 [label="3: Return Stmt \n *&return:int =0 [line 23]\n APPLY_ABSTRACTION; [line 23]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =0 [line 23]\n " shape="box"] 3 -> 2 ; 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 8b17a12fe..cfa44b60f 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 @@ -1,18 +1,18 @@ /* @generated */ digraph iCFG { -8 [label="8: Return Stmt \n *&return:int =32 [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +8 [label="8: Return Stmt \n *&return:int =32 [line 12]\n " shape="box"] 8 -> 2 ; -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 [label="7: Prune (false branch) \n PRUNE((n$1 == 0), false); [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$1); [line 11]\n " shape="invhouse"] +6 [label="6: Prune (true branch) \n PRUNE((n$1 != 0), true); [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 REMOVE_TEMPS(n$0); [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 " shape="box"] 5 -> 6 ; @@ -21,7 +21,7 @@ digraph iCFG { 4 -> 3 ; -3 [label="3: Return Stmt \n *&return:int =52 [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =52 [line 14]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/nestedoperators/assign_in_condition.cpp.dot b/infer/tests/codetoanalyze/c/frontend/nestedoperators/assign_in_condition.cpp.dot index 65657f4f5..f30daf727 100644 --- a/infer/tests/codetoanalyze/c/frontend/nestedoperators/assign_in_condition.cpp.dot +++ b/infer/tests/codetoanalyze/c/frontend/nestedoperators/assign_in_condition.cpp.dot @@ -1,18 +1,18 @@ /* @generated */ digraph iCFG { -8 [label="8: Return Stmt \n *&return:int =32 [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +8 [label="8: Return Stmt \n *&return:int =32 [line 12]\n " shape="box"] 8 -> 2 ; -7 [label="7: Prune (false branch) \n n$1=*n$0:int [line 11]\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 n$1=*n$0:int [line 11]\n PRUNE((n$1 == 0), false); [line 11]\n " shape="invhouse"] 7 -> 4 ; -6 [label="6: Prune (true branch) \n n$1=*n$0:int [line 11]\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 n$1=*n$0:int [line 11]\n PRUNE((n$1 != 0), true); [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 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 " shape="box"] 5 -> 6 ; @@ -21,7 +21,7 @@ digraph iCFG { 4 -> 3 ; -3 [label="3: Return Stmt \n *&return:int =52 [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =52 [line 14]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/nestedoperators/assign_with_increment.c.dot b/infer/tests/codetoanalyze/c/frontend/nestedoperators/assign_with_increment.c.dot index 9f714dcb7..c183c59a5 100644 --- a/infer/tests/codetoanalyze/c/frontend/nestedoperators/assign_with_increment.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/nestedoperators/assign_with_increment.c.dot @@ -4,19 +4,19 @@ digraph iCFG { 7 -> 6 ; -6 [label="6: DeclStmt \n n$3=*&a:int [line 12]\n *&a:int =(n$3 + 1) [line 12]\n *&b:int =(n$3 + 1) [line 12]\n REMOVE_TEMPS(n$3); [line 12]\n NULLIFY(&b); [line 12]\n " shape="box"] +6 [label="6: DeclStmt \n n$3=*&a:int [line 12]\n *&a:int =(n$3 + 1) [line 12]\n *&b:int =(n$3 + 1) [line 12]\n " shape="box"] 6 -> 5 ; -5 [label="5: DeclStmt \n n$2=*&a:int [line 13]\n *&a:int =(n$2 + 1) [line 13]\n *&c:int =n$2 [line 13]\n REMOVE_TEMPS(n$2); [line 13]\n NULLIFY(&c); [line 13]\n " shape="box"] +5 [label="5: DeclStmt \n n$2=*&a:int [line 13]\n *&a:int =(n$2 + 1) [line 13]\n *&c:int =n$2 [line 13]\n " shape="box"] 5 -> 4 ; -4 [label="4: DeclStmt \n n$1=*&a:int [line 14]\n *&a:int =(n$1 - 1) [line 14]\n *&d:int =(n$1 - 1) [line 14]\n REMOVE_TEMPS(n$1); [line 14]\n NULLIFY(&d); [line 14]\n " shape="box"] +4 [label="4: DeclStmt \n n$1=*&a:int [line 14]\n *&a:int =(n$1 - 1) [line 14]\n *&d:int =(n$1 - 1) [line 14]\n " shape="box"] 4 -> 3 ; -3 [label="3: DeclStmt \n n$0=*&a:int [line 15]\n *&a:int =(n$0 - 1) [line 15]\n *&e:int =n$0 [line 15]\n REMOVE_TEMPS(n$0); [line 15]\n NULLIFY(&a); [line 15]\n NULLIFY(&e); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +3 [label="3: DeclStmt \n n$0=*&a:int [line 15]\n *&a:int =(n$0 - 1) [line 15]\n *&e:int =n$0 [line 15]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/nestedoperators/assign_with_increment.cpp.dot b/infer/tests/codetoanalyze/c/frontend/nestedoperators/assign_with_increment.cpp.dot index 688b12cb9..e7ab0a8dd 100644 --- a/infer/tests/codetoanalyze/c/frontend/nestedoperators/assign_with_increment.cpp.dot +++ b/infer/tests/codetoanalyze/c/frontend/nestedoperators/assign_with_increment.cpp.dot @@ -4,19 +4,19 @@ digraph iCFG { 7 -> 6 ; -6 [label="6: DeclStmt \n n$4=*&a:int [line 12]\n *&a:int =(n$4 + 1) [line 12]\n n$5=*&a:int [line 12]\n *&b:int =n$5 [line 12]\n REMOVE_TEMPS(n$4,n$5); [line 12]\n NULLIFY(&b); [line 12]\n " shape="box"] +6 [label="6: DeclStmt \n n$4=*&a:int [line 12]\n *&a:int =(n$4 + 1) [line 12]\n n$5=*&a:int [line 12]\n *&b:int =n$5 [line 12]\n " shape="box"] 6 -> 5 ; -5 [label="5: DeclStmt \n n$3=*&a:int [line 13]\n *&a:int =(n$3 + 1) [line 13]\n *&c:int =n$3 [line 13]\n REMOVE_TEMPS(n$3); [line 13]\n NULLIFY(&c); [line 13]\n " shape="box"] +5 [label="5: DeclStmt \n n$3=*&a:int [line 13]\n *&a:int =(n$3 + 1) [line 13]\n *&c:int =n$3 [line 13]\n " shape="box"] 5 -> 4 ; -4 [label="4: DeclStmt \n n$1=*&a:int [line 14]\n *&a:int =(n$1 - 1) [line 14]\n n$2=*&a:int [line 14]\n *&d:int =n$2 [line 14]\n REMOVE_TEMPS(n$1,n$2); [line 14]\n NULLIFY(&d); [line 14]\n " shape="box"] +4 [label="4: DeclStmt \n n$1=*&a:int [line 14]\n *&a:int =(n$1 - 1) [line 14]\n n$2=*&a:int [line 14]\n *&d:int =n$2 [line 14]\n " shape="box"] 4 -> 3 ; -3 [label="3: DeclStmt \n n$0=*&a:int [line 15]\n *&a:int =(n$0 - 1) [line 15]\n *&e:int =n$0 [line 15]\n REMOVE_TEMPS(n$0); [line 15]\n NULLIFY(&a); [line 15]\n NULLIFY(&e); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +3 [label="3: DeclStmt \n n$0=*&a:int [line 15]\n *&a:int =(n$0 - 1) [line 15]\n *&e:int =n$0 [line 15]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/nestedoperators/gnuexpr.c.dot b/infer/tests/codetoanalyze/c/frontend/nestedoperators/gnuexpr.c.dot index 4fd614081..6fa4fdb3b 100644 --- a/infer/tests/codetoanalyze/c/frontend/nestedoperators/gnuexpr.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/nestedoperators/gnuexpr.c.dot @@ -1,6 +1,6 @@ /* @generated */ 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$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 [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 " shape="box"] 8 -> 7 ; @@ -11,15 +11,15 @@ digraph iCFG { 6 -> 8 ; -5 [label="5: DeclStmt \n *&y:int =3 [line 11]\n NULLIFY(&y); [line 11]\n " shape="box"] +5 [label="5: DeclStmt \n *&y:int =3 [line 11]\n " shape="box"] 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$0,n$1); [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 " shape="box"] 4 -> 3 ; -3 [label="3: Return Stmt \n *&return:int =0 [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =0 [line 17]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/nestedoperators/nestedassignment.c.dot b/infer/tests/codetoanalyze/c/frontend/nestedoperators/nestedassignment.c.dot index 398e30256..ba77b7db9 100644 --- a/infer/tests/codetoanalyze/c/frontend/nestedoperators/nestedassignment.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/nestedoperators/nestedassignment.c.dot @@ -1,30 +1,30 @@ /* @generated */ digraph iCFG { -9 [label="9: DeclStmt \n *&x:double =1.000000 [line 11]\n NULLIFY(&x); [line 11]\n " shape="box"] +9 [label="9: DeclStmt \n *&x:double =1.000000 [line 11]\n " shape="box"] 9 -> 8 ; -8 [label="8: BinaryOperatorStmt: Assign \n n$11=*&s:double [line 13]\n *&x:double =n$11 [line 13]\n REMOVE_TEMPS(n$11); [line 13]\n NULLIFY(&x); [line 13]\n " shape="box"] +8 [label="8: BinaryOperatorStmt: Assign \n n$11=*&s:double [line 13]\n *&x:double =n$11 [line 13]\n " shape="box"] 8 -> 7 ; -7 [label="7: BinaryOperatorStmt: Assign \n *&x:double =3 [line 14]\n n$10=*&x:double [line 14]\n *&q:double =n$10 [line 14]\n REMOVE_TEMPS(n$10); [line 14]\n NULLIFY(&q); [line 14]\n " shape="box"] +7 [label="7: BinaryOperatorStmt: Assign \n *&x:double =3 [line 14]\n n$10=*&x:double [line 14]\n *&q:double =n$10 [line 14]\n " shape="box"] 7 -> 6 ; -6 [label="6: BinaryOperatorStmt: AddAssign \n n$9=*&x:double [line 15]\n *&x:double =(n$9 + 7) [line 15]\n REMOVE_TEMPS(n$9); [line 15]\n " shape="box"] +6 [label="6: BinaryOperatorStmt: AddAssign \n n$9=*&x:double [line 15]\n *&x:double =(n$9 + 7) [line 15]\n " shape="box"] 6 -> 5 ; -5 [label="5: BinaryOperatorStmt: Assign \n n$7=*&x:double [line 16]\n *&x:double =(n$7 + 1.000000) [line 16]\n n$8=*&x:double [line 16]\n *&q:double =n$8 [line 16]\n REMOVE_TEMPS(n$7,n$8); [line 16]\n NULLIFY(&q); [line 16]\n " shape="box"] +5 [label="5: BinaryOperatorStmt: Assign \n n$7=*&x:double [line 16]\n *&x:double =(n$7 + 1.000000) [line 16]\n n$8=*&x:double [line 16]\n *&q:double =n$8 [line 16]\n " shape="box"] 5 -> 4 ; -4 [label="4: BinaryOperatorStmt: Assign \n n$0=*&t:double [line 17]\n n$1=*&s:double [line 17]\n *&s:double =(n$1 + n$0) [line 17]\n n$2=*&s:double [line 17]\n n$3=*&r:double [line 17]\n *&r:double =(n$3 + n$2) [line 17]\n n$4=*&r:double [line 17]\n n$5=*&x:double [line 17]\n *&x:double =(n$5 + n$4) [line 17]\n n$6=*&x:double [line 17]\n *&q:double =n$6 [line 17]\n REMOVE_TEMPS(n$0,n$1,n$2,n$3,n$4,n$5,n$6); [line 17]\n NULLIFY(&q); [line 17]\n NULLIFY(&r); [line 17]\n NULLIFY(&s); [line 17]\n NULLIFY(&t); [line 17]\n NULLIFY(&x); [line 17]\n " shape="box"] +4 [label="4: BinaryOperatorStmt: Assign \n n$0=*&t:double [line 17]\n n$1=*&s:double [line 17]\n *&s:double =(n$1 + n$0) [line 17]\n n$2=*&s:double [line 17]\n n$3=*&r:double [line 17]\n *&r:double =(n$3 + n$2) [line 17]\n n$4=*&r:double [line 17]\n n$5=*&x:double [line 17]\n *&x:double =(n$5 + n$4) [line 17]\n n$6=*&x:double [line 17]\n *&q:double =n$6 [line 17]\n " shape="box"] 4 -> 3 ; -3 [label="3: Return Stmt \n *&return:int =0 [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =0 [line 18]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/nestedoperators/union.c.dot b/infer/tests/codetoanalyze/c/frontend/nestedoperators/union.c.dot index 2f774bf63..8b138bc04 100644 --- a/infer/tests/codetoanalyze/c/frontend/nestedoperators/union.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/nestedoperators/union.c.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -7 [label="7: BinaryOperatorStmt: Assign \n n$3=*&#GB$x:struct (anonymous struct at infer_tests_codetoanalyze_c_frontend_nestedoperators_union.c:12:1) * [line 32]\n *n$3.a:int =1 [line 32]\n REMOVE_TEMPS(n$3); [line 32]\n " shape="box"] +7 [label="7: BinaryOperatorStmt: Assign \n n$3=*&#GB$x:struct (anonymous struct at infer_tests_codetoanalyze_c_frontend_nestedoperators_union.c:12:1) * [line 32]\n *n$3.a:int =1 [line 32]\n " shape="box"] 7 -> 6 ; @@ -8,15 +8,15 @@ digraph iCFG { 6 -> 5 ; -5 [label="5: BinaryOperatorStmt: Assign \n n$2=*&#GB$y.f:int [line 34]\n *&#GB$y.g.u:int =n$2 [line 34]\n REMOVE_TEMPS(n$2); [line 34]\n " shape="box"] +5 [label="5: BinaryOperatorStmt: Assign \n n$2=*&#GB$y.f:int [line 34]\n *&#GB$y.g.u:int =n$2 [line 34]\n " shape="box"] 5 -> 4 ; -4 [label="4: BinaryOperatorStmt: Assign \n n$0=*&#GB$x:struct (anonymous struct at infer_tests_codetoanalyze_c_frontend_nestedoperators_union.c:12:1) * [line 36]\n n$1=*n$0.b:int [line 36]\n *&#GB$y.g.w:int =n$1 [line 36]\n REMOVE_TEMPS(n$0,n$1); [line 36]\n " shape="box"] +4 [label="4: BinaryOperatorStmt: Assign \n n$0=*&#GB$x:struct (anonymous struct at infer_tests_codetoanalyze_c_frontend_nestedoperators_union.c:12:1) * [line 36]\n n$1=*n$0.b:int [line 36]\n *&#GB$y.g.w:int =n$1 [line 36]\n " shape="box"] 4 -> 3 ; -3 [label="3: Return Stmt \n *&return:int =0 [line 37]\n APPLY_ABSTRACTION; [line 37]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =0 [line 37]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/nestedoperators/union.cpp.dot b/infer/tests/codetoanalyze/c/frontend/nestedoperators/union.cpp.dot index f7f927611..f5368250f 100644 --- a/infer/tests/codetoanalyze/c/frontend/nestedoperators/union.cpp.dot +++ b/infer/tests/codetoanalyze/c/frontend/nestedoperators/union.cpp.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -9 [label="9: BinaryOperatorStmt: Assign \n n$3=*&#GB$x:class (anonymous struct at infer_tests_codetoanalyze_c_frontend_nestedoperators_union.cpp:12:1) * [line 32]\n *n$3.a:int =1 [line 32]\n REMOVE_TEMPS(n$3); [line 32]\n " shape="box"] +9 [label="9: BinaryOperatorStmt: Assign \n n$3=*&#GB$x:class (anonymous struct at infer_tests_codetoanalyze_c_frontend_nestedoperators_union.cpp:12:1) * [line 32]\n *n$3.a:int =1 [line 32]\n " shape="box"] 9 -> 8 ; @@ -8,15 +8,15 @@ digraph iCFG { 8 -> 7 ; -7 [label="7: BinaryOperatorStmt: Assign \n n$2=*&#GB$y.f:int [line 34]\n *&#GB$y.g.u:int =n$2 [line 34]\n REMOVE_TEMPS(n$2); [line 34]\n " shape="box"] +7 [label="7: BinaryOperatorStmt: Assign \n n$2=*&#GB$y.f:int [line 34]\n *&#GB$y.g.u:int =n$2 [line 34]\n " shape="box"] 7 -> 6 ; -6 [label="6: BinaryOperatorStmt: Assign \n n$0=*&#GB$x:class (anonymous struct at infer_tests_codetoanalyze_c_frontend_nestedoperators_union.cpp:12:1) * [line 36]\n n$1=*n$0.b:int [line 36]\n *&#GB$y.g.w:int =n$1 [line 36]\n REMOVE_TEMPS(n$0,n$1); [line 36]\n " shape="box"] +6 [label="6: BinaryOperatorStmt: Assign \n n$0=*&#GB$x:class (anonymous struct at infer_tests_codetoanalyze_c_frontend_nestedoperators_union.cpp:12:1) * [line 36]\n n$1=*n$0.b:int [line 36]\n *&#GB$y.g.w:int =n$1 [line 36]\n " shape="box"] 6 -> 5 ; -5 [label="5: Return Stmt \n *&return:int =0 [line 37]\n APPLY_ABSTRACTION; [line 37]\n " shape="box"] +5 [label="5: Return Stmt \n *&return:int =0 [line 37]\n " shape="box"] 5 -> 4 ; diff --git a/infer/tests/codetoanalyze/c/frontend/switchstmt/switch.c.dot b/infer/tests/codetoanalyze/c/frontend/switchstmt/switch.c.dot index 9c8034e95..53ab453d0 100644 --- a/infer/tests/codetoanalyze/c/frontend/switchstmt/switch.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/switchstmt/switch.c.dot @@ -4,40 +4,40 @@ digraph iCFG { 195 -> 186 ; -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 [label="194: Prune (false branch) \n PRUNE(((n$3 == 0) == 0), false); [line 194]\n " shape="invhouse"] 194 -> 184 ; -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 [label="193: Prune (true branch) \n PRUNE(((n$3 == 0) != 0), true); [line 194]\n " shape="invhouse"] 193 -> 192 ; -192 [label="192: Call _fun_printf \n n$4=_fun_printf(\"(0)HELLO WORLD!\":char *) [line 195]\n REMOVE_TEMPS(n$4); [line 195]\n APPLY_ABSTRACTION; [line 195]\n " shape="box"] +192 [label="192: Call _fun_printf \n n$4=_fun_printf(\"(0)HELLO WORLD!\":char *) [line 195]\n " shape="box"] 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 REMOVE_TEMPS(n$2); [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 " shape="box"] 191 -> 193 ; 191 -> 194 ; -190 [label="190: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =9 [line 193]\n APPLY_ABSTRACTION; [line 193]\n " shape="box"] +190 [label="190: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =9 [line 193]\n " shape="box"] 190 -> 185 ; -189 [label="189: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =7 [line 193]\n APPLY_ABSTRACTION; [line 193]\n " shape="box"] +189 [label="189: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =7 [line 193]\n " shape="box"] 189 -> 185 ; -188 [label="188: Prune (false branch) \n PRUNE(((n$1 == 0) == 0), false); [line 193]\n REMOVE_TEMPS(n$1); [line 193]\n " shape="invhouse"] +188 [label="188: Prune (false branch) \n PRUNE(((n$1 == 0) == 0), false); [line 193]\n " shape="invhouse"] 188 -> 190 ; -187 [label="187: Prune (true branch) \n PRUNE(((n$1 == 0) != 0), true); [line 193]\n REMOVE_TEMPS(n$1); [line 193]\n " shape="invhouse"] +187 [label="187: Prune (true branch) \n PRUNE(((n$1 == 0) != 0), true); [line 193]\n " shape="invhouse"] 187 -> 189 ; -186 [label="186: BinaryOperatorStmt: EQ \n n$1=*&value:int [line 193]\n NULLIFY(&value); [line 193]\n " shape="box"] +186 [label="186: BinaryOperatorStmt: EQ \n n$1=*&value:int [line 193]\n " shape="box"] 186 -> 187 ; @@ -46,7 +46,7 @@ digraph iCFG { 185 -> 191 ; -184 [label="184: Return Stmt \n *&return:int =0 [line 197]\n APPLY_ABSTRACTION; [line 197]\n " shape="box"] +184 [label="184: Return Stmt \n *&return:int =0 [line 197]\n " shape="box"] 184 -> 183 ; @@ -57,15 +57,15 @@ digraph iCFG { 182 -> 195 ; -181 [label="181: DeclStmt \n *&value:int =0 [line 186]\n NULLIFY(&value); [line 186]\n " shape="box"] +181 [label="181: DeclStmt \n *&value:int =0 [line 186]\n " shape="box"] 181 -> 180 ; -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 [label="180: Switch_stmt \n *&value:int =7 [line 187]\n n$0=*&value:int [line 187]\n " shape="box"] 180 -> 179 ; -179 [label="179: Return Stmt \n *&return:int =0 [line 188]\n APPLY_ABSTRACTION; [line 188]\n " shape="box"] +179 [label="179: Return Stmt \n *&return:int =0 [line 188]\n " shape="box"] 179 -> 178 ; @@ -80,11 +80,11 @@ digraph iCFG { 176 -> 175 ; -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 [label="175: Switch_stmt \n n$0=*&value:int [line 181]\n " shape="box"] 175 -> 174 ; -174 [label="174: Return Stmt \n *&return:int =0 [line 182]\n APPLY_ABSTRACTION; [line 182]\n " shape="box"] +174 [label="174: Return Stmt \n *&return:int =0 [line 182]\n " shape="box"] 174 -> 173 ; @@ -95,7 +95,7 @@ digraph iCFG { 172 -> 176 ; -171 [label="171: DeclStmt \n *&value:int =0 [line 158]\n APPLY_ABSTRACTION; [line 158]\n " shape="box"] +171 [label="171: DeclStmt \n *&value:int =0 [line 158]\n " shape="box"] 171 -> 146 ; @@ -104,15 +104,15 @@ digraph iCFG { 170 -> 165 ; 170 -> 166 ; -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 [label="169: Prune (true branch) \n PRUNE(((n$3 == 0) != 0), true); [line 161]\n " shape="invhouse"] 169 -> 168 ; -168 [label="168: Call _fun_printf \n n$5=_fun_printf(\"(0)HELLO WORLD!\":char *) [line 162]\n REMOVE_TEMPS(n$5); [line 162]\n " shape="box"] +168 [label="168: Call _fun_printf \n n$5=_fun_printf(\"(0)HELLO WORLD!\":char *) [line 162]\n " shape="box"] 168 -> 167 ; -167 [label="167: Return Stmt \n *&return:int =0 [line 163]\n APPLY_ABSTRACTION; [line 163]\n " shape="box"] +167 [label="167: Return Stmt \n *&return:int =0 [line 163]\n " shape="box"] 167 -> 144 ; @@ -121,7 +121,7 @@ digraph iCFG { 166 -> 160 ; 166 -> 161 ; -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 [label="165: Prune (true branch) \n PRUNE(((n$3 == 1) != 0), true); [line 164]\n " shape="invhouse"] 165 -> 164 ; @@ -129,11 +129,11 @@ digraph iCFG { 164 -> 163 ; -163 [label="163: UnaryOperator \n n$4=*&something:int [line 166]\n *&something:int =(n$4 + 1) [line 166]\n REMOVE_TEMPS(n$4); [line 166]\n NULLIFY(&something); [line 166]\n APPLY_ABSTRACTION; [line 166]\n " shape="box"] +163 [label="163: UnaryOperator \n n$4=*&something:int [line 166]\n *&something:int =(n$4 + 1) [line 166]\n " shape="box"] 163 -> 146 ; -162 [label="162: DeclStmt \n *&z:int =9 [line 169]\n APPLY_ABSTRACTION; [line 169]\n " shape="box"] +162 [label="162: DeclStmt \n *&z:int =9 [line 169]\n " shape="box"] 162 -> 150 ; @@ -142,36 +142,36 @@ digraph iCFG { 161 -> 158 ; 161 -> 159 ; -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 [label="160: Prune (true branch) \n PRUNE(((n$3 == 2) != 0), true); [line 170]\n " shape="invhouse"] 160 -> 150 ; -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 [label="159: Prune (false branch) \n PRUNE(((n$3 == 3) == 0), false); [line 171]\n " shape="invhouse"] 159 -> 150 ; -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 [label="158: Prune (true branch) \n PRUNE(((n$3 == 3) != 0), true); [line 171]\n " shape="invhouse"] 158 -> 150 ; -157 [label="157: Switch_stmt \n n$3=*&SIL_temp_conditional___n$1:int [line 160]\n NULLIFY(&SIL_temp_conditional___n$1); [line 160]\n " shape="box"] +157 [label="157: Switch_stmt \n n$3=*&SIL_temp_conditional___n$1:int [line 160]\n " shape="box"] 157 -> 169 ; 157 -> 170 ; -156 [label="156: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =2 [line 160]\n APPLY_ABSTRACTION; [line 160]\n " shape="box"] +156 [label="156: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =2 [line 160]\n " shape="box"] 156 -> 151 ; -155 [label="155: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =1 [line 160]\n APPLY_ABSTRACTION; [line 160]\n " shape="box"] +155 [label="155: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =1 [line 160]\n " shape="box"] 155 -> 151 ; -154 [label="154: Prune (false branch) \n PRUNE(((n$2 == 0) == 0), false); [line 160]\n REMOVE_TEMPS(n$2); [line 160]\n " shape="invhouse"] +154 [label="154: Prune (false branch) \n PRUNE(((n$2 == 0) == 0), false); [line 160]\n " shape="invhouse"] 154 -> 156 ; -153 [label="153: Prune (true branch) \n PRUNE(((n$2 == 0) != 0), true); [line 160]\n REMOVE_TEMPS(n$2); [line 160]\n " shape="invhouse"] +153 [label="153: Prune (true branch) \n PRUNE(((n$2 == 0) != 0), true); [line 160]\n " shape="invhouse"] 153 -> 155 ; @@ -184,15 +184,15 @@ digraph iCFG { 151 -> 157 ; -150 [label="150: DeclStmt \n *&a:int =0 [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 " shape="box"] 150 -> 146 ; -149 [label="149: Prune (false branch) \n PRUNE(((n$0 < 10) == 0), false); [line 159]\n REMOVE_TEMPS(n$0); [line 159]\n NULLIFY(&value); [line 159]\n " shape="invhouse"] +149 [label="149: Prune (false branch) \n PRUNE(((n$0 < 10) == 0), false); [line 159]\n " shape="invhouse"] 149 -> 145 ; -148 [label="148: Prune (true branch) \n PRUNE(((n$0 < 10) != 0), true); [line 159]\n REMOVE_TEMPS(n$0); [line 159]\n " shape="invhouse"] +148 [label="148: Prune (true branch) \n PRUNE(((n$0 < 10) != 0), true); [line 159]\n " shape="invhouse"] 148 -> 152 ; @@ -205,7 +205,7 @@ digraph iCFG { 146 -> 147 ; -145 [label="145: Return Stmt \n *&return:int =0 [line 176]\n APPLY_ABSTRACTION; [line 176]\n " shape="box"] +145 [label="145: Return Stmt \n *&return:int =0 [line 176]\n " shape="box"] 145 -> 144 ; @@ -216,7 +216,7 @@ digraph iCFG { 143 -> 171 ; -142 [label="142: DeclStmt \n *&value:int =0 [line 140]\n NULLIFY(&value); [line 140]\n " shape="box"] +142 [label="142: DeclStmt \n *&value:int =0 [line 140]\n " shape="box"] 142 -> 129 ; @@ -225,11 +225,11 @@ digraph iCFG { 141 -> 137 ; 141 -> 138 ; -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 [label="140: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 142]\n " shape="invhouse"] 140 -> 139 ; -139 [label="139: Call _fun_printf \n n$2=_fun_printf(\"(0)HELLO WORLD!\":char *) [line 143]\n REMOVE_TEMPS(n$2); [line 143]\n APPLY_ABSTRACTION; [line 143]\n " shape="box"] +139 [label="139: Call _fun_printf \n n$2=_fun_printf(\"(0)HELLO WORLD!\":char *) [line 143]\n " shape="box"] 139 -> 128 ; @@ -238,7 +238,7 @@ digraph iCFG { 138 -> 132 ; 138 -> 133 ; -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 [label="137: Prune (true branch) \n PRUNE(((n$0 == 1) != 0), true); [line 145]\n " shape="invhouse"] 137 -> 136 ; @@ -246,11 +246,11 @@ digraph iCFG { 136 -> 135 ; -135 [label="135: UnaryOperator \n n$1=*&something:int [line 147]\n *&something:int =(n$1 + 1) [line 147]\n REMOVE_TEMPS(n$1); [line 147]\n NULLIFY(&something); [line 147]\n APPLY_ABSTRACTION; [line 147]\n " shape="box"] +135 [label="135: UnaryOperator \n n$1=*&something:int [line 147]\n *&something:int =(n$1 + 1) [line 147]\n " shape="box"] 135 -> 128 ; -134 [label="134: DeclStmt \n *&z:int =9 [line 149]\n APPLY_ABSTRACTION; [line 149]\n " shape="box"] +134 [label="134: DeclStmt \n *&z:int =9 [line 149]\n " shape="box"] 134 -> 128 ; @@ -259,15 +259,15 @@ digraph iCFG { 133 -> 130 ; 133 -> 131 ; -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 [label="132: Prune (true branch) \n PRUNE(((n$0 == 2) != 0), true); [line 150]\n " shape="invhouse"] 132 -> 128 ; -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 [label="131: Prune (false branch) \n PRUNE(((n$0 == 3) == 0), false); [line 151]\n " shape="invhouse"] 131 -> 128 ; -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 [label="130: Prune (true branch) \n PRUNE(((n$0 == 3) != 0), true); [line 151]\n " shape="invhouse"] 130 -> 128 ; @@ -276,7 +276,7 @@ digraph iCFG { 129 -> 140 ; 129 -> 141 ; -128 [label="128: Return Stmt \n *&return:int =0 [line 154]\n APPLY_ABSTRACTION; [line 154]\n " shape="box"] +128 [label="128: Return Stmt \n *&return:int =0 [line 154]\n " shape="box"] 128 -> 127 ; @@ -287,7 +287,7 @@ digraph iCFG { 126 -> 142 ; -125 [label="125: Return Stmt \n *&return:int =1 [line 137]\n APPLY_ABSTRACTION; [line 137]\n " shape="box"] +125 [label="125: Return Stmt \n *&return:int =1 [line 137]\n " shape="box"] 125 -> 124 ; @@ -307,11 +307,11 @@ digraph iCFG { 121 -> 117 ; 121 -> 118 ; -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 [label="120: Prune (true branch) \n PRUNE(((n$2 == 0) != 0), true); [line 122]\n " shape="invhouse"] 120 -> 119 ; -119 [label="119: Call _fun_printf \n n$4=_fun_printf(\"(0)HELLO WORLD!\":char *) [line 123]\n REMOVE_TEMPS(n$4); [line 123]\n APPLY_ABSTRACTION; [line 123]\n " shape="box"] +119 [label="119: Call _fun_printf \n n$4=_fun_printf(\"(0)HELLO WORLD!\":char *) [line 123]\n " shape="box"] 119 -> 102 ; @@ -320,7 +320,7 @@ digraph iCFG { 118 -> 112 ; 118 -> 113 ; -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 [label="117: Prune (true branch) \n PRUNE(((n$2 == 1) != 0), true); [line 125]\n " shape="invhouse"] 117 -> 116 ; @@ -328,11 +328,11 @@ digraph iCFG { 116 -> 115 ; -115 [label="115: UnaryOperator \n n$3=*&something:int [line 127]\n *&something:int =(n$3 + 1) [line 127]\n REMOVE_TEMPS(n$3); [line 127]\n NULLIFY(&something); [line 127]\n APPLY_ABSTRACTION; [line 127]\n " shape="box"] +115 [label="115: UnaryOperator \n n$3=*&something:int [line 127]\n *&something:int =(n$3 + 1) [line 127]\n " shape="box"] 115 -> 102 ; -114 [label="114: DeclStmt \n *&z:int =9 [line 129]\n APPLY_ABSTRACTION; [line 129]\n " shape="box"] +114 [label="114: DeclStmt \n *&z:int =9 [line 129]\n " shape="box"] 114 -> 102 ; @@ -341,40 +341,40 @@ digraph iCFG { 113 -> 110 ; 113 -> 111 ; -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 [label="112: Prune (true branch) \n PRUNE(((n$2 == 2) != 0), true); [line 130]\n " shape="invhouse"] 112 -> 102 ; -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 [label="111: Prune (false branch) \n PRUNE(((n$2 == 3) == 0), false); [line 131]\n " shape="invhouse"] 111 -> 102 ; -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 [label="110: Prune (true branch) \n PRUNE(((n$2 == 3) != 0), true); [line 131]\n " shape="invhouse"] 110 -> 102 ; -109 [label="109: Switch_stmt \n n$2=*&SIL_temp_conditional___n$0:int [line 121]\n NULLIFY(&SIL_temp_conditional___n$0); [line 121]\n " shape="box"] +109 [label="109: Switch_stmt \n n$2=*&SIL_temp_conditional___n$0:int [line 121]\n " shape="box"] 109 -> 120 ; 109 -> 121 ; -108 [label="108: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =0 [line 121]\n APPLY_ABSTRACTION; [line 121]\n " shape="box"] +108 [label="108: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =0 [line 121]\n " shape="box"] 108 -> 103 ; -107 [label="107: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =1 [line 121]\n APPLY_ABSTRACTION; [line 121]\n " shape="box"] +107 [label="107: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =1 [line 121]\n " shape="box"] 107 -> 103 ; -106 [label="106: Prune (false branch) \n PRUNE(((n$1 > 0) == 0), false); [line 121]\n REMOVE_TEMPS(n$1); [line 121]\n " shape="invhouse"] +106 [label="106: Prune (false branch) \n PRUNE(((n$1 > 0) == 0), false); [line 121]\n " shape="invhouse"] 106 -> 108 ; -105 [label="105: Prune (true branch) \n PRUNE(((n$1 > 0) != 0), true); [line 121]\n REMOVE_TEMPS(n$1); [line 121]\n " shape="invhouse"] +105 [label="105: Prune (true branch) \n PRUNE(((n$1 > 0) != 0), true); [line 121]\n " shape="invhouse"] 105 -> 107 ; -104 [label="104: BinaryOperatorStmt: GT \n n$1=*&value:int [line 121]\n NULLIFY(&value); [line 121]\n " shape="box"] +104 [label="104: BinaryOperatorStmt: GT \n n$1=*&value:int [line 121]\n " shape="box"] 104 -> 105 ; @@ -383,7 +383,7 @@ digraph iCFG { 103 -> 109 ; -102 [label="102: Return Stmt \n *&return:int =0 [line 134]\n APPLY_ABSTRACTION; [line 134]\n " shape="box"] +102 [label="102: Return Stmt \n *&return:int =0 [line 134]\n " shape="box"] 102 -> 101 ; @@ -394,7 +394,7 @@ digraph iCFG { 100 -> 122 ; -99 [label="99: DeclStmt \n *&value:int =0 [line 104]\n APPLY_ABSTRACTION; [line 104]\n " shape="box"] +99 [label="99: DeclStmt \n *&value:int =0 [line 104]\n " shape="box"] 99 -> 88 ; @@ -406,19 +406,19 @@ digraph iCFG { 97 -> 96 ; -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 [label="96: BinaryOperatorStmt: Assign \n n$3=*&value:int [line 109]\n *&x:int =(n$3 + 1) [line 109]\n " shape="box"] 96 -> 88 ; -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 [label="95: Prune (false branch) \n PRUNE(((n$1 == 0) == 0), false); [line 111]\n " shape="invhouse"] 95 -> 88 ; -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 [label="94: Prune (true branch) \n PRUNE(((n$1 == 0) != 0), true); [line 111]\n " shape="invhouse"] 94 -> 93 ; -93 [label="93: Call _fun_printf \n n$2=_fun_printf(\"(0)HELLO WORLD!\":char *) [line 112]\n REMOVE_TEMPS(n$2); [line 112]\n APPLY_ABSTRACTION; [line 112]\n " shape="box"] +93 [label="93: Call _fun_printf \n n$2=_fun_printf(\"(0)HELLO WORLD!\":char *) [line 112]\n " shape="box"] 93 -> 88 ; @@ -427,11 +427,11 @@ digraph iCFG { 92 -> 94 ; 92 -> 95 ; -91 [label="91: Prune (false branch) \n PRUNE(((n$0 < 10) == 0), false); [line 105]\n REMOVE_TEMPS(n$0); [line 105]\n NULLIFY(&value); [line 105]\n " shape="invhouse"] +91 [label="91: Prune (false branch) \n PRUNE(((n$0 < 10) == 0), false); [line 105]\n " shape="invhouse"] 91 -> 87 ; -90 [label="90: Prune (true branch) \n PRUNE(((n$0 < 10) != 0), true); [line 105]\n REMOVE_TEMPS(n$0); [line 105]\n " shape="invhouse"] +90 [label="90: Prune (true branch) \n PRUNE(((n$0 < 10) != 0), true); [line 105]\n " shape="invhouse"] 90 -> 92 ; @@ -444,7 +444,7 @@ digraph iCFG { 88 -> 89 ; -87 [label="87: Return Stmt \n *&return:int =0 [line 116]\n APPLY_ABSTRACTION; [line 116]\n " shape="box"] +87 [label="87: Return Stmt \n *&return:int =0 [line 116]\n " shape="box"] 87 -> 86 ; @@ -467,7 +467,7 @@ digraph iCFG { 82 -> 81 ; -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 [label="81: BinaryOperatorStmt: Assign \n n$3=*&value:int [line 83]\n *&x:int =(n$3 + 1) [line 83]\n " shape="box"] 81 -> 78 ; @@ -476,15 +476,15 @@ digraph iCFG { 80 -> 75 ; 80 -> 76 ; -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 [label="79: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 84]\n " shape="invhouse"] 79 -> 78 ; -78 [label="78: Call _fun_printf \n n$2=_fun_printf(\"(0)HELLO WORLD!\":char *) [line 85]\n REMOVE_TEMPS(n$2); [line 85]\n APPLY_ABSTRACTION; [line 85]\n " shape="box"] +78 [label="78: Call _fun_printf \n n$2=_fun_printf(\"(0)HELLO WORLD!\":char *) [line 85]\n " shape="box"] 78 -> 65 ; -77 [label="77: DeclStmt \n *&z:int =9 [line 87]\n APPLY_ABSTRACTION; [line 87]\n " shape="box"] +77 [label="77: DeclStmt \n *&z:int =9 [line 87]\n " shape="box"] 77 -> 74 ; @@ -493,7 +493,7 @@ digraph iCFG { 76 -> 70 ; 76 -> 71 ; -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 [label="75: Prune (true branch) \n PRUNE(((n$0 == 1) != 0), true); [line 90]\n " shape="invhouse"] 75 -> 74 ; @@ -501,11 +501,11 @@ digraph iCFG { 74 -> 73 ; -73 [label="73: UnaryOperator \n n$1=*&something:int [line 92]\n *&something:int =(n$1 + 1) [line 92]\n REMOVE_TEMPS(n$1); [line 92]\n NULLIFY(&something); [line 92]\n " shape="box"] +73 [label="73: UnaryOperator \n n$1=*&something:int [line 92]\n *&something:int =(n$1 + 1) [line 92]\n " shape="box"] 73 -> 72 ; -72 [label="72: BinaryOperatorStmt: Assign \n *&z:int =42 [line 94]\n NULLIFY(&z); [line 94]\n APPLY_ABSTRACTION; [line 94]\n " shape="box"] +72 [label="72: BinaryOperatorStmt: Assign \n *&z:int =42 [line 94]\n " shape="box"] 72 -> 65 ; @@ -514,28 +514,28 @@ digraph iCFG { 71 -> 68 ; 71 -> 69 ; -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 [label="70: Prune (true branch) \n PRUNE(((n$0 == 2) != 0), true); [line 96]\n " shape="invhouse"] 70 -> 65 ; -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 [label="69: Prune (false branch) \n PRUNE(((n$0 == 3) == 0), false); [line 97]\n " shape="invhouse"] 69 -> 67 ; -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 [label="68: Prune (true branch) \n PRUNE(((n$0 == 3) != 0), true); [line 97]\n " shape="invhouse"] 68 -> 65 ; -67 [label="67: DefaultStmt_placeholder \n APPLY_ABSTRACTION; [line 88]\n " shape="box"] +67 [label="67: DefaultStmt_placeholder \n " shape="box"] 67 -> 74 ; -66 [label="66: Switch_stmt \n n$0=*&value:int [line 80]\n NULLIFY(&value); [line 80]\n " shape="box"] +66 [label="66: Switch_stmt \n n$0=*&value:int [line 80]\n " shape="box"] 66 -> 79 ; 66 -> 80 ; -65 [label="65: Return Stmt \n *&return:int =0 [line 100]\n APPLY_ABSTRACTION; [line 100]\n " shape="box"] +65 [label="65: Return Stmt \n *&return:int =0 [line 100]\n " shape="box"] 65 -> 64 ; @@ -555,11 +555,11 @@ digraph iCFG { 61 -> 57 ; 61 -> 58 ; -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 [label="60: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 63]\n " shape="invhouse"] 60 -> 59 ; -59 [label="59: Call _fun_printf \n n$2=_fun_printf(\"(0)HELLO WORLD!\":char *) [line 64]\n REMOVE_TEMPS(n$2); [line 64]\n APPLY_ABSTRACTION; [line 64]\n " shape="box"] +59 [label="59: Call _fun_printf \n n$2=_fun_printf(\"(0)HELLO WORLD!\":char *) [line 64]\n " shape="box"] 59 -> 48 ; @@ -568,7 +568,7 @@ digraph iCFG { 58 -> 52 ; 58 -> 53 ; -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 [label="57: Prune (true branch) \n PRUNE(((n$0 == 1) != 0), true); [line 66]\n " shape="invhouse"] 57 -> 56 ; @@ -576,11 +576,11 @@ digraph iCFG { 56 -> 55 ; -55 [label="55: UnaryOperator \n n$1=*&something:int [line 68]\n *&something:int =(n$1 + 1) [line 68]\n REMOVE_TEMPS(n$1); [line 68]\n NULLIFY(&something); [line 68]\n APPLY_ABSTRACTION; [line 68]\n " shape="box"] +55 [label="55: UnaryOperator \n n$1=*&something:int [line 68]\n *&something:int =(n$1 + 1) [line 68]\n " shape="box"] 55 -> 48 ; -54 [label="54: DeclStmt \n *&z:int =9 [line 70]\n APPLY_ABSTRACTION; [line 70]\n " shape="box"] +54 [label="54: DeclStmt \n *&z:int =9 [line 70]\n " shape="box"] 54 -> 48 ; @@ -589,24 +589,24 @@ digraph iCFG { 53 -> 50 ; 53 -> 51 ; -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 [label="52: Prune (true branch) \n PRUNE(((n$0 == 2) != 0), true); [line 71]\n " shape="invhouse"] 52 -> 48 ; -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 [label="51: Prune (false branch) \n PRUNE(((n$0 == 3) == 0), false); [line 72]\n " shape="invhouse"] 51 -> 48 ; -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 [label="50: Prune (true branch) \n PRUNE(((n$0 == 3) != 0), true); [line 72]\n " shape="invhouse"] 50 -> 48 ; -49 [label="49: Switch_stmt \n n$0=*&value:int [line 62]\n NULLIFY(&value); [line 62]\n " shape="box"] +49 [label="49: Switch_stmt \n n$0=*&value:int [line 62]\n " shape="box"] 49 -> 60 ; 49 -> 61 ; -48 [label="48: Return Stmt \n *&return:int =0 [line 75]\n APPLY_ABSTRACTION; [line 75]\n " shape="box"] +48 [label="48: Return Stmt \n *&return:int =0 [line 75]\n " shape="box"] 48 -> 47 ; @@ -629,7 +629,7 @@ digraph iCFG { 43 -> 42 ; -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 [label="42: BinaryOperatorStmt: Assign \n n$3=*&value:int [line 40]\n *&x:int =(n$3 + 1) [line 40]\n " shape="box"] 42 -> 39 ; @@ -638,15 +638,15 @@ digraph iCFG { 41 -> 36 ; 41 -> 37 ; -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 [label="40: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 41]\n " shape="invhouse"] 40 -> 39 ; -39 [label="39: Call _fun_printf \n n$2=_fun_printf(\"(0)HELLO WORLD!\":char *) [line 42]\n REMOVE_TEMPS(n$2); [line 42]\n APPLY_ABSTRACTION; [line 42]\n " shape="box"] +39 [label="39: Call _fun_printf \n n$2=_fun_printf(\"(0)HELLO WORLD!\":char *) [line 42]\n " shape="box"] 39 -> 26 ; -38 [label="38: DeclStmt \n *&z:int =9 [line 44]\n APPLY_ABSTRACTION; [line 44]\n " shape="box"] +38 [label="38: DeclStmt \n *&z:int =9 [line 44]\n " shape="box"] 38 -> 35 ; @@ -655,7 +655,7 @@ digraph iCFG { 37 -> 31 ; 37 -> 32 ; -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 [label="36: Prune (true branch) \n PRUNE(((n$0 == 1) != 0), true); [line 47]\n " shape="invhouse"] 36 -> 35 ; @@ -663,11 +663,11 @@ digraph iCFG { 35 -> 34 ; -34 [label="34: UnaryOperator \n n$1=*&something:int [line 49]\n *&something:int =(n$1 + 1) [line 49]\n REMOVE_TEMPS(n$1); [line 49]\n NULLIFY(&something); [line 49]\n " shape="box"] +34 [label="34: UnaryOperator \n n$1=*&something:int [line 49]\n *&something:int =(n$1 + 1) [line 49]\n " shape="box"] 34 -> 33 ; -33 [label="33: BinaryOperatorStmt: Assign \n *&z:int =42 [line 51]\n NULLIFY(&z); [line 51]\n APPLY_ABSTRACTION; [line 51]\n " shape="box"] +33 [label="33: BinaryOperatorStmt: Assign \n *&z:int =42 [line 51]\n " shape="box"] 33 -> 26 ; @@ -676,28 +676,28 @@ digraph iCFG { 32 -> 29 ; 32 -> 30 ; -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 [label="31: Prune (true branch) \n PRUNE(((n$0 == 2) != 0), true); [line 53]\n " shape="invhouse"] 31 -> 26 ; -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 [label="30: Prune (false branch) \n PRUNE(((n$0 == 3) == 0), false); [line 54]\n " shape="invhouse"] 30 -> 28 ; -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 [label="29: Prune (true branch) \n PRUNE(((n$0 == 3) != 0), true); [line 54]\n " shape="invhouse"] 29 -> 26 ; -28 [label="28: DefaultStmt_placeholder \n APPLY_ABSTRACTION; [line 45]\n " shape="box"] +28 [label="28: DefaultStmt_placeholder \n " shape="box"] 28 -> 35 ; -27 [label="27: Switch_stmt \n n$0=*&value:int [line 37]\n NULLIFY(&value); [line 37]\n " shape="box"] +27 [label="27: Switch_stmt \n n$0=*&value:int [line 37]\n " shape="box"] 27 -> 40 ; 27 -> 41 ; -26 [label="26: Return Stmt \n *&return:int =0 [line 57]\n APPLY_ABSTRACTION; [line 57]\n " shape="box"] +26 [label="26: Return Stmt \n *&return:int =0 [line 57]\n " shape="box"] 26 -> 25 ; @@ -708,7 +708,7 @@ digraph iCFG { 24 -> 45 ; -23 [label="23: DeclStmt \n *&value:int =0 [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="box"] +23 [label="23: DeclStmt \n *&value:int =0 [line 13]\n " shape="box"] 23 -> 4 ; @@ -720,7 +720,7 @@ digraph iCFG { 21 -> 20 ; -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 [label="20: BinaryOperatorStmt: Assign \n n$6=*&value:int [line 18]\n *&x:int =(n$6 + 1) [line 18]\n " shape="box"] 20 -> 17 ; @@ -729,11 +729,11 @@ digraph iCFG { 19 -> 15 ; 19 -> 16 ; -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 [label="18: Prune (true branch) \n PRUNE(((n$2 == 0) != 0), true); [line 19]\n " shape="invhouse"] 18 -> 17 ; -17 [label="17: Call _fun_printf \n n$5=_fun_printf(\"(0)HELLO WORLD!\":char *) [line 20]\n REMOVE_TEMPS(n$5); [line 20]\n " shape="box"] +17 [label="17: Call _fun_printf \n n$5=_fun_printf(\"(0)HELLO WORLD!\":char *) [line 20]\n " shape="box"] 17 -> 8 ; @@ -742,27 +742,27 @@ digraph iCFG { 16 -> 12 ; 16 -> 13 ; -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 [label="15: Prune (true branch) \n PRUNE(((n$2 == 1) != 0), true); [line 22]\n " shape="invhouse"] 15 -> 14 ; -14 [label="14: Call _fun_printf \n n$4=_fun_printf(\"(1)HELLO WORLD!\":char *) [line 23]\n REMOVE_TEMPS(n$4); [line 23]\n APPLY_ABSTRACTION; [line 23]\n " shape="box"] +14 [label="14: Call _fun_printf \n n$4=_fun_printf(\"(1)HELLO WORLD!\":char *) [line 23]\n " shape="box"] 14 -> 4 ; -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 [label="13: Prune (false branch) \n PRUNE(((n$2 == 2) == 0), false); [line 25]\n " shape="invhouse"] 13 -> 10 ; -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 [label="12: Prune (true branch) \n PRUNE(((n$2 == 2) != 0), true); [line 25]\n " shape="invhouse"] 12 -> 11 ; -11 [label="11: Call _fun_printf \n n$3=_fun_printf(\"(2/def)HELLO WORLD!\":char *) [line 27]\n REMOVE_TEMPS(n$3); [line 27]\n APPLY_ABSTRACTION; [line 27]\n " shape="box"] +11 [label="11: Call _fun_printf \n n$3=_fun_printf(\"(2/def)HELLO WORLD!\":char *) [line 27]\n " shape="box"] 11 -> 4 ; -10 [label="10: DefaultStmt_placeholder \n APPLY_ABSTRACTION; [line 26]\n " shape="box"] +10 [label="10: DefaultStmt_placeholder \n " shape="box"] 10 -> 11 ; @@ -771,15 +771,15 @@ 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); [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 " shape="box"] 8 -> 4 ; -7 [label="7: Prune (false branch) \n PRUNE(((n$0 < 10) == 0), false); [line 14]\n REMOVE_TEMPS(n$0); [line 14]\n NULLIFY(&value); [line 14]\n " shape="invhouse"] +7 [label="7: Prune (false branch) \n PRUNE(((n$0 < 10) == 0), false); [line 14]\n " shape="invhouse"] 7 -> 3 ; -6 [label="6: Prune (true branch) \n PRUNE(((n$0 < 10) != 0), true); [line 14]\n REMOVE_TEMPS(n$0); [line 14]\n " shape="invhouse"] +6 [label="6: Prune (true branch) \n PRUNE(((n$0 < 10) != 0), true); [line 14]\n " shape="invhouse"] 6 -> 9 ; @@ -792,7 +792,7 @@ digraph iCFG { 4 -> 5 ; -3 [label="3: Return Stmt \n *&return:int =0 [line 32]\n APPLY_ABSTRACTION; [line 32]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =0 [line 32]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/types/struct.c.dot b/infer/tests/codetoanalyze/c/frontend/types/struct.c.dot index 75cea48b4..e970b3672 100644 --- a/infer/tests/codetoanalyze/c/frontend/types/struct.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/types/struct.c.dot @@ -4,7 +4,7 @@ digraph iCFG { 4 -> 3 ; -3 [label="3: BinaryOperatorStmt: Assign \n *&x.b:int =20 [line 18]\n NULLIFY(&x); [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +3 [label="3: BinaryOperatorStmt: Assign \n *&x.b:int =20 [line 18]\n " shape="box"] 3 -> 2 ; 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 d8feb1525..adc50c31e 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,10 +1,10 @@ /* @generated */ digraph iCFG { -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 [label="4: DeclStmt \n *&x:void =_t$1 [line 15]\n " shape="box"] 4 -> 3 ; -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 [label="3: DeclStmt \n *&z:void =_t$0 [line 16]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/c/frontend/unusual_stmts/asm.c.dot b/infer/tests/codetoanalyze/c/frontend/unusual_stmts/asm.c.dot index dd095a040..23ada23fd 100644 --- a/infer/tests/codetoanalyze/c/frontend/unusual_stmts/asm.c.dot +++ b/infer/tests/codetoanalyze/c/frontend/unusual_stmts/asm.c.dot @@ -4,15 +4,15 @@ digraph iCFG { 9 -> 8 ; -8 [label="8: GCCAstStmt \n n$0=*&src:int [line 27]\n _fun___infer_skip_gcc_ast_stmt(&dst:int &,n$0:int ) [line 23]\n REMOVE_TEMPS(n$0); [line 23]\n NULLIFY(&src); [line 23]\n " shape="box"] +8 [label="8: GCCAstStmt \n n$0=*&src:int [line 27]\n _fun___infer_skip_gcc_ast_stmt(&dst:int &,n$0:int ) [line 23]\n " shape="box"] 8 -> 7 ; -7 [label="7: Return Stmt \n *&return:int =0 [line 28]\n APPLY_ABSTRACTION; [line 28]\n " shape="box"] +7 [label="7: Return Stmt \n *&return:int =0 [line 28]\n " shape="box"] 7 -> 6 ; -6 [label="6: Exit main \n NULLIFY(&dst); [line 29]\n " color=yellow style=filled] +6 [label="6: Exit main \n " color=yellow style=filled] 5 [label="5: Start main\nFormals: \nLocals: dst:int src:int \n DECLARE_LOCALS(&return,&dst,&src); [line 19]\n " color=yellow style=filled] @@ -23,11 +23,11 @@ digraph iCFG { 4 -> 3 ; -3 [label="3: Return Stmt \n *&return:int =0 [line 16]\n APPLY_ABSTRACTION; [line 16]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =0 [line 16]\n " shape="box"] 3 -> 2 ; -2 [label="2: Exit test \n NULLIFY(&z); [line 17]\n NULLIFY(&y); [line 17]\n NULLIFY(&x); [line 17]\n NULLIFY(&h); [line 17]\n " color=yellow style=filled] +2 [label="2: Exit test \n " color=yellow style=filled] 1 [label="1: Start test\nFormals: \nLocals: h:int z:int y:int x:int \n DECLARE_LOCALS(&return,&h,&z,&y,&x); [line 10]\n " color=yellow style=filled] diff --git a/infer/tests/codetoanalyze/cpp/errors/npe/method_call.cpp.dot b/infer/tests/codetoanalyze/cpp/errors/npe/method_call.cpp.dot index 3bc07971e..0348bba08 100644 --- a/infer/tests/codetoanalyze/cpp/errors/npe/method_call.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/errors/npe/method_call.cpp.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -22 [label="22: Call _fun_call_with_forward_declaration \n _fun_call_with_forward_declaration(null:class XForward *) [line 38]\n APPLY_ABSTRACTION; [line 38]\n " shape="box"] +22 [label="22: Call _fun_call_with_forward_declaration \n _fun_call_with_forward_declaration(null:class XForward *) [line 38]\n " shape="box"] 22 -> 21 ; @@ -11,7 +11,7 @@ digraph iCFG { 20 -> 22 ; -19 [label="19: Call _fun_XForward_call \n n$0=*&x:class XForward * [line 35]\n n$1=*n$0:class XForward [line 35]\n n$2=_fun_XForward_call(n$0:class XForward *) [line 35]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 35]\n NULLIFY(&x); [line 35]\n APPLY_ABSTRACTION; [line 35]\n " shape="box"] +19 [label="19: Call _fun_XForward_call \n n$0=*&x:class XForward * [line 35]\n n$1=*n$0:class XForward [line 35]\n n$2=_fun_XForward_call(n$0:class XForward *) [line 35]\n " shape="box"] 19 -> 18 ; @@ -22,7 +22,7 @@ digraph iCFG { 17 -> 19 ; -16 [label="16: Return Stmt \n *&return:int =0 [line 31]\n APPLY_ABSTRACTION; [line 31]\n " shape="box"] +16 [label="16: Return Stmt \n *&return:int =0 [line 31]\n " shape="box"] 16 -> 15 ; @@ -33,7 +33,7 @@ digraph iCFG { 14 -> 16 ; -13 [label="13: Call _fun_X_call \n n$0=_fun_getX() [line 22]\n n$1=*n$0:class X [line 22]\n n$2=_fun_X_call(n$0:class X *) [line 22]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"] +13 [label="13: Call _fun_X_call \n n$0=_fun_getX() [line 22]\n n$1=*n$0:class X [line 22]\n n$2=_fun_X_call(n$0:class X *) [line 22]\n " shape="box"] 13 -> 12 ; @@ -44,7 +44,7 @@ digraph iCFG { 11 -> 13 ; -10 [label="10: Return Stmt \n *&return:class X *=null [line 20]\n APPLY_ABSTRACTION; [line 20]\n " shape="box"] +10 [label="10: Return Stmt \n *&return:class X *=null [line 20]\n " shape="box"] 10 -> 9 ; @@ -59,7 +59,7 @@ digraph iCFG { 7 -> 6 ; -6 [label="6: Return Stmt \n n$0=*&x:class X * [line 17]\n n$1=*n$0:class X [line 17]\n n$2=_fun_X_call(n$0:class X *) [line 17]\n *&return:int =n$2 [line 17]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 17]\n NULLIFY(&x); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +6 [label="6: Return Stmt \n n$0=*&x:class X * [line 17]\n n$1=*n$0:class X [line 17]\n n$2=_fun_X_call(n$0:class X *) [line 17]\n *&return:int =n$2 [line 17]\n " shape="box"] 6 -> 5 ; @@ -70,7 +70,7 @@ digraph iCFG { 4 -> 7 ; -3 [label="3: Return Stmt \n *&return:int =1 [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =1 [line 12]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/builtin/new.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/builtin/new.cpp.dot index d10f3e8f4..f07808311 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/builtin/new.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/builtin/new.cpp.dot @@ -1,18 +1,18 @@ /* @generated */ digraph iCFG { -6 [label="6: DeclStmt \n *&x:int =2 [line 11]\n NULLIFY(&x); [line 11]\n " shape="box"] +6 [label="6: DeclStmt \n *&x:int =2 [line 11]\n " shape="box"] 6 -> 5 ; -5 [label="5: DeclStmt \n n$2=_fun___new(sizeof(int ):unsigned long ) [line 12]\n *&i:int *=n$2 [line 12]\n REMOVE_TEMPS(n$2); [line 12]\n " shape="box"] +5 [label="5: DeclStmt \n n$2=_fun___new(sizeof(int ):unsigned long ) [line 12]\n *&i:int *=n$2 [line 12]\n " shape="box"] 5 -> 4 ; -4 [label="4: CXXNewExpr \n n$1=_fun___new(sizeof(int ):unsigned long ) [line 13]\n REMOVE_TEMPS(n$1); [line 13]\n " shape="box"] +4 [label="4: CXXNewExpr \n n$1=_fun___new(sizeof(int ):unsigned long ) [line 13]\n " shape="box"] 4 -> 3 ; -3 [label="3: Call delete \n n$0=*&i:int * [line 14]\n _fun___delete(n$0:int *) [line 14]\n REMOVE_TEMPS(n$0); [line 14]\n NULLIFY(&i); [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +3 [label="3: Call delete \n n$0=*&i:int * [line 14]\n _fun___delete(n$0:int *) [line 14]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/conditional/binary_conditional.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/conditional/binary_conditional.cpp.dot index 14415a662..743bf7cab 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/conditional/binary_conditional.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/conditional/binary_conditional.cpp.dot @@ -4,23 +4,23 @@ digraph iCFG { 34 -> 28 ; -33 [label="33: DeclStmt \n n$7=*&SIL_temp_conditional___n$1:class X [line 27]\n *&SIL_materialize_temp__n$0:class X =n$7 [line 27]\n _fun_X_X(&x:class X *,&SIL_materialize_temp__n$0:class X &) [line 27]\n REMOVE_TEMPS(n$7); [line 27]\n NULLIFY(&SIL_temp_conditional___n$1); [line 27]\n APPLY_ABSTRACTION; [line 27]\n " shape="box"] +33 [label="33: DeclStmt \n n$7=*&SIL_temp_conditional___n$1:class X [line 27]\n *&SIL_materialize_temp__n$0:class X =n$7 [line 27]\n _fun_X_X(&x:class X *,&SIL_materialize_temp__n$0:class X &) [line 27]\n " shape="box"] 33 -> 26 ; -32 [label="32: ConditinalStmt Branch \n _fun_X_X(&SIL_materialize_temp__n$0:class X *,&a:class X &) [line 27]\n *&SIL_temp_conditional___n$1:class X =&SIL_materialize_temp__n$0 [line 27]\n APPLY_ABSTRACTION; [line 27]\n " shape="box"] +32 [label="32: ConditinalStmt Branch \n _fun_X_X(&SIL_materialize_temp__n$0:class X *,&a:class X &) [line 27]\n *&SIL_temp_conditional___n$1:class X =&SIL_materialize_temp__n$0 [line 27]\n " shape="box"] 32 -> 27 ; -31 [label="31: ConditinalStmt Branch \n _fun_getX(&SIL_materialize_temp__n$5:class X *) [line 27]\n _fun_X_X(&SIL_materialize_temp__n$0:class X *,&SIL_materialize_temp__n$5:class X &) [line 27]\n *&SIL_temp_conditional___n$1:class X =&SIL_materialize_temp__n$0 [line 27]\n APPLY_ABSTRACTION; [line 27]\n " shape="box"] +31 [label="31: ConditinalStmt Branch \n _fun_getX(&SIL_materialize_temp__n$5:class X *) [line 27]\n _fun_X_X(&SIL_materialize_temp__n$0:class X *,&SIL_materialize_temp__n$5:class X &) [line 27]\n *&SIL_temp_conditional___n$1:class X =&SIL_materialize_temp__n$0 [line 27]\n " shape="box"] 31 -> 27 ; -30 [label="30: Prune (false branch) \n PRUNE((n$4 == 0), false); [line 27]\n REMOVE_TEMPS(n$4); [line 27]\n " shape="invhouse"] +30 [label="30: Prune (false branch) \n PRUNE((n$4 == 0), false); [line 27]\n " shape="invhouse"] 30 -> 32 ; -29 [label="29: Prune (true branch) \n PRUNE((n$4 != 0), true); [line 27]\n REMOVE_TEMPS(n$4); [line 27]\n " shape="invhouse"] +29 [label="29: Prune (true branch) \n PRUNE((n$4 != 0), true); [line 27]\n " shape="invhouse"] 29 -> 31 ; @@ -33,7 +33,7 @@ digraph iCFG { 27 -> 33 ; -26 [label="26: Exit conditional \n NULLIFY(&x); [line 28]\n NULLIFY(&a); [line 28]\n NULLIFY(&__temp_return_n$3); [line 28]\n NULLIFY(&SIL_materialize_temp__n$5); [line 28]\n NULLIFY(&SIL_materialize_temp__n$0); [line 28]\n " color=yellow style=filled] +26 [label="26: Exit conditional \n " color=yellow style=filled] 25 [label="25: Start conditional\nFormals: \nLocals: x:class X SIL_materialize_temp__n$0:class X SIL_temp_conditional___n$1:class X __temp_return_n$3:class X SIL_materialize_temp__n$5:class X a:class X \n DECLARE_LOCALS(&return,&x,&SIL_materialize_temp__n$0,&SIL_temp_conditional___n$1,&__temp_return_n$3,&SIL_materialize_temp__n$5,&a); [line 25]\n " color=yellow style=filled] @@ -44,7 +44,7 @@ digraph iCFG { 24 -> 22 ; -23 [label="23: DeclStmt \n n$5=*&SIL_temp_conditional___n$2:class X [line 22]\n *&SIL_materialize_temp__n$0:class X =n$5 [line 22]\n _fun_X_X(&x:class X *,&SIL_materialize_temp__n$0:class X &) [line 22]\n REMOVE_TEMPS(n$5); [line 22]\n NULLIFY(&SIL_temp_conditional___n$2); [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"] +23 [label="23: DeclStmt \n n$5=*&SIL_temp_conditional___n$2:class X [line 22]\n *&SIL_materialize_temp__n$0:class X =n$5 [line 22]\n _fun_X_X(&x:class X *,&SIL_materialize_temp__n$0:class X &) [line 22]\n " shape="box"] 23 -> 15 ; @@ -52,19 +52,19 @@ digraph iCFG { 22 -> 17 ; -21 [label="21: ConditinalStmt Branch \n _fun_X_X(&SIL_materialize_temp__n$0:class X *,&a:class X &) [line 22]\n *&SIL_temp_conditional___n$2:class X =&SIL_materialize_temp__n$0 [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"] +21 [label="21: ConditinalStmt Branch \n _fun_X_X(&SIL_materialize_temp__n$0:class X *,&a:class X &) [line 22]\n *&SIL_temp_conditional___n$2:class X =&SIL_materialize_temp__n$0 [line 22]\n " shape="box"] 21 -> 16 ; -20 [label="20: ConditinalStmt Branch \n *&SIL_materialize_temp__n$4:class X =&SIL_materialize_temp__n$0 [line 22]\n _fun_X_X(&SIL_materialize_temp__n$0:class X *,&SIL_materialize_temp__n$4:class X &) [line 22]\n *&SIL_temp_conditional___n$2:class X =&SIL_materialize_temp__n$0 [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"] +20 [label="20: ConditinalStmt Branch \n *&SIL_materialize_temp__n$4:class X =&SIL_materialize_temp__n$0 [line 22]\n _fun_X_X(&SIL_materialize_temp__n$0:class X *,&SIL_materialize_temp__n$4:class X &) [line 22]\n *&SIL_temp_conditional___n$2:class X =&SIL_materialize_temp__n$0 [line 22]\n " shape="box"] 20 -> 16 ; -19 [label="19: Prune (false branch) \n PRUNE((n$3 == 0), false); [line 22]\n REMOVE_TEMPS(n$3); [line 22]\n " shape="invhouse"] +19 [label="19: Prune (false branch) \n PRUNE((n$3 == 0), false); [line 22]\n " shape="invhouse"] 19 -> 21 ; -18 [label="18: Prune (true branch) \n PRUNE((n$3 != 0), true); [line 22]\n REMOVE_TEMPS(n$3); [line 22]\n " shape="invhouse"] +18 [label="18: Prune (true branch) \n PRUNE((n$3 != 0), true); [line 22]\n " shape="invhouse"] 18 -> 20 ; @@ -77,7 +77,7 @@ digraph iCFG { 16 -> 23 ; -15 [label="15: Exit binaryConditional \n NULLIFY(&x); [line 23]\n NULLIFY(&a); [line 23]\n NULLIFY(&SIL_materialize_temp__n$4); [line 23]\n NULLIFY(&SIL_materialize_temp__n$0); [line 23]\n " color=yellow style=filled] +15 [label="15: Exit binaryConditional \n " color=yellow style=filled] 14 [label="14: Start binaryConditional\nFormals: \nLocals: x:class X SIL_materialize_temp__n$0:class X SIL_temp_conditional___n$2:class X SIL_materialize_temp__n$4:class X a:class X \n DECLARE_LOCALS(&return,&x,&SIL_materialize_temp__n$0,&SIL_temp_conditional___n$2,&SIL_materialize_temp__n$4,&a); [line 20]\n " color=yellow style=filled] @@ -88,11 +88,11 @@ digraph iCFG { 13 -> 12 ; -12 [label="12: Return Stmt \n n$0=*&__return_param:class X * [line 16]\n _fun_X_X(n$0:class X *,&x:class X &) [line 16]\n REMOVE_TEMPS(n$0); [line 16]\n NULLIFY(&__return_param); [line 16]\n APPLY_ABSTRACTION; [line 16]\n " shape="box"] +12 [label="12: Return Stmt \n n$0=*&__return_param:class X * [line 16]\n _fun_X_X(n$0:class X *,&x:class X &) [line 16]\n " shape="box"] 12 -> 11 ; -11 [label="11: Exit getX \n NULLIFY(&x); [line 17]\n " color=yellow style=filled] +11 [label="11: Exit getX \n " color=yellow style=filled] 10 [label="10: Start getX\nFormals: __return_param:class X *\nLocals: x:class X \n DECLARE_LOCALS(&return,&x); [line 14]\n " color=yellow style=filled] @@ -120,7 +120,7 @@ digraph iCFG { 4 -> 5 ; -3 [label="3: Return Stmt \n *&return:_Bool =1 [line 11]\n APPLY_ABSTRACTION; [line 11]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:_Bool =1 [line 11]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/conditional/lvalue_conditional.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/conditional/lvalue_conditional.cpp.dot index 23637ed1a..1f38f87d0 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/conditional/lvalue_conditional.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/conditional/lvalue_conditional.cpp.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -65 [label="65: Return Stmt \n n$0=_fun_div_temp_lvalue(0:int ,1:int ) [line 47]\n *&return:int =n$0 [line 47]\n REMOVE_TEMPS(n$0); [line 47]\n APPLY_ABSTRACTION; [line 47]\n " shape="box"] +65 [label="65: Return Stmt \n n$0=_fun_div_temp_lvalue(0:int ,1:int ) [line 47]\n *&return:int =n$0 [line 47]\n " shape="box"] 65 -> 64 ; @@ -11,7 +11,7 @@ digraph iCFG { 63 -> 65 ; -62 [label="62: Return Stmt \n n$0=_fun_div_temp_lvalue(1:int ,0:int ) [line 45]\n *&return:int =n$0 [line 45]\n REMOVE_TEMPS(n$0); [line 45]\n APPLY_ABSTRACTION; [line 45]\n " shape="box"] +62 [label="62: Return Stmt \n n$0=_fun_div_temp_lvalue(1:int ,0:int ) [line 45]\n *&return:int =n$0 [line 45]\n " shape="box"] 62 -> 61 ; @@ -22,7 +22,7 @@ digraph iCFG { 60 -> 62 ; -59 [label="59: Return Stmt \n n$0=_fun_assign_conditional(1:int ) [line 43]\n *&return:int =(1 / n$0) [line 43]\n REMOVE_TEMPS(n$0); [line 43]\n APPLY_ABSTRACTION; [line 43]\n " shape="box"] +59 [label="59: Return Stmt \n n$0=_fun_assign_conditional(1:int ) [line 43]\n *&return:int =(1 / n$0) [line 43]\n " shape="box"] 59 -> 58 ; @@ -33,7 +33,7 @@ digraph iCFG { 57 -> 59 ; -56 [label="56: Return Stmt \n n$0=_fun_assign_conditional(0:int ) [line 41]\n *&return:int =(1 / n$0) [line 41]\n REMOVE_TEMPS(n$0); [line 41]\n APPLY_ABSTRACTION; [line 41]\n " shape="box"] +56 [label="56: Return Stmt \n n$0=_fun_assign_conditional(0:int ) [line 41]\n *&return:int =(1 / n$0) [line 41]\n " shape="box"] 56 -> 55 ; @@ -44,7 +44,7 @@ digraph iCFG { 54 -> 56 ; -53 [label="53: Return Stmt \n n$0=_fun_choose_rvalue(0:int ) [line 39]\n *&return:int =(1 / n$0) [line 39]\n REMOVE_TEMPS(n$0); [line 39]\n APPLY_ABSTRACTION; [line 39]\n " shape="box"] +53 [label="53: Return Stmt \n n$0=_fun_choose_rvalue(0:int ) [line 39]\n *&return:int =(1 / n$0) [line 39]\n " shape="box"] 53 -> 52 ; @@ -55,7 +55,7 @@ digraph iCFG { 51 -> 53 ; -50 [label="50: Return Stmt \n n$0=_fun_choose_rvalue(1:int ) [line 37]\n *&return:int =(1 / n$0) [line 37]\n REMOVE_TEMPS(n$0); [line 37]\n APPLY_ABSTRACTION; [line 37]\n " shape="box"] +50 [label="50: Return Stmt \n n$0=_fun_choose_rvalue(1:int ) [line 37]\n *&return:int =(1 / n$0) [line 37]\n " shape="box"] 50 -> 49 ; @@ -66,7 +66,7 @@ digraph iCFG { 48 -> 50 ; -47 [label="47: Return Stmt \n n$0=_fun_choose_lvalue(0:int ) [line 35]\n *&return:int =(1 / n$0) [line 35]\n REMOVE_TEMPS(n$0); [line 35]\n APPLY_ABSTRACTION; [line 35]\n " shape="box"] +47 [label="47: Return Stmt \n n$0=_fun_choose_lvalue(0:int ) [line 35]\n *&return:int =(1 / n$0) [line 35]\n " shape="box"] 47 -> 46 ; @@ -77,7 +77,7 @@ digraph iCFG { 45 -> 47 ; -44 [label="44: Return Stmt \n n$0=_fun_choose_lvalue(1:int ) [line 33]\n *&return:int =(1 / n$0) [line 33]\n REMOVE_TEMPS(n$0); [line 33]\n APPLY_ABSTRACTION; [line 33]\n " shape="box"] +44 [label="44: Return Stmt \n n$0=_fun_choose_lvalue(1:int ) [line 33]\n *&return:int =(1 / n$0) [line 33]\n " shape="box"] 44 -> 43 ; @@ -88,23 +88,23 @@ digraph iCFG { 42 -> 44 ; -41 [label="41: DeclStmt \n n$6=*&SIL_temp_conditional___n$3:int [line 29]\n *&SIL_materialize_temp__n$2:int =n$6 [line 29]\n *&r:int &=&SIL_materialize_temp__n$2 [line 29]\n REMOVE_TEMPS(n$6); [line 29]\n NULLIFY(&SIL_temp_conditional___n$3); [line 29]\n " shape="box"] +41 [label="41: DeclStmt \n n$6=*&SIL_temp_conditional___n$3:int [line 29]\n *&SIL_materialize_temp__n$2:int =n$6 [line 29]\n *&r:int &=&SIL_materialize_temp__n$2 [line 29]\n " shape="box"] 41 -> 35 ; -40 [label="40: ConditinalStmt Branch \n *&SIL_temp_conditional___n$3:int =1 [line 29]\n APPLY_ABSTRACTION; [line 29]\n " shape="box"] +40 [label="40: ConditinalStmt Branch \n *&SIL_temp_conditional___n$3:int =1 [line 29]\n " shape="box"] 40 -> 36 ; -39 [label="39: ConditinalStmt Branch \n n$5=*&b:int [line 29]\n *&SIL_temp_conditional___n$3:int =n$5 [line 29]\n REMOVE_TEMPS(n$5); [line 29]\n NULLIFY(&b); [line 29]\n APPLY_ABSTRACTION; [line 29]\n " shape="box"] +39 [label="39: ConditinalStmt Branch \n n$5=*&b:int [line 29]\n *&SIL_temp_conditional___n$3:int =n$5 [line 29]\n " shape="box"] 39 -> 36 ; -38 [label="38: Prune (false branch) \n n$4=*&a:int [line 29]\n PRUNE((n$4 == 0), false); [line 29]\n REMOVE_TEMPS(n$4); [line 29]\n NULLIFY(&a); [line 29]\n " shape="invhouse"] +38 [label="38: Prune (false branch) \n n$4=*&a:int [line 29]\n PRUNE((n$4 == 0), false); [line 29]\n " shape="invhouse"] 38 -> 40 ; -37 [label="37: Prune (true branch) \n n$4=*&a:int [line 29]\n PRUNE((n$4 != 0), true); [line 29]\n REMOVE_TEMPS(n$4); [line 29]\n NULLIFY(&a); [line 29]\n " shape="invhouse"] +37 [label="37: Prune (true branch) \n n$4=*&a:int [line 29]\n PRUNE((n$4 != 0), true); [line 29]\n " shape="invhouse"] 37 -> 39 ; @@ -112,11 +112,11 @@ digraph iCFG { 36 -> 41 ; -35 [label="35: Return Stmt \n n$0=*&r:int & [line 30]\n n$1=*n$0:int [line 30]\n *&return:int =(1 / n$1) [line 30]\n REMOVE_TEMPS(n$0,n$1); [line 30]\n NULLIFY(&r); [line 30]\n APPLY_ABSTRACTION; [line 30]\n " shape="box"] +35 [label="35: Return Stmt \n n$0=*&r:int & [line 30]\n n$1=*n$0:int [line 30]\n *&return:int =(1 / n$1) [line 30]\n " shape="box"] 35 -> 34 ; -34 [label="34: Exit div_temp_lvalue \n NULLIFY(&SIL_materialize_temp__n$2); [line 31]\n " color=yellow style=filled] +34 [label="34: Exit div_temp_lvalue \n " color=yellow style=filled] 33 [label="33: Start div_temp_lvalue\nFormals: a:int b:int \nLocals: r:int & SIL_materialize_temp__n$2:int SIL_temp_conditional___n$3:int \n DECLARE_LOCALS(&return,&r,&SIL_materialize_temp__n$2,&SIL_temp_conditional___n$3); [line 28]\n " color=yellow style=filled] @@ -133,23 +133,23 @@ digraph iCFG { 31 -> 26 ; 31 -> 27 ; -30 [label="30: BinaryOperatorStmt: Assign \n n$3=*&SIL_temp_conditional___n$1:int & [line 24]\n *n$3:int =1 [line 24]\n REMOVE_TEMPS(n$3); [line 24]\n NULLIFY(&SIL_temp_conditional___n$1); [line 24]\n " shape="box"] +30 [label="30: BinaryOperatorStmt: Assign \n n$3=*&SIL_temp_conditional___n$1:int & [line 24]\n *n$3:int =1 [line 24]\n " shape="box"] 30 -> 24 ; -29 [label="29: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int &=&v2 [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +29 [label="29: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int &=&v2 [line 24]\n " shape="box"] 29 -> 25 ; -28 [label="28: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int &=&v1 [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +28 [label="28: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int &=&v1 [line 24]\n " shape="box"] 28 -> 25 ; -27 [label="27: Prune (false branch) \n n$2=*&a:int [line 24]\n PRUNE((n$2 == 0), false); [line 24]\n REMOVE_TEMPS(n$2); [line 24]\n NULLIFY(&a); [line 24]\n " shape="invhouse"] +27 [label="27: Prune (false branch) \n n$2=*&a:int [line 24]\n PRUNE((n$2 == 0), false); [line 24]\n " shape="invhouse"] 27 -> 29 ; -26 [label="26: Prune (true branch) \n n$2=*&a:int [line 24]\n PRUNE((n$2 != 0), true); [line 24]\n REMOVE_TEMPS(n$2); [line 24]\n NULLIFY(&a); [line 24]\n " shape="invhouse"] +26 [label="26: Prune (true branch) \n n$2=*&a:int [line 24]\n PRUNE((n$2 != 0), true); [line 24]\n " shape="invhouse"] 26 -> 28 ; @@ -157,11 +157,11 @@ digraph iCFG { 25 -> 30 ; -24 [label="24: Return Stmt \n n$0=*&v1:int [line 25]\n *&return:int =n$0 [line 25]\n REMOVE_TEMPS(n$0); [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="box"] +24 [label="24: Return Stmt \n n$0=*&v1:int [line 25]\n *&return:int =n$0 [line 25]\n " shape="box"] 24 -> 23 ; -23 [label="23: Exit assign_conditional \n NULLIFY(&v2); [line 26]\n NULLIFY(&v1); [line 26]\n " color=yellow style=filled] +23 [label="23: Exit assign_conditional \n " color=yellow style=filled] 22 [label="22: Start assign_conditional\nFormals: a:int \nLocals: SIL_temp_conditional___n$1:int & v2:int v1:int \n DECLARE_LOCALS(&return,&SIL_temp_conditional___n$1,&v2,&v1); [line 22]\n " color=yellow style=filled] @@ -173,23 +173,23 @@ digraph iCFG { 21 -> 16 ; 21 -> 17 ; -20 [label="20: DeclStmt \n n$4=*&SIL_temp_conditional___n$1:int [line 18]\n *&v3:int =n$4 [line 18]\n REMOVE_TEMPS(n$4); [line 18]\n NULLIFY(&SIL_temp_conditional___n$1); [line 18]\n " shape="box"] +20 [label="20: DeclStmt \n n$4=*&SIL_temp_conditional___n$1:int [line 18]\n *&v3:int =n$4 [line 18]\n " shape="box"] 20 -> 14 ; -19 [label="19: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =1 [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +19 [label="19: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =1 [line 18]\n " shape="box"] 19 -> 15 ; -18 [label="18: ConditinalStmt Branch \n n$3=*&v1:int [line 18]\n *&SIL_temp_conditional___n$1:int =n$3 [line 18]\n REMOVE_TEMPS(n$3); [line 18]\n NULLIFY(&v1); [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +18 [label="18: ConditinalStmt Branch \n n$3=*&v1:int [line 18]\n *&SIL_temp_conditional___n$1:int =n$3 [line 18]\n " shape="box"] 18 -> 15 ; -17 [label="17: Prune (false branch) \n n$2=*&a:int [line 18]\n PRUNE((n$2 == 0), false); [line 18]\n REMOVE_TEMPS(n$2); [line 18]\n NULLIFY(&a); [line 18]\n NULLIFY(&v1); [line 18]\n " shape="invhouse"] +17 [label="17: Prune (false branch) \n n$2=*&a:int [line 18]\n PRUNE((n$2 == 0), false); [line 18]\n " shape="invhouse"] 17 -> 19 ; -16 [label="16: Prune (true branch) \n n$2=*&a:int [line 18]\n PRUNE((n$2 != 0), true); [line 18]\n REMOVE_TEMPS(n$2); [line 18]\n NULLIFY(&a); [line 18]\n " shape="invhouse"] +16 [label="16: Prune (true branch) \n n$2=*&a:int [line 18]\n PRUNE((n$2 != 0), true); [line 18]\n " shape="invhouse"] 16 -> 18 ; @@ -197,7 +197,7 @@ digraph iCFG { 15 -> 20 ; -14 [label="14: Return Stmt \n n$0=*&v3:int [line 19]\n *&return:int =n$0 [line 19]\n REMOVE_TEMPS(n$0); [line 19]\n NULLIFY(&v3); [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +14 [label="14: Return Stmt \n n$0=*&v3:int [line 19]\n *&return:int =n$0 [line 19]\n " shape="box"] 14 -> 13 ; @@ -217,23 +217,23 @@ digraph iCFG { 10 -> 5 ; 10 -> 6 ; -9 [label="9: DeclStmt \n n$3=*&SIL_temp_conditional___n$1:int & [line 12]\n n$4=*n$3:int [line 12]\n *&v3:int =n$4 [line 12]\n REMOVE_TEMPS(n$3,n$4); [line 12]\n NULLIFY(&SIL_temp_conditional___n$1); [line 12]\n " shape="box"] +9 [label="9: DeclStmt \n n$3=*&SIL_temp_conditional___n$1:int & [line 12]\n n$4=*n$3:int [line 12]\n *&v3:int =n$4 [line 12]\n " shape="box"] 9 -> 3 ; -8 [label="8: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int &=&v2 [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +8 [label="8: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int &=&v2 [line 12]\n " shape="box"] 8 -> 4 ; -7 [label="7: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int &=&v1 [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +7 [label="7: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int &=&v1 [line 12]\n " shape="box"] 7 -> 4 ; -6 [label="6: Prune (false branch) \n n$2=*&a:int [line 12]\n PRUNE((n$2 == 0), false); [line 12]\n REMOVE_TEMPS(n$2); [line 12]\n NULLIFY(&a); [line 12]\n " shape="invhouse"] +6 [label="6: Prune (false branch) \n n$2=*&a:int [line 12]\n PRUNE((n$2 == 0), false); [line 12]\n " shape="invhouse"] 6 -> 8 ; -5 [label="5: Prune (true branch) \n n$2=*&a:int [line 12]\n PRUNE((n$2 != 0), true); [line 12]\n REMOVE_TEMPS(n$2); [line 12]\n NULLIFY(&a); [line 12]\n " shape="invhouse"] +5 [label="5: Prune (true branch) \n n$2=*&a:int [line 12]\n PRUNE((n$2 != 0), true); [line 12]\n " shape="invhouse"] 5 -> 7 ; @@ -241,11 +241,11 @@ digraph iCFG { 4 -> 9 ; -3 [label="3: Return Stmt \n n$0=*&v3:int [line 13]\n *&return:int =n$0 [line 13]\n REMOVE_TEMPS(n$0); [line 13]\n NULLIFY(&v3); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&v3:int [line 13]\n *&return:int =n$0 [line 13]\n " shape="box"] 3 -> 2 ; -2 [label="2: Exit choose_lvalue \n NULLIFY(&v2); [line 14]\n NULLIFY(&v1); [line 14]\n " color=yellow style=filled] +2 [label="2: Exit choose_lvalue \n " color=yellow style=filled] 1 [label="1: Start choose_lvalue\nFormals: a:int \nLocals: v3:int SIL_temp_conditional___n$1:int & v2:int v1:int \n DECLARE_LOCALS(&return,&v3,&SIL_temp_conditional___n$1,&v2,&v1); [line 10]\n " color=yellow style=filled] diff --git a/infer/tests/codetoanalyze/cpp/frontend/constructors/constructor_array.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/constructors/constructor_array.cpp.dot index dba0034cb..dddcbf95e 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/constructors/constructor_array.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/constructors/constructor_array.cpp.dot @@ -8,37 +8,37 @@ digraph iCFG { 30 -> 29 ; -29 [label="29: DeclStmt \n _fun_Z_Z(&z2:class Z *) [line 42]\n APPLY_ABSTRACTION; [line 42]\n " shape="box"] +29 [label="29: DeclStmt \n _fun_Z_Z(&z2:class Z *) [line 42]\n " shape="box"] 29 -> 28 ; -28 [label="28: Exit initialization_mixed_styles_not_handled_correctly \n NULLIFY(&z2); [line 43]\n NULLIFY(&z); [line 43]\n NULLIFY(&old); [line 43]\n " color=yellow style=filled] +28 [label="28: Exit initialization_mixed_styles_not_handled_correctly \n " color=yellow style=filled] 27 [label="27: Start initialization_mixed_styles_not_handled_correctly\nFormals: \nLocals: z2:class Z z:class Z [2] old:class Z \n DECLARE_LOCALS(&return,&z2,&z,&old); [line 39]\n " color=yellow style=filled] 27 -> 31 ; -26 [label="26: DeclStmt \n *&z[0].a:int =1 [line 33]\n *&z[0].b:int =2 [line 33]\n *&z[1].a:int =2 [line 33]\n *&z[1].b:int =3 [line 33]\n NULLIFY(&z); [line 33]\n " shape="box"] +26 [label="26: DeclStmt \n *&z[0].a:int =1 [line 33]\n *&z[0].b:int =2 [line 33]\n *&z[1].a:int =2 [line 33]\n *&z[1].b:int =3 [line 33]\n " shape="box"] 26 -> 25 ; -25 [label="25: DeclStmt \n _fun_Z_Z(&z2:class Z *) [line 34]\n APPLY_ABSTRACTION; [line 34]\n " shape="box"] +25 [label="25: DeclStmt \n _fun_Z_Z(&z2:class Z *) [line 34]\n " shape="box"] 25 -> 24 ; -24 [label="24: Exit initialization_c_style \n NULLIFY(&z2); [line 35]\n " color=yellow style=filled] +24 [label="24: Exit initialization_c_style \n " color=yellow style=filled] 23 [label="23: Start initialization_c_style\nFormals: \nLocals: z2:class Z z:class Z [2] \n DECLARE_LOCALS(&return,&z2,&z); [line 32]\n " color=yellow style=filled] 23 -> 26 ; -22 [label="22: Constructor Init \n n$3=*&this:class Z * [line 27]\n n$4=*&__param_0:class Z & [line 27]\n n$5=*n$4.a:int [line 27]\n *n$3.a:int =n$5 [line 27]\n REMOVE_TEMPS(n$3,n$4,n$5); [line 27]\n " shape="box"] +22 [label="22: Constructor Init \n n$3=*&this:class Z * [line 27]\n n$4=*&__param_0:class Z & [line 27]\n n$5=*n$4.a:int [line 27]\n *n$3.a:int =n$5 [line 27]\n " shape="box"] 22 -> 21 ; -21 [label="21: Constructor Init \n n$0=*&this:class Z * [line 27]\n n$1=*&__param_0:class Z & [line 27]\n n$2=*n$1.b:int [line 27]\n *n$0.b:int =n$2 [line 27]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 27]\n NULLIFY(&__param_0); [line 27]\n NULLIFY(&this); [line 27]\n APPLY_ABSTRACTION; [line 27]\n " shape="box"] +21 [label="21: Constructor Init \n n$0=*&this:class Z * [line 27]\n n$1=*&__param_0:class Z & [line 27]\n n$2=*n$1.b:int [line 27]\n *n$0.b:int =n$2 [line 27]\n " shape="box"] 21 -> 20 ; @@ -60,11 +60,11 @@ digraph iCFG { 16 -> 15 ; -15 [label="15: Return Stmt \n n$0=*&arr[0][1].x:int [line 24]\n *&return:int =n$0 [line 24]\n REMOVE_TEMPS(n$0); [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +15 [label="15: Return Stmt \n n$0=*&arr[0][1].x:int [line 24]\n *&return:int =n$0 [line 24]\n " shape="box"] 15 -> 14 ; -14 [label="14: Exit matrix_of_person \n NULLIFY(&arr); [line 25]\n NULLIFY(&SIL_materialize_temp__n$4); [line 25]\n NULLIFY(&SIL_materialize_temp__n$3); [line 25]\n NULLIFY(&SIL_materialize_temp__n$2); [line 25]\n NULLIFY(&SIL_materialize_temp__n$1); [line 25]\n " color=yellow style=filled] +14 [label="14: Exit matrix_of_person \n " color=yellow style=filled] 13 [label="13: Start matrix_of_person\nFormals: \nLocals: arr:class Person [2][2] SIL_materialize_temp__n$1:class Person SIL_materialize_temp__n$2:class Person SIL_materialize_temp__n$3:class Person SIL_materialize_temp__n$4:class Person \n DECLARE_LOCALS(&return,&arr,&SIL_materialize_temp__n$1,&SIL_materialize_temp__n$2,&SIL_materialize_temp__n$3,&SIL_materialize_temp__n$4); [line 22]\n " color=yellow style=filled] @@ -75,18 +75,18 @@ digraph iCFG { 12 -> 11 ; -11 [label="11: Return Stmt \n n$0=*&arr[0].x:int [line 19]\n *&return:int =n$0 [line 19]\n REMOVE_TEMPS(n$0); [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +11 [label="11: Return Stmt \n n$0=*&arr[0].x:int [line 19]\n *&return:int =n$0 [line 19]\n " shape="box"] 11 -> 10 ; -10 [label="10: Exit array_of_person \n NULLIFY(&arr); [line 20]\n NULLIFY(&SIL_materialize_temp__n$3); [line 20]\n NULLIFY(&SIL_materialize_temp__n$2); [line 20]\n NULLIFY(&SIL_materialize_temp__n$1); [line 20]\n " color=yellow style=filled] +10 [label="10: Exit array_of_person \n " color=yellow style=filled] 9 [label="9: Start array_of_person\nFormals: \nLocals: arr:class Person [10] SIL_materialize_temp__n$1:class Person SIL_materialize_temp__n$2:class Person SIL_materialize_temp__n$3:class Person \n DECLARE_LOCALS(&return,&arr,&SIL_materialize_temp__n$1,&SIL_materialize_temp__n$2,&SIL_materialize_temp__n$3); [line 17]\n " color=yellow style=filled] 9 -> 12 ; -8 [label="8: Constructor Init \n n$0=*&this:class Person * [line 10]\n n$1=*&__param_0:class Person & [line 10]\n n$2=*n$1.x:int [line 10]\n *n$0.x:int =n$2 [line 10]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 10]\n NULLIFY(&__param_0); [line 10]\n NULLIFY(&this); [line 10]\n APPLY_ABSTRACTION; [line 10]\n " shape="box"] +8 [label="8: Constructor Init \n n$0=*&this:class Person * [line 10]\n n$1=*&__param_0:class Person & [line 10]\n n$2=*n$1.x:int [line 10]\n *n$0.x:int =n$2 [line 10]\n " shape="box"] 8 -> 7 ; @@ -104,7 +104,7 @@ digraph iCFG { 4 -> 5 ; -3 [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class Person * [line 12]\n n$1=*&i:int [line 12]\n *n$0.x:int =n$1 [line 12]\n REMOVE_TEMPS(n$0,n$1); [line 12]\n NULLIFY(&i); [line 12]\n NULLIFY(&this); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +3 [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class Person * [line 12]\n n$1=*&i:int [line 12]\n *n$0.x:int =n$1 [line 12]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/constructors/constructor_default_arg.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/constructors/constructor_default_arg.cpp.dot index 22bb0dd5a..47beefb02 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/constructors/constructor_default_arg.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/constructors/constructor_default_arg.cpp.dot @@ -8,18 +8,18 @@ digraph iCFG { 10 -> 9 ; -9 [label="9: DeclStmt \n _fun_X_X(&x3:class X *,0:int ,1:int ) [line 23]\n APPLY_ABSTRACTION; [line 23]\n " shape="box"] +9 [label="9: DeclStmt \n _fun_X_X(&x3:class X *,0:int ,1:int ) [line 23]\n " shape="box"] 9 -> 8 ; -8 [label="8: Exit test \n NULLIFY(&x3); [line 24]\n NULLIFY(&x2); [line 24]\n NULLIFY(&x1); [line 24]\n " color=yellow style=filled] +8 [label="8: Exit test \n " color=yellow style=filled] 7 [label="7: Start test\nFormals: \nLocals: x3:class X x2:class X x1:class X \n DECLARE_LOCALS(&return,&x3,&x2,&x1); [line 20]\n " color=yellow style=filled] 7 -> 11 ; -6 [label="6: BinaryOperatorStmt: Assign \n n$0=*&this:class X * [line 18]\n n$1=*&a:int [line 18]\n n$2=*&b:int [line 18]\n *n$0.f:int =(n$1 + n$2) [line 18]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 18]\n NULLIFY(&a); [line 18]\n NULLIFY(&b); [line 18]\n NULLIFY(&this); [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +6 [label="6: BinaryOperatorStmt: Assign \n n$0=*&this:class X * [line 18]\n n$1=*&a:int [line 18]\n n$2=*&b:int [line 18]\n *n$0.f:int =(n$1 + n$2) [line 18]\n " shape="box"] 6 -> 5 ; @@ -30,7 +30,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: Return Stmt \n n$0=*&this:class X * [line 15]\n n$1=*n$0.f:int [line 15]\n *&return:int =(1 / n$1) [line 15]\n REMOVE_TEMPS(n$0,n$1); [line 15]\n NULLIFY(&this); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&this:class X * [line 15]\n n$1=*n$0.f:int [line 15]\n *&return:int =(1 / n$1) [line 15]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/constructors/constructor_init.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/constructors/constructor_init.cpp.dot index e2f5665de..ec31a9775 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/constructors/constructor_init.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/constructors/constructor_init.cpp.dot @@ -4,23 +4,23 @@ digraph iCFG { 44 -> 43 ; -43 [label="43: DeclStmt \n n$4=*&b.f:int [line 56]\n *&v:int =(1 / n$4) [line 56]\n REMOVE_TEMPS(n$4); [line 56]\n " shape="box"] +43 [label="43: DeclStmt \n n$4=*&b.f:int [line 56]\n *&v:int =(1 / n$4) [line 56]\n " shape="box"] 43 -> 42 ; -42 [label="42: DeclStmt \n n$3=*&b.f2:int [line 57]\n *&v2:int =(1 / n$3) [line 57]\n REMOVE_TEMPS(n$3); [line 57]\n " shape="box"] +42 [label="42: DeclStmt \n n$3=*&b.f2:int [line 57]\n *&v2:int =(1 / n$3) [line 57]\n " shape="box"] 42 -> 41 ; -41 [label="41: DeclStmt \n n$2=*&b.t.v:int [line 58]\n *&v3:int =(1 / n$2) [line 58]\n REMOVE_TEMPS(n$2); [line 58]\n NULLIFY(&v3); [line 58]\n " shape="box"] +41 [label="41: DeclStmt \n n$2=*&b.t.v:int [line 58]\n *&v3:int =(1 / n$2) [line 58]\n " shape="box"] 41 -> 40 ; -40 [label="40: Return Stmt \n n$0=*&v:int [line 59]\n n$1=*&v2:int [line 59]\n *&return:int =(n$0 + n$1) [line 59]\n REMOVE_TEMPS(n$0,n$1); [line 59]\n NULLIFY(&v); [line 59]\n NULLIFY(&v2); [line 59]\n APPLY_ABSTRACTION; [line 59]\n " shape="box"] +40 [label="40: Return Stmt \n n$0=*&v:int [line 59]\n n$1=*&v2:int [line 59]\n *&return:int =(n$0 + n$1) [line 59]\n " shape="box"] 40 -> 39 ; -39 [label="39: Exit f_f2_div1 \n NULLIFY(&b); [line 60]\n " color=yellow style=filled] +39 [label="39: Exit f_f2_div1 \n " color=yellow style=filled] 38 [label="38: Start f_f2_div1\nFormals: \nLocals: v3:int v2:int v:int b:class B \n DECLARE_LOCALS(&return,&v3,&v2,&v,&b); [line 54]\n " color=yellow style=filled] @@ -31,15 +31,15 @@ digraph iCFG { 37 -> 36 ; -36 [label="36: DeclStmt \n n$1=*&b.f:int [line 50]\n *&v:int =(1 / n$1) [line 50]\n REMOVE_TEMPS(n$1); [line 50]\n NULLIFY(&v); [line 50]\n " shape="box"] +36 [label="36: DeclStmt \n n$1=*&b.f:int [line 50]\n *&v:int =(1 / n$1) [line 50]\n " shape="box"] 36 -> 35 ; -35 [label="35: Return Stmt \n n$0=*&b.f2:int [line 51]\n *&return:int =(1 / n$0) [line 51]\n REMOVE_TEMPS(n$0); [line 51]\n APPLY_ABSTRACTION; [line 51]\n " shape="box"] +35 [label="35: Return Stmt \n n$0=*&b.f2:int [line 51]\n *&return:int =(1 / n$0) [line 51]\n " shape="box"] 35 -> 34 ; -34 [label="34: Exit delegate_constr_f2_div0 \n NULLIFY(&b); [line 52]\n " color=yellow style=filled] +34 [label="34: Exit delegate_constr_f2_div0 \n " color=yellow style=filled] 33 [label="33: Start delegate_constr_f2_div0\nFormals: \nLocals: v:int b:class B \n DECLARE_LOCALS(&return,&v,&b); [line 48]\n " color=yellow style=filled] @@ -50,15 +50,15 @@ digraph iCFG { 32 -> 31 ; -31 [label="31: DeclStmt \n n$1=*&b.f2:int [line 44]\n *&v:int =(1 / n$1) [line 44]\n REMOVE_TEMPS(n$1); [line 44]\n NULLIFY(&v); [line 44]\n " shape="box"] +31 [label="31: DeclStmt \n n$1=*&b.f2:int [line 44]\n *&v:int =(1 / n$1) [line 44]\n " shape="box"] 31 -> 30 ; -30 [label="30: Return Stmt \n n$0=*&b.f:int [line 45]\n *&return:int =(1 / n$0) [line 45]\n REMOVE_TEMPS(n$0); [line 45]\n APPLY_ABSTRACTION; [line 45]\n " shape="box"] +30 [label="30: Return Stmt \n n$0=*&b.f:int [line 45]\n *&return:int =(1 / n$0) [line 45]\n " shape="box"] 30 -> 29 ; -29 [label="29: Exit delegate_constr_f_div0 \n NULLIFY(&b); [line 46]\n " color=yellow style=filled] +29 [label="29: Exit delegate_constr_f_div0 \n " color=yellow style=filled] 28 [label="28: Start delegate_constr_f_div0\nFormals: \nLocals: v:int b:class B \n DECLARE_LOCALS(&return,&v,&b); [line 42]\n " color=yellow style=filled] @@ -69,11 +69,11 @@ digraph iCFG { 27 -> 26 ; -26 [label="26: Return Stmt \n n$0=*&b.t.v:int [line 39]\n *&return:int =(1 / n$0) [line 39]\n REMOVE_TEMPS(n$0); [line 39]\n APPLY_ABSTRACTION; [line 39]\n " shape="box"] +26 [label="26: Return Stmt \n n$0=*&b.t.v:int [line 39]\n *&return:int =(1 / n$0) [line 39]\n " shape="box"] 26 -> 25 ; -25 [label="25: Exit t_div0 \n NULLIFY(&b); [line 40]\n " color=yellow style=filled] +25 [label="25: Exit t_div0 \n " color=yellow style=filled] 24 [label="24: Start t_div0\nFormals: \nLocals: b:class B \n DECLARE_LOCALS(&return,&b); [line 37]\n " color=yellow style=filled] @@ -84,11 +84,11 @@ digraph iCFG { 23 -> 22 ; -22 [label="22: Return Stmt \n n$0=*&b.f:int [line 34]\n *&return:int =(1 / n$0) [line 34]\n REMOVE_TEMPS(n$0); [line 34]\n APPLY_ABSTRACTION; [line 34]\n " shape="box"] +22 [label="22: Return Stmt \n n$0=*&b.f:int [line 34]\n *&return:int =(1 / n$0) [line 34]\n " shape="box"] 22 -> 21 ; -21 [label="21: Exit f_div0 \n NULLIFY(&b); [line 35]\n " color=yellow style=filled] +21 [label="21: Exit f_div0 \n " color=yellow style=filled] 20 [label="20: Start f_div0\nFormals: \nLocals: b:class B \n DECLARE_LOCALS(&return,&b); [line 32]\n " color=yellow style=filled] @@ -99,22 +99,22 @@ digraph iCFG { 19 -> 18 ; -18 [label="18: Return Stmt \n n$0=*&b.f2:int [line 29]\n *&return:int =(1 / n$0) [line 29]\n REMOVE_TEMPS(n$0); [line 29]\n APPLY_ABSTRACTION; [line 29]\n " shape="box"] +18 [label="18: Return Stmt \n n$0=*&b.f2:int [line 29]\n *&return:int =(1 / n$0) [line 29]\n " shape="box"] 18 -> 17 ; -17 [label="17: Exit f2_div0 \n NULLIFY(&b); [line 30]\n " color=yellow style=filled] +17 [label="17: Exit f2_div0 \n " color=yellow style=filled] 16 [label="16: Start f2_div0\nFormals: \nLocals: b:class B \n DECLARE_LOCALS(&return,&b); [line 27]\n " color=yellow style=filled] 16 -> 19 ; -15 [label="15: Constructor Init \n n$2=*&this:class B * [line 24]\n n$3=*&a:int [line 24]\n n$4=*&b:int [line 24]\n _fun_B_B(n$2:class B *,(n$3 + n$4):int ) [line 24]\n REMOVE_TEMPS(n$2,n$3,n$4); [line 24]\n NULLIFY(&a); [line 24]\n " shape="box"] +15 [label="15: Constructor Init \n n$2=*&this:class B * [line 24]\n n$3=*&a:int [line 24]\n n$4=*&b:int [line 24]\n _fun_B_B(n$2:class B *,(n$3 + n$4):int ) [line 24]\n " shape="box"] 15 -> 14 ; -14 [label="14: BinaryOperatorStmt: Assign \n n$0=*&this:class B * [line 24]\n n$1=*&b:int [line 24]\n *n$0.f2:int =n$1 [line 24]\n REMOVE_TEMPS(n$0,n$1); [line 24]\n NULLIFY(&b); [line 24]\n NULLIFY(&this); [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +14 [label="14: BinaryOperatorStmt: Assign \n n$0=*&this:class B * [line 24]\n n$1=*&b:int [line 24]\n *n$0.f2:int =n$1 [line 24]\n " shape="box"] 14 -> 13 ; @@ -125,15 +125,15 @@ digraph iCFG { 12 -> 15 ; -11 [label="11: Constructor Init \n n$4=*&this:class B * [line 22]\n n$5=*&a:int [line 22]\n _fun_A_A(n$4:class B *,n$5:int ) [line 22]\n REMOVE_TEMPS(n$4,n$5); [line 22]\n " shape="box"] +11 [label="11: Constructor Init \n n$4=*&this:class B * [line 22]\n n$5=*&a:int [line 22]\n _fun_A_A(n$4:class B *,n$5:int ) [line 22]\n " shape="box"] 11 -> 10 ; -10 [label="10: Constructor Init \n n$2=*&this:class B * [line 22]\n n$3=*&a:int [line 22]\n *n$2.f2:int =n$3 [line 22]\n REMOVE_TEMPS(n$2,n$3); [line 22]\n " shape="box"] +10 [label="10: Constructor Init \n n$2=*&this:class B * [line 22]\n n$3=*&a:int [line 22]\n *n$2.f2:int =n$3 [line 22]\n " shape="box"] 10 -> 9 ; -9 [label="9: Constructor Init \n n$0=*&this:class B * [line 22]\n n$1=*&a:int [line 22]\n _fun_B::T_T(n$0.t:class B::T *,n$1:int ) [line 22]\n REMOVE_TEMPS(n$0,n$1); [line 22]\n NULLIFY(&a); [line 22]\n NULLIFY(&this); [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"] +9 [label="9: Constructor Init \n n$0=*&this:class B * [line 22]\n n$1=*&a:int [line 22]\n _fun_B::T_T(n$0.t:class B::T *,n$1:int ) [line 22]\n " shape="box"] 9 -> 8 ; @@ -144,7 +144,7 @@ digraph iCFG { 7 -> 11 ; -6 [label="6: Constructor Init \n n$0=*&this:class B::T * [line 18]\n n$1=*&v:int [line 18]\n *n$0.v:int =n$1 [line 18]\n REMOVE_TEMPS(n$0,n$1); [line 18]\n NULLIFY(&this); [line 18]\n NULLIFY(&v); [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +6 [label="6: Constructor Init \n n$0=*&this:class B::T * [line 18]\n n$1=*&v:int [line 18]\n *n$0.v:int =n$1 [line 18]\n " shape="box"] 6 -> 5 ; @@ -155,7 +155,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: Constructor Init \n n$0=*&this:class A * [line 12]\n n$1=*&f:int [line 12]\n *n$0.f:int =n$1 [line 12]\n REMOVE_TEMPS(n$0,n$1); [line 12]\n NULLIFY(&f); [line 12]\n NULLIFY(&this); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +3 [label="3: Constructor Init \n n$0=*&this:class A * [line 12]\n n$1=*&f:int [line 12]\n *n$0.f:int =n$1 [line 12]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/constructors/constructor_new.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/constructors/constructor_new.cpp.dot index cd2f4533e..d845b02de 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/constructors/constructor_new.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/constructors/constructor_new.cpp.dot @@ -1,10 +1,10 @@ /* @generated */ digraph iCFG { -97 [label="97: DeclStmt \n n$2=_fun___new_array((sizeof(class Person *) * 10):unsigned long ) [line 97]\n *&tarray:class Person **=n$2 [line 97]\n REMOVE_TEMPS(n$2); [line 97]\n " shape="box"] +97 [label="97: DeclStmt \n n$2=_fun___new_array((sizeof(class Person *) * 10):unsigned long ) [line 97]\n *&tarray:class Person **=n$2 [line 97]\n " shape="box"] 97 -> 96 ; -96 [label="96: BinaryOperatorStmt: Assign \n n$0=*&tarray:class Person ** [line 98]\n n$1=_fun___new_array((sizeof(class Person ) * 10):unsigned long ) [line 98]\n _fun_Person_Person(n$1[0]:class Person *) [line 98]\n _fun_Person_Person(n$1[1]:class Person *) [line 98]\n _fun_Person_Person(n$1[2]:class Person *) [line 98]\n _fun_Person_Person(n$1[3]:class Person *) [line 98]\n _fun_Person_Person(n$1[4]:class Person *) [line 98]\n _fun_Person_Person(n$1[5]:class Person *) [line 98]\n _fun_Person_Person(n$1[6]:class Person *) [line 98]\n _fun_Person_Person(n$1[7]:class Person *) [line 98]\n _fun_Person_Person(n$1[8]:class Person *) [line 98]\n _fun_Person_Person(n$1[9]:class Person *) [line 98]\n *n$0[0]:class Person *=n$1 [line 98]\n REMOVE_TEMPS(n$0,n$1); [line 98]\n NULLIFY(&tarray); [line 98]\n APPLY_ABSTRACTION; [line 98]\n " shape="box"] +96 [label="96: BinaryOperatorStmt: Assign \n n$0=*&tarray:class Person ** [line 98]\n n$1=_fun___new_array((sizeof(class Person ) * 10):unsigned long ) [line 98]\n _fun_Person_Person(n$1[0]:class Person *) [line 98]\n _fun_Person_Person(n$1[1]:class Person *) [line 98]\n _fun_Person_Person(n$1[2]:class Person *) [line 98]\n _fun_Person_Person(n$1[3]:class Person *) [line 98]\n _fun_Person_Person(n$1[4]:class Person *) [line 98]\n _fun_Person_Person(n$1[5]:class Person *) [line 98]\n _fun_Person_Person(n$1[6]:class Person *) [line 98]\n _fun_Person_Person(n$1[7]:class Person *) [line 98]\n _fun_Person_Person(n$1[8]:class Person *) [line 98]\n _fun_Person_Person(n$1[9]:class Person *) [line 98]\n *n$0[0]:class Person *=n$1 [line 98]\n " shape="box"] 96 -> 95 ; @@ -15,7 +15,7 @@ digraph iCFG { 94 -> 97 ; -93 [label="93: DeclStmt \n n$0=_fun___new_array((sizeof(class Person ) * 10):unsigned long ) [line 93]\n _fun_Person_Person(n$0[0]:class Person *) [line 93]\n _fun_Person_Person(n$0[1]:class Person *) [line 93]\n _fun_Person_Person(n$0[2]:class Person *) [line 93]\n _fun_Person_Person(n$0[3]:class Person *) [line 93]\n _fun_Person_Person(n$0[4]:class Person *) [line 93]\n _fun_Person_Person(n$0[5]:class Person *) [line 93]\n _fun_Person_Person(n$0[6]:class Person *) [line 93]\n _fun_Person_Person(n$0[7]:class Person *) [line 93]\n _fun_Person_Person(n$0[8]:class Person *) [line 93]\n _fun_Person_Person(n$0[9]:class Person *) [line 93]\n *&tarray:class Person *=n$0 [line 93]\n REMOVE_TEMPS(n$0); [line 93]\n NULLIFY(&tarray); [line 93]\n APPLY_ABSTRACTION; [line 93]\n " shape="box"] +93 [label="93: DeclStmt \n n$0=_fun___new_array((sizeof(class Person ) * 10):unsigned long ) [line 93]\n _fun_Person_Person(n$0[0]:class Person *) [line 93]\n _fun_Person_Person(n$0[1]:class Person *) [line 93]\n _fun_Person_Person(n$0[2]:class Person *) [line 93]\n _fun_Person_Person(n$0[3]:class Person *) [line 93]\n _fun_Person_Person(n$0[4]:class Person *) [line 93]\n _fun_Person_Person(n$0[5]:class Person *) [line 93]\n _fun_Person_Person(n$0[6]:class Person *) [line 93]\n _fun_Person_Person(n$0[7]:class Person *) [line 93]\n _fun_Person_Person(n$0[8]:class Person *) [line 93]\n _fun_Person_Person(n$0[9]:class Person *) [line 93]\n *&tarray:class Person *=n$0 [line 93]\n " shape="box"] 93 -> 92 ; @@ -26,23 +26,23 @@ digraph iCFG { 91 -> 93 ; -90 [label="90: DeclStmt \n n$2=*&SIL_temp_conditional___n$0:int [line 89]\n n$3=_fun___new_array((sizeof(class Person ) * n$2):unsigned long ) [line 89]\n *&tarray:class Person *=n$3 [line 89]\n REMOVE_TEMPS(n$2,n$3); [line 89]\n NULLIFY(&SIL_temp_conditional___n$0); [line 89]\n NULLIFY(&tarray); [line 89]\n APPLY_ABSTRACTION; [line 89]\n " shape="box"] +90 [label="90: DeclStmt \n n$2=*&SIL_temp_conditional___n$0:int [line 89]\n n$3=_fun___new_array((sizeof(class Person ) * n$2):unsigned long ) [line 89]\n *&tarray:class Person *=n$3 [line 89]\n " shape="box"] 90 -> 83 ; -89 [label="89: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =3 [line 89]\n APPLY_ABSTRACTION; [line 89]\n " shape="box"] +89 [label="89: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =3 [line 89]\n " shape="box"] 89 -> 84 ; -88 [label="88: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =5 [line 89]\n APPLY_ABSTRACTION; [line 89]\n " shape="box"] +88 [label="88: ConditinalStmt Branch \n *&SIL_temp_conditional___n$0:int =5 [line 89]\n " shape="box"] 88 -> 84 ; -87 [label="87: Prune (false branch) \n PRUNE(((n$1 == 5) == 0), false); [line 89]\n REMOVE_TEMPS(n$1); [line 89]\n " shape="invhouse"] +87 [label="87: Prune (false branch) \n PRUNE(((n$1 == 5) == 0), false); [line 89]\n " shape="invhouse"] 87 -> 89 ; -86 [label="86: Prune (true branch) \n PRUNE(((n$1 == 5) != 0), true); [line 89]\n REMOVE_TEMPS(n$1); [line 89]\n " shape="invhouse"] +86 [label="86: Prune (true branch) \n PRUNE(((n$1 == 5) != 0), true); [line 89]\n " shape="invhouse"] 86 -> 88 ; @@ -62,11 +62,11 @@ digraph iCFG { 82 -> 85 ; -81 [label="81: DeclStmt \n n$10=_fun___new_array((sizeof(int ) * 100):unsigned long ) [line 83]\n *n$10[0]:int =1 [line 83]\n *n$10[1]:int =2 [line 83]\n *n$10[2]:int =3 [line 83]\n *n$10[3]:int =4 [line 83]\n *n$10[4]:int =5 [line 83]\n *n$10[5]:int =6 [line 83]\n *n$10[6]:int =7 [line 83]\n *n$10[7]:int =8 [line 83]\n *n$10[8]:int =9 [line 83]\n *n$10[9]:int =10 [line 83]\n *&arr:int *=n$10 [line 83]\n REMOVE_TEMPS(n$10); [line 83]\n " shape="box"] +81 [label="81: DeclStmt \n n$10=_fun___new_array((sizeof(int ) * 100):unsigned long ) [line 83]\n *n$10[0]:int =1 [line 83]\n *n$10[1]:int =2 [line 83]\n *n$10[2]:int =3 [line 83]\n *n$10[3]:int =4 [line 83]\n *n$10[4]:int =5 [line 83]\n *n$10[5]:int =6 [line 83]\n *n$10[6]:int =7 [line 83]\n *n$10[7]:int =8 [line 83]\n *n$10[8]:int =9 [line 83]\n *n$10[9]:int =10 [line 83]\n *&arr:int *=n$10 [line 83]\n " shape="box"] 81 -> 80 ; -80 [label="80: Return Stmt \n n$0=*&arr:int * [line 84]\n n$1=*n$0[0]:int [line 84]\n n$2=*&arr:int * [line 84]\n n$3=*n$2[1]:int [line 84]\n n$4=*&arr:int * [line 84]\n n$5=*n$4[2]:int [line 84]\n n$6=*&arr:int * [line 84]\n n$7=*n$6[3]:int [line 84]\n n$8=*&arr:int * [line 84]\n n$9=*n$8[4]:int [line 84]\n *&return:int =(1 / (((((n$1 + n$3) + n$5) + n$7) + n$9) - 15)) [line 84]\n REMOVE_TEMPS(n$0,n$1,n$2,n$3,n$4,n$5,n$6,n$7,n$8,n$9); [line 84]\n NULLIFY(&arr); [line 84]\n APPLY_ABSTRACTION; [line 84]\n " shape="box"] +80 [label="80: Return Stmt \n n$0=*&arr:int * [line 84]\n n$1=*n$0[0]:int [line 84]\n n$2=*&arr:int * [line 84]\n n$3=*n$2[1]:int [line 84]\n n$4=*&arr:int * [line 84]\n n$5=*n$4[2]:int [line 84]\n n$6=*&arr:int * [line 84]\n n$7=*n$6[3]:int [line 84]\n n$8=*&arr:int * [line 84]\n n$9=*n$8[4]:int [line 84]\n *&return:int =(1 / (((((n$1 + n$3) + n$5) + n$7) + n$9) - 15)) [line 84]\n " shape="box"] 80 -> 79 ; @@ -77,23 +77,23 @@ digraph iCFG { 78 -> 81 ; -77 [label="77: DeclStmt \n n$9=*&SIL_temp_conditional___n$6:int [line 76]\n n$10=_fun___new_array((sizeof(int ) * n$9):unsigned long ) [line 76]\n *&x2:int *=n$10 [line 76]\n REMOVE_TEMPS(n$9,n$10); [line 76]\n NULLIFY(&SIL_temp_conditional___n$6); [line 76]\n " shape="box"] +77 [label="77: DeclStmt \n n$9=*&SIL_temp_conditional___n$6:int [line 76]\n n$10=_fun___new_array((sizeof(int ) * n$9):unsigned long ) [line 76]\n *&x2:int *=n$10 [line 76]\n " shape="box"] 77 -> 70 ; -76 [label="76: ConditinalStmt Branch \n *&SIL_temp_conditional___n$6:int =3 [line 76]\n APPLY_ABSTRACTION; [line 76]\n " shape="box"] +76 [label="76: ConditinalStmt Branch \n *&SIL_temp_conditional___n$6:int =3 [line 76]\n " shape="box"] 76 -> 71 ; -75 [label="75: ConditinalStmt Branch \n n$8=_fun_getValue(5:int ) [line 76]\n *&SIL_temp_conditional___n$6:int =n$8 [line 76]\n REMOVE_TEMPS(n$8); [line 76]\n APPLY_ABSTRACTION; [line 76]\n " shape="box"] +75 [label="75: ConditinalStmt Branch \n n$8=_fun_getValue(5:int ) [line 76]\n *&SIL_temp_conditional___n$6:int =n$8 [line 76]\n " shape="box"] 75 -> 71 ; -74 [label="74: Prune (false branch) \n PRUNE((n$7 == 0), false); [line 76]\n REMOVE_TEMPS(n$7); [line 76]\n " shape="invhouse"] +74 [label="74: Prune (false branch) \n PRUNE((n$7 == 0), false); [line 76]\n " shape="invhouse"] 74 -> 76 ; -73 [label="73: Prune (true branch) \n PRUNE((n$7 != 0), true); [line 76]\n REMOVE_TEMPS(n$7); [line 76]\n " shape="invhouse"] +73 [label="73: Prune (true branch) \n PRUNE((n$7 != 0), true); [line 76]\n " shape="invhouse"] 73 -> 75 ; @@ -106,15 +106,15 @@ digraph iCFG { 71 -> 77 ; -70 [label="70: BinaryOperatorStmt: Assign \n n$5=*&x2:int * [line 77]\n *n$5[0]:int =1 [line 77]\n REMOVE_TEMPS(n$5); [line 77]\n " shape="box"] +70 [label="70: BinaryOperatorStmt: Assign \n n$5=*&x2:int * [line 77]\n *n$5[0]:int =1 [line 77]\n " shape="box"] 70 -> 69 ; -69 [label="69: BinaryOperatorStmt: Assign \n n$4=*&x2:int * [line 78]\n *n$4[1]:int =2 [line 78]\n REMOVE_TEMPS(n$4); [line 78]\n " shape="box"] +69 [label="69: BinaryOperatorStmt: Assign \n n$4=*&x2:int * [line 78]\n *n$4[1]:int =2 [line 78]\n " shape="box"] 69 -> 68 ; -68 [label="68: Return Stmt \n n$0=*&x2:int * [line 79]\n n$1=*n$0[0]:int [line 79]\n n$2=*&x2:int * [line 79]\n n$3=*n$2[1]:int [line 79]\n *&return:int =(1 / ((n$1 + n$3) - 3)) [line 79]\n REMOVE_TEMPS(n$0,n$1,n$2,n$3); [line 79]\n NULLIFY(&x2); [line 79]\n APPLY_ABSTRACTION; [line 79]\n " shape="box"] +68 [label="68: Return Stmt \n n$0=*&x2:int * [line 79]\n n$1=*n$0[0]:int [line 79]\n n$2=*&x2:int * [line 79]\n n$3=*n$2[1]:int [line 79]\n *&return:int =(1 / ((n$1 + n$3) - 3)) [line 79]\n " shape="box"] 68 -> 67 ; @@ -129,23 +129,23 @@ digraph iCFG { 65 -> 59 ; -64 [label="64: DeclStmt \n n$2=_fun___new(sizeof(class Person ):unsigned long ) [line 71]\n n$7=*&SIL_temp_conditional___n$3:int [line 71]\n _fun_Person_Person(n$2:class Person *,n$7:int ) [line 71]\n *&p:class Person *=n$2 [line 71]\n REMOVE_TEMPS(n$2,n$7); [line 71]\n NULLIFY(&SIL_temp_conditional___n$3); [line 71]\n " shape="box"] +64 [label="64: DeclStmt \n n$2=_fun___new(sizeof(class Person ):unsigned long ) [line 71]\n n$7=*&SIL_temp_conditional___n$3:int [line 71]\n _fun_Person_Person(n$2:class Person *,n$7:int ) [line 71]\n *&p:class Person *=n$2 [line 71]\n " shape="box"] 64 -> 57 ; -63 [label="63: ConditinalStmt Branch \n n$6=*&z:int [line 71]\n *&SIL_temp_conditional___n$3:int =(1 + n$6) [line 71]\n REMOVE_TEMPS(n$6); [line 71]\n NULLIFY(&z); [line 71]\n APPLY_ABSTRACTION; [line 71]\n " shape="box"] +63 [label="63: ConditinalStmt Branch \n n$6=*&z:int [line 71]\n *&SIL_temp_conditional___n$3:int =(1 + n$6) [line 71]\n " shape="box"] 63 -> 58 ; -62 [label="62: ConditinalStmt Branch \n n$5=_fun_getValue(1:int ) [line 71]\n *&SIL_temp_conditional___n$3:int =n$5 [line 71]\n REMOVE_TEMPS(n$5); [line 71]\n APPLY_ABSTRACTION; [line 71]\n " shape="box"] +62 [label="62: ConditinalStmt Branch \n n$5=_fun_getValue(1:int ) [line 71]\n *&SIL_temp_conditional___n$3:int =n$5 [line 71]\n " shape="box"] 62 -> 58 ; -61 [label="61: Prune (false branch) \n PRUNE((n$4 == 0), false); [line 71]\n REMOVE_TEMPS(n$4); [line 71]\n " shape="invhouse"] +61 [label="61: Prune (false branch) \n PRUNE((n$4 == 0), false); [line 71]\n " shape="invhouse"] 61 -> 63 ; -60 [label="60: Prune (true branch) \n PRUNE((n$4 != 0), true); [line 71]\n REMOVE_TEMPS(n$4); [line 71]\n NULLIFY(&z); [line 71]\n " shape="invhouse"] +60 [label="60: Prune (true branch) \n PRUNE((n$4 != 0), true); [line 71]\n " shape="invhouse"] 60 -> 62 ; @@ -158,7 +158,7 @@ digraph iCFG { 58 -> 64 ; -57 [label="57: Return Stmt \n n$0=*&p:class Person * [line 72]\n n$1=*n$0.x:int [line 72]\n *&return:int =(1 / (n$1 - 7)) [line 72]\n REMOVE_TEMPS(n$0,n$1); [line 72]\n NULLIFY(&p); [line 72]\n APPLY_ABSTRACTION; [line 72]\n " shape="box"] +57 [label="57: Return Stmt \n n$0=*&p:class Person * [line 72]\n n$1=*n$0.x:int [line 72]\n *&return:int =(1 / (n$1 - 7)) [line 72]\n " shape="box"] 57 -> 56 ; @@ -169,31 +169,31 @@ digraph iCFG { 55 -> 65 ; -54 [label="54: DeclStmt \n *&z:int =6 [line 63]\n NULLIFY(&z); [line 63]\n " shape="box"] +54 [label="54: DeclStmt \n *&z:int =6 [line 63]\n " shape="box"] 54 -> 53 ; -53 [label="53: DeclStmt \n n$9=_fun___new(sizeof(int ):unsigned long ) [line 64]\n n$10=_fun_getValue(4:int ) [line 64]\n *n$9:int =n$10 [line 64]\n *&y:int *=n$9 [line 64]\n REMOVE_TEMPS(n$9,n$10); [line 64]\n " shape="box"] +53 [label="53: DeclStmt \n n$9=_fun___new(sizeof(int ):unsigned long ) [line 64]\n n$10=_fun_getValue(4:int ) [line 64]\n *n$9:int =n$10 [line 64]\n *&y:int *=n$9 [line 64]\n " shape="box"] 53 -> 47 ; -52 [label="52: DeclStmt \n n$2=_fun___new(sizeof(int ):unsigned long ) [line 65]\n n$8=*&SIL_temp_conditional___n$3:int [line 65]\n *n$2:int =n$8 [line 65]\n *&x:int *=n$2 [line 65]\n REMOVE_TEMPS(n$2,n$8); [line 65]\n NULLIFY(&SIL_temp_conditional___n$3); [line 65]\n " shape="box"] +52 [label="52: DeclStmt \n n$2=_fun___new(sizeof(int ):unsigned long ) [line 65]\n n$8=*&SIL_temp_conditional___n$3:int [line 65]\n *n$2:int =n$8 [line 65]\n *&x:int *=n$2 [line 65]\n " shape="box"] 52 -> 45 ; -51 [label="51: ConditinalStmt Branch \n n$6=*&y:int * [line 65]\n n$7=*n$6:int [line 65]\n *&SIL_temp_conditional___n$3:int =(1 + n$7) [line 65]\n REMOVE_TEMPS(n$6,n$7); [line 65]\n NULLIFY(&y); [line 65]\n APPLY_ABSTRACTION; [line 65]\n " shape="box"] +51 [label="51: ConditinalStmt Branch \n n$6=*&y:int * [line 65]\n n$7=*n$6:int [line 65]\n *&SIL_temp_conditional___n$3:int =(1 + n$7) [line 65]\n " shape="box"] 51 -> 46 ; -50 [label="50: ConditinalStmt Branch \n n$5=_fun_getValue(1:int ) [line 65]\n *&SIL_temp_conditional___n$3:int =n$5 [line 65]\n REMOVE_TEMPS(n$5); [line 65]\n APPLY_ABSTRACTION; [line 65]\n " shape="box"] +50 [label="50: ConditinalStmt Branch \n n$5=_fun_getValue(1:int ) [line 65]\n *&SIL_temp_conditional___n$3:int =n$5 [line 65]\n " shape="box"] 50 -> 46 ; -49 [label="49: Prune (false branch) \n PRUNE((n$4 == 0), false); [line 65]\n REMOVE_TEMPS(n$4); [line 65]\n " shape="invhouse"] +49 [label="49: Prune (false branch) \n PRUNE((n$4 == 0), false); [line 65]\n " shape="invhouse"] 49 -> 51 ; -48 [label="48: Prune (true branch) \n PRUNE((n$4 != 0), true); [line 65]\n REMOVE_TEMPS(n$4); [line 65]\n NULLIFY(&y); [line 65]\n " shape="invhouse"] +48 [label="48: Prune (true branch) \n PRUNE((n$4 != 0), true); [line 65]\n " shape="invhouse"] 48 -> 50 ; @@ -206,7 +206,7 @@ digraph iCFG { 46 -> 52 ; -45 [label="45: Return Stmt \n n$0=*&x:int * [line 66]\n n$1=*n$0:int [line 66]\n *&return:int =(1 / (n$1 - 5)) [line 66]\n REMOVE_TEMPS(n$0,n$1); [line 66]\n NULLIFY(&x); [line 66]\n APPLY_ABSTRACTION; [line 66]\n " shape="box"] +45 [label="45: Return Stmt \n n$0=*&x:int * [line 66]\n n$1=*n$0:int [line 66]\n *&return:int =(1 / (n$1 - 5)) [line 66]\n " shape="box"] 45 -> 44 ; @@ -217,11 +217,11 @@ digraph iCFG { 43 -> 54 ; -42 [label="42: DeclStmt \n n$2=_fun___new(sizeof(int ):unsigned long ) [line 58]\n *n$2:int *=0 [line 58]\n *&x1:int *=n$2 [line 58]\n REMOVE_TEMPS(n$2); [line 58]\n " shape="box"] +42 [label="42: DeclStmt \n n$2=_fun___new(sizeof(int ):unsigned long ) [line 58]\n *n$2:int *=0 [line 58]\n *&x1:int *=n$2 [line 58]\n " shape="box"] 42 -> 41 ; -41 [label="41: Return Stmt \n n$0=*&x1:int * [line 59]\n n$1=*n$0:int [line 59]\n *&return:int =(1 / n$1) [line 59]\n REMOVE_TEMPS(n$0,n$1); [line 59]\n NULLIFY(&x1); [line 59]\n APPLY_ABSTRACTION; [line 59]\n " shape="box"] +41 [label="41: Return Stmt \n n$0=*&x1:int * [line 59]\n n$1=*n$0:int [line 59]\n *&return:int =(1 / n$1) [line 59]\n " shape="box"] 41 -> 40 ; @@ -236,7 +236,7 @@ digraph iCFG { 38 -> 37 ; -37 [label="37: Return Stmt \n n$0=*&x1:int [line 54]\n *&return:int =(1 / n$0) [line 54]\n REMOVE_TEMPS(n$0); [line 54]\n NULLIFY(&x1); [line 54]\n APPLY_ABSTRACTION; [line 54]\n " shape="box"] +37 [label="37: Return Stmt \n n$0=*&x1:int [line 54]\n *&return:int =(1 / n$0) [line 54]\n " shape="box"] 37 -> 36 ; @@ -247,11 +247,11 @@ digraph iCFG { 35 -> 38 ; -34 [label="34: DeclStmt \n n$2=_fun___new(sizeof(int ):unsigned long ) [line 48]\n *n$2:int =0 [line 48]\n *&x1:int *=n$2 [line 48]\n REMOVE_TEMPS(n$2); [line 48]\n " shape="box"] +34 [label="34: DeclStmt \n n$2=_fun___new(sizeof(int ):unsigned long ) [line 48]\n *n$2:int =0 [line 48]\n *&x1:int *=n$2 [line 48]\n " shape="box"] 34 -> 33 ; -33 [label="33: Return Stmt \n n$0=*&x1:int * [line 49]\n n$1=*n$0:int [line 49]\n *&return:int =(1 / n$1) [line 49]\n REMOVE_TEMPS(n$0,n$1); [line 49]\n NULLIFY(&x1); [line 49]\n APPLY_ABSTRACTION; [line 49]\n " shape="box"] +33 [label="33: Return Stmt \n n$0=*&x1:int * [line 49]\n n$1=*n$0:int [line 49]\n *&return:int =(1 / n$1) [line 49]\n " shape="box"] 33 -> 32 ; @@ -262,11 +262,11 @@ digraph iCFG { 31 -> 34 ; -30 [label="30: DeclStmt \n n$2=_fun___new(sizeof(float ):unsigned long ) [line 43]\n *n$2:float =5.400000 [line 43]\n *&x1:float *=n$2 [line 43]\n REMOVE_TEMPS(n$2); [line 43]\n " shape="box"] +30 [label="30: DeclStmt \n n$2=_fun___new(sizeof(float ):unsigned long ) [line 43]\n *n$2:float =5.400000 [line 43]\n *&x1:float *=n$2 [line 43]\n " shape="box"] 30 -> 29 ; -29 [label="29: Return Stmt \n n$0=*&x1:float * [line 44]\n n$1=*n$0:float [line 44]\n *&return:float =(1 / (n$1 - 5.400000)) [line 44]\n REMOVE_TEMPS(n$0,n$1); [line 44]\n NULLIFY(&x1); [line 44]\n APPLY_ABSTRACTION; [line 44]\n " shape="box"] +29 [label="29: Return Stmt \n n$0=*&x1:float * [line 44]\n n$1=*n$0:float [line 44]\n *&return:float =(1 / (n$1 - 5.400000)) [line 44]\n " shape="box"] 29 -> 28 ; @@ -277,11 +277,11 @@ digraph iCFG { 27 -> 30 ; -26 [label="26: DeclStmt \n n$2=_fun___new(sizeof(int ):unsigned long ) [line 38]\n *n$2:int =5 [line 38]\n *&x1:int *=n$2 [line 38]\n REMOVE_TEMPS(n$2); [line 38]\n " shape="box"] +26 [label="26: DeclStmt \n n$2=_fun___new(sizeof(int ):unsigned long ) [line 38]\n *n$2:int =5 [line 38]\n *&x1:int *=n$2 [line 38]\n " shape="box"] 26 -> 25 ; -25 [label="25: Return Stmt \n n$0=*&x1:int * [line 39]\n n$1=*n$0:int [line 39]\n *&return:int =(1 / (n$1 - 5)) [line 39]\n REMOVE_TEMPS(n$0,n$1); [line 39]\n NULLIFY(&x1); [line 39]\n APPLY_ABSTRACTION; [line 39]\n " shape="box"] +25 [label="25: Return Stmt \n n$0=*&x1:int * [line 39]\n n$1=*n$0:int [line 39]\n *&return:int =(1 / (n$1 - 5)) [line 39]\n " shape="box"] 25 -> 24 ; @@ -292,11 +292,11 @@ digraph iCFG { 23 -> 26 ; -22 [label="22: DeclStmt \n n$2=_fun___new(sizeof(class Person ):unsigned long ) [line 33]\n _fun_Person_Person(n$2:class Person *,5:int ,6:int ,7:int ) [line 33]\n *&p:class Person *=n$2 [line 33]\n REMOVE_TEMPS(n$2); [line 33]\n " shape="box"] +22 [label="22: DeclStmt \n n$2=_fun___new(sizeof(class Person ):unsigned long ) [line 33]\n _fun_Person_Person(n$2:class Person *,5:int ,6:int ,7:int ) [line 33]\n *&p:class Person *=n$2 [line 33]\n " shape="box"] 22 -> 21 ; -21 [label="21: Return Stmt \n n$0=*&p:class Person * [line 34]\n n$1=*n$0.z:int [line 34]\n *&return:int =(1 / (n$1 - 7)) [line 34]\n REMOVE_TEMPS(n$0,n$1); [line 34]\n NULLIFY(&p); [line 34]\n APPLY_ABSTRACTION; [line 34]\n " shape="box"] +21 [label="21: Return Stmt \n n$0=*&p:class Person * [line 34]\n n$1=*n$0.z:int [line 34]\n *&return:int =(1 / (n$1 - 7)) [line 34]\n " shape="box"] 21 -> 20 ; @@ -307,11 +307,11 @@ digraph iCFG { 19 -> 22 ; -18 [label="18: DeclStmt \n n$2=_fun___new(sizeof(class Person ):unsigned long ) [line 28]\n _fun_Person_Person(n$2:class Person *,5:int ) [line 28]\n *&p:class Person *=n$2 [line 28]\n REMOVE_TEMPS(n$2); [line 28]\n " shape="box"] +18 [label="18: DeclStmt \n n$2=_fun___new(sizeof(class Person ):unsigned long ) [line 28]\n _fun_Person_Person(n$2:class Person *,5:int ) [line 28]\n *&p:class Person *=n$2 [line 28]\n " shape="box"] 18 -> 17 ; -17 [label="17: Return Stmt \n n$0=*&p:class Person * [line 29]\n n$1=*n$0.x:int [line 29]\n *&return:int =(1 / (n$1 - 5)) [line 29]\n REMOVE_TEMPS(n$0,n$1); [line 29]\n NULLIFY(&p); [line 29]\n APPLY_ABSTRACTION; [line 29]\n " shape="box"] +17 [label="17: Return Stmt \n n$0=*&p:class Person * [line 29]\n n$1=*n$0.x:int [line 29]\n *&return:int =(1 / (n$1 - 5)) [line 29]\n " shape="box"] 17 -> 16 ; @@ -322,7 +322,7 @@ digraph iCFG { 15 -> 18 ; -14 [label="14: Return Stmt \n n$0=*&x:int [line 25]\n *&return:int =n$0 [line 25]\n REMOVE_TEMPS(n$0); [line 25]\n NULLIFY(&x); [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="box"] +14 [label="14: Return Stmt \n n$0=*&x:int [line 25]\n *&return:int =n$0 [line 25]\n " shape="box"] 14 -> 13 ; @@ -333,15 +333,15 @@ digraph iCFG { 12 -> 14 ; -11 [label="11: BinaryOperatorStmt: Assign \n n$4=*&this:class Person * [line 16]\n n$5=*&i:int [line 16]\n *n$4.x:int =n$5 [line 16]\n REMOVE_TEMPS(n$4,n$5); [line 16]\n NULLIFY(&i); [line 16]\n " shape="box"] +11 [label="11: BinaryOperatorStmt: Assign \n n$4=*&this:class Person * [line 16]\n n$5=*&i:int [line 16]\n *n$4.x:int =n$5 [line 16]\n " shape="box"] 11 -> 10 ; -10 [label="10: BinaryOperatorStmt: Assign \n n$2=*&this:class Person * [line 17]\n n$3=*&j:int [line 17]\n *n$2.y:int =n$3 [line 17]\n REMOVE_TEMPS(n$2,n$3); [line 17]\n NULLIFY(&j); [line 17]\n " shape="box"] +10 [label="10: BinaryOperatorStmt: Assign \n n$2=*&this:class Person * [line 17]\n n$3=*&j:int [line 17]\n *n$2.y:int =n$3 [line 17]\n " shape="box"] 10 -> 9 ; -9 [label="9: BinaryOperatorStmt: Assign \n n$0=*&this:class Person * [line 18]\n n$1=*&k:int [line 18]\n *n$0.z:int =n$1 [line 18]\n REMOVE_TEMPS(n$0,n$1); [line 18]\n NULLIFY(&k); [line 18]\n NULLIFY(&this); [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +9 [label="9: BinaryOperatorStmt: Assign \n n$0=*&this:class Person * [line 18]\n n$1=*&k:int [line 18]\n *n$0.z:int =n$1 [line 18]\n " shape="box"] 9 -> 8 ; @@ -352,7 +352,7 @@ digraph iCFG { 7 -> 11 ; -6 [label="6: BinaryOperatorStmt: Assign \n n$0=*&this:class Person * [line 13]\n n$1=*&i:int [line 13]\n *n$0.x:int =n$1 [line 13]\n REMOVE_TEMPS(n$0,n$1); [line 13]\n NULLIFY(&i); [line 13]\n NULLIFY(&this); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="box"] +6 [label="6: BinaryOperatorStmt: Assign \n n$0=*&this:class Person * [line 13]\n n$1=*&i:int [line 13]\n *n$0.x:int =n$1 [line 13]\n " shape="box"] 6 -> 5 ; @@ -363,7 +363,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class Person * [line 12]\n *n$0.x:int =0 [line 12]\n REMOVE_TEMPS(n$0); [line 12]\n NULLIFY(&this); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +3 [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class Person * [line 12]\n *n$0.x:int =0 [line 12]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/constructors/constructor_struct_init_list.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/constructors/constructor_struct_init_list.cpp.dot index 75c7a8087..8ee6d4391 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/constructors/constructor_struct_init_list.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/constructors/constructor_struct_init_list.cpp.dot @@ -1,17 +1,17 @@ /* @generated */ digraph iCFG { -6 [label="6: DeclStmt \n *&SIL_init_list__n$0.top:int =0 [line 17]\n *&SIL_init_list__n$0.left:int =0 [line 17]\n *&SIL_init_list__n$0.bottom:int =0 [line 17]\n *&SIL_init_list__n$0.right:int =0 [line 17]\n _fun_Person_Person(&p:class Person *,&SIL_init_list__n$0:class Insets ) [line 17]\n NULLIFY(&SIL_init_list__n$0); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +6 [label="6: DeclStmt \n *&SIL_init_list__n$0.top:int =0 [line 17]\n *&SIL_init_list__n$0.left:int =0 [line 17]\n *&SIL_init_list__n$0.bottom:int =0 [line 17]\n *&SIL_init_list__n$0.right:int =0 [line 17]\n _fun_Person_Person(&p:class Person *,&SIL_init_list__n$0:class Insets ) [line 17]\n " shape="box"] 6 -> 5 ; -5 [label="5: Exit test \n NULLIFY(&p); [line 17]\n " color=yellow style=filled] +5 [label="5: Exit test \n " color=yellow style=filled] 4 [label="4: Start test\nFormals: \nLocals: p:class Person SIL_init_list__n$0:class Insets \n DECLARE_LOCALS(&return,&p,&SIL_init_list__n$0); [line 17]\n " color=yellow style=filled] 4 -> 6 ; -3 [label="3: Constructor Init \n n$0=*&this:class Person * [line 14]\n n$1=*&l:class Insets & [line 14]\n n$2=*n$1.top:int [line 14]\n *n$0.age:int =n$2 [line 14]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 14]\n NULLIFY(&l); [line 14]\n NULLIFY(&this); [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +3 [label="3: Constructor Init \n n$0=*&this:class Person * [line 14]\n n$1=*&l:class Insets & [line 14]\n n$2=*n$1.top:int [line 14]\n *n$0.age:int =n$2 [line 14]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/constructors/constructor_with_body.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/constructors/constructor_with_body.cpp.dot index 948a7969a..1baf2ea6c 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/constructors/constructor_with_body.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/constructors/constructor_with_body.cpp.dot @@ -4,11 +4,11 @@ digraph iCFG { 26 -> 25 ; -25 [label="25: Call _fun_X_div \n n$0=*&x:class X [line 40]\n n$1=_fun_X_div(&x:class X &) [line 40]\n REMOVE_TEMPS(n$0,n$1); [line 40]\n APPLY_ABSTRACTION; [line 40]\n " shape="box"] +25 [label="25: Call _fun_X_div \n n$0=*&x:class X [line 40]\n n$1=_fun_X_div(&x:class X &) [line 40]\n " shape="box"] 25 -> 24 ; -24 [label="24: Exit test_div1 \n NULLIFY(&x); [line 41]\n " color=yellow style=filled] +24 [label="24: Exit test_div1 \n " color=yellow style=filled] 23 [label="23: Start test_div1\nFormals: \nLocals: x:class X \n DECLARE_LOCALS(&return,&x); [line 38]\n " color=yellow style=filled] @@ -19,11 +19,11 @@ digraph iCFG { 22 -> 21 ; -21 [label="21: Call _fun_X_div \n n$0=*&x:class X [line 35]\n n$1=_fun_X_div(&x:class X &) [line 35]\n REMOVE_TEMPS(n$0,n$1); [line 35]\n APPLY_ABSTRACTION; [line 35]\n " shape="box"] +21 [label="21: Call _fun_X_div \n n$0=*&x:class X [line 35]\n n$1=_fun_X_div(&x:class X &) [line 35]\n " shape="box"] 21 -> 20 ; -20 [label="20: Exit test_div0_default_constructor \n NULLIFY(&x); [line 36]\n " color=yellow style=filled] +20 [label="20: Exit test_div0_default_constructor \n " color=yellow style=filled] 19 [label="19: Start test_div0_default_constructor\nFormals: \nLocals: x:class X \n DECLARE_LOCALS(&return,&x); [line 33]\n " color=yellow style=filled] @@ -34,26 +34,26 @@ digraph iCFG { 18 -> 17 ; -17 [label="17: Call _fun_X_div \n n$0=*&x:class X [line 30]\n n$1=_fun_X_div(&x:class X &) [line 30]\n REMOVE_TEMPS(n$0,n$1); [line 30]\n APPLY_ABSTRACTION; [line 30]\n " shape="box"] +17 [label="17: Call _fun_X_div \n n$0=*&x:class X [line 30]\n n$1=_fun_X_div(&x:class X &) [line 30]\n " shape="box"] 17 -> 16 ; -16 [label="16: Exit test_div0 \n NULLIFY(&x); [line 31]\n " color=yellow style=filled] +16 [label="16: Exit test_div0 \n " color=yellow style=filled] 15 [label="15: Start test_div0\nFormals: \nLocals: x:class X \n DECLARE_LOCALS(&return,&x); [line 28]\n " color=yellow style=filled] 15 -> 18 ; -14 [label="14: DeclStmt \n n$4=*&a:int [line 23]\n n$5=*&b:int [line 23]\n *&c:int =(n$4 + n$5) [line 23]\n REMOVE_TEMPS(n$4,n$5); [line 23]\n NULLIFY(&a); [line 23]\n NULLIFY(&b); [line 23]\n " shape="box"] +14 [label="14: DeclStmt \n n$4=*&a:int [line 23]\n n$5=*&b:int [line 23]\n *&c:int =(n$4 + n$5) [line 23]\n " shape="box"] 14 -> 13 ; -13 [label="13: Call _fun_X_init \n n$2=*&this:class X * [line 24]\n n$3=*n$2:class X [line 24]\n _fun_X_init(n$2:class X *) [line 24]\n REMOVE_TEMPS(n$2,n$3); [line 24]\n " shape="box"] +13 [label="13: Call _fun_X_init \n n$2=*&this:class X * [line 24]\n n$3=*n$2:class X [line 24]\n _fun_X_init(n$2:class X *) [line 24]\n " shape="box"] 13 -> 12 ; -12 [label="12: BinaryOperatorStmt: Assign \n n$0=*&this:class X * [line 25]\n n$1=*&c:int [line 25]\n *n$0.f:int =n$1 [line 25]\n REMOVE_TEMPS(n$0,n$1); [line 25]\n NULLIFY(&c); [line 25]\n NULLIFY(&this); [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="box"] +12 [label="12: BinaryOperatorStmt: Assign \n n$0=*&this:class X * [line 25]\n n$1=*&c:int [line 25]\n *n$0.f:int =n$1 [line 25]\n " shape="box"] 12 -> 11 ; @@ -64,7 +64,7 @@ digraph iCFG { 10 -> 14 ; -9 [label="9: Return Stmt \n n$0=*&this:class X * [line 19]\n n$1=*n$0.f:int [line 19]\n *&return:int =(1 / n$1) [line 19]\n REMOVE_TEMPS(n$0,n$1); [line 19]\n NULLIFY(&this); [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +9 [label="9: Return Stmt \n n$0=*&this:class X * [line 19]\n n$1=*n$0.f:int [line 19]\n *&return:int =(1 / n$1) [line 19]\n " shape="box"] 9 -> 8 ; @@ -75,7 +75,7 @@ digraph iCFG { 7 -> 9 ; -6 [label="6: Call _fun_X_init \n n$0=*&this:class X * [line 15]\n n$1=*n$0:class X [line 15]\n _fun_X_init(n$0:class X *) [line 15]\n REMOVE_TEMPS(n$0,n$1); [line 15]\n NULLIFY(&this); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +6 [label="6: Call _fun_X_init \n n$0=*&this:class X * [line 15]\n n$1=*n$0:class X [line 15]\n _fun_X_init(n$0:class X *) [line 15]\n " shape="box"] 6 -> 5 ; @@ -86,7 +86,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class X * [line 12]\n *n$0.f:int =0 [line 12]\n REMOVE_TEMPS(n$0); [line 12]\n NULLIFY(&this); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +3 [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class X * [line 12]\n *n$0.f:int =0 [line 12]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/constructors/copy_move_constructor.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/constructors/copy_move_constructor.cpp.dot index 1bf89f080..a1d8eb3e9 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/constructors/copy_move_constructor.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/constructors/copy_move_constructor.cpp.dot @@ -12,19 +12,19 @@ digraph iCFG { 63 -> 62 ; -62 [label="62: DeclStmt \n n$5=*&y2.f:int [line 76]\n *&d1:int =(1 / n$5) [line 76]\n REMOVE_TEMPS(n$5); [line 76]\n " shape="box"] +62 [label="62: DeclStmt \n n$5=*&y2.f:int [line 76]\n *&d1:int =(1 / n$5) [line 76]\n " shape="box"] 62 -> 61 ; -61 [label="61: DeclStmt \n _fun_getY(2:int ,&__temp_return_n$3:class Y *) [line 77]\n n$4=*&__temp_return_n$3.f:int [line 77]\n *&d2:int =(1 / n$4) [line 77]\n REMOVE_TEMPS(n$4); [line 77]\n " shape="box"] +61 [label="61: DeclStmt \n _fun_getY(2:int ,&__temp_return_n$3:class Y *) [line 77]\n n$4=*&__temp_return_n$3.f:int [line 77]\n *&d2:int =(1 / n$4) [line 77]\n " shape="box"] 61 -> 60 ; -60 [label="60: Return Stmt \n n$0=*&d1:int [line 78]\n n$1=*&d2:int [line 78]\n *&return:int =(n$0 + n$1) [line 78]\n REMOVE_TEMPS(n$0,n$1); [line 78]\n NULLIFY(&d1); [line 78]\n NULLIFY(&d2); [line 78]\n APPLY_ABSTRACTION; [line 78]\n " shape="box"] +60 [label="60: Return Stmt \n n$0=*&d1:int [line 78]\n n$1=*&d2:int [line 78]\n *&return:int =(n$0 + n$1) [line 78]\n " shape="box"] 60 -> 59 ; -59 [label="59: Exit copyY_moveY_div1 \n NULLIFY(&y2); [line 79]\n NULLIFY(&y1); [line 79]\n NULLIFY(&__temp_return_n$3); [line 79]\n " color=yellow style=filled] +59 [label="59: Exit copyY_moveY_div1 \n " color=yellow style=filled] 58 [label="58: Start copyY_moveY_div1\nFormals: \nLocals: d2:int __temp_return_n$3:class Y d1:int y2:class Y y1:class Y \n DECLARE_LOCALS(&return,&d2,&__temp_return_n$3,&d1,&y2,&y1); [line 72]\n " color=yellow style=filled] @@ -43,19 +43,19 @@ digraph iCFG { 55 -> 54 ; -54 [label="54: DeclStmt \n n$5=*&x2.f:int [line 67]\n *&d1:int =(1 / n$5) [line 67]\n REMOVE_TEMPS(n$5); [line 67]\n " shape="box"] +54 [label="54: DeclStmt \n n$5=*&x2.f:int [line 67]\n *&d1:int =(1 / n$5) [line 67]\n " shape="box"] 54 -> 53 ; -53 [label="53: DeclStmt \n _fun_getX(1:int ,&__temp_return_n$3:class X *) [line 68]\n n$4=*&__temp_return_n$3.f:int [line 68]\n *&d2:int =(1 / n$4) [line 68]\n REMOVE_TEMPS(n$4); [line 68]\n " shape="box"] +53 [label="53: DeclStmt \n _fun_getX(1:int ,&__temp_return_n$3:class X *) [line 68]\n n$4=*&__temp_return_n$3.f:int [line 68]\n *&d2:int =(1 / n$4) [line 68]\n " shape="box"] 53 -> 52 ; -52 [label="52: Return Stmt \n n$0=*&d1:int [line 69]\n n$1=*&d2:int [line 69]\n *&return:int =(n$0 + n$1) [line 69]\n REMOVE_TEMPS(n$0,n$1); [line 69]\n NULLIFY(&d1); [line 69]\n NULLIFY(&d2); [line 69]\n APPLY_ABSTRACTION; [line 69]\n " shape="box"] +52 [label="52: Return Stmt \n n$0=*&d1:int [line 69]\n n$1=*&d2:int [line 69]\n *&return:int =(n$0 + n$1) [line 69]\n " shape="box"] 52 -> 51 ; -51 [label="51: Exit copyX_moveX_div1 \n NULLIFY(&x2); [line 70]\n NULLIFY(&x1); [line 70]\n NULLIFY(&__temp_return_n$3); [line 70]\n " color=yellow style=filled] +51 [label="51: Exit copyX_moveX_div1 \n " color=yellow style=filled] 50 [label="50: Start copyX_moveX_div1\nFormals: \nLocals: d2:int __temp_return_n$3:class X d1:int x2:class X x1:class X \n DECLARE_LOCALS(&return,&d2,&__temp_return_n$3,&d1,&x2,&x1); [line 63]\n " color=yellow style=filled] @@ -70,22 +70,22 @@ digraph iCFG { 48 -> 47 ; -47 [label="47: Return Stmt \n n$0=*&y2.f:int [line 60]\n *&return:int =(1 / n$0) [line 60]\n REMOVE_TEMPS(n$0); [line 60]\n APPLY_ABSTRACTION; [line 60]\n " shape="box"] +47 [label="47: Return Stmt \n n$0=*&y2.f:int [line 60]\n *&return:int =(1 / n$0) [line 60]\n " shape="box"] 47 -> 46 ; -46 [label="46: Exit moveY_moveY_copyY_div0 \n NULLIFY(&y2); [line 61]\n NULLIFY(&y1); [line 61]\n NULLIFY(&SIL_materialize_temp__n$1); [line 61]\n " color=yellow style=filled] +46 [label="46: Exit moveY_moveY_copyY_div0 \n " color=yellow style=filled] 45 [label="45: Start moveY_moveY_copyY_div0\nFormals: \nLocals: y2:class Y y1:class Y SIL_materialize_temp__n$1:class Y \n DECLARE_LOCALS(&return,&y2,&y1,&SIL_materialize_temp__n$1); [line 57]\n " color=yellow style=filled] 45 -> 49 ; -44 [label="44: Return Stmt \n _fun_getY(1:int ,&__temp_return_n$1:class Y *) [line 55]\n n$2=*&__temp_return_n$1.f:int [line 55]\n *&return:int =(1 / n$2) [line 55]\n REMOVE_TEMPS(n$2); [line 55]\n APPLY_ABSTRACTION; [line 55]\n " shape="box"] +44 [label="44: Return Stmt \n _fun_getY(1:int ,&__temp_return_n$1:class Y *) [line 55]\n n$2=*&__temp_return_n$1.f:int [line 55]\n *&return:int =(1 / n$2) [line 55]\n " shape="box"] 44 -> 43 ; -43 [label="43: Exit moveY_div0 \n NULLIFY(&__temp_return_n$1); [line 55]\n " color=yellow style=filled] +43 [label="43: Exit moveY_div0 \n " color=yellow style=filled] 42 [label="42: Start moveY_div0\nFormals: \nLocals: __temp_return_n$1:class Y \n DECLARE_LOCALS(&return,&__temp_return_n$1); [line 55]\n " color=yellow style=filled] @@ -104,22 +104,22 @@ digraph iCFG { 39 -> 38 ; -38 [label="38: Return Stmt \n n$0=*&y2.f:int [line 52]\n *&return:int =(1 / n$0) [line 52]\n REMOVE_TEMPS(n$0); [line 52]\n APPLY_ABSTRACTION; [line 52]\n " shape="box"] +38 [label="38: Return Stmt \n n$0=*&y2.f:int [line 52]\n *&return:int =(1 / n$0) [line 52]\n " shape="box"] 38 -> 37 ; -37 [label="37: Exit copyY_div0 \n NULLIFY(&y2); [line 53]\n NULLIFY(&y1); [line 53]\n " color=yellow style=filled] +37 [label="37: Exit copyY_div0 \n " color=yellow style=filled] 36 [label="36: Start copyY_div0\nFormals: \nLocals: y2:class Y y1:class Y \n DECLARE_LOCALS(&return,&y2,&y1); [line 48]\n " color=yellow style=filled] 36 -> 41 ; -35 [label="35: Return Stmt \n _fun_getX(0:int ,&__temp_return_n$1:class X *) [line 46]\n n$2=*&__temp_return_n$1.f:int [line 46]\n *&return:int =(1 / n$2) [line 46]\n REMOVE_TEMPS(n$2); [line 46]\n APPLY_ABSTRACTION; [line 46]\n " shape="box"] +35 [label="35: Return Stmt \n _fun_getX(0:int ,&__temp_return_n$1:class X *) [line 46]\n n$2=*&__temp_return_n$1.f:int [line 46]\n *&return:int =(1 / n$2) [line 46]\n " shape="box"] 35 -> 34 ; -34 [label="34: Exit moveX_div0 \n NULLIFY(&__temp_return_n$1); [line 46]\n " color=yellow style=filled] +34 [label="34: Exit moveX_div0 \n " color=yellow style=filled] 33 [label="33: Start moveX_div0\nFormals: \nLocals: __temp_return_n$1:class X \n DECLARE_LOCALS(&return,&__temp_return_n$1); [line 46]\n " color=yellow style=filled] @@ -138,11 +138,11 @@ digraph iCFG { 30 -> 29 ; -29 [label="29: Return Stmt \n n$0=*&x2.f:int [line 43]\n *&return:int =(1 / n$0) [line 43]\n REMOVE_TEMPS(n$0); [line 43]\n APPLY_ABSTRACTION; [line 43]\n " shape="box"] +29 [label="29: Return Stmt \n n$0=*&x2.f:int [line 43]\n *&return:int =(1 / n$0) [line 43]\n " shape="box"] 29 -> 28 ; -28 [label="28: Exit copyX_div0 \n NULLIFY(&x2); [line 44]\n NULLIFY(&x1); [line 44]\n " color=yellow style=filled] +28 [label="28: Exit copyX_div0 \n " color=yellow style=filled] 27 [label="27: Start copyX_div0\nFormals: \nLocals: x2:class X x1:class X \n DECLARE_LOCALS(&return,&x2,&x1); [line 39]\n " color=yellow style=filled] @@ -153,15 +153,15 @@ digraph iCFG { 26 -> 25 ; -25 [label="25: BinaryOperatorStmt: Assign \n n$1=*&f:int [line 35]\n *&y.f:int =n$1 [line 35]\n REMOVE_TEMPS(n$1); [line 35]\n NULLIFY(&f); [line 35]\n " shape="box"] +25 [label="25: BinaryOperatorStmt: Assign \n n$1=*&f:int [line 35]\n *&y.f:int =n$1 [line 35]\n " shape="box"] 25 -> 24 ; -24 [label="24: Return Stmt \n n$0=*&__return_param:class Y * [line 36]\n _fun_Y_Y(n$0:class Y *,&y:class Y &) [line 36]\n REMOVE_TEMPS(n$0); [line 36]\n NULLIFY(&__return_param); [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="box"] +24 [label="24: Return Stmt \n n$0=*&__return_param:class Y * [line 36]\n _fun_Y_Y(n$0:class Y *,&y:class Y &) [line 36]\n " shape="box"] 24 -> 23 ; -23 [label="23: Exit getY \n NULLIFY(&y); [line 37]\n " color=yellow style=filled] +23 [label="23: Exit getY \n " color=yellow style=filled] 22 [label="22: Start getY\nFormals: f:int __return_param:class Y *\nLocals: y:class Y \n DECLARE_LOCALS(&return,&y); [line 33]\n " color=yellow style=filled] @@ -172,22 +172,22 @@ digraph iCFG { 21 -> 20 ; -20 [label="20: BinaryOperatorStmt: Assign \n n$1=*&f:int [line 29]\n *&x.f:int =n$1 [line 29]\n REMOVE_TEMPS(n$1); [line 29]\n NULLIFY(&f); [line 29]\n " shape="box"] +20 [label="20: BinaryOperatorStmt: Assign \n n$1=*&f:int [line 29]\n *&x.f:int =n$1 [line 29]\n " shape="box"] 20 -> 19 ; -19 [label="19: Return Stmt \n n$0=*&__return_param:class X * [line 30]\n _fun_X_X(n$0:class X *,&x:class X &) [line 30]\n REMOVE_TEMPS(n$0); [line 30]\n NULLIFY(&__return_param); [line 30]\n APPLY_ABSTRACTION; [line 30]\n " shape="box"] +19 [label="19: Return Stmt \n n$0=*&__return_param:class X * [line 30]\n _fun_X_X(n$0:class X *,&x:class X &) [line 30]\n " shape="box"] 19 -> 18 ; -18 [label="18: Exit getX \n NULLIFY(&x); [line 31]\n " color=yellow style=filled] +18 [label="18: Exit getX \n " color=yellow style=filled] 17 [label="17: Start getX\nFormals: f:int __return_param:class X *\nLocals: x:class X \n DECLARE_LOCALS(&return,&x); [line 27]\n " color=yellow style=filled] 17 -> 21 ; -16 [label="16: Constructor Init \n n$0=*&this:class Y * [line 24]\n n$1=*&y:class Y & [line 24]\n n$2=*n$1.f:int [line 24]\n *n$0.f:int =(n$2 - 1) [line 24]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 24]\n NULLIFY(&this); [line 24]\n NULLIFY(&y); [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +16 [label="16: Constructor Init \n n$0=*&this:class Y * [line 24]\n n$1=*&y:class Y & [line 24]\n n$2=*n$1.f:int [line 24]\n *n$0.f:int =(n$2 - 1) [line 24]\n " shape="box"] 16 -> 15 ; @@ -198,7 +198,7 @@ digraph iCFG { 14 -> 16 ; -13 [label="13: Constructor Init \n n$0=*&this:class Y * [line 22]\n n$1=*&y:class Y & [line 22]\n n$2=*n$1.f:int [line 22]\n *n$0.f:int =n$2 [line 22]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 22]\n NULLIFY(&this); [line 22]\n NULLIFY(&y); [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"] +13 [label="13: Constructor Init \n n$0=*&this:class Y * [line 22]\n n$1=*&y:class Y & [line 22]\n n$2=*n$1.f:int [line 22]\n *n$0.f:int =n$2 [line 22]\n " shape="box"] 13 -> 12 ; @@ -216,7 +216,7 @@ digraph iCFG { 9 -> 10 ; -8 [label="8: Constructor Init \n n$0=*&this:class X * [line 13]\n n$1=*&__param_0:class X & [line 13]\n n$2=*n$1.f:int [line 13]\n *n$0.f:int =n$2 [line 13]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 13]\n NULLIFY(&__param_0); [line 13]\n NULLIFY(&this); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="box"] +8 [label="8: Constructor Init \n n$0=*&this:class X * [line 13]\n n$1=*&__param_0:class X & [line 13]\n n$2=*n$1.f:int [line 13]\n *n$0.f:int =n$2 [line 13]\n " shape="box"] 8 -> 7 ; @@ -227,7 +227,7 @@ digraph iCFG { 6 -> 8 ; -5 [label="5: Constructor Init \n n$0=*&this:class X * [line 13]\n n$1=*&__param_0:class X & [line 13]\n n$2=*n$1.f:int [line 13]\n *n$0.f:int =n$2 [line 13]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 13]\n NULLIFY(&__param_0); [line 13]\n NULLIFY(&this); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="box"] +5 [label="5: Constructor Init \n n$0=*&this:class X * [line 13]\n n$1=*&__param_0:class X & [line 13]\n n$2=*n$1.f:int [line 13]\n *n$0.f:int =n$2 [line 13]\n " shape="box"] 5 -> 4 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/constructors/default_field_init.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/constructors/default_field_init.cpp.dot index 56dc02abc..c2bd60ce8 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/constructors/default_field_init.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/constructors/default_field_init.cpp.dot @@ -1,25 +1,25 @@ /* @generated */ digraph iCFG { -18 [label="18: DeclStmt \n _fun_Y_Y(&y:class Y *) [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="box"] +18 [label="18: DeclStmt \n _fun_Y_Y(&y:class Y *) [line 25]\n " shape="box"] 18 -> 17 ; -17 [label="17: Exit test \n NULLIFY(&y); [line 25]\n " color=yellow style=filled] +17 [label="17: Exit test \n " color=yellow style=filled] 16 [label="16: Start test\nFormals: \nLocals: y:class Y \n DECLARE_LOCALS(&return,&y); [line 25]\n " color=yellow style=filled] 16 -> 18 ; -15 [label="15: Constructor Init \n n$2=*&this:class Y * [line 20]\n _fun_X_X(n$2.x1:class X *,1:int ,2:int ) [line 20]\n REMOVE_TEMPS(n$2); [line 20]\n " shape="box"] +15 [label="15: Constructor Init \n n$2=*&this:class Y * [line 20]\n _fun_X_X(n$2.x1:class X *,1:int ,2:int ) [line 20]\n " shape="box"] 15 -> 14 ; -14 [label="14: Constructor Init \n n$1=*&this:class Y * [line 21]\n _fun_X_X(n$1.x2:class X *) [line 21]\n REMOVE_TEMPS(n$1); [line 21]\n " shape="box"] +14 [label="14: Constructor Init \n n$1=*&this:class Y * [line 21]\n _fun_X_X(n$1.x2:class X *) [line 21]\n " shape="box"] 14 -> 13 ; -13 [label="13: Constructor Init \n n$0=*&this:class Y * [line 19]\n _fun_X_X(n$0.x3:class X *) [line 19]\n REMOVE_TEMPS(n$0); [line 19]\n NULLIFY(&this); [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +13 [label="13: Constructor Init \n n$0=*&this:class Y * [line 19]\n _fun_X_X(n$0.x3:class X *) [line 19]\n " shape="box"] 13 -> 12 ; @@ -30,15 +30,15 @@ digraph iCFG { 11 -> 15 ; -10 [label="10: Constructor Init \n n$2=*&this:class X * [line 16]\n n$3=*&a:int [line 16]\n n$4=*&b:int [line 16]\n *n$2.a:int =(n$3 + n$4) [line 16]\n REMOVE_TEMPS(n$2,n$3,n$4); [line 16]\n NULLIFY(&a); [line 16]\n NULLIFY(&b); [line 16]\n " shape="box"] +10 [label="10: Constructor Init \n n$2=*&this:class X * [line 16]\n n$3=*&a:int [line 16]\n n$4=*&b:int [line 16]\n *n$2.a:int =(n$3 + n$4) [line 16]\n " shape="box"] 10 -> 9 ; -9 [label="9: Constructor Init \n n$1=*&this:class X * [line 12]\n *n$1.b:int =-2 [line 12]\n REMOVE_TEMPS(n$1); [line 12]\n " shape="box"] +9 [label="9: Constructor Init \n n$1=*&this:class X * [line 12]\n *n$1.b:int =-2 [line 12]\n " shape="box"] 9 -> 8 ; -8 [label="8: Constructor Init \n n$0=*&this:class X * [line 13]\n *n$0.c:int =0 [line 13]\n REMOVE_TEMPS(n$0); [line 13]\n NULLIFY(&this); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="box"] +8 [label="8: Constructor Init \n n$0=*&this:class X * [line 13]\n *n$0.c:int =0 [line 13]\n " shape="box"] 8 -> 7 ; @@ -49,15 +49,15 @@ digraph iCFG { 6 -> 10 ; -5 [label="5: Constructor Init \n n$2=*&this:class X * [line 11]\n *n$2.a:int =-1 [line 11]\n REMOVE_TEMPS(n$2); [line 11]\n " shape="box"] +5 [label="5: Constructor Init \n n$2=*&this:class X * [line 11]\n *n$2.a:int =-1 [line 11]\n " shape="box"] 5 -> 4 ; -4 [label="4: Constructor Init \n n$1=*&this:class X * [line 12]\n *n$1.b:int =-2 [line 12]\n REMOVE_TEMPS(n$1); [line 12]\n " shape="box"] +4 [label="4: Constructor Init \n n$1=*&this:class X * [line 12]\n *n$1.b:int =-2 [line 12]\n " shape="box"] 4 -> 3 ; -3 [label="3: Constructor Init \n n$0=*&this:class X * [line 13]\n *n$0.c:int =0 [line 13]\n REMOVE_TEMPS(n$0); [line 13]\n NULLIFY(&this); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="box"] +3 [label="3: Constructor Init \n n$0=*&this:class X * [line 13]\n *n$0.c:int =0 [line 13]\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 4162a41ce..e92b16261 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 @@ -1,34 +1,34 @@ /* @generated */ digraph iCFG { -11 [label="11: DeclStmt \n *&SIL_materialize_temp__n$0[0]:int =1 [line 24]\n *&SIL_materialize_temp__n$0[1]:int =2 [line 24]\n *&SIL_materialize_temp__n$0[2]:int =3 [line 24]\n *&SIL_materialize_temp__n$0[3]:int =4 [line 24]\n *&SIL_materialize_temp__n$0[4]:int =5 [line 24]\n n$1=_fun___infer_skip_function(&SIL_materialize_temp__n$0:int [5]) [line 24]\n _fun_X_X(&x:class X *,n$1:class std::initializer_list ) [line 24]\n REMOVE_TEMPS(n$1); [line 24]\n NULLIFY(&SIL_materialize_temp__n$0); [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +11 [label="11: DeclStmt \n *&SIL_materialize_temp__n$0[0]:int =1 [line 24]\n *&SIL_materialize_temp__n$0[1]:int =2 [line 24]\n *&SIL_materialize_temp__n$0[2]:int =3 [line 24]\n *&SIL_materialize_temp__n$0[3]:int =4 [line 24]\n *&SIL_materialize_temp__n$0[4]:int =5 [line 24]\n n$1=_fun___infer_skip_function(&SIL_materialize_temp__n$0:int [5]) [line 24]\n _fun_X_X(&x:class X *,n$1:class std::initializer_list ) [line 24]\n " shape="box"] 11 -> 10 ; -10 [label="10: Exit main \n NULLIFY(&x); [line 24]\n " color=yellow style=filled] +10 [label="10: Exit main \n " color=yellow style=filled] 9 [label="9: Start main\nFormals: \nLocals: x:class X SIL_materialize_temp__n$0:int [5] \n DECLARE_LOCALS(&return,&x,&SIL_materialize_temp__n$0); [line 24]\n " color=yellow style=filled] 9 -> 11 ; -8 [label="8: Prune (false branch) \n PRUNE(((n$4 != n$7) == 0), false); [line 15]\n REMOVE_TEMPS(n$4,n$7); [line 15]\n NULLIFY(&i); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="invhouse"] +8 [label="8: Prune (false branch) \n PRUNE(((n$4 != n$7) == 0), false); [line 15]\n " shape="invhouse"] 8 -> 2 ; -7 [label="7: Prune (true branch) \n PRUNE(((n$4 != n$7) != 0), true); [line 15]\n REMOVE_TEMPS(n$4,n$7); [line 15]\n " shape="invhouse"] +7 [label="7: Prune (true branch) \n PRUNE(((n$4 != n$7) != 0), true); [line 15]\n " shape="invhouse"] 7 -> 5 ; -6 [label="6: BinaryOperatorStmt: NE \n n$4=*&i:int * [line 15]\n n$5=*&list:class std::initializer_list & [line 15]\n n$6=*n$5:class std::initializer_list [line 15]\n n$7=_fun_std::initializer_list_end(n$5:class std::initializer_list &) [line 15]\n REMOVE_TEMPS(n$5,n$6); [line 15]\n " shape="box"] +6 [label="6: BinaryOperatorStmt: NE \n n$4=*&i:int * [line 15]\n n$5=*&list:class std::initializer_list & [line 15]\n n$6=*n$5:class std::initializer_list [line 15]\n n$7=_fun_std::initializer_list_end(n$5:class std::initializer_list &) [line 15]\n " shape="box"] 6 -> 7 ; 6 -> 8 ; -5 [label="5: UnaryOperator \n n$3=*&i:int * [line 15]\n *&i:int *=(n$3 + 1) [line 15]\n REMOVE_TEMPS(n$3); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +5 [label="5: UnaryOperator \n n$3=*&i:int * [line 15]\n *&i:int *=(n$3 + 1) [line 15]\n " shape="box"] 5 -> 3 ; -4 [label="4: DeclStmt \n n$0=*&list:class std::initializer_list & [line 15]\n n$1=*n$0:class std::initializer_list [line 15]\n n$2=_fun_std::initializer_list_begin(n$0:class std::initializer_list &) [line 15]\n *&i:int *=n$2 [line 15]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +4 [label="4: DeclStmt \n n$0=*&list:class std::initializer_list & [line 15]\n n$1=*n$0:class std::initializer_list [line 15]\n n$2=_fun_std::initializer_list_begin(n$0:class std::initializer_list &) [line 15]\n *&i:int *=n$2 [line 15]\n " shape="box"] 4 -> 3 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/constructors/temp_object.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/constructors/temp_object.cpp.dot index 3cc012923..f001bc22f 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/constructors/temp_object.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/constructors/temp_object.cpp.dot @@ -1,76 +1,76 @@ /* @generated */ digraph iCFG { -43 [label="43: Return Stmt \n _fun_getX(1:int ,0:int ,&__temp_return_n$1:class X *) [line 43]\n n$2=*&__temp_return_n$1.f:int [line 43]\n n$3=_fun_div(n$2:int ) [line 43]\n *&return:int =n$3 [line 43]\n REMOVE_TEMPS(n$2,n$3); [line 43]\n APPLY_ABSTRACTION; [line 43]\n " shape="box"] +43 [label="43: Return Stmt \n _fun_getX(1:int ,0:int ,&__temp_return_n$1:class X *) [line 43]\n n$2=*&__temp_return_n$1.f:int [line 43]\n n$3=_fun_div(n$2:int ) [line 43]\n *&return:int =n$3 [line 43]\n " shape="box"] 43 -> 42 ; -42 [label="42: Exit getX_field_div1 \n NULLIFY(&__temp_return_n$1); [line 43]\n " color=yellow style=filled] +42 [label="42: Exit getX_field_div1 \n " color=yellow style=filled] 41 [label="41: Start getX_field_div1\nFormals: \nLocals: __temp_return_n$1:class X \n DECLARE_LOCALS(&return,&__temp_return_n$1); [line 43]\n " color=yellow style=filled] 41 -> 43 ; -40 [label="40: Return Stmt \n _fun_X_X(&__temp_construct_n$0:class X *,1:int ,0:int ) [line 41]\n n$1=*&__temp_construct_n$0.f:int [line 41]\n n$2=_fun_div(n$1:int ) [line 41]\n *&return:int =n$2 [line 41]\n REMOVE_TEMPS(n$1,n$2); [line 41]\n APPLY_ABSTRACTION; [line 41]\n " shape="box"] +40 [label="40: Return Stmt \n _fun_X_X(&__temp_construct_n$0:class X *,1:int ,0:int ) [line 41]\n n$1=*&__temp_construct_n$0.f:int [line 41]\n n$2=_fun_div(n$1:int ) [line 41]\n *&return:int =n$2 [line 41]\n " shape="box"] 40 -> 39 ; -39 [label="39: Exit temp_field_div1 \n NULLIFY(&__temp_construct_n$0); [line 41]\n " color=yellow style=filled] +39 [label="39: Exit temp_field_div1 \n " color=yellow style=filled] 38 [label="38: Start temp_field_div1\nFormals: \nLocals: __temp_construct_n$0:class X \n DECLARE_LOCALS(&return,&__temp_construct_n$0); [line 41]\n " color=yellow style=filled] 38 -> 40 ; -37 [label="37: Return Stmt \n _fun_getX(0:int ,1:int ,&__temp_return_n$1:class X *) [line 39]\n n$2=_fun_X_div(&__temp_return_n$1:class X &) [line 39]\n *&return:int =n$2 [line 39]\n REMOVE_TEMPS(n$2); [line 39]\n APPLY_ABSTRACTION; [line 39]\n " shape="box"] +37 [label="37: Return Stmt \n _fun_getX(0:int ,1:int ,&__temp_return_n$1:class X *) [line 39]\n n$2=_fun_X_div(&__temp_return_n$1:class X &) [line 39]\n *&return:int =n$2 [line 39]\n " shape="box"] 37 -> 36 ; -36 [label="36: Exit getX_method_div0 \n NULLIFY(&__temp_return_n$1); [line 39]\n " color=yellow style=filled] +36 [label="36: Exit getX_method_div0 \n " color=yellow style=filled] 35 [label="35: Start getX_method_div0\nFormals: \nLocals: __temp_return_n$1:class X \n DECLARE_LOCALS(&return,&__temp_return_n$1); [line 39]\n " color=yellow style=filled] 35 -> 37 ; -34 [label="34: Return Stmt \n _fun_getX(0:int ,1:int ,&__temp_return_n$1:class X *) [line 37]\n n$2=*&__temp_return_n$1.f:int [line 37]\n n$3=_fun_div(n$2:int ) [line 37]\n *&return:int =n$3 [line 37]\n REMOVE_TEMPS(n$2,n$3); [line 37]\n APPLY_ABSTRACTION; [line 37]\n " shape="box"] +34 [label="34: Return Stmt \n _fun_getX(0:int ,1:int ,&__temp_return_n$1:class X *) [line 37]\n n$2=*&__temp_return_n$1.f:int [line 37]\n n$3=_fun_div(n$2:int ) [line 37]\n *&return:int =n$3 [line 37]\n " shape="box"] 34 -> 33 ; -33 [label="33: Exit getX_field_div0 \n NULLIFY(&__temp_return_n$1); [line 37]\n " color=yellow style=filled] +33 [label="33: Exit getX_field_div0 \n " color=yellow style=filled] 32 [label="32: Start getX_field_div0\nFormals: \nLocals: __temp_return_n$1:class X \n DECLARE_LOCALS(&return,&__temp_return_n$1); [line 37]\n " color=yellow style=filled] 32 -> 34 ; -31 [label="31: Return Stmt \n _fun_X_X(&__temp_construct_n$0:class X *,0:int ,1:int ) [line 35]\n n$1=_fun_X_div(&__temp_construct_n$0:class X &) [line 35]\n *&return:int =n$1 [line 35]\n REMOVE_TEMPS(n$1); [line 35]\n APPLY_ABSTRACTION; [line 35]\n " shape="box"] +31 [label="31: Return Stmt \n _fun_X_X(&__temp_construct_n$0:class X *,0:int ,1:int ) [line 35]\n n$1=_fun_X_div(&__temp_construct_n$0:class X &) [line 35]\n *&return:int =n$1 [line 35]\n " shape="box"] 31 -> 30 ; -30 [label="30: Exit temp_method_div0 \n NULLIFY(&__temp_construct_n$0); [line 35]\n " color=yellow style=filled] +30 [label="30: Exit temp_method_div0 \n " color=yellow style=filled] 29 [label="29: Start temp_method_div0\nFormals: \nLocals: __temp_construct_n$0:class X \n DECLARE_LOCALS(&return,&__temp_construct_n$0); [line 35]\n " color=yellow style=filled] 29 -> 31 ; -28 [label="28: Return Stmt \n _fun_X_X(&__temp_construct_n$0:class X *,0:int ) [line 33]\n n$1=*&__temp_construct_n$0.f:int [line 33]\n n$2=_fun_div(n$1:int ) [line 33]\n *&return:int =n$2 [line 33]\n REMOVE_TEMPS(n$1,n$2); [line 33]\n APPLY_ABSTRACTION; [line 33]\n " shape="box"] +28 [label="28: Return Stmt \n _fun_X_X(&__temp_construct_n$0:class X *,0:int ) [line 33]\n n$1=*&__temp_construct_n$0.f:int [line 33]\n n$2=_fun_div(n$1:int ) [line 33]\n *&return:int =n$2 [line 33]\n " shape="box"] 28 -> 27 ; -27 [label="27: Exit temp_field2_div0 \n NULLIFY(&__temp_construct_n$0); [line 33]\n " color=yellow style=filled] +27 [label="27: Exit temp_field2_div0 \n " color=yellow style=filled] 26 [label="26: Start temp_field2_div0\nFormals: \nLocals: __temp_construct_n$0:class X \n DECLARE_LOCALS(&return,&__temp_construct_n$0); [line 33]\n " color=yellow style=filled] 26 -> 28 ; -25 [label="25: Return Stmt \n _fun_X_X(&__temp_construct_n$0:class X *,0:int ,1:int ) [line 31]\n n$1=*&__temp_construct_n$0.f:int [line 31]\n n$2=_fun_div(n$1:int ) [line 31]\n *&return:int =n$2 [line 31]\n REMOVE_TEMPS(n$1,n$2); [line 31]\n APPLY_ABSTRACTION; [line 31]\n " shape="box"] +25 [label="25: Return Stmt \n _fun_X_X(&__temp_construct_n$0:class X *,0:int ,1:int ) [line 31]\n n$1=*&__temp_construct_n$0.f:int [line 31]\n n$2=_fun_div(n$1:int ) [line 31]\n *&return:int =n$2 [line 31]\n " shape="box"] 25 -> 24 ; -24 [label="24: Exit temp_field_div0 \n NULLIFY(&__temp_construct_n$0); [line 31]\n " color=yellow style=filled] +24 [label="24: Exit temp_field_div0 \n " color=yellow style=filled] 23 [label="23: Start temp_field_div0\nFormals: \nLocals: __temp_construct_n$0:class X \n DECLARE_LOCALS(&return,&__temp_construct_n$0); [line 31]\n " color=yellow style=filled] @@ -81,29 +81,29 @@ digraph iCFG { 22 -> 21 ; -21 [label="21: Return Stmt \n n$0=*&x:class X [line 28]\n n$1=_fun_X_div(&x:class X &) [line 28]\n *&return:int =n$1 [line 28]\n REMOVE_TEMPS(n$0,n$1); [line 28]\n APPLY_ABSTRACTION; [line 28]\n " shape="box"] +21 [label="21: Return Stmt \n n$0=*&x:class X [line 28]\n n$1=_fun_X_div(&x:class X &) [line 28]\n *&return:int =n$1 [line 28]\n " shape="box"] 21 -> 20 ; -20 [label="20: Exit assign_temp_div0 \n NULLIFY(&x); [line 29]\n NULLIFY(&SIL_materialize_temp__n$2); [line 29]\n " color=yellow style=filled] +20 [label="20: Exit assign_temp_div0 \n " color=yellow style=filled] 19 [label="19: Start assign_temp_div0\nFormals: \nLocals: x:class X SIL_materialize_temp__n$2:class X \n DECLARE_LOCALS(&return,&x,&SIL_materialize_temp__n$2); [line 26]\n " color=yellow style=filled] 19 -> 22 ; -18 [label="18: Return Stmt \n n$0=*&__return_param:class X * [line 24]\n n$2=*&a:int [line 24]\n n$3=*&b:int [line 24]\n _fun_X_X(&SIL_materialize_temp__n$1:class X *,n$2:int ,n$3:int ) [line 24]\n _fun_X_X(n$0:class X *,&SIL_materialize_temp__n$1:class X &) [line 24]\n REMOVE_TEMPS(n$0,n$2,n$3); [line 24]\n NULLIFY(&__return_param); [line 24]\n NULLIFY(&a); [line 24]\n NULLIFY(&b); [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +18 [label="18: Return Stmt \n n$0=*&__return_param:class X * [line 24]\n n$2=*&a:int [line 24]\n n$3=*&b:int [line 24]\n _fun_X_X(&SIL_materialize_temp__n$1:class X *,n$2:int ,n$3:int ) [line 24]\n _fun_X_X(n$0:class X *,&SIL_materialize_temp__n$1:class X &) [line 24]\n " shape="box"] 18 -> 17 ; -17 [label="17: Exit getX \n NULLIFY(&SIL_materialize_temp__n$1); [line 24]\n " color=yellow style=filled] +17 [label="17: Exit getX \n " color=yellow style=filled] 16 [label="16: Start getX\nFormals: a:int b:int __return_param:class X *\nLocals: SIL_materialize_temp__n$1:class X \n DECLARE_LOCALS(&return,&SIL_materialize_temp__n$1); [line 24]\n " color=yellow style=filled] 16 -> 18 ; -15 [label="15: Return Stmt \n n$0=*&f:int [line 19]\n *&return:int =(1 / n$0) [line 19]\n REMOVE_TEMPS(n$0); [line 19]\n NULLIFY(&f); [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +15 [label="15: Return Stmt \n n$0=*&f:int [line 19]\n *&return:int =(1 / n$0) [line 19]\n " shape="box"] 15 -> 14 ; @@ -114,7 +114,7 @@ digraph iCFG { 13 -> 15 ; -12 [label="12: Return Stmt \n n$0=*&this:class X * [line 16]\n n$1=*n$0.f:int [line 16]\n *&return:int =(1 / n$1) [line 16]\n REMOVE_TEMPS(n$0,n$1); [line 16]\n NULLIFY(&this); [line 16]\n APPLY_ABSTRACTION; [line 16]\n " shape="box"] +12 [label="12: Return Stmt \n n$0=*&this:class X * [line 16]\n n$1=*n$0.f:int [line 16]\n *&return:int =(1 / n$1) [line 16]\n " shape="box"] 12 -> 11 ; @@ -125,7 +125,7 @@ digraph iCFG { 10 -> 12 ; -9 [label="9: BinaryOperatorStmt: Assign \n n$0=*&this:class X * [line 14]\n n$1=*&x:class X & [line 14]\n n$2=*n$1.f:int [line 14]\n *n$0.f:int =n$2 [line 14]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 14]\n NULLIFY(&this); [line 14]\n NULLIFY(&x); [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +9 [label="9: BinaryOperatorStmt: Assign \n n$0=*&this:class X * [line 14]\n n$1=*&x:class X & [line 14]\n n$2=*n$1.f:int [line 14]\n *n$0.f:int =n$2 [line 14]\n " shape="box"] 9 -> 8 ; @@ -136,7 +136,7 @@ digraph iCFG { 7 -> 9 ; -6 [label="6: BinaryOperatorStmt: Assign \n n$0=*&this:class X * [line 12]\n n$1=*&a:int [line 12]\n *n$0.f:int =n$1 [line 12]\n REMOVE_TEMPS(n$0,n$1); [line 12]\n NULLIFY(&a); [line 12]\n NULLIFY(&this); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +6 [label="6: BinaryOperatorStmt: Assign \n n$0=*&this:class X * [line 12]\n n$1=*&a:int [line 12]\n *n$0.f:int =n$1 [line 12]\n " shape="box"] 6 -> 5 ; @@ -147,7 +147,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class X * [line 11]\n n$1=*&a:int [line 11]\n *n$0.f:int =n$1 [line 11]\n REMOVE_TEMPS(n$0,n$1); [line 11]\n NULLIFY(&a); [line 11]\n NULLIFY(&this); [line 11]\n APPLY_ABSTRACTION; [line 11]\n " shape="box"] +3 [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class X * [line 11]\n n$1=*&a:int [line 11]\n *n$0.f:int =n$1 [line 11]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/destructors/call_destructor.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/destructors/call_destructor.cpp.dot index 9b6eca486..d037c3372 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/destructors/call_destructor.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/destructors/call_destructor.cpp.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -3 [label="3: Call _fun_Person_~Person \n n$0=*&p:class Person * [line 15]\n n$1=*n$0:class Person [line 15]\n _fun_Person_~Person(n$0:class Person *) [line 15]\n REMOVE_TEMPS(n$0,n$1); [line 15]\n NULLIFY(&p); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +3 [label="3: Call _fun_Person_~Person \n n$0=*&p:class Person * [line 15]\n n$1=*n$0:class Person [line 15]\n _fun_Person_~Person(n$0:class Person *) [line 15]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/destructors/call_on_delete.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/destructors/call_on_delete.cpp.dot index bf7c4e4a5..166c2cdba 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/destructors/call_on_delete.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/destructors/call_on_delete.cpp.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -8 [label="8: Call delete \n n$0=*&x:int * [line 16]\n _fun___delete(n$0:int *) [line 16]\n REMOVE_TEMPS(n$0); [line 16]\n NULLIFY(&x); [line 16]\n APPLY_ABSTRACTION; [line 16]\n " shape="box"] +8 [label="8: Call delete \n n$0=*&x:int * [line 16]\n _fun___delete(n$0:int *) [line 16]\n " shape="box"] 8 -> 7 ; @@ -11,7 +11,7 @@ digraph iCFG { 6 -> 8 ; -5 [label="5: Call delete \n n$0=*&x:class X * [line 14]\n n$1=*n$0:class X [line 14]\n _fun_X_~X(n$0:class X *) [line 14]\n _fun___delete(n$0:class X *) [line 14]\n REMOVE_TEMPS(n$0,n$1); [line 14]\n NULLIFY(&x); [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +5 [label="5: Call delete \n n$0=*&x:class X * [line 14]\n n$1=*n$0:class X [line 14]\n _fun_X_~X(n$0:class X *) [line 14]\n _fun___delete(n$0:class X *) [line 14]\n " shape="box"] 5 -> 4 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/destructors/pseudo_destructor_expr.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/destructors/pseudo_destructor_expr.cpp.dot index 397d670cd..31cc077dd 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/destructors/pseudo_destructor_expr.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/destructors/pseudo_destructor_expr.cpp.dot @@ -4,11 +4,11 @@ digraph iCFG { 13 -> 12 ; -12 [label="12: Call _fun_destroy \n n$0=_fun_destroy(&t:int **) [line 25]\n REMOVE_TEMPS(n$0); [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="box"] +12 [label="12: Call _fun_destroy \n n$0=_fun_destroy(&t:int **) [line 25]\n " shape="box"] 12 -> 11 ; -11 [label="11: Exit test \n NULLIFY(&t); [line 26]\n " color=yellow style=filled] +11 [label="11: Exit test \n " color=yellow style=filled] 10 [label="10: Start test\nFormals: \nLocals: t:int * \n DECLARE_LOCALS(&return,&t); [line 23]\n " color=yellow style=filled] @@ -19,7 +19,7 @@ digraph iCFG { 9 -> 8 ; -8 [label="8: Return Stmt \n *&return:int =0 [line 20]\n APPLY_ABSTRACTION; [line 20]\n " shape="box"] +8 [label="8: Return Stmt \n *&return:int =0 [line 20]\n " shape="box"] 8 -> 7 ; @@ -30,7 +30,7 @@ digraph iCFG { 6 -> 9 ; -5 [label="5: DeclStmt \n n$1=*&p:int * [line 12]\n n$2=*n$1:int [line 12]\n *&x:int =n$2 [line 12]\n REMOVE_TEMPS(n$1,n$2); [line 12]\n NULLIFY(&p); [line 12]\n " shape="box"] +5 [label="5: DeclStmt \n n$1=*&p:int * [line 12]\n n$2=*n$1:int [line 12]\n *&x:int =n$2 [line 12]\n " shape="box"] 5 -> 4 ; @@ -38,7 +38,7 @@ digraph iCFG { 4 -> 3 ; -3 [label="3: Return Stmt \n n$0=*&x:int [line 14]\n *&return:int =n$0 [line 14]\n REMOVE_TEMPS(n$0); [line 14]\n NULLIFY(&x); [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&x:int [line 14]\n *&return:int =n$0 [line 14]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/destructors/simple_decl.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/destructors/simple_decl.cpp.dot index a6938638d..169755e13 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/destructors/simple_decl.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/destructors/simple_decl.cpp.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -6 [label="6: BinaryOperatorStmt: Assign \n n$0=*&this:class B * [line 20]\n *n$0.f:int =1 [line 20]\n REMOVE_TEMPS(n$0); [line 20]\n NULLIFY(&this); [line 20]\n APPLY_ABSTRACTION; [line 20]\n " shape="box"] +6 [label="6: BinaryOperatorStmt: Assign \n n$0=*&this:class B * [line 20]\n *n$0.f:int =1 [line 20]\n " shape="box"] 6 -> 5 ; @@ -11,7 +11,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class A * [line 12]\n *n$0.f:int =0 [line 12]\n REMOVE_TEMPS(n$0); [line 12]\n NULLIFY(&this); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +3 [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class A * [line 12]\n *n$0.f:int =0 [line 12]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/exceptions/Exceptions.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/exceptions/Exceptions.cpp.dot index e1b5ac035..313580ea6 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/exceptions/Exceptions.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/exceptions/Exceptions.cpp.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -17 [label="17: Return Stmt \n n$0=_fun_deref(0:int *) [line 28]\n *&return:int =n$0 [line 28]\n REMOVE_TEMPS(n$0); [line 28]\n APPLY_ABSTRACTION; [line 28]\n " shape="box"] +17 [label="17: Return Stmt \n n$0=_fun_deref(0:int *) [line 28]\n *&return:int =n$0 [line 28]\n " shape="box"] 17 -> 16 ; @@ -11,7 +11,7 @@ digraph iCFG { 15 -> 17 ; -14 [label="14: Call _fun_deref_null \n n$0=_fun_deref_null(null:int *) [line 24]\n REMOVE_TEMPS(n$0); [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +14 [label="14: Call _fun_deref_null \n n$0=_fun_deref_null(null:int *) [line 24]\n " shape="box"] 14 -> 13 ; @@ -22,7 +22,7 @@ digraph iCFG { 12 -> 14 ; -11 [label="11: Return Stmt \n n$0=*&p:int * [line 19]\n n$1=*n$0:int [line 19]\n *&return:int =n$1 [line 19]\n REMOVE_TEMPS(n$0,n$1); [line 19]\n NULLIFY(&p); [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +11 [label="11: Return Stmt \n n$0=*&p:int * [line 19]\n n$1=*n$0:int [line 19]\n *&return:int =n$1 [line 19]\n " shape="box"] 11 -> 10 ; @@ -33,15 +33,15 @@ digraph iCFG { 9 -> 11 ; -8 [label="8: Return Stmt \n *&return:int =\"Null pointer!\" [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +8 [label="8: Return Stmt \n *&return:int =\"Null pointer!\" [line 12]\n " shape="box"] 8 -> 2 ; -7 [label="7: Prune (false branch) \n PRUNE(((n$2 == 0) == 0), false); [line 11]\n REMOVE_TEMPS(n$2); [line 11]\n " shape="invhouse"] +7 [label="7: Prune (false branch) \n PRUNE(((n$2 == 0) == 0), false); [line 11]\n " shape="invhouse"] 7 -> 4 ; -6 [label="6: Prune (true branch) \n PRUNE(((n$2 == 0) != 0), true); [line 11]\n REMOVE_TEMPS(n$2); [line 11]\n " shape="invhouse"] +6 [label="6: Prune (true branch) \n PRUNE(((n$2 == 0) != 0), true); [line 11]\n " shape="invhouse"] 6 -> 8 ; @@ -54,7 +54,7 @@ digraph iCFG { 4 -> 3 ; -3 [label="3: Return Stmt \n n$0=*&p:int * [line 14]\n n$1=*n$0:int [line 14]\n *&return:int =n$1 [line 14]\n REMOVE_TEMPS(n$0,n$1); [line 14]\n NULLIFY(&p); [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&p:int * [line 14]\n n$1=*n$0:int [line 14]\n *&return:int =n$1 [line 14]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/include_header/include_only.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/include_header/include_only.cpp.dot index 42b460e18..b533a9060 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/include_header/include_only.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/include_header/include_only.cpp.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -6 [label="6: Return Stmt \n *&return:int =(1 / 0) [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +6 [label="6: Return Stmt \n *&return:int =(1 / 0) [line 19]\n " shape="box"] 6 -> 5 ; @@ -11,7 +11,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: Return Stmt \n *&return:int =(1 / 0) [line 11]\n APPLY_ABSTRACTION; [line 11]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =(1 / 0) [line 11]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/include_header/include_templ.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/include_header/include_templ.cpp.dot index 9099cdc19..f625396bc 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/include_header/include_templ.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/include_header/include_templ.cpp.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -36 [label="36: Call _fun_div0_templ \n n$0=_fun_div0_templ() [line 25]\n REMOVE_TEMPS(n$0); [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="box"] +36 [label="36: Call _fun_div0_templ \n n$0=_fun_div0_templ() [line 25]\n " shape="box"] 36 -> 35 ; @@ -11,7 +11,7 @@ digraph iCFG { 34 -> 36 ; -33 [label="33: Call _fun_div0_templ \n n$0=_fun_div0_templ() [line 23]\n REMOVE_TEMPS(n$0); [line 23]\n APPLY_ABSTRACTION; [line 23]\n " shape="box"] +33 [label="33: Call _fun_div0_templ \n n$0=_fun_div0_templ() [line 23]\n " shape="box"] 33 -> 32 ; @@ -26,11 +26,11 @@ digraph iCFG { 30 -> 29 ; -29 [label="29: Call _fun_B_div0 \n n$0=*&b:class B [line 20]\n n$1=_fun_B_div0(&b:class B &) [line 20]\n REMOVE_TEMPS(n$0,n$1); [line 20]\n APPLY_ABSTRACTION; [line 20]\n " shape="box"] +29 [label="29: Call _fun_B_div0 \n n$0=*&b:class B [line 20]\n n$1=_fun_B_div0(&b:class B &) [line 20]\n " shape="box"] 29 -> 28 ; -28 [label="28: Exit div0_B_A \n NULLIFY(&b); [line 21]\n " color=yellow style=filled] +28 [label="28: Exit div0_B_A \n " color=yellow style=filled] 27 [label="27: Start div0_B_A\nFormals: \nLocals: b:class B \n DECLARE_LOCALS(&return,&b); [line 18]\n " color=yellow style=filled] @@ -41,18 +41,18 @@ digraph iCFG { 26 -> 25 ; -25 [label="25: Call _fun_B_div0 \n n$0=*&b:class B [line 15]\n n$1=_fun_B_div0(&b:class B &) [line 15]\n REMOVE_TEMPS(n$0,n$1); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +25 [label="25: Call _fun_B_div0 \n n$0=*&b:class B [line 15]\n n$1=_fun_B_div0(&b:class B &) [line 15]\n " shape="box"] 25 -> 24 ; -24 [label="24: Exit div0_B_int \n NULLIFY(&b); [line 16]\n " color=yellow style=filled] +24 [label="24: Exit div0_B_int \n " color=yellow style=filled] 23 [label="23: Start div0_B_int\nFormals: \nLocals: b:class B \n DECLARE_LOCALS(&return,&b); [line 13]\n " color=yellow style=filled] 23 -> 26 ; -22 [label="22: Return Stmt \n *&return:int =(1 / 0) [line 23]\n APPLY_ABSTRACTION; [line 23]\n " shape="box"] +22 [label="22: Return Stmt \n *&return:int =(1 / 0) [line 23]\n " shape="box"] 22 -> 21 ; @@ -63,7 +63,7 @@ digraph iCFG { 20 -> 22 ; -19 [label="19: Return Stmt \n *&return:int =(1 / 0) [line 23]\n APPLY_ABSTRACTION; [line 23]\n " shape="box"] +19 [label="19: Return Stmt \n *&return:int =(1 / 0) [line 23]\n " shape="box"] 19 -> 18 ; @@ -74,7 +74,7 @@ digraph iCFG { 17 -> 19 ; -16 [label="16: Return Stmt \n *&return:int =(1 / 0) [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +16 [label="16: Return Stmt \n *&return:int =(1 / 0) [line 19]\n " shape="box"] 16 -> 15 ; @@ -92,7 +92,7 @@ digraph iCFG { 12 -> 13 ; -11 [label="11: Return Stmt \n *&return:int =(1 / 0) [line 16]\n APPLY_ABSTRACTION; [line 16]\n " shape="box"] +11 [label="11: Return Stmt \n *&return:int =(1 / 0) [line 16]\n " shape="box"] 11 -> 10 ; @@ -110,7 +110,7 @@ digraph iCFG { 7 -> 8 ; -6 [label="6: Return Stmt \n *&return:int =(1 / 0) [line 16]\n APPLY_ABSTRACTION; [line 16]\n " shape="box"] +6 [label="6: Return Stmt \n *&return:int =(1 / 0) [line 16]\n " shape="box"] 6 -> 5 ; @@ -121,7 +121,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: Return Stmt \n *&return:int =(1 / 0) [line 11]\n APPLY_ABSTRACTION; [line 11]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =(1 / 0) [line 11]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/keywords/self_parameter.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/keywords/self_parameter.cpp.dot index b9e1e1311..3a0676450 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/keywords/self_parameter.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/keywords/self_parameter.cpp.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -9 [label="9: Return Stmt \n n$0=*&a:class A * [line 17]\n n$1=*n$0:class A [line 17]\n n$2=_fun_A_meth_with_self(n$0:class A *,1:int ,2:int ) [line 17]\n n$3=_fun_fun_with_self(10:int ) [line 17]\n *&return:int =(n$2 + n$3) [line 17]\n REMOVE_TEMPS(n$0,n$1,n$2,n$3); [line 17]\n NULLIFY(&a); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +9 [label="9: Return Stmt \n n$0=*&a:class A * [line 17]\n n$1=*n$0:class A [line 17]\n n$2=_fun_A_meth_with_self(n$0:class A *,1:int ,2:int ) [line 17]\n n$3=_fun_fun_with_self(10:int ) [line 17]\n *&return:int =(n$2 + n$3) [line 17]\n " shape="box"] 9 -> 8 ; @@ -11,7 +11,7 @@ digraph iCFG { 7 -> 9 ; -6 [label="6: Return Stmt \n n$0=*&self:int [line 15]\n *&return:int =n$0 [line 15]\n REMOVE_TEMPS(n$0); [line 15]\n NULLIFY(&self); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +6 [label="6: Return Stmt \n n$0=*&self:int [line 15]\n *&return:int =n$0 [line 15]\n " shape="box"] 6 -> 5 ; @@ -22,7 +22,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: Return Stmt \n n$0=*&self:int [line 12]\n n$1=*&b:int [line 12]\n *&return:int =(n$0 + n$1) [line 12]\n REMOVE_TEMPS(n$0,n$1); [line 12]\n NULLIFY(&b); [line 12]\n NULLIFY(&self); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&self:int [line 12]\n n$1=*&b:int [line 12]\n *&return:int =(n$0 + n$1) [line 12]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/literals/nullptr.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/literals/nullptr.cpp.dot index 12cf0a9a2..1b7f8032d 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/literals/nullptr.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/literals/nullptr.cpp.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -3 [label="3: Return Stmt \n *&return:int *=null [line 10]\n APPLY_ABSTRACTION; [line 10]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int *=null [line 10]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/literals/scalar_value_init.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/literals/scalar_value_init.cpp.dot index 6c3673fcd..e9e72899f 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/literals/scalar_value_init.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/literals/scalar_value_init.cpp.dot @@ -1,14 +1,14 @@ /* @generated */ digraph iCFG { -23 [label="23: DeclStmt \n n$3=_fun_get() [line 18]\n *&i:int =n$3 [line 18]\n REMOVE_TEMPS(n$3); [line 18]\n NULLIFY(&i); [line 18]\n " shape="box"] +23 [label="23: DeclStmt \n n$3=_fun_get() [line 18]\n *&i:int =n$3 [line 18]\n " shape="box"] 23 -> 22 ; -22 [label="22: DeclStmt \n n$2=_fun_get() [line 19]\n *&f:float =n$2 [line 19]\n REMOVE_TEMPS(n$2); [line 19]\n NULLIFY(&f); [line 19]\n " shape="box"] +22 [label="22: DeclStmt \n n$2=_fun_get() [line 19]\n *&f:float =n$2 [line 19]\n " shape="box"] 22 -> 21 ; -21 [label="21: DeclStmt \n n$1=_fun_get() [line 20]\n *&fp:float *=n$1 [line 20]\n REMOVE_TEMPS(n$1); [line 20]\n NULLIFY(&fp); [line 20]\n " shape="box"] +21 [label="21: DeclStmt \n n$1=_fun_get() [line 20]\n *&fp:float *=n$1 [line 20]\n " shape="box"] 21 -> 20 ; @@ -16,11 +16,11 @@ digraph iCFG { 20 -> 19 ; -19 [label="19: DeclStmt \n n$0=_fun_get() [line 22]\n *&x:int =n$0 [line 22]\n REMOVE_TEMPS(n$0); [line 22]\n NULLIFY(&x); [line 22]\n " shape="box"] +19 [label="19: DeclStmt \n n$0=_fun_get() [line 22]\n *&x:int =n$0 [line 22]\n " shape="box"] 19 -> 18 ; -18 [label="18: DeclStmt \n *&f2:float =0.000000 [line 23]\n NULLIFY(&f2); [line 23]\n APPLY_ABSTRACTION; [line 23]\n " shape="box"] +18 [label="18: DeclStmt \n *&f2:float =0.000000 [line 23]\n " shape="box"] 18 -> 17 ; @@ -31,7 +31,7 @@ digraph iCFG { 16 -> 23 ; -15 [label="15: Return Stmt \n *&return:int =0 [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +15 [label="15: Return Stmt \n *&return:int =0 [line 14]\n " shape="box"] 15 -> 14 ; @@ -42,7 +42,7 @@ digraph iCFG { 13 -> 15 ; -12 [label="12: Return Stmt \n *&return:void =-1 [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +12 [label="12: Return Stmt \n *&return:void =-1 [line 14]\n " shape="box"] 12 -> 11 ; @@ -53,7 +53,7 @@ digraph iCFG { 10 -> 12 ; -9 [label="9: Return Stmt \n *&return:float *=null [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +9 [label="9: Return Stmt \n *&return:float *=null [line 14]\n " shape="box"] 9 -> 8 ; @@ -64,7 +64,7 @@ digraph iCFG { 7 -> 9 ; -6 [label="6: Return Stmt \n *&return:float =0.000000 [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +6 [label="6: Return Stmt \n *&return:float =0.000000 [line 14]\n " shape="box"] 6 -> 5 ; @@ -75,7 +75,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: Return Stmt \n *&return:int =0 [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =0 [line 14]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/loops/foreach1.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/loops/foreach1.cpp.dot index 90d25f154..689efa165 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/loops/foreach1.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/loops/foreach1.cpp.dot @@ -8,19 +8,19 @@ digraph iCFG { 42 -> 35 ; -41 [label="41: DeclStmt \n n$15=_fun_iterator_operator*(&__begin:class iterator &) [line 37]\n *&value:int =n$15 [line 37]\n REMOVE_TEMPS(n$15); [line 37]\n " shape="box"] +41 [label="41: DeclStmt \n n$15=_fun_iterator_operator*(&__begin:class iterator &) [line 37]\n *&value:int =n$15 [line 37]\n " shape="box"] 41 -> 40 ; -40 [label="40: DeclStmt \n n$13=*&value:int [line 38]\n n$14=*&value:int [line 38]\n *&temp:int =((n$13 * n$14) + 10) [line 38]\n REMOVE_TEMPS(n$13,n$14); [line 38]\n NULLIFY(&temp); [line 38]\n NULLIFY(&value); [line 38]\n " shape="box"] +40 [label="40: DeclStmt \n n$13=*&value:int [line 38]\n n$14=*&value:int [line 38]\n *&temp:int =((n$13 * n$14) + 10) [line 38]\n " shape="box"] 40 -> 36 ; -39 [label="39: Prune (false branch) \n PRUNE((n$12 == 0), false); [line 37]\n REMOVE_TEMPS(n$12); [line 37]\n APPLY_ABSTRACTION; [line 37]\n " shape="invhouse"] +39 [label="39: Prune (false branch) \n PRUNE((n$12 == 0), false); [line 37]\n " shape="invhouse"] 39 -> 32 ; -38 [label="38: Prune (true branch) \n PRUNE((n$12 != 0), true); [line 37]\n REMOVE_TEMPS(n$12); [line 37]\n " shape="invhouse"] +38 [label="38: Prune (true branch) \n PRUNE((n$12 != 0), true); [line 37]\n " shape="invhouse"] 38 -> 41 ; @@ -29,15 +29,15 @@ digraph iCFG { 37 -> 38 ; 37 -> 39 ; -36 [label="36: Call _fun_iterator_operator++ \n _fun_iterator_operator++(&__begin:class iterator &,&__temp_return_n$9:class iterator *) [line 37]\n APPLY_ABSTRACTION; [line 37]\n " shape="box"] +36 [label="36: Call _fun_iterator_operator++ \n _fun_iterator_operator++(&__begin:class iterator &,&__temp_return_n$9:class iterator *) [line 37]\n " shape="box"] 36 -> 33 ; -35 [label="35: DeclStmt \n n$5=*&__range:class vec & [line 37]\n n$6=*n$5:class vec [line 37]\n _fun_vec_begin(n$5:class vec &,&SIL_materialize_temp__n$4:class iterator *) [line 37]\n _fun_iterator_iterator(&__begin:class iterator *,&SIL_materialize_temp__n$4:class iterator &) [line 37]\n REMOVE_TEMPS(n$5,n$6); [line 37]\n " shape="box"] +35 [label="35: DeclStmt \n n$5=*&__range:class vec & [line 37]\n n$6=*n$5:class vec [line 37]\n _fun_vec_begin(n$5:class vec &,&SIL_materialize_temp__n$4:class iterator *) [line 37]\n _fun_iterator_iterator(&__begin:class iterator *,&SIL_materialize_temp__n$4:class iterator &) [line 37]\n " shape="box"] 35 -> 34 ; -34 [label="34: DeclStmt \n n$1=*&__range:class vec & [line 37]\n n$2=*n$1:class vec [line 37]\n _fun_vec_end(n$1:class vec &,&SIL_materialize_temp__n$0:class iterator *) [line 37]\n _fun_iterator_iterator(&__end:class iterator *,&SIL_materialize_temp__n$0:class iterator &) [line 37]\n REMOVE_TEMPS(n$1,n$2); [line 37]\n NULLIFY(&__range); [line 37]\n APPLY_ABSTRACTION; [line 37]\n " shape="box"] +34 [label="34: DeclStmt \n n$1=*&__range:class vec & [line 37]\n n$2=*n$1:class vec [line 37]\n _fun_vec_end(n$1:class vec &,&SIL_materialize_temp__n$0:class iterator *) [line 37]\n _fun_iterator_iterator(&__end:class iterator *,&SIL_materialize_temp__n$0:class iterator &) [line 37]\n " shape="box"] 34 -> 33 ; @@ -45,14 +45,14 @@ digraph iCFG { 33 -> 37 ; -32 [label="32: Exit test \n NULLIFY(&vector); [line 40]\n NULLIFY(&__temp_return_n$9); [line 40]\n NULLIFY(&__temp_construct_n$11); [line 40]\n NULLIFY(&__temp_construct_n$10); [line 40]\n NULLIFY(&__end); [line 40]\n NULLIFY(&__begin); [line 40]\n NULLIFY(&SIL_materialize_temp__n$4); [line 40]\n NULLIFY(&SIL_materialize_temp__n$0); [line 40]\n " color=yellow style=filled] +32 [label="32: Exit test \n " color=yellow style=filled] 31 [label="31: Start test\nFormals: \nLocals: __end:class iterator SIL_materialize_temp__n$0:class iterator __begin:class iterator SIL_materialize_temp__n$4:class iterator __temp_return_n$9:class iterator __temp_construct_n$10:class iterator __temp_construct_n$11:class iterator temp:int value:int __range:class vec & vector:class vec \n DECLARE_LOCALS(&return,&__end,&SIL_materialize_temp__n$0,&__begin,&SIL_materialize_temp__n$4,&__temp_return_n$9,&__temp_construct_n$10,&__temp_construct_n$11,&temp,&value,&__range,&vector); [line 35]\n " color=yellow style=filled] 31 -> 43 ; -30 [label="30: Return Stmt \n n$0=*&__return_param:class iterator * [line 29]\n n$1=*&this:class vec * [line 29]\n _fun_iterator_iterator(n$0:class iterator *,n$1.end_:class iterator &) [line 29]\n REMOVE_TEMPS(n$0,n$1); [line 29]\n NULLIFY(&__return_param); [line 29]\n NULLIFY(&this); [line 29]\n APPLY_ABSTRACTION; [line 29]\n " shape="box"] +30 [label="30: Return Stmt \n n$0=*&__return_param:class iterator * [line 29]\n n$1=*&this:class vec * [line 29]\n _fun_iterator_iterator(n$0:class iterator *,n$1.end_:class iterator &) [line 29]\n " shape="box"] 30 -> 29 ; @@ -63,7 +63,7 @@ digraph iCFG { 28 -> 30 ; -27 [label="27: Return Stmt \n n$0=*&__return_param:class iterator * [line 28]\n n$1=*&this:class vec * [line 28]\n _fun_iterator_iterator(n$0:class iterator *,n$1.begin_:class iterator &) [line 28]\n REMOVE_TEMPS(n$0,n$1); [line 28]\n NULLIFY(&__return_param); [line 28]\n NULLIFY(&this); [line 28]\n APPLY_ABSTRACTION; [line 28]\n " shape="box"] +27 [label="27: Return Stmt \n n$0=*&__return_param:class iterator * [line 28]\n n$1=*&this:class vec * [line 28]\n _fun_iterator_iterator(n$0:class iterator *,n$1.begin_:class iterator &) [line 28]\n " shape="box"] 27 -> 26 ; @@ -74,19 +74,19 @@ digraph iCFG { 25 -> 27 ; -24 [label="24: Constructor Init \n n$4=*&this:class vec * [line 24]\n _fun_iterator_iterator(n$4.begin_:class iterator *) [line 24]\n REMOVE_TEMPS(n$4); [line 24]\n " shape="box"] +24 [label="24: Constructor Init \n n$4=*&this:class vec * [line 24]\n _fun_iterator_iterator(n$4.begin_:class iterator *) [line 24]\n " shape="box"] 24 -> 23 ; -23 [label="23: Constructor Init \n n$3=*&this:class vec * [line 24]\n _fun_iterator_iterator(n$3.end_:class iterator *) [line 24]\n REMOVE_TEMPS(n$3); [line 24]\n " shape="box"] +23 [label="23: Constructor Init \n n$3=*&this:class vec * [line 24]\n _fun_iterator_iterator(n$3.end_:class iterator *) [line 24]\n " shape="box"] 23 -> 22 ; -22 [label="22: BinaryOperatorStmt: Assign \n n$2=*&this:class vec * [line 25]\n *n$2.begin_.val:int =0 [line 25]\n REMOVE_TEMPS(n$2); [line 25]\n " shape="box"] +22 [label="22: BinaryOperatorStmt: Assign \n n$2=*&this:class vec * [line 25]\n *n$2.begin_.val:int =0 [line 25]\n " shape="box"] 22 -> 21 ; -21 [label="21: BinaryOperatorStmt: Assign \n n$0=*&this:class vec * [line 26]\n n$1=*&size:int [line 26]\n *n$0.end_.val:int =n$1 [line 26]\n REMOVE_TEMPS(n$0,n$1); [line 26]\n NULLIFY(&size); [line 26]\n NULLIFY(&this); [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"] +21 [label="21: BinaryOperatorStmt: Assign \n n$0=*&this:class vec * [line 26]\n n$1=*&size:int [line 26]\n *n$0.end_.val:int =n$1 [line 26]\n " shape="box"] 21 -> 20 ; @@ -97,7 +97,7 @@ digraph iCFG { 19 -> 24 ; -18 [label="18: Return Stmt \n n$0=*&i1:class iterator & [line 21]\n n$1=*n$0.val:int [line 21]\n n$2=*&i2:class iterator & [line 21]\n n$3=*n$2.val:int [line 21]\n *&return:_Bool =(n$1 != n$3) [line 21]\n REMOVE_TEMPS(n$0,n$1,n$2,n$3); [line 21]\n NULLIFY(&i1); [line 21]\n NULLIFY(&i2); [line 21]\n APPLY_ABSTRACTION; [line 21]\n " shape="box"] +18 [label="18: Return Stmt \n n$0=*&i1:class iterator & [line 21]\n n$1=*n$0.val:int [line 21]\n n$2=*&i2:class iterator & [line 21]\n n$3=*n$2.val:int [line 21]\n *&return:_Bool =(n$1 != n$3) [line 21]\n " shape="box"] 18 -> 17 ; @@ -108,7 +108,7 @@ digraph iCFG { 16 -> 18 ; -15 [label="15: Constructor Init \n n$0=*&this:class iterator * [line 11]\n n$1=*&__param_0:class iterator & [line 11]\n n$2=*n$1.val:int [line 11]\n *n$0.val:int =n$2 [line 11]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 11]\n NULLIFY(&__param_0); [line 11]\n NULLIFY(&this); [line 11]\n APPLY_ABSTRACTION; [line 11]\n " shape="box"] +15 [label="15: Constructor Init \n n$0=*&this:class iterator * [line 11]\n n$1=*&__param_0:class iterator & [line 11]\n n$2=*n$1.val:int [line 11]\n *n$0.val:int =n$2 [line 11]\n " shape="box"] 15 -> 14 ; @@ -126,7 +126,7 @@ digraph iCFG { 11 -> 12 ; -10 [label="10: Return Stmt \n n$0=*&this:class iterator * [line 18]\n n$1=*n$0.val:int [line 18]\n *&return:int =n$1 [line 18]\n REMOVE_TEMPS(n$0,n$1); [line 18]\n NULLIFY(&this); [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +10 [label="10: Return Stmt \n n$0=*&this:class iterator * [line 18]\n n$1=*n$0.val:int [line 18]\n *&return:int =n$1 [line 18]\n " shape="box"] 10 -> 9 ; @@ -137,15 +137,15 @@ digraph iCFG { 8 -> 10 ; -7 [label="7: BinaryOperatorStmt: AddAssign \n n$2=*&this:class iterator * [line 14]\n n$3=*n$2.val:int [line 14]\n *n$2.val:int =(n$3 + 1) [line 14]\n REMOVE_TEMPS(n$2,n$3); [line 14]\n " shape="box"] +7 [label="7: BinaryOperatorStmt: AddAssign \n n$2=*&this:class iterator * [line 14]\n n$3=*n$2.val:int [line 14]\n *n$2.val:int =(n$3 + 1) [line 14]\n " shape="box"] 7 -> 6 ; -6 [label="6: Return Stmt \n n$0=*&__return_param:class iterator * [line 15]\n n$1=*&this:class iterator * [line 15]\n _fun_iterator_iterator(n$0:class iterator *,n$1:class iterator &) [line 15]\n REMOVE_TEMPS(n$0,n$1); [line 15]\n NULLIFY(&__return_param); [line 15]\n NULLIFY(&this); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +6 [label="6: Return Stmt \n n$0=*&__return_param:class iterator * [line 15]\n n$1=*&this:class iterator * [line 15]\n _fun_iterator_iterator(n$0:class iterator *,n$1:class iterator &) [line 15]\n " shape="box"] 6 -> 2 ; -5 [label="5: Constructor Init \n n$0=*&this:class iterator * [line 11]\n n$1=*&__param_0:class iterator & [line 11]\n n$2=*n$1.val:int [line 11]\n *n$0.val:int =n$2 [line 11]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 11]\n NULLIFY(&__param_0); [line 11]\n NULLIFY(&this); [line 11]\n APPLY_ABSTRACTION; [line 11]\n " shape="box"] +5 [label="5: Constructor Init \n n$0=*&this:class iterator * [line 11]\n n$1=*&__param_0:class iterator & [line 11]\n n$2=*n$1.val:int [line 11]\n *n$0.val:int =n$2 [line 11]\n " shape="box"] 5 -> 4 ; 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 60edb9db1..4fab7764f 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/methods/conversion_operator.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/methods/conversion_operator.cpp.dot @@ -4,23 +4,23 @@ digraph iCFG { 61 -> 56 ; -60 [label="60: DeclStmt \n n$5=*&x:class X [line 64]\n n$6=_fun_X_operator int(&x:class X &) [line 64]\n *&v:int =n$6 [line 64]\n REMOVE_TEMPS(n$5,n$6); [line 64]\n " shape="box"] +60 [label="60: DeclStmt \n n$5=*&x:class X [line 64]\n n$6=_fun_X_operator int(&x:class X &) [line 64]\n *&v:int =n$6 [line 64]\n " shape="box"] 60 -> 59 ; -59 [label="59: Return Stmt \n n$4=*&v:int [line 65]\n *&return:int =(1 / n$4) [line 65]\n REMOVE_TEMPS(n$4); [line 65]\n NULLIFY(&v); [line 65]\n APPLY_ABSTRACTION; [line 65]\n " shape="box"] +59 [label="59: Return Stmt \n n$4=*&v:int [line 65]\n *&return:int =(1 / n$4) [line 65]\n " shape="box"] 59 -> 53 ; -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 [label="58: Prune (false branch) \n PRUNE((n$3 == 0), false); [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$3); [line 63]\n " shape="invhouse"] +57 [label="57: Prune (true branch) \n PRUNE((n$3 != 0), true); [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 REMOVE_TEMPS(n$2); [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 " shape="box"] 56 -> 57 ; @@ -29,11 +29,11 @@ digraph iCFG { 55 -> 54 ; -54 [label="54: Return Stmt \n n$0=*&x:class X [line 67]\n n$1=_fun_X_operator int(&x:class X &) [line 67]\n *&return:int =n$1 [line 67]\n REMOVE_TEMPS(n$0,n$1); [line 67]\n APPLY_ABSTRACTION; [line 67]\n " shape="box"] +54 [label="54: Return Stmt \n n$0=*&x:class X [line 67]\n n$1=_fun_X_operator int(&x:class X &) [line 67]\n *&return:int =n$1 [line 67]\n " shape="box"] 54 -> 53 ; -53 [label="53: Exit branch_div1 \n NULLIFY(&x); [line 68]\n " color=yellow style=filled] +53 [label="53: Exit branch_div1 \n " color=yellow style=filled] 52 [label="52: Start branch_div1\nFormals: \nLocals: v:int x:class X \n DECLARE_LOCALS(&return,&v,&x); [line 61]\n " color=yellow style=filled] @@ -44,23 +44,23 @@ digraph iCFG { 51 -> 46 ; -50 [label="50: DeclStmt \n n$5=*&x:class X [line 55]\n n$6=_fun_X_operator int(&x:class X &) [line 55]\n *&v:int =n$6 [line 55]\n REMOVE_TEMPS(n$5,n$6); [line 55]\n " shape="box"] +50 [label="50: DeclStmt \n n$5=*&x:class X [line 55]\n n$6=_fun_X_operator int(&x:class X &) [line 55]\n *&v:int =n$6 [line 55]\n " shape="box"] 50 -> 49 ; -49 [label="49: Return Stmt \n n$4=*&v:int [line 56]\n *&return:int =(1 / n$4) [line 56]\n REMOVE_TEMPS(n$4); [line 56]\n NULLIFY(&v); [line 56]\n APPLY_ABSTRACTION; [line 56]\n " shape="box"] +49 [label="49: Return Stmt \n n$4=*&v:int [line 56]\n *&return:int =(1 / n$4) [line 56]\n " shape="box"] 49 -> 43 ; -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 [label="48: Prune (false branch) \n PRUNE((n$3 == 0), false); [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$3); [line 54]\n " shape="invhouse"] +47 [label="47: Prune (true branch) \n PRUNE((n$3 != 0), true); [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 REMOVE_TEMPS(n$2); [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 " shape="box"] 46 -> 47 ; @@ -69,11 +69,11 @@ digraph iCFG { 45 -> 44 ; -44 [label="44: Return Stmt \n n$0=*&x:class X [line 58]\n n$1=_fun_X_operator int(&x:class X &) [line 58]\n *&return:int =n$1 [line 58]\n REMOVE_TEMPS(n$0,n$1); [line 58]\n APPLY_ABSTRACTION; [line 58]\n " shape="box"] +44 [label="44: Return Stmt \n n$0=*&x:class X [line 58]\n n$1=_fun_X_operator int(&x:class X &) [line 58]\n *&return:int =n$1 [line 58]\n " shape="box"] 44 -> 43 ; -43 [label="43: Exit branch_no_div \n NULLIFY(&x); [line 59]\n " color=yellow style=filled] +43 [label="43: Exit branch_no_div \n " color=yellow style=filled] 42 [label="42: Start branch_no_div\nFormals: \nLocals: v:int x:class X \n DECLARE_LOCALS(&return,&v,&x); [line 52]\n " color=yellow style=filled] @@ -92,23 +92,23 @@ digraph iCFG { 39 -> 34 ; -38 [label="38: DeclStmt \n n$13=*&y:class Y [line 46]\n _fun_Y_operator X(&y:class Y &,&SIL_materialize_temp__n$12:class X *) [line 46]\n _fun_X_X(&__temp_construct_n$11:class X *,&SIL_materialize_temp__n$12:class X &) [line 46]\n n$15=_fun_X_operator int(&__temp_construct_n$11:class X &) [line 46]\n *&v:int =n$15 [line 46]\n REMOVE_TEMPS(n$13,n$15); [line 46]\n " shape="box"] +38 [label="38: DeclStmt \n n$13=*&y:class Y [line 46]\n _fun_Y_operator X(&y:class Y &,&SIL_materialize_temp__n$12:class X *) [line 46]\n _fun_X_X(&__temp_construct_n$11:class X *,&SIL_materialize_temp__n$12:class X &) [line 46]\n n$15=_fun_X_operator int(&__temp_construct_n$11:class X &) [line 46]\n *&v:int =n$15 [line 46]\n " shape="box"] 38 -> 37 ; -37 [label="37: Return Stmt \n n$10=*&v:int [line 47]\n *&return:int =(1 / n$10) [line 47]\n REMOVE_TEMPS(n$10); [line 47]\n NULLIFY(&v); [line 47]\n APPLY_ABSTRACTION; [line 47]\n " shape="box"] +37 [label="37: Return Stmt \n n$10=*&v:int [line 47]\n *&return:int =(1 / n$10) [line 47]\n " shape="box"] 37 -> 31 ; -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 [label="36: Prune (false branch) \n PRUNE((n$9 == 0), false); [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$9); [line 45]\n " shape="invhouse"] +35 [label="35: Prune (true branch) \n PRUNE((n$9 != 0), true); [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 REMOVE_TEMPS(n$7); [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 " shape="box"] 34 -> 35 ; @@ -117,11 +117,11 @@ digraph iCFG { 33 -> 32 ; -32 [label="32: Return Stmt \n n$2=*&y:class Y [line 49]\n _fun_Y_operator X(&y:class Y &,&SIL_materialize_temp__n$1:class X *) [line 49]\n _fun_X_X(&__temp_construct_n$0:class X *,&SIL_materialize_temp__n$1:class X &) [line 49]\n n$4=_fun_X_operator int(&__temp_construct_n$0:class X &) [line 49]\n *&return:int =n$4 [line 49]\n REMOVE_TEMPS(n$2,n$4); [line 49]\n APPLY_ABSTRACTION; [line 49]\n " shape="box"] +32 [label="32: Return Stmt \n n$2=*&y:class Y [line 49]\n _fun_Y_operator X(&y:class Y &,&SIL_materialize_temp__n$1:class X *) [line 49]\n _fun_X_X(&__temp_construct_n$0:class X *,&SIL_materialize_temp__n$1:class X &) [line 49]\n n$4=_fun_X_operator int(&__temp_construct_n$0:class X &) [line 49]\n *&return:int =n$4 [line 49]\n " shape="box"] 32 -> 31 ; -31 [label="31: Exit y_branch_div0 \n NULLIFY(&y); [line 50]\n NULLIFY(&__temp_construct_n$5); [line 50]\n NULLIFY(&__temp_construct_n$11); [line 50]\n NULLIFY(&__temp_construct_n$0); [line 50]\n NULLIFY(&SIL_materialize_temp__n$6); [line 50]\n NULLIFY(&SIL_materialize_temp__n$12); [line 50]\n NULLIFY(&SIL_materialize_temp__n$1); [line 50]\n " color=yellow style=filled] +31 [label="31: Exit y_branch_div0 \n " color=yellow style=filled] 30 [label="30: Start y_branch_div0\nFormals: \nLocals: __temp_construct_n$0:class X SIL_materialize_temp__n$1:class X __temp_construct_n$5:class X SIL_materialize_temp__n$6:class X v:int __temp_construct_n$11:class X SIL_materialize_temp__n$12:class X y:class Y \n DECLARE_LOCALS(&return,&__temp_construct_n$0,&SIL_materialize_temp__n$1,&__temp_construct_n$5,&SIL_materialize_temp__n$6,&v,&__temp_construct_n$11,&SIL_materialize_temp__n$12,&y); [line 41]\n " color=yellow style=filled] @@ -132,23 +132,23 @@ digraph iCFG { 29 -> 24 ; -28 [label="28: DeclStmt \n n$5=*&x:class X [line 35]\n n$6=_fun_X_operator int(&x:class X &) [line 35]\n *&v:int =n$6 [line 35]\n REMOVE_TEMPS(n$5,n$6); [line 35]\n " shape="box"] +28 [label="28: DeclStmt \n n$5=*&x:class X [line 35]\n n$6=_fun_X_operator int(&x:class X &) [line 35]\n *&v:int =n$6 [line 35]\n " shape="box"] 28 -> 27 ; -27 [label="27: Return Stmt \n n$4=*&v:int [line 36]\n *&return:int =(1 / n$4) [line 36]\n REMOVE_TEMPS(n$4); [line 36]\n NULLIFY(&v); [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="box"] +27 [label="27: Return Stmt \n n$4=*&v:int [line 36]\n *&return:int =(1 / n$4) [line 36]\n " shape="box"] 27 -> 21 ; -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 [label="26: Prune (false branch) \n PRUNE((n$3 == 0), false); [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$3); [line 34]\n " shape="invhouse"] +25 [label="25: Prune (true branch) \n PRUNE((n$3 != 0), true); [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 REMOVE_TEMPS(n$2); [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 " shape="box"] 24 -> 25 ; @@ -157,11 +157,11 @@ digraph iCFG { 23 -> 22 ; -22 [label="22: Return Stmt \n n$0=*&x:class X [line 38]\n n$1=_fun_X_operator int(&x:class X &) [line 38]\n *&return:int =n$1 [line 38]\n REMOVE_TEMPS(n$0,n$1); [line 38]\n APPLY_ABSTRACTION; [line 38]\n " shape="box"] +22 [label="22: Return Stmt \n n$0=*&x:class X [line 38]\n n$1=_fun_X_operator int(&x:class X &) [line 38]\n *&return:int =n$1 [line 38]\n " shape="box"] 22 -> 21 ; -21 [label="21: Exit branch_div0 \n NULLIFY(&x); [line 39]\n " color=yellow style=filled] +21 [label="21: Exit branch_div0 \n " color=yellow style=filled] 20 [label="20: Start branch_div0\nFormals: \nLocals: v:int x:class X \n DECLARE_LOCALS(&return,&v,&x); [line 32]\n " color=yellow style=filled] @@ -175,22 +175,22 @@ digraph iCFG { 18 -> 19 ; -17 [label="17: Return Stmt \n n$0=*&__return_param:class X * [line 27]\n n$2=*&this:class Y * [line 27]\n n$3=*n$2.f:int [line 27]\n n$4=*&this:class Y * [line 27]\n n$5=*n$4.b:int [line 27]\n _fun_X_X(&SIL_materialize_temp__n$1:class X *,n$3:int ,n$5:_Bool ) [line 27]\n _fun_X_X(n$0:class X *,&SIL_materialize_temp__n$1:class X &) [line 27]\n REMOVE_TEMPS(n$0,n$2,n$3,n$4,n$5); [line 27]\n NULLIFY(&__return_param); [line 27]\n NULLIFY(&this); [line 27]\n APPLY_ABSTRACTION; [line 27]\n " shape="box"] +17 [label="17: Return Stmt \n n$0=*&__return_param:class X * [line 27]\n n$2=*&this:class Y * [line 27]\n n$3=*n$2.f:int [line 27]\n n$4=*&this:class Y * [line 27]\n n$5=*n$4.b:int [line 27]\n _fun_X_X(&SIL_materialize_temp__n$1:class X *,n$3:int ,n$5:_Bool ) [line 27]\n _fun_X_X(n$0:class X *,&SIL_materialize_temp__n$1:class X &) [line 27]\n " shape="box"] 17 -> 16 ; -16 [label="16: Exit Y_operator X \n NULLIFY(&SIL_materialize_temp__n$1); [line 27]\n " color=yellow style=filled] +16 [label="16: Exit Y_operator X \n " color=yellow style=filled] 15 [label="15: Start Y_operator X\nFormals: this:class Y * __return_param:class X *\nLocals: SIL_materialize_temp__n$1:class X \n DECLARE_LOCALS(&return,&SIL_materialize_temp__n$1); [line 27]\n " color=yellow style=filled] 15 -> 17 ; -14 [label="14: BinaryOperatorStmt: Assign \n n$3=*&this:class X * [line 20]\n n$4=*&x:class X & [line 20]\n n$5=*n$4.f_:int [line 20]\n *n$3.f_:int =n$5 [line 20]\n REMOVE_TEMPS(n$3,n$4,n$5); [line 20]\n " shape="box"] +14 [label="14: BinaryOperatorStmt: Assign \n n$3=*&this:class X * [line 20]\n n$4=*&x:class X & [line 20]\n n$5=*n$4.f_:int [line 20]\n *n$3.f_:int =n$5 [line 20]\n " shape="box"] 14 -> 13 ; -13 [label="13: BinaryOperatorStmt: Assign \n n$0=*&this:class X * [line 21]\n n$1=*&x:class X & [line 21]\n n$2=*n$1.b_:_Bool [line 21]\n *n$0.b_:_Bool =n$2 [line 21]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 21]\n NULLIFY(&this); [line 21]\n NULLIFY(&x); [line 21]\n APPLY_ABSTRACTION; [line 21]\n " shape="box"] +13 [label="13: BinaryOperatorStmt: Assign \n n$0=*&this:class X * [line 21]\n n$1=*&x:class X & [line 21]\n n$2=*n$1.b_:_Bool [line 21]\n *n$0.b_:_Bool =n$2 [line 21]\n " shape="box"] 13 -> 12 ; @@ -201,11 +201,11 @@ digraph iCFG { 11 -> 14 ; -10 [label="10: BinaryOperatorStmt: Assign \n n$2=*&this:class X * [line 16]\n n$3=*&f:int [line 16]\n *n$2.f_:int =n$3 [line 16]\n REMOVE_TEMPS(n$2,n$3); [line 16]\n NULLIFY(&f); [line 16]\n " shape="box"] +10 [label="10: BinaryOperatorStmt: Assign \n n$2=*&this:class X * [line 16]\n n$3=*&f:int [line 16]\n *n$2.f_:int =n$3 [line 16]\n " shape="box"] 10 -> 9 ; -9 [label="9: BinaryOperatorStmt: Assign \n n$0=*&this:class X * [line 17]\n n$1=*&b:_Bool [line 17]\n *n$0.b_:_Bool =n$1 [line 17]\n REMOVE_TEMPS(n$0,n$1); [line 17]\n NULLIFY(&b); [line 17]\n NULLIFY(&this); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +9 [label="9: BinaryOperatorStmt: Assign \n n$0=*&this:class X * [line 17]\n n$1=*&b:_Bool [line 17]\n *n$0.b_:_Bool =n$1 [line 17]\n " shape="box"] 9 -> 8 ; @@ -216,7 +216,7 @@ digraph iCFG { 7 -> 10 ; -6 [label="6: Return Stmt \n n$0=*&this:class X * [line 12]\n n$1=*n$0.b_:_Bool [line 12]\n *&return:_Bool =n$1 [line 12]\n REMOVE_TEMPS(n$0,n$1); [line 12]\n NULLIFY(&this); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +6 [label="6: Return Stmt \n n$0=*&this:class X * [line 12]\n n$1=*n$0.b_:_Bool [line 12]\n *&return:_Bool =n$1 [line 12]\n " shape="box"] 6 -> 5 ; @@ -227,7 +227,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: Return Stmt \n n$0=*&this:class X * [line 11]\n n$1=*n$0.f_:int [line 11]\n *&return:int =n$1 [line 11]\n REMOVE_TEMPS(n$0,n$1); [line 11]\n NULLIFY(&this); [line 11]\n APPLY_ABSTRACTION; [line 11]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&this:class X * [line 11]\n n$1=*n$0.f_:int [line 11]\n *&return:int =n$1 [line 11]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/methods/default_parameters.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/methods/default_parameters.cpp.dot index 3ff5bc4e3..1926c6ac7 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/methods/default_parameters.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/methods/default_parameters.cpp.dot @@ -1,14 +1,14 @@ /* @generated */ digraph iCFG { -8 [label="8: Call _fun_A_fun_default \n n$6=*&a_ptr:class A * [line 18]\n n$7=*n$6:class A [line 18]\n n$8=_fun_A_fun_default(n$6:class A *,1:int ,2:int ,3:int ) [line 18]\n REMOVE_TEMPS(n$6,n$7,n$8); [line 18]\n " shape="box"] +8 [label="8: Call _fun_A_fun_default \n n$6=*&a_ptr:class A * [line 18]\n n$7=*n$6:class A [line 18]\n n$8=_fun_A_fun_default(n$6:class A *,1:int ,2:int ,3:int ) [line 18]\n " shape="box"] 8 -> 7 ; -7 [label="7: Call _fun_A_fun_default \n n$3=*&a_ptr:class A * [line 19]\n n$4=*n$3:class A [line 19]\n n$5=_fun_A_fun_default(n$3:class A *,1:int ,2:int ,20:int ) [line 19]\n REMOVE_TEMPS(n$3,n$4,n$5); [line 19]\n " shape="box"] +7 [label="7: Call _fun_A_fun_default \n n$3=*&a_ptr:class A * [line 19]\n n$4=*n$3:class A [line 19]\n n$5=_fun_A_fun_default(n$3:class A *,1:int ,2:int ,20:int ) [line 19]\n " shape="box"] 7 -> 6 ; -6 [label="6: Call _fun_A_fun_default \n n$0=*&a_ptr:class A * [line 20]\n n$1=*n$0:class A [line 20]\n n$2=_fun_A_fun_default(n$0:class A *,1:int ,10:int ,20:int ) [line 20]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 20]\n NULLIFY(&a_ptr); [line 20]\n APPLY_ABSTRACTION; [line 20]\n " shape="box"] +6 [label="6: Call _fun_A_fun_default \n n$0=*&a_ptr:class A * [line 20]\n n$1=*n$0:class A [line 20]\n n$2=_fun_A_fun_default(n$0:class A *,1:int ,10:int ,20:int ) [line 20]\n " shape="box"] 6 -> 5 ; @@ -19,7 +19,7 @@ digraph iCFG { 4 -> 8 ; -3 [label="3: Return Stmt \n n$0=*&a:int [line 13]\n n$1=*&b:int [line 13]\n n$2=*&c:int [line 13]\n *&return:int =((n$0 + n$1) + n$2) [line 13]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 13]\n NULLIFY(&a); [line 13]\n NULLIFY(&b); [line 13]\n NULLIFY(&c); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&a:int [line 13]\n n$1=*&b:int [line 13]\n n$2=*&c:int [line 13]\n *&return:int =((n$0 + n$1) + n$2) [line 13]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/methods/dereference_this.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/methods/dereference_this.cpp.dot index 0679eb50d..9fcb11658 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/methods/dereference_this.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/methods/dereference_this.cpp.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -10 [label="10: Call _fun_A_method \n n$0=*&a_ptr:class A * [line 25]\n n$1=*n$0:class A [line 25]\n n$2=_fun_A_method(n$0:class A *) [line 25]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 25]\n NULLIFY(&a_ptr); [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="box"] +10 [label="10: Call _fun_A_method \n n$0=*&a_ptr:class A * [line 25]\n n$1=*n$0:class A [line 25]\n n$2=_fun_A_method(n$0:class A *) [line 25]\n " shape="box"] 10 -> 9 ; @@ -11,11 +11,11 @@ digraph iCFG { 8 -> 10 ; -7 [label="7: Call _fun_A_init \n n$2=*&this:class A * [line 19]\n n$3=*n$2:class A [line 19]\n _fun_A_init(n$2:class A *,10:int ) [line 19]\n REMOVE_TEMPS(n$2,n$3); [line 19]\n " shape="box"] +7 [label="7: Call _fun_A_init \n n$2=*&this:class A * [line 19]\n n$3=*n$2:class A [line 19]\n _fun_A_init(n$2:class A *,10:int ) [line 19]\n " shape="box"] 7 -> 6 ; -6 [label="6: Return Stmt \n n$0=*&this:class A * [line 20]\n n$1=*n$0.field:int [line 20]\n *&return:int =n$1 [line 20]\n REMOVE_TEMPS(n$0,n$1); [line 20]\n NULLIFY(&this); [line 20]\n APPLY_ABSTRACTION; [line 20]\n " shape="box"] +6 [label="6: Return Stmt \n n$0=*&this:class A * [line 20]\n n$1=*n$0.field:int [line 20]\n *&return:int =n$1 [line 20]\n " shape="box"] 6 -> 5 ; @@ -26,7 +26,7 @@ digraph iCFG { 4 -> 7 ; -3 [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class A * [line 14]\n n$1=*&val:int [line 14]\n *n$0.field:int =n$1 [line 14]\n REMOVE_TEMPS(n$0,n$1); [line 14]\n NULLIFY(&this); [line 14]\n NULLIFY(&val); [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +3 [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class A * [line 14]\n n$1=*&val:int [line 14]\n *n$0.field:int =n$1 [line 14]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/methods/inline_method.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/methods/inline_method.cpp.dot index b001d0355..7f0fd2349 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/methods/inline_method.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/methods/inline_method.cpp.dot @@ -1,10 +1,10 @@ /* @generated */ digraph iCFG { -11 [label="11: Call _fun_A_fun \n n$4=*&a_ptr:class A * [line 24]\n n$5=*n$4:class A [line 24]\n n$6=_fun_A_fun(n$4:class A *) [line 24]\n REMOVE_TEMPS(n$4,n$5,n$6); [line 24]\n " shape="box"] +11 [label="11: Call _fun_A_fun \n n$4=*&a_ptr:class A * [line 24]\n n$5=*n$4:class A [line 24]\n n$6=_fun_A_fun(n$4:class A *) [line 24]\n " shape="box"] 11 -> 10 ; -10 [label="10: Call _fun_A::AIn_fun \n n$0=*&a_ptr:class A * [line 25]\n n$1=*n$0.in:class A::AIn * [line 25]\n n$2=*n$1:class A::AIn [line 25]\n n$3=_fun_A::AIn_fun(n$1:class A::AIn *) [line 25]\n REMOVE_TEMPS(n$0,n$1,n$2,n$3); [line 25]\n NULLIFY(&a_ptr); [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="box"] +10 [label="10: Call _fun_A::AIn_fun \n n$0=*&a_ptr:class A * [line 25]\n n$1=*n$0.in:class A::AIn * [line 25]\n n$2=*n$1:class A::AIn [line 25]\n n$3=_fun_A::AIn_fun(n$1:class A::AIn *) [line 25]\n " shape="box"] 10 -> 9 ; @@ -19,7 +19,7 @@ digraph iCFG { 7 -> 6 ; -6 [label="6: Return Stmt \n n$0=*&c:int [line 18]\n *&return:int =(n$0 + 1) [line 18]\n REMOVE_TEMPS(n$0); [line 18]\n NULLIFY(&c); [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +6 [label="6: Return Stmt \n n$0=*&c:int [line 18]\n *&return:int =(n$0 + 1) [line 18]\n " shape="box"] 6 -> 5 ; @@ -30,7 +30,7 @@ digraph iCFG { 4 -> 7 ; -3 [label="3: Return Stmt \n *&return:int =1 [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =1 [line 12]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/methods/overloading.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/methods/overloading.cpp.dot index 328eb044c..ce6d606cd 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/methods/overloading.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/methods/overloading.cpp.dot @@ -1,10 +1,10 @@ /* @generated */ digraph iCFG { -10 [label="10: Call _fun_A_fun \n n$3=*&a_ptr:class A * [line 22]\n n$4=*n$3:class A [line 22]\n n$5=_fun_A_fun(n$3:class A *,1:int ,2:int ) [line 22]\n REMOVE_TEMPS(n$3,n$4,n$5); [line 22]\n " shape="box"] +10 [label="10: Call _fun_A_fun \n n$3=*&a_ptr:class A * [line 22]\n n$4=*n$3:class A [line 22]\n n$5=_fun_A_fun(n$3:class A *,1:int ,2:int ) [line 22]\n " shape="box"] 10 -> 9 ; -9 [label="9: Call _fun_A_fun \n n$0=*&a_ptr:class A * [line 23]\n n$1=*n$0:class A [line 23]\n n$2=_fun_A_fun(n$0:class A *,1:int ,2:int ,3:int ) [line 23]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 23]\n NULLIFY(&a_ptr); [line 23]\n APPLY_ABSTRACTION; [line 23]\n " shape="box"] +9 [label="9: Call _fun_A_fun \n n$0=*&a_ptr:class A * [line 23]\n n$1=*n$0:class A [line 23]\n n$2=_fun_A_fun(n$0:class A *,1:int ,2:int ,3:int ) [line 23]\n " shape="box"] 9 -> 8 ; @@ -15,7 +15,7 @@ digraph iCFG { 7 -> 10 ; -6 [label="6: Return Stmt \n n$0=*&a:int [line 17]\n n$1=*&b:int [line 17]\n *&return:int =(n$0 - n$1) [line 17]\n REMOVE_TEMPS(n$0,n$1); [line 17]\n NULLIFY(&a); [line 17]\n NULLIFY(&b); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +6 [label="6: Return Stmt \n n$0=*&a:int [line 17]\n n$1=*&b:int [line 17]\n *&return:int =(n$0 - n$1) [line 17]\n " shape="box"] 6 -> 5 ; @@ -26,7 +26,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: Return Stmt \n n$0=*&a:int [line 15]\n n$1=*&b:int [line 15]\n n$2=*&c:int [line 15]\n *&return:int =((n$0 + n$1) + n$2) [line 15]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 15]\n NULLIFY(&a); [line 15]\n NULLIFY(&b); [line 15]\n NULLIFY(&c); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&a:int [line 15]\n n$1=*&b:int [line 15]\n n$2=*&c:int [line 15]\n *&return:int =((n$0 + n$1) + n$2) [line 15]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/methods/return_struct.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/methods/return_struct.cpp.dot index 0bec8ae22..84c8bd80b 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/methods/return_struct.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/methods/return_struct.cpp.dot @@ -1,14 +1,14 @@ /* @generated */ digraph iCFG { -13 [label="13: DeclStmt \n n$2=*&a:class A * [line 22]\n n$3=*n$2:class A [line 22]\n _fun_A_get(n$2:class A *,1:int ,&SIL_materialize_temp__n$1:class X *) [line 22]\n _fun_X_X(&x:class X *,&SIL_materialize_temp__n$1:class X &) [line 22]\n REMOVE_TEMPS(n$2,n$3); [line 22]\n NULLIFY(&a); [line 22]\n " shape="box"] +13 [label="13: DeclStmt \n n$2=*&a:class A * [line 22]\n n$3=*n$2:class A [line 22]\n _fun_A_get(n$2:class A *,1:int ,&SIL_materialize_temp__n$1:class X *) [line 22]\n _fun_X_X(&x:class X *,&SIL_materialize_temp__n$1:class X &) [line 22]\n " shape="box"] 13 -> 12 ; -12 [label="12: Return Stmt \n n$0=*&x.f:int [line 23]\n *&return:int =(1 / n$0) [line 23]\n REMOVE_TEMPS(n$0); [line 23]\n APPLY_ABSTRACTION; [line 23]\n " shape="box"] +12 [label="12: Return Stmt \n n$0=*&x.f:int [line 23]\n *&return:int =(1 / n$0) [line 23]\n " shape="box"] 12 -> 11 ; -11 [label="11: Exit test \n NULLIFY(&x); [line 24]\n NULLIFY(&SIL_materialize_temp__n$1); [line 24]\n " color=yellow style=filled] +11 [label="11: Exit test \n " color=yellow style=filled] 10 [label="10: Start test\nFormals: a:class A *\nLocals: x:class X SIL_materialize_temp__n$1:class X \n DECLARE_LOCALS(&return,&x,&SIL_materialize_temp__n$1); [line 21]\n " color=yellow style=filled] @@ -19,18 +19,18 @@ digraph iCFG { 9 -> 8 ; -8 [label="8: Return Stmt \n n$0=*&__return_param:class X * [line 17]\n _fun_X_X(n$0:class X *,&x:class X &) [line 17]\n REMOVE_TEMPS(n$0); [line 17]\n NULLIFY(&__return_param); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +8 [label="8: Return Stmt \n n$0=*&__return_param:class X * [line 17]\n _fun_X_X(n$0:class X *,&x:class X &) [line 17]\n " shape="box"] 8 -> 7 ; -7 [label="7: Exit A_get \n NULLIFY(&x); [line 18]\n " color=yellow style=filled] +7 [label="7: Exit A_get \n " color=yellow style=filled] 6 [label="6: Start A_get\nFormals: this:class A * p:int __return_param:class X *\nLocals: x:class X \n DECLARE_LOCALS(&return,&x); [line 15]\n " color=yellow style=filled] 6 -> 9 ; -5 [label="5: Constructor Init \n n$0=*&this:class X * [line 10]\n n$1=*&__param_0:class X & [line 10]\n n$2=*n$1.f:int [line 10]\n *n$0.f:int =n$2 [line 10]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 10]\n NULLIFY(&__param_0); [line 10]\n NULLIFY(&this); [line 10]\n APPLY_ABSTRACTION; [line 10]\n " shape="box"] +5 [label="5: Constructor Init \n n$0=*&this:class X * [line 10]\n n$1=*&__param_0:class X & [line 10]\n n$2=*n$1.f:int [line 10]\n *n$0.f:int =n$2 [line 10]\n " shape="box"] 5 -> 4 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/methods/static.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/methods/static.cpp.dot index d9d4c1231..af2f97d95 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/methods/static.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/methods/static.cpp.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -9 [label="9: Call _fun_A_fun \n n$0=*&a:class A * [line 21]\n n$1=_fun_A_fun(0:int ) [line 21]\n REMOVE_TEMPS(n$0,n$1); [line 21]\n NULLIFY(&a); [line 21]\n APPLY_ABSTRACTION; [line 21]\n " shape="box"] +9 [label="9: Call _fun_A_fun \n n$0=*&a:class A * [line 21]\n n$1=_fun_A_fun(0:int ) [line 21]\n " shape="box"] 9 -> 8 ; @@ -11,7 +11,7 @@ digraph iCFG { 7 -> 9 ; -6 [label="6: Call _fun_A_fun \n n$0=_fun_A_fun(0:int ) [line 17]\n REMOVE_TEMPS(n$0); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +6 [label="6: Call _fun_A_fun \n n$0=_fun_A_fun(0:int ) [line 17]\n " shape="box"] 6 -> 5 ; @@ -22,7 +22,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: Return Stmt \n n$0=*&a:int [line 15]\n *&return:int =(1 / n$0) [line 15]\n REMOVE_TEMPS(n$0); [line 15]\n NULLIFY(&a); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&a:int [line 15]\n *&return:int =(1 / n$0) [line 15]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/methods/virtual_methods.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/methods/virtual_methods.cpp.dot index 641ead54b..45cfff3be 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/methods/virtual_methods.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/methods/virtual_methods.cpp.dot @@ -1,10 +1,10 @@ /* @generated */ digraph iCFG { -53 [label="53: DeclStmt \n n$2=_fun___new(sizeof(class Triangle ):unsigned long ) [line 71]\n _fun_Triangle_Triangle(n$2:class Triangle *) [line 71]\n *&trgl:class Triangle *=n$2 [line 71]\n REMOVE_TEMPS(n$2); [line 71]\n " shape="box"] +53 [label="53: DeclStmt \n n$2=_fun___new(sizeof(class Triangle ):unsigned long ) [line 71]\n _fun_Triangle_Triangle(n$2:class Triangle *) [line 71]\n *&trgl:class Triangle *=n$2 [line 71]\n " shape="box"] 53 -> 52 ; -52 [label="52: Call delete \n n$0=*&trgl:class Polygon * [line 72]\n n$1=*n$0:class Polygon [line 72]\n _fun_Polygon_~Polygon(n$0:class Polygon *) virtual [line 72]\n _fun___delete(n$0:class Polygon *) [line 72]\n REMOVE_TEMPS(n$0,n$1); [line 72]\n NULLIFY(&trgl); [line 72]\n APPLY_ABSTRACTION; [line 72]\n " shape="box"] +52 [label="52: Call delete \n n$0=*&trgl:class Polygon * [line 72]\n n$1=*n$0:class Polygon [line 72]\n _fun_Polygon_~Polygon(n$0:class Polygon *) virtual [line 72]\n _fun___delete(n$0:class Polygon *) [line 72]\n " shape="box"] 52 -> 51 ; @@ -27,15 +27,15 @@ digraph iCFG { 47 -> 46 ; -46 [label="46: Call _fun_Polygon_set_values \n n$3=*&ppoly2:class Polygon * [line 63]\n n$4=*n$3:class Polygon [line 63]\n _fun_Polygon_set_values(n$3:class Polygon *,4:int ,5:int ) [line 63]\n REMOVE_TEMPS(n$3,n$4); [line 63]\n " shape="box"] +46 [label="46: Call _fun_Polygon_set_values \n n$3=*&ppoly2:class Polygon * [line 63]\n n$4=*n$3:class Polygon [line 63]\n _fun_Polygon_set_values(n$3:class Polygon *,4:int ,5:int ) [line 63]\n " shape="box"] 46 -> 45 ; -45 [label="45: Return Stmt \n n$0=*&ppoly2:class Polygon * [line 64]\n n$1=*n$0:class Polygon [line 64]\n n$2=_fun_Polygon_area(n$0:class Polygon *) [line 64]\n *&return:int =(1 / n$2) [line 64]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 64]\n NULLIFY(&ppoly2); [line 64]\n APPLY_ABSTRACTION; [line 64]\n " shape="box"] +45 [label="45: Return Stmt \n n$0=*&ppoly2:class Polygon * [line 64]\n n$1=*n$0:class Polygon [line 64]\n n$2=_fun_Polygon_area(n$0:class Polygon *) [line 64]\n *&return:int =(1 / n$2) [line 64]\n " shape="box"] 45 -> 44 ; -44 [label="44: Exit tri_not_virtual_area \n NULLIFY(&trgl); [line 65]\n NULLIFY(&poly); [line 65]\n " color=yellow style=filled] +44 [label="44: Exit tri_not_virtual_area \n " color=yellow style=filled] 43 [label="43: Start tri_not_virtual_area\nFormals: \nLocals: ppoly2:class Polygon * poly:class Polygon trgl:class Triangle \n DECLARE_LOCALS(&return,&ppoly2,&poly,&trgl); [line 59]\n " color=yellow style=filled] @@ -50,11 +50,11 @@ digraph iCFG { 41 -> 40 ; -40 [label="40: Return Stmt \n n$0=*&ppoly3:class Polygon * [line 56]\n n$1=*n$0:class Polygon [line 56]\n n$2=_fun_Polygon_area(n$0:class Polygon *) virtual [line 56]\n *&return:int =(1 / n$2) [line 56]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 56]\n NULLIFY(&ppoly3); [line 56]\n APPLY_ABSTRACTION; [line 56]\n " shape="box"] +40 [label="40: Return Stmt \n n$0=*&ppoly3:class Polygon * [line 56]\n n$1=*n$0:class Polygon [line 56]\n n$2=_fun_Polygon_area(n$0:class Polygon *) virtual [line 56]\n *&return:int =(1 / n$2) [line 56]\n " shape="box"] 40 -> 39 ; -39 [label="39: Exit poly_area \n NULLIFY(&poly); [line 57]\n " color=yellow style=filled] +39 [label="39: Exit poly_area \n " color=yellow style=filled] 38 [label="38: Start poly_area\nFormals: \nLocals: ppoly3:class Polygon * poly:class Polygon \n DECLARE_LOCALS(&return,&ppoly3,&poly); [line 53]\n " color=yellow style=filled] @@ -73,15 +73,15 @@ digraph iCFG { 35 -> 34 ; -34 [label="34: Call _fun_Polygon_set_values \n n$3=*&ppoly2:class Polygon * [line 49]\n n$4=*n$3:class Polygon [line 49]\n _fun_Polygon_set_values(n$3:class Polygon *,4:int ,5:int ) [line 49]\n REMOVE_TEMPS(n$3,n$4); [line 49]\n " shape="box"] +34 [label="34: Call _fun_Polygon_set_values \n n$3=*&ppoly2:class Polygon * [line 49]\n n$4=*n$3:class Polygon [line 49]\n _fun_Polygon_set_values(n$3:class Polygon *,4:int ,5:int ) [line 49]\n " shape="box"] 34 -> 33 ; -33 [label="33: Return Stmt \n n$0=*&ppoly2:class Polygon * [line 50]\n n$1=*n$0:class Polygon [line 50]\n n$2=_fun_Polygon_area(n$0:class Polygon *) virtual [line 50]\n *&return:int =(1 / (n$2 - 10)) [line 50]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 50]\n NULLIFY(&ppoly2); [line 50]\n APPLY_ABSTRACTION; [line 50]\n " shape="box"] +33 [label="33: Return Stmt \n n$0=*&ppoly2:class Polygon * [line 50]\n n$1=*n$0:class Polygon [line 50]\n n$2=_fun_Polygon_area(n$0:class Polygon *) virtual [line 50]\n *&return:int =(1 / (n$2 - 10)) [line 50]\n " shape="box"] 33 -> 32 ; -32 [label="32: Exit tri_area \n NULLIFY(&trgl); [line 51]\n NULLIFY(&poly); [line 51]\n " color=yellow style=filled] +32 [label="32: Exit tri_area \n " color=yellow style=filled] 31 [label="31: Start tri_area\nFormals: \nLocals: ppoly2:class Polygon * poly:class Polygon trgl:class Triangle \n DECLARE_LOCALS(&return,&ppoly2,&poly,&trgl); [line 45]\n " color=yellow style=filled] @@ -96,22 +96,22 @@ digraph iCFG { 29 -> 28 ; -28 [label="28: Call _fun_Polygon_set_values \n n$3=*&ppoly1:class Polygon * [line 41]\n n$4=*n$3:class Polygon [line 41]\n _fun_Polygon_set_values(n$3:class Polygon *,4:int ,5:int ) [line 41]\n REMOVE_TEMPS(n$3,n$4); [line 41]\n " shape="box"] +28 [label="28: Call _fun_Polygon_set_values \n n$3=*&ppoly1:class Polygon * [line 41]\n n$4=*n$3:class Polygon [line 41]\n _fun_Polygon_set_values(n$3:class Polygon *,4:int ,5:int ) [line 41]\n " shape="box"] 28 -> 27 ; -27 [label="27: Return Stmt \n n$0=*&ppoly1:class Polygon * [line 42]\n n$1=*n$0:class Polygon [line 42]\n n$2=_fun_Polygon_area(n$0:class Polygon *) virtual [line 42]\n *&return:int =(1 / (n$2 - 20)) [line 42]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 42]\n NULLIFY(&ppoly1); [line 42]\n APPLY_ABSTRACTION; [line 42]\n " shape="box"] +27 [label="27: Return Stmt \n n$0=*&ppoly1:class Polygon * [line 42]\n n$1=*n$0:class Polygon [line 42]\n n$2=_fun_Polygon_area(n$0:class Polygon *) virtual [line 42]\n *&return:int =(1 / (n$2 - 20)) [line 42]\n " shape="box"] 27 -> 26 ; -26 [label="26: Exit rect_area \n NULLIFY(&rect); [line 43]\n " color=yellow style=filled] +26 [label="26: Exit rect_area \n " color=yellow style=filled] 25 [label="25: Start rect_area\nFormals: \nLocals: ppoly1:class Polygon * rect:class Rectangle \n DECLARE_LOCALS(&return,&ppoly1,&rect); [line 38]\n " color=yellow style=filled] 25 -> 30 ; -24 [label="24: Constructor Init \n n$0=*&this:class Triangle * [line 29]\n _fun_Polygon_Polygon(n$0:class Triangle *) [line 29]\n REMOVE_TEMPS(n$0); [line 29]\n NULLIFY(&this); [line 29]\n APPLY_ABSTRACTION; [line 29]\n " shape="box"] +24 [label="24: Constructor Init \n n$0=*&this:class Triangle * [line 29]\n _fun_Polygon_Polygon(n$0:class Triangle *) [line 29]\n " shape="box"] 24 -> 23 ; @@ -122,11 +122,11 @@ digraph iCFG { 22 -> 24 ; -21 [label="21: DeclStmt \n n$1=*&this:class Triangle * [line 33]\n n$2=*n$1.width:int [line 33]\n n$3=*&this:class Triangle * [line 33]\n n$4=*n$3.height:int [line 33]\n *&x:int =(n$2 * n$4) [line 33]\n REMOVE_TEMPS(n$1,n$2,n$3,n$4); [line 33]\n NULLIFY(&this); [line 33]\n " shape="box"] +21 [label="21: DeclStmt \n n$1=*&this:class Triangle * [line 33]\n n$2=*n$1.width:int [line 33]\n n$3=*&this:class Triangle * [line 33]\n n$4=*n$3.height:int [line 33]\n *&x:int =(n$2 * n$4) [line 33]\n " shape="box"] 21 -> 20 ; -20 [label="20: Return Stmt \n n$0=*&x:int [line 34]\n *&return:int =(n$0 - 10) [line 34]\n REMOVE_TEMPS(n$0); [line 34]\n NULLIFY(&x); [line 34]\n APPLY_ABSTRACTION; [line 34]\n " shape="box"] +20 [label="20: Return Stmt \n n$0=*&x:int [line 34]\n *&return:int =(n$0 - 10) [line 34]\n " shape="box"] 20 -> 19 ; @@ -144,7 +144,7 @@ digraph iCFG { 16 -> 17 ; -15 [label="15: Constructor Init \n n$0=*&this:class Rectangle * [line 23]\n _fun_Polygon_Polygon(n$0:class Rectangle *) [line 23]\n REMOVE_TEMPS(n$0); [line 23]\n NULLIFY(&this); [line 23]\n APPLY_ABSTRACTION; [line 23]\n " shape="box"] +15 [label="15: Constructor Init \n n$0=*&this:class Rectangle * [line 23]\n _fun_Polygon_Polygon(n$0:class Rectangle *) [line 23]\n " shape="box"] 15 -> 14 ; @@ -155,7 +155,7 @@ digraph iCFG { 13 -> 15 ; -12 [label="12: Return Stmt \n n$0=*&this:class Rectangle * [line 26]\n n$1=*n$0.width:int [line 26]\n n$2=*&this:class Rectangle * [line 26]\n n$3=*n$2.height:int [line 26]\n *&return:int =(n$1 * n$3) [line 26]\n REMOVE_TEMPS(n$0,n$1,n$2,n$3); [line 26]\n NULLIFY(&this); [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"] +12 [label="12: Return Stmt \n n$0=*&this:class Rectangle * [line 26]\n n$1=*n$0.width:int [line 26]\n n$2=*&this:class Rectangle * [line 26]\n n$3=*n$2.height:int [line 26]\n *&return:int =(n$1 * n$3) [line 26]\n " shape="box"] 12 -> 11 ; @@ -173,7 +173,7 @@ digraph iCFG { 8 -> 9 ; -7 [label="7: Return Stmt \n *&return:int =0 [line 20]\n APPLY_ABSTRACTION; [line 20]\n " shape="box"] +7 [label="7: Return Stmt \n *&return:int =0 [line 20]\n " shape="box"] 7 -> 6 ; @@ -184,11 +184,11 @@ digraph iCFG { 5 -> 7 ; -4 [label="4: BinaryOperatorStmt: Assign \n n$2=*&this:class Polygon * [line 17]\n n$3=*&a:int [line 17]\n *n$2.width:int =n$3 [line 17]\n REMOVE_TEMPS(n$2,n$3); [line 17]\n NULLIFY(&a); [line 17]\n " shape="box"] +4 [label="4: BinaryOperatorStmt: Assign \n n$2=*&this:class Polygon * [line 17]\n n$3=*&a:int [line 17]\n *n$2.width:int =n$3 [line 17]\n " shape="box"] 4 -> 3 ; -3 [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class Polygon * [line 18]\n n$1=*&b:int [line 18]\n *n$0.height:int =n$1 [line 18]\n REMOVE_TEMPS(n$0,n$1); [line 18]\n NULLIFY(&b); [line 18]\n NULLIFY(&this); [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +3 [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class Polygon * [line 18]\n n$1=*&b:int [line 18]\n *n$0.height:int =n$1 [line 18]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/namespace/function.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/namespace/function.cpp.dot index 66b0758ee..88b57f433 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/namespace/function.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/namespace/function.cpp.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -15 [label="15: Return Stmt \n n$0=_fun_f1::get() [line 24]\n n$1=_fun_f2::get() [line 24]\n *&return:int =(1 / (n$0 + n$1)) [line 24]\n REMOVE_TEMPS(n$0,n$1); [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +15 [label="15: Return Stmt \n n$0=_fun_f1::get() [line 24]\n n$1=_fun_f2::get() [line 24]\n *&return:int =(1 / (n$0 + n$1)) [line 24]\n " shape="box"] 15 -> 14 ; @@ -11,7 +11,7 @@ digraph iCFG { 13 -> 15 ; -12 [label="12: Return Stmt \n n$0=_fun_f1::get0() [line 21]\n *&return:int =(1 / n$0) [line 21]\n REMOVE_TEMPS(n$0); [line 21]\n APPLY_ABSTRACTION; [line 21]\n " shape="box"] +12 [label="12: Return Stmt \n n$0=_fun_f1::get0() [line 21]\n *&return:int =(1 / n$0) [line 21]\n " shape="box"] 12 -> 11 ; @@ -22,7 +22,7 @@ digraph iCFG { 10 -> 12 ; -9 [label="9: Return Stmt \n *&return:int =-1 [line 16]\n APPLY_ABSTRACTION; [line 16]\n " shape="box"] +9 [label="9: Return Stmt \n *&return:int =-1 [line 16]\n " shape="box"] 9 -> 8 ; @@ -33,7 +33,7 @@ digraph iCFG { 7 -> 9 ; -6 [label="6: Return Stmt \n *&return:int =0 [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +6 [label="6: Return Stmt \n *&return:int =0 [line 12]\n " shape="box"] 6 -> 5 ; @@ -44,7 +44,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: Return Stmt \n *&return:int =1 [line 11]\n APPLY_ABSTRACTION; [line 11]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =1 [line 11]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/namespace/global_variable.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/namespace/global_variable.cpp.dot index 0ac43e861..37d1f646a 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/namespace/global_variable.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/namespace/global_variable.cpp.dot @@ -8,7 +8,7 @@ digraph iCFG { 14 -> 13 ; -13 [label="13: Return Stmt \n n$0=*&#GB$f1::A::v:int [line 43]\n n$1=*&#GB$B::v:int [line 43]\n *&return:int =(1 / ((n$0 + n$1) + 1)) [line 43]\n REMOVE_TEMPS(n$0,n$1); [line 43]\n APPLY_ABSTRACTION; [line 43]\n " shape="box"] +13 [label="13: Return Stmt \n n$0=*&#GB$f1::A::v:int [line 43]\n n$1=*&#GB$B::v:int [line 43]\n *&return:int =(1 / ((n$0 + n$1) + 1)) [line 43]\n " shape="box"] 13 -> 12 ; @@ -27,7 +27,7 @@ digraph iCFG { 9 -> 8 ; -8 [label="8: Return Stmt \n n$0=*&#GB$f1::A::v:int [line 37]\n n$1=*&#GB$B::v:int [line 37]\n *&return:int =(1 / ((n$0 + n$1) + 1)) [line 37]\n REMOVE_TEMPS(n$0,n$1); [line 37]\n APPLY_ABSTRACTION; [line 37]\n " shape="box"] +8 [label="8: Return Stmt \n n$0=*&#GB$f1::A::v:int [line 37]\n n$1=*&#GB$B::v:int [line 37]\n *&return:int =(1 / ((n$0 + n$1) + 1)) [line 37]\n " shape="box"] 8 -> 7 ; @@ -46,7 +46,7 @@ digraph iCFG { 4 -> 3 ; -3 [label="3: Return Stmt \n n$0=*&#GB$f1::val:int [line 31]\n n$1=*&#GB$f2::val:int [line 31]\n *&return:int =(1 / ((n$0 + n$1) + 1)) [line 31]\n REMOVE_TEMPS(n$0,n$1); [line 31]\n APPLY_ABSTRACTION; [line 31]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&#GB$f1::val:int [line 31]\n n$1=*&#GB$f2::val:int [line 31]\n *&return:int =(1 / ((n$0 + n$1) + 1)) [line 31]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/namespace/namespace.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/namespace/namespace.cpp.dot index 695ffdda2..49842eb36 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/namespace/namespace.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/namespace/namespace.cpp.dot @@ -8,7 +8,7 @@ digraph iCFG { 23 -> 22 ; -22 [label="22: Call _fun_bar::Rectangle_set_values \n n$4=*&rect1:class bar::Rectangle [line 49]\n _fun_bar::Rectangle_set_values(&rect1:class bar::Rectangle &,3:int ,4:int ) [line 49]\n REMOVE_TEMPS(n$4); [line 49]\n " shape="box"] +22 [label="22: Call _fun_bar::Rectangle_set_values \n n$4=*&rect1:class bar::Rectangle [line 49]\n _fun_bar::Rectangle_set_values(&rect1:class bar::Rectangle &,3:int ,4:int ) [line 49]\n " shape="box"] 22 -> 21 ; @@ -16,7 +16,7 @@ digraph iCFG { 21 -> 20 ; -20 [label="20: Call _fun_foo::Rectangle_set_values \n n$3=*&rect2:class foo::Rectangle [line 52]\n _fun_foo::Rectangle_set_values(&rect2:class foo::Rectangle &,7:int ,10:int ) [line 52]\n REMOVE_TEMPS(n$3); [line 52]\n " shape="box"] +20 [label="20: Call _fun_foo::Rectangle_set_values \n n$3=*&rect2:class foo::Rectangle [line 52]\n _fun_foo::Rectangle_set_values(&rect2:class foo::Rectangle &,7:int ,10:int ) [line 52]\n " shape="box"] 20 -> 19 ; @@ -24,23 +24,23 @@ digraph iCFG { 19 -> 18 ; -18 [label="18: BinaryOperatorStmt: Assign \n n$2=_fun_foo::value() [line 55]\n *&i:int =n$2 [line 55]\n REMOVE_TEMPS(n$2); [line 55]\n NULLIFY(&i); [line 55]\n " shape="box"] +18 [label="18: BinaryOperatorStmt: Assign \n n$2=_fun_foo::value() [line 55]\n *&i:int =n$2 [line 55]\n " shape="box"] 18 -> 17 ; -17 [label="17: BinaryOperatorStmt: Assign \n n$1=_fun_bar::value() [line 56]\n *&i:int =n$1 [line 56]\n REMOVE_TEMPS(n$1); [line 56]\n NULLIFY(&i); [line 56]\n " shape="box"] +17 [label="17: BinaryOperatorStmt: Assign \n n$1=_fun_bar::value() [line 56]\n *&i:int =n$1 [line 56]\n " shape="box"] 17 -> 16 ; -16 [label="16: BinaryOperatorStmt: Assign \n n$0=*&#GB$bar::pi:double [line 57]\n *&j:double =n$0 [line 57]\n REMOVE_TEMPS(n$0); [line 57]\n NULLIFY(&j); [line 57]\n " shape="box"] +16 [label="16: BinaryOperatorStmt: Assign \n n$0=*&#GB$bar::pi:double [line 57]\n *&j:double =n$0 [line 57]\n " shape="box"] 16 -> 15 ; -15 [label="15: Return Stmt \n *&return:int =0 [line 58]\n APPLY_ABSTRACTION; [line 58]\n " shape="box"] +15 [label="15: Return Stmt \n *&return:int =0 [line 58]\n " shape="box"] 15 -> 14 ; -14 [label="14: Exit main \n NULLIFY(&x); [line 59]\n NULLIFY(&rect2); [line 59]\n NULLIFY(&rect1); [line 59]\n " color=yellow style=filled] +14 [label="14: Exit main \n " color=yellow style=filled] 13 [label="13: Start main\nFormals: \nLocals: rect2:class foo::Rectangle rect1:class bar::Rectangle x:class foo::my_record j:double i:int \n DECLARE_LOCALS(&return,&rect2,&rect1,&x,&j,&i); [line 41]\n " color=yellow style=filled] @@ -54,7 +54,7 @@ digraph iCFG { 11 -> 12 ; -10 [label="10: Return Stmt \n n$0=*&#GB$bar::pi:double [line 30]\n *&return:double =(2 * n$0) [line 30]\n REMOVE_TEMPS(n$0); [line 30]\n APPLY_ABSTRACTION; [line 30]\n " shape="box"] +10 [label="10: Return Stmt \n n$0=*&#GB$bar::pi:double [line 30]\n *&return:double =(2 * n$0) [line 30]\n " shape="box"] 10 -> 9 ; @@ -72,7 +72,7 @@ digraph iCFG { 6 -> 7 ; -5 [label="5: Return Stmt \n *&return:int =5 [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +5 [label="5: Return Stmt \n *&return:int =5 [line 17]\n " shape="box"] 5 -> 4 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/nestedoperators/var_decl_inside_for.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/nestedoperators/var_decl_inside_for.cpp.dot index 8683750b3..73e05ba7c 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/nestedoperators/var_decl_inside_for.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/nestedoperators/var_decl_inside_for.cpp.dot @@ -4,28 +4,28 @@ digraph iCFG { 20 -> 14 ; -19 [label="19: BinaryOperatorStmt: AddAssign \n n$3=*&x:int [line 20]\n n$4=*&result:int [line 20]\n *&result:int =(n$4 + n$3) [line 20]\n REMOVE_TEMPS(n$3,n$4); [line 20]\n NULLIFY(&x); [line 20]\n " shape="box"] +19 [label="19: BinaryOperatorStmt: AddAssign \n n$3=*&x:int [line 20]\n n$4=*&result:int [line 20]\n *&result:int =(n$4 + n$3) [line 20]\n " shape="box"] 19 -> 15 ; -18 [label="18: DeclStmt \n n$2=*&i:int [line 19]\n *&x:int =n$2 [line 19]\n REMOVE_TEMPS(n$2); [line 19]\n " shape="box"] +18 [label="18: DeclStmt \n n$2=*&i:int [line 19]\n *&x:int =n$2 [line 19]\n " shape="box"] 18 -> 16 ; 18 -> 17 ; -17 [label="17: Prune (false branch) \n n$1=*&x:int [line 19]\n PRUNE((n$1 == 0), false); [line 19]\n REMOVE_TEMPS(n$1); [line 19]\n NULLIFY(&i); [line 19]\n NULLIFY(&result); [line 19]\n NULLIFY(&x); [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="invhouse"] +17 [label="17: Prune (false branch) \n n$1=*&x:int [line 19]\n PRUNE((n$1 == 0), false); [line 19]\n " shape="invhouse"] 17 -> 12 ; -16 [label="16: Prune (true branch) \n n$1=*&x:int [line 19]\n PRUNE((n$1 != 0), true); [line 19]\n REMOVE_TEMPS(n$1); [line 19]\n " shape="invhouse"] +16 [label="16: Prune (true branch) \n n$1=*&x:int [line 19]\n PRUNE((n$1 != 0), true); [line 19]\n " shape="invhouse"] 16 -> 19 ; -15 [label="15: UnaryOperator \n n$0=*&i:int [line 19]\n *&i:int =(n$0 - 1) [line 19]\n REMOVE_TEMPS(n$0); [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +15 [label="15: UnaryOperator \n n$0=*&i:int [line 19]\n *&i:int =(n$0 - 1) [line 19]\n " shape="box"] 15 -> 13 ; -14 [label="14: DeclStmt \n *&i:int =10 [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +14 [label="14: DeclStmt \n *&i:int =10 [line 19]\n " shape="box"] 14 -> 13 ; @@ -44,7 +44,7 @@ digraph iCFG { 10 -> 4 ; -9 [label="9: BinaryOperatorStmt: AddAssign \n n$2=*&x:int [line 13]\n n$3=*&result:int [line 13]\n *&result:int =(n$3 + n$2) [line 13]\n REMOVE_TEMPS(n$2,n$3); [line 13]\n NULLIFY(&x); [line 13]\n " shape="box"] +9 [label="9: BinaryOperatorStmt: AddAssign \n n$2=*&x:int [line 13]\n n$3=*&result:int [line 13]\n *&result:int =(n$3 + n$2) [line 13]\n " shape="box"] 9 -> 5 ; @@ -53,19 +53,19 @@ digraph iCFG { 8 -> 6 ; 8 -> 7 ; -7 [label="7: Prune (false branch) \n n$1=*&x:int [line 12]\n PRUNE((n$1 == 0), false); [line 12]\n REMOVE_TEMPS(n$1); [line 12]\n NULLIFY(&i); [line 12]\n NULLIFY(&result); [line 12]\n NULLIFY(&x); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="invhouse"] +7 [label="7: Prune (false branch) \n n$1=*&x:int [line 12]\n PRUNE((n$1 == 0), false); [line 12]\n " shape="invhouse"] 7 -> 2 ; -6 [label="6: Prune (true branch) \n n$1=*&x:int [line 12]\n PRUNE((n$1 != 0), true); [line 12]\n REMOVE_TEMPS(n$1); [line 12]\n " shape="invhouse"] +6 [label="6: Prune (true branch) \n n$1=*&x:int [line 12]\n PRUNE((n$1 != 0), true); [line 12]\n " shape="invhouse"] 6 -> 9 ; -5 [label="5: UnaryOperator \n n$0=*&i:int [line 12]\n *&i:int =(n$0 + 1) [line 12]\n REMOVE_TEMPS(n$0); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +5 [label="5: UnaryOperator \n n$0=*&i:int [line 12]\n *&i:int =(n$0 + 1) [line 12]\n " shape="box"] 5 -> 3 ; -4 [label="4: DeclStmt \n *&i:int =0 [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +4 [label="4: DeclStmt \n *&i:int =0 [line 12]\n " shape="box"] 4 -> 3 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/nestedoperators/var_decl_inside_if.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/nestedoperators/var_decl_inside_if.cpp.dot index 96251a543..2ea727a08 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/nestedoperators/var_decl_inside_if.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/nestedoperators/var_decl_inside_if.cpp.dot @@ -1,10 +1,10 @@ /* @generated */ digraph iCFG { -73 [label="73: Return Stmt \n n$1=*&p:int * [line 60]\n n$2=*n$1:int [line 60]\n *&return:int =n$2 [line 60]\n REMOVE_TEMPS(n$1,n$2); [line 60]\n NULLIFY(&p); [line 60]\n APPLY_ABSTRACTION; [line 60]\n " shape="box"] +73 [label="73: Return Stmt \n n$1=*&p:int * [line 60]\n n$2=*n$1:int [line 60]\n *&return:int =n$2 [line 60]\n " shape="box"] 73 -> 66 ; -72 [label="72: Return Stmt \n *&return:int =1 [line 58]\n APPLY_ABSTRACTION; [line 58]\n " shape="box"] +72 [label="72: Return Stmt \n *&return:int =1 [line 58]\n " shape="box"] 72 -> 66 ; @@ -13,15 +13,15 @@ digraph iCFG { 71 -> 69 ; 71 -> 70 ; -70 [label="70: Prune (false branch) \n n$0=*&p:int * [line 57]\n PRUNE((n$0 == 0), false); [line 57]\n REMOVE_TEMPS(n$0); [line 57]\n " shape="invhouse"] +70 [label="70: Prune (false branch) \n n$0=*&p:int * [line 57]\n PRUNE((n$0 == 0), false); [line 57]\n " shape="invhouse"] 70 -> 73 ; -69 [label="69: Prune (true branch) \n n$0=*&p:int * [line 57]\n PRUNE((n$0 != 0), true); [line 57]\n REMOVE_TEMPS(n$0); [line 57]\n NULLIFY(&p); [line 57]\n " shape="invhouse"] +69 [label="69: Prune (true branch) \n n$0=*&p:int * [line 57]\n PRUNE((n$0 != 0), true); [line 57]\n " shape="invhouse"] 69 -> 72 ; -68 [label="68: between_join_and_exit \n APPLY_ABSTRACTION; [line 57]\n " shape="box"] +68 [label="68: between_join_and_exit \n " shape="box"] 68 -> 66 ; @@ -40,7 +40,7 @@ digraph iCFG { 64 -> 62 ; -63 [label="63: BinaryOperatorStmt: Assign \n n$3=*&a:int & [line 51]\n *n$3:int =0 [line 51]\n REMOVE_TEMPS(n$3); [line 51]\n NULLIFY(&a); [line 51]\n APPLY_ABSTRACTION; [line 51]\n " shape="box"] +63 [label="63: BinaryOperatorStmt: Assign \n n$3=*&a:int & [line 51]\n *n$3:int =0 [line 51]\n " shape="box"] 63 -> 59 ; @@ -49,11 +49,11 @@ digraph iCFG { 62 -> 60 ; 62 -> 61 ; -61 [label="61: Prune (false branch) \n n$1=*&a:int & [line 50]\n n$2=*n$1:int [line 50]\n PRUNE((n$2 == 0), false); [line 50]\n REMOVE_TEMPS(n$1,n$2); [line 50]\n NULLIFY(&a); [line 50]\n APPLY_ABSTRACTION; [line 50]\n " shape="invhouse"] +61 [label="61: Prune (false branch) \n n$1=*&a:int & [line 50]\n n$2=*n$1:int [line 50]\n PRUNE((n$2 == 0), false); [line 50]\n " shape="invhouse"] 61 -> 59 ; -60 [label="60: Prune (true branch) \n n$1=*&a:int & [line 50]\n n$2=*n$1:int [line 50]\n PRUNE((n$2 != 0), true); [line 50]\n REMOVE_TEMPS(n$1,n$2); [line 50]\n " shape="invhouse"] +60 [label="60: Prune (true branch) \n n$1=*&a:int & [line 50]\n n$2=*n$1:int [line 50]\n PRUNE((n$2 != 0), true); [line 50]\n " shape="invhouse"] 60 -> 63 ; @@ -61,31 +61,31 @@ digraph iCFG { 59 -> 58 ; -58 [label="58: Return Stmt \n n$0=*&r:int [line 53]\n *&return:int =(1 / n$0) [line 53]\n REMOVE_TEMPS(n$0); [line 53]\n APPLY_ABSTRACTION; [line 53]\n " shape="box"] +58 [label="58: Return Stmt \n n$0=*&r:int [line 53]\n *&return:int =(1 / n$0) [line 53]\n " shape="box"] 58 -> 57 ; -57 [label="57: Exit reference_init_div0 \n NULLIFY(&r); [line 54]\n " color=yellow style=filled] +57 [label="57: Exit reference_init_div0 \n " color=yellow style=filled] 56 [label="56: Start reference_init_div0\nFormals: \nLocals: a:int & r:int \n DECLARE_LOCALS(&return,&a,&r); [line 48]\n " color=yellow style=filled] 56 -> 64 ; -55 [label="55: Return Stmt \n n$3=*&a:int [line 44]\n *&return:int =(1 / (n$3 - 1)) [line 44]\n REMOVE_TEMPS(n$3); [line 44]\n NULLIFY(&a); [line 44]\n APPLY_ABSTRACTION; [line 44]\n " shape="box"] +55 [label="55: Return Stmt \n n$3=*&a:int [line 44]\n *&return:int =(1 / (n$3 - 1)) [line 44]\n " shape="box"] 55 -> 44 ; -54 [label="54: DeclStmt \n n$2=*&SIL_temp_conditional___n$1:int [line 43]\n *&a:int =n$2 [line 43]\n REMOVE_TEMPS(n$2); [line 43]\n NULLIFY(&SIL_temp_conditional___n$1); [line 43]\n " shape="box"] +54 [label="54: DeclStmt \n n$2=*&SIL_temp_conditional___n$1:int [line 43]\n *&a:int =n$2 [line 43]\n " shape="box"] 54 -> 47 ; 54 -> 48 ; -53 [label="53: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =0 [line 43]\n APPLY_ABSTRACTION; [line 43]\n " shape="box"] +53 [label="53: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =0 [line 43]\n " shape="box"] 53 -> 49 ; -52 [label="52: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =1 [line 43]\n APPLY_ABSTRACTION; [line 43]\n " shape="box"] +52 [label="52: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =1 [line 43]\n " shape="box"] 52 -> 49 ; @@ -101,15 +101,15 @@ digraph iCFG { 49 -> 54 ; -48 [label="48: Prune (false branch) \n n$0=*&a:int [line 43]\n PRUNE((n$0 == 0), false); [line 43]\n REMOVE_TEMPS(n$0); [line 43]\n NULLIFY(&a); [line 43]\n " shape="invhouse"] +48 [label="48: Prune (false branch) \n n$0=*&a:int [line 43]\n PRUNE((n$0 == 0), false); [line 43]\n " shape="invhouse"] 48 -> 45 ; -47 [label="47: Prune (true branch) \n n$0=*&a:int [line 43]\n PRUNE((n$0 != 0), true); [line 43]\n REMOVE_TEMPS(n$0); [line 43]\n " shape="invhouse"] +47 [label="47: Prune (true branch) \n n$0=*&a:int [line 43]\n PRUNE((n$0 != 0), true); [line 43]\n " shape="invhouse"] 47 -> 55 ; -46 [label="46: between_join_and_exit \n APPLY_ABSTRACTION; [line 43]\n " shape="box"] +46 [label="46: between_join_and_exit \n " shape="box"] 46 -> 44 ; @@ -125,24 +125,24 @@ digraph iCFG { 43 -> 50 ; 43 -> 51 ; -42 [label="42: Return Stmt \n n$2=*&a:int [line 38]\n *&return:int =(1 / (n$2 - 1)) [line 38]\n REMOVE_TEMPS(n$2); [line 38]\n NULLIFY(&a); [line 38]\n APPLY_ABSTRACTION; [line 38]\n " shape="box"] +42 [label="42: Return Stmt \n n$2=*&a:int [line 38]\n *&return:int =(1 / (n$2 - 1)) [line 38]\n " shape="box"] 42 -> 36 ; -41 [label="41: DeclStmt \n n$1=_fun_get1() [line 37]\n *&a:int =n$1 [line 37]\n REMOVE_TEMPS(n$1); [line 37]\n " shape="box"] +41 [label="41: DeclStmt \n n$1=_fun_get1() [line 37]\n *&a:int =n$1 [line 37]\n " shape="box"] 41 -> 39 ; 41 -> 40 ; -40 [label="40: Prune (false branch) \n n$0=*&a:int [line 37]\n PRUNE((n$0 == 0), false); [line 37]\n REMOVE_TEMPS(n$0); [line 37]\n NULLIFY(&a); [line 37]\n " shape="invhouse"] +40 [label="40: Prune (false branch) \n n$0=*&a:int [line 37]\n PRUNE((n$0 == 0), false); [line 37]\n " shape="invhouse"] 40 -> 37 ; -39 [label="39: Prune (true branch) \n n$0=*&a:int [line 37]\n PRUNE((n$0 != 0), true); [line 37]\n REMOVE_TEMPS(n$0); [line 37]\n " shape="invhouse"] +39 [label="39: Prune (true branch) \n n$0=*&a:int [line 37]\n PRUNE((n$0 != 0), true); [line 37]\n " shape="invhouse"] 39 -> 42 ; -38 [label="38: between_join_and_exit \n APPLY_ABSTRACTION; [line 37]\n " shape="box"] +38 [label="38: between_join_and_exit \n " shape="box"] 38 -> 36 ; @@ -157,7 +157,7 @@ digraph iCFG { 35 -> 41 ; -34 [label="34: Return Stmt \n *&return:int =1 [line 34]\n APPLY_ABSTRACTION; [line 34]\n " shape="box"] +34 [label="34: Return Stmt \n *&return:int =1 [line 34]\n " shape="box"] 34 -> 33 ; @@ -168,11 +168,11 @@ digraph iCFG { 32 -> 34 ; -31 [label="31: Return Stmt \n n$2=*&a:int [line 30]\n n$3=*&b:int [line 30]\n *&return:int =(1 / (n$2 + n$3)) [line 30]\n REMOVE_TEMPS(n$2,n$3); [line 30]\n NULLIFY(&a); [line 30]\n NULLIFY(&b); [line 30]\n APPLY_ABSTRACTION; [line 30]\n " shape="box"] +31 [label="31: Return Stmt \n n$2=*&a:int [line 30]\n n$3=*&b:int [line 30]\n *&return:int =(1 / (n$2 + n$3)) [line 30]\n " shape="box"] 31 -> 19 ; -30 [label="30: Return Stmt \n *&return:int =1 [line 28]\n APPLY_ABSTRACTION; [line 28]\n " shape="box"] +30 [label="30: Return Stmt \n *&return:int =1 [line 28]\n " shape="box"] 30 -> 19 ; @@ -181,11 +181,11 @@ digraph iCFG { 29 -> 27 ; 29 -> 28 ; -28 [label="28: Prune (false branch) \n n$1=*&b:int [line 27]\n PRUNE((n$1 == 0), false); [line 27]\n REMOVE_TEMPS(n$1); [line 27]\n " shape="invhouse"] +28 [label="28: Prune (false branch) \n n$1=*&b:int [line 27]\n PRUNE((n$1 == 0), false); [line 27]\n " shape="invhouse"] 28 -> 31 ; -27 [label="27: Prune (true branch) \n n$1=*&b:int [line 27]\n PRUNE((n$1 != 0), true); [line 27]\n REMOVE_TEMPS(n$1); [line 27]\n NULLIFY(&a); [line 27]\n NULLIFY(&b); [line 27]\n " shape="invhouse"] +27 [label="27: Prune (true branch) \n n$1=*&b:int [line 27]\n PRUNE((n$1 != 0), true); [line 27]\n " shape="invhouse"] 27 -> 30 ; @@ -193,7 +193,7 @@ digraph iCFG { 26 -> 20 ; -25 [label="25: Return Stmt \n *&return:int =1 [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"] +25 [label="25: Return Stmt \n *&return:int =1 [line 26]\n " shape="box"] 25 -> 19 ; @@ -202,15 +202,15 @@ digraph iCFG { 24 -> 22 ; 24 -> 23 ; -23 [label="23: Prune (false branch) \n n$0=*&a:int [line 25]\n PRUNE((n$0 == 0), false); [line 25]\n REMOVE_TEMPS(n$0); [line 25]\n " shape="invhouse"] +23 [label="23: Prune (false branch) \n n$0=*&a:int [line 25]\n PRUNE((n$0 == 0), false); [line 25]\n " shape="invhouse"] 23 -> 29 ; -22 [label="22: Prune (true branch) \n n$0=*&a:int [line 25]\n PRUNE((n$0 != 0), true); [line 25]\n REMOVE_TEMPS(n$0); [line 25]\n NULLIFY(&a); [line 25]\n " shape="invhouse"] +22 [label="22: Prune (true branch) \n n$0=*&a:int [line 25]\n PRUNE((n$0 != 0), true); [line 25]\n " shape="invhouse"] 22 -> 25 ; -21 [label="21: between_join_and_exit \n APPLY_ABSTRACTION; [line 25]\n " shape="box"] +21 [label="21: between_join_and_exit \n " shape="box"] 21 -> 19 ; @@ -225,11 +225,11 @@ digraph iCFG { 18 -> 24 ; -17 [label="17: Return Stmt \n n$2=*&a:int [line 20]\n *&return:int =(1 / n$2) [line 20]\n REMOVE_TEMPS(n$2); [line 20]\n NULLIFY(&a); [line 20]\n APPLY_ABSTRACTION; [line 20]\n " shape="box"] +17 [label="17: Return Stmt \n n$2=*&a:int [line 20]\n *&return:int =(1 / n$2) [line 20]\n " shape="box"] 17 -> 10 ; -16 [label="16: Return Stmt \n n$1=*&a:int [line 18]\n *&return:int =n$1 [line 18]\n REMOVE_TEMPS(n$1); [line 18]\n NULLIFY(&a); [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +16 [label="16: Return Stmt \n n$1=*&a:int [line 18]\n *&return:int =n$1 [line 18]\n " shape="box"] 16 -> 10 ; @@ -238,15 +238,15 @@ digraph iCFG { 15 -> 13 ; 15 -> 14 ; -14 [label="14: Prune (false branch) \n n$0=*&a:int [line 17]\n PRUNE((n$0 == 0), false); [line 17]\n REMOVE_TEMPS(n$0); [line 17]\n " shape="invhouse"] +14 [label="14: Prune (false branch) \n n$0=*&a:int [line 17]\n PRUNE((n$0 == 0), false); [line 17]\n " shape="invhouse"] 14 -> 17 ; -13 [label="13: Prune (true branch) \n n$0=*&a:int [line 17]\n PRUNE((n$0 != 0), true); [line 17]\n REMOVE_TEMPS(n$0); [line 17]\n " shape="invhouse"] +13 [label="13: Prune (true branch) \n n$0=*&a:int [line 17]\n PRUNE((n$0 != 0), true); [line 17]\n " shape="invhouse"] 13 -> 16 ; -12 [label="12: between_join_and_exit \n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +12 [label="12: between_join_and_exit \n " shape="box"] 12 -> 10 ; @@ -261,7 +261,7 @@ digraph iCFG { 9 -> 15 ; -8 [label="8: Return Stmt \n n$1=*&a:int [line 12]\n *&return:int =(1 / n$1) [line 12]\n REMOVE_TEMPS(n$1); [line 12]\n NULLIFY(&a); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +8 [label="8: Return Stmt \n n$1=*&a:int [line 12]\n *&return:int =(1 / n$1) [line 12]\n " shape="box"] 8 -> 2 ; @@ -270,15 +270,15 @@ digraph iCFG { 7 -> 5 ; 7 -> 6 ; -6 [label="6: Prune (false branch) \n n$0=*&a:int [line 11]\n PRUNE((n$0 == 0), false); [line 11]\n REMOVE_TEMPS(n$0); [line 11]\n NULLIFY(&a); [line 11]\n " shape="invhouse"] +6 [label="6: Prune (false branch) \n n$0=*&a:int [line 11]\n PRUNE((n$0 == 0), false); [line 11]\n " shape="invhouse"] 6 -> 3 ; -5 [label="5: Prune (true branch) \n n$0=*&a:int [line 11]\n PRUNE((n$0 != 0), true); [line 11]\n REMOVE_TEMPS(n$0); [line 11]\n " shape="invhouse"] +5 [label="5: Prune (true branch) \n n$0=*&a:int [line 11]\n PRUNE((n$0 != 0), true); [line 11]\n " shape="invhouse"] 5 -> 8 ; -4 [label="4: between_join_and_exit \n APPLY_ABSTRACTION; [line 11]\n " shape="box"] +4 [label="4: between_join_and_exit \n " shape="box"] 4 -> 2 ; 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 cf0a3ca4f..ba4d60e02 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 @@ -5,7 +5,7 @@ digraph iCFG { 14 -> 11 ; 14 -> 12 ; -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 [label="13: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 12]\n " shape="invhouse"] 13 -> 10 ; @@ -14,27 +14,27 @@ digraph iCFG { 12 -> 8 ; 12 -> 9 ; -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 [label="11: Prune (true branch) \n PRUNE(((n$0 == 1) != 0), true); [line 13]\n " shape="invhouse"] 11 -> 10 ; -10 [label="10: Return Stmt \n *&return:int =0 [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +10 [label="10: Return Stmt \n *&return:int =0 [line 14]\n " shape="box"] 10 -> 2 ; -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 [label="9: Prune (false branch) \n PRUNE(((n$0 == 2) == 0), false); [line 15]\n " shape="invhouse"] 9 -> 5 ; -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 [label="8: Prune (true branch) \n PRUNE(((n$0 == 2) != 0), true); [line 15]\n " shape="invhouse"] 8 -> 7 ; -7 [label="7: Return Stmt \n *&return:int =1 [line 16]\n APPLY_ABSTRACTION; [line 16]\n " shape="box"] +7 [label="7: Return Stmt \n *&return:int =1 [line 16]\n " shape="box"] 7 -> 2 ; -6 [label="6: Return Stmt \n n$2=*&x:int [line 18]\n *&return:int =n$2 [line 18]\n REMOVE_TEMPS(n$2); [line 18]\n NULLIFY(&x); [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +6 [label="6: Return Stmt \n n$2=*&x:int [line 18]\n *&return:int =n$2 [line 18]\n " shape="box"] 6 -> 2 ; @@ -42,7 +42,7 @@ digraph iCFG { 5 -> 6 ; -4 [label="4: DeclStmt \n n$1=*&a:int [line 11]\n *&x:int =n$1 [line 11]\n REMOVE_TEMPS(n$1); [line 11]\n NULLIFY(&a); [line 11]\n " shape="box"] +4 [label="4: DeclStmt \n n$1=*&a:int [line 11]\n *&x:int =n$1 [line 11]\n " shape="box"] 4 -> 3 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/nestedoperators/var_decl_inside_while.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/nestedoperators/var_decl_inside_while.cpp.dot index c4d50f109..70116bc1b 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/nestedoperators/var_decl_inside_while.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/nestedoperators/var_decl_inside_while.cpp.dot @@ -4,36 +4,36 @@ digraph iCFG { 28 -> 27 ; -27 [label="27: DeclStmt \n *&result:int =0 [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"] +27 [label="27: DeclStmt \n *&result:int =0 [line 22]\n " shape="box"] 27 -> 15 ; -26 [label="26: BinaryOperatorStmt: AddAssign \n n$6=*&a:int [line 24]\n n$7=*&result:int [line 24]\n *&result:int =(n$7 + n$6) [line 24]\n REMOVE_TEMPS(n$6,n$7); [line 24]\n NULLIFY(&a); [line 24]\n " shape="box"] +26 [label="26: BinaryOperatorStmt: AddAssign \n n$6=*&a:int [line 24]\n n$7=*&result:int [line 24]\n *&result:int =(n$7 + n$6) [line 24]\n " shape="box"] 26 -> 25 ; -25 [label="25: BinaryOperatorStmt: SubAssign \n n$5=*&x:int [line 25]\n *&x:int =(n$5 - 1) [line 25]\n REMOVE_TEMPS(n$5); [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="box"] +25 [label="25: BinaryOperatorStmt: SubAssign \n n$5=*&x:int [line 25]\n *&x:int =(n$5 - 1) [line 25]\n " shape="box"] 25 -> 15 ; -24 [label="24: DeclStmt \n n$4=*&SIL_temp_conditional___n$1:int [line 23]\n *&a:int =n$4 [line 23]\n REMOVE_TEMPS(n$4); [line 23]\n NULLIFY(&SIL_temp_conditional___n$1); [line 23]\n " shape="box"] +24 [label="24: DeclStmt \n n$4=*&SIL_temp_conditional___n$1:int [line 23]\n *&a:int =n$4 [line 23]\n " shape="box"] 24 -> 16 ; 24 -> 17 ; -23 [label="23: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =0 [line 23]\n APPLY_ABSTRACTION; [line 23]\n " shape="box"] +23 [label="23: ConditinalStmt Branch \n *&SIL_temp_conditional___n$1:int =0 [line 23]\n " shape="box"] 23 -> 18 ; -22 [label="22: ConditinalStmt Branch \n n$3=*&x:int [line 23]\n *&SIL_temp_conditional___n$1:int =n$3 [line 23]\n REMOVE_TEMPS(n$3); [line 23]\n APPLY_ABSTRACTION; [line 23]\n " shape="box"] +22 [label="22: ConditinalStmt Branch \n n$3=*&x:int [line 23]\n *&SIL_temp_conditional___n$1:int =n$3 [line 23]\n " shape="box"] 22 -> 18 ; -21 [label="21: Prune (false branch) \n PRUNE(((n$2 > 0) == 0), false); [line 23]\n REMOVE_TEMPS(n$2); [line 23]\n " shape="invhouse"] +21 [label="21: Prune (false branch) \n PRUNE(((n$2 > 0) == 0), false); [line 23]\n " shape="invhouse"] 21 -> 23 ; -20 [label="20: Prune (true branch) \n PRUNE(((n$2 > 0) != 0), true); [line 23]\n REMOVE_TEMPS(n$2); [line 23]\n " shape="invhouse"] +20 [label="20: Prune (true branch) \n PRUNE(((n$2 > 0) != 0), true); [line 23]\n " shape="invhouse"] 20 -> 22 ; @@ -46,11 +46,11 @@ digraph iCFG { 18 -> 24 ; -17 [label="17: Prune (false branch) \n n$0=*&a:int [line 23]\n PRUNE((n$0 == 0), false); [line 23]\n REMOVE_TEMPS(n$0); [line 23]\n NULLIFY(&a); [line 23]\n NULLIFY(&result); [line 23]\n NULLIFY(&x); [line 23]\n " shape="invhouse"] +17 [label="17: Prune (false branch) \n n$0=*&a:int [line 23]\n PRUNE((n$0 == 0), false); [line 23]\n " shape="invhouse"] 17 -> 14 ; -16 [label="16: Prune (true branch) \n n$0=*&a:int [line 23]\n PRUNE((n$0 != 0), true); [line 23]\n REMOVE_TEMPS(n$0); [line 23]\n " shape="invhouse"] +16 [label="16: Prune (true branch) \n n$0=*&a:int [line 23]\n PRUNE((n$0 != 0), true); [line 23]\n " shape="invhouse"] 16 -> 26 ; @@ -58,7 +58,7 @@ digraph iCFG { 15 -> 19 ; -14 [label="14: Return Stmt \n *&return:int =0 [line 27]\n APPLY_ABSTRACTION; [line 27]\n " shape="box"] +14 [label="14: Return Stmt \n *&return:int =0 [line 27]\n " shape="box"] 14 -> 13 ; @@ -73,28 +73,28 @@ digraph iCFG { 11 -> 10 ; -10 [label="10: DeclStmt \n *&result:int =0 [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +10 [label="10: DeclStmt \n *&result:int =0 [line 12]\n " shape="box"] 10 -> 4 ; -9 [label="9: BinaryOperatorStmt: AddAssign \n n$3=*&a:int [line 14]\n n$4=*&result:int [line 14]\n *&result:int =(n$4 + n$3) [line 14]\n REMOVE_TEMPS(n$3,n$4); [line 14]\n NULLIFY(&a); [line 14]\n " shape="box"] +9 [label="9: BinaryOperatorStmt: AddAssign \n n$3=*&a:int [line 14]\n n$4=*&result:int [line 14]\n *&result:int =(n$4 + n$3) [line 14]\n " shape="box"] 9 -> 8 ; -8 [label="8: BinaryOperatorStmt: SubAssign \n n$2=*&x:int [line 15]\n *&x:int =(n$2 - 1) [line 15]\n REMOVE_TEMPS(n$2); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +8 [label="8: BinaryOperatorStmt: SubAssign \n n$2=*&x:int [line 15]\n *&x:int =(n$2 - 1) [line 15]\n " shape="box"] 8 -> 4 ; -7 [label="7: DeclStmt \n n$1=*&x:int [line 13]\n *&a:int =n$1 [line 13]\n REMOVE_TEMPS(n$1); [line 13]\n " shape="box"] +7 [label="7: DeclStmt \n n$1=*&x:int [line 13]\n *&a:int =n$1 [line 13]\n " shape="box"] 7 -> 5 ; 7 -> 6 ; -6 [label="6: Prune (false branch) \n n$0=*&a:int [line 13]\n PRUNE((n$0 == 0), false); [line 13]\n REMOVE_TEMPS(n$0); [line 13]\n NULLIFY(&a); [line 13]\n NULLIFY(&result); [line 13]\n NULLIFY(&x); [line 13]\n " shape="invhouse"] +6 [label="6: Prune (false branch) \n n$0=*&a:int [line 13]\n PRUNE((n$0 == 0), false); [line 13]\n " shape="invhouse"] 6 -> 3 ; -5 [label="5: Prune (true branch) \n n$0=*&a:int [line 13]\n PRUNE((n$0 != 0), true); [line 13]\n REMOVE_TEMPS(n$0); [line 13]\n " shape="invhouse"] +5 [label="5: Prune (true branch) \n n$0=*&a:int [line 13]\n PRUNE((n$0 != 0), true); [line 13]\n " shape="invhouse"] 5 -> 9 ; @@ -102,7 +102,7 @@ digraph iCFG { 4 -> 7 ; -3 [label="3: Return Stmt \n *&return:int =0 [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =0 [line 17]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/reference/box.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/reference/box.cpp.dot index 3e9a74edd..e370b1f7c 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/reference/box.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/reference/box.cpp.dot @@ -4,15 +4,15 @@ digraph iCFG { 5 -> 4 ; -4 [label="4: DeclStmt \n *&r:int &=&v [line 12]\n NULLIFY(&r); [line 12]\n " shape="box"] +4 [label="4: DeclStmt \n *&r:int &=&v [line 12]\n " shape="box"] 4 -> 3 ; -3 [label="3: DeclStmt \n *&p:int *=&v [line 13]\n NULLIFY(&p); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="box"] +3 [label="3: DeclStmt \n *&p:int *=&v [line 13]\n " shape="box"] 3 -> 2 ; -2 [label="2: Exit test \n NULLIFY(&v); [line 14]\n " color=yellow style=filled] +2 [label="2: Exit test \n " color=yellow style=filled] 1 [label="1: Start test\nFormals: \nLocals: p:int * r:int & v:int \n DECLARE_LOCALS(&return,&p,&r,&v); [line 10]\n " color=yellow style=filled] diff --git a/infer/tests/codetoanalyze/cpp/frontend/reference/increment.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/reference/increment.cpp.dot index c93c1d78d..1b914bf8a 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/reference/increment.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/reference/increment.cpp.dot @@ -8,15 +8,15 @@ digraph iCFG { 10 -> 9 ; -9 [label="9: DeclStmt \n n$2=*&vr:int & [line 19]\n n$3=*n$2:int [line 19]\n *n$2:int =(n$3 + 1) [line 19]\n *&r:int &=n$2 [line 19]\n REMOVE_TEMPS(n$2,n$3); [line 19]\n NULLIFY(&r); [line 19]\n " shape="box"] +9 [label="9: DeclStmt \n n$2=*&vr:int & [line 19]\n n$3=*n$2:int [line 19]\n *n$2:int =(n$3 + 1) [line 19]\n *&r:int &=n$2 [line 19]\n " shape="box"] 9 -> 8 ; -8 [label="8: DeclStmt \n n$0=*&vr:int & [line 20]\n n$1=*n$0:int [line 20]\n *n$0:int =(n$1 - 1) [line 20]\n *&q:int &=n$0 [line 20]\n REMOVE_TEMPS(n$0,n$1); [line 20]\n NULLIFY(&q); [line 20]\n NULLIFY(&vr); [line 20]\n APPLY_ABSTRACTION; [line 20]\n " shape="box"] +8 [label="8: DeclStmt \n n$0=*&vr:int & [line 20]\n n$1=*n$0:int [line 20]\n *n$0:int =(n$1 - 1) [line 20]\n *&q:int &=n$0 [line 20]\n " shape="box"] 8 -> 7 ; -7 [label="7: Exit using_ref \n NULLIFY(&v); [line 21]\n " color=yellow style=filled] +7 [label="7: Exit using_ref \n " color=yellow style=filled] 6 [label="6: Start using_ref\nFormals: \nLocals: q:int & r:int & vr:int & v:int \n DECLARE_LOCALS(&return,&q,&r,&vr,&v); [line 16]\n " color=yellow style=filled] @@ -27,15 +27,15 @@ digraph iCFG { 5 -> 4 ; -4 [label="4: DeclStmt \n n$1=*&v:int [line 12]\n *&v:int =(n$1 + 1) [line 12]\n *&r:int &=&v [line 12]\n REMOVE_TEMPS(n$1); [line 12]\n NULLIFY(&r); [line 12]\n " shape="box"] +4 [label="4: DeclStmt \n n$1=*&v:int [line 12]\n *&v:int =(n$1 + 1) [line 12]\n *&r:int &=&v [line 12]\n " shape="box"] 4 -> 3 ; -3 [label="3: DeclStmt \n n$0=*&v:int [line 13]\n *&v:int =(n$0 - 1) [line 13]\n *&q:int &=&v [line 13]\n REMOVE_TEMPS(n$0); [line 13]\n NULLIFY(&q); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="box"] +3 [label="3: DeclStmt \n n$0=*&v:int [line 13]\n *&v:int =(n$0 - 1) [line 13]\n *&q:int &=&v [line 13]\n " shape="box"] 3 -> 2 ; -2 [label="2: Exit using_value \n NULLIFY(&v); [line 14]\n " color=yellow style=filled] +2 [label="2: Exit using_value \n " color=yellow style=filled] 1 [label="1: Start using_value\nFormals: \nLocals: q:int & r:int & v:int \n DECLARE_LOCALS(&return,&q,&r,&v); [line 10]\n " color=yellow style=filled] diff --git a/infer/tests/codetoanalyze/cpp/frontend/reference/init.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/reference/init.cpp.dot index 4197f493a..2b823d780 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/reference/init.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/reference/init.cpp.dot @@ -1,14 +1,14 @@ /* @generated */ digraph iCFG { -15 [label="15: DeclStmt \n n$2=*&par:int * [line 23]\n n$3=*n$2:int [line 23]\n *&v:int =n$3 [line 23]\n REMOVE_TEMPS(n$2,n$3); [line 23]\n NULLIFY(&v); [line 23]\n " shape="box"] +15 [label="15: DeclStmt \n n$2=*&par:int * [line 23]\n n$3=*n$2:int [line 23]\n *&v:int =n$3 [line 23]\n " shape="box"] 15 -> 14 ; -14 [label="14: DeclStmt \n n$1=*&par:int * [line 24]\n *&d:int &=n$1 [line 24]\n REMOVE_TEMPS(n$1); [line 24]\n NULLIFY(&d); [line 24]\n " shape="box"] +14 [label="14: DeclStmt \n n$1=*&par:int * [line 24]\n *&d:int &=n$1 [line 24]\n " shape="box"] 14 -> 13 ; -13 [label="13: DeclStmt \n n$0=*&par:int * [line 25]\n *&p:int *=n$0 [line 25]\n REMOVE_TEMPS(n$0); [line 25]\n NULLIFY(&p); [line 25]\n NULLIFY(&par); [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="box"] +13 [label="13: DeclStmt \n n$0=*&par:int * [line 25]\n *&p:int *=n$0 [line 25]\n " shape="box"] 13 -> 12 ; @@ -19,34 +19,34 @@ digraph iCFG { 11 -> 15 ; -10 [label="10: DeclStmt \n n$0=*&par:int [line 17]\n *&v:int =n$0 [line 17]\n REMOVE_TEMPS(n$0); [line 17]\n NULLIFY(&v); [line 17]\n " shape="box"] +10 [label="10: DeclStmt \n n$0=*&par:int [line 17]\n *&v:int =n$0 [line 17]\n " shape="box"] 10 -> 9 ; -9 [label="9: DeclStmt \n *&d:int &=&par [line 18]\n NULLIFY(&d); [line 18]\n " shape="box"] +9 [label="9: DeclStmt \n *&d:int &=&par [line 18]\n " shape="box"] 9 -> 8 ; -8 [label="8: DeclStmt \n *&p:int *=&par [line 19]\n NULLIFY(&p); [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +8 [label="8: DeclStmt \n *&p:int *=&par [line 19]\n " shape="box"] 8 -> 7 ; -7 [label="7: Exit init_from_val \n NULLIFY(&par); [line 20]\n " color=yellow style=filled] +7 [label="7: Exit init_from_val \n " color=yellow style=filled] 6 [label="6: Start init_from_val\nFormals: par:int \nLocals: p:int * d:int & v:int \n DECLARE_LOCALS(&return,&p,&d,&v); [line 16]\n " color=yellow style=filled] 6 -> 10 ; -5 [label="5: DeclStmt \n n$2=*&par:int & [line 11]\n n$3=*n$2:int [line 11]\n *&v:int =n$3 [line 11]\n REMOVE_TEMPS(n$2,n$3); [line 11]\n NULLIFY(&v); [line 11]\n " shape="box"] +5 [label="5: DeclStmt \n n$2=*&par:int & [line 11]\n n$3=*n$2:int [line 11]\n *&v:int =n$3 [line 11]\n " shape="box"] 5 -> 4 ; -4 [label="4: DeclStmt \n n$1=*&par:int & [line 12]\n *&d:int &=n$1 [line 12]\n REMOVE_TEMPS(n$1); [line 12]\n NULLIFY(&d); [line 12]\n " shape="box"] +4 [label="4: DeclStmt \n n$1=*&par:int & [line 12]\n *&d:int &=n$1 [line 12]\n " shape="box"] 4 -> 3 ; -3 [label="3: DeclStmt \n n$0=*&par:int & [line 13]\n *&p:int *=n$0 [line 13]\n REMOVE_TEMPS(n$0); [line 13]\n NULLIFY(&p); [line 13]\n NULLIFY(&par); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="box"] +3 [label="3: DeclStmt \n n$0=*&par:int & [line 13]\n *&p:int *=n$0 [line 13]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/reference/member_access.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/reference/member_access.cpp.dot index 1aed91542..0a3e6666f 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/reference/member_access.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/reference/member_access.cpp.dot @@ -1,10 +1,10 @@ /* @generated */ digraph iCFG { -11 [label="11: DeclStmt \n n$3=*&x:class X * [line 21]\n n$4=*n$3.f:int [line 21]\n *&f:int =n$4 [line 21]\n REMOVE_TEMPS(n$3,n$4); [line 21]\n NULLIFY(&f); [line 21]\n " shape="box"] +11 [label="11: DeclStmt \n n$3=*&x:class X * [line 21]\n n$4=*n$3.f:int [line 21]\n *&f:int =n$4 [line 21]\n " shape="box"] 11 -> 10 ; -10 [label="10: DeclStmt \n n$0=*&x:class X * [line 22]\n n$1=*n$0:class X [line 22]\n n$2=_fun_X_call(n$0:class X *) [line 22]\n *&c:int =n$2 [line 22]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 22]\n NULLIFY(&c); [line 22]\n NULLIFY(&x); [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"] +10 [label="10: DeclStmt \n n$0=*&x:class X * [line 22]\n n$1=*n$0:class X [line 22]\n n$2=_fun_X_call(n$0:class X *) [line 22]\n *&c:int =n$2 [line 22]\n " shape="box"] 10 -> 9 ; @@ -15,11 +15,11 @@ digraph iCFG { 8 -> 11 ; -7 [label="7: DeclStmt \n n$3=*&x:class X & [line 16]\n n$4=*n$3.f:int [line 16]\n *&f:int =n$4 [line 16]\n REMOVE_TEMPS(n$3,n$4); [line 16]\n NULLIFY(&f); [line 16]\n " shape="box"] +7 [label="7: DeclStmt \n n$3=*&x:class X & [line 16]\n n$4=*n$3.f:int [line 16]\n *&f:int =n$4 [line 16]\n " shape="box"] 7 -> 6 ; -6 [label="6: DeclStmt \n n$0=*&x:class X & [line 17]\n n$1=*n$0:class X [line 17]\n n$2=_fun_X_call(n$0:class X &) [line 17]\n *&c:int =n$2 [line 17]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 17]\n NULLIFY(&c); [line 17]\n NULLIFY(&x); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +6 [label="6: DeclStmt \n n$0=*&x:class X & [line 17]\n n$1=*n$0:class X [line 17]\n n$2=_fun_X_call(n$0:class X &) [line 17]\n *&c:int =n$2 [line 17]\n " shape="box"] 6 -> 5 ; @@ -30,7 +30,7 @@ digraph iCFG { 4 -> 7 ; -3 [label="3: Return Stmt \n n$0=*&this:class X * [line 12]\n n$1=*n$0.f:int [line 12]\n *&return:int =n$1 [line 12]\n REMOVE_TEMPS(n$0,n$1); [line 12]\n NULLIFY(&this); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&this:class X * [line 12]\n n$1=*n$0.f:int [line 12]\n *&return:int =n$1 [line 12]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/reference/member_access_from_return.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/reference/member_access_from_return.cpp.dot index 697be37eb..b2fe71ae7 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/reference/member_access_from_return.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/reference/member_access_from_return.cpp.dot @@ -1,10 +1,10 @@ /* @generated */ digraph iCFG { -19 [label="19: DeclStmt \n n$3=_fun_get_ptr() [line 25]\n n$4=*n$3.f:int [line 25]\n *&f:int =n$4 [line 25]\n REMOVE_TEMPS(n$3,n$4); [line 25]\n NULLIFY(&f); [line 25]\n " shape="box"] +19 [label="19: DeclStmt \n n$3=_fun_get_ptr() [line 25]\n n$4=*n$3.f:int [line 25]\n *&f:int =n$4 [line 25]\n " shape="box"] 19 -> 18 ; -18 [label="18: DeclStmt \n n$0=_fun_get_ptr() [line 26]\n n$1=*n$0:class X [line 26]\n n$2=_fun_X_call(n$0:class X *) [line 26]\n *&c:int =n$2 [line 26]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 26]\n NULLIFY(&c); [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"] +18 [label="18: DeclStmt \n n$0=_fun_get_ptr() [line 26]\n n$1=*n$0:class X [line 26]\n n$2=_fun_X_call(n$0:class X *) [line 26]\n *&c:int =n$2 [line 26]\n " shape="box"] 18 -> 17 ; @@ -15,11 +15,11 @@ digraph iCFG { 16 -> 19 ; -15 [label="15: DeclStmt \n n$3=_fun_get_ref() [line 20]\n n$4=*n$3.f:int [line 20]\n *&f:int =n$4 [line 20]\n REMOVE_TEMPS(n$3,n$4); [line 20]\n NULLIFY(&f); [line 20]\n " shape="box"] +15 [label="15: DeclStmt \n n$3=_fun_get_ref() [line 20]\n n$4=*n$3.f:int [line 20]\n *&f:int =n$4 [line 20]\n " shape="box"] 15 -> 14 ; -14 [label="14: DeclStmt \n n$0=_fun_get_ref() [line 21]\n n$1=*n$0:class X [line 21]\n n$2=_fun_X_call(n$0:class X &) [line 21]\n *&c:int =n$2 [line 21]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 21]\n NULLIFY(&c); [line 21]\n APPLY_ABSTRACTION; [line 21]\n " shape="box"] +14 [label="14: DeclStmt \n n$0=_fun_get_ref() [line 21]\n n$1=*n$0:class X [line 21]\n n$2=_fun_X_call(n$0:class X &) [line 21]\n *&c:int =n$2 [line 21]\n " shape="box"] 14 -> 13 ; @@ -30,7 +30,7 @@ digraph iCFG { 12 -> 15 ; -11 [label="11: Return Stmt \n *&return:class X &=&#GB$global [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +11 [label="11: Return Stmt \n *&return:class X &=&#GB$global [line 17]\n " shape="box"] 11 -> 10 ; @@ -41,7 +41,7 @@ digraph iCFG { 9 -> 11 ; -8 [label="8: Return Stmt \n *&return:class X *=&#GB$global [line 16]\n APPLY_ABSTRACTION; [line 16]\n " shape="box"] +8 [label="8: Return Stmt \n *&return:class X *=&#GB$global [line 16]\n " shape="box"] 8 -> 7 ; @@ -59,7 +59,7 @@ digraph iCFG { 4 -> 5 ; -3 [label="3: Return Stmt \n n$0=*&this:class X * [line 12]\n n$1=*n$0.f:int [line 12]\n *&return:int =n$1 [line 12]\n REMOVE_TEMPS(n$0,n$1); [line 12]\n NULLIFY(&this); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&this:class X * [line 12]\n n$1=*n$0.f:int [line 12]\n *&return:int =n$1 [line 12]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/reference/nested_assignment.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/reference/nested_assignment.cpp.dot index dfd1f309c..2b7ad4c79 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/reference/nested_assignment.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/reference/nested_assignment.cpp.dot @@ -4,19 +4,19 @@ digraph iCFG { 16 -> 15 ; -15 [label="15: DeclStmt \n n$3=*&a:int [line 24]\n *&b:int =n$3 [line 24]\n REMOVE_TEMPS(n$3); [line 24]\n NULLIFY(&b); [line 24]\n " shape="box"] +15 [label="15: DeclStmt \n n$3=*&a:int [line 24]\n *&b:int =n$3 [line 24]\n " shape="box"] 15 -> 14 ; -14 [label="14: DeclStmt \n *&b:int =4 [line 28]\n n$2=*&b:int [line 28]\n *&a:int =n$2 [line 28]\n *&ref_from_val:int &=&a [line 28]\n REMOVE_TEMPS(n$2); [line 28]\n NULLIFY(&b); [line 28]\n " shape="box"] +14 [label="14: DeclStmt \n *&b:int =4 [line 28]\n n$2=*&b:int [line 28]\n *&a:int =n$2 [line 28]\n *&ref_from_val:int &=&a [line 28]\n " shape="box"] 14 -> 13 ; -13 [label="13: DeclStmt \n n$0=*&ref_from_val:int & [line 29]\n *&b:int =5 [line 29]\n n$1=*&b:int [line 29]\n *n$0:int =n$1 [line 29]\n *&ref_from_ref:int &=n$0 [line 29]\n REMOVE_TEMPS(n$0,n$1); [line 29]\n NULLIFY(&b); [line 29]\n NULLIFY(&ref_from_ref); [line 29]\n NULLIFY(&ref_from_val); [line 29]\n APPLY_ABSTRACTION; [line 29]\n " shape="box"] +13 [label="13: DeclStmt \n n$0=*&ref_from_val:int & [line 29]\n *&b:int =5 [line 29]\n n$1=*&b:int [line 29]\n *n$0:int =n$1 [line 29]\n *&ref_from_ref:int &=n$0 [line 29]\n " shape="box"] 13 -> 12 ; -12 [label="12: Exit crazy_nested \n NULLIFY(&a); [line 30]\n " color=yellow style=filled] +12 [label="12: Exit crazy_nested \n " color=yellow style=filled] 11 [label="11: Start crazy_nested\nFormals: \nLocals: ref_from_ref:int & ref_from_val:int & b:int a:int \n DECLARE_LOCALS(&return,&ref_from_ref,&ref_from_val,&b,&a); [line 22]\n " color=yellow style=filled] @@ -31,11 +31,11 @@ digraph iCFG { 9 -> 8 ; -8 [label="8: DeclStmt \n n$0=*&ref_from_val:int & [line 19]\n *n$0:int =6 [line 19]\n *&ref_from_ref:int &=n$0 [line 19]\n REMOVE_TEMPS(n$0); [line 19]\n NULLIFY(&ref_from_ref); [line 19]\n NULLIFY(&ref_from_val); [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +8 [label="8: DeclStmt \n n$0=*&ref_from_val:int & [line 19]\n *n$0:int =6 [line 19]\n *&ref_from_ref:int &=n$0 [line 19]\n " shape="box"] 8 -> 7 ; -7 [label="7: Exit nested \n NULLIFY(&a); [line 20]\n " color=yellow style=filled] +7 [label="7: Exit nested \n " color=yellow style=filled] 6 [label="6: Start nested\nFormals: \nLocals: ref_from_ref:int & ref_from_val:int & a:int \n DECLARE_LOCALS(&return,&ref_from_ref,&ref_from_val,&a); [line 16]\n " color=yellow style=filled] @@ -50,11 +50,11 @@ digraph iCFG { 4 -> 3 ; -3 [label="3: DeclStmt \n n$0=*&ref_from_val:int & [line 13]\n *&ref_from_ref:int &=n$0 [line 13]\n REMOVE_TEMPS(n$0); [line 13]\n NULLIFY(&ref_from_ref); [line 13]\n NULLIFY(&ref_from_val); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="box"] +3 [label="3: DeclStmt \n n$0=*&ref_from_val:int & [line 13]\n *&ref_from_ref:int &=n$0 [line 13]\n " shape="box"] 3 -> 2 ; -2 [label="2: Exit normal \n NULLIFY(&a); [line 14]\n " color=yellow style=filled] +2 [label="2: Exit normal \n " color=yellow style=filled] 1 [label="1: Start normal\nFormals: \nLocals: ref_from_ref:int & ref_from_val:int & a:int \n DECLARE_LOCALS(&return,&ref_from_ref,&ref_from_val,&a); [line 10]\n " color=yellow style=filled] diff --git a/infer/tests/codetoanalyze/cpp/frontend/reference/reference_field.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/reference/reference_field.cpp.dot index b1018f323..45b0bf564 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/reference/reference_field.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/reference/reference_field.cpp.dot @@ -16,11 +16,11 @@ digraph iCFG { 116 -> 115 ; -115 [label="115: Return Stmt \n n$0=*&r:class Val [line 141]\n n$1=_fun_Val_getI(&r:class Val &) [line 141]\n *&return:int =(1 / n$1) [line 141]\n REMOVE_TEMPS(n$0,n$1); [line 141]\n APPLY_ABSTRACTION; [line 141]\n " shape="box"] +115 [label="115: Return Stmt \n n$0=*&r:class Val [line 141]\n n$1=_fun_Val_getI(&r:class Val &) [line 141]\n *&return:int =(1 / n$1) [line 141]\n " shape="box"] 115 -> 114 ; -114 [label="114: Exit val_getI_div0 \n NULLIFY(&x); [line 142]\n NULLIFY(&r); [line 142]\n " color=yellow style=filled] +114 [label="114: Exit val_getI_div0 \n " color=yellow style=filled] 113 [label="113: Start val_getI_div0\nFormals: \nLocals: r:class Val x:class X \n DECLARE_LOCALS(&return,&r,&x); [line 136]\n " color=yellow style=filled] @@ -43,11 +43,11 @@ digraph iCFG { 109 -> 108 ; -108 [label="108: Return Stmt \n n$0=*&r:class Val [line 133]\n n$1=_fun_Val_getF(&r:class Val &) [line 133]\n *&return:int =(1 / n$1) [line 133]\n REMOVE_TEMPS(n$0,n$1); [line 133]\n APPLY_ABSTRACTION; [line 133]\n " shape="box"] +108 [label="108: Return Stmt \n n$0=*&r:class Val [line 133]\n n$1=_fun_Val_getF(&r:class Val &) [line 133]\n *&return:int =(1 / n$1) [line 133]\n " shape="box"] 108 -> 107 ; -107 [label="107: Exit val_getF_div0 \n NULLIFY(&x); [line 134]\n NULLIFY(&r); [line 134]\n " color=yellow style=filled] +107 [label="107: Exit val_getF_div0 \n " color=yellow style=filled] 106 [label="106: Start val_getF_div0\nFormals: \nLocals: r:class Val x:class X \n DECLARE_LOCALS(&return,&r,&x); [line 128]\n " color=yellow style=filled] @@ -70,11 +70,11 @@ digraph iCFG { 102 -> 101 ; -101 [label="101: Return Stmt \n n$0=*&r.i:int [line 125]\n *&return:int =(1 / n$0) [line 125]\n REMOVE_TEMPS(n$0); [line 125]\n APPLY_ABSTRACTION; [line 125]\n " shape="box"] +101 [label="101: Return Stmt \n n$0=*&r.i:int [line 125]\n *&return:int =(1 / n$0) [line 125]\n " shape="box"] 101 -> 100 ; -100 [label="100: Exit val_I_div0 \n NULLIFY(&x); [line 126]\n NULLIFY(&r); [line 126]\n " color=yellow style=filled] +100 [label="100: Exit val_I_div0 \n " color=yellow style=filled] 99 [label="99: Start val_I_div0\nFormals: \nLocals: r:class Val x:class X \n DECLARE_LOCALS(&return,&r,&x); [line 120]\n " color=yellow style=filled] @@ -97,11 +97,11 @@ digraph iCFG { 95 -> 94 ; -94 [label="94: Return Stmt \n n$0=*&r.x.f:int [line 117]\n *&return:int =(1 / n$0) [line 117]\n REMOVE_TEMPS(n$0); [line 117]\n APPLY_ABSTRACTION; [line 117]\n " shape="box"] +94 [label="94: Return Stmt \n n$0=*&r.x.f:int [line 117]\n *&return:int =(1 / n$0) [line 117]\n " shape="box"] 94 -> 93 ; -93 [label="93: Exit val_F_div0 \n NULLIFY(&x); [line 118]\n NULLIFY(&r); [line 118]\n " color=yellow style=filled] +93 [label="93: Exit val_F_div0 \n " color=yellow style=filled] 92 [label="92: Start val_F_div0\nFormals: \nLocals: r:class Val x:class X \n DECLARE_LOCALS(&return,&r,&x); [line 112]\n " color=yellow style=filled] @@ -124,11 +124,11 @@ digraph iCFG { 88 -> 87 ; -87 [label="87: Return Stmt \n n$0=*&r:class Ptr [line 108]\n n$1=_fun_Ptr_getI(&r:class Ptr &) [line 108]\n *&return:int =(1 / n$1) [line 108]\n REMOVE_TEMPS(n$0,n$1); [line 108]\n APPLY_ABSTRACTION; [line 108]\n " shape="box"] +87 [label="87: Return Stmt \n n$0=*&r:class Ptr [line 108]\n n$1=_fun_Ptr_getI(&r:class Ptr &) [line 108]\n *&return:int =(1 / n$1) [line 108]\n " shape="box"] 87 -> 86 ; -86 [label="86: Exit ptr_getI_div0 \n NULLIFY(&x); [line 109]\n NULLIFY(&r); [line 109]\n " color=yellow style=filled] +86 [label="86: Exit ptr_getI_div0 \n " color=yellow style=filled] 85 [label="85: Start ptr_getI_div0\nFormals: \nLocals: r:class Ptr x:class X \n DECLARE_LOCALS(&return,&r,&x); [line 103]\n " color=yellow style=filled] @@ -151,11 +151,11 @@ digraph iCFG { 81 -> 80 ; -80 [label="80: Return Stmt \n n$0=*&r:class Ptr [line 100]\n n$1=_fun_Ptr_getF(&r:class Ptr &) [line 100]\n *&return:int =(1 / n$1) [line 100]\n REMOVE_TEMPS(n$0,n$1); [line 100]\n APPLY_ABSTRACTION; [line 100]\n " shape="box"] +80 [label="80: Return Stmt \n n$0=*&r:class Ptr [line 100]\n n$1=_fun_Ptr_getF(&r:class Ptr &) [line 100]\n *&return:int =(1 / n$1) [line 100]\n " shape="box"] 80 -> 79 ; -79 [label="79: Exit ptr_getF_div0 \n NULLIFY(&x); [line 101]\n NULLIFY(&r); [line 101]\n " color=yellow style=filled] +79 [label="79: Exit ptr_getF_div0 \n " color=yellow style=filled] 78 [label="78: Start ptr_getF_div0\nFormals: \nLocals: r:class Ptr x:class X \n DECLARE_LOCALS(&return,&r,&x); [line 95]\n " color=yellow style=filled] @@ -178,11 +178,11 @@ digraph iCFG { 74 -> 73 ; -73 [label="73: Return Stmt \n n$0=*&r.i:int * [line 92]\n n$1=*n$0:int [line 92]\n *&return:int =(1 / n$1) [line 92]\n REMOVE_TEMPS(n$0,n$1); [line 92]\n APPLY_ABSTRACTION; [line 92]\n " shape="box"] +73 [label="73: Return Stmt \n n$0=*&r.i:int * [line 92]\n n$1=*n$0:int [line 92]\n *&return:int =(1 / n$1) [line 92]\n " shape="box"] 73 -> 72 ; -72 [label="72: Exit ptr_I_div0 \n NULLIFY(&x); [line 93]\n NULLIFY(&r); [line 93]\n " color=yellow style=filled] +72 [label="72: Exit ptr_I_div0 \n " color=yellow style=filled] 71 [label="71: Start ptr_I_div0\nFormals: \nLocals: r:class Ptr x:class X \n DECLARE_LOCALS(&return,&r,&x); [line 87]\n " color=yellow style=filled] @@ -205,11 +205,11 @@ digraph iCFG { 67 -> 66 ; -66 [label="66: Return Stmt \n n$0=*&r.x:class X * [line 84]\n n$1=*n$0.f:int [line 84]\n *&return:int =(1 / n$1) [line 84]\n REMOVE_TEMPS(n$0,n$1); [line 84]\n APPLY_ABSTRACTION; [line 84]\n " shape="box"] +66 [label="66: Return Stmt \n n$0=*&r.x:class X * [line 84]\n n$1=*n$0.f:int [line 84]\n *&return:int =(1 / n$1) [line 84]\n " shape="box"] 66 -> 65 ; -65 [label="65: Exit ptr_F_div0 \n NULLIFY(&x); [line 85]\n NULLIFY(&r); [line 85]\n " color=yellow style=filled] +65 [label="65: Exit ptr_F_div0 \n " color=yellow style=filled] 64 [label="64: Start ptr_F_div0\nFormals: \nLocals: r:class Ptr x:class X \n DECLARE_LOCALS(&return,&r,&x); [line 79]\n " color=yellow style=filled] @@ -232,11 +232,11 @@ digraph iCFG { 60 -> 59 ; -59 [label="59: Return Stmt \n n$0=*&r:class Ref [line 75]\n n$1=_fun_Ref_getI(&r:class Ref &) [line 75]\n *&return:int =(1 / n$1) [line 75]\n REMOVE_TEMPS(n$0,n$1); [line 75]\n APPLY_ABSTRACTION; [line 75]\n " shape="box"] +59 [label="59: Return Stmt \n n$0=*&r:class Ref [line 75]\n n$1=_fun_Ref_getI(&r:class Ref &) [line 75]\n *&return:int =(1 / n$1) [line 75]\n " shape="box"] 59 -> 58 ; -58 [label="58: Exit ref_getI_div0 \n NULLIFY(&x); [line 76]\n NULLIFY(&r); [line 76]\n " color=yellow style=filled] +58 [label="58: Exit ref_getI_div0 \n " color=yellow style=filled] 57 [label="57: Start ref_getI_div0\nFormals: \nLocals: r:class Ref x:class X \n DECLARE_LOCALS(&return,&r,&x); [line 70]\n " color=yellow style=filled] @@ -259,11 +259,11 @@ digraph iCFG { 53 -> 52 ; -52 [label="52: Return Stmt \n n$0=*&r:class Ref [line 67]\n n$1=_fun_Ref_getF(&r:class Ref &) [line 67]\n *&return:int =(1 / n$1) [line 67]\n REMOVE_TEMPS(n$0,n$1); [line 67]\n APPLY_ABSTRACTION; [line 67]\n " shape="box"] +52 [label="52: Return Stmt \n n$0=*&r:class Ref [line 67]\n n$1=_fun_Ref_getF(&r:class Ref &) [line 67]\n *&return:int =(1 / n$1) [line 67]\n " shape="box"] 52 -> 51 ; -51 [label="51: Exit ref_getF_div0 \n NULLIFY(&x); [line 68]\n NULLIFY(&r); [line 68]\n " color=yellow style=filled] +51 [label="51: Exit ref_getF_div0 \n " color=yellow style=filled] 50 [label="50: Start ref_getF_div0\nFormals: \nLocals: r:class Ref x:class X \n DECLARE_LOCALS(&return,&r,&x); [line 62]\n " color=yellow style=filled] @@ -286,11 +286,11 @@ digraph iCFG { 46 -> 45 ; -45 [label="45: Return Stmt \n n$0=*&r.i:int & [line 59]\n n$1=*n$0:int & [line 59]\n *&return:int =(1 / n$1) [line 59]\n REMOVE_TEMPS(n$0,n$1); [line 59]\n APPLY_ABSTRACTION; [line 59]\n " shape="box"] +45 [label="45: Return Stmt \n n$0=*&r.i:int & [line 59]\n n$1=*n$0:int & [line 59]\n *&return:int =(1 / n$1) [line 59]\n " shape="box"] 45 -> 44 ; -44 [label="44: Exit ref_I_div0 \n NULLIFY(&x); [line 60]\n NULLIFY(&r); [line 60]\n " color=yellow style=filled] +44 [label="44: Exit ref_I_div0 \n " color=yellow style=filled] 43 [label="43: Start ref_I_div0\nFormals: \nLocals: r:class Ref x:class X \n DECLARE_LOCALS(&return,&r,&x); [line 54]\n " color=yellow style=filled] @@ -313,18 +313,18 @@ digraph iCFG { 39 -> 38 ; -38 [label="38: Return Stmt \n n$0=*&r.x:class X & [line 51]\n n$1=*n$0.f:int [line 51]\n *&return:int =(1 / n$1) [line 51]\n REMOVE_TEMPS(n$0,n$1); [line 51]\n APPLY_ABSTRACTION; [line 51]\n " shape="box"] +38 [label="38: Return Stmt \n n$0=*&r.x:class X & [line 51]\n n$1=*n$0.f:int [line 51]\n *&return:int =(1 / n$1) [line 51]\n " shape="box"] 38 -> 37 ; -37 [label="37: Exit ref_F_div0 \n NULLIFY(&x); [line 52]\n NULLIFY(&r); [line 52]\n " color=yellow style=filled] +37 [label="37: Exit ref_F_div0 \n " color=yellow style=filled] 36 [label="36: Start ref_F_div0\nFormals: \nLocals: r:class Ref x:class X \n DECLARE_LOCALS(&return,&r,&x); [line 46]\n " color=yellow style=filled] 36 -> 42 ; -35 [label="35: Return Stmt \n n$0=*&this:class Val * [line 42]\n n$1=*n$0.i:int [line 42]\n *&return:int =n$1 [line 42]\n REMOVE_TEMPS(n$0,n$1); [line 42]\n NULLIFY(&this); [line 42]\n APPLY_ABSTRACTION; [line 42]\n " shape="box"] +35 [label="35: Return Stmt \n n$0=*&this:class Val * [line 42]\n n$1=*n$0.i:int [line 42]\n *&return:int =n$1 [line 42]\n " shape="box"] 35 -> 34 ; @@ -335,7 +335,7 @@ digraph iCFG { 33 -> 35 ; -32 [label="32: Return Stmt \n n$0=*&this:class Val * [line 41]\n n$1=*n$0.x.f:int [line 41]\n *&return:int =n$1 [line 41]\n REMOVE_TEMPS(n$0,n$1); [line 41]\n NULLIFY(&this); [line 41]\n APPLY_ABSTRACTION; [line 41]\n " shape="box"] +32 [label="32: Return Stmt \n n$0=*&this:class Val * [line 41]\n n$1=*n$0.x.f:int [line 41]\n *&return:int =n$1 [line 41]\n " shape="box"] 32 -> 31 ; @@ -346,11 +346,11 @@ digraph iCFG { 30 -> 32 ; -29 [label="29: Constructor Init \n n$3=*&this:class Val * [line 40]\n n$4=*&r_:class X & [line 40]\n _fun_X_X(n$3.x:class X *,n$4:class X &) [line 40]\n REMOVE_TEMPS(n$3,n$4); [line 40]\n NULLIFY(&r_); [line 40]\n " shape="box"] +29 [label="29: Constructor Init \n n$3=*&this:class Val * [line 40]\n n$4=*&r_:class X & [line 40]\n _fun_X_X(n$3.x:class X *,n$4:class X &) [line 40]\n " shape="box"] 29 -> 28 ; -28 [label="28: Constructor Init \n n$0=*&this:class Val * [line 40]\n n$1=*&this:class Val * [line 40]\n n$2=*n$1.x.f:int [line 40]\n *n$0.i:int =n$2 [line 40]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 40]\n NULLIFY(&this); [line 40]\n APPLY_ABSTRACTION; [line 40]\n " shape="box"] +28 [label="28: Constructor Init \n n$0=*&this:class Val * [line 40]\n n$1=*&this:class Val * [line 40]\n n$2=*n$1.x.f:int [line 40]\n *n$0.i:int =n$2 [line 40]\n " shape="box"] 28 -> 27 ; @@ -361,7 +361,7 @@ digraph iCFG { 26 -> 29 ; -25 [label="25: Return Stmt \n n$0=*&this:class Ptr * [line 34]\n n$1=*n$0.i:int * [line 34]\n n$2=*n$1:int [line 34]\n *&return:int =n$2 [line 34]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 34]\n NULLIFY(&this); [line 34]\n APPLY_ABSTRACTION; [line 34]\n " shape="box"] +25 [label="25: Return Stmt \n n$0=*&this:class Ptr * [line 34]\n n$1=*n$0.i:int * [line 34]\n n$2=*n$1:int [line 34]\n *&return:int =n$2 [line 34]\n " shape="box"] 25 -> 24 ; @@ -372,7 +372,7 @@ digraph iCFG { 23 -> 25 ; -22 [label="22: Return Stmt \n n$0=*&this:class Ptr * [line 33]\n n$1=*n$0.x:class X * [line 33]\n n$2=*n$1.f:int [line 33]\n *&return:int =n$2 [line 33]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 33]\n NULLIFY(&this); [line 33]\n APPLY_ABSTRACTION; [line 33]\n " shape="box"] +22 [label="22: Return Stmt \n n$0=*&this:class Ptr * [line 33]\n n$1=*n$0.x:class X * [line 33]\n n$2=*n$1.f:int [line 33]\n *&return:int =n$2 [line 33]\n " shape="box"] 22 -> 21 ; @@ -383,11 +383,11 @@ digraph iCFG { 20 -> 22 ; -19 [label="19: Constructor Init \n n$3=*&this:class Ptr * [line 32]\n n$4=*&r_:class X & [line 32]\n *n$3.x:class X *=n$4 [line 32]\n REMOVE_TEMPS(n$3,n$4); [line 32]\n NULLIFY(&r_); [line 32]\n " shape="box"] +19 [label="19: Constructor Init \n n$3=*&this:class Ptr * [line 32]\n n$4=*&r_:class X & [line 32]\n *n$3.x:class X *=n$4 [line 32]\n " shape="box"] 19 -> 18 ; -18 [label="18: Constructor Init \n n$0=*&this:class Ptr * [line 32]\n n$1=*&this:class Ptr * [line 32]\n n$2=*n$1.x:class X * [line 32]\n *n$0.i:int *=n$2.f [line 32]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 32]\n NULLIFY(&this); [line 32]\n APPLY_ABSTRACTION; [line 32]\n " shape="box"] +18 [label="18: Constructor Init \n n$0=*&this:class Ptr * [line 32]\n n$1=*&this:class Ptr * [line 32]\n n$2=*n$1.x:class X * [line 32]\n *n$0.i:int *=n$2.f [line 32]\n " shape="box"] 18 -> 17 ; @@ -398,7 +398,7 @@ digraph iCFG { 16 -> 19 ; -15 [label="15: Return Stmt \n n$0=*&this:class Ref * [line 26]\n n$1=*n$0.i:int & [line 26]\n n$2=*n$1:int & [line 26]\n *&return:int =n$2 [line 26]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 26]\n NULLIFY(&this); [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"] +15 [label="15: Return Stmt \n n$0=*&this:class Ref * [line 26]\n n$1=*n$0.i:int & [line 26]\n n$2=*n$1:int & [line 26]\n *&return:int =n$2 [line 26]\n " shape="box"] 15 -> 14 ; @@ -409,7 +409,7 @@ digraph iCFG { 13 -> 15 ; -12 [label="12: Return Stmt \n n$0=*&this:class Ref * [line 25]\n n$1=*n$0.x:class X & [line 25]\n n$2=*n$1.f:int [line 25]\n *&return:int =n$2 [line 25]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 25]\n NULLIFY(&this); [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="box"] +12 [label="12: Return Stmt \n n$0=*&this:class Ref * [line 25]\n n$1=*n$0.x:class X & [line 25]\n n$2=*n$1.f:int [line 25]\n *&return:int =n$2 [line 25]\n " shape="box"] 12 -> 11 ; @@ -420,11 +420,11 @@ digraph iCFG { 10 -> 12 ; -9 [label="9: Constructor Init \n n$3=*&this:class Ref * [line 24]\n n$4=*&r_:class X & [line 24]\n *n$3.x:class X &=n$4 [line 24]\n REMOVE_TEMPS(n$3,n$4); [line 24]\n NULLIFY(&r_); [line 24]\n " shape="box"] +9 [label="9: Constructor Init \n n$3=*&this:class Ref * [line 24]\n n$4=*&r_:class X & [line 24]\n *n$3.x:class X &=n$4 [line 24]\n " shape="box"] 9 -> 8 ; -8 [label="8: Constructor Init \n n$0=*&this:class Ref * [line 24]\n n$1=*&this:class Ref * [line 24]\n n$2=*n$1.x:class X & [line 24]\n *n$0.i:int &=n$2.f [line 24]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 24]\n NULLIFY(&this); [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +8 [label="8: Constructor Init \n n$0=*&this:class Ref * [line 24]\n n$1=*&this:class Ref * [line 24]\n n$2=*n$1.x:class X & [line 24]\n *n$0.i:int &=n$2.f [line 24]\n " shape="box"] 8 -> 7 ; @@ -435,7 +435,7 @@ digraph iCFG { 6 -> 9 ; -5 [label="5: Constructor Init \n n$0=*&this:class X * [line 10]\n n$1=*&__param_0:class X & [line 10]\n n$2=*n$1.f:int [line 10]\n *n$0.f:int =n$2 [line 10]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 10]\n NULLIFY(&__param_0); [line 10]\n NULLIFY(&this); [line 10]\n APPLY_ABSTRACTION; [line 10]\n " shape="box"] +5 [label="5: Constructor Init \n n$0=*&this:class X * [line 10]\n n$1=*&__param_0:class X & [line 10]\n n$2=*n$1.f:int [line 10]\n *n$0.f:int =n$2 [line 10]\n " shape="box"] 5 -> 4 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/reference/reference_struct_e2e.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/reference/reference_struct_e2e.cpp.dot index dae67222a..02b5c0f40 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/reference/reference_struct_e2e.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/reference/reference_struct_e2e.cpp.dot @@ -1,14 +1,14 @@ /* @generated */ digraph iCFG { -123 [label="123: Call _fun_X_zero \n n$4=_fun_get_global_ref() [line 124]\n n$5=*n$4:class X [line 124]\n _fun_X_zero(n$4:class X &) [line 124]\n REMOVE_TEMPS(n$4,n$5); [line 124]\n " shape="box"] +123 [label="123: Call _fun_X_zero \n n$4=_fun_get_global_ref() [line 124]\n n$5=*n$4:class X [line 124]\n _fun_X_zero(n$4:class X &) [line 124]\n " shape="box"] 123 -> 122 ; -122 [label="122: BinaryOperatorStmt: Assign \n n$3=_fun_get_global_ref() [line 125]\n *n$3.f:int =1 [line 125]\n REMOVE_TEMPS(n$3); [line 125]\n " shape="box"] +122 [label="122: BinaryOperatorStmt: Assign \n n$3=_fun_get_global_ref() [line 125]\n *n$3.f:int =1 [line 125]\n " shape="box"] 122 -> 121 ; -121 [label="121: Call _fun_X_div \n n$0=_fun_get_global_ref() [line 126]\n n$1=*n$0:class X [line 126]\n n$2=_fun_X_div(n$0:class X &) [line 126]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 126]\n APPLY_ABSTRACTION; [line 126]\n " shape="box"] +121 [label="121: Call _fun_X_div \n n$0=_fun_get_global_ref() [line 126]\n n$1=*n$0:class X [line 126]\n n$2=_fun_X_div(n$0:class X &) [line 126]\n " shape="box"] 121 -> 120 ; @@ -19,15 +19,15 @@ digraph iCFG { 119 -> 123 ; -118 [label="118: Call _fun_X_nonzero \n n$4=_fun_get_global_ref() [line 118]\n n$5=*n$4:class X [line 118]\n _fun_X_nonzero(n$4:class X &) [line 118]\n REMOVE_TEMPS(n$4,n$5); [line 118]\n " shape="box"] +118 [label="118: Call _fun_X_nonzero \n n$4=_fun_get_global_ref() [line 118]\n n$5=*n$4:class X [line 118]\n _fun_X_nonzero(n$4:class X &) [line 118]\n " shape="box"] 118 -> 117 ; -117 [label="117: BinaryOperatorStmt: Assign \n n$3=_fun_get_global_ref() [line 119]\n *n$3.f:int =0 [line 119]\n REMOVE_TEMPS(n$3); [line 119]\n " shape="box"] +117 [label="117: BinaryOperatorStmt: Assign \n n$3=_fun_get_global_ref() [line 119]\n *n$3.f:int =0 [line 119]\n " shape="box"] 117 -> 116 ; -116 [label="116: Call _fun_X_div \n n$0=_fun_get_global_ref() [line 120]\n n$1=*n$0:class X [line 120]\n n$2=_fun_X_div(n$0:class X &) [line 120]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 120]\n APPLY_ABSTRACTION; [line 120]\n " shape="box"] +116 [label="116: Call _fun_X_div \n n$0=_fun_get_global_ref() [line 120]\n n$1=*n$0:class X [line 120]\n n$2=_fun_X_div(n$0:class X &) [line 120]\n " shape="box"] 116 -> 115 ; @@ -38,15 +38,15 @@ digraph iCFG { 114 -> 118 ; -113 [label="113: BinaryOperatorStmt: Assign \n n$5=_fun_get_global_ref() [line 112]\n *n$5.f:int =0 [line 112]\n REMOVE_TEMPS(n$5); [line 112]\n " shape="box"] +113 [label="113: BinaryOperatorStmt: Assign \n n$5=_fun_get_global_ref() [line 112]\n *n$5.f:int =0 [line 112]\n " shape="box"] 113 -> 112 ; -112 [label="112: Call _fun_X_nonzero \n n$3=_fun_get_global_ref() [line 113]\n n$4=*n$3:class X [line 113]\n _fun_X_nonzero(n$3:class X &) [line 113]\n REMOVE_TEMPS(n$3,n$4); [line 113]\n " shape="box"] +112 [label="112: Call _fun_X_nonzero \n n$3=_fun_get_global_ref() [line 113]\n n$4=*n$3:class X [line 113]\n _fun_X_nonzero(n$3:class X &) [line 113]\n " shape="box"] 112 -> 111 ; -111 [label="111: Call _fun_X_div \n n$0=_fun_get_global_ref() [line 114]\n n$1=*n$0:class X [line 114]\n n$2=_fun_X_div(n$0:class X &) [line 114]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 114]\n APPLY_ABSTRACTION; [line 114]\n " shape="box"] +111 [label="111: Call _fun_X_div \n n$0=_fun_get_global_ref() [line 114]\n n$1=*n$0:class X [line 114]\n n$2=_fun_X_div(n$0:class X &) [line 114]\n " shape="box"] 111 -> 110 ; @@ -57,15 +57,15 @@ digraph iCFG { 109 -> 113 ; -108 [label="108: BinaryOperatorStmt: Assign \n n$5=_fun_get_global_ref() [line 106]\n *n$5.f:int =1 [line 106]\n REMOVE_TEMPS(n$5); [line 106]\n " shape="box"] +108 [label="108: BinaryOperatorStmt: Assign \n n$5=_fun_get_global_ref() [line 106]\n *n$5.f:int =1 [line 106]\n " shape="box"] 108 -> 107 ; -107 [label="107: Call _fun_X_zero \n n$3=_fun_get_global_ref() [line 107]\n n$4=*n$3:class X [line 107]\n _fun_X_zero(n$3:class X &) [line 107]\n REMOVE_TEMPS(n$3,n$4); [line 107]\n " shape="box"] +107 [label="107: Call _fun_X_zero \n n$3=_fun_get_global_ref() [line 107]\n n$4=*n$3:class X [line 107]\n _fun_X_zero(n$3:class X &) [line 107]\n " shape="box"] 107 -> 106 ; -106 [label="106: Call _fun_X_div \n n$0=_fun_get_global_ref() [line 108]\n n$1=*n$0:class X [line 108]\n n$2=_fun_X_div(n$0:class X &) [line 108]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 108]\n APPLY_ABSTRACTION; [line 108]\n " shape="box"] +106 [label="106: Call _fun_X_div \n n$0=_fun_get_global_ref() [line 108]\n n$1=*n$0:class X [line 108]\n n$2=_fun_X_div(n$0:class X &) [line 108]\n " shape="box"] 106 -> 105 ; @@ -76,11 +76,11 @@ digraph iCFG { 104 -> 108 ; -103 [label="103: Call _fun_set_field_ref \n n$3=*&x:class X & [line 101]\n _fun_set_field_ref(n$3:class X &,1:int ) [line 101]\n REMOVE_TEMPS(n$3); [line 101]\n " shape="box"] +103 [label="103: Call _fun_set_field_ref \n n$3=*&x:class X & [line 101]\n _fun_set_field_ref(n$3:class X &,1:int ) [line 101]\n " shape="box"] 103 -> 102 ; -102 [label="102: Return Stmt \n n$0=*&x:class X & [line 102]\n n$1=*n$0:class X [line 102]\n n$2=_fun_X_div(n$0:class X &) [line 102]\n *&return:int =n$2 [line 102]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 102]\n NULLIFY(&x); [line 102]\n APPLY_ABSTRACTION; [line 102]\n " shape="box"] +102 [label="102: Return Stmt \n n$0=*&x:class X & [line 102]\n n$1=*n$0:class X [line 102]\n n$2=_fun_X_div(n$0:class X &) [line 102]\n *&return:int =n$2 [line 102]\n " shape="box"] 102 -> 101 ; @@ -91,11 +91,11 @@ digraph iCFG { 100 -> 103 ; -99 [label="99: Call _fun_set_field_ref \n n$3=*&x:class X & [line 96]\n _fun_set_field_ref(n$3:class X &,0:int ) [line 96]\n REMOVE_TEMPS(n$3); [line 96]\n " shape="box"] +99 [label="99: Call _fun_set_field_ref \n n$3=*&x:class X & [line 96]\n _fun_set_field_ref(n$3:class X &,0:int ) [line 96]\n " shape="box"] 99 -> 98 ; -98 [label="98: Return Stmt \n n$0=*&x:class X & [line 97]\n n$1=*n$0:class X [line 97]\n n$2=_fun_X_div(n$0:class X &) [line 97]\n *&return:int =n$2 [line 97]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 97]\n NULLIFY(&x); [line 97]\n APPLY_ABSTRACTION; [line 97]\n " shape="box"] +98 [label="98: Return Stmt \n n$0=*&x:class X & [line 97]\n n$1=*n$0:class X [line 97]\n n$2=_fun_X_div(n$0:class X &) [line 97]\n *&return:int =n$2 [line 97]\n " shape="box"] 98 -> 97 ; @@ -106,11 +106,11 @@ digraph iCFG { 96 -> 99 ; -95 [label="95: Call _fun_nonzero_ref \n n$3=*&x:class X & [line 91]\n _fun_nonzero_ref(n$3:class X &) [line 91]\n REMOVE_TEMPS(n$3); [line 91]\n " shape="box"] +95 [label="95: Call _fun_nonzero_ref \n n$3=*&x:class X & [line 91]\n _fun_nonzero_ref(n$3:class X &) [line 91]\n " shape="box"] 95 -> 94 ; -94 [label="94: Return Stmt \n n$0=*&x:class X & [line 92]\n n$1=*n$0:class X [line 92]\n n$2=_fun_X_div(n$0:class X &) [line 92]\n *&return:int =n$2 [line 92]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 92]\n NULLIFY(&x); [line 92]\n APPLY_ABSTRACTION; [line 92]\n " shape="box"] +94 [label="94: Return Stmt \n n$0=*&x:class X & [line 92]\n n$1=*n$0:class X [line 92]\n n$2=_fun_X_div(n$0:class X &) [line 92]\n *&return:int =n$2 [line 92]\n " shape="box"] 94 -> 93 ; @@ -121,11 +121,11 @@ digraph iCFG { 92 -> 95 ; -91 [label="91: Call _fun_zero_ref \n n$3=*&x:class X & [line 86]\n _fun_zero_ref(n$3:class X &) [line 86]\n REMOVE_TEMPS(n$3); [line 86]\n " shape="box"] +91 [label="91: Call _fun_zero_ref \n n$3=*&x:class X & [line 86]\n _fun_zero_ref(n$3:class X &) [line 86]\n " shape="box"] 91 -> 90 ; -90 [label="90: Return Stmt \n n$0=*&x:class X & [line 87]\n n$1=*n$0:class X [line 87]\n n$2=_fun_X_div(n$0:class X &) [line 87]\n *&return:int =n$2 [line 87]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 87]\n NULLIFY(&x); [line 87]\n APPLY_ABSTRACTION; [line 87]\n " shape="box"] +90 [label="90: Return Stmt \n n$0=*&x:class X & [line 87]\n n$1=*n$0:class X [line 87]\n n$2=_fun_X_div(n$0:class X &) [line 87]\n *&return:int =n$2 [line 87]\n " shape="box"] 90 -> 89 ; @@ -136,15 +136,15 @@ digraph iCFG { 88 -> 91 ; -87 [label="87: Call _fun_X_zero \n n$4=_fun_get_global_ptr() [line 80]\n n$5=*n$4:class X [line 80]\n _fun_X_zero(n$4:class X *) [line 80]\n REMOVE_TEMPS(n$4,n$5); [line 80]\n " shape="box"] +87 [label="87: Call _fun_X_zero \n n$4=_fun_get_global_ptr() [line 80]\n n$5=*n$4:class X [line 80]\n _fun_X_zero(n$4:class X *) [line 80]\n " shape="box"] 87 -> 86 ; -86 [label="86: BinaryOperatorStmt: Assign \n n$3=_fun_get_global_ptr() [line 81]\n *n$3.f:int =1 [line 81]\n REMOVE_TEMPS(n$3); [line 81]\n " shape="box"] +86 [label="86: BinaryOperatorStmt: Assign \n n$3=_fun_get_global_ptr() [line 81]\n *n$3.f:int =1 [line 81]\n " shape="box"] 86 -> 85 ; -85 [label="85: Call _fun_X_div \n n$0=_fun_get_global_ptr() [line 82]\n n$1=*n$0:class X [line 82]\n n$2=_fun_X_div(n$0:class X *) [line 82]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 82]\n APPLY_ABSTRACTION; [line 82]\n " shape="box"] +85 [label="85: Call _fun_X_div \n n$0=_fun_get_global_ptr() [line 82]\n n$1=*n$0:class X [line 82]\n n$2=_fun_X_div(n$0:class X *) [line 82]\n " shape="box"] 85 -> 84 ; @@ -155,15 +155,15 @@ digraph iCFG { 83 -> 87 ; -82 [label="82: Call _fun_X_nonzero \n n$4=_fun_get_global_ptr() [line 74]\n n$5=*n$4:class X [line 74]\n _fun_X_nonzero(n$4:class X *) [line 74]\n REMOVE_TEMPS(n$4,n$5); [line 74]\n " shape="box"] +82 [label="82: Call _fun_X_nonzero \n n$4=_fun_get_global_ptr() [line 74]\n n$5=*n$4:class X [line 74]\n _fun_X_nonzero(n$4:class X *) [line 74]\n " shape="box"] 82 -> 81 ; -81 [label="81: BinaryOperatorStmt: Assign \n n$3=_fun_get_global_ptr() [line 75]\n *n$3.f:int =0 [line 75]\n REMOVE_TEMPS(n$3); [line 75]\n " shape="box"] +81 [label="81: BinaryOperatorStmt: Assign \n n$3=_fun_get_global_ptr() [line 75]\n *n$3.f:int =0 [line 75]\n " shape="box"] 81 -> 80 ; -80 [label="80: Call _fun_X_div \n n$0=_fun_get_global_ptr() [line 76]\n n$1=*n$0:class X [line 76]\n n$2=_fun_X_div(n$0:class X *) [line 76]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 76]\n APPLY_ABSTRACTION; [line 76]\n " shape="box"] +80 [label="80: Call _fun_X_div \n n$0=_fun_get_global_ptr() [line 76]\n n$1=*n$0:class X [line 76]\n n$2=_fun_X_div(n$0:class X *) [line 76]\n " shape="box"] 80 -> 79 ; @@ -174,15 +174,15 @@ digraph iCFG { 78 -> 82 ; -77 [label="77: BinaryOperatorStmt: Assign \n n$5=_fun_get_global_ptr() [line 68]\n *n$5.f:int =0 [line 68]\n REMOVE_TEMPS(n$5); [line 68]\n " shape="box"] +77 [label="77: BinaryOperatorStmt: Assign \n n$5=_fun_get_global_ptr() [line 68]\n *n$5.f:int =0 [line 68]\n " shape="box"] 77 -> 76 ; -76 [label="76: Call _fun_X_nonzero \n n$3=_fun_get_global_ptr() [line 69]\n n$4=*n$3:class X [line 69]\n _fun_X_nonzero(n$3:class X *) [line 69]\n REMOVE_TEMPS(n$3,n$4); [line 69]\n " shape="box"] +76 [label="76: Call _fun_X_nonzero \n n$3=_fun_get_global_ptr() [line 69]\n n$4=*n$3:class X [line 69]\n _fun_X_nonzero(n$3:class X *) [line 69]\n " shape="box"] 76 -> 75 ; -75 [label="75: Call _fun_X_div \n n$0=_fun_get_global_ptr() [line 70]\n n$1=*n$0:class X [line 70]\n n$2=_fun_X_div(n$0:class X *) [line 70]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 70]\n APPLY_ABSTRACTION; [line 70]\n " shape="box"] +75 [label="75: Call _fun_X_div \n n$0=_fun_get_global_ptr() [line 70]\n n$1=*n$0:class X [line 70]\n n$2=_fun_X_div(n$0:class X *) [line 70]\n " shape="box"] 75 -> 74 ; @@ -193,15 +193,15 @@ digraph iCFG { 73 -> 77 ; -72 [label="72: BinaryOperatorStmt: Assign \n n$5=_fun_get_global_ptr() [line 62]\n *n$5.f:int =1 [line 62]\n REMOVE_TEMPS(n$5); [line 62]\n " shape="box"] +72 [label="72: BinaryOperatorStmt: Assign \n n$5=_fun_get_global_ptr() [line 62]\n *n$5.f:int =1 [line 62]\n " shape="box"] 72 -> 71 ; -71 [label="71: Call _fun_X_zero \n n$3=_fun_get_global_ptr() [line 63]\n n$4=*n$3:class X [line 63]\n _fun_X_zero(n$3:class X *) [line 63]\n REMOVE_TEMPS(n$3,n$4); [line 63]\n " shape="box"] +71 [label="71: Call _fun_X_zero \n n$3=_fun_get_global_ptr() [line 63]\n n$4=*n$3:class X [line 63]\n _fun_X_zero(n$3:class X *) [line 63]\n " shape="box"] 71 -> 70 ; -70 [label="70: Call _fun_X_div \n n$0=_fun_get_global_ptr() [line 64]\n n$1=*n$0:class X [line 64]\n n$2=_fun_X_div(n$0:class X *) [line 64]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 64]\n APPLY_ABSTRACTION; [line 64]\n " shape="box"] +70 [label="70: Call _fun_X_div \n n$0=_fun_get_global_ptr() [line 64]\n n$1=*n$0:class X [line 64]\n n$2=_fun_X_div(n$0:class X *) [line 64]\n " shape="box"] 70 -> 69 ; @@ -212,23 +212,23 @@ digraph iCFG { 68 -> 72 ; -67 [label="67: Call _fun_set_field_ptr \n n$4=*&x:class X * [line 56]\n _fun_set_field_ptr(n$4:class X *,1:int ) [line 56]\n REMOVE_TEMPS(n$4); [line 56]\n " shape="box"] +67 [label="67: Call _fun_set_field_ptr \n n$4=*&x:class X * [line 56]\n _fun_set_field_ptr(n$4:class X *,1:int ) [line 56]\n " shape="box"] 67 -> 66 ; -66 [label="66: Return Stmt \n n$1=*&x:class X * [line 57]\n n$2=*n$1:class X [line 57]\n n$3=_fun_X_div(n$1:class X *) [line 57]\n *&return:int =n$3 [line 57]\n REMOVE_TEMPS(n$1,n$2,n$3); [line 57]\n NULLIFY(&x); [line 57]\n APPLY_ABSTRACTION; [line 57]\n " shape="box"] +66 [label="66: Return Stmt \n n$1=*&x:class X * [line 57]\n n$2=*n$1:class X [line 57]\n n$3=_fun_X_div(n$1:class X *) [line 57]\n *&return:int =n$3 [line 57]\n " shape="box"] 66 -> 61 ; -65 [label="65: Prune (false branch) \n n$0=*&x:class X * [line 55]\n PRUNE((n$0 == 0), false); [line 55]\n REMOVE_TEMPS(n$0); [line 55]\n NULLIFY(&x); [line 55]\n " shape="invhouse"] +65 [label="65: Prune (false branch) \n n$0=*&x:class X * [line 55]\n PRUNE((n$0 == 0), false); [line 55]\n " shape="invhouse"] 65 -> 62 ; -64 [label="64: Prune (true branch) \n n$0=*&x:class X * [line 55]\n PRUNE((n$0 != 0), true); [line 55]\n REMOVE_TEMPS(n$0); [line 55]\n " shape="invhouse"] +64 [label="64: Prune (true branch) \n n$0=*&x:class X * [line 55]\n PRUNE((n$0 != 0), true); [line 55]\n " shape="invhouse"] 64 -> 67 ; -63 [label="63: between_join_and_exit \n APPLY_ABSTRACTION; [line 55]\n " shape="box"] +63 [label="63: between_join_and_exit \n " shape="box"] 63 -> 61 ; @@ -244,23 +244,23 @@ digraph iCFG { 60 -> 64 ; 60 -> 65 ; -59 [label="59: Call _fun_set_field_ptr \n n$4=*&x:class X * [line 49]\n _fun_set_field_ptr(n$4:class X *,0:int ) [line 49]\n REMOVE_TEMPS(n$4); [line 49]\n " shape="box"] +59 [label="59: Call _fun_set_field_ptr \n n$4=*&x:class X * [line 49]\n _fun_set_field_ptr(n$4:class X *,0:int ) [line 49]\n " shape="box"] 59 -> 58 ; -58 [label="58: Return Stmt \n n$1=*&x:class X * [line 50]\n n$2=*n$1:class X [line 50]\n n$3=_fun_X_div(n$1:class X *) [line 50]\n *&return:int =n$3 [line 50]\n REMOVE_TEMPS(n$1,n$2,n$3); [line 50]\n NULLIFY(&x); [line 50]\n APPLY_ABSTRACTION; [line 50]\n " shape="box"] +58 [label="58: Return Stmt \n n$1=*&x:class X * [line 50]\n n$2=*n$1:class X [line 50]\n n$3=_fun_X_div(n$1:class X *) [line 50]\n *&return:int =n$3 [line 50]\n " shape="box"] 58 -> 53 ; -57 [label="57: Prune (false branch) \n n$0=*&x:class X * [line 48]\n PRUNE((n$0 == 0), false); [line 48]\n REMOVE_TEMPS(n$0); [line 48]\n NULLIFY(&x); [line 48]\n " shape="invhouse"] +57 [label="57: Prune (false branch) \n n$0=*&x:class X * [line 48]\n PRUNE((n$0 == 0), false); [line 48]\n " shape="invhouse"] 57 -> 54 ; -56 [label="56: Prune (true branch) \n n$0=*&x:class X * [line 48]\n PRUNE((n$0 != 0), true); [line 48]\n REMOVE_TEMPS(n$0); [line 48]\n " shape="invhouse"] +56 [label="56: Prune (true branch) \n n$0=*&x:class X * [line 48]\n PRUNE((n$0 != 0), true); [line 48]\n " shape="invhouse"] 56 -> 59 ; -55 [label="55: between_join_and_exit \n APPLY_ABSTRACTION; [line 48]\n " shape="box"] +55 [label="55: between_join_and_exit \n " shape="box"] 55 -> 53 ; @@ -276,23 +276,23 @@ digraph iCFG { 52 -> 56 ; 52 -> 57 ; -51 [label="51: Call _fun_nonzero_ptr \n n$4=*&x:class X * [line 42]\n _fun_nonzero_ptr(n$4:class X *) [line 42]\n REMOVE_TEMPS(n$4); [line 42]\n " shape="box"] +51 [label="51: Call _fun_nonzero_ptr \n n$4=*&x:class X * [line 42]\n _fun_nonzero_ptr(n$4:class X *) [line 42]\n " shape="box"] 51 -> 50 ; -50 [label="50: Return Stmt \n n$1=*&x:class X * [line 43]\n n$2=*n$1:class X [line 43]\n n$3=_fun_X_div(n$1:class X *) [line 43]\n *&return:int =n$3 [line 43]\n REMOVE_TEMPS(n$1,n$2,n$3); [line 43]\n NULLIFY(&x); [line 43]\n APPLY_ABSTRACTION; [line 43]\n " shape="box"] +50 [label="50: Return Stmt \n n$1=*&x:class X * [line 43]\n n$2=*n$1:class X [line 43]\n n$3=_fun_X_div(n$1:class X *) [line 43]\n *&return:int =n$3 [line 43]\n " shape="box"] 50 -> 45 ; -49 [label="49: Prune (false branch) \n n$0=*&x:class X * [line 41]\n PRUNE((n$0 == 0), false); [line 41]\n REMOVE_TEMPS(n$0); [line 41]\n NULLIFY(&x); [line 41]\n " shape="invhouse"] +49 [label="49: Prune (false branch) \n n$0=*&x:class X * [line 41]\n PRUNE((n$0 == 0), false); [line 41]\n " shape="invhouse"] 49 -> 46 ; -48 [label="48: Prune (true branch) \n n$0=*&x:class X * [line 41]\n PRUNE((n$0 != 0), true); [line 41]\n REMOVE_TEMPS(n$0); [line 41]\n " shape="invhouse"] +48 [label="48: Prune (true branch) \n n$0=*&x:class X * [line 41]\n PRUNE((n$0 != 0), true); [line 41]\n " shape="invhouse"] 48 -> 51 ; -47 [label="47: between_join_and_exit \n APPLY_ABSTRACTION; [line 41]\n " shape="box"] +47 [label="47: between_join_and_exit \n " shape="box"] 47 -> 45 ; @@ -308,23 +308,23 @@ digraph iCFG { 44 -> 48 ; 44 -> 49 ; -43 [label="43: Call _fun_zero_ptr \n n$4=*&x:class X * [line 35]\n _fun_zero_ptr(n$4:class X *) [line 35]\n REMOVE_TEMPS(n$4); [line 35]\n " shape="box"] +43 [label="43: Call _fun_zero_ptr \n n$4=*&x:class X * [line 35]\n _fun_zero_ptr(n$4:class X *) [line 35]\n " shape="box"] 43 -> 42 ; -42 [label="42: Return Stmt \n n$1=*&x:class X * [line 36]\n n$2=*n$1:class X [line 36]\n n$3=_fun_X_div(n$1:class X *) [line 36]\n *&return:int =n$3 [line 36]\n REMOVE_TEMPS(n$1,n$2,n$3); [line 36]\n NULLIFY(&x); [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="box"] +42 [label="42: Return Stmt \n n$1=*&x:class X * [line 36]\n n$2=*n$1:class X [line 36]\n n$3=_fun_X_div(n$1:class X *) [line 36]\n *&return:int =n$3 [line 36]\n " shape="box"] 42 -> 37 ; -41 [label="41: Prune (false branch) \n n$0=*&x:class X * [line 34]\n PRUNE((n$0 == 0), false); [line 34]\n REMOVE_TEMPS(n$0); [line 34]\n NULLIFY(&x); [line 34]\n " shape="invhouse"] +41 [label="41: Prune (false branch) \n n$0=*&x:class X * [line 34]\n PRUNE((n$0 == 0), false); [line 34]\n " shape="invhouse"] 41 -> 38 ; -40 [label="40: Prune (true branch) \n n$0=*&x:class X * [line 34]\n PRUNE((n$0 != 0), true); [line 34]\n REMOVE_TEMPS(n$0); [line 34]\n " shape="invhouse"] +40 [label="40: Prune (true branch) \n n$0=*&x:class X * [line 34]\n PRUNE((n$0 != 0), true); [line 34]\n " shape="invhouse"] 40 -> 43 ; -39 [label="39: between_join_and_exit \n APPLY_ABSTRACTION; [line 34]\n " shape="box"] +39 [label="39: between_join_and_exit \n " shape="box"] 39 -> 37 ; @@ -340,7 +340,7 @@ digraph iCFG { 36 -> 40 ; 36 -> 41 ; -35 [label="35: Return Stmt \n *&return:class X &=&#GB$global [line 31]\n APPLY_ABSTRACTION; [line 31]\n " shape="box"] +35 [label="35: Return Stmt \n *&return:class X &=&#GB$global [line 31]\n " shape="box"] 35 -> 34 ; @@ -351,7 +351,7 @@ digraph iCFG { 33 -> 35 ; -32 [label="32: Return Stmt \n *&return:class X *=&#GB$global [line 30]\n APPLY_ABSTRACTION; [line 30]\n " shape="box"] +32 [label="32: Return Stmt \n *&return:class X *=&#GB$global [line 30]\n " shape="box"] 32 -> 31 ; @@ -362,7 +362,7 @@ digraph iCFG { 30 -> 32 ; -29 [label="29: BinaryOperatorStmt: Assign \n n$0=*&x:class X & [line 27]\n n$1=*&val:int [line 27]\n *n$0.f:int =n$1 [line 27]\n REMOVE_TEMPS(n$0,n$1); [line 27]\n NULLIFY(&val); [line 27]\n NULLIFY(&x); [line 27]\n APPLY_ABSTRACTION; [line 27]\n " shape="box"] +29 [label="29: BinaryOperatorStmt: Assign \n n$0=*&x:class X & [line 27]\n n$1=*&val:int [line 27]\n *n$0.f:int =n$1 [line 27]\n " shape="box"] 29 -> 28 ; @@ -373,7 +373,7 @@ digraph iCFG { 27 -> 29 ; -26 [label="26: Call _fun_X_nonzero \n n$0=*&x:class X & [line 25]\n n$1=*n$0:class X [line 25]\n _fun_X_nonzero(n$0:class X &) [line 25]\n REMOVE_TEMPS(n$0,n$1); [line 25]\n NULLIFY(&x); [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="box"] +26 [label="26: Call _fun_X_nonzero \n n$0=*&x:class X & [line 25]\n n$1=*n$0:class X [line 25]\n _fun_X_nonzero(n$0:class X &) [line 25]\n " shape="box"] 26 -> 25 ; @@ -384,7 +384,7 @@ digraph iCFG { 24 -> 26 ; -23 [label="23: Call _fun_X_zero \n n$0=*&x:class X & [line 23]\n n$1=*n$0:class X [line 23]\n _fun_X_zero(n$0:class X &) [line 23]\n REMOVE_TEMPS(n$0,n$1); [line 23]\n NULLIFY(&x); [line 23]\n APPLY_ABSTRACTION; [line 23]\n " shape="box"] +23 [label="23: Call _fun_X_zero \n n$0=*&x:class X & [line 23]\n n$1=*n$0:class X [line 23]\n _fun_X_zero(n$0:class X &) [line 23]\n " shape="box"] 23 -> 22 ; @@ -395,7 +395,7 @@ digraph iCFG { 21 -> 23 ; -20 [label="20: BinaryOperatorStmt: Assign \n n$0=*&x:class X * [line 21]\n n$1=*&val:int [line 21]\n *n$0.f:int =n$1 [line 21]\n REMOVE_TEMPS(n$0,n$1); [line 21]\n NULLIFY(&val); [line 21]\n NULLIFY(&x); [line 21]\n APPLY_ABSTRACTION; [line 21]\n " shape="box"] +20 [label="20: BinaryOperatorStmt: Assign \n n$0=*&x:class X * [line 21]\n n$1=*&val:int [line 21]\n *n$0.f:int =n$1 [line 21]\n " shape="box"] 20 -> 19 ; @@ -406,7 +406,7 @@ digraph iCFG { 18 -> 20 ; -17 [label="17: Call _fun_X_nonzero \n n$0=*&x:class X * [line 19]\n n$1=*n$0:class X [line 19]\n _fun_X_nonzero(n$0:class X *) [line 19]\n REMOVE_TEMPS(n$0,n$1); [line 19]\n NULLIFY(&x); [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +17 [label="17: Call _fun_X_nonzero \n n$0=*&x:class X * [line 19]\n n$1=*n$0:class X [line 19]\n _fun_X_nonzero(n$0:class X *) [line 19]\n " shape="box"] 17 -> 16 ; @@ -417,7 +417,7 @@ digraph iCFG { 15 -> 17 ; -14 [label="14: Call _fun_X_zero \n n$0=*&x:class X * [line 17]\n n$1=*n$0:class X [line 17]\n _fun_X_zero(n$0:class X *) [line 17]\n REMOVE_TEMPS(n$0,n$1); [line 17]\n NULLIFY(&x); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +14 [label="14: Call _fun_X_zero \n n$0=*&x:class X * [line 17]\n n$1=*n$0:class X [line 17]\n _fun_X_zero(n$0:class X *) [line 17]\n " shape="box"] 14 -> 13 ; @@ -435,7 +435,7 @@ digraph iCFG { 10 -> 11 ; -9 [label="9: Return Stmt \n n$0=*&this:class X * [line 14]\n n$1=*n$0.f:int [line 14]\n *&return:int =(1 / n$1) [line 14]\n REMOVE_TEMPS(n$0,n$1); [line 14]\n NULLIFY(&this); [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +9 [label="9: Return Stmt \n n$0=*&this:class X * [line 14]\n n$1=*n$0.f:int [line 14]\n *&return:int =(1 / n$1) [line 14]\n " shape="box"] 9 -> 8 ; @@ -446,7 +446,7 @@ digraph iCFG { 7 -> 9 ; -6 [label="6: BinaryOperatorStmt: Assign \n n$0=*&this:class X * [line 13]\n *n$0.f:int =0 [line 13]\n REMOVE_TEMPS(n$0); [line 13]\n NULLIFY(&this); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="box"] +6 [label="6: BinaryOperatorStmt: Assign \n n$0=*&this:class X * [line 13]\n *n$0.f:int =0 [line 13]\n " shape="box"] 6 -> 5 ; @@ -457,7 +457,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class X * [line 12]\n *n$0.f:int =1 [line 12]\n REMOVE_TEMPS(n$0); [line 12]\n NULLIFY(&this); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +3 [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class X * [line 12]\n *n$0.f:int =1 [line 12]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/reference/reference_type_e2e.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/reference/reference_type_e2e.cpp.dot index cdeb6159e..d7268d289 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/reference/reference_type_e2e.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/reference/reference_type_e2e.cpp.dot @@ -4,7 +4,7 @@ digraph iCFG { 56 -> 55 ; -55 [label="55: DeclStmt \n *&b:int =3 [line 64]\n NULLIFY(&b); [line 64]\n " shape="box"] +55 [label="55: DeclStmt \n *&b:int =3 [line 64]\n " shape="box"] 55 -> 54 ; @@ -12,19 +12,19 @@ digraph iCFG { 54 -> 53 ; -53 [label="53: DeclStmt \n n$2=*&r1:int & [line 66]\n *&b:int =1 [line 66]\n n$3=*&b:int [line 66]\n *n$2:int =n$3 [line 66]\n *&r2:int &=n$2 [line 66]\n REMOVE_TEMPS(n$2,n$3); [line 66]\n NULLIFY(&r1); [line 66]\n " shape="box"] +53 [label="53: DeclStmt \n n$2=*&r1:int & [line 66]\n *&b:int =1 [line 66]\n n$3=*&b:int [line 66]\n *n$2:int =n$3 [line 66]\n *&r2:int &=n$2 [line 66]\n " shape="box"] 53 -> 52 ; -52 [label="52: BinaryOperatorStmt: Assign \n n$1=*&r2:int & [line 67]\n *n$1:int =0 [line 67]\n REMOVE_TEMPS(n$1); [line 67]\n NULLIFY(&r2); [line 67]\n " shape="box"] +52 [label="52: BinaryOperatorStmt: Assign \n n$1=*&r2:int & [line 67]\n *n$1:int =0 [line 67]\n " shape="box"] 52 -> 51 ; -51 [label="51: Return Stmt \n n$0=*&b:int [line 68]\n *&return:int =(1 / n$0) [line 68]\n REMOVE_TEMPS(n$0); [line 68]\n NULLIFY(&b); [line 68]\n APPLY_ABSTRACTION; [line 68]\n " shape="box"] +51 [label="51: Return Stmt \n n$0=*&b:int [line 68]\n *&return:int =(1 / n$0) [line 68]\n " shape="box"] 51 -> 50 ; -50 [label="50: Exit ref_div1_nested_assignment \n NULLIFY(&a); [line 69]\n " color=yellow style=filled] +50 [label="50: Exit ref_div1_nested_assignment \n " color=yellow style=filled] 49 [label="49: Start ref_div1_nested_assignment\nFormals: \nLocals: r2:int & r1:int & b:int a:int \n DECLARE_LOCALS(&return,&r2,&r1,&b,&a); [line 62]\n " color=yellow style=filled] @@ -35,7 +35,7 @@ digraph iCFG { 48 -> 47 ; -47 [label="47: DeclStmt \n *&b:int =3 [line 55]\n NULLIFY(&b); [line 55]\n " shape="box"] +47 [label="47: DeclStmt \n *&b:int =3 [line 55]\n " shape="box"] 47 -> 46 ; @@ -43,19 +43,19 @@ digraph iCFG { 46 -> 45 ; -45 [label="45: DeclStmt \n n$2=*&r1:int & [line 57]\n *&b:int =1 [line 57]\n n$3=*&b:int [line 57]\n *n$2:int =n$3 [line 57]\n *&r2:int &=n$2 [line 57]\n REMOVE_TEMPS(n$2,n$3); [line 57]\n NULLIFY(&b); [line 57]\n NULLIFY(&r1); [line 57]\n " shape="box"] +45 [label="45: DeclStmt \n n$2=*&r1:int & [line 57]\n *&b:int =1 [line 57]\n n$3=*&b:int [line 57]\n *n$2:int =n$3 [line 57]\n *&r2:int &=n$2 [line 57]\n " shape="box"] 45 -> 44 ; -44 [label="44: BinaryOperatorStmt: Assign \n n$1=*&r2:int & [line 58]\n *n$1:int =0 [line 58]\n REMOVE_TEMPS(n$1); [line 58]\n NULLIFY(&r2); [line 58]\n " shape="box"] +44 [label="44: BinaryOperatorStmt: Assign \n n$1=*&r2:int & [line 58]\n *n$1:int =0 [line 58]\n " shape="box"] 44 -> 43 ; -43 [label="43: Return Stmt \n n$0=*&a:int [line 59]\n *&return:int =(1 / n$0) [line 59]\n REMOVE_TEMPS(n$0); [line 59]\n APPLY_ABSTRACTION; [line 59]\n " shape="box"] +43 [label="43: Return Stmt \n n$0=*&a:int [line 59]\n *&return:int =(1 / n$0) [line 59]\n " shape="box"] 43 -> 42 ; -42 [label="42: Exit ref_div0_nested_assignment \n NULLIFY(&a); [line 60]\n " color=yellow style=filled] +42 [label="42: Exit ref_div0_nested_assignment \n " color=yellow style=filled] 41 [label="41: Start ref_div0_nested_assignment\nFormals: \nLocals: r2:int & r1:int & b:int a:int \n DECLARE_LOCALS(&return,&r2,&r1,&b,&a); [line 53]\n " color=yellow style=filled] @@ -70,15 +70,15 @@ digraph iCFG { 39 -> 38 ; -38 [label="38: Call _fun_zero_ref \n n$1=*&r:int & [line 49]\n _fun_zero_ref(n$1:int &) [line 49]\n REMOVE_TEMPS(n$1); [line 49]\n NULLIFY(&r); [line 49]\n " shape="box"] +38 [label="38: Call _fun_zero_ref \n n$1=*&r:int & [line 49]\n _fun_zero_ref(n$1:int &) [line 49]\n " shape="box"] 38 -> 37 ; -37 [label="37: Return Stmt \n n$0=*&a:int [line 50]\n *&return:int =(1 / n$0) [line 50]\n REMOVE_TEMPS(n$0); [line 50]\n APPLY_ABSTRACTION; [line 50]\n " shape="box"] +37 [label="37: Return Stmt \n n$0=*&a:int [line 50]\n *&return:int =(1 / n$0) [line 50]\n " shape="box"] 37 -> 36 ; -36 [label="36: Exit ref_div0_function_temp_var \n NULLIFY(&a); [line 51]\n " color=yellow style=filled] +36 [label="36: Exit ref_div0_function_temp_var \n " color=yellow style=filled] 35 [label="35: Start ref_div0_function_temp_var\nFormals: \nLocals: r:int & a:int \n DECLARE_LOCALS(&return,&r,&a); [line 46]\n " color=yellow style=filled] @@ -93,11 +93,11 @@ digraph iCFG { 33 -> 32 ; -32 [label="32: Return Stmt \n n$0=*&a:int [line 43]\n *&return:int =(1 / n$0) [line 43]\n REMOVE_TEMPS(n$0); [line 43]\n APPLY_ABSTRACTION; [line 43]\n " shape="box"] +32 [label="32: Return Stmt \n n$0=*&a:int [line 43]\n *&return:int =(1 / n$0) [line 43]\n " shape="box"] 32 -> 31 ; -31 [label="31: Exit ref_div0_function \n NULLIFY(&a); [line 44]\n " color=yellow style=filled] +31 [label="31: Exit ref_div0_function \n " color=yellow style=filled] 30 [label="30: Start ref_div0_function\nFormals: \nLocals: a:int \n DECLARE_LOCALS(&return,&a); [line 40]\n " color=yellow style=filled] @@ -112,15 +112,15 @@ digraph iCFG { 28 -> 27 ; -27 [label="27: BinaryOperatorStmt: Assign \n n$1=*&r:int & [line 36]\n *n$1:int =0 [line 36]\n REMOVE_TEMPS(n$1); [line 36]\n NULLIFY(&r); [line 36]\n " shape="box"] +27 [label="27: BinaryOperatorStmt: Assign \n n$1=*&r:int & [line 36]\n *n$1:int =0 [line 36]\n " shape="box"] 27 -> 26 ; -26 [label="26: Return Stmt \n n$0=*&a:int [line 37]\n *&return:int =(1 / n$0) [line 37]\n REMOVE_TEMPS(n$0); [line 37]\n APPLY_ABSTRACTION; [line 37]\n " shape="box"] +26 [label="26: Return Stmt \n n$0=*&a:int [line 37]\n *&return:int =(1 / n$0) [line 37]\n " shape="box"] 26 -> 25 ; -25 [label="25: Exit ref_div0 \n NULLIFY(&a); [line 38]\n " color=yellow style=filled] +25 [label="25: Exit ref_div0 \n " color=yellow style=filled] 24 [label="24: Start ref_div0\nFormals: \nLocals: r:int & a:int \n DECLARE_LOCALS(&return,&r,&a); [line 33]\n " color=yellow style=filled] @@ -135,15 +135,15 @@ digraph iCFG { 22 -> 21 ; -21 [label="21: Call _fun_zero_ptr \n n$1=*&r:int * [line 29]\n _fun_zero_ptr(n$1:int *) [line 29]\n REMOVE_TEMPS(n$1); [line 29]\n NULLIFY(&r); [line 29]\n " shape="box"] +21 [label="21: Call _fun_zero_ptr \n n$1=*&r:int * [line 29]\n _fun_zero_ptr(n$1:int *) [line 29]\n " shape="box"] 21 -> 20 ; -20 [label="20: Return Stmt \n n$0=*&a:int [line 30]\n *&return:int =(1 / n$0) [line 30]\n REMOVE_TEMPS(n$0); [line 30]\n APPLY_ABSTRACTION; [line 30]\n " shape="box"] +20 [label="20: Return Stmt \n n$0=*&a:int [line 30]\n *&return:int =(1 / n$0) [line 30]\n " shape="box"] 20 -> 19 ; -19 [label="19: Exit ptr_div0_function_temp_var \n NULLIFY(&a); [line 31]\n " color=yellow style=filled] +19 [label="19: Exit ptr_div0_function_temp_var \n " color=yellow style=filled] 18 [label="18: Start ptr_div0_function_temp_var\nFormals: \nLocals: r:int * a:int \n DECLARE_LOCALS(&return,&r,&a); [line 26]\n " color=yellow style=filled] @@ -158,11 +158,11 @@ digraph iCFG { 16 -> 15 ; -15 [label="15: Return Stmt \n n$0=*&a:int [line 23]\n *&return:int =(1 / n$0) [line 23]\n REMOVE_TEMPS(n$0); [line 23]\n APPLY_ABSTRACTION; [line 23]\n " shape="box"] +15 [label="15: Return Stmt \n n$0=*&a:int [line 23]\n *&return:int =(1 / n$0) [line 23]\n " shape="box"] 15 -> 14 ; -14 [label="14: Exit ptr_div0_function \n NULLIFY(&a); [line 24]\n " color=yellow style=filled] +14 [label="14: Exit ptr_div0_function \n " color=yellow style=filled] 13 [label="13: Start ptr_div0_function\nFormals: \nLocals: a:int \n DECLARE_LOCALS(&return,&a); [line 20]\n " color=yellow style=filled] @@ -177,22 +177,22 @@ digraph iCFG { 11 -> 10 ; -10 [label="10: BinaryOperatorStmt: Assign \n n$1=*&p:int * [line 16]\n *n$1:int =0 [line 16]\n REMOVE_TEMPS(n$1); [line 16]\n NULLIFY(&p); [line 16]\n " shape="box"] +10 [label="10: BinaryOperatorStmt: Assign \n n$1=*&p:int * [line 16]\n *n$1:int =0 [line 16]\n " shape="box"] 10 -> 9 ; -9 [label="9: Return Stmt \n n$0=*&a:int [line 17]\n *&return:int =(1 / n$0) [line 17]\n REMOVE_TEMPS(n$0); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +9 [label="9: Return Stmt \n n$0=*&a:int [line 17]\n *&return:int =(1 / n$0) [line 17]\n " shape="box"] 9 -> 8 ; -8 [label="8: Exit ptr_div0 \n NULLIFY(&a); [line 18]\n " color=yellow style=filled] +8 [label="8: Exit ptr_div0 \n " color=yellow style=filled] 7 [label="7: Start ptr_div0\nFormals: \nLocals: p:int * a:int \n DECLARE_LOCALS(&return,&p,&a); [line 13]\n " color=yellow style=filled] 7 -> 12 ; -6 [label="6: BinaryOperatorStmt: Assign \n n$0=*&p:int & [line 11]\n *n$0:int =0 [line 11]\n REMOVE_TEMPS(n$0); [line 11]\n NULLIFY(&p); [line 11]\n APPLY_ABSTRACTION; [line 11]\n " shape="box"] +6 [label="6: BinaryOperatorStmt: Assign \n n$0=*&p:int & [line 11]\n *n$0:int =0 [line 11]\n " shape="box"] 6 -> 5 ; @@ -203,7 +203,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: BinaryOperatorStmt: Assign \n n$0=*&p:int * [line 10]\n *n$0:int =0 [line 10]\n REMOVE_TEMPS(n$0); [line 10]\n NULLIFY(&p); [line 10]\n APPLY_ABSTRACTION; [line 10]\n " shape="box"] +3 [label="3: BinaryOperatorStmt: Assign \n n$0=*&p:int * [line 10]\n *n$0:int =0 [line 10]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/reference/temporary_lvalue.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/reference/temporary_lvalue.cpp.dot index a4b29ee0a..39879a9c5 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/reference/temporary_lvalue.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/reference/temporary_lvalue.cpp.dot @@ -4,22 +4,22 @@ digraph iCFG { 14 -> 13 ; -13 [label="13: Return Stmt \n n$0=_fun_div(&a:int &) [line 22]\n *&return:int =n$0 [line 22]\n REMOVE_TEMPS(n$0); [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"] +13 [label="13: Return Stmt \n n$0=_fun_div(&a:int &) [line 22]\n *&return:int =n$0 [line 22]\n " shape="box"] 13 -> 12 ; -12 [label="12: Exit div0_no_const_ref \n NULLIFY(&a); [line 23]\n " color=yellow style=filled] +12 [label="12: Exit div0_no_const_ref \n " color=yellow style=filled] 11 [label="11: Start div0_no_const_ref\nFormals: \nLocals: a:int \n DECLARE_LOCALS(&return,&a); [line 20]\n " color=yellow style=filled] 11 -> 14 ; -10 [label="10: Return Stmt \n *&SIL_materialize_temp__n$0:int =0 [line 17]\n n$1=_fun_div(&SIL_materialize_temp__n$0:int &) [line 17]\n *&return:int =n$1 [line 17]\n REMOVE_TEMPS(n$1); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +10 [label="10: Return Stmt \n *&SIL_materialize_temp__n$0:int =0 [line 17]\n n$1=_fun_div(&SIL_materialize_temp__n$0:int &) [line 17]\n *&return:int =n$1 [line 17]\n " shape="box"] 10 -> 9 ; -9 [label="9: Exit div0_function_param_cast \n NULLIFY(&SIL_materialize_temp__n$0); [line 17]\n " color=yellow style=filled] +9 [label="9: Exit div0_function_param_cast \n " color=yellow style=filled] 8 [label="8: Start div0_function_param_cast\nFormals: \nLocals: SIL_materialize_temp__n$0:int \n DECLARE_LOCALS(&return,&SIL_materialize_temp__n$0); [line 17]\n " color=yellow style=filled] @@ -30,18 +30,18 @@ digraph iCFG { 7 -> 6 ; -6 [label="6: Return Stmt \n n$0=*&a:int & [line 14]\n n$1=_fun_div(n$0:int &) [line 14]\n *&return:int =n$1 [line 14]\n REMOVE_TEMPS(n$0,n$1); [line 14]\n NULLIFY(&a); [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +6 [label="6: Return Stmt \n n$0=*&a:int & [line 14]\n n$1=_fun_div(n$0:int &) [line 14]\n *&return:int =n$1 [line 14]\n " shape="box"] 6 -> 5 ; -5 [label="5: Exit div0_init_expr \n NULLIFY(&SIL_materialize_temp__n$2); [line 15]\n " color=yellow style=filled] +5 [label="5: Exit div0_init_expr \n " color=yellow style=filled] 4 [label="4: Start div0_init_expr\nFormals: \nLocals: a:int & SIL_materialize_temp__n$2:int \n DECLARE_LOCALS(&return,&a,&SIL_materialize_temp__n$2); [line 12]\n " color=yellow style=filled] 4 -> 7 ; -3 [label="3: Return Stmt \n n$0=*&v:int & [line 10]\n n$1=*n$0:int [line 10]\n *&return:int =(1 / n$1) [line 10]\n REMOVE_TEMPS(n$0,n$1); [line 10]\n NULLIFY(&v); [line 10]\n APPLY_ABSTRACTION; [line 10]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&v:int & [line 10]\n n$1=*n$0:int [line 10]\n *&return:int =(1 / n$1) [line 10]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/reference/unbox.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/reference/unbox.cpp.dot index d1469f88f..966143203 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/reference/unbox.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/reference/unbox.cpp.dot @@ -8,19 +8,19 @@ digraph iCFG { 22 -> 21 ; -21 [label="21: Call _fun_fun_p \n n$5=*&p:int * [line 31]\n n$6=_fun_fun_p(n$5:int *) [line 31]\n REMOVE_TEMPS(n$5,n$6); [line 31]\n " shape="box"] +21 [label="21: Call _fun_fun_p \n n$5=*&p:int * [line 31]\n n$6=_fun_fun_p(n$5:int *) [line 31]\n " shape="box"] 21 -> 20 ; -20 [label="20: Call _fun_fun_v \n n$2=*&p:int * [line 32]\n n$3=*n$2:int [line 32]\n n$4=_fun_fun_v(n$3:int ) [line 32]\n REMOVE_TEMPS(n$2,n$3,n$4); [line 32]\n " shape="box"] +20 [label="20: Call _fun_fun_v \n n$2=*&p:int * [line 32]\n n$3=*n$2:int [line 32]\n n$4=_fun_fun_v(n$3:int ) [line 32]\n " shape="box"] 20 -> 19 ; -19 [label="19: Call _fun_fun_r \n n$0=*&p:int * [line 33]\n n$1=_fun_fun_r(n$0:int &) [line 33]\n REMOVE_TEMPS(n$0,n$1); [line 33]\n NULLIFY(&p); [line 33]\n APPLY_ABSTRACTION; [line 33]\n " shape="box"] +19 [label="19: Call _fun_fun_r \n n$0=*&p:int * [line 33]\n n$1=_fun_fun_r(n$0:int &) [line 33]\n " shape="box"] 19 -> 18 ; -18 [label="18: Exit unbox_ptr \n NULLIFY(&a); [line 34]\n " color=yellow style=filled] +18 [label="18: Exit unbox_ptr \n " color=yellow style=filled] 17 [label="17: Start unbox_ptr\nFormals: \nLocals: p:int * a:int \n DECLARE_LOCALS(&return,&p,&a); [line 27]\n " color=yellow style=filled] @@ -35,26 +35,26 @@ digraph iCFG { 15 -> 14 ; -14 [label="14: Call _fun_fun_p \n n$5=*&r:int & [line 21]\n n$6=_fun_fun_p(n$5:int *) [line 21]\n REMOVE_TEMPS(n$5,n$6); [line 21]\n " shape="box"] +14 [label="14: Call _fun_fun_p \n n$5=*&r:int & [line 21]\n n$6=_fun_fun_p(n$5:int *) [line 21]\n " shape="box"] 14 -> 13 ; -13 [label="13: Call _fun_fun_v \n n$2=*&r:int & [line 22]\n n$3=*n$2:int [line 22]\n n$4=_fun_fun_v(n$3:int ) [line 22]\n REMOVE_TEMPS(n$2,n$3,n$4); [line 22]\n " shape="box"] +13 [label="13: Call _fun_fun_v \n n$2=*&r:int & [line 22]\n n$3=*n$2:int [line 22]\n n$4=_fun_fun_v(n$3:int ) [line 22]\n " shape="box"] 13 -> 12 ; -12 [label="12: Call _fun_fun_r \n n$0=*&r:int & [line 23]\n n$1=_fun_fun_r(n$0:int &) [line 23]\n REMOVE_TEMPS(n$0,n$1); [line 23]\n NULLIFY(&r); [line 23]\n APPLY_ABSTRACTION; [line 23]\n " shape="box"] +12 [label="12: Call _fun_fun_r \n n$0=*&r:int & [line 23]\n n$1=_fun_fun_r(n$0:int &) [line 23]\n " shape="box"] 12 -> 11 ; -11 [label="11: Exit unbox_ref \n NULLIFY(&a); [line 24]\n " color=yellow style=filled] +11 [label="11: Exit unbox_ref \n " color=yellow style=filled] 10 [label="10: Start unbox_ref\nFormals: \nLocals: r:int & a:int \n DECLARE_LOCALS(&return,&r,&a); [line 17]\n " color=yellow style=filled] 10 -> 16 ; -9 [label="9: Return Stmt \n n$0=*&p:int & [line 12]\n n$1=*n$0:int [line 12]\n *&return:int =n$1 [line 12]\n REMOVE_TEMPS(n$0,n$1); [line 12]\n NULLIFY(&p); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +9 [label="9: Return Stmt \n n$0=*&p:int & [line 12]\n n$1=*n$0:int [line 12]\n *&return:int =n$1 [line 12]\n " shape="box"] 9 -> 8 ; @@ -65,7 +65,7 @@ digraph iCFG { 7 -> 9 ; -6 [label="6: Return Stmt \n n$0=*&p:int [line 11]\n *&return:int =n$0 [line 11]\n REMOVE_TEMPS(n$0); [line 11]\n NULLIFY(&p); [line 11]\n APPLY_ABSTRACTION; [line 11]\n " shape="box"] +6 [label="6: Return Stmt \n n$0=*&p:int [line 11]\n *&return:int =n$0 [line 11]\n " shape="box"] 6 -> 5 ; @@ -76,7 +76,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: Return Stmt \n n$0=*&p:int * [line 10]\n n$1=*n$0:int [line 10]\n *&return:int =n$1 [line 10]\n REMOVE_TEMPS(n$0,n$1); [line 10]\n NULLIFY(&p); [line 10]\n APPLY_ABSTRACTION; [line 10]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&p:int * [line 10]\n n$1=*n$0:int [line 10]\n *&return:int =n$1 [line 10]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/templates/class_template_instantiate.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/templates/class_template_instantiate.cpp.dot index d09386a1a..8d6b3ac3d 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/templates/class_template_instantiate.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/templates/class_template_instantiate.cpp.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -30 [label="30: Return Stmt \n n$0=*&s:class ExecStore & [line 41]\n n$1=*n$0.f:class Choose2 [line 41]\n n$2=_fun_Choose2_extra(n$0.f:class Choose2 &,1:int ) [line 41]\n *&return:int =n$2 [line 41]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 41]\n NULLIFY(&s); [line 41]\n APPLY_ABSTRACTION; [line 41]\n " shape="box"] +30 [label="30: Return Stmt \n n$0=*&s:class ExecStore & [line 41]\n n$1=*n$0.f:class Choose2 [line 41]\n n$2=_fun_Choose2_extra(n$0.f:class Choose2 &,1:int ) [line 41]\n *&return:int =n$2 [line 41]\n " shape="box"] 30 -> 29 ; @@ -11,7 +11,7 @@ digraph iCFG { 28 -> 30 ; -27 [label="27: Return Stmt \n n$0=*&s:class ExecStore & [line 39]\n n$1=*n$0.f:class Choose2 [line 39]\n n$2=_fun_Choose2_extra(n$0.f:class Choose2 &,0:int ) [line 39]\n *&return:int =n$2 [line 39]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 39]\n NULLIFY(&s); [line 39]\n APPLY_ABSTRACTION; [line 39]\n " shape="box"] +27 [label="27: Return Stmt \n n$0=*&s:class ExecStore & [line 39]\n n$1=*n$0.f:class Choose2 [line 39]\n n$2=_fun_Choose2_extra(n$0.f:class Choose2 &,0:int ) [line 39]\n *&return:int =n$2 [line 39]\n " shape="box"] 27 -> 26 ; @@ -22,7 +22,7 @@ digraph iCFG { 25 -> 27 ; -24 [label="24: Return Stmt \n n$0=*&s:class ExecStore & [line 36]\n n$1=*n$0:class ExecStore [line 36]\n n$2=_fun_ExecStore_call_div(n$0:class ExecStore &,1:int ) [line 36]\n *&return:int =n$2 [line 36]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 36]\n NULLIFY(&s); [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="box"] +24 [label="24: Return Stmt \n n$0=*&s:class ExecStore & [line 36]\n n$1=*n$0:class ExecStore [line 36]\n n$2=_fun_ExecStore_call_div(n$0:class ExecStore &,1:int ) [line 36]\n *&return:int =n$2 [line 36]\n " shape="box"] 24 -> 23 ; @@ -33,7 +33,7 @@ digraph iCFG { 22 -> 24 ; -21 [label="21: Return Stmt \n n$0=*&s:class ExecStore & [line 32]\n n$1=*n$0:class ExecStore [line 32]\n n$2=_fun_ExecStore_call_div(n$0:class ExecStore &,1:int ) [line 32]\n *&return:int =n$2 [line 32]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 32]\n NULLIFY(&s); [line 32]\n APPLY_ABSTRACTION; [line 32]\n " shape="box"] +21 [label="21: Return Stmt \n n$0=*&s:class ExecStore & [line 32]\n n$1=*n$0:class ExecStore [line 32]\n n$2=_fun_ExecStore_call_div(n$0:class ExecStore &,1:int ) [line 32]\n *&return:int =n$2 [line 32]\n " shape="box"] 21 -> 20 ; @@ -44,7 +44,7 @@ digraph iCFG { 19 -> 21 ; -18 [label="18: Return Stmt \n n$0=*&s:class ExecStore & [line 30]\n n$1=*n$0:class ExecStore [line 30]\n n$2=_fun_ExecStore_call_div(n$0:class ExecStore &,0:int ) [line 30]\n *&return:int =n$2 [line 30]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 30]\n NULLIFY(&s); [line 30]\n APPLY_ABSTRACTION; [line 30]\n " shape="box"] +18 [label="18: Return Stmt \n n$0=*&s:class ExecStore & [line 30]\n n$1=*n$0:class ExecStore [line 30]\n n$2=_fun_ExecStore_call_div(n$0:class ExecStore &,0:int ) [line 30]\n *&return:int =n$2 [line 30]\n " shape="box"] 18 -> 17 ; @@ -55,7 +55,7 @@ digraph iCFG { 16 -> 18 ; -15 [label="15: Return Stmt \n n$0=*&this:class ExecStore * [line 26]\n n$1=*n$0.f:class Choose2 [line 26]\n n$2=*&a:int [line 26]\n n$3=_fun_Choose2_div(n$0.f:class Choose2 &,n$2:int ,0:int ) [line 26]\n *&return:int =n$3 [line 26]\n REMOVE_TEMPS(n$0,n$1,n$2,n$3); [line 26]\n NULLIFY(&a); [line 26]\n NULLIFY(&this); [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"] +15 [label="15: Return Stmt \n n$0=*&this:class ExecStore * [line 26]\n n$1=*n$0.f:class Choose2 [line 26]\n n$2=*&a:int [line 26]\n n$3=_fun_Choose2_div(n$0.f:class Choose2 &,n$2:int ,0:int ) [line 26]\n *&return:int =n$3 [line 26]\n " shape="box"] 15 -> 14 ; @@ -66,7 +66,7 @@ digraph iCFG { 13 -> 15 ; -12 [label="12: Return Stmt \n n$0=*&this:class ExecStore * [line 26]\n n$1=*n$0.f:class Choose1 [line 26]\n n$2=*&a:int [line 26]\n n$3=_fun_Choose1_div(n$0.f:class Choose1 &,n$2:int ,0:int ) [line 26]\n *&return:int =n$3 [line 26]\n REMOVE_TEMPS(n$0,n$1,n$2,n$3); [line 26]\n NULLIFY(&a); [line 26]\n NULLIFY(&this); [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"] +12 [label="12: Return Stmt \n n$0=*&this:class ExecStore * [line 26]\n n$1=*n$0.f:class Choose1 [line 26]\n n$2=*&a:int [line 26]\n n$3=_fun_Choose1_div(n$0.f:class Choose1 &,n$2:int ,0:int ) [line 26]\n *&return:int =n$3 [line 26]\n " shape="box"] 12 -> 11 ; @@ -77,7 +77,7 @@ digraph iCFG { 10 -> 12 ; -9 [label="9: Return Stmt \n n$0=*&a:int [line 18]\n *&return:int =(1 / n$0) [line 18]\n REMOVE_TEMPS(n$0); [line 18]\n NULLIFY(&a); [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +9 [label="9: Return Stmt \n n$0=*&a:int [line 18]\n *&return:int =(1 / n$0) [line 18]\n " shape="box"] 9 -> 8 ; @@ -88,7 +88,7 @@ digraph iCFG { 7 -> 9 ; -6 [label="6: Return Stmt \n n$0=*&b:int [line 15]\n *&return:int =(1 / n$0) [line 15]\n REMOVE_TEMPS(n$0); [line 15]\n NULLIFY(&b); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +6 [label="6: Return Stmt \n n$0=*&b:int [line 15]\n *&return:int =(1 / n$0) [line 15]\n " shape="box"] 6 -> 5 ; @@ -99,7 +99,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: Return Stmt \n n$0=*&a:int [line 11]\n *&return:int =(1 / n$0) [line 11]\n REMOVE_TEMPS(n$0); [line 11]\n NULLIFY(&a); [line 11]\n APPLY_ABSTRACTION; [line 11]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&a:int [line 11]\n *&return:int =(1 / n$0) [line 11]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/templates/function.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/templates/function.cpp.dot index db4f20992..b6d51ca90 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/templates/function.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/templates/function.cpp.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -49 [label="49: Return Stmt \n n$0=_fun_createAndGetVal() [line 72]\n n$1=_fun_createAndGetVal() [line 72]\n *&return:int =(n$0 / n$1) [line 72]\n REMOVE_TEMPS(n$0,n$1); [line 72]\n APPLY_ABSTRACTION; [line 72]\n " shape="box"] +49 [label="49: Return Stmt \n n$0=_fun_createAndGetVal() [line 72]\n n$1=_fun_createAndGetVal() [line 72]\n *&return:int =(n$0 / n$1) [line 72]\n " shape="box"] 49 -> 48 ; @@ -11,7 +11,7 @@ digraph iCFG { 47 -> 49 ; -46 [label="46: Return Stmt \n n$0=_fun_createAndGetVal() [line 68]\n n$1=_fun_createAndGetVal() [line 68]\n *&return:int =(n$0 / n$1) [line 68]\n REMOVE_TEMPS(n$0,n$1); [line 68]\n APPLY_ABSTRACTION; [line 68]\n " shape="box"] +46 [label="46: Return Stmt \n n$0=_fun_createAndGetVal() [line 68]\n n$1=_fun_createAndGetVal() [line 68]\n *&return:int =(n$0 / n$1) [line 68]\n " shape="box"] 46 -> 45 ; @@ -30,11 +30,11 @@ digraph iCFG { 42 -> 41 ; -41 [label="41: Return Stmt \n n$0=_fun_getVal(&x3:class X3 &) [line 64]\n n$1=_fun_getVal(&x1:class X1 &) [line 64]\n *&return:int =(n$0 / n$1) [line 64]\n REMOVE_TEMPS(n$0,n$1); [line 64]\n APPLY_ABSTRACTION; [line 64]\n " shape="box"] +41 [label="41: Return Stmt \n n$0=_fun_getVal(&x3:class X3 &) [line 64]\n n$1=_fun_getVal(&x1:class X1 &) [line 64]\n *&return:int =(n$0 / n$1) [line 64]\n " shape="box"] 41 -> 40 ; -40 [label="40: Exit div1_get_val \n NULLIFY(&x3); [line 65]\n NULLIFY(&x1); [line 65]\n " color=yellow style=filled] +40 [label="40: Exit div1_get_val \n " color=yellow style=filled] 39 [label="39: Start div1_get_val\nFormals: \nLocals: x3:class X3 x1:class X1 \n DECLARE_LOCALS(&return,&x3,&x1); [line 61]\n " color=yellow style=filled] @@ -49,18 +49,18 @@ digraph iCFG { 37 -> 36 ; -36 [label="36: Return Stmt \n n$0=_fun_getVal(&x1:class X1 &) [line 58]\n n$1=_fun_getVal(&x3:class X3 &) [line 58]\n *&return:int =(n$0 / n$1) [line 58]\n REMOVE_TEMPS(n$0,n$1); [line 58]\n APPLY_ABSTRACTION; [line 58]\n " shape="box"] +36 [label="36: Return Stmt \n n$0=_fun_getVal(&x1:class X1 &) [line 58]\n n$1=_fun_getVal(&x3:class X3 &) [line 58]\n *&return:int =(n$0 / n$1) [line 58]\n " shape="box"] 36 -> 35 ; -35 [label="35: Exit div0_get_val \n NULLIFY(&x3); [line 59]\n NULLIFY(&x1); [line 59]\n " color=yellow style=filled] +35 [label="35: Exit div0_get_val \n " color=yellow style=filled] 34 [label="34: Start div0_get_val\nFormals: \nLocals: x3:class X3 x1:class X1 \n DECLARE_LOCALS(&return,&x3,&x1); [line 55]\n " color=yellow style=filled] 34 -> 38 ; -33 [label="33: Return Stmt \n n$0=_fun_createAndGetVal() [line 41]\n *&return:int =(1 / n$0) [line 41]\n REMOVE_TEMPS(n$0); [line 41]\n APPLY_ABSTRACTION; [line 41]\n " shape="box"] +33 [label="33: Return Stmt \n n$0=_fun_createAndGetVal() [line 41]\n *&return:int =(1 / n$0) [line 41]\n " shape="box"] 33 -> 32 ; @@ -71,7 +71,7 @@ digraph iCFG { 31 -> 33 ; -30 [label="30: Return Stmt \n n$0=_fun_createAndGetVal() [line 41]\n *&return:int =(1 / n$0) [line 41]\n REMOVE_TEMPS(n$0); [line 41]\n APPLY_ABSTRACTION; [line 41]\n " shape="box"] +30 [label="30: Return Stmt \n n$0=_fun_createAndGetVal() [line 41]\n *&return:int =(1 / n$0) [line 41]\n " shape="box"] 30 -> 29 ; @@ -86,11 +86,11 @@ digraph iCFG { 27 -> 26 ; -26 [label="26: Return Stmt \n n$0=_fun_getVal(&x:class X1 &) [line 36]\n *&return:int =n$0 [line 36]\n REMOVE_TEMPS(n$0); [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="box"] +26 [label="26: Return Stmt \n n$0=_fun_getVal(&x:class X1 &) [line 36]\n *&return:int =n$0 [line 36]\n " shape="box"] 26 -> 25 ; -25 [label="25: Exit createAndGetVal \n NULLIFY(&x); [line 37]\n " color=yellow style=filled] +25 [label="25: Exit createAndGetVal \n " color=yellow style=filled] 24 [label="24: Start createAndGetVal\nFormals: \nLocals: x:class X1 \n DECLARE_LOCALS(&return,&x); [line 34]\n " color=yellow style=filled] @@ -101,18 +101,18 @@ digraph iCFG { 23 -> 22 ; -22 [label="22: Return Stmt \n n$0=_fun_getVal(&x:class X3 &) [line 36]\n *&return:int =n$0 [line 36]\n REMOVE_TEMPS(n$0); [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="box"] +22 [label="22: Return Stmt \n n$0=_fun_getVal(&x:class X3 &) [line 36]\n *&return:int =n$0 [line 36]\n " shape="box"] 22 -> 21 ; -21 [label="21: Exit createAndGetVal \n NULLIFY(&x); [line 37]\n " color=yellow style=filled] +21 [label="21: Exit createAndGetVal \n " color=yellow style=filled] 20 [label="20: Start createAndGetVal\nFormals: \nLocals: x:class X3 \n DECLARE_LOCALS(&return,&x); [line 34]\n " color=yellow style=filled] 20 -> 23 ; -19 [label="19: Return Stmt \n n$0=*&x:class X3 & [line 30]\n n$1=*n$0:class X3 [line 30]\n n$2=_fun_X3_get(n$0:class X3 &) [line 30]\n *&return:int =n$2 [line 30]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 30]\n NULLIFY(&x); [line 30]\n APPLY_ABSTRACTION; [line 30]\n " shape="box"] +19 [label="19: Return Stmt \n n$0=*&x:class X3 & [line 30]\n n$1=*n$0:class X3 [line 30]\n n$2=_fun_X3_get(n$0:class X3 &) [line 30]\n *&return:int =n$2 [line 30]\n " shape="box"] 19 -> 18 ; @@ -123,7 +123,7 @@ digraph iCFG { 17 -> 19 ; -16 [label="16: Return Stmt \n n$0=*&x:class X1 & [line 24]\n n$1=*n$0:class X1 [line 24]\n n$2=_fun_X1_getVal(n$0:class X1 &) [line 24]\n *&return:int =n$2 [line 24]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 24]\n NULLIFY(&x); [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +16 [label="16: Return Stmt \n n$0=*&x:class X1 & [line 24]\n n$1=*n$0:class X1 [line 24]\n n$2=_fun_X1_getVal(n$0:class X1 &) [line 24]\n *&return:int =n$2 [line 24]\n " shape="box"] 16 -> 15 ; @@ -141,7 +141,7 @@ digraph iCFG { 12 -> 13 ; -11 [label="11: Return Stmt \n *&return:int =0 [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +11 [label="11: Return Stmt \n *&return:int =0 [line 19]\n " shape="box"] 11 -> 10 ; @@ -152,7 +152,7 @@ digraph iCFG { 9 -> 11 ; -8 [label="8: Return Stmt \n *&return:int =0 [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +8 [label="8: Return Stmt \n *&return:int =0 [line 15]\n " shape="box"] 8 -> 7 ; @@ -170,7 +170,7 @@ digraph iCFG { 4 -> 5 ; -3 [label="3: Return Stmt \n *&return:int =1 [line 11]\n APPLY_ABSTRACTION; [line 11]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =1 [line 11]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/templates/method.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/templates/method.cpp.dot index 3cecf9d34..9a1e8f06d 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/templates/method.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/templates/method.cpp.dot @@ -12,11 +12,11 @@ digraph iCFG { 73 -> 72 ; -72 [label="72: Return Stmt \n n$0=*&g:class GetterTempl [line 74]\n n$1=_fun_GetterTempl_get(&g:class GetterTempl &,&x1_1:class X1 &,&x1_2:class X1 &) [line 74]\n *&return:int =(1 / n$1) [line 74]\n REMOVE_TEMPS(n$0,n$1); [line 74]\n APPLY_ABSTRACTION; [line 74]\n " shape="box"] +72 [label="72: Return Stmt \n n$0=*&g:class GetterTempl [line 74]\n n$1=_fun_GetterTempl_get(&g:class GetterTempl &,&x1_1:class X1 &,&x1_2:class X1 &) [line 74]\n *&return:int =(1 / n$1) [line 74]\n " shape="box"] 72 -> 71 ; -71 [label="71: Exit div1_getter_templ2 \n NULLIFY(&x1_2); [line 75]\n NULLIFY(&x1_1); [line 75]\n NULLIFY(&g); [line 75]\n " color=yellow style=filled] +71 [label="71: Exit div1_getter_templ2 \n " color=yellow style=filled] 70 [label="70: Start div1_getter_templ2\nFormals: \nLocals: g:class GetterTempl x1_2:class X1 x1_1:class X1 \n DECLARE_LOCALS(&return,&g,&x1_2,&x1_1); [line 70]\n " color=yellow style=filled] @@ -35,11 +35,11 @@ digraph iCFG { 67 -> 66 ; -66 [label="66: Return Stmt \n n$0=*&g:class GetterTempl [line 67]\n n$1=_fun_GetterTempl_get(&g:class GetterTempl &,&x2:class X2 &,&x1:class X1 &) [line 67]\n *&return:int =(1 / n$1) [line 67]\n REMOVE_TEMPS(n$0,n$1); [line 67]\n APPLY_ABSTRACTION; [line 67]\n " shape="box"] +66 [label="66: Return Stmt \n n$0=*&g:class GetterTempl [line 67]\n n$1=_fun_GetterTempl_get(&g:class GetterTempl &,&x2:class X2 &,&x1:class X1 &) [line 67]\n *&return:int =(1 / n$1) [line 67]\n " shape="box"] 66 -> 65 ; -65 [label="65: Exit div1_getter_templ \n NULLIFY(&x2); [line 68]\n NULLIFY(&x1); [line 68]\n NULLIFY(&g); [line 68]\n " color=yellow style=filled] +65 [label="65: Exit div1_getter_templ \n " color=yellow style=filled] 64 [label="64: Start div1_getter_templ\nFormals: \nLocals: g:class GetterTempl x2:class X2 x1:class X1 \n DECLARE_LOCALS(&return,&g,&x2,&x1); [line 63]\n " color=yellow style=filled] @@ -58,11 +58,11 @@ digraph iCFG { 61 -> 60 ; -60 [label="60: Return Stmt \n n$0=*&g:class GetterTempl [line 60]\n n$1=_fun_GetterTempl_get(&g:class GetterTempl &,&x2_1:class X2 &,&x2_2:class X2 &) [line 60]\n *&return:int =(1 / n$1) [line 60]\n REMOVE_TEMPS(n$0,n$1); [line 60]\n APPLY_ABSTRACTION; [line 60]\n " shape="box"] +60 [label="60: Return Stmt \n n$0=*&g:class GetterTempl [line 60]\n n$1=_fun_GetterTempl_get(&g:class GetterTempl &,&x2_1:class X2 &,&x2_2:class X2 &) [line 60]\n *&return:int =(1 / n$1) [line 60]\n " shape="box"] 60 -> 59 ; -59 [label="59: Exit div0_getter_templ2 \n NULLIFY(&x2_2); [line 61]\n NULLIFY(&x2_1); [line 61]\n NULLIFY(&g); [line 61]\n " color=yellow style=filled] +59 [label="59: Exit div0_getter_templ2 \n " color=yellow style=filled] 58 [label="58: Start div0_getter_templ2\nFormals: \nLocals: g:class GetterTempl x2_2:class X2 x2_1:class X2 \n DECLARE_LOCALS(&return,&g,&x2_2,&x2_1); [line 56]\n " color=yellow style=filled] @@ -81,11 +81,11 @@ digraph iCFG { 55 -> 54 ; -54 [label="54: Return Stmt \n n$0=*&g:class GetterTempl [line 53]\n n$1=_fun_GetterTempl_get(&g:class GetterTempl &,&x3:class X3 &,&x2:class X2 &) [line 53]\n *&return:int =(1 / n$1) [line 53]\n REMOVE_TEMPS(n$0,n$1); [line 53]\n APPLY_ABSTRACTION; [line 53]\n " shape="box"] +54 [label="54: Return Stmt \n n$0=*&g:class GetterTempl [line 53]\n n$1=_fun_GetterTempl_get(&g:class GetterTempl &,&x3:class X3 &,&x2:class X2 &) [line 53]\n *&return:int =(1 / n$1) [line 53]\n " shape="box"] 54 -> 53 ; -53 [label="53: Exit div0_getter_templ \n NULLIFY(&x3); [line 54]\n NULLIFY(&x2); [line 54]\n NULLIFY(&g); [line 54]\n " color=yellow style=filled] +53 [label="53: Exit div0_getter_templ \n " color=yellow style=filled] 52 [label="52: Start div0_getter_templ\nFormals: \nLocals: g:class GetterTempl x3:class X3 x2:class X2 \n DECLARE_LOCALS(&return,&g,&x3,&x2); [line 49]\n " color=yellow style=filled] @@ -100,11 +100,11 @@ digraph iCFG { 50 -> 49 ; -49 [label="49: Return Stmt \n n$0=*&g:class Getter [line 46]\n n$1=_fun_Getter_get(&g:class Getter &,&x1:class X1 &) [line 46]\n *&return:int =(1 / n$1) [line 46]\n REMOVE_TEMPS(n$0,n$1); [line 46]\n APPLY_ABSTRACTION; [line 46]\n " shape="box"] +49 [label="49: Return Stmt \n n$0=*&g:class Getter [line 46]\n n$1=_fun_Getter_get(&g:class Getter &,&x1:class X1 &) [line 46]\n *&return:int =(1 / n$1) [line 46]\n " shape="box"] 49 -> 48 ; -48 [label="48: Exit div1_getter \n NULLIFY(&x1); [line 47]\n NULLIFY(&g); [line 47]\n " color=yellow style=filled] +48 [label="48: Exit div1_getter \n " color=yellow style=filled] 47 [label="47: Start div1_getter\nFormals: \nLocals: g:class Getter x1:class X1 \n DECLARE_LOCALS(&return,&g,&x1); [line 43]\n " color=yellow style=filled] @@ -119,11 +119,11 @@ digraph iCFG { 45 -> 44 ; -44 [label="44: Return Stmt \n n$0=*&g:class Getter [line 40]\n n$1=_fun_Getter_get(&g:class Getter &,&x2:class X2 &) [line 40]\n *&return:int =(1 / n$1) [line 40]\n REMOVE_TEMPS(n$0,n$1); [line 40]\n APPLY_ABSTRACTION; [line 40]\n " shape="box"] +44 [label="44: Return Stmt \n n$0=*&g:class Getter [line 40]\n n$1=_fun_Getter_get(&g:class Getter &,&x2:class X2 &) [line 40]\n *&return:int =(1 / n$1) [line 40]\n " shape="box"] 44 -> 43 ; -43 [label="43: Exit div0_getter \n NULLIFY(&x2); [line 41]\n NULLIFY(&g); [line 41]\n " color=yellow style=filled] +43 [label="43: Exit div0_getter \n " color=yellow style=filled] 42 [label="42: Start div0_getter\nFormals: \nLocals: g:class Getter x2:class X2 \n DECLARE_LOCALS(&return,&g,&x2); [line 37]\n " color=yellow style=filled] @@ -137,7 +137,7 @@ digraph iCFG { 40 -> 41 ; -39 [label="39: Return Stmt \n n$0=*&t:class X1 & [line 33]\n n$1=*n$0:class X1 [line 33]\n n$2=_fun_X1_get(n$0:class X1 &) [line 33]\n n$3=*&s:class X1 & [line 33]\n n$4=*n$3:class X1 [line 33]\n n$5=_fun_X1_get(n$3:class X1 &) [line 33]\n *&return:int =(n$2 + n$5) [line 33]\n REMOVE_TEMPS(n$0,n$1,n$2,n$3,n$4,n$5); [line 33]\n NULLIFY(&s); [line 33]\n NULLIFY(&t); [line 33]\n APPLY_ABSTRACTION; [line 33]\n " shape="box"] +39 [label="39: Return Stmt \n n$0=*&t:class X1 & [line 33]\n n$1=*n$0:class X1 [line 33]\n n$2=_fun_X1_get(n$0:class X1 &) [line 33]\n n$3=*&s:class X1 & [line 33]\n n$4=*n$3:class X1 [line 33]\n n$5=_fun_X1_get(n$3:class X1 &) [line 33]\n *&return:int =(n$2 + n$5) [line 33]\n " shape="box"] 39 -> 38 ; @@ -155,7 +155,7 @@ digraph iCFG { 35 -> 36 ; -34 [label="34: Return Stmt \n n$0=*&t:class X2 & [line 33]\n n$1=*n$0:class X2 [line 33]\n n$2=_fun_X2_get(n$0:class X2 &) [line 33]\n n$3=*&s:class X1 & [line 33]\n n$4=*n$3:class X1 [line 33]\n n$5=_fun_X1_get(n$3:class X1 &) [line 33]\n *&return:int =(n$2 + n$5) [line 33]\n REMOVE_TEMPS(n$0,n$1,n$2,n$3,n$4,n$5); [line 33]\n NULLIFY(&s); [line 33]\n NULLIFY(&t); [line 33]\n APPLY_ABSTRACTION; [line 33]\n " shape="box"] +34 [label="34: Return Stmt \n n$0=*&t:class X2 & [line 33]\n n$1=*n$0:class X2 [line 33]\n n$2=_fun_X2_get(n$0:class X2 &) [line 33]\n n$3=*&s:class X1 & [line 33]\n n$4=*n$3:class X1 [line 33]\n n$5=_fun_X1_get(n$3:class X1 &) [line 33]\n *&return:int =(n$2 + n$5) [line 33]\n " shape="box"] 34 -> 33 ; @@ -166,7 +166,7 @@ digraph iCFG { 32 -> 34 ; -31 [label="31: Return Stmt \n n$0=*&t:class X2 & [line 33]\n n$1=*n$0:class X2 [line 33]\n n$2=_fun_X2_get(n$0:class X2 &) [line 33]\n n$3=*&s:class X2 & [line 33]\n n$4=*n$3:class X2 [line 33]\n n$5=_fun_X2_get(n$3:class X2 &) [line 33]\n *&return:int =(n$2 + n$5) [line 33]\n REMOVE_TEMPS(n$0,n$1,n$2,n$3,n$4,n$5); [line 33]\n NULLIFY(&s); [line 33]\n NULLIFY(&t); [line 33]\n APPLY_ABSTRACTION; [line 33]\n " shape="box"] +31 [label="31: Return Stmt \n n$0=*&t:class X2 & [line 33]\n n$1=*n$0:class X2 [line 33]\n n$2=_fun_X2_get(n$0:class X2 &) [line 33]\n n$3=*&s:class X2 & [line 33]\n n$4=*n$3:class X2 [line 33]\n n$5=_fun_X2_get(n$3:class X2 &) [line 33]\n *&return:int =(n$2 + n$5) [line 33]\n " shape="box"] 31 -> 30 ; @@ -184,7 +184,7 @@ digraph iCFG { 27 -> 28 ; -26 [label="26: Return Stmt \n n$0=*&t:class X3 & [line 33]\n n$1=*n$0:class X3 [line 33]\n n$2=_fun_X3_get(n$0:class X3 &) [line 33]\n n$3=*&s:class X2 & [line 33]\n n$4=*n$3:class X2 [line 33]\n n$5=_fun_X2_get(n$3:class X2 &) [line 33]\n *&return:int =(n$2 + n$5) [line 33]\n REMOVE_TEMPS(n$0,n$1,n$2,n$3,n$4,n$5); [line 33]\n NULLIFY(&s); [line 33]\n NULLIFY(&t); [line 33]\n APPLY_ABSTRACTION; [line 33]\n " shape="box"] +26 [label="26: Return Stmt \n n$0=*&t:class X3 & [line 33]\n n$1=*n$0:class X3 [line 33]\n n$2=_fun_X3_get(n$0:class X3 &) [line 33]\n n$3=*&s:class X2 & [line 33]\n n$4=*n$3:class X2 [line 33]\n n$5=_fun_X2_get(n$3:class X2 &) [line 33]\n *&return:int =(n$2 + n$5) [line 33]\n " shape="box"] 26 -> 25 ; @@ -202,7 +202,7 @@ digraph iCFG { 22 -> 23 ; -21 [label="21: Return Stmt \n n$0=*&s:class X1 & [line 25]\n n$1=*n$0:class X1 [line 25]\n n$2=_fun_X1_get(n$0:class X1 &) [line 25]\n *&return:int =n$2 [line 25]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 25]\n NULLIFY(&s); [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="box"] +21 [label="21: Return Stmt \n n$0=*&s:class X1 & [line 25]\n n$1=*n$0:class X1 [line 25]\n n$2=_fun_X1_get(n$0:class X1 &) [line 25]\n *&return:int =n$2 [line 25]\n " shape="box"] 21 -> 20 ; @@ -213,7 +213,7 @@ digraph iCFG { 19 -> 21 ; -18 [label="18: Return Stmt \n n$0=*&s:class X2 & [line 25]\n n$1=*n$0:class X2 [line 25]\n n$2=_fun_X2_get(n$0:class X2 &) [line 25]\n *&return:int =n$2 [line 25]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 25]\n NULLIFY(&s); [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="box"] +18 [label="18: Return Stmt \n n$0=*&s:class X2 & [line 25]\n n$1=*n$0:class X2 [line 25]\n n$2=_fun_X2_get(n$0:class X2 &) [line 25]\n *&return:int =n$2 [line 25]\n " shape="box"] 18 -> 17 ; @@ -231,7 +231,7 @@ digraph iCFG { 14 -> 15 ; -13 [label="13: Return Stmt \n *&return:int =0 [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +13 [label="13: Return Stmt \n *&return:int =0 [line 19]\n " shape="box"] 13 -> 12 ; @@ -249,7 +249,7 @@ digraph iCFG { 9 -> 10 ; -8 [label="8: Return Stmt \n *&return:int =0 [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +8 [label="8: Return Stmt \n *&return:int =0 [line 15]\n " shape="box"] 8 -> 7 ; @@ -267,7 +267,7 @@ digraph iCFG { 4 -> 5 ; -3 [label="3: Return Stmt \n *&return:int =1 [line 11]\n APPLY_ABSTRACTION; [line 11]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =1 [line 11]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/templates/simple.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/templates/simple.cpp.dot index 206f92b14..260f6139a 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/templates/simple.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/templates/simple.cpp.dot @@ -1,10 +1,10 @@ /* @generated */ digraph iCFG { -8 [label="8: BinaryOperatorStmt: Assign \n n$2=*&v:class X & [line 25]\n *n$2.field:int =0 [line 25]\n REMOVE_TEMPS(n$2); [line 25]\n " shape="box"] +8 [label="8: BinaryOperatorStmt: Assign \n n$2=*&v:class X & [line 25]\n *n$2.field:int =0 [line 25]\n " shape="box"] 8 -> 7 ; -7 [label="7: Return Stmt \n n$0=*&v:class X & [line 26]\n n$1=*n$0.field:int [line 26]\n *&return:int =(1 / n$1) [line 26]\n REMOVE_TEMPS(n$0,n$1); [line 26]\n NULLIFY(&v); [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"] +7 [label="7: Return Stmt \n n$0=*&v:class X & [line 26]\n n$1=*n$0.field:int [line 26]\n *&return:int =(1 / n$1) [line 26]\n " shape="box"] 7 -> 6 ; @@ -15,11 +15,11 @@ digraph iCFG { 5 -> 8 ; -4 [label="4: BinaryOperatorStmt: Assign \n n$2=*&v:class Container & [line 20]\n *n$2.field:int =0 [line 20]\n REMOVE_TEMPS(n$2); [line 20]\n " shape="box"] +4 [label="4: BinaryOperatorStmt: Assign \n n$2=*&v:class Container & [line 20]\n *n$2.field:int =0 [line 20]\n " shape="box"] 4 -> 3 ; -3 [label="3: Return Stmt \n n$0=*&v:class Container & [line 21]\n n$1=*n$0.field:int [line 21]\n *&return:int =(1 / n$1) [line 21]\n REMOVE_TEMPS(n$0,n$1); [line 21]\n NULLIFY(&v); [line 21]\n APPLY_ABSTRACTION; [line 21]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&v:class Container & [line 21]\n n$1=*n$0.field:int [line 21]\n *&return:int =(1 / n$1) [line 21]\n " shape="box"] 3 -> 2 ; 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 6f902bb66..1d22d710b 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/templates/sizeof_pack.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/templates/sizeof_pack.cpp.dot @@ -1,19 +1,19 @@ /* @generated */ digraph iCFG { -11 [label="11: DeclStmt \n n$1=*&t:int & [line 16]\n n$2=*n$1:int [line 16]\n n$3=_fun_MyHasher_hash(n$2:int ) [line 16]\n *&seed:int =n$3 [line 16]\n REMOVE_TEMPS(n$1,n$2,n$3); [line 16]\n NULLIFY(&t); [line 16]\n " shape="box"] +11 [label="11: DeclStmt \n n$1=*&t:int & [line 16]\n n$2=*n$1:int [line 16]\n n$3=_fun_MyHasher_hash(n$2:int ) [line 16]\n *&seed:int =n$3 [line 16]\n " shape="box"] 11 -> 8 ; 11 -> 9 ; -10 [label="10: Return Stmt \n n$0=*&seed:int [line 18]\n *&return:int =n$0 [line 18]\n REMOVE_TEMPS(n$0); [line 18]\n NULLIFY(&seed); [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +10 [label="10: Return Stmt \n n$0=*&seed:int [line 18]\n *&return:int =n$0 [line 18]\n " shape="box"] 10 -> 5 ; -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 [label="9: Prune (false branch) \n PRUNE(((_t$0 == 0) == 0), false); [line 17]\n " shape="invhouse"] 9 -> 7 ; -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 [label="8: Prune (true branch) \n PRUNE(((_t$0 == 0) != 0), true); [line 17]\n " shape="invhouse"] 8 -> 10 ; @@ -21,7 +21,7 @@ digraph iCFG { 7 -> 6 ; -6 [label="6: Return Stmt \n *&return:int =0 [line 20]\n APPLY_ABSTRACTION; [line 20]\n " shape="box"] +6 [label="6: Return Stmt \n *&return:int =0 [line 20]\n " shape="box"] 6 -> 5 ; @@ -32,7 +32,7 @@ digraph iCFG { 4 -> 11 ; -3 [label="3: Return Stmt \n *&return:int =1 [line 11]\n APPLY_ABSTRACTION; [line 11]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =1 [line 11]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/types/casts.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/types/casts.cpp.dot index 792da61ed..c854293b7 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/types/casts.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/types/casts.cpp.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -6 [label="6: DeclStmt \n *&a:int =(2 + 3.400000) [line 15]\n NULLIFY(&a); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +6 [label="6: DeclStmt \n *&a:int =(2 + 3.400000) [line 15]\n " shape="box"] 6 -> 5 ; @@ -11,7 +11,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: DeclStmt \n n$0=*&a:int [line 12]\n *&la:long long =n$0 [line 12]\n REMOVE_TEMPS(n$0); [line 12]\n NULLIFY(&a); [line 12]\n NULLIFY(&la); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +3 [label="3: DeclStmt \n n$0=*&a:int [line 12]\n *&la:long long =n$0 [line 12]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/types/functions.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/types/functions.cpp.dot index 1169a185e..a3f240d9f 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/types/functions.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/types/functions.cpp.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -19 [label="19: Call _fun_fun_ignore_param \n n$0=_fun_fun_ignore_param(1:int ,1:int ,1:int ) [line 27]\n REMOVE_TEMPS(n$0); [line 27]\n APPLY_ABSTRACTION; [line 27]\n " shape="box"] +19 [label="19: Call _fun_fun_ignore_param \n n$0=_fun_fun_ignore_param(1:int ,1:int ,1:int ) [line 27]\n " shape="box"] 19 -> 18 ; @@ -11,23 +11,23 @@ digraph iCFG { 17 -> 19 ; -16 [label="16: Call _fun_fun_default \n n$4=_fun_fun_default(1:int ,2:int ) [line 19]\n REMOVE_TEMPS(n$4); [line 19]\n " shape="box"] +16 [label="16: Call _fun_fun_default \n n$4=_fun_fun_default(1:int ,2:int ) [line 19]\n " shape="box"] 16 -> 15 ; -15 [label="15: Call _fun_fun_default \n n$3=_fun_fun_default(1:int ,5:int ) [line 20]\n REMOVE_TEMPS(n$3); [line 20]\n " shape="box"] +15 [label="15: Call _fun_fun_default \n n$3=_fun_fun_default(1:int ,5:int ) [line 20]\n " shape="box"] 15 -> 14 ; -14 [label="14: Call _fun_fun_default \n n$2=_fun_fun_default(3:int ,5:int ) [line 21]\n REMOVE_TEMPS(n$2); [line 21]\n " shape="box"] +14 [label="14: Call _fun_fun_default \n n$2=_fun_fun_default(3:int ,5:int ) [line 21]\n " shape="box"] 14 -> 13 ; -13 [label="13: Call _fun_fun_default_decl \n n$1=_fun_fun_default_decl(6:int ,5:int ) [line 23]\n REMOVE_TEMPS(n$1); [line 23]\n " shape="box"] +13 [label="13: Call _fun_fun_default_decl \n n$1=_fun_fun_default_decl(6:int ,5:int ) [line 23]\n " shape="box"] 13 -> 12 ; -12 [label="12: Call _fun_fun_default_decl \n n$0=_fun_fun_default_decl(6:int ,6:int ) [line 24]\n REMOVE_TEMPS(n$0); [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +12 [label="12: Call _fun_fun_default_decl \n n$0=_fun_fun_default_decl(6:int ,6:int ) [line 24]\n " shape="box"] 12 -> 11 ; @@ -38,7 +38,7 @@ digraph iCFG { 10 -> 16 ; -9 [label="9: Return Stmt \n n$0=*&a:int [line 16]\n *&return:int =n$0 [line 16]\n REMOVE_TEMPS(n$0); [line 16]\n NULLIFY(&a); [line 16]\n APPLY_ABSTRACTION; [line 16]\n " shape="box"] +9 [label="9: Return Stmt \n n$0=*&a:int [line 16]\n *&return:int =n$0 [line 16]\n " shape="box"] 9 -> 8 ; @@ -49,7 +49,7 @@ digraph iCFG { 7 -> 9 ; -6 [label="6: Return Stmt \n n$0=*&a:int [line 14]\n n$1=*&b:int [line 14]\n *&return:int =(n$0 + n$1) [line 14]\n REMOVE_TEMPS(n$0,n$1); [line 14]\n NULLIFY(&a); [line 14]\n NULLIFY(&b); [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +6 [label="6: Return Stmt \n n$0=*&a:int [line 14]\n n$1=*&b:int [line 14]\n *&return:int =(n$0 + n$1) [line 14]\n " shape="box"] 6 -> 5 ; @@ -60,7 +60,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: Return Stmt \n n$0=*&a:int [line 10]\n n$1=*&b:int [line 10]\n *&return:int =(n$0 + n$1) [line 10]\n REMOVE_TEMPS(n$0,n$1); [line 10]\n NULLIFY(&a); [line 10]\n NULLIFY(&b); [line 10]\n APPLY_ABSTRACTION; [line 10]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&a:int [line 10]\n n$1=*&b:int [line 10]\n *&return:int =(n$0 + n$1) [line 10]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/types/inheritance.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/types/inheritance.cpp.dot index 0409454f9..9a2dbdf0b 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/types/inheritance.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/types/inheritance.cpp.dot @@ -1,38 +1,38 @@ /* @generated */ digraph iCFG { -25 [label="25: DeclStmt \n n$20=_fun___new(sizeof(class Base ):unsigned long ) [line 22]\n _fun_Base_Base(n$20:class Base *) [line 22]\n *&b:class Base *=n$20 [line 22]\n REMOVE_TEMPS(n$20); [line 22]\n " shape="box"] +25 [label="25: DeclStmt \n n$20=_fun___new(sizeof(class Base ):unsigned long ) [line 22]\n _fun_Base_Base(n$20:class Base *) [line 22]\n *&b:class Base *=n$20 [line 22]\n " shape="box"] 25 -> 24 ; -24 [label="24: DeclStmt \n n$19=_fun___new(sizeof(class Sub ):unsigned long ) [line 23]\n _fun_Sub_Sub(n$19:class Sub *) [line 23]\n *&s1:class Sub *=n$19 [line 23]\n REMOVE_TEMPS(n$19); [line 23]\n " shape="box"] +24 [label="24: DeclStmt \n n$19=_fun___new(sizeof(class Sub ):unsigned long ) [line 23]\n _fun_Sub_Sub(n$19:class Sub *) [line 23]\n *&s1:class Sub *=n$19 [line 23]\n " shape="box"] 24 -> 23 ; -23 [label="23: DeclStmt \n n$18=_fun___new(sizeof(class Sub ):unsigned long ) [line 24]\n _fun_Sub_Sub(n$18:class Sub *) [line 24]\n *&s2:class Sub *=n$18 [line 24]\n REMOVE_TEMPS(n$18); [line 24]\n " shape="box"] +23 [label="23: DeclStmt \n n$18=_fun___new(sizeof(class Sub ):unsigned long ) [line 24]\n _fun_Sub_Sub(n$18:class Sub *) [line 24]\n *&s2:class Sub *=n$18 [line 24]\n " shape="box"] 23 -> 22 ; -22 [label="22: Call _fun_Base_fun \n n$15=*&b:class Base * [line 26]\n n$16=*n$15:class Base [line 26]\n n$17=_fun_Base_fun(n$15:class Base *) [line 26]\n REMOVE_TEMPS(n$15,n$16,n$17); [line 26]\n " shape="box"] +22 [label="22: Call _fun_Base_fun \n n$15=*&b:class Base * [line 26]\n n$16=*n$15:class Base [line 26]\n n$17=_fun_Base_fun(n$15:class Base *) [line 26]\n " shape="box"] 22 -> 21 ; -21 [label="21: Call _fun_Base_fun \n n$12=*&s1:class Base * [line 27]\n n$13=*n$12:class Base [line 27]\n n$14=_fun_Base_fun(n$12:class Base *) [line 27]\n REMOVE_TEMPS(n$12,n$13,n$14); [line 27]\n " shape="box"] +21 [label="21: Call _fun_Base_fun \n n$12=*&s1:class Base * [line 27]\n n$13=*n$12:class Base [line 27]\n n$14=_fun_Base_fun(n$12:class Base *) [line 27]\n " shape="box"] 21 -> 20 ; -20 [label="20: Call _fun_Base_fun \n n$9=*&s2:class Sub * [line 28]\n n$10=*n$9:class Sub [line 28]\n n$11=_fun_Base_fun(n$9:class Sub *) [line 28]\n REMOVE_TEMPS(n$9,n$10,n$11); [line 28]\n " shape="box"] +20 [label="20: Call _fun_Base_fun \n n$9=*&s2:class Sub * [line 28]\n n$10=*n$9:class Sub [line 28]\n n$11=_fun_Base_fun(n$9:class Sub *) [line 28]\n " shape="box"] 20 -> 19 ; -19 [label="19: Call _fun_Base_fun_redefine \n n$6=*&b:class Base * [line 30]\n n$7=*n$6:class Base [line 30]\n n$8=_fun_Base_fun_redefine(n$6:class Base *) [line 30]\n REMOVE_TEMPS(n$6,n$7,n$8); [line 30]\n NULLIFY(&b); [line 30]\n " shape="box"] +19 [label="19: Call _fun_Base_fun_redefine \n n$6=*&b:class Base * [line 30]\n n$7=*n$6:class Base [line 30]\n n$8=_fun_Base_fun_redefine(n$6:class Base *) [line 30]\n " shape="box"] 19 -> 18 ; -18 [label="18: Call _fun_Base_fun_redefine \n n$3=*&s1:class Base * [line 31]\n n$4=*n$3:class Base [line 31]\n n$5=_fun_Base_fun_redefine(n$3:class Base *) [line 31]\n REMOVE_TEMPS(n$3,n$4,n$5); [line 31]\n NULLIFY(&s1); [line 31]\n " shape="box"] +18 [label="18: Call _fun_Base_fun_redefine \n n$3=*&s1:class Base * [line 31]\n n$4=*n$3:class Base [line 31]\n n$5=_fun_Base_fun_redefine(n$3:class Base *) [line 31]\n " shape="box"] 18 -> 17 ; -17 [label="17: Call _fun_Sub_fun_redefine \n n$0=*&s2:class Sub * [line 32]\n n$1=*n$0:class Sub [line 32]\n n$2=_fun_Sub_fun_redefine(n$0:class Sub *) [line 32]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 32]\n NULLIFY(&s2); [line 32]\n APPLY_ABSTRACTION; [line 32]\n " shape="box"] +17 [label="17: Call _fun_Sub_fun_redefine \n n$0=*&s2:class Sub * [line 32]\n n$1=*n$0:class Sub [line 32]\n n$2=_fun_Sub_fun_redefine(n$0:class Sub *) [line 32]\n " shape="box"] 17 -> 16 ; @@ -43,7 +43,7 @@ digraph iCFG { 15 -> 25 ; -14 [label="14: Constructor Init \n n$0=*&this:class Sub * [line 16]\n _fun_Base_Base(n$0:class Sub *) [line 16]\n REMOVE_TEMPS(n$0); [line 16]\n NULLIFY(&this); [line 16]\n APPLY_ABSTRACTION; [line 16]\n " shape="box"] +14 [label="14: Constructor Init \n n$0=*&this:class Sub * [line 16]\n _fun_Base_Base(n$0:class Sub *) [line 16]\n " shape="box"] 14 -> 13 ; @@ -54,7 +54,7 @@ digraph iCFG { 12 -> 14 ; -11 [label="11: Return Stmt \n *&return:int =20 [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +11 [label="11: Return Stmt \n *&return:int =20 [line 18]\n " shape="box"] 11 -> 10 ; @@ -72,7 +72,7 @@ digraph iCFG { 7 -> 8 ; -6 [label="6: Return Stmt \n *&return:int =10 [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="box"] +6 [label="6: Return Stmt \n *&return:int =10 [line 13]\n " shape="box"] 6 -> 5 ; @@ -83,7 +83,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: Return Stmt \n *&return:int =1 [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =1 [line 12]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/types/inheritance_field.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/types/inheritance_field.cpp.dot index f7d35ae60..dbd606474 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/types/inheritance_field.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/types/inheritance_field.cpp.dot @@ -1,14 +1,14 @@ /* @generated */ digraph iCFG { -41 [label="41: BinaryOperatorStmt: Assign \n n$3=*&s:class Sub * [line 67]\n *n$3.b1:int =1 [line 67]\n REMOVE_TEMPS(n$3); [line 67]\n " shape="box"] +41 [label="41: BinaryOperatorStmt: Assign \n n$3=*&s:class Sub * [line 67]\n *n$3.b1:int =1 [line 67]\n " shape="box"] 41 -> 40 ; -40 [label="40: DeclStmt \n n$2=*&s:class Sub * [line 68]\n *&b:class Sub *=n$2 [line 68]\n REMOVE_TEMPS(n$2); [line 68]\n NULLIFY(&s); [line 68]\n " shape="box"] +40 [label="40: DeclStmt \n n$2=*&s:class Sub * [line 68]\n *&b:class Sub *=n$2 [line 68]\n " shape="box"] 40 -> 39 ; -39 [label="39: Return Stmt \n n$0=*&b:class Base1 * [line 69]\n n$1=*n$0.b1:int [line 69]\n *&return:int =(1 / n$1) [line 69]\n REMOVE_TEMPS(n$0,n$1); [line 69]\n NULLIFY(&b); [line 69]\n APPLY_ABSTRACTION; [line 69]\n " shape="box"] +39 [label="39: Return Stmt \n n$0=*&b:class Base1 * [line 69]\n n$1=*n$0.b1:int [line 69]\n *&return:int =(1 / n$1) [line 69]\n " shape="box"] 39 -> 38 ; @@ -19,11 +19,11 @@ digraph iCFG { 37 -> 41 ; -36 [label="36: BinaryOperatorStmt: Assign \n n$2=*&s:class Sub & [line 62]\n *n$2.b1:int =1 [line 62]\n REMOVE_TEMPS(n$2); [line 62]\n " shape="box"] +36 [label="36: BinaryOperatorStmt: Assign \n n$2=*&s:class Sub & [line 62]\n *n$2.b1:int =1 [line 62]\n " shape="box"] 36 -> 35 ; -35 [label="35: Return Stmt \n n$0=*&s:class Sub & [line 63]\n n$1=*n$0.b1:int [line 63]\n *&return:int =(1 / n$1) [line 63]\n REMOVE_TEMPS(n$0,n$1); [line 63]\n NULLIFY(&s); [line 63]\n APPLY_ABSTRACTION; [line 63]\n " shape="box"] +35 [label="35: Return Stmt \n n$0=*&s:class Sub & [line 63]\n n$1=*n$0.b1:int [line 63]\n *&return:int =(1 / n$1) [line 63]\n " shape="box"] 35 -> 34 ; @@ -34,15 +34,15 @@ digraph iCFG { 33 -> 36 ; -32 [label="32: BinaryOperatorStmt: Assign \n n$5=*&s:class Sub * [line 56]\n *n$5.b1:int =1 [line 56]\n REMOVE_TEMPS(n$5); [line 56]\n " shape="box"] +32 [label="32: BinaryOperatorStmt: Assign \n n$5=*&s:class Sub * [line 56]\n *n$5.b1:int =1 [line 56]\n " shape="box"] 32 -> 31 ; -31 [label="31: BinaryOperatorStmt: Assign \n n$4=*&s:class Sub * [line 57]\n *n$4.s:int =1 [line 57]\n REMOVE_TEMPS(n$4); [line 57]\n " shape="box"] +31 [label="31: BinaryOperatorStmt: Assign \n n$4=*&s:class Sub * [line 57]\n *n$4.s:int =1 [line 57]\n " shape="box"] 31 -> 30 ; -30 [label="30: Return Stmt \n n$0=*&s:class Sub * [line 58]\n n$1=*n$0.b1:int [line 58]\n n$2=*&s:class Sub * [line 58]\n n$3=*n$2.s:int [line 58]\n *&return:int =(1 / (n$1 - n$3)) [line 58]\n REMOVE_TEMPS(n$0,n$1,n$2,n$3); [line 58]\n NULLIFY(&s); [line 58]\n APPLY_ABSTRACTION; [line 58]\n " shape="box"] +30 [label="30: Return Stmt \n n$0=*&s:class Sub * [line 58]\n n$1=*n$0.b1:int [line 58]\n n$2=*&s:class Sub * [line 58]\n n$3=*n$2.s:int [line 58]\n *&return:int =(1 / (n$1 - n$3)) [line 58]\n " shape="box"] 30 -> 29 ; @@ -53,15 +53,15 @@ digraph iCFG { 28 -> 32 ; -27 [label="27: BinaryOperatorStmt: Assign \n n$5=*&s:class Sub * [line 50]\n *n$5.b1:int =1 [line 50]\n REMOVE_TEMPS(n$5); [line 50]\n " shape="box"] +27 [label="27: BinaryOperatorStmt: Assign \n n$5=*&s:class Sub * [line 50]\n *n$5.b1:int =1 [line 50]\n " shape="box"] 27 -> 26 ; -26 [label="26: BinaryOperatorStmt: Assign \n n$4=*&s:class Sub * [line 51]\n *n$4.s:int =1 [line 51]\n REMOVE_TEMPS(n$4); [line 51]\n " shape="box"] +26 [label="26: BinaryOperatorStmt: Assign \n n$4=*&s:class Sub * [line 51]\n *n$4.s:int =1 [line 51]\n " shape="box"] 26 -> 25 ; -25 [label="25: Return Stmt \n n$0=*&s:class Sub * [line 52]\n n$1=*n$0.b1:int [line 52]\n n$2=*&s:class Sub * [line 52]\n n$3=*n$2.s:int [line 52]\n *&return:int =(1 / (n$1 - n$3)) [line 52]\n REMOVE_TEMPS(n$0,n$1,n$2,n$3); [line 52]\n NULLIFY(&s); [line 52]\n APPLY_ABSTRACTION; [line 52]\n " shape="box"] +25 [label="25: Return Stmt \n n$0=*&s:class Sub * [line 52]\n n$1=*n$0.b1:int [line 52]\n n$2=*&s:class Sub * [line 52]\n n$3=*n$2.s:int [line 52]\n *&return:int =(1 / (n$1 - n$3)) [line 52]\n " shape="box"] 25 -> 24 ; @@ -72,15 +72,15 @@ digraph iCFG { 23 -> 27 ; -22 [label="22: BinaryOperatorStmt: Assign \n n$3=*&s:class Sub & [line 44]\n *n$3.b1:int =0 [line 44]\n REMOVE_TEMPS(n$3); [line 44]\n " shape="box"] +22 [label="22: BinaryOperatorStmt: Assign \n n$3=*&s:class Sub & [line 44]\n *n$3.b1:int =0 [line 44]\n " shape="box"] 22 -> 21 ; -21 [label="21: DeclStmt \n n$2=*&s:class Sub & [line 45]\n *&b:class Sub &=n$2 [line 45]\n REMOVE_TEMPS(n$2); [line 45]\n NULLIFY(&s); [line 45]\n " shape="box"] +21 [label="21: DeclStmt \n n$2=*&s:class Sub & [line 45]\n *&b:class Sub &=n$2 [line 45]\n " shape="box"] 21 -> 20 ; -20 [label="20: Return Stmt \n n$0=*&b:class Base1 & [line 46]\n n$1=*n$0.b1:int [line 46]\n *&return:int =(1 / n$1) [line 46]\n REMOVE_TEMPS(n$0,n$1); [line 46]\n NULLIFY(&b); [line 46]\n APPLY_ABSTRACTION; [line 46]\n " shape="box"] +20 [label="20: Return Stmt \n n$0=*&b:class Base1 & [line 46]\n n$1=*n$0.b1:int [line 46]\n *&return:int =(1 / n$1) [line 46]\n " shape="box"] 20 -> 19 ; @@ -91,15 +91,15 @@ digraph iCFG { 18 -> 22 ; -17 [label="17: BinaryOperatorStmt: Assign \n n$3=*&s:class Sub * [line 38]\n *n$3.b1:int =0 [line 38]\n REMOVE_TEMPS(n$3); [line 38]\n " shape="box"] +17 [label="17: BinaryOperatorStmt: Assign \n n$3=*&s:class Sub * [line 38]\n *n$3.b1:int =0 [line 38]\n " shape="box"] 17 -> 16 ; -16 [label="16: DeclStmt \n n$2=*&s:class Sub * [line 39]\n *&b:class Sub *=n$2 [line 39]\n REMOVE_TEMPS(n$2); [line 39]\n NULLIFY(&s); [line 39]\n " shape="box"] +16 [label="16: DeclStmt \n n$2=*&s:class Sub * [line 39]\n *&b:class Sub *=n$2 [line 39]\n " shape="box"] 16 -> 15 ; -15 [label="15: Return Stmt \n n$0=*&b:class Base1 * [line 40]\n n$1=*n$0.b1:int [line 40]\n *&return:int =(1 / n$1) [line 40]\n REMOVE_TEMPS(n$0,n$1); [line 40]\n NULLIFY(&b); [line 40]\n APPLY_ABSTRACTION; [line 40]\n " shape="box"] +15 [label="15: Return Stmt \n n$0=*&b:class Base1 * [line 40]\n n$1=*n$0.b1:int [line 40]\n *&return:int =(1 / n$1) [line 40]\n " shape="box"] 15 -> 14 ; @@ -110,11 +110,11 @@ digraph iCFG { 13 -> 17 ; -12 [label="12: BinaryOperatorStmt: Assign \n n$2=*&s:class Sub & [line 33]\n *n$2.s:int =0 [line 33]\n REMOVE_TEMPS(n$2); [line 33]\n " shape="box"] +12 [label="12: BinaryOperatorStmt: Assign \n n$2=*&s:class Sub & [line 33]\n *n$2.s:int =0 [line 33]\n " shape="box"] 12 -> 11 ; -11 [label="11: Return Stmt \n n$0=*&s:class Sub & [line 34]\n n$1=*n$0.s:int [line 34]\n *&return:int =(1 / n$1) [line 34]\n REMOVE_TEMPS(n$0,n$1); [line 34]\n NULLIFY(&s); [line 34]\n APPLY_ABSTRACTION; [line 34]\n " shape="box"] +11 [label="11: Return Stmt \n n$0=*&s:class Sub & [line 34]\n n$1=*n$0.s:int [line 34]\n *&return:int =(1 / n$1) [line 34]\n " shape="box"] 11 -> 10 ; @@ -125,11 +125,11 @@ digraph iCFG { 9 -> 12 ; -8 [label="8: BinaryOperatorStmt: Assign \n n$2=*&s:class Sub & [line 28]\n *n$2.b2:int =0 [line 28]\n REMOVE_TEMPS(n$2); [line 28]\n " shape="box"] +8 [label="8: BinaryOperatorStmt: Assign \n n$2=*&s:class Sub & [line 28]\n *n$2.b2:int =0 [line 28]\n " shape="box"] 8 -> 7 ; -7 [label="7: Return Stmt \n n$0=*&s:class Sub & [line 29]\n n$1=*n$0.b2:int [line 29]\n *&return:int =(1 / n$1) [line 29]\n REMOVE_TEMPS(n$0,n$1); [line 29]\n NULLIFY(&s); [line 29]\n APPLY_ABSTRACTION; [line 29]\n " shape="box"] +7 [label="7: Return Stmt \n n$0=*&s:class Sub & [line 29]\n n$1=*n$0.b2:int [line 29]\n *&return:int =(1 / n$1) [line 29]\n " shape="box"] 7 -> 6 ; @@ -140,11 +140,11 @@ digraph iCFG { 5 -> 8 ; -4 [label="4: BinaryOperatorStmt: Assign \n n$2=*&s:class Sub & [line 23]\n *n$2.b1:int =0 [line 23]\n REMOVE_TEMPS(n$2); [line 23]\n " shape="box"] +4 [label="4: BinaryOperatorStmt: Assign \n n$2=*&s:class Sub & [line 23]\n *n$2.b1:int =0 [line 23]\n " shape="box"] 4 -> 3 ; -3 [label="3: Return Stmt \n n$0=*&s:class Sub & [line 24]\n n$1=*n$0.b1:int [line 24]\n *&return:int =(1 / n$1) [line 24]\n REMOVE_TEMPS(n$0,n$1); [line 24]\n NULLIFY(&s); [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&s:class Sub & [line 24]\n n$1=*n$0.b1:int [line 24]\n *&return:int =(1 / n$1) [line 24]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/types/operator_overload.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/types/operator_overload.cpp.dot index b189c5f28..2c94d7d00 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/types/operator_overload.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/types/operator_overload.cpp.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -27 [label="27: Return Stmt \n n$0=*&x:class X & [line 45]\n n$1=_fun_X_operator[](n$0:class X &,1:int ) [line 45]\n *&return:int =(1 / n$1) [line 45]\n REMOVE_TEMPS(n$0,n$1); [line 45]\n NULLIFY(&x); [line 45]\n APPLY_ABSTRACTION; [line 45]\n " shape="box"] +27 [label="27: Return Stmt \n n$0=*&x:class X & [line 45]\n n$1=_fun_X_operator[](n$0:class X &,1:int ) [line 45]\n *&return:int =(1 / n$1) [line 45]\n " shape="box"] 27 -> 26 ; @@ -11,7 +11,7 @@ digraph iCFG { 25 -> 27 ; -24 [label="24: Return Stmt \n n$0=*&y:class Y & [line 42]\n n$1=_fun_X_operator[](n$0:class Y &,0:int ) [line 42]\n *&return:int =(1 / n$1) [line 42]\n REMOVE_TEMPS(n$0,n$1); [line 42]\n NULLIFY(&y); [line 42]\n APPLY_ABSTRACTION; [line 42]\n " shape="box"] +24 [label="24: Return Stmt \n n$0=*&y:class Y & [line 42]\n n$1=_fun_X_operator[](n$0:class Y &,0:int ) [line 42]\n *&return:int =(1 / n$1) [line 42]\n " shape="box"] 24 -> 23 ; @@ -22,11 +22,11 @@ digraph iCFG { 22 -> 24 ; -21 [label="21: DeclStmt \n n$1=*&x:class X & [line 36]\n n$2=*n$1:class X [line 36]\n n$3=_fun_X_operator[](n$1:class X &,0:int ) [line 36]\n *&v:int =n$3 [line 36]\n REMOVE_TEMPS(n$1,n$2,n$3); [line 36]\n NULLIFY(&x); [line 36]\n " shape="box"] +21 [label="21: DeclStmt \n n$1=*&x:class X & [line 36]\n n$2=*n$1:class X [line 36]\n n$3=_fun_X_operator[](n$1:class X &,0:int ) [line 36]\n *&v:int =n$3 [line 36]\n " shape="box"] 21 -> 20 ; -20 [label="20: Return Stmt \n n$0=*&v:int [line 37]\n *&return:int =(1 / n$0) [line 37]\n REMOVE_TEMPS(n$0); [line 37]\n NULLIFY(&v); [line 37]\n APPLY_ABSTRACTION; [line 37]\n " shape="box"] +20 [label="20: Return Stmt \n n$0=*&v:int [line 37]\n *&return:int =(1 / n$0) [line 37]\n " shape="box"] 20 -> 19 ; @@ -37,11 +37,11 @@ digraph iCFG { 18 -> 21 ; -17 [label="17: DeclStmt \n n$1=*&x:class X & [line 30]\n n$2=_fun_operator*(n$1:class X &,0:int ) [line 30]\n *&v:int =n$2 [line 30]\n REMOVE_TEMPS(n$1,n$2); [line 30]\n NULLIFY(&x); [line 30]\n " shape="box"] +17 [label="17: DeclStmt \n n$1=*&x:class X & [line 30]\n n$2=_fun_operator*(n$1:class X &,0:int ) [line 30]\n *&v:int =n$2 [line 30]\n " shape="box"] 17 -> 16 ; -16 [label="16: Return Stmt \n n$0=*&v:int [line 31]\n *&return:int =(1 / n$0) [line 31]\n REMOVE_TEMPS(n$0); [line 31]\n NULLIFY(&v); [line 31]\n APPLY_ABSTRACTION; [line 31]\n " shape="box"] +16 [label="16: Return Stmt \n n$0=*&v:int [line 31]\n *&return:int =(1 / n$0) [line 31]\n " shape="box"] 16 -> 15 ; @@ -52,7 +52,7 @@ digraph iCFG { 14 -> 17 ; -13 [label="13: Return Stmt \n n$0=*&x:class X * [line 26]\n n$1=_fun_X_operator[](n$0:class X &,0:int ) [line 26]\n *&return:int =(1 / n$1) [line 26]\n REMOVE_TEMPS(n$0,n$1); [line 26]\n NULLIFY(&x); [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"] +13 [label="13: Return Stmt \n n$0=*&x:class X * [line 26]\n n$1=_fun_X_operator[](n$0:class X &,0:int ) [line 26]\n *&return:int =(1 / n$1) [line 26]\n " shape="box"] 13 -> 12 ; @@ -63,11 +63,11 @@ digraph iCFG { 11 -> 13 ; -10 [label="10: DeclStmt \n n$1=*&x:class X & [line 22]\n n$2=_fun_X_operator[](n$1:class X &,0:int ) [line 22]\n *&v:int =n$2 [line 22]\n REMOVE_TEMPS(n$1,n$2); [line 22]\n NULLIFY(&x); [line 22]\n " shape="box"] +10 [label="10: DeclStmt \n n$1=*&x:class X & [line 22]\n n$2=_fun_X_operator[](n$1:class X &,0:int ) [line 22]\n *&v:int =n$2 [line 22]\n " shape="box"] 10 -> 9 ; -9 [label="9: Return Stmt \n n$0=*&v:int [line 23]\n *&return:int =(1 / n$0) [line 23]\n REMOVE_TEMPS(n$0); [line 23]\n NULLIFY(&v); [line 23]\n APPLY_ABSTRACTION; [line 23]\n " shape="box"] +9 [label="9: Return Stmt \n n$0=*&v:int [line 23]\n *&return:int =(1 / n$0) [line 23]\n " shape="box"] 9 -> 8 ; @@ -78,7 +78,7 @@ digraph iCFG { 7 -> 10 ; -6 [label="6: Return Stmt \n n$0=*&v:int [line 18]\n *&return:int =n$0 [line 18]\n REMOVE_TEMPS(n$0); [line 18]\n NULLIFY(&v); [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +6 [label="6: Return Stmt \n n$0=*&v:int [line 18]\n *&return:int =n$0 [line 18]\n " shape="box"] 6 -> 5 ; @@ -89,7 +89,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: Return Stmt \n n$0=*&x:int [line 12]\n *&return:int =n$0 [line 12]\n REMOVE_TEMPS(n$0); [line 12]\n NULLIFY(&x); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&x:int [line 12]\n *&return:int =n$0 [line 12]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/types/return_struct.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/types/return_struct.cpp.dot index 59c97ea44..feea1846d 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/types/return_struct.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/types/return_struct.cpp.dot @@ -1,21 +1,21 @@ /* @generated */ digraph iCFG { -35 [label="35: Return Stmt \n _fun_get(1:int ,&__temp_return_n$1:class X *) [line 44]\n n$2=_fun_X_div(&__temp_return_n$1:class X &) [line 44]\n *&return:int =n$2 [line 44]\n REMOVE_TEMPS(n$2); [line 44]\n APPLY_ABSTRACTION; [line 44]\n " shape="box"] +35 [label="35: Return Stmt \n _fun_get(1:int ,&__temp_return_n$1:class X *) [line 44]\n n$2=_fun_X_div(&__temp_return_n$1:class X &) [line 44]\n *&return:int =n$2 [line 44]\n " shape="box"] 35 -> 34 ; -34 [label="34: Exit get_method_div1 \n NULLIFY(&__temp_return_n$1); [line 44]\n " color=yellow style=filled] +34 [label="34: Exit get_method_div1 \n " color=yellow style=filled] 33 [label="33: Start get_method_div1\nFormals: \nLocals: __temp_return_n$1:class X \n DECLARE_LOCALS(&return,&__temp_return_n$1); [line 44]\n " color=yellow style=filled] 33 -> 35 ; -32 [label="32: Return Stmt \n _fun_get(1:int ,&__temp_return_n$1:class X *) [line 42]\n n$2=*&__temp_return_n$1.f:int [line 42]\n *&return:int =(1 / n$2) [line 42]\n REMOVE_TEMPS(n$2); [line 42]\n APPLY_ABSTRACTION; [line 42]\n " shape="box"] +32 [label="32: Return Stmt \n _fun_get(1:int ,&__temp_return_n$1:class X *) [line 42]\n n$2=*&__temp_return_n$1.f:int [line 42]\n *&return:int =(1 / n$2) [line 42]\n " shape="box"] 32 -> 31 ; -31 [label="31: Exit get_field_div1 \n NULLIFY(&__temp_return_n$1); [line 42]\n " color=yellow style=filled] +31 [label="31: Exit get_field_div1 \n " color=yellow style=filled] 30 [label="30: Start get_field_div1\nFormals: \nLocals: __temp_return_n$1:class X \n DECLARE_LOCALS(&return,&__temp_return_n$1); [line 42]\n " color=yellow style=filled] @@ -26,37 +26,37 @@ digraph iCFG { 29 -> 28 ; -28 [label="28: Return Stmt \n n$0=*&x.f:int [line 39]\n *&return:int =(1 / n$0) [line 39]\n REMOVE_TEMPS(n$0); [line 39]\n APPLY_ABSTRACTION; [line 39]\n " shape="box"] +28 [label="28: Return Stmt \n n$0=*&x.f:int [line 39]\n *&return:int =(1 / n$0) [line 39]\n " shape="box"] 28 -> 27 ; -27 [label="27: Exit get_div1 \n NULLIFY(&x); [line 40]\n NULLIFY(&SIL_materialize_temp__n$1); [line 40]\n " color=yellow style=filled] +27 [label="27: Exit get_div1 \n " color=yellow style=filled] 26 [label="26: Start get_div1\nFormals: \nLocals: x:class X SIL_materialize_temp__n$1:class X \n DECLARE_LOCALS(&return,&x,&SIL_materialize_temp__n$1); [line 37]\n " color=yellow style=filled] 26 -> 29 ; -25 [label="25: Return Stmt \n _fun_get(0:int ,&__temp_return_n$1:class X *) [line 35]\n n$2=_fun_X_div(&__temp_return_n$1:class X &) [line 35]\n *&return:int =n$2 [line 35]\n REMOVE_TEMPS(n$2); [line 35]\n APPLY_ABSTRACTION; [line 35]\n " shape="box"] +25 [label="25: Return Stmt \n _fun_get(0:int ,&__temp_return_n$1:class X *) [line 35]\n n$2=_fun_X_div(&__temp_return_n$1:class X &) [line 35]\n *&return:int =n$2 [line 35]\n " shape="box"] 25 -> 24 ; -24 [label="24: Exit get_method_div0 \n NULLIFY(&__temp_return_n$1); [line 35]\n " color=yellow style=filled] +24 [label="24: Exit get_method_div0 \n " color=yellow style=filled] 23 [label="23: Start get_method_div0\nFormals: \nLocals: __temp_return_n$1:class X \n DECLARE_LOCALS(&return,&__temp_return_n$1); [line 35]\n " color=yellow style=filled] 23 -> 25 ; -22 [label="22: Call _fun_X_skip \n _fun_get(0:int ,&__temp_return_n$4:class X *) [line 31]\n n$5=_fun_X_skip(&__temp_return_n$4:class X &) [line 31]\n REMOVE_TEMPS(n$5); [line 31]\n " shape="box"] +22 [label="22: Call _fun_X_skip \n _fun_get(0:int ,&__temp_return_n$4:class X *) [line 31]\n n$5=_fun_X_skip(&__temp_return_n$4:class X &) [line 31]\n " shape="box"] 22 -> 21 ; -21 [label="21: Return Stmt \n _fun_get(0:int ,&__temp_return_n$1:class X *) [line 32]\n n$2=*&__temp_return_n$1.f:int [line 32]\n *&return:int =(1 / n$2) [line 32]\n REMOVE_TEMPS(n$2); [line 32]\n APPLY_ABSTRACTION; [line 32]\n " shape="box"] +21 [label="21: Return Stmt \n _fun_get(0:int ,&__temp_return_n$1:class X *) [line 32]\n n$2=*&__temp_return_n$1.f:int [line 32]\n *&return:int =(1 / n$2) [line 32]\n " shape="box"] 21 -> 20 ; -20 [label="20: Exit get_field_div0 \n NULLIFY(&__temp_return_n$4); [line 33]\n NULLIFY(&__temp_return_n$1); [line 33]\n " color=yellow style=filled] +20 [label="20: Exit get_field_div0 \n " color=yellow style=filled] 19 [label="19: Start get_field_div0\nFormals: \nLocals: __temp_return_n$1:class X __temp_return_n$4:class X \n DECLARE_LOCALS(&return,&__temp_return_n$1,&__temp_return_n$4); [line 30]\n " color=yellow style=filled] @@ -67,11 +67,11 @@ digraph iCFG { 18 -> 17 ; -17 [label="17: Return Stmt \n n$0=*&x.f:int [line 27]\n *&return:int =(1 / n$0) [line 27]\n REMOVE_TEMPS(n$0); [line 27]\n APPLY_ABSTRACTION; [line 27]\n " shape="box"] +17 [label="17: Return Stmt \n n$0=*&x.f:int [line 27]\n *&return:int =(1 / n$0) [line 27]\n " shape="box"] 17 -> 16 ; -16 [label="16: Exit get_div0 \n NULLIFY(&x); [line 28]\n NULLIFY(&SIL_materialize_temp__n$1); [line 28]\n " color=yellow style=filled] +16 [label="16: Exit get_div0 \n " color=yellow style=filled] 15 [label="15: Start get_div0\nFormals: \nLocals: x:class X SIL_materialize_temp__n$1:class X \n DECLARE_LOCALS(&return,&x,&SIL_materialize_temp__n$1); [line 25]\n " color=yellow style=filled] @@ -82,22 +82,22 @@ digraph iCFG { 14 -> 13 ; -13 [label="13: BinaryOperatorStmt: Assign \n n$1=*&a:int [line 21]\n *&x.f:int =n$1 [line 21]\n REMOVE_TEMPS(n$1); [line 21]\n NULLIFY(&a); [line 21]\n " shape="box"] +13 [label="13: BinaryOperatorStmt: Assign \n n$1=*&a:int [line 21]\n *&x.f:int =n$1 [line 21]\n " shape="box"] 13 -> 12 ; -12 [label="12: Return Stmt \n n$0=*&__return_param:class X * [line 22]\n _fun_X_X(n$0:class X *,&x:class X &) [line 22]\n REMOVE_TEMPS(n$0); [line 22]\n NULLIFY(&__return_param); [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"] +12 [label="12: Return Stmt \n n$0=*&__return_param:class X * [line 22]\n _fun_X_X(n$0:class X *,&x:class X &) [line 22]\n " shape="box"] 12 -> 11 ; -11 [label="11: Exit get \n NULLIFY(&x); [line 23]\n " color=yellow style=filled] +11 [label="11: Exit get \n " color=yellow style=filled] 10 [label="10: Start get\nFormals: a:int __return_param:class X *\nLocals: x:class X \n DECLARE_LOCALS(&return,&x); [line 19]\n " color=yellow style=filled] 10 -> 14 ; -9 [label="9: Return Stmt \n n$0=*&this:class X * [line 15]\n n$1=*n$0.f:int [line 15]\n *&return:int =(1 / n$1) [line 15]\n REMOVE_TEMPS(n$0,n$1); [line 15]\n NULLIFY(&this); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +9 [label="9: Return Stmt \n n$0=*&this:class X * [line 15]\n n$1=*n$0.f:int [line 15]\n *&return:int =(1 / n$1) [line 15]\n " shape="box"] 9 -> 8 ; @@ -108,7 +108,7 @@ digraph iCFG { 7 -> 9 ; -6 [label="6: BinaryOperatorStmt: Assign \n n$0=*&this:class X * [line 14]\n *n$0.f:int =1 [line 14]\n REMOVE_TEMPS(n$0); [line 14]\n NULLIFY(&this); [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +6 [label="6: BinaryOperatorStmt: Assign \n n$0=*&this:class X * [line 14]\n *n$0.f:int =1 [line 14]\n " shape="box"] 6 -> 5 ; @@ -119,7 +119,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class X * [line 13]\n n$1=*&x:class X & [line 13]\n n$2=*n$1.f:int [line 13]\n *n$0.f:int =n$2 [line 13]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 13]\n NULLIFY(&this); [line 13]\n NULLIFY(&x); [line 13]\n APPLY_ABSTRACTION; [line 13]\n " shape="box"] +3 [label="3: BinaryOperatorStmt: Assign \n n$0=*&this:class X * [line 13]\n n$1=*&x:class X & [line 13]\n n$2=*n$1.f:int [line 13]\n *n$0.f:int =n$2 [line 13]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/types/struct.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/types/struct.cpp.dot index 38c1766dc..c7a405a31 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/types/struct.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/types/struct.cpp.dot @@ -1,18 +1,18 @@ /* @generated */ digraph iCFG { -6 [label="6: BinaryOperatorStmt: Assign \n n$3=*&xs:class X_struct * [line 24]\n *n$3.a:int =10 [line 24]\n REMOVE_TEMPS(n$3); [line 24]\n " shape="box"] +6 [label="6: BinaryOperatorStmt: Assign \n n$3=*&xs:class X_struct * [line 24]\n *n$3.a:int =10 [line 24]\n " shape="box"] 6 -> 5 ; -5 [label="5: BinaryOperatorStmt: Assign \n n$2=*&xs:class X_struct * [line 25]\n *n$2.b:int =20 [line 25]\n REMOVE_TEMPS(n$2); [line 25]\n NULLIFY(&xs); [line 25]\n " shape="box"] +5 [label="5: BinaryOperatorStmt: Assign \n n$2=*&xs:class X_struct * [line 25]\n *n$2.b:int =20 [line 25]\n " shape="box"] 5 -> 4 ; -4 [label="4: BinaryOperatorStmt: Assign \n n$1=*&xc:class X_class * [line 28]\n *n$1.a:int =10 [line 28]\n REMOVE_TEMPS(n$1); [line 28]\n " shape="box"] +4 [label="4: BinaryOperatorStmt: Assign \n n$1=*&xc:class X_class * [line 28]\n *n$1.a:int =10 [line 28]\n " shape="box"] 4 -> 3 ; -3 [label="3: BinaryOperatorStmt: Assign \n n$0=*&xc:class X_class * [line 29]\n *n$0.b:int =20 [line 29]\n REMOVE_TEMPS(n$0); [line 29]\n NULLIFY(&xc); [line 29]\n APPLY_ABSTRACTION; [line 29]\n " shape="box"] +3 [label="3: BinaryOperatorStmt: Assign \n n$0=*&xc:class X_class * [line 29]\n *n$0.b:int =20 [line 29]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/types/struct_forward_declare.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/types/struct_forward_declare.cpp.dot index 19cc90ec0..354eca5a0 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/types/struct_forward_declare.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/types/struct_forward_declare.cpp.dot @@ -1,10 +1,10 @@ /* @generated */ digraph iCFG { -41 [label="41: BinaryOperatorStmt: Assign \n n$3=*&z:class Z * [line 65]\n *n$3.f:int =0 [line 65]\n REMOVE_TEMPS(n$3); [line 65]\n " shape="box"] +41 [label="41: BinaryOperatorStmt: Assign \n n$3=*&z:class Z * [line 65]\n *n$3.f:int =0 [line 65]\n " shape="box"] 41 -> 40 ; -40 [label="40: Return Stmt \n n$0=*&z:class Z * [line 66]\n n$1=*n$0:class Z [line 66]\n n$2=_fun_Z_getF(n$0:class Z *) [line 66]\n *&return:int =(1 / n$2) [line 66]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 66]\n NULLIFY(&z); [line 66]\n APPLY_ABSTRACTION; [line 66]\n " shape="box"] +40 [label="40: Return Stmt \n n$0=*&z:class Z * [line 66]\n n$1=*n$0:class Z [line 66]\n n$2=_fun_Z_getF(n$0:class Z *) [line 66]\n *&return:int =(1 / n$2) [line 66]\n " shape="box"] 40 -> 39 ; @@ -23,11 +23,11 @@ digraph iCFG { 36 -> 35 ; -35 [label="35: Return Stmt \n n$0=*&z:class Z [line 58]\n n$1=_fun_Z_getF(&z:class Z &) [line 58]\n *&return:int =(1 / n$1) [line 58]\n REMOVE_TEMPS(n$0,n$1); [line 58]\n APPLY_ABSTRACTION; [line 58]\n " shape="box"] +35 [label="35: Return Stmt \n n$0=*&z:class Z [line 58]\n n$1=_fun_Z_getF(&z:class Z &) [line 58]\n *&return:int =(1 / n$1) [line 58]\n " shape="box"] 35 -> 34 ; -34 [label="34: Exit Z_div0 \n NULLIFY(&z); [line 59]\n " color=yellow style=filled] +34 [label="34: Exit Z_div0 \n " color=yellow style=filled] 33 [label="33: Start Z_div0\nFormals: \nLocals: z:class Z \n DECLARE_LOCALS(&return,&z); [line 55]\n " color=yellow style=filled] @@ -47,15 +47,15 @@ digraph iCFG { 30 -> 27 ; 30 -> 28 ; -29 [label="29: Return Stmt \n *&return:int =1 [line 50]\n APPLY_ABSTRACTION; [line 50]\n " shape="box"] +29 [label="29: Return Stmt \n *&return:int =1 [line 50]\n " shape="box"] 29 -> 24 ; -28 [label="28: Prune (false branch) \n n$2=*&x.y:class Y * [line 49]\n PRUNE((n$2 == 0), false); [line 49]\n REMOVE_TEMPS(n$2); [line 49]\n " shape="invhouse"] +28 [label="28: Prune (false branch) \n n$2=*&x.y:class Y * [line 49]\n PRUNE((n$2 == 0), false); [line 49]\n " shape="invhouse"] 28 -> 26 ; -27 [label="27: Prune (true branch) \n n$2=*&x.y:class Y * [line 49]\n PRUNE((n$2 != 0), true); [line 49]\n REMOVE_TEMPS(n$2); [line 49]\n " shape="invhouse"] +27 [label="27: Prune (true branch) \n n$2=*&x.y:class Y * [line 49]\n PRUNE((n$2 != 0), true); [line 49]\n " shape="invhouse"] 27 -> 29 ; @@ -63,22 +63,22 @@ digraph iCFG { 26 -> 25 ; -25 [label="25: Return Stmt \n n$0=*&x:class X [line 52]\n n$1=_fun_X_getF(&x:class X &) [line 52]\n *&return:int =(1 / n$1) [line 52]\n REMOVE_TEMPS(n$0,n$1); [line 52]\n APPLY_ABSTRACTION; [line 52]\n " shape="box"] +25 [label="25: Return Stmt \n n$0=*&x:class X [line 52]\n n$1=_fun_X_getF(&x:class X &) [line 52]\n *&return:int =(1 / n$1) [line 52]\n " shape="box"] 25 -> 24 ; -24 [label="24: Exit X_Y_div0 \n NULLIFY(&x); [line 53]\n " color=yellow style=filled] +24 [label="24: Exit X_Y_div0 \n " color=yellow style=filled] 23 [label="23: Start X_Y_div0\nFormals: \nLocals: x:class X \n DECLARE_LOCALS(&return,&x); [line 45]\n " color=yellow style=filled] 23 -> 32 ; -22 [label="22: BinaryOperatorStmt: Assign \n n$3=*&x:class X * [line 41]\n *n$3.f:int =0 [line 41]\n REMOVE_TEMPS(n$3); [line 41]\n " shape="box"] +22 [label="22: BinaryOperatorStmt: Assign \n n$3=*&x:class X * [line 41]\n *n$3.f:int =0 [line 41]\n " shape="box"] 22 -> 21 ; -21 [label="21: Return Stmt \n n$0=*&x:class X * [line 42]\n n$1=*n$0:class X [line 42]\n n$2=_fun_X_getF(n$0:class X *) [line 42]\n *&return:int =(1 / n$2) [line 42]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 42]\n NULLIFY(&x); [line 42]\n APPLY_ABSTRACTION; [line 42]\n " shape="box"] +21 [label="21: Return Stmt \n n$0=*&x:class X * [line 42]\n n$1=*n$0:class X [line 42]\n n$2=_fun_X_getF(n$0:class X *) [line 42]\n *&return:int =(1 / n$2) [line 42]\n " shape="box"] 21 -> 20 ; @@ -97,11 +97,11 @@ digraph iCFG { 17 -> 16 ; -16 [label="16: Return Stmt \n n$0=*&x:class X [line 37]\n n$1=_fun_X_getF(&x:class X &) [line 37]\n *&return:int =(1 / n$1) [line 37]\n REMOVE_TEMPS(n$0,n$1); [line 37]\n APPLY_ABSTRACTION; [line 37]\n " shape="box"] +16 [label="16: Return Stmt \n n$0=*&x:class X [line 37]\n n$1=_fun_X_getF(&x:class X &) [line 37]\n *&return:int =(1 / n$1) [line 37]\n " shape="box"] 16 -> 15 ; -15 [label="15: Exit X_div0 \n NULLIFY(&x); [line 38]\n " color=yellow style=filled] +15 [label="15: Exit X_div0 \n " color=yellow style=filled] 14 [label="14: Start X_div0\nFormals: \nLocals: x:class X \n DECLARE_LOCALS(&return,&x); [line 34]\n " color=yellow style=filled] @@ -115,7 +115,7 @@ digraph iCFG { 12 -> 13 ; -11 [label="11: Return Stmt \n n$0=*&this:class Z * [line 28]\n n$1=*n$0.f:int [line 28]\n *&return:int =n$1 [line 28]\n REMOVE_TEMPS(n$0,n$1); [line 28]\n NULLIFY(&this); [line 28]\n APPLY_ABSTRACTION; [line 28]\n " shape="box"] +11 [label="11: Return Stmt \n n$0=*&this:class Z * [line 28]\n n$1=*n$0.f:int [line 28]\n *&return:int =n$1 [line 28]\n " shape="box"] 11 -> 10 ; @@ -126,7 +126,7 @@ digraph iCFG { 9 -> 11 ; -8 [label="8: DeclStmt \n n$0=*&z1:class Z * [line 24]\n *&z2:class Z *=n$0 [line 24]\n REMOVE_TEMPS(n$0); [line 24]\n NULLIFY(&z1); [line 24]\n NULLIFY(&z2); [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +8 [label="8: DeclStmt \n n$0=*&z1:class Z * [line 24]\n *&z2:class Z *=n$0 [line 24]\n " shape="box"] 8 -> 7 ; @@ -144,7 +144,7 @@ digraph iCFG { 4 -> 5 ; -3 [label="3: Return Stmt \n n$0=*&this:class X * [line 19]\n n$1=*n$0.f:int [line 19]\n *&return:int =n$1 [line 19]\n REMOVE_TEMPS(n$0,n$1); [line 19]\n NULLIFY(&this); [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&this:class X * [line 19]\n n$1=*n$0.f:int [line 19]\n *&return:int =n$1 [line 19]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/cpp/frontend/types/struct_pass_by_value.cpp.dot b/infer/tests/codetoanalyze/cpp/frontend/types/struct_pass_by_value.cpp.dot index e9b208cbb..22afee599 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/types/struct_pass_by_value.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/types/struct_pass_by_value.cpp.dot @@ -8,11 +8,11 @@ digraph iCFG { 46 -> 45 ; -45 [label="45: Return Stmt \n n$0=*&x.f:int [line 54]\n *&return:int =(1 / n$0) [line 54]\n REMOVE_TEMPS(n$0); [line 54]\n APPLY_ABSTRACTION; [line 54]\n " shape="box"] +45 [label="45: Return Stmt \n n$0=*&x.f:int [line 54]\n *&return:int =(1 / n$0) [line 54]\n " shape="box"] 45 -> 44 ; -44 [label="44: Exit param_get_copied_div1 \n NULLIFY(&x); [line 55]\n NULLIFY(&__temp_construct_n$1); [line 55]\n " color=yellow style=filled] +44 [label="44: Exit param_get_copied_div1 \n " color=yellow style=filled] 43 [label="43: Start param_get_copied_div1\nFormals: \nLocals: __temp_construct_n$1:class X x:class X \n DECLARE_LOCALS(&return,&__temp_construct_n$1,&x); [line 51]\n " color=yellow style=filled] @@ -27,11 +27,11 @@ digraph iCFG { 41 -> 40 ; -40 [label="40: Return Stmt \n n$0=*&x.f:int [line 48]\n *&return:int =(1 / n$0) [line 48]\n REMOVE_TEMPS(n$0); [line 48]\n APPLY_ABSTRACTION; [line 48]\n " shape="box"] +40 [label="40: Return Stmt \n n$0=*&x.f:int [line 48]\n *&return:int =(1 / n$0) [line 48]\n " shape="box"] 40 -> 39 ; -39 [label="39: Exit param_get_copied_div0 \n NULLIFY(&x); [line 49]\n NULLIFY(&__temp_construct_n$1); [line 49]\n " color=yellow style=filled] +39 [label="39: Exit param_get_copied_div0 \n " color=yellow style=filled] 38 [label="38: Start param_get_copied_div0\nFormals: \nLocals: __temp_construct_n$1:class X x:class X \n DECLARE_LOCALS(&return,&__temp_construct_n$1,&x); [line 45]\n " color=yellow style=filled] @@ -46,33 +46,33 @@ digraph iCFG { 36 -> 35 ; -35 [label="35: Return Stmt \n _fun_X_X(&__temp_construct_n$0:class X *,&y.x:class X &) [line 42]\n n$1=_fun_get_f(&__temp_construct_n$0:class X ) [line 42]\n *&return:int =(1 / n$1) [line 42]\n REMOVE_TEMPS(n$1); [line 42]\n APPLY_ABSTRACTION; [line 42]\n " shape="box"] +35 [label="35: Return Stmt \n _fun_X_X(&__temp_construct_n$0:class X *,&y.x:class X &) [line 42]\n n$1=_fun_get_f(&__temp_construct_n$0:class X ) [line 42]\n *&return:int =(1 / n$1) [line 42]\n " shape="box"] 35 -> 34 ; -34 [label="34: Exit field_div0 \n NULLIFY(&y); [line 43]\n NULLIFY(&x); [line 43]\n NULLIFY(&__temp_construct_n$0); [line 43]\n " color=yellow style=filled] +34 [label="34: Exit field_div0 \n " color=yellow style=filled] 33 [label="33: Start field_div0\nFormals: \nLocals: __temp_construct_n$0:class X y:class Y x:class X \n DECLARE_LOCALS(&return,&__temp_construct_n$0,&y,&x); [line 39]\n " color=yellow style=filled] 33 -> 37 ; -32 [label="32: Return Stmt \n _fun_X_X(&SIL_materialize_temp__n$1:class X *,1:int ) [line 37]\n _fun_X_X(&__temp_construct_n$0:class X *,&SIL_materialize_temp__n$1:class X &) [line 37]\n n$2=_fun_get_f(&__temp_construct_n$0:class X ) [line 37]\n *&return:int =(1 / n$2) [line 37]\n REMOVE_TEMPS(n$2); [line 37]\n APPLY_ABSTRACTION; [line 37]\n " shape="box"] +32 [label="32: Return Stmt \n _fun_X_X(&SIL_materialize_temp__n$1:class X *,1:int ) [line 37]\n _fun_X_X(&__temp_construct_n$0:class X *,&SIL_materialize_temp__n$1:class X &) [line 37]\n n$2=_fun_get_f(&__temp_construct_n$0:class X ) [line 37]\n *&return:int =(1 / n$2) [line 37]\n " shape="box"] 32 -> 31 ; -31 [label="31: Exit temp_div1 \n NULLIFY(&__temp_construct_n$0); [line 37]\n NULLIFY(&SIL_materialize_temp__n$1); [line 37]\n " color=yellow style=filled] +31 [label="31: Exit temp_div1 \n " color=yellow style=filled] 30 [label="30: Start temp_div1\nFormals: \nLocals: __temp_construct_n$0:class X SIL_materialize_temp__n$1:class X \n DECLARE_LOCALS(&return,&__temp_construct_n$0,&SIL_materialize_temp__n$1); [line 37]\n " color=yellow style=filled] 30 -> 32 ; -29 [label="29: Return Stmt \n _fun_X_X(&SIL_materialize_temp__n$1:class X *,0:int ) [line 35]\n _fun_X_X(&__temp_construct_n$0:class X *,&SIL_materialize_temp__n$1:class X &) [line 35]\n n$2=_fun_get_f(&__temp_construct_n$0:class X ) [line 35]\n *&return:int =(1 / n$2) [line 35]\n REMOVE_TEMPS(n$2); [line 35]\n APPLY_ABSTRACTION; [line 35]\n " shape="box"] +29 [label="29: Return Stmt \n _fun_X_X(&SIL_materialize_temp__n$1:class X *,0:int ) [line 35]\n _fun_X_X(&__temp_construct_n$0:class X *,&SIL_materialize_temp__n$1:class X &) [line 35]\n n$2=_fun_get_f(&__temp_construct_n$0:class X ) [line 35]\n *&return:int =(1 / n$2) [line 35]\n " shape="box"] 29 -> 28 ; -28 [label="28: Exit temp_div0 \n NULLIFY(&__temp_construct_n$0); [line 35]\n NULLIFY(&SIL_materialize_temp__n$1); [line 35]\n " color=yellow style=filled] +28 [label="28: Exit temp_div0 \n " color=yellow style=filled] 27 [label="27: Start temp_div0\nFormals: \nLocals: __temp_construct_n$0:class X SIL_materialize_temp__n$1:class X \n DECLARE_LOCALS(&return,&__temp_construct_n$0,&SIL_materialize_temp__n$1); [line 35]\n " color=yellow style=filled] @@ -83,11 +83,11 @@ digraph iCFG { 26 -> 25 ; -25 [label="25: Return Stmt \n _fun_X_X(&__temp_construct_n$0:class X *,&x:class X &) [line 32]\n n$1=_fun_get_f(&__temp_construct_n$0:class X ) [line 32]\n *&return:int =(1 / n$1) [line 32]\n REMOVE_TEMPS(n$1); [line 32]\n APPLY_ABSTRACTION; [line 32]\n " shape="box"] +25 [label="25: Return Stmt \n _fun_X_X(&__temp_construct_n$0:class X *,&x:class X &) [line 32]\n n$1=_fun_get_f(&__temp_construct_n$0:class X ) [line 32]\n *&return:int =(1 / n$1) [line 32]\n " shape="box"] 25 -> 24 ; -24 [label="24: Exit var_div1 \n NULLIFY(&x); [line 33]\n NULLIFY(&__temp_construct_n$0); [line 33]\n " color=yellow style=filled] +24 [label="24: Exit var_div1 \n " color=yellow style=filled] 23 [label="23: Start var_div1\nFormals: \nLocals: __temp_construct_n$0:class X x:class X \n DECLARE_LOCALS(&return,&__temp_construct_n$0,&x); [line 30]\n " color=yellow style=filled] @@ -98,18 +98,18 @@ digraph iCFG { 22 -> 21 ; -21 [label="21: Return Stmt \n _fun_X_X(&__temp_construct_n$0:class X *,&x:class X &) [line 27]\n n$1=_fun_get_f(&__temp_construct_n$0:class X ) [line 27]\n *&return:int =(1 / n$1) [line 27]\n REMOVE_TEMPS(n$1); [line 27]\n APPLY_ABSTRACTION; [line 27]\n " shape="box"] +21 [label="21: Return Stmt \n _fun_X_X(&__temp_construct_n$0:class X *,&x:class X &) [line 27]\n n$1=_fun_get_f(&__temp_construct_n$0:class X ) [line 27]\n *&return:int =(1 / n$1) [line 27]\n " shape="box"] 21 -> 20 ; -20 [label="20: Exit var_div0 \n NULLIFY(&x); [line 28]\n NULLIFY(&__temp_construct_n$0); [line 28]\n " color=yellow style=filled] +20 [label="20: Exit var_div0 \n " color=yellow style=filled] 19 [label="19: Start var_div0\nFormals: \nLocals: __temp_construct_n$0:class X x:class X \n DECLARE_LOCALS(&return,&__temp_construct_n$0,&x); [line 25]\n " color=yellow style=filled] 19 -> 22 ; -18 [label="18: BinaryOperatorStmt: Assign \n n$0=*&val:class X & [line 23]\n n$1=*&f:int [line 23]\n *n$0.f:int =n$1 [line 23]\n REMOVE_TEMPS(n$0,n$1); [line 23]\n NULLIFY(&f); [line 23]\n NULLIFY(&val); [line 23]\n APPLY_ABSTRACTION; [line 23]\n " shape="box"] +18 [label="18: BinaryOperatorStmt: Assign \n n$0=*&val:class X & [line 23]\n n$1=*&f:int [line 23]\n *n$0.f:int =n$1 [line 23]\n " shape="box"] 18 -> 17 ; @@ -120,7 +120,7 @@ digraph iCFG { 16 -> 18 ; -15 [label="15: Return Stmt \n n$0=*&val:class X & [line 20]\n n$1=*n$0.f:int [line 20]\n *&return:int =n$1 [line 20]\n REMOVE_TEMPS(n$0,n$1); [line 20]\n NULLIFY(&val); [line 20]\n APPLY_ABSTRACTION; [line 20]\n " shape="box"] +15 [label="15: Return Stmt \n n$0=*&val:class X & [line 20]\n n$1=*n$0.f:int [line 20]\n *&return:int =n$1 [line 20]\n " shape="box"] 15 -> 14 ; @@ -131,7 +131,7 @@ digraph iCFG { 13 -> 15 ; -12 [label="12: Constructor Init \n n$0=*&this:class Y * [line 16]\n n$1=*&x:class X & [line 16]\n _fun_X_X(n$0.x:class X *,n$1:class X &) [line 16]\n REMOVE_TEMPS(n$0,n$1); [line 16]\n NULLIFY(&this); [line 16]\n NULLIFY(&x); [line 16]\n APPLY_ABSTRACTION; [line 16]\n " shape="box"] +12 [label="12: Constructor Init \n n$0=*&this:class Y * [line 16]\n n$1=*&x:class X & [line 16]\n _fun_X_X(n$0.x:class X *,n$1:class X &) [line 16]\n " shape="box"] 12 -> 11 ; @@ -142,7 +142,7 @@ digraph iCFG { 10 -> 12 ; -9 [label="9: Constructor Init \n n$0=*&this:class X * [line 10]\n n$1=*&__param_0:class X & [line 10]\n n$2=*n$1.f:int [line 10]\n *n$0.f:int =n$2 [line 10]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 10]\n NULLIFY(&__param_0); [line 10]\n NULLIFY(&this); [line 10]\n APPLY_ABSTRACTION; [line 10]\n " shape="box"] +9 [label="9: Constructor Init \n n$0=*&this:class X * [line 10]\n n$1=*&__param_0:class X & [line 10]\n n$2=*n$1.f:int [line 10]\n *n$0.f:int =n$2 [line 10]\n " shape="box"] 9 -> 8 ; @@ -153,7 +153,7 @@ digraph iCFG { 7 -> 9 ; -6 [label="6: Constructor Init \n n$0=*&this:class X * [line 10]\n n$1=*&__param_0:class X & [line 10]\n n$2=*n$1.f:int [line 10]\n *n$0.f:int =n$2 [line 10]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 10]\n NULLIFY(&__param_0); [line 10]\n NULLIFY(&this); [line 10]\n APPLY_ABSTRACTION; [line 10]\n " shape="box"] +6 [label="6: Constructor Init \n n$0=*&this:class X * [line 10]\n n$1=*&__param_0:class X & [line 10]\n n$2=*n$1.f:int [line 10]\n *n$0.f:int =n$2 [line 10]\n " shape="box"] 6 -> 5 ; @@ -164,7 +164,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: Constructor Init \n n$0=*&this:class X * [line 12]\n n$1=*&f:int [line 12]\n *n$0.f:int =n$1 [line 12]\n REMOVE_TEMPS(n$0,n$1); [line 12]\n NULLIFY(&f); [line 12]\n NULLIFY(&this); [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +3 [label="3: Constructor Init \n n$0=*&this:class X * [line 12]\n n$1=*&f:int [line 12]\n *n$0.f:int =n$1 [line 12]\n " shape="box"] 3 -> 2 ; 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 8e63caaf8..c38b4b7e0 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/types/typeid_expr.cpp.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/types/typeid_expr.cpp.dot @@ -4,28 +4,28 @@ digraph iCFG { 70 -> 65 ; -69 [label="69: Return Stmt \n *&return:int =(1 / 0) [line 67]\n APPLY_ABSTRACTION; [line 67]\n " shape="box"] +69 [label="69: Return Stmt \n *&return:int =(1 / 0) [line 67]\n " shape="box"] 69 -> 62 ; -68 [label="68: Return Stmt \n *&return:int =1 [line 65]\n APPLY_ABSTRACTION; [line 65]\n " shape="box"] +68 [label="68: Return Stmt \n *&return:int =1 [line 65]\n " shape="box"] 68 -> 62 ; -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 [label="67: Prune (false branch) \n PRUNE(((n$0 == n$3) == 0), false); [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$3); [line 64]\n " shape="invhouse"] +66 [label="66: Prune (true branch) \n PRUNE(((n$0 == n$3) != 0), true); [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 REMOVE_TEMPS(n$1,n$2); [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 " shape="box"] 65 -> 66 ; 65 -> 67 ; -64 [label="64: between_join_and_exit \n APPLY_ABSTRACTION; [line 64]\n " shape="box"] +64 [label="64: between_join_and_exit \n " shape="box"] 64 -> 62 ; @@ -33,22 +33,22 @@ digraph iCFG { 63 -> 64 ; -62 [label="62: Exit template_type_id_person \n NULLIFY(&person); [line 68]\n " color=yellow style=filled] +62 [label="62: Exit template_type_id_person \n " color=yellow style=filled] 61 [label="61: Start template_type_id_person\nFormals: \nLocals: person:class Person \n DECLARE_LOCALS(&return,&person); [line 62]\n " color=yellow style=filled] 61 -> 70 ; -60 [label="60: DeclStmt \n n$4=*&value:class Person & [line 58]\n _fun_Person_Person(&SIL_materialize_temp__n$3:class Person *,n$4:class Person &) [line 58]\n _fun_Person_Person(&result:class Person *,&SIL_materialize_temp__n$3:class Person &) [line 58]\n REMOVE_TEMPS(n$4); [line 58]\n NULLIFY(&value); [line 58]\n " shape="box"] +60 [label="60: DeclStmt \n n$4=*&value:class Person & [line 58]\n _fun_Person_Person(&SIL_materialize_temp__n$3:class Person *,n$4:class Person &) [line 58]\n _fun_Person_Person(&result:class Person *,&SIL_materialize_temp__n$3:class Person &) [line 58]\n " shape="box"] 60 -> 59 ; -59 [label="59: Return Stmt \n n$0=_fun___cxx_typeid(sizeof(class std::type_info ):void ,n$0.__type_name:void ) [line 59]\n n$1=*n$0:class std::type_info [line 59]\n n$2=_fun_std::type_info_name(n$0:class std::type_info &) [line 59]\n *&return:char *=n$2 [line 59]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 59]\n APPLY_ABSTRACTION; [line 59]\n " shape="box"] +59 [label="59: Return Stmt \n n$0=_fun___cxx_typeid(sizeof(class std::type_info ):void ,n$0.__type_name:void ) [line 59]\n n$1=*n$0:class std::type_info [line 59]\n n$2=_fun_std::type_info_name(n$0:class std::type_info &) [line 59]\n *&return:char *=n$2 [line 59]\n " shape="box"] 59 -> 58 ; -58 [label="58: Exit template_typeid \n NULLIFY(&result); [line 60]\n NULLIFY(&SIL_materialize_temp__n$3); [line 60]\n " color=yellow style=filled] +58 [label="58: Exit template_typeid \n " color=yellow style=filled] 57 [label="57: Start template_typeid\nFormals: value:class Person &\nLocals: result:class Person SIL_materialize_temp__n$3:class Person \n DECLARE_LOCALS(&return,&result,&SIL_materialize_temp__n$3); [line 57]\n " color=yellow style=filled] @@ -59,28 +59,28 @@ digraph iCFG { 56 -> 51 ; -55 [label="55: Return Stmt \n *&return:int =0 [line 53]\n APPLY_ABSTRACTION; [line 53]\n " shape="box"] +55 [label="55: Return Stmt \n *&return:int =0 [line 53]\n " shape="box"] 55 -> 48 ; -54 [label="54: Return Stmt \n *&return:int =(1 / 0) [line 51]\n APPLY_ABSTRACTION; [line 51]\n " shape="box"] +54 [label="54: Return Stmt \n *&return:int =(1 / 0) [line 51]\n " shape="box"] 54 -> 48 ; -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 [label="53: Prune (false branch) \n PRUNE(((n$3 == n$6) == 0), false); [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$3,n$6); [line 50]\n " shape="invhouse"] +52 [label="52: Prune (true branch) \n PRUNE(((n$3 == n$6) != 0), true); [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 REMOVE_TEMPS(n$0,n$1,n$2,n$4,n$5); [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 " shape="box"] 51 -> 52 ; 51 -> 53 ; -50 [label="50: between_join_and_exit \n APPLY_ABSTRACTION; [line 50]\n " shape="box"] +50 [label="50: between_join_and_exit \n " shape="box"] 50 -> 48 ; @@ -88,7 +88,7 @@ digraph iCFG { 49 -> 50 ; -48 [label="48: Exit person_ptr_typeid \n NULLIFY(&person); [line 54]\n " color=yellow style=filled] +48 [label="48: Exit person_ptr_typeid \n " color=yellow style=filled] 47 [label="47: Start person_ptr_typeid\nFormals: ptr:class Person *\nLocals: person:class Person \n DECLARE_LOCALS(&return,&person); [line 48]\n " color=yellow style=filled] @@ -103,28 +103,28 @@ digraph iCFG { 45 -> 40 ; -44 [label="44: Return Stmt \n *&return:int =0 [line 45]\n APPLY_ABSTRACTION; [line 45]\n " shape="box"] +44 [label="44: Return Stmt \n *&return:int =0 [line 45]\n " shape="box"] 44 -> 37 ; -43 [label="43: Return Stmt \n *&return:int =(1 / 0) [line 43]\n APPLY_ABSTRACTION; [line 43]\n " shape="box"] +43 [label="43: Return Stmt \n *&return:int =(1 / 0) [line 43]\n " shape="box"] 43 -> 37 ; -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 [label="42: Prune (false branch) \n PRUNE((n$3 == 0), false); [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$3); [line 42]\n " shape="invhouse"] +41 [label="41: Prune (true branch) \n PRUNE((n$3 != 0), true); [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 REMOVE_TEMPS(n$0,n$1,n$2); [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 " shape="box"] 40 -> 41 ; 40 -> 42 ; -39 [label="39: between_join_and_exit \n APPLY_ABSTRACTION; [line 42]\n " shape="box"] +39 [label="39: between_join_and_exit \n " shape="box"] 39 -> 37 ; @@ -132,7 +132,7 @@ digraph iCFG { 38 -> 39 ; -37 [label="37: Exit employee_typeid \n NULLIFY(&employee); [line 46]\n " color=yellow style=filled] +37 [label="37: Exit employee_typeid \n " color=yellow style=filled] 36 [label="36: Start employee_typeid\nFormals: \nLocals: ptr:class Person * employee:class Employee \n DECLARE_LOCALS(&return,&ptr,&employee); [line 39]\n " color=yellow style=filled] @@ -147,36 +147,36 @@ digraph iCFG { 34 -> 33 ; -33 [label="33: DeclStmt \n n$5=_fun___cxx_typeid(sizeof(class std::type_info ):void ,n$5.__type_name:void ,&t:int ) [line 31]\n n$6=*n$5:class std::type_info [line 31]\n n$7=_fun_std::type_info_name(n$5:class std::type_info &) [line 31]\n *&t_type_info:char *=n$7 [line 31]\n REMOVE_TEMPS(n$5,n$6,n$7); [line 31]\n NULLIFY(&t); [line 31]\n " shape="box"] +33 [label="33: DeclStmt \n n$5=_fun___cxx_typeid(sizeof(class std::type_info ):void ,n$5.__type_name:void ,&t:int ) [line 31]\n n$6=*n$5:class std::type_info [line 31]\n n$7=_fun_std::type_info_name(n$5:class std::type_info &) [line 31]\n *&t_type_info:char *=n$7 [line 31]\n " shape="box"] 33 -> 32 ; -32 [label="32: DeclStmt \n n$2=_fun___cxx_typeid(sizeof(class std::type_info ):void ,n$2.__type_name:void ,&person:class Person ) [line 32]\n n$3=*n$2:class std::type_info [line 32]\n n$4=_fun_std::type_info_name(n$2:class std::type_info &) [line 32]\n *&person_type_info:char *=n$4 [line 32]\n REMOVE_TEMPS(n$2,n$3,n$4); [line 32]\n " shape="box"] +32 [label="32: DeclStmt \n n$2=_fun___cxx_typeid(sizeof(class std::type_info ):void ,n$2.__type_name:void ,&person:class Person ) [line 32]\n n$3=*n$2:class std::type_info [line 32]\n n$4=_fun_std::type_info_name(n$2:class std::type_info &) [line 32]\n *&person_type_info:char *=n$4 [line 32]\n " shape="box"] 32 -> 27 ; -31 [label="31: Return Stmt \n *&return:int =(1 / 0) [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="box"] +31 [label="31: Return Stmt \n *&return:int =(1 / 0) [line 36]\n " shape="box"] 31 -> 24 ; -30 [label="30: Return Stmt \n *&return:int =0 [line 34]\n APPLY_ABSTRACTION; [line 34]\n " shape="box"] +30 [label="30: Return Stmt \n *&return:int =0 [line 34]\n " shape="box"] 30 -> 24 ; -29 [label="29: Prune (false branch) \n PRUNE(((n$0 == n$1) == 0), false); [line 33]\n REMOVE_TEMPS(n$0,n$1); [line 33]\n " shape="invhouse"] +29 [label="29: Prune (false branch) \n PRUNE(((n$0 == n$1) == 0), false); [line 33]\n " shape="invhouse"] 29 -> 31 ; -28 [label="28: Prune (true branch) \n PRUNE(((n$0 == n$1) != 0), true); [line 33]\n REMOVE_TEMPS(n$0,n$1); [line 33]\n " shape="invhouse"] +28 [label="28: Prune (true branch) \n PRUNE(((n$0 == n$1) != 0), true); [line 33]\n " shape="invhouse"] 28 -> 30 ; -27 [label="27: BinaryOperatorStmt: EQ \n n$0=*&t_type_info:char * [line 33]\n n$1=*&person_type_info:char * [line 33]\n NULLIFY(&person_type_info); [line 33]\n NULLIFY(&t_type_info); [line 33]\n " shape="box"] +27 [label="27: BinaryOperatorStmt: EQ \n n$0=*&t_type_info:char * [line 33]\n n$1=*&person_type_info:char * [line 33]\n " shape="box"] 27 -> 28 ; 27 -> 29 ; -26 [label="26: between_join_and_exit \n APPLY_ABSTRACTION; [line 33]\n " shape="box"] +26 [label="26: between_join_and_exit \n " shape="box"] 26 -> 24 ; @@ -184,7 +184,7 @@ digraph iCFG { 25 -> 26 ; -24 [label="24: Exit person_typeid_name \n NULLIFY(&person); [line 37]\n " color=yellow style=filled] +24 [label="24: Exit person_typeid_name \n " color=yellow style=filled] 23 [label="23: Start person_typeid_name\nFormals: \nLocals: person_type_info:char * t_type_info:char * t:int person:class Person \n DECLARE_LOCALS(&return,&person_type_info,&t_type_info,&t,&person); [line 28]\n " color=yellow style=filled] @@ -199,28 +199,28 @@ digraph iCFG { 21 -> 16 ; -20 [label="20: Return Stmt \n *&return:int =(1 / 0) [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="box"] +20 [label="20: Return Stmt \n *&return:int =(1 / 0) [line 25]\n " shape="box"] 20 -> 13 ; -19 [label="19: Return Stmt \n *&return:int =1 [line 23]\n APPLY_ABSTRACTION; [line 23]\n " shape="box"] +19 [label="19: Return Stmt \n *&return:int =1 [line 23]\n " shape="box"] 19 -> 13 ; -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 [label="18: Prune (false branch) \n PRUNE((n$2 == 0), false); [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$2); [line 22]\n " shape="invhouse"] +17 [label="17: Prune (true branch) \n PRUNE((n$2 != 0), true); [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 REMOVE_TEMPS(n$0,n$1); [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 " shape="box"] 16 -> 17 ; 16 -> 18 ; -15 [label="15: between_join_and_exit \n APPLY_ABSTRACTION; [line 22]\n " shape="box"] +15 [label="15: between_join_and_exit \n " shape="box"] 15 -> 13 ; @@ -228,14 +228,14 @@ digraph iCFG { 14 -> 15 ; -13 [label="13: Exit person_typeid \n NULLIFY(&person); [line 26]\n " color=yellow style=filled] +13 [label="13: Exit person_typeid \n " color=yellow style=filled] 12 [label="12: Start person_typeid\nFormals: \nLocals: t:int person:class Person \n DECLARE_LOCALS(&return,&t,&person); [line 19]\n " color=yellow style=filled] 12 -> 22 ; -11 [label="11: Constructor Init \n n$0=*&this:class Employee * [line 17]\n _fun_Person_Person(n$0:class Employee *) [line 17]\n REMOVE_TEMPS(n$0); [line 17]\n NULLIFY(&this); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +11 [label="11: Constructor Init \n n$0=*&this:class Employee * [line 17]\n _fun_Person_Person(n$0:class Employee *) [line 17]\n " shape="box"] 11 -> 10 ; diff --git a/infer/tests/codetoanalyze/objc/errors/category_procdesc/EOCPerson.dot b/infer/tests/codetoanalyze/objc/errors/category_procdesc/EOCPerson.dot index 96f832ac3..0a14dc950 100644 --- a/infer/tests/codetoanalyze/objc/errors/category_procdesc/EOCPerson.dot +++ b/infer/tests/codetoanalyze/objc/errors/category_procdesc/EOCPerson.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -6 [label="6: Call _fun_NSLog \n n$1=_fun_NSString_stringWithUTF8String:(\"BTaking vacations\":char *) [line 19]\n _fun_NSLog(n$1:struct objc_object *) [line 19]\n REMOVE_TEMPS(n$1); [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +6 [label="6: Call _fun_NSLog \n n$1=_fun_NSString_stringWithUTF8String:(\"BTaking vacations\":char *) [line 19]\n _fun_NSLog(n$1:struct objc_object *) [line 19]\n " shape="box"] 6 -> 5 ; @@ -11,7 +11,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: Call _fun_NSLog \n n$0=_fun_NSString_stringWithUTF8String:(\"Performing days at work\":char *) [line 15]\n _fun_NSLog(n$0:struct objc_object *) [line 15]\n REMOVE_TEMPS(n$0); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +3 [label="3: Call _fun_NSLog \n n$0=_fun_NSString_stringWithUTF8String:(\"Performing days at work\":char *) [line 15]\n _fun_NSLog(n$0:struct objc_object *) [line 15]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/errors/category_procdesc/main.dot b/infer/tests/codetoanalyze/objc/errors/category_procdesc/main.dot index 03bc2769a..e9ab3af55 100644 --- a/infer/tests/codetoanalyze/objc/errors/category_procdesc/main.dot +++ b/infer/tests/codetoanalyze/objc/errors/category_procdesc/main.dot @@ -1,18 +1,18 @@ /* @generated */ digraph iCFG { -6 [label="6: DeclStmt \n n$2=_fun___objc_alloc_no_fail(sizeof(class EOCPerson ):unsigned long ) [line 13]\n n$3=_fun_NSObject_init(n$2:class EOCPerson *) virtual [line 13]\n *&person:class EOCPerson *=n$3 [line 13]\n REMOVE_TEMPS(n$2,n$3); [line 13]\n " shape="box"] +6 [label="6: DeclStmt \n n$2=_fun___objc_alloc_no_fail(sizeof(class EOCPerson ):unsigned long ) [line 13]\n n$3=_fun_NSObject_init(n$2:class EOCPerson *) virtual [line 13]\n *&person:class EOCPerson *=n$3 [line 13]\n " shape="box"] 6 -> 5 ; -5 [label="5: Message Call: performDaysWork \n n$1=*&person:class EOCPerson * [line 14]\n _fun_EOCPerson_performDaysWork(n$1:class EOCPerson *) virtual [line 14]\n REMOVE_TEMPS(n$1); [line 14]\n NULLIFY(&person); [line 14]\n " shape="box"] +5 [label="5: Message Call: performDaysWork \n n$1=*&person:class EOCPerson * [line 14]\n _fun_EOCPerson_performDaysWork(n$1:class EOCPerson *) virtual [line 14]\n " shape="box"] 5 -> 4 ; -4 [label="4: DeclStmt \n n$0=_fun_malloc_no_fail(sizeof(int ):int ) [line 15]\n *&x:int *=n$0 [line 15]\n REMOVE_TEMPS(n$0); [line 15]\n NULLIFY(&x); [line 15]\n " shape="box"] +4 [label="4: DeclStmt \n n$0=_fun_malloc_no_fail(sizeof(int ):int ) [line 15]\n *&x:int *=n$0 [line 15]\n " shape="box"] 4 -> 3 ; -3 [label="3: Return Stmt \n *&return:int =0 [line 16]\n APPLY_ABSTRACTION; [line 16]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =0 [line 16]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/errors/field_superclass/SuperExample.dot b/infer/tests/codetoanalyze/objc/errors/field_superclass/SuperExample.dot index 04d403fdd..a2514f594 100644 --- a/infer/tests/codetoanalyze/objc/errors/field_superclass/SuperExample.dot +++ b/infer/tests/codetoanalyze/objc/errors/field_superclass/SuperExample.dot @@ -1,10 +1,10 @@ /* @generated */ digraph iCFG { -12 [label="12: DeclStmt \n n$1=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 42]\n n$2=_fun_NSObject_init(n$1:class A *) virtual [line 42]\n *&a:struct objc_object *=n$2 [line 42]\n REMOVE_TEMPS(n$1,n$2); [line 42]\n NULLIFY(&a); [line 42]\n " shape="box"] +12 [label="12: DeclStmt \n n$1=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 42]\n n$2=_fun_NSObject_init(n$1:class A *) virtual [line 42]\n *&a:struct objc_object *=n$2 [line 42]\n " shape="box"] 12 -> 11 ; -11 [label="11: Release the autorelease pool \n n$0=_fun___objc_release_autorelease_pool() [line 41]\n REMOVE_TEMPS(n$0); [line 41]\n APPLY_ABSTRACTION; [line 41]\n " shape="box"] +11 [label="11: Release the autorelease pool \n n$0=_fun___objc_release_autorelease_pool() [line 41]\n " shape="box"] 11 -> 10 ; @@ -15,15 +15,15 @@ digraph iCFG { 9 -> 12 ; -8 [label="8: BinaryOperatorStmt: Assign \n n$2=*&self:class A * [line 33]\n n$3=_fun_B_init(n$2:class A *) [line 33]\n *&self:class A *=n$3 [line 33]\n REMOVE_TEMPS(n$2,n$3); [line 33]\n " shape="box"] +8 [label="8: BinaryOperatorStmt: Assign \n n$2=*&self:class A * [line 33]\n n$3=_fun_B_init(n$2:class A *) [line 33]\n *&self:class A *=n$3 [line 33]\n " shape="box"] 8 -> 7 ; -7 [label="7: BinaryOperatorStmt: Assign \n n$1=*&self:class A * [line 34]\n *n$1.a:int =4 [line 34]\n REMOVE_TEMPS(n$1); [line 34]\n " shape="box"] +7 [label="7: BinaryOperatorStmt: Assign \n n$1=*&self:class A * [line 34]\n *n$1.a:int =4 [line 34]\n " shape="box"] 7 -> 6 ; -6 [label="6: Return Stmt \n n$0=*&self:class A * [line 35]\n *&return:struct objc_object *=n$0 [line 35]\n REMOVE_TEMPS(n$0); [line 35]\n NULLIFY(&self); [line 35]\n APPLY_ABSTRACTION; [line 35]\n " shape="box"] +6 [label="6: Return Stmt \n n$0=*&self:class A * [line 35]\n *&return:struct objc_object *=n$0 [line 35]\n " shape="box"] 6 -> 5 ; @@ -34,7 +34,7 @@ digraph iCFG { 4 -> 8 ; -3 [label="3: Return Stmt \n *&return:struct objc_object *=0 [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:struct objc_object *=0 [line 19]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/ArcExample.dot b/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/ArcExample.dot index 6cf70e87c..5dbc192b0 100644 --- a/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/ArcExample.dot +++ b/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/ArcExample.dot @@ -1,10 +1,10 @@ /* @generated */ digraph iCFG { -8 [label="8: DeclStmt \n n$4=_fun___objc_alloc_no_fail(sizeof(class NSString ):unsigned long ) [line 29]\n *&s:class NSString *=n$4 [line 29]\n REMOVE_TEMPS(n$4); [line 29]\n " shape="box"] +8 [label="8: DeclStmt \n n$4=_fun___objc_alloc_no_fail(sizeof(class NSString ):unsigned long ) [line 29]\n *&s:class NSString *=n$4 [line 29]\n " shape="box"] 8 -> 7 ; -7 [label="7: Return Stmt \n n$3=*&s:class NSString * [line 30]\n *&return:class NSString *=n$3 [line 30]\n REMOVE_TEMPS(n$3); [line 30]\n NULLIFY(&s); [line 30]\n APPLY_ABSTRACTION; [line 30]\n " shape="box"] +7 [label="7: Return Stmt \n n$3=*&s:class NSString * [line 30]\n *&return:class NSString *=n$3 [line 30]\n " shape="box"] 7 -> 6 ; @@ -15,11 +15,11 @@ digraph iCFG { 5 -> 8 ; -4 [label="4: DeclStmt \n n$2=_fun___objc_alloc_no_fail(sizeof(class NSString ):unsigned long ) [line 23]\n *&s:class NSString *=n$2 [line 23]\n REMOVE_TEMPS(n$2); [line 23]\n " shape="box"] +4 [label="4: DeclStmt \n n$2=_fun___objc_alloc_no_fail(sizeof(class NSString ):unsigned long ) [line 23]\n *&s:class NSString *=n$2 [line 23]\n " shape="box"] 4 -> 3 ; -3 [label="3: Return Stmt \n n$0=*&s:class NSString * [line 24]\n *&return:class NSString *=n$0 [line 24]\n n$1=_fun___set_autorelease_attribute(n$0:class NSString *) [line 24]\n REMOVE_TEMPS(n$0,n$1); [line 24]\n NULLIFY(&s); [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&s:class NSString * [line 24]\n *&return:class NSString *=n$0 [line 24]\n n$1=_fun___set_autorelease_attribute(n$0:class NSString *) [line 24]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/AutoreleaseExample.dot b/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/AutoreleaseExample.dot index 2f22936cf..61d009d09 100644 --- a/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/AutoreleaseExample.dot +++ b/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/AutoreleaseExample.dot @@ -1,18 +1,18 @@ /* @generated */ digraph iCFG { -37 [label="37: DeclStmt \n n$4=_fun___objc_alloc_no_fail(sizeof(class NSAutoreleasePool ):unsigned long ) [line 60]\n n$5=_fun_NSObject_init(n$4:class NSAutoreleasePool *) virtual [line 60]\n *&pool:class NSAutoreleasePool *=n$5 [line 60]\n REMOVE_TEMPS(n$4,n$5); [line 60]\n " shape="box"] +37 [label="37: DeclStmt \n n$4=_fun___objc_alloc_no_fail(sizeof(class NSAutoreleasePool ):unsigned long ) [line 60]\n n$5=_fun_NSObject_init(n$4:class NSAutoreleasePool *) virtual [line 60]\n *&pool:class NSAutoreleasePool *=n$5 [line 60]\n " shape="box"] 37 -> 36 ; -36 [label="36: DeclStmt \n n$2=_fun___objc_alloc_no_fail(sizeof(class NSString ):unsigned long ) [line 61]\n n$3=_fun___set_autorelease_attribute(n$2:class NSString *) [line 61]\n *&string:class NSString *=n$3 [line 61]\n REMOVE_TEMPS(n$2,n$3); [line 61]\n " shape="box"] +36 [label="36: DeclStmt \n n$2=_fun___objc_alloc_no_fail(sizeof(class NSString ):unsigned long ) [line 61]\n n$3=_fun___set_autorelease_attribute(n$2:class NSString *) [line 61]\n *&string:class NSString *=n$3 [line 61]\n " shape="box"] 36 -> 35 ; -35 [label="35: Message Call: release \n n$1=*&pool:class NSAutoreleasePool * [line 63]\n _fun___objc_release_autorelease_pool(n$1:class NSAutoreleasePool *) [line 63]\n REMOVE_TEMPS(n$1); [line 63]\n NULLIFY(&pool); [line 63]\n " shape="box"] +35 [label="35: Message Call: release \n n$1=*&pool:class NSAutoreleasePool * [line 63]\n _fun___objc_release_autorelease_pool(n$1:class NSAutoreleasePool *) [line 63]\n " shape="box"] 35 -> 34 ; -34 [label="34: DeclStmt \n n$0=*&string:class NSString * [line 64]\n *&c:class NSString *=n$0 [line 64]\n REMOVE_TEMPS(n$0); [line 64]\n NULLIFY(&c); [line 64]\n NULLIFY(&string); [line 64]\n APPLY_ABSTRACTION; [line 64]\n " shape="box"] +34 [label="34: DeclStmt \n n$0=*&string:class NSString * [line 64]\n *&c:class NSString *=n$0 [line 64]\n " shape="box"] 34 -> 33 ; @@ -35,27 +35,27 @@ digraph iCFG { 29 -> 28 ; -28 [label="28: BinaryOperatorStmt: Assign \n n$3=_fun_createA() [line 52]\n *&s1:class A *=n$3 [line 52]\n REMOVE_TEMPS(n$3); [line 52]\n " shape="box"] +28 [label="28: BinaryOperatorStmt: Assign \n n$3=_fun_createA() [line 52]\n *&s1:class A *=n$3 [line 52]\n " shape="box"] 28 -> 27 ; -27 [label="27: BinaryOperatorStmt: Assign \n n$2=_fun_createA() [line 53]\n *&s2:class A *=n$2 [line 53]\n REMOVE_TEMPS(n$2); [line 53]\n " shape="box"] +27 [label="27: BinaryOperatorStmt: Assign \n n$2=_fun_createA() [line 53]\n *&s2:class A *=n$2 [line 53]\n " shape="box"] 27 -> 26 ; -26 [label="26: BinaryOperatorStmt: Assign \n n$1=_fun_createA() [line 54]\n *&s3:class A *=n$1 [line 54]\n REMOVE_TEMPS(n$1); [line 54]\n " shape="box"] +26 [label="26: BinaryOperatorStmt: Assign \n n$1=_fun_createA() [line 54]\n *&s3:class A *=n$1 [line 54]\n " shape="box"] 26 -> 25 ; -25 [label="25: Release the autorelease pool \n n$0=_fun___objc_release_autorelease_pool(&s1:class A *,&s3:class A *,&s2:class A *) [line 51]\n REMOVE_TEMPS(n$0); [line 51]\n " shape="box"] +25 [label="25: Release the autorelease pool \n n$0=_fun___objc_release_autorelease_pool(&s1:class A *,&s3:class A *,&s2:class A *) [line 51]\n " shape="box"] 25 -> 24 ; -24 [label="24: Return Stmt \n *&return:int =0 [line 56]\n APPLY_ABSTRACTION; [line 56]\n " shape="box"] +24 [label="24: Return Stmt \n *&return:int =0 [line 56]\n " shape="box"] 24 -> 23 ; -23 [label="23: Exit test2 \n NULLIFY(&s3); [line 57]\n NULLIFY(&s2); [line 57]\n NULLIFY(&s1); [line 57]\n " color=yellow style=filled] +23 [label="23: Exit test2 \n " color=yellow style=filled] 22 [label="22: Start test2\nFormals: \nLocals: s3:class A * s2:class A * s1:class A * \n DECLARE_LOCALS(&return,&s3,&s2,&s1); [line 47]\n " color=yellow style=filled] @@ -74,42 +74,42 @@ digraph iCFG { 19 -> 18 ; -18 [label="18: BinaryOperatorStmt: Assign \n n$5=_fun_createA() [line 39]\n *&s1:class A *=n$5 [line 39]\n REMOVE_TEMPS(n$5); [line 39]\n " shape="box"] +18 [label="18: BinaryOperatorStmt: Assign \n n$5=_fun_createA() [line 39]\n *&s1:class A *=n$5 [line 39]\n " shape="box"] 18 -> 17 ; -17 [label="17: Message Call: retain \n n$3=*&s1:class A * [line 40]\n n$4=_fun___objc_retain(n$3:class A *) [line 40]\n REMOVE_TEMPS(n$3,n$4); [line 40]\n " shape="box"] +17 [label="17: Message Call: retain \n n$3=*&s1:class A * [line 40]\n n$4=_fun___objc_retain(n$3:class A *) [line 40]\n " shape="box"] 17 -> 16 ; -16 [label="16: BinaryOperatorStmt: Assign \n n$2=_fun_createA() [line 41]\n *&s2:class A *=n$2 [line 41]\n REMOVE_TEMPS(n$2); [line 41]\n " shape="box"] +16 [label="16: BinaryOperatorStmt: Assign \n n$2=_fun_createA() [line 41]\n *&s2:class A *=n$2 [line 41]\n " shape="box"] 16 -> 15 ; -15 [label="15: BinaryOperatorStmt: Assign \n n$1=_fun_createA() [line 42]\n *&s3:class A *=n$1 [line 42]\n REMOVE_TEMPS(n$1); [line 42]\n " shape="box"] +15 [label="15: BinaryOperatorStmt: Assign \n n$1=_fun_createA() [line 42]\n *&s3:class A *=n$1 [line 42]\n " shape="box"] 15 -> 14 ; -14 [label="14: Release the autorelease pool \n n$0=_fun___objc_release_autorelease_pool(&s1:class A *,&s2:class A *,&s3:class A *) [line 38]\n REMOVE_TEMPS(n$0); [line 38]\n " shape="box"] +14 [label="14: Release the autorelease pool \n n$0=_fun___objc_release_autorelease_pool(&s1:class A *,&s2:class A *,&s3:class A *) [line 38]\n " shape="box"] 14 -> 13 ; -13 [label="13: Return Stmt \n *&return:int =0 [line 44]\n APPLY_ABSTRACTION; [line 44]\n " shape="box"] +13 [label="13: Return Stmt \n *&return:int =0 [line 44]\n " shape="box"] 13 -> 12 ; -12 [label="12: Exit test1 \n NULLIFY(&s3); [line 45]\n NULLIFY(&s2); [line 45]\n NULLIFY(&s1); [line 45]\n " color=yellow style=filled] +12 [label="12: Exit test1 \n " color=yellow style=filled] 11 [label="11: Start test1\nFormals: \nLocals: s3:class A * s2:class A * s1:class A * \n DECLARE_LOCALS(&return,&s3,&s2,&s1); [line 34]\n " color=yellow style=filled] 11 -> 21 ; -10 [label="10: DeclStmt \n n$2=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 30]\n n$3=_fun_NSObject_init(n$2:class A *) virtual [line 30]\n *&s1:class A *=n$3 [line 30]\n REMOVE_TEMPS(n$2,n$3); [line 30]\n " shape="box"] +10 [label="10: DeclStmt \n n$2=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 30]\n n$3=_fun_NSObject_init(n$2:class A *) virtual [line 30]\n *&s1:class A *=n$3 [line 30]\n " shape="box"] 10 -> 9 ; -9 [label="9: Return Stmt \n n$0=*&s1:class A * [line 31]\n n$1=_fun___set_autorelease_attribute(n$0:class A *) [line 31]\n *&return:class A *=n$1 [line 31]\n REMOVE_TEMPS(n$0,n$1); [line 31]\n NULLIFY(&s1); [line 31]\n APPLY_ABSTRACTION; [line 31]\n " shape="box"] +9 [label="9: Return Stmt \n n$0=*&s1:class A * [line 31]\n n$1=_fun___set_autorelease_attribute(n$0:class A *) [line 31]\n *&return:class A *=n$1 [line 31]\n " shape="box"] 9 -> 8 ; @@ -120,11 +120,11 @@ digraph iCFG { 7 -> 10 ; -6 [label="6: DeclStmt \n n$2=_fun___objc_alloc_no_fail(sizeof(class NSString ):unsigned long ) [line 23]\n *&s:class NSString *=n$2 [line 23]\n REMOVE_TEMPS(n$2); [line 23]\n " shape="box"] +6 [label="6: DeclStmt \n n$2=_fun___objc_alloc_no_fail(sizeof(class NSString ):unsigned long ) [line 23]\n *&s:class NSString *=n$2 [line 23]\n " shape="box"] 6 -> 5 ; -5 [label="5: Return Stmt \n n$0=*&s:class NSString * [line 24]\n n$1=_fun___set_autorelease_attribute(n$0:class NSString *) [line 24]\n *&return:class NSString *=n$1 [line 24]\n REMOVE_TEMPS(n$0,n$1); [line 24]\n NULLIFY(&s); [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +5 [label="5: Return Stmt \n n$0=*&s:class NSString * [line 24]\n n$1=_fun___set_autorelease_attribute(n$0:class NSString *) [line 24]\n *&return:class NSString *=n$1 [line 24]\n " shape="box"] 5 -> 4 ; 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 2d449fc05..3d54d60a1 100644 --- a/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/MemoryLeakExample.dot +++ b/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/MemoryLeakExample.dot @@ -1,26 +1,26 @@ /* @generated */ digraph iCFG { -73 [label="73: DeclStmt \n n$59=_fun_malloc_no_fail(sizeof(int ):int ) [line 103]\n *&x:int *=n$59 [line 103]\n REMOVE_TEMPS(n$59); [line 103]\n " shape="box"] +73 [label="73: DeclStmt \n n$59=_fun_malloc_no_fail(sizeof(int ):int ) [line 103]\n *&x:int *=n$59 [line 103]\n " shape="box"] 73 -> 72 ; -72 [label="72: BinaryOperatorStmt: Assign \n n$58=*&x:int * [line 104]\n *n$58:int =2 [line 104]\n REMOVE_TEMPS(n$58); [line 104]\n " shape="box"] +72 [label="72: BinaryOperatorStmt: Assign \n n$58=*&x:int * [line 104]\n *n$58:int =2 [line 104]\n " shape="box"] 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$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 [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 " shape="box"] 71 -> 65 ; -70 [label="70: DeclStmt \n n$54=*&x:int * [line 106]\n n$55=*n$54:int [line 106]\n *&i:int =n$55 [line 106]\n REMOVE_TEMPS(n$54,n$55); [line 106]\n " shape="box"] +70 [label="70: DeclStmt \n n$54=*&x:int * [line 106]\n n$55=*n$54:int [line 106]\n *&i:int =n$55 [line 106]\n " shape="box"] 70 -> 69 ; -69 [label="69: Call _fun_free \n n$53=*&x:int * [line 107]\n _fun_free(n$53:void *) [line 107]\n REMOVE_TEMPS(n$53); [line 107]\n NULLIFY(&x); [line 107]\n " shape="box"] +69 [label="69: Call _fun_free \n n$53=*&x:int * [line 107]\n _fun_free(n$53:void *) [line 107]\n " shape="box"] 69 -> 68 ; -68 [label="68: Return Stmt \n n$52=*&i:int [line 108]\n *&return:int =n$52 [line 108]\n REMOVE_TEMPS(n$52); [line 108]\n NULLIFY(&i); [line 108]\n APPLY_ABSTRACTION; [line 108]\n " shape="box"] +68 [label="68: Return Stmt \n n$52=*&i:int [line 108]\n *&return:int =n$52 [line 108]\n " shape="box"] 68 -> 67 ; @@ -31,7 +31,7 @@ digraph iCFG { 66 -> 70 ; -65 [label="65: Return Stmt \n n$49=*&blk:_fn_ (*) [line 110]\n n$50=n$49() [line 110]\n *&return:int =n$50 [line 110]\n REMOVE_TEMPS(n$49,n$50); [line 110]\n NULLIFY(&blk); [line 110]\n APPLY_ABSTRACTION; [line 110]\n " shape="box"] +65 [label="65: Return Stmt \n n$49=*&blk:_fn_ (*) [line 110]\n n$50=n$49() [line 110]\n *&return:int =n$50 [line 110]\n " shape="box"] 65 -> 64 ; @@ -42,19 +42,19 @@ digraph iCFG { 63 -> 73 ; -62 [label="62: DeclStmt \n n$48=_fun_malloc_no_fail(sizeof(int ):int ) [line 94]\n *&x:int *=n$48 [line 94]\n REMOVE_TEMPS(n$48); [line 94]\n " shape="box"] +62 [label="62: DeclStmt \n n$48=_fun_malloc_no_fail(sizeof(int ):int ) [line 94]\n *&x:int *=n$48 [line 94]\n " shape="box"] 62 -> 61 ; -61 [label="61: BinaryOperatorStmt: Assign \n n$47=*&x:int * [line 95]\n *n$47:int =2 [line 95]\n REMOVE_TEMPS(n$47); [line 95]\n " shape="box"] +61 [label="61: BinaryOperatorStmt: Assign \n n$47=*&x:int * [line 95]\n *n$47:int =2 [line 95]\n " shape="box"] 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$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 [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 " shape="box"] 60 -> 56 ; -59 [label="59: Return Stmt \n n$43=*&x:int * [line 97]\n n$44=*n$43:int [line 97]\n *&return:int =n$44 [line 97]\n REMOVE_TEMPS(n$43,n$44); [line 97]\n NULLIFY(&x); [line 97]\n APPLY_ABSTRACTION; [line 97]\n " shape="box"] +59 [label="59: Return Stmt \n n$43=*&x:int * [line 97]\n n$44=*n$43:int [line 97]\n *&return:int =n$44 [line 97]\n " shape="box"] 59 -> 58 ; @@ -65,7 +65,7 @@ digraph iCFG { 57 -> 59 ; -56 [label="56: Return Stmt \n n$40=*&blk:_fn_ (*) [line 99]\n n$41=n$40() [line 99]\n *&return:int =n$41 [line 99]\n REMOVE_TEMPS(n$40,n$41); [line 99]\n NULLIFY(&blk); [line 99]\n APPLY_ABSTRACTION; [line 99]\n " shape="box"] +56 [label="56: Return Stmt \n n$40=*&blk:_fn_ (*) [line 99]\n n$41=n$40() [line 99]\n *&return:int =n$41 [line 99]\n " shape="box"] 56 -> 55 ; @@ -76,15 +76,15 @@ digraph iCFG { 54 -> 62 ; -53 [label="53: DeclStmt \n n$39=_fun_malloc_no_fail(sizeof(int ):int ) [line 88]\n *&x:int *=n$39 [line 88]\n REMOVE_TEMPS(n$39); [line 88]\n " shape="box"] +53 [label="53: DeclStmt \n n$39=_fun_malloc_no_fail(sizeof(int ):int ) [line 88]\n *&x:int *=n$39 [line 88]\n " shape="box"] 53 -> 52 ; -52 [label="52: BinaryOperatorStmt: Assign \n n$38=*&x:int * [line 89]\n *n$38:int =7 [line 89]\n REMOVE_TEMPS(n$38); [line 89]\n " shape="box"] +52 [label="52: BinaryOperatorStmt: Assign \n n$38=*&x:int * [line 89]\n *n$38:int =7 [line 89]\n " shape="box"] 52 -> 51 ; -51 [label="51: Return Stmt \n n$36=*&x:int * [line 90]\n n$37=*n$36:int [line 90]\n *&return:int =n$37 [line 90]\n REMOVE_TEMPS(n$36,n$37); [line 90]\n NULLIFY(&x); [line 90]\n APPLY_ABSTRACTION; [line 90]\n " shape="box"] +51 [label="51: Return Stmt \n n$36=*&x:int * [line 90]\n n$37=*n$36:int [line 90]\n *&return:int =n$37 [line 90]\n " shape="box"] 51 -> 50 ; @@ -95,11 +95,11 @@ digraph iCFG { 49 -> 53 ; -48 [label="48: DeclStmt \n n$35=_fun_FBColorCreateWithGray(0.000000:double ,0.300000:double ) [line 83]\n *&borderColor:struct CGColor *=n$35 [line 83]\n REMOVE_TEMPS(n$35); [line 83]\n " shape="box"] +48 [label="48: DeclStmt \n n$35=_fun_FBColorCreateWithGray(0.000000:double ,0.300000:double ) [line 83]\n *&borderColor:struct CGColor *=n$35 [line 83]\n " shape="box"] 48 -> 47 ; -47 [label="47: Call _fun_CGColorRelease \n n$34=*&borderColor:struct CGColor * [line 84]\n _fun_CGColorRelease(n$34:struct CGColor *) [line 84]\n REMOVE_TEMPS(n$34); [line 84]\n NULLIFY(&borderColor); [line 84]\n APPLY_ABSTRACTION; [line 84]\n " shape="box"] +47 [label="47: Call _fun_CGColorRelease \n n$34=*&borderColor:struct CGColor * [line 84]\n _fun_CGColorRelease(n$34:struct CGColor *) [line 84]\n " shape="box"] 47 -> 46 ; @@ -110,11 +110,11 @@ digraph iCFG { 45 -> 48 ; -44 [label="44: DeclStmt \n n$33=_fun_CGBitmapContextCreateImage(0:struct CGContext *) [line 76]\n *&newImage:struct CGImage *=n$33 [line 76]\n REMOVE_TEMPS(n$33); [line 76]\n " shape="box"] +44 [label="44: DeclStmt \n n$33=_fun_CGBitmapContextCreateImage(0:struct CGContext *) [line 76]\n *&newImage:struct CGImage *=n$33 [line 76]\n " shape="box"] 44 -> 43 ; -43 [label="43: Call _fun_CGImageRelease \n n$32=*&newImage:struct CGImage * [line 77]\n _fun_CGImageRelease(n$32:struct CGImage *) [line 77]\n REMOVE_TEMPS(n$32); [line 77]\n NULLIFY(&newImage); [line 77]\n APPLY_ABSTRACTION; [line 77]\n " shape="box"] +43 [label="43: Call _fun_CGImageRelease \n n$32=*&newImage:struct CGImage * [line 77]\n _fun_CGImageRelease(n$32:struct CGImage *) [line 77]\n " shape="box"] 43 -> 42 ; @@ -125,11 +125,11 @@ digraph iCFG { 41 -> 44 ; -40 [label="40: DeclStmt \n n$31=_fun_SecTrustCopyPublicKey(0:struct __SecTrust *) [line 71]\n *&allowedPublicKey:struct __SecKey *=n$31 [line 71]\n REMOVE_TEMPS(n$31); [line 71]\n " shape="box"] +40 [label="40: DeclStmt \n n$31=_fun_SecTrustCopyPublicKey(0:struct __SecTrust *) [line 71]\n *&allowedPublicKey:struct __SecKey *=n$31 [line 71]\n " shape="box"] 40 -> 39 ; -39 [label="39: Call _fun___objc_release_cf \n n$30=*&allowedPublicKey:struct __SecKey * [line 72]\n _fun___objc_release_cf(1:_Bool ,n$30:void *) [line 72]\n REMOVE_TEMPS(n$30); [line 72]\n NULLIFY(&allowedPublicKey); [line 72]\n APPLY_ABSTRACTION; [line 72]\n " shape="box"] +39 [label="39: Call _fun___objc_release_cf \n n$30=*&allowedPublicKey:struct __SecKey * [line 72]\n _fun___objc_release_cf(1:_Bool ,n$30:void *) [line 72]\n " shape="box"] 39 -> 38 ; @@ -140,7 +140,7 @@ digraph iCFG { 37 -> 40 ; -36 [label="36: Call _fun_SecTrustCopyPublicKey \n n$28=*&trust:struct __SecTrust * [line 67]\n n$29=_fun_SecTrustCopyPublicKey(n$28:struct __SecTrust *) [line 67]\n REMOVE_TEMPS(n$28,n$29); [line 67]\n NULLIFY(&trust); [line 67]\n APPLY_ABSTRACTION; [line 67]\n " shape="box"] +36 [label="36: Call _fun_SecTrustCopyPublicKey \n n$28=*&trust:struct __SecTrust * [line 67]\n n$29=_fun_SecTrustCopyPublicKey(n$28:struct __SecTrust *) [line 67]\n " shape="box"] 36 -> 35 ; @@ -151,15 +151,15 @@ digraph iCFG { 34 -> 36 ; -33 [label="33: DeclStmt \n n$26=*&rect:struct CGRect [line 59]\n n$27=_fun_CGRectGetHeight(n$26:struct CGRect ) [line 59]\n *&lineThickness:double =(0.200000 * n$27) [line 59]\n REMOVE_TEMPS(n$26,n$27); [line 59]\n NULLIFY(&lineThickness); [line 59]\n NULLIFY(&rect); [line 59]\n " shape="box"] +33 [label="33: DeclStmt \n n$26=*&rect:struct CGRect [line 59]\n n$27=_fun_CGRectGetHeight(n$26:struct CGRect ) [line 59]\n *&lineThickness:double =(0.200000 * n$27) [line 59]\n " shape="box"] 33 -> 32 ; -32 [label="32: DeclStmt \n n$25=_fun___objc_alloc_no_fail(sizeof(struct CGPath ):unsigned long ,_fun_CGPathCreateMutable:void ) [line 62]\n *&path1:struct CGPath *=n$25 [line 62]\n REMOVE_TEMPS(n$25); [line 62]\n " shape="box"] +32 [label="32: DeclStmt \n n$25=_fun___objc_alloc_no_fail(sizeof(struct CGPath ):unsigned long ,_fun_CGPathCreateMutable:void ) [line 62]\n *&path1:struct CGPath *=n$25 [line 62]\n " shape="box"] 32 -> 31 ; -31 [label="31: Call _fun___objc_release_cf \n n$24=*&path1:struct CGPath * [line 63]\n _fun___objc_release_cf(1:_Bool ,n$24:void *) [line 63]\n REMOVE_TEMPS(n$24); [line 63]\n NULLIFY(&path1); [line 63]\n APPLY_ABSTRACTION; [line 63]\n " shape="box"] +31 [label="31: Call _fun___objc_release_cf \n n$24=*&path1:struct CGPath * [line 63]\n _fun___objc_release_cf(1:_Bool ,n$24:void *) [line 63]\n " shape="box"] 31 -> 30 ; @@ -170,11 +170,11 @@ digraph iCFG { 29 -> 33 ; -28 [label="28: BinaryOperatorStmt: Mul \n n$22=*&rect:struct CGRect [line 54]\n n$23=_fun_CGRectGetHeight(n$22:struct CGRect ) [line 54]\n REMOVE_TEMPS(n$22,n$23); [line 54]\n NULLIFY(&rect); [line 54]\n " shape="box"] +28 [label="28: BinaryOperatorStmt: Mul \n n$22=*&rect:struct CGRect [line 54]\n n$23=_fun_CGRectGetHeight(n$22:struct CGRect ) [line 54]\n " shape="box"] 28 -> 27 ; -27 [label="27: Call alloc \n n$21=_fun___objc_alloc_no_fail(sizeof(struct CGPath ):unsigned long ,_fun_CGPathCreateMutable:void ) [line 55]\n REMOVE_TEMPS(n$21); [line 55]\n APPLY_ABSTRACTION; [line 55]\n " shape="box"] +27 [label="27: Call alloc \n n$21=_fun___objc_alloc_no_fail(sizeof(struct CGPath ):unsigned long ,_fun_CGPathCreateMutable:void ) [line 55]\n " shape="box"] 27 -> 26 ; @@ -185,11 +185,11 @@ digraph iCFG { 25 -> 28 ; -24 [label="24: DeclStmt \n n$20=_fun_CTFramesetterCreateWithAttributedString(0:struct __CFAttributedString *) [line 49]\n *&framesetter:struct __CTFramesetter *=n$20 [line 49]\n REMOVE_TEMPS(n$20); [line 49]\n " shape="box"] +24 [label="24: DeclStmt \n n$20=_fun_CTFramesetterCreateWithAttributedString(0:struct __CFAttributedString *) [line 49]\n *&framesetter:struct __CTFramesetter *=n$20 [line 49]\n " shape="box"] 24 -> 23 ; -23 [label="23: Call _fun___objc_release_cf \n n$19=*&framesetter:struct __CTFramesetter * [line 50]\n _fun___objc_release_cf(1:_Bool ,n$19:void *) [line 50]\n REMOVE_TEMPS(n$19); [line 50]\n NULLIFY(&framesetter); [line 50]\n APPLY_ABSTRACTION; [line 50]\n " shape="box"] +23 [label="23: Call _fun___objc_release_cf \n n$19=*&framesetter:struct __CTFramesetter * [line 50]\n _fun___objc_release_cf(1:_Bool ,n$19:void *) [line 50]\n " shape="box"] 23 -> 22 ; @@ -200,7 +200,7 @@ digraph iCFG { 21 -> 24 ; -20 [label="20: Call _fun_CTFramesetterCreateWithAttributedString \n n$17=*&str:struct __CFAttributedString * [line 45]\n n$18=_fun_CTFramesetterCreateWithAttributedString(n$17:struct __CFAttributedString *) [line 45]\n REMOVE_TEMPS(n$17,n$18); [line 45]\n NULLIFY(&str); [line 45]\n APPLY_ABSTRACTION; [line 45]\n " shape="box"] +20 [label="20: Call _fun_CTFramesetterCreateWithAttributedString \n n$17=*&str:struct __CFAttributedString * [line 45]\n n$18=_fun_CTFramesetterCreateWithAttributedString(n$17:struct __CFAttributedString *) [line 45]\n " shape="box"] 20 -> 19 ; @@ -211,11 +211,11 @@ digraph iCFG { 18 -> 20 ; -17 [label="17: DeclStmt \n n$16=_fun___objc_alloc_no_fail(sizeof(struct __CFAttributedString ):unsigned long ,_fun_CFAttributedStringCreateMutable:void ) [line 40]\n *&maString:struct __CFAttributedString *=n$16 [line 39]\n REMOVE_TEMPS(n$16); [line 39]\n " shape="box"] +17 [label="17: DeclStmt \n n$16=_fun___objc_alloc_no_fail(sizeof(struct __CFAttributedString ):unsigned long ,_fun_CFAttributedStringCreateMutable:void ) [line 40]\n *&maString:struct __CFAttributedString *=n$16 [line 39]\n " shape="box"] 17 -> 16 ; -16 [label="16: Call _fun___objc_release_cf \n n$15=*&maString:struct __CFAttributedString * [line 41]\n _fun___objc_release_cf(1:_Bool ,n$15:void *) [line 41]\n REMOVE_TEMPS(n$15); [line 41]\n NULLIFY(&maString); [line 41]\n APPLY_ABSTRACTION; [line 41]\n " shape="box"] +16 [label="16: Call _fun___objc_release_cf \n n$15=*&maString:struct __CFAttributedString * [line 41]\n _fun___objc_release_cf(1:_Bool ,n$15:void *) [line 41]\n " shape="box"] 16 -> 15 ; @@ -226,7 +226,7 @@ digraph iCFG { 14 -> 17 ; -13 [label="13: Call alloc \n n$14=_fun___objc_alloc_no_fail(sizeof(struct __CFAttributedString ):unsigned long ,_fun_CFAttributedStringCreateMutable:void ) [line 35]\n REMOVE_TEMPS(n$14); [line 35]\n APPLY_ABSTRACTION; [line 35]\n " shape="box"] +13 [label="13: Call alloc \n n$14=_fun___objc_alloc_no_fail(sizeof(struct __CFAttributedString ):unsigned long ,_fun_CFAttributedStringCreateMutable:void ) [line 35]\n " shape="box"] 13 -> 12 ; @@ -237,11 +237,11 @@ digraph iCFG { 11 -> 13 ; -10 [label="10: DeclStmt \n n$13=_fun___objc_alloc_no_fail(sizeof(struct CGPath ):unsigned long ,_fun_CGPathCreateWithRect:void ) [line 30]\n *&shadowPath:struct CGPath *=n$13 [line 29]\n REMOVE_TEMPS(n$13); [line 29]\n " shape="box"] +10 [label="10: DeclStmt \n n$13=_fun___objc_alloc_no_fail(sizeof(struct CGPath ):unsigned long ,_fun_CGPathCreateWithRect:void ) [line 30]\n *&shadowPath:struct CGPath *=n$13 [line 29]\n " shape="box"] 10 -> 9 ; -9 [label="9: Message Call: setShadowPath: \n n$6=*&self:class MemoryLeakExample * [line 31]\n n$7=_fun_MemoryLeakExample_backgroundCoveringView(n$6:class MemoryLeakExample *) [line 31]\n n$8=_fun_UIView_layer(n$7:class UIView *) [line 31]\n n$9=*&shadowPath:struct CGPath * [line 31]\n _fun_CALayer_setShadowPath:(n$8:class CALayer *,n$9:struct CGPath *) [line 31]\n REMOVE_TEMPS(n$6,n$7,n$8,n$9); [line 31]\n NULLIFY(&self); [line 31]\n NULLIFY(&shadowPath); [line 31]\n APPLY_ABSTRACTION; [line 31]\n " shape="box"] +9 [label="9: Message Call: setShadowPath: \n n$6=*&self:class MemoryLeakExample * [line 31]\n n$7=_fun_MemoryLeakExample_backgroundCoveringView(n$6:class MemoryLeakExample *) [line 31]\n n$8=_fun_UIView_layer(n$7:class UIView *) [line 31]\n n$9=*&shadowPath:struct CGPath * [line 31]\n _fun_CALayer_setShadowPath:(n$8:class CALayer *,n$9:struct CGPath *) [line 31]\n " shape="box"] 9 -> 8 ; @@ -252,19 +252,19 @@ digraph iCFG { 7 -> 10 ; -6 [label="6: DeclStmt \n n$5=_fun___objc_alloc_no_fail(sizeof(class UIView ):unsigned long ) [line 20]\n *&attachmentContainerView:class UIView *=n$5 [line 20]\n REMOVE_TEMPS(n$5); [line 20]\n " shape="box"] +6 [label="6: DeclStmt \n n$5=_fun___objc_alloc_no_fail(sizeof(class UIView ):unsigned long ) [line 20]\n *&attachmentContainerView:class UIView *=n$5 [line 20]\n " shape="box"] 6 -> 5 ; -5 [label="5: DeclStmt \n n$4=_fun___objc_alloc_no_fail(sizeof(struct CGPath ):unsigned long ,_fun_CGPathCreateWithRect:void ) [line 22]\n *&shadowPath:struct CGPath *=n$4 [line 21]\n REMOVE_TEMPS(n$4); [line 21]\n " shape="box"] +5 [label="5: DeclStmt \n n$4=_fun___objc_alloc_no_fail(sizeof(struct CGPath ):unsigned long ,_fun_CGPathCreateWithRect:void ) [line 22]\n *&shadowPath:struct CGPath *=n$4 [line 21]\n " shape="box"] 5 -> 4 ; -4 [label="4: Call _fun_CGPathRelease \n n$1=*&shadowPath:struct CGPath * [line 24]\n _fun_CGPathRelease(n$1:struct CGPath *) [line 24]\n REMOVE_TEMPS(n$1); [line 24]\n NULLIFY(&shadowPath); [line 24]\n " shape="box"] +4 [label="4: Call _fun_CGPathRelease \n n$1=*&shadowPath:struct CGPath * [line 24]\n _fun_CGPathRelease(n$1:struct CGPath *) [line 24]\n " shape="box"] 4 -> 3 ; -3 [label="3: Message Call: release \n n$0=*&attachmentContainerView:class UIView * [line 25]\n _fun___objc_release(n$0:class UIView *) [line 25]\n REMOVE_TEMPS(n$0); [line 25]\n NULLIFY(&attachmentContainerView); [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="box"] +3 [label="3: Message Call: release \n n$0=*&attachmentContainerView:class UIView * [line 25]\n _fun___objc_release(n$0:class UIView *) [line 25]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/RetainReleaseExample.dot b/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/RetainReleaseExample.dot index 7bb86c072..5ddaf2781 100644 --- a/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/RetainReleaseExample.dot +++ b/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/RetainReleaseExample.dot @@ -1,14 +1,14 @@ /* @generated */ digraph iCFG { -5 [label="5: DeclStmt \n n$3=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 21]\n n$4=_fun_NSObject_init(n$3:class A *) virtual [line 21]\n *&a:class A *=n$4 [line 21]\n REMOVE_TEMPS(n$3,n$4); [line 21]\n " shape="box"] +5 [label="5: DeclStmt \n n$3=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 21]\n n$4=_fun_NSObject_init(n$3:class A *) virtual [line 21]\n *&a:class A *=n$4 [line 21]\n " shape="box"] 5 -> 4 ; -4 [label="4: Message Call: retain \n n$1=*&a:class A * [line 22]\n n$2=_fun___objc_retain(n$1:class A *) [line 22]\n REMOVE_TEMPS(n$1,n$2); [line 22]\n " shape="box"] +4 [label="4: Message Call: retain \n n$1=*&a:class A * [line 22]\n n$2=_fun___objc_retain(n$1:class A *) [line 22]\n " shape="box"] 4 -> 3 ; -3 [label="3: Message Call: release \n n$0=*&a:class A * [line 23]\n _fun___objc_release(n$0:class A *) [line 23]\n REMOVE_TEMPS(n$0); [line 23]\n NULLIFY(&a); [line 23]\n APPLY_ABSTRACTION; [line 23]\n " shape="box"] +3 [label="3: Message Call: release \n n$0=*&a:class A * [line 23]\n _fun___objc_release(n$0:class A *) [line 23]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/RetainReleaseExample2.dot b/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/RetainReleaseExample2.dot index b91a42cf2..276741acc 100644 --- a/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/RetainReleaseExample2.dot +++ b/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/RetainReleaseExample2.dot @@ -1,18 +1,18 @@ /* @generated */ digraph iCFG { -33 [label="33: Call _fun___objc_release \n n$1=*&a:class A * [line 65]\n _fun___objc_release(n$1:class A *) [line 65]\n REMOVE_TEMPS(n$1); [line 65]\n NULLIFY(&a); [line 65]\n APPLY_ABSTRACTION; [line 65]\n " shape="box"] +33 [label="33: Call _fun___objc_release \n n$1=*&a:class A * [line 65]\n _fun___objc_release(n$1:class A *) [line 65]\n " shape="box"] 33 -> 29 ; -32 [label="32: Prune (false branch) \n n$0=*&a:class A * [line 64]\n PRUNE((n$0 == 0), false); [line 64]\n REMOVE_TEMPS(n$0); [line 64]\n NULLIFY(&a); [line 64]\n APPLY_ABSTRACTION; [line 64]\n " shape="invhouse"] +32 [label="32: Prune (false branch) \n n$0=*&a:class A * [line 64]\n PRUNE((n$0 == 0), false); [line 64]\n " shape="invhouse"] 32 -> 29 ; -31 [label="31: Prune (true branch) \n n$0=*&a:class A * [line 64]\n PRUNE((n$0 != 0), true); [line 64]\n REMOVE_TEMPS(n$0); [line 64]\n " shape="invhouse"] +31 [label="31: Prune (true branch) \n n$0=*&a:class A * [line 64]\n PRUNE((n$0 != 0), true); [line 64]\n " shape="invhouse"] 31 -> 33 ; -30 [label="30: between_join_and_exit \n APPLY_ABSTRACTION; [line 64]\n " shape="box"] +30 [label="30: between_join_and_exit \n " shape="box"] 30 -> 28 ; @@ -28,15 +28,15 @@ digraph iCFG { 27 -> 31 ; 27 -> 32 ; -26 [label="26: DeclStmt \n n$3=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 57]\n n$4=_fun_NSObject_init(n$3:class A *) virtual [line 57]\n *&a:class A *=n$4 [line 57]\n REMOVE_TEMPS(n$3,n$4); [line 57]\n " shape="box"] +26 [label="26: DeclStmt \n n$3=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 57]\n n$4=_fun_NSObject_init(n$3:class A *) virtual [line 57]\n *&a:class A *=n$4 [line 57]\n " shape="box"] 26 -> 25 ; -25 [label="25: Message Call: retain \n n$1=*&a:class A * [line 58]\n n$2=_fun___objc_retain(n$1:class A *) [line 58]\n REMOVE_TEMPS(n$1,n$2); [line 58]\n " shape="box"] +25 [label="25: Message Call: retain \n n$1=*&a:class A * [line 58]\n n$2=_fun___objc_retain(n$1:class A *) [line 58]\n " shape="box"] 25 -> 24 ; -24 [label="24: Message Call: release \n n$0=*&a:class A * [line 59]\n _fun___objc_release(n$0:class A *) [line 59]\n REMOVE_TEMPS(n$0); [line 59]\n NULLIFY(&a); [line 59]\n APPLY_ABSTRACTION; [line 59]\n " shape="box"] +24 [label="24: Message Call: release \n n$0=*&a:class A * [line 59]\n _fun___objc_release(n$0:class A *) [line 59]\n " shape="box"] 24 -> 23 ; @@ -47,11 +47,11 @@ digraph iCFG { 22 -> 26 ; -21 [label="21: DeclStmt \n n$1=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 51]\n n$2=_fun_NSObject_init(n$1:class A *) virtual [line 51]\n *&a:class A *=n$2 [line 51]\n REMOVE_TEMPS(n$1,n$2); [line 51]\n " shape="box"] +21 [label="21: DeclStmt \n n$1=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 51]\n n$2=_fun_NSObject_init(n$1:class A *) virtual [line 51]\n *&a:class A *=n$2 [line 51]\n " shape="box"] 21 -> 20 ; -20 [label="20: Message Call: release \n n$0=*&a:class A * [line 52]\n _fun___objc_release(n$0:class A *) [line 52]\n REMOVE_TEMPS(n$0); [line 52]\n NULLIFY(&a); [line 52]\n APPLY_ABSTRACTION; [line 52]\n " shape="box"] +20 [label="20: Message Call: release \n n$0=*&a:class A * [line 52]\n _fun___objc_release(n$0:class A *) [line 52]\n " shape="box"] 20 -> 19 ; @@ -62,11 +62,11 @@ digraph iCFG { 18 -> 21 ; -17 [label="17: DeclStmt \n n$1=_fun_test() [line 45]\n *&b:class A *=n$1 [line 45]\n REMOVE_TEMPS(n$1); [line 45]\n " shape="box"] +17 [label="17: DeclStmt \n n$1=_fun_test() [line 45]\n *&b:class A *=n$1 [line 45]\n " shape="box"] 17 -> 16 ; -16 [label="16: Message Call: release \n n$0=*&b:class A * [line 46]\n _fun___objc_release(n$0:class A *) [line 46]\n REMOVE_TEMPS(n$0); [line 46]\n NULLIFY(&b); [line 46]\n APPLY_ABSTRACTION; [line 46]\n " shape="box"] +16 [label="16: Message Call: release \n n$0=*&b:class A * [line 46]\n _fun___objc_release(n$0:class A *) [line 46]\n " shape="box"] 16 -> 15 ; @@ -77,7 +77,7 @@ digraph iCFG { 14 -> 17 ; -13 [label="13: DeclStmt \n n$0=_fun_test() [line 40]\n *&b:class A *=n$0 [line 40]\n REMOVE_TEMPS(n$0); [line 40]\n NULLIFY(&b); [line 40]\n APPLY_ABSTRACTION; [line 40]\n " shape="box"] +13 [label="13: DeclStmt \n n$0=_fun_test() [line 40]\n *&b:class A *=n$0 [line 40]\n " shape="box"] 13 -> 12 ; @@ -88,11 +88,11 @@ digraph iCFG { 11 -> 13 ; -10 [label="10: DeclStmt \n n$1=_fun_test() [line 35]\n *&b:class A *=n$1 [line 35]\n REMOVE_TEMPS(n$1); [line 35]\n " shape="box"] +10 [label="10: DeclStmt \n n$1=_fun_test() [line 35]\n *&b:class A *=n$1 [line 35]\n " shape="box"] 10 -> 9 ; -9 [label="9: BinaryOperatorStmt: Assign \n n$0=*&b:class A * [line 36]\n *&#GB$g:class A *=n$0 [line 36]\n REMOVE_TEMPS(n$0); [line 36]\n NULLIFY(&b); [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="box"] +9 [label="9: BinaryOperatorStmt: Assign \n n$0=*&b:class A * [line 36]\n *&#GB$g:class A *=n$0 [line 36]\n " shape="box"] 9 -> 8 ; @@ -103,19 +103,19 @@ digraph iCFG { 7 -> 10 ; -6 [label="6: DeclStmt \n n$4=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 25]\n n$5=_fun_NSObject_init(n$4:class A *) virtual [line 25]\n *&a:class A *=n$5 [line 25]\n REMOVE_TEMPS(n$4,n$5); [line 25]\n " shape="box"] +6 [label="6: DeclStmt \n n$4=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 25]\n n$5=_fun_NSObject_init(n$4:class A *) virtual [line 25]\n *&a:class A *=n$5 [line 25]\n " shape="box"] 6 -> 5 ; -5 [label="5: Message Call: retain \n n$2=*&a:class A * [line 26]\n n$3=_fun___objc_retain(n$2:class A *) [line 26]\n REMOVE_TEMPS(n$2,n$3); [line 26]\n " shape="box"] +5 [label="5: Message Call: retain \n n$2=*&a:class A * [line 26]\n n$3=_fun___objc_retain(n$2:class A *) [line 26]\n " shape="box"] 5 -> 4 ; -4 [label="4: Message Call: release \n n$1=*&a:class A * [line 27]\n _fun___objc_release(n$1:class A *) [line 27]\n REMOVE_TEMPS(n$1); [line 27]\n " shape="box"] +4 [label="4: Message Call: release \n n$1=*&a:class A * [line 27]\n _fun___objc_release(n$1:class A *) [line 27]\n " shape="box"] 4 -> 3 ; -3 [label="3: Return Stmt \n n$0=*&a:class A * [line 29]\n *&return:class A *=n$0 [line 29]\n REMOVE_TEMPS(n$0); [line 29]\n NULLIFY(&a); [line 29]\n APPLY_ABSTRACTION; [line 29]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&a:class A * [line 29]\n *&return:class A *=n$0 [line 29]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/TollBridgeExample.dot b/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/TollBridgeExample.dot index 9a67c8d38..087affdf9 100644 --- a/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/TollBridgeExample.dot +++ b/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/TollBridgeExample.dot @@ -1,10 +1,10 @@ /* @generated */ digraph iCFG { -23 [label="23: DeclStmt \n n$1=_fun_NSDictionary_dictionaryWithObjects:forKeys:count:(0:struct objc_object *) [line 45]\n n$2=_fun_NSString_stringWithUTF8String:(\"key\":char *) [line 45]\n n$3=_fun_NSDictionary_dictionaryWithObjects:forKeys:count:(n$1:struct objc_object *,n$2:struct objc_object *,0:struct objc_object *) [line 45]\n *&bufferAttributes:class NSDictionary *=n$3 [line 45]\n REMOVE_TEMPS(n$1,n$2,n$3); [line 45]\n " shape="box"] +23 [label="23: DeclStmt \n n$1=_fun_NSDictionary_dictionaryWithObjects:forKeys:count:(0:struct objc_object *) [line 45]\n n$2=_fun_NSString_stringWithUTF8String:(\"key\":char *) [line 45]\n n$3=_fun_NSDictionary_dictionaryWithObjects:forKeys:count:(n$1:struct objc_object *,n$2:struct objc_object *,0:struct objc_object *) [line 45]\n *&bufferAttributes:class NSDictionary *=n$3 [line 45]\n " shape="box"] 23 -> 22 ; -22 [label="22: DeclStmt \n n$0=*&bufferAttributes:class NSDictionary * [line 46]\n *&dict:struct __CFDictionary *=n$0 [line 46]\n REMOVE_TEMPS(n$0); [line 46]\n NULLIFY(&bufferAttributes); [line 46]\n NULLIFY(&dict); [line 46]\n APPLY_ABSTRACTION; [line 46]\n " shape="box"] +22 [label="22: DeclStmt \n n$0=*&bufferAttributes:class NSDictionary * [line 46]\n *&dict:struct __CFDictionary *=n$0 [line 46]\n " shape="box"] 22 -> 21 ; @@ -15,7 +15,7 @@ digraph iCFG { 20 -> 23 ; -19 [label="19: Return Stmt \n n$0=_fun___builtin___CFStringMakeConstantString(\"Icon\":char *) [line 41]\n n$1=_fun_CTFontCreateWithName(n$0:struct __CFString *,17.000000:double ,0:struct CGAffineTransform *) [line 41]\n n$2=_fun___objc_cast(n$1:void *,sizeof(void ):unsigned long ) [line 41]\n *&return:struct __CTFont *=n$2 [line 41]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 41]\n APPLY_ABSTRACTION; [line 41]\n " shape="box"] +19 [label="19: Return Stmt \n n$0=_fun___builtin___CFStringMakeConstantString(\"Icon\":char *) [line 41]\n n$1=_fun_CTFontCreateWithName(n$0:struct __CFString *,17.000000:double ,0:struct CGAffineTransform *) [line 41]\n n$2=_fun___objc_cast(n$1:void *,sizeof(void ):unsigned long ) [line 41]\n *&return:struct __CTFont *=n$2 [line 41]\n " shape="box"] 19 -> 18 ; @@ -26,11 +26,11 @@ digraph iCFG { 17 -> 19 ; -16 [label="16: DeclStmt \n n$8=_fun_CFHTTPMessageCopyAllHeaderFields(0:struct __CFHTTPMessage *) [line 36]\n *&ref:struct __CFDictionary *=n$8 [line 36]\n REMOVE_TEMPS(n$8); [line 36]\n " shape="box"] +16 [label="16: DeclStmt \n n$8=_fun_CFHTTPMessageCopyAllHeaderFields(0:struct __CFHTTPMessage *) [line 36]\n *&ref:struct __CFDictionary *=n$8 [line 36]\n " shape="box"] 16 -> 15 ; -15 [label="15: Call _fun_CFBridgingRelease \n n$6=*&ref:struct __CFDictionary * [line 37]\n n$7=_fun___objc_cast(n$6:void *,sizeof(struct objc_object ):unsigned long ) [line 37]\n REMOVE_TEMPS(n$6,n$7); [line 37]\n NULLIFY(&ref); [line 37]\n APPLY_ABSTRACTION; [line 37]\n " shape="box"] +15 [label="15: Call _fun_CFBridgingRelease \n n$6=*&ref:struct __CFDictionary * [line 37]\n n$7=_fun___objc_cast(n$6:void *,sizeof(struct objc_object ):unsigned long ) [line 37]\n " shape="box"] 15 -> 14 ; @@ -41,11 +41,11 @@ digraph iCFG { 13 -> 16 ; -12 [label="12: DeclStmt \n n$5=_fun___objc_alloc_no_fail(sizeof(class NSLocale ):unsigned long ) [line 30]\n *&observer:struct objc_object *=n$5 [line 30]\n REMOVE_TEMPS(n$5); [line 30]\n " shape="box"] +12 [label="12: DeclStmt \n n$5=_fun___objc_alloc_no_fail(sizeof(class NSLocale ):unsigned long ) [line 30]\n *&observer:struct objc_object *=n$5 [line 30]\n " shape="box"] 12 -> 11 ; -11 [label="11: DeclStmt \n n$4=*&observer:struct objc_object * [line 31]\n *&a:struct __CFLocale *=n$4 [line 31]\n REMOVE_TEMPS(n$4); [line 31]\n NULLIFY(&a); [line 31]\n NULLIFY(&observer); [line 31]\n APPLY_ABSTRACTION; [line 31]\n " shape="box"] +11 [label="11: DeclStmt \n n$4=*&observer:struct objc_object * [line 31]\n *&a:struct __CFLocale *=n$4 [line 31]\n " shape="box"] 11 -> 10 ; @@ -56,11 +56,11 @@ digraph iCFG { 9 -> 12 ; -8 [label="8: DeclStmt \n n$3=_fun_CFLocaleCreate(0:struct __CFAllocator *,0:struct __CFString *) [line 25]\n *&nameRef:struct __CFLocale *=n$3 [line 25]\n REMOVE_TEMPS(n$3); [line 25]\n " shape="box"] +8 [label="8: DeclStmt \n n$3=_fun_CFLocaleCreate(0:struct __CFAllocator *,0:struct __CFString *) [line 25]\n *&nameRef:struct __CFLocale *=n$3 [line 25]\n " shape="box"] 8 -> 7 ; -7 [label="7: DeclStmt \n n$2=*&nameRef:struct __CFLocale * [line 26]\n *&a:class NSLocale *=n$2 [line 26]\n REMOVE_TEMPS(n$2); [line 26]\n NULLIFY(&a); [line 26]\n NULLIFY(&nameRef); [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"] +7 [label="7: DeclStmt \n n$2=*&nameRef:struct __CFLocale * [line 26]\n *&a:class NSLocale *=n$2 [line 26]\n " shape="box"] 7 -> 6 ; @@ -71,11 +71,11 @@ digraph iCFG { 5 -> 8 ; -4 [label="4: DeclStmt \n n$1=_fun_CFLocaleCreate(0:struct __CFAllocator *,0:struct __CFString *) [line 20]\n *&nameRef:struct __CFLocale *=n$1 [line 20]\n REMOVE_TEMPS(n$1); [line 20]\n " shape="box"] +4 [label="4: DeclStmt \n n$1=_fun_CFLocaleCreate(0:struct __CFAllocator *,0:struct __CFString *) [line 20]\n *&nameRef:struct __CFLocale *=n$1 [line 20]\n " shape="box"] 4 -> 3 ; -3 [label="3: DeclStmt \n n$0=*&nameRef:struct __CFLocale * [line 21]\n *&a:class NSLocale *=n$0 [line 21]\n REMOVE_TEMPS(n$0); [line 21]\n NULLIFY(&a); [line 21]\n NULLIFY(&nameRef); [line 21]\n APPLY_ABSTRACTION; [line 21]\n " shape="box"] +3 [label="3: DeclStmt \n n$0=*&nameRef:struct __CFLocale * [line 21]\n *&a:class NSLocale *=n$0 [line 21]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/arc_methods.dot b/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/arc_methods.dot index 71ffef635..2e80c8c20 100644 --- a/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/arc_methods.dot +++ b/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/arc_methods.dot @@ -1,22 +1,22 @@ /* @generated */ digraph iCFG { -15 [label="15: DeclStmt \n n$3=_fun_A_newA() [line 42]\n *&a1:class A *=n$3 [line 42]\n REMOVE_TEMPS(n$3); [line 42]\n " shape="box"] +15 [label="15: DeclStmt \n n$3=_fun_A_newA() [line 42]\n *&a1:class A *=n$3 [line 42]\n " shape="box"] 15 -> 14 ; -14 [label="14: DeclStmt \n n$2=*&a1:class A * [line 43]\n _fun___objc_retain(n$2:class A *) [line 43]\n *&aa:class A *=n$2 [line 43]\n REMOVE_TEMPS(n$2); [line 43]\n NULLIFY(&a1); [line 43]\n NULLIFY(&aa); [line 43]\n " shape="box"] +14 [label="14: DeclStmt \n n$2=*&a1:class A * [line 43]\n _fun___objc_retain(n$2:class A *) [line 43]\n *&aa:class A *=n$2 [line 43]\n " shape="box"] 14 -> 13 ; -13 [label="13: DeclStmt \n n$1=_fun_A_someA() [line 44]\n _fun___objc_retain(n$1:class A *) [line 44]\n *&a2:class A *=n$1 [line 44]\n REMOVE_TEMPS(n$1); [line 44]\n " shape="box"] +13 [label="13: DeclStmt \n n$1=_fun_A_someA() [line 44]\n _fun___objc_retain(n$1:class A *) [line 44]\n *&a2:class A *=n$1 [line 44]\n " shape="box"] 13 -> 12 ; -12 [label="12: DeclStmt \n n$0=*&a2:class A * [line 45]\n _fun___objc_retain(n$0:class A *) [line 45]\n *&ab:class A *=n$0 [line 45]\n REMOVE_TEMPS(n$0); [line 45]\n NULLIFY(&a2); [line 45]\n NULLIFY(&ab); [line 45]\n " shape="box"] +12 [label="12: DeclStmt \n n$0=*&a2:class A * [line 45]\n _fun___objc_retain(n$0:class A *) [line 45]\n *&ab:class A *=n$0 [line 45]\n " shape="box"] 12 -> 11 ; -11 [label="11: Return Stmt \n *&return:int =0 [line 46]\n APPLY_ABSTRACTION; [line 46]\n " shape="box"] +11 [label="11: Return Stmt \n *&return:int =0 [line 46]\n " shape="box"] 11 -> 10 ; @@ -27,11 +27,11 @@ digraph iCFG { 9 -> 15 ; -8 [label="8: DeclStmt \n n$5=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 28]\n n$6=_fun_NSObject_init(n$5:class A *) virtual [line 28]\n *&a:class A *=n$6 [line 28]\n REMOVE_TEMPS(n$5,n$6); [line 28]\n " shape="box"] +8 [label="8: DeclStmt \n n$5=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 28]\n n$6=_fun_NSObject_init(n$5:class A *) virtual [line 28]\n *&a:class A *=n$6 [line 28]\n " shape="box"] 8 -> 7 ; -7 [label="7: Return Stmt \n n$3=*&a:class A * [line 30]\n *&return:class A *=n$3 [line 30]\n n$4=_fun___set_autorelease_attribute(n$3:class A *) [line 30]\n REMOVE_TEMPS(n$3,n$4); [line 30]\n NULLIFY(&a); [line 30]\n APPLY_ABSTRACTION; [line 30]\n " shape="box"] +7 [label="7: Return Stmt \n n$3=*&a:class A * [line 30]\n *&return:class A *=n$3 [line 30]\n n$4=_fun___set_autorelease_attribute(n$3:class A *) [line 30]\n " shape="box"] 7 -> 6 ; @@ -42,11 +42,11 @@ digraph iCFG { 5 -> 8 ; -4 [label="4: DeclStmt \n n$1=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 23]\n n$2=_fun_NSObject_init(n$1:class A *) virtual [line 23]\n *&a:class A *=n$2 [line 23]\n REMOVE_TEMPS(n$1,n$2); [line 23]\n " shape="box"] +4 [label="4: DeclStmt \n n$1=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 23]\n n$2=_fun_NSObject_init(n$1:class A *) virtual [line 23]\n *&a:class A *=n$2 [line 23]\n " shape="box"] 4 -> 3 ; -3 [label="3: Return Stmt \n n$0=*&a:class A * [line 24]\n *&return:class A *=n$0 [line 24]\n REMOVE_TEMPS(n$0); [line 24]\n NULLIFY(&a); [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&a:class A * [line 24]\n *&return:class A *=n$0 [line 24]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/errors/npe/Nonnull_attribute_example.dot b/infer/tests/codetoanalyze/objc/errors/npe/Nonnull_attribute_example.dot index 99574933e..7e05d34ff 100644 --- a/infer/tests/codetoanalyze/objc/errors/npe/Nonnull_attribute_example.dot +++ b/infer/tests/codetoanalyze/objc/errors/npe/Nonnull_attribute_example.dot @@ -1,10 +1,10 @@ /* @generated */ digraph iCFG { -13 [label="13: Call _fun___infer_assume \n n$1=*&callback:_fn_ (*) [line 46]\n n$2=_fun___infer_assume((n$1 != 0):_fn_ (*)) [line 46]\n REMOVE_TEMPS(n$1,n$2); [line 46]\n " shape="box"] +13 [label="13: Call _fun___infer_assume \n n$1=*&callback:_fn_ (*) [line 46]\n n$2=_fun___infer_assume((n$1 != 0):_fn_ (*)) [line 46]\n " shape="box"] 13 -> 12 ; -12 [label="12: Call n$0 \n n$0=*&callback:_fn_ (*) [line 46]\n n$0(0:class NSError *,0:struct objc_object *) [line 46]\n REMOVE_TEMPS(n$0); [line 46]\n NULLIFY(&callback); [line 46]\n APPLY_ABSTRACTION; [line 46]\n " shape="box"] +12 [label="12: Call n$0 \n n$0=*&callback:_fn_ (*) [line 46]\n n$0(0:class NSError *,0:struct objc_object *) [line 46]\n " shape="box"] 12 -> 11 ; @@ -15,19 +15,19 @@ digraph iCFG { 10 -> 13 ; -9 [label="9: Call _fun___infer_assume \n n$5=*&a:class A * [line 38]\n n$6=_fun___infer_assume((n$5 != 0):class A *) [line 38]\n REMOVE_TEMPS(n$5,n$6); [line 38]\n " shape="box"] +9 [label="9: Call _fun___infer_assume \n n$5=*&a:class A * [line 38]\n n$6=_fun___infer_assume((n$5 != 0):class A *) [line 38]\n " shape="box"] 9 -> 8 ; -8 [label="8: DeclStmt \n n$3=*&a:class A * [line 39]\n n$4=_fun_A_getA(n$3:class A *) virtual [line 39]\n _fun___objc_retain(n$4:class A *) [line 39]\n *&a1:class A *=n$4 [line 39]\n REMOVE_TEMPS(n$3,n$4); [line 39]\n NULLIFY(&a); [line 39]\n " shape="box"] +8 [label="8: DeclStmt \n n$3=*&a:class A * [line 39]\n n$4=_fun_A_getA(n$3:class A *) virtual [line 39]\n _fun___objc_retain(n$4:class A *) [line 39]\n *&a1:class A *=n$4 [line 39]\n " shape="box"] 8 -> 7 ; -7 [label="7: DeclStmt \n n$1=*&a1:class A * [line 40]\n n$2=*n$1.x:int [line 40]\n *&y:int =n$2 [line 40]\n REMOVE_TEMPS(n$1,n$2); [line 40]\n NULLIFY(&a1); [line 40]\n NULLIFY(&y); [line 40]\n " shape="box"] +7 [label="7: DeclStmt \n n$1=*&a1:class A * [line 40]\n n$2=*n$1.x:int [line 40]\n *&y:int =n$2 [line 40]\n " shape="box"] 7 -> 6 ; -6 [label="6: Return Stmt \n n$0=*&self:class C * [line 41]\n *&return:struct objc_object *=n$0 [line 41]\n REMOVE_TEMPS(n$0); [line 41]\n NULLIFY(&self); [line 41]\n APPLY_ABSTRACTION; [line 41]\n " shape="box"] +6 [label="6: Return Stmt \n n$0=*&self:class C * [line 41]\n *&return:struct objc_object *=n$0 [line 41]\n " shape="box"] 6 -> 5 ; @@ -38,7 +38,7 @@ digraph iCFG { 4 -> 9 ; -3 [label="3: Return Stmt \n n$0=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 26]\n n$1=_fun_NSObject_init(n$0:class A *) virtual [line 26]\n *&return:class A *=n$1 [line 26]\n n$2=_fun___set_autorelease_attribute(n$1:class A *) [line 26]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 26]\n n$1=_fun_NSObject_init(n$0:class A *) virtual [line 26]\n *&return:class A *=n$1 [line 26]\n n$2=_fun___set_autorelease_attribute(n$1:class A *) [line 26]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/errors/npe/npe_malloc.dot b/infer/tests/codetoanalyze/objc/errors/npe/npe_malloc.dot index 1a7a783d1..23e673c86 100644 --- a/infer/tests/codetoanalyze/objc/errors/npe/npe_malloc.dot +++ b/infer/tests/codetoanalyze/objc/errors/npe/npe_malloc.dot @@ -1,14 +1,14 @@ /* @generated */ digraph iCFG { -5 [label="5: DeclStmt \n n$2=_fun_malloc_no_fail(sizeof(struct Person ):struct Person ) [line 25]\n *&person:struct Person *=n$2 [line 25]\n REMOVE_TEMPS(n$2); [line 25]\n " shape="box"] +5 [label="5: DeclStmt \n n$2=_fun_malloc_no_fail(sizeof(struct Person ):struct Person ) [line 25]\n *&person:struct Person *=n$2 [line 25]\n " shape="box"] 5 -> 4 ; -4 [label="4: BinaryOperatorStmt: Assign \n n$1=*&person:struct Person * [line 26]\n *n$1.x:int =10 [line 26]\n REMOVE_TEMPS(n$1); [line 26]\n " shape="box"] +4 [label="4: BinaryOperatorStmt: Assign \n n$1=*&person:struct Person * [line 26]\n *n$1.x:int =10 [line 26]\n " shape="box"] 4 -> 3 ; -3 [label="3: Return Stmt \n n$0=*&person:struct Person * [line 27]\n *&return:struct Person *=n$0 [line 27]\n REMOVE_TEMPS(n$0); [line 27]\n NULLIFY(&person); [line 27]\n APPLY_ABSTRACTION; [line 27]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&person:struct Person * [line 27]\n *&return:struct Person *=n$0 [line 27]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/errors/protocol_procdesc/main.dot b/infer/tests/codetoanalyze/objc/errors/protocol_procdesc/main.dot index 5358050b5..d19336ca1 100644 --- a/infer/tests/codetoanalyze/objc/errors/protocol_procdesc/main.dot +++ b/infer/tests/codetoanalyze/objc/errors/protocol_procdesc/main.dot @@ -1,14 +1,14 @@ /* @generated */ digraph iCFG { -5 [label="5: DeclStmt \n n$1=_fun___objc_alloc_no_fail(sizeof(class Bicycle ):unsigned long ) [line 14]\n *&bike:class Bicycle *=n$1 [line 14]\n REMOVE_TEMPS(n$1); [line 14]\n " shape="box"] +5 [label="5: DeclStmt \n n$1=_fun___objc_alloc_no_fail(sizeof(class Bicycle ):unsigned long ) [line 14]\n *&bike:class Bicycle *=n$1 [line 14]\n " shape="box"] 5 -> 4 ; -4 [label="4: Message Call: signalStop \n n$0=*&bike:class Bicycle * [line 16]\n _fun_Bicycle_signalStop(n$0:class Bicycle *) virtual [line 16]\n REMOVE_TEMPS(n$0); [line 16]\n NULLIFY(&bike); [line 16]\n " shape="box"] +4 [label="4: Message Call: signalStop \n n$0=*&bike:class Bicycle * [line 16]\n _fun_Bicycle_signalStop(n$0:class Bicycle *) virtual [line 16]\n " shape="box"] 4 -> 3 ; -3 [label="3: Return Stmt \n *&return:int =0 [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =0 [line 18]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/assertions/NSAssert_example.dot b/infer/tests/codetoanalyze/objc/frontend/assertions/NSAssert_example.dot index 469452671..6a4aeb417 100644 --- a/infer/tests/codetoanalyze/objc/frontend/assertions/NSAssert_example.dot +++ b/infer/tests/codetoanalyze/objc/frontend/assertions/NSAssert_example.dot @@ -1,27 +1,27 @@ /* @generated */ digraph iCFG { -105 [label="105: DeclStmt \n n$23=_fun_NSString_stringWithUTF8String:(\"\":char *) [line 36]\n _fun___objc_retain(n$23:class NSString *) [line 36]\n *&__assert_fn__:class NSString *=n$23 [line 36]\n REMOVE_TEMPS(n$23); [line 36]\n " shape="box"] +105 [label="105: DeclStmt \n n$23=_fun_NSString_stringWithUTF8String:(\"\":char *) [line 36]\n _fun___objc_retain(n$23:class NSString *) [line 36]\n *&__assert_fn__:class NSString *=n$23 [line 36]\n " shape="box"] 105 -> 100 ; 105 -> 101 ; -104 [label="104: BinaryOperatorStmt: Assign \n n$21=*&SIL_temp_conditional___n$17:class NSString * [line 36]\n _fun___objc_retain(n$21:class NSString *) [line 36]\n n$22=*&__assert_fn__:class NSString * [line 36]\n *&__assert_fn__:class NSString *=n$21 [line 36]\n _fun___objc_release(n$22:class NSString *) [line 36]\n REMOVE_TEMPS(n$21,n$22); [line 36]\n NULLIFY(&SIL_temp_conditional___n$17); [line 36]\n NULLIFY(&__assert_fn__); [line 36]\n " shape="box"] +104 [label="104: BinaryOperatorStmt: Assign \n n$21=*&SIL_temp_conditional___n$17:class NSString * [line 36]\n _fun___objc_retain(n$21:class NSString *) [line 36]\n n$22=*&__assert_fn__:class NSString * [line 36]\n *&__assert_fn__:class NSString *=n$21 [line 36]\n _fun___objc_release(n$22:class NSString *) [line 36]\n " shape="box"] 104 -> 98 ; -103 [label="103: ConditinalStmt Branch \n n$20=_fun_NSString_stringWithUTF8String:(\"\":char *) [line 36]\n *&SIL_temp_conditional___n$17:class NSString *=n$20 [line 36]\n REMOVE_TEMPS(n$20); [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="box"] +103 [label="103: ConditinalStmt Branch \n n$20=_fun_NSString_stringWithUTF8String:(\"\":char *) [line 36]\n *&SIL_temp_conditional___n$17:class NSString *=n$20 [line 36]\n " shape="box"] 103 -> 99 ; -102 [label="102: ConditinalStmt Branch \n n$19=*&__assert_fn__:class NSString * [line 36]\n *&SIL_temp_conditional___n$17:class NSString *=n$19 [line 36]\n REMOVE_TEMPS(n$19); [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="box"] +102 [label="102: ConditinalStmt Branch \n n$19=*&__assert_fn__:class NSString * [line 36]\n *&SIL_temp_conditional___n$17:class NSString *=n$19 [line 36]\n " shape="box"] 102 -> 99 ; -101 [label="101: Prune (false branch) \n n$18=*&__assert_fn__:class NSString * [line 36]\n PRUNE((n$18 == 0), false); [line 36]\n REMOVE_TEMPS(n$18); [line 36]\n " shape="invhouse"] +101 [label="101: Prune (false branch) \n n$18=*&__assert_fn__:class NSString * [line 36]\n PRUNE((n$18 == 0), false); [line 36]\n " shape="invhouse"] 101 -> 103 ; -100 [label="100: Prune (true branch) \n n$18=*&__assert_fn__:class NSString * [line 36]\n PRUNE((n$18 != 0), true); [line 36]\n REMOVE_TEMPS(n$18); [line 36]\n " shape="invhouse"] +100 [label="100: Prune (true branch) \n n$18=*&__assert_fn__:class NSString * [line 36]\n PRUNE((n$18 != 0), true); [line 36]\n " shape="invhouse"] 100 -> 102 ; @@ -29,28 +29,28 @@ digraph iCFG { 99 -> 104 ; -98 [label="98: DeclStmt \n n$16=_fun_NSString_stringWithUTF8String:(\"infer/tests/codetoanalyze/objc/frontend/assertions/NSAssert_example.m\":char *) [line 36]\n _fun___objc_retain(n$16:class NSString *) [line 36]\n *&__assert_file__:class NSString *=n$16 [line 36]\n REMOVE_TEMPS(n$16); [line 36]\n " shape="box"] +98 [label="98: DeclStmt \n n$16=_fun_NSString_stringWithUTF8String:(\"infer/tests/codetoanalyze/objc/frontend/assertions/NSAssert_example.m\":char *) [line 36]\n _fun___objc_retain(n$16:class NSString *) [line 36]\n *&__assert_file__:class NSString *=n$16 [line 36]\n " shape="box"] 98 -> 93 ; 98 -> 94 ; -97 [label="97: BinaryOperatorStmt: Assign \n n$14=*&SIL_temp_conditional___n$10:class NSString * [line 36]\n _fun___objc_retain(n$14:class NSString *) [line 36]\n n$15=*&__assert_file__:class NSString * [line 36]\n *&__assert_file__:class NSString *=n$14 [line 36]\n _fun___objc_release(n$15:class NSString *) [line 36]\n REMOVE_TEMPS(n$14,n$15); [line 36]\n NULLIFY(&SIL_temp_conditional___n$10); [line 36]\n NULLIFY(&__assert_file__); [line 36]\n " shape="box"] +97 [label="97: BinaryOperatorStmt: Assign \n n$14=*&SIL_temp_conditional___n$10:class NSString * [line 36]\n _fun___objc_retain(n$14:class NSString *) [line 36]\n n$15=*&__assert_file__:class NSString * [line 36]\n *&__assert_file__:class NSString *=n$14 [line 36]\n _fun___objc_release(n$15:class NSString *) [line 36]\n " shape="box"] 97 -> 91 ; -96 [label="96: ConditinalStmt Branch \n n$13=_fun_NSString_stringWithUTF8String:(\"\":char *) [line 36]\n *&SIL_temp_conditional___n$10:class NSString *=n$13 [line 36]\n REMOVE_TEMPS(n$13); [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="box"] +96 [label="96: ConditinalStmt Branch \n n$13=_fun_NSString_stringWithUTF8String:(\"\":char *) [line 36]\n *&SIL_temp_conditional___n$10:class NSString *=n$13 [line 36]\n " shape="box"] 96 -> 92 ; -95 [label="95: ConditinalStmt Branch \n n$12=*&__assert_file__:class NSString * [line 36]\n *&SIL_temp_conditional___n$10:class NSString *=n$12 [line 36]\n REMOVE_TEMPS(n$12); [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="box"] +95 [label="95: ConditinalStmt Branch \n n$12=*&__assert_file__:class NSString * [line 36]\n *&SIL_temp_conditional___n$10:class NSString *=n$12 [line 36]\n " shape="box"] 95 -> 92 ; -94 [label="94: Prune (false branch) \n n$11=*&__assert_file__:class NSString * [line 36]\n PRUNE((n$11 == 0), false); [line 36]\n REMOVE_TEMPS(n$11); [line 36]\n " shape="invhouse"] +94 [label="94: Prune (false branch) \n n$11=*&__assert_file__:class NSString * [line 36]\n PRUNE((n$11 == 0), false); [line 36]\n " shape="invhouse"] 94 -> 96 ; -93 [label="93: Prune (true branch) \n n$11=*&__assert_file__:class NSString * [line 36]\n PRUNE((n$11 != 0), true); [line 36]\n REMOVE_TEMPS(n$11); [line 36]\n " shape="invhouse"] +93 [label="93: Prune (true branch) \n n$11=*&__assert_file__:class NSString * [line 36]\n PRUNE((n$11 != 0), true); [line 36]\n " shape="invhouse"] 93 -> 95 ; @@ -58,31 +58,31 @@ digraph iCFG { 92 -> 97 ; -91 [label="91: Assertion failure \n _fun___infer_fail(\"ASSERTION_FAILURE\":void ) [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="box"] +91 [label="91: Assertion failure \n _fun___infer_fail(\"ASSERTION_FAILURE\":void ) [line 36]\n " shape="box"] 91 -> 78 ; -90 [label="90: Prune (false branch) \n n$4=*&SIL_temp_conditional___n$2:int [line 36]\n PRUNE((n$4 == 0), false); [line 36]\n REMOVE_TEMPS(n$4); [line 36]\n NULLIFY(&SIL_temp_conditional___n$2); [line 36]\n " shape="invhouse"] +90 [label="90: Prune (false branch) \n n$4=*&SIL_temp_conditional___n$2:int [line 36]\n PRUNE((n$4 == 0), false); [line 36]\n " shape="invhouse"] 90 -> 83 ; -89 [label="89: Prune (true branch) \n n$4=*&SIL_temp_conditional___n$2:int [line 36]\n PRUNE((n$4 != 0), true); [line 36]\n REMOVE_TEMPS(n$4); [line 36]\n NULLIFY(&SIL_temp_conditional___n$2); [line 36]\n " shape="invhouse"] +89 [label="89: Prune (true branch) \n n$4=*&SIL_temp_conditional___n$2:int [line 36]\n PRUNE((n$4 != 0), true); [line 36]\n " shape="invhouse"] 89 -> 105 ; -88 [label="88: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =1 [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="box"] +88 [label="88: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =1 [line 36]\n " shape="box"] 88 -> 84 ; -87 [label="87: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =0 [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="box"] +87 [label="87: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =0 [line 36]\n " shape="box"] 87 -> 84 ; -86 [label="86: Prune (false branch) \n n$3=*&target:class A * [line 36]\n PRUNE((n$3 == 0), false); [line 36]\n REMOVE_TEMPS(n$3); [line 36]\n " shape="invhouse"] +86 [label="86: Prune (false branch) \n n$3=*&target:class A * [line 36]\n PRUNE((n$3 == 0), false); [line 36]\n " shape="invhouse"] 86 -> 88 ; -85 [label="85: Prune (true branch) \n n$3=*&target:class A * [line 36]\n PRUNE((n$3 != 0), true); [line 36]\n REMOVE_TEMPS(n$3); [line 36]\n " shape="invhouse"] +85 [label="85: Prune (true branch) \n n$3=*&target:class A * [line 36]\n PRUNE((n$3 != 0), true); [line 36]\n " shape="invhouse"] 85 -> 87 ; @@ -100,7 +100,7 @@ digraph iCFG { 82 -> 79 ; -81 [label="81: Prune (true branch) \n PRUNE((0 != 0), true); [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="invhouse"] +81 [label="81: Prune (true branch) \n PRUNE((0 != 0), true); [line 36]\n " shape="invhouse"] 81 -> 80 ; @@ -109,7 +109,7 @@ digraph iCFG { 80 -> 85 ; 80 -> 86 ; -79 [label="79: Return Stmt \n n$0=*&target:class A * [line 37]\n n$1=_fun_A_x(n$0:class A *) [line 37]\n *&return:int =n$1 [line 37]\n REMOVE_TEMPS(n$0,n$1); [line 37]\n NULLIFY(&target); [line 37]\n APPLY_ABSTRACTION; [line 37]\n " shape="box"] +79 [label="79: Return Stmt \n n$0=*&target:class A * [line 37]\n n$1=_fun_A_x(n$0:class A *) [line 37]\n *&return:int =n$1 [line 37]\n " shape="box"] 79 -> 78 ; @@ -120,28 +120,28 @@ digraph iCFG { 77 -> 80 ; -76 [label="76: DeclStmt \n n$22=_fun_NSString_stringWithUTF8String:(\"\":char *) [line 31]\n _fun___objc_retain(n$22:class NSString *) [line 31]\n *&__assert_fn__:class NSString *=n$22 [line 31]\n REMOVE_TEMPS(n$22); [line 31]\n " shape="box"] +76 [label="76: DeclStmt \n n$22=_fun_NSString_stringWithUTF8String:(\"\":char *) [line 31]\n _fun___objc_retain(n$22:class NSString *) [line 31]\n *&__assert_fn__:class NSString *=n$22 [line 31]\n " shape="box"] 76 -> 71 ; 76 -> 72 ; -75 [label="75: BinaryOperatorStmt: Assign \n n$20=*&SIL_temp_conditional___n$16:class NSString * [line 31]\n _fun___objc_retain(n$20:class NSString *) [line 31]\n n$21=*&__assert_fn__:class NSString * [line 31]\n *&__assert_fn__:class NSString *=n$20 [line 31]\n _fun___objc_release(n$21:class NSString *) [line 31]\n REMOVE_TEMPS(n$20,n$21); [line 31]\n NULLIFY(&SIL_temp_conditional___n$16); [line 31]\n NULLIFY(&__assert_fn__); [line 31]\n " shape="box"] +75 [label="75: BinaryOperatorStmt: Assign \n n$20=*&SIL_temp_conditional___n$16:class NSString * [line 31]\n _fun___objc_retain(n$20:class NSString *) [line 31]\n n$21=*&__assert_fn__:class NSString * [line 31]\n *&__assert_fn__:class NSString *=n$20 [line 31]\n _fun___objc_release(n$21:class NSString *) [line 31]\n " shape="box"] 75 -> 69 ; -74 [label="74: ConditinalStmt Branch \n n$19=_fun_NSString_stringWithUTF8String:(\"\":char *) [line 31]\n *&SIL_temp_conditional___n$16:class NSString *=n$19 [line 31]\n REMOVE_TEMPS(n$19); [line 31]\n APPLY_ABSTRACTION; [line 31]\n " shape="box"] +74 [label="74: ConditinalStmt Branch \n n$19=_fun_NSString_stringWithUTF8String:(\"\":char *) [line 31]\n *&SIL_temp_conditional___n$16:class NSString *=n$19 [line 31]\n " shape="box"] 74 -> 70 ; -73 [label="73: ConditinalStmt Branch \n n$18=*&__assert_fn__:class NSString * [line 31]\n *&SIL_temp_conditional___n$16:class NSString *=n$18 [line 31]\n REMOVE_TEMPS(n$18); [line 31]\n APPLY_ABSTRACTION; [line 31]\n " shape="box"] +73 [label="73: ConditinalStmt Branch \n n$18=*&__assert_fn__:class NSString * [line 31]\n *&SIL_temp_conditional___n$16:class NSString *=n$18 [line 31]\n " shape="box"] 73 -> 70 ; -72 [label="72: Prune (false branch) \n n$17=*&__assert_fn__:class NSString * [line 31]\n PRUNE((n$17 == 0), false); [line 31]\n REMOVE_TEMPS(n$17); [line 31]\n " shape="invhouse"] +72 [label="72: Prune (false branch) \n n$17=*&__assert_fn__:class NSString * [line 31]\n PRUNE((n$17 == 0), false); [line 31]\n " shape="invhouse"] 72 -> 74 ; -71 [label="71: Prune (true branch) \n n$17=*&__assert_fn__:class NSString * [line 31]\n PRUNE((n$17 != 0), true); [line 31]\n REMOVE_TEMPS(n$17); [line 31]\n " shape="invhouse"] +71 [label="71: Prune (true branch) \n n$17=*&__assert_fn__:class NSString * [line 31]\n PRUNE((n$17 != 0), true); [line 31]\n " shape="invhouse"] 71 -> 73 ; @@ -149,28 +149,28 @@ digraph iCFG { 70 -> 75 ; -69 [label="69: DeclStmt \n n$15=_fun_NSString_stringWithUTF8String:(\"infer/tests/codetoanalyze/objc/frontend/assertions/NSAssert_example.m\":char *) [line 31]\n _fun___objc_retain(n$15:class NSString *) [line 31]\n *&__assert_file__:class NSString *=n$15 [line 31]\n REMOVE_TEMPS(n$15); [line 31]\n " shape="box"] +69 [label="69: DeclStmt \n n$15=_fun_NSString_stringWithUTF8String:(\"infer/tests/codetoanalyze/objc/frontend/assertions/NSAssert_example.m\":char *) [line 31]\n _fun___objc_retain(n$15:class NSString *) [line 31]\n *&__assert_file__:class NSString *=n$15 [line 31]\n " shape="box"] 69 -> 64 ; 69 -> 65 ; -68 [label="68: BinaryOperatorStmt: Assign \n n$13=*&SIL_temp_conditional___n$9:class NSString * [line 31]\n _fun___objc_retain(n$13:class NSString *) [line 31]\n n$14=*&__assert_file__:class NSString * [line 31]\n *&__assert_file__:class NSString *=n$13 [line 31]\n _fun___objc_release(n$14:class NSString *) [line 31]\n REMOVE_TEMPS(n$13,n$14); [line 31]\n NULLIFY(&SIL_temp_conditional___n$9); [line 31]\n NULLIFY(&__assert_file__); [line 31]\n " shape="box"] +68 [label="68: BinaryOperatorStmt: Assign \n n$13=*&SIL_temp_conditional___n$9:class NSString * [line 31]\n _fun___objc_retain(n$13:class NSString *) [line 31]\n n$14=*&__assert_file__:class NSString * [line 31]\n *&__assert_file__:class NSString *=n$13 [line 31]\n _fun___objc_release(n$14:class NSString *) [line 31]\n " shape="box"] 68 -> 62 ; -67 [label="67: ConditinalStmt Branch \n n$12=_fun_NSString_stringWithUTF8String:(\"\":char *) [line 31]\n *&SIL_temp_conditional___n$9:class NSString *=n$12 [line 31]\n REMOVE_TEMPS(n$12); [line 31]\n APPLY_ABSTRACTION; [line 31]\n " shape="box"] +67 [label="67: ConditinalStmt Branch \n n$12=_fun_NSString_stringWithUTF8String:(\"\":char *) [line 31]\n *&SIL_temp_conditional___n$9:class NSString *=n$12 [line 31]\n " shape="box"] 67 -> 63 ; -66 [label="66: ConditinalStmt Branch \n n$11=*&__assert_file__:class NSString * [line 31]\n *&SIL_temp_conditional___n$9:class NSString *=n$11 [line 31]\n REMOVE_TEMPS(n$11); [line 31]\n APPLY_ABSTRACTION; [line 31]\n " shape="box"] +66 [label="66: ConditinalStmt Branch \n n$11=*&__assert_file__:class NSString * [line 31]\n *&SIL_temp_conditional___n$9:class NSString *=n$11 [line 31]\n " shape="box"] 66 -> 63 ; -65 [label="65: Prune (false branch) \n n$10=*&__assert_file__:class NSString * [line 31]\n PRUNE((n$10 == 0), false); [line 31]\n REMOVE_TEMPS(n$10); [line 31]\n " shape="invhouse"] +65 [label="65: Prune (false branch) \n n$10=*&__assert_file__:class NSString * [line 31]\n PRUNE((n$10 == 0), false); [line 31]\n " shape="invhouse"] 65 -> 67 ; -64 [label="64: Prune (true branch) \n n$10=*&__assert_file__:class NSString * [line 31]\n PRUNE((n$10 != 0), true); [line 31]\n REMOVE_TEMPS(n$10); [line 31]\n " shape="invhouse"] +64 [label="64: Prune (true branch) \n n$10=*&__assert_file__:class NSString * [line 31]\n PRUNE((n$10 != 0), true); [line 31]\n " shape="invhouse"] 64 -> 66 ; @@ -178,31 +178,31 @@ digraph iCFG { 63 -> 68 ; -62 [label="62: Assertion failure \n _fun___infer_fail(\"ASSERTION_FAILURE\":void ) [line 31]\n APPLY_ABSTRACTION; [line 31]\n " shape="box"] +62 [label="62: Assertion failure \n _fun___infer_fail(\"ASSERTION_FAILURE\":void ) [line 31]\n " shape="box"] 62 -> 48 ; -61 [label="61: Prune (false branch) \n n$4=*&SIL_temp_conditional___n$2:int [line 31]\n PRUNE((n$4 == 0), false); [line 31]\n REMOVE_TEMPS(n$4); [line 31]\n NULLIFY(&SIL_temp_conditional___n$2); [line 31]\n " shape="invhouse"] +61 [label="61: Prune (false branch) \n n$4=*&SIL_temp_conditional___n$2:int [line 31]\n PRUNE((n$4 == 0), false); [line 31]\n " shape="invhouse"] 61 -> 53 ; -60 [label="60: Prune (true branch) \n n$4=*&SIL_temp_conditional___n$2:int [line 31]\n PRUNE((n$4 != 0), true); [line 31]\n REMOVE_TEMPS(n$4); [line 31]\n NULLIFY(&SIL_temp_conditional___n$2); [line 31]\n " shape="invhouse"] +60 [label="60: Prune (true branch) \n n$4=*&SIL_temp_conditional___n$2:int [line 31]\n PRUNE((n$4 != 0), true); [line 31]\n " shape="invhouse"] 60 -> 76 ; -59 [label="59: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =1 [line 31]\n APPLY_ABSTRACTION; [line 31]\n " shape="box"] +59 [label="59: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =1 [line 31]\n " shape="box"] 59 -> 54 ; -58 [label="58: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =0 [line 31]\n APPLY_ABSTRACTION; [line 31]\n " shape="box"] +58 [label="58: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =0 [line 31]\n " shape="box"] 58 -> 54 ; -57 [label="57: Prune (false branch) \n PRUNE(((n$3 != 0) == 0), false); [line 31]\n REMOVE_TEMPS(n$3); [line 31]\n " shape="invhouse"] +57 [label="57: Prune (false branch) \n PRUNE(((n$3 != 0) == 0), false); [line 31]\n " shape="invhouse"] 57 -> 59 ; -56 [label="56: Prune (true branch) \n PRUNE(((n$3 != 0) != 0), true); [line 31]\n REMOVE_TEMPS(n$3); [line 31]\n " shape="invhouse"] +56 [label="56: Prune (true branch) \n PRUNE(((n$3 != 0) != 0), true); [line 31]\n " shape="invhouse"] 56 -> 58 ; @@ -225,7 +225,7 @@ digraph iCFG { 52 -> 49 ; -51 [label="51: Prune (true branch) \n PRUNE((0 != 0), true); [line 31]\n APPLY_ABSTRACTION; [line 31]\n " shape="invhouse"] +51 [label="51: Prune (true branch) \n PRUNE((0 != 0), true); [line 31]\n " shape="invhouse"] 51 -> 50 ; @@ -233,7 +233,7 @@ digraph iCFG { 50 -> 55 ; -49 [label="49: Return Stmt \n n$0=*&target:class A * [line 32]\n n$1=_fun_A_x(n$0:class A *) [line 32]\n *&return:int =n$1 [line 32]\n REMOVE_TEMPS(n$0,n$1); [line 32]\n NULLIFY(&target); [line 32]\n APPLY_ABSTRACTION; [line 32]\n " shape="box"] +49 [label="49: Return Stmt \n n$0=*&target:class A * [line 32]\n n$1=_fun_A_x(n$0:class A *) [line 32]\n *&return:int =n$1 [line 32]\n " shape="box"] 49 -> 48 ; @@ -244,28 +244,28 @@ digraph iCFG { 47 -> 50 ; -46 [label="46: DeclStmt \n n$33=_fun_NSString_stringWithUTF8String:(\"infer/tests/codetoanalyze/objc/frontend/assertions/NSAssert_example.m\":char *) [line 24]\n _fun___objc_retain(n$33:class NSString *) [line 24]\n *&__assert_file__:class NSString *=n$33 [line 24]\n REMOVE_TEMPS(n$33); [line 24]\n " shape="box"] +46 [label="46: DeclStmt \n n$33=_fun_NSString_stringWithUTF8String:(\"infer/tests/codetoanalyze/objc/frontend/assertions/NSAssert_example.m\":char *) [line 24]\n _fun___objc_retain(n$33:class NSString *) [line 24]\n *&__assert_file__:class NSString *=n$33 [line 24]\n " shape="box"] 46 -> 41 ; 46 -> 42 ; -45 [label="45: BinaryOperatorStmt: Assign \n n$31=*&SIL_temp_conditional___n$27:class NSString * [line 24]\n _fun___objc_retain(n$31:class NSString *) [line 24]\n n$32=*&__assert_file__:class NSString * [line 24]\n *&__assert_file__:class NSString *=n$31 [line 24]\n _fun___objc_release(n$32:class NSString *) [line 24]\n REMOVE_TEMPS(n$31,n$32); [line 24]\n NULLIFY(&SIL_temp_conditional___n$27); [line 24]\n NULLIFY(&__assert_file__); [line 24]\n " shape="box"] +45 [label="45: BinaryOperatorStmt: Assign \n n$31=*&SIL_temp_conditional___n$27:class NSString * [line 24]\n _fun___objc_retain(n$31:class NSString *) [line 24]\n n$32=*&__assert_file__:class NSString * [line 24]\n *&__assert_file__:class NSString *=n$31 [line 24]\n _fun___objc_release(n$32:class NSString *) [line 24]\n " shape="box"] 45 -> 39 ; -44 [label="44: ConditinalStmt Branch \n n$30=_fun_NSString_stringWithUTF8String:(\"\":char *) [line 24]\n *&SIL_temp_conditional___n$27:class NSString *=n$30 [line 24]\n REMOVE_TEMPS(n$30); [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +44 [label="44: ConditinalStmt Branch \n n$30=_fun_NSString_stringWithUTF8String:(\"\":char *) [line 24]\n *&SIL_temp_conditional___n$27:class NSString *=n$30 [line 24]\n " shape="box"] 44 -> 40 ; -43 [label="43: ConditinalStmt Branch \n n$29=*&__assert_file__:class NSString * [line 24]\n *&SIL_temp_conditional___n$27:class NSString *=n$29 [line 24]\n REMOVE_TEMPS(n$29); [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +43 [label="43: ConditinalStmt Branch \n n$29=*&__assert_file__:class NSString * [line 24]\n *&SIL_temp_conditional___n$27:class NSString *=n$29 [line 24]\n " shape="box"] 43 -> 40 ; -42 [label="42: Prune (false branch) \n n$28=*&__assert_file__:class NSString * [line 24]\n PRUNE((n$28 == 0), false); [line 24]\n REMOVE_TEMPS(n$28); [line 24]\n " shape="invhouse"] +42 [label="42: Prune (false branch) \n n$28=*&__assert_file__:class NSString * [line 24]\n PRUNE((n$28 == 0), false); [line 24]\n " shape="invhouse"] 42 -> 44 ; -41 [label="41: Prune (true branch) \n n$28=*&__assert_file__:class NSString * [line 24]\n PRUNE((n$28 != 0), true); [line 24]\n REMOVE_TEMPS(n$28); [line 24]\n " shape="invhouse"] +41 [label="41: Prune (true branch) \n n$28=*&__assert_file__:class NSString * [line 24]\n PRUNE((n$28 != 0), true); [line 24]\n " shape="invhouse"] 41 -> 43 ; @@ -273,31 +273,31 @@ digraph iCFG { 40 -> 45 ; -39 [label="39: Assertion failure \n _fun___infer_fail(\"ASSERTION_FAILURE\":void ) [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +39 [label="39: Assertion failure \n _fun___infer_fail(\"ASSERTION_FAILURE\":void ) [line 24]\n " shape="box"] 39 -> 25 ; -38 [label="38: Prune (false branch) \n n$21=*&SIL_temp_conditional___n$19:int [line 24]\n PRUNE((n$21 == 0), false); [line 24]\n REMOVE_TEMPS(n$21); [line 24]\n NULLIFY(&SIL_temp_conditional___n$19); [line 24]\n " shape="invhouse"] +38 [label="38: Prune (false branch) \n n$21=*&SIL_temp_conditional___n$19:int [line 24]\n PRUNE((n$21 == 0), false); [line 24]\n " shape="invhouse"] 38 -> 30 ; -37 [label="37: Prune (true branch) \n n$21=*&SIL_temp_conditional___n$19:int [line 24]\n PRUNE((n$21 != 0), true); [line 24]\n REMOVE_TEMPS(n$21); [line 24]\n NULLIFY(&SIL_temp_conditional___n$19); [line 24]\n " shape="invhouse"] +37 [label="37: Prune (true branch) \n n$21=*&SIL_temp_conditional___n$19:int [line 24]\n PRUNE((n$21 != 0), true); [line 24]\n " shape="invhouse"] 37 -> 46 ; -36 [label="36: ConditinalStmt Branch \n *&SIL_temp_conditional___n$19:int =1 [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +36 [label="36: ConditinalStmt Branch \n *&SIL_temp_conditional___n$19:int =1 [line 24]\n " shape="box"] 36 -> 31 ; -35 [label="35: ConditinalStmt Branch \n *&SIL_temp_conditional___n$19:int =0 [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +35 [label="35: ConditinalStmt Branch \n *&SIL_temp_conditional___n$19:int =0 [line 24]\n " shape="box"] 35 -> 31 ; -34 [label="34: Prune (false branch) \n PRUNE(((n$20 != 0) == 0), false); [line 24]\n REMOVE_TEMPS(n$20); [line 24]\n " shape="invhouse"] +34 [label="34: Prune (false branch) \n PRUNE(((n$20 != 0) == 0), false); [line 24]\n " shape="invhouse"] 34 -> 36 ; -33 [label="33: Prune (true branch) \n PRUNE(((n$20 != 0) != 0), true); [line 24]\n REMOVE_TEMPS(n$20); [line 24]\n " shape="invhouse"] +33 [label="33: Prune (true branch) \n PRUNE(((n$20 != 0) != 0), true); [line 24]\n " shape="invhouse"] 33 -> 35 ; @@ -320,7 +320,7 @@ digraph iCFG { 29 -> 26 ; -28 [label="28: Prune (true branch) \n PRUNE((0 != 0), true); [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="invhouse"] +28 [label="28: Prune (true branch) \n PRUNE((0 != 0), true); [line 24]\n " shape="invhouse"] 28 -> 27 ; @@ -328,7 +328,7 @@ digraph iCFG { 27 -> 32 ; -26 [label="26: Return Stmt \n n$17=*&a:class A * [line 25]\n n$18=_fun_A_x(n$17:class A *) [line 25]\n *&return:int =n$18 [line 25]\n REMOVE_TEMPS(n$17,n$18); [line 25]\n NULLIFY(&a); [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="box"] +26 [label="26: Return Stmt \n n$17=*&a:class A * [line 25]\n n$18=_fun_A_x(n$17:class A *) [line 25]\n *&return:int =n$18 [line 25]\n " shape="box"] 26 -> 25 ; @@ -339,28 +339,28 @@ digraph iCFG { 24 -> 27 ; -23 [label="23: DeclStmt \n n$16=_fun_NSString_stringWithUTF8String:(\"infer/tests/codetoanalyze/objc/frontend/assertions/NSAssert_example.m\":char *) [line 19]\n _fun___objc_retain(n$16:class NSString *) [line 19]\n *&__assert_file__:class NSString *=n$16 [line 19]\n REMOVE_TEMPS(n$16); [line 19]\n " shape="box"] +23 [label="23: DeclStmt \n n$16=_fun_NSString_stringWithUTF8String:(\"infer/tests/codetoanalyze/objc/frontend/assertions/NSAssert_example.m\":char *) [line 19]\n _fun___objc_retain(n$16:class NSString *) [line 19]\n *&__assert_file__:class NSString *=n$16 [line 19]\n " shape="box"] 23 -> 18 ; 23 -> 19 ; -22 [label="22: BinaryOperatorStmt: Assign \n n$14=*&SIL_temp_conditional___n$10:class NSString * [line 19]\n _fun___objc_retain(n$14:class NSString *) [line 19]\n n$15=*&__assert_file__:class NSString * [line 19]\n *&__assert_file__:class NSString *=n$14 [line 19]\n _fun___objc_release(n$15:class NSString *) [line 19]\n REMOVE_TEMPS(n$14,n$15); [line 19]\n NULLIFY(&SIL_temp_conditional___n$10); [line 19]\n NULLIFY(&__assert_file__); [line 19]\n " shape="box"] +22 [label="22: BinaryOperatorStmt: Assign \n n$14=*&SIL_temp_conditional___n$10:class NSString * [line 19]\n _fun___objc_retain(n$14:class NSString *) [line 19]\n n$15=*&__assert_file__:class NSString * [line 19]\n *&__assert_file__:class NSString *=n$14 [line 19]\n _fun___objc_release(n$15:class NSString *) [line 19]\n " shape="box"] 22 -> 16 ; -21 [label="21: ConditinalStmt Branch \n n$13=_fun_NSString_stringWithUTF8String:(\"\":char *) [line 19]\n *&SIL_temp_conditional___n$10:class NSString *=n$13 [line 19]\n REMOVE_TEMPS(n$13); [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +21 [label="21: ConditinalStmt Branch \n n$13=_fun_NSString_stringWithUTF8String:(\"\":char *) [line 19]\n *&SIL_temp_conditional___n$10:class NSString *=n$13 [line 19]\n " shape="box"] 21 -> 17 ; -20 [label="20: ConditinalStmt Branch \n n$12=*&__assert_file__:class NSString * [line 19]\n *&SIL_temp_conditional___n$10:class NSString *=n$12 [line 19]\n REMOVE_TEMPS(n$12); [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +20 [label="20: ConditinalStmt Branch \n n$12=*&__assert_file__:class NSString * [line 19]\n *&SIL_temp_conditional___n$10:class NSString *=n$12 [line 19]\n " shape="box"] 20 -> 17 ; -19 [label="19: Prune (false branch) \n n$11=*&__assert_file__:class NSString * [line 19]\n PRUNE((n$11 == 0), false); [line 19]\n REMOVE_TEMPS(n$11); [line 19]\n " shape="invhouse"] +19 [label="19: Prune (false branch) \n n$11=*&__assert_file__:class NSString * [line 19]\n PRUNE((n$11 == 0), false); [line 19]\n " shape="invhouse"] 19 -> 21 ; -18 [label="18: Prune (true branch) \n n$11=*&__assert_file__:class NSString * [line 19]\n PRUNE((n$11 != 0), true); [line 19]\n REMOVE_TEMPS(n$11); [line 19]\n " shape="invhouse"] +18 [label="18: Prune (true branch) \n n$11=*&__assert_file__:class NSString * [line 19]\n PRUNE((n$11 != 0), true); [line 19]\n " shape="invhouse"] 18 -> 20 ; @@ -368,31 +368,31 @@ digraph iCFG { 17 -> 22 ; -16 [label="16: Assertion failure \n _fun___infer_fail(\"ASSERTION_FAILURE\":void ) [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +16 [label="16: Assertion failure \n _fun___infer_fail(\"ASSERTION_FAILURE\":void ) [line 19]\n " shape="box"] 16 -> 2 ; -15 [label="15: Prune (false branch) \n n$4=*&SIL_temp_conditional___n$2:int [line 19]\n PRUNE((n$4 == 0), false); [line 19]\n REMOVE_TEMPS(n$4); [line 19]\n NULLIFY(&SIL_temp_conditional___n$2); [line 19]\n " shape="invhouse"] +15 [label="15: Prune (false branch) \n n$4=*&SIL_temp_conditional___n$2:int [line 19]\n PRUNE((n$4 == 0), false); [line 19]\n " shape="invhouse"] 15 -> 7 ; -14 [label="14: Prune (true branch) \n n$4=*&SIL_temp_conditional___n$2:int [line 19]\n PRUNE((n$4 != 0), true); [line 19]\n REMOVE_TEMPS(n$4); [line 19]\n NULLIFY(&SIL_temp_conditional___n$2); [line 19]\n " shape="invhouse"] +14 [label="14: Prune (true branch) \n n$4=*&SIL_temp_conditional___n$2:int [line 19]\n PRUNE((n$4 != 0), true); [line 19]\n " shape="invhouse"] 14 -> 23 ; -13 [label="13: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =1 [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +13 [label="13: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =1 [line 19]\n " shape="box"] 13 -> 8 ; -12 [label="12: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =0 [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +12 [label="12: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =0 [line 19]\n " shape="box"] 12 -> 8 ; -11 [label="11: Prune (false branch) \n PRUNE(((n$3 != 0) == 0), false); [line 19]\n REMOVE_TEMPS(n$3); [line 19]\n " shape="invhouse"] +11 [label="11: Prune (false branch) \n PRUNE(((n$3 != 0) == 0), false); [line 19]\n " shape="invhouse"] 11 -> 13 ; -10 [label="10: Prune (true branch) \n PRUNE(((n$3 != 0) != 0), true); [line 19]\n REMOVE_TEMPS(n$3); [line 19]\n " shape="invhouse"] +10 [label="10: Prune (true branch) \n PRUNE(((n$3 != 0) != 0), true); [line 19]\n " shape="invhouse"] 10 -> 12 ; @@ -415,7 +415,7 @@ digraph iCFG { 6 -> 3 ; -5 [label="5: Prune (true branch) \n PRUNE((0 != 0), true); [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="invhouse"] +5 [label="5: Prune (true branch) \n PRUNE((0 != 0), true); [line 19]\n " shape="invhouse"] 5 -> 4 ; @@ -423,7 +423,7 @@ digraph iCFG { 4 -> 9 ; -3 [label="3: Return Stmt \n n$0=*&target:class A * [line 20]\n n$1=_fun_A_x(n$0:class A *) [line 20]\n *&return:int =n$1 [line 20]\n REMOVE_TEMPS(n$0,n$1); [line 20]\n NULLIFY(&target); [line 20]\n APPLY_ABSTRACTION; [line 20]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&target:class A * [line 20]\n n$1=_fun_A_x(n$0:class A *) [line 20]\n *&return:int =n$1 [line 20]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/block/BlockVar.dot b/infer/tests/codetoanalyze/objc/frontend/block/BlockVar.dot index c5b01dc5c..c25ba1977 100644 --- a/infer/tests/codetoanalyze/objc/frontend/block/BlockVar.dot +++ b/infer/tests/codetoanalyze/objc/frontend/block/BlockVar.dot @@ -8,11 +8,11 @@ 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$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 [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 " shape="box"] 52 -> 48 ; -51 [label="51: Return Stmt \n n$35=*&x:int * [line 60]\n n$36=*n$35:int [line 60]\n *&return:int =n$36 [line 60]\n REMOVE_TEMPS(n$35,n$36); [line 60]\n NULLIFY(&x); [line 60]\n APPLY_ABSTRACTION; [line 60]\n " shape="box"] +51 [label="51: Return Stmt \n n$35=*&x:int * [line 60]\n n$36=*n$35:int [line 60]\n *&return:int =n$36 [line 60]\n " shape="box"] 51 -> 50 ; @@ -23,15 +23,15 @@ digraph iCFG { 49 -> 51 ; -48 [label="48: BinaryOperatorStmt: Assign \n *&x:int *=0 [line 62]\n NULLIFY(&x); [line 62]\n " shape="box"] +48 [label="48: BinaryOperatorStmt: Assign \n *&x:int *=0 [line 62]\n " shape="box"] 48 -> 47 ; -47 [label="47: Return Stmt \n n$32=*&my_block:_fn_ (*) [line 63]\n n$33=n$32() [line 63]\n *&return:int =n$33 [line 63]\n REMOVE_TEMPS(n$32,n$33); [line 63]\n NULLIFY(&my_block); [line 63]\n APPLY_ABSTRACTION; [line 63]\n " shape="box"] +47 [label="47: Return Stmt \n n$32=*&my_block:_fn_ (*) [line 63]\n n$33=n$32() [line 63]\n *&return:int =n$33 [line 63]\n " shape="box"] 47 -> 46 ; -46 [label="46: Exit BlockVar_capturedNoNullDeref \n NULLIFY(&i); [line 64]\n " color=yellow style=filled] +46 [label="46: Exit BlockVar_capturedNoNullDeref \n " color=yellow style=filled] 45 [label="45: Start BlockVar_capturedNoNullDeref\nFormals: self:class BlockVar *\nLocals: my_block:_fn_ (*) x:int * i:int \n DECLARE_LOCALS(&return,&my_block,&x,&i); [line 56]\n " color=yellow style=filled] @@ -42,11 +42,11 @@ 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$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 [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 " shape="box"] 43 -> 39 ; -42 [label="42: Return Stmt \n n$28=*&x:int * [line 51]\n n$29=*n$28:int [line 51]\n *&return:int =n$29 [line 51]\n REMOVE_TEMPS(n$28,n$29); [line 51]\n NULLIFY(&x); [line 51]\n APPLY_ABSTRACTION; [line 51]\n " shape="box"] +42 [label="42: Return Stmt \n n$28=*&x:int * [line 51]\n n$29=*n$28:int [line 51]\n *&return:int =n$29 [line 51]\n " shape="box"] 42 -> 41 ; @@ -57,7 +57,7 @@ digraph iCFG { 40 -> 42 ; -39 [label="39: Return Stmt \n n$25=*&my_block:_fn_ (*) [line 53]\n n$26=n$25() [line 53]\n *&return:int =n$26 [line 53]\n REMOVE_TEMPS(n$25,n$26); [line 53]\n NULLIFY(&my_block); [line 53]\n APPLY_ABSTRACTION; [line 53]\n " shape="box"] +39 [label="39: Return Stmt \n n$25=*&my_block:_fn_ (*) [line 53]\n n$26=n$25() [line 53]\n *&return:int =n$26 [line 53]\n " shape="box"] 39 -> 38 ; @@ -76,11 +76,11 @@ 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$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 [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 " shape="box"] 34 -> 30 ; -33 [label="33: Return Stmt \n n$22=*&x:int * [line 43]\n *&return:int *=n$22 [line 43]\n REMOVE_TEMPS(n$22); [line 43]\n NULLIFY(&x); [line 43]\n APPLY_ABSTRACTION; [line 43]\n " shape="box"] +33 [label="33: Return Stmt \n n$22=*&x:int * [line 43]\n *&return:int *=n$22 [line 43]\n " shape="box"] 33 -> 32 ; @@ -91,11 +91,11 @@ digraph iCFG { 31 -> 33 ; -30 [label="30: Return Stmt \n n$18=*&my_block:_fn_ (*) [line 45]\n n$19=n$18() [line 45]\n n$20=*n$19:int [line 45]\n *&return:int =n$20 [line 45]\n REMOVE_TEMPS(n$18,n$19,n$20); [line 45]\n NULLIFY(&my_block); [line 45]\n APPLY_ABSTRACTION; [line 45]\n " shape="box"] +30 [label="30: Return Stmt \n n$18=*&my_block:_fn_ (*) [line 45]\n n$19=n$18() [line 45]\n n$20=*n$19:int [line 45]\n *&return:int =n$20 [line 45]\n " shape="box"] 30 -> 29 ; -29 [label="29: Exit BlockVar_blockPostOk \n NULLIFY(&i); [line 46]\n " color=yellow style=filled] +29 [label="29: Exit BlockVar_blockPostOk \n " color=yellow style=filled] 28 [label="28: Start BlockVar_blockPostOk\nFormals: self:class BlockVar *\nLocals: my_block:_fn_ (*) x:int * i:int \n DECLARE_LOCALS(&return,&my_block,&x,&i); [line 39]\n " color=yellow style=filled] @@ -106,11 +106,11 @@ 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$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 [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 " shape="box"] 26 -> 22 ; -25 [label="25: Return Stmt \n n$15=*&x:int * [line 34]\n *&return:int *=n$15 [line 34]\n REMOVE_TEMPS(n$15); [line 34]\n NULLIFY(&x); [line 34]\n APPLY_ABSTRACTION; [line 34]\n " shape="box"] +25 [label="25: Return Stmt \n n$15=*&x:int * [line 34]\n *&return:int *=n$15 [line 34]\n " shape="box"] 25 -> 24 ; @@ -121,7 +121,7 @@ digraph iCFG { 23 -> 25 ; -22 [label="22: Return Stmt \n n$11=*&my_block:_fn_ (*) [line 36]\n n$12=n$11() [line 36]\n n$13=*n$12:int [line 36]\n *&return:int =n$13 [line 36]\n REMOVE_TEMPS(n$11,n$12,n$13); [line 36]\n NULLIFY(&my_block); [line 36]\n APPLY_ABSTRACTION; [line 36]\n " shape="box"] +22 [label="22: Return Stmt \n n$11=*&my_block:_fn_ (*) [line 36]\n n$12=n$11() [line 36]\n n$13=*n$12:int [line 36]\n *&return:int =n$13 [line 36]\n " shape="box"] 22 -> 21 ; @@ -132,15 +132,15 @@ digraph iCFG { 20 -> 27 ; -19 [label="19: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_BlockVar_navigateToURLInBackground______1); [line 19]\n n$10=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_BlockVar_navigateToURLInBackground______1 ):unsigned long ) [line 19]\n *&__objc_anonymous_block_BlockVar_navigateToURLInBackground______1:class __objc_anonymous_block_BlockVar_navigateToURLInBackground______1 =n$10 [line 19]\n *&addBlock:_fn_ (*)=(_fun___objc_anonymous_block_BlockVar_navigateToURLInBackground______1) [line 19]\n REMOVE_TEMPS(n$10); [line 19]\n NULLIFY(&__objc_anonymous_block_BlockVar_navigateToURLInBackground______1); [line 19]\n " shape="box"] +19 [label="19: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_BlockVar_navigateToURLInBackground______1); [line 19]\n n$10=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_BlockVar_navigateToURLInBackground______1 ):unsigned long ) [line 19]\n *&__objc_anonymous_block_BlockVar_navigateToURLInBackground______1:class __objc_anonymous_block_BlockVar_navigateToURLInBackground______1 =n$10 [line 19]\n *&addBlock:_fn_ (*)=(_fun___objc_anonymous_block_BlockVar_navigateToURLInBackground______1) [line 19]\n " shape="box"] 19 -> 14 ; -18 [label="18: DeclStmt \n n$9=_fun_BlockVar_test() [line 20]\n *&res:int =n$9 [line 20]\n REMOVE_TEMPS(n$9); [line 20]\n " shape="box"] +18 [label="18: DeclStmt \n n$9=_fun_BlockVar_test() [line 20]\n *&res:int =n$9 [line 20]\n " shape="box"] 18 -> 17 ; -17 [label="17: Return Stmt \n n$6=*&a:int [line 21]\n n$7=*&b:int [line 21]\n n$8=*&res:int [line 21]\n *&return:int =((n$6 + n$7) + n$8) [line 21]\n REMOVE_TEMPS(n$6,n$7,n$8); [line 21]\n NULLIFY(&a); [line 21]\n NULLIFY(&b); [line 21]\n NULLIFY(&res); [line 21]\n APPLY_ABSTRACTION; [line 21]\n " shape="box"] +17 [label="17: Return Stmt \n n$6=*&a:int [line 21]\n n$7=*&b:int [line 21]\n n$8=*&res:int [line 21]\n *&return:int =((n$6 + n$7) + n$8) [line 21]\n " shape="box"] 17 -> 16 ; @@ -151,7 +151,7 @@ digraph iCFG { 15 -> 18 ; -14 [label="14: DeclStmt \n n$4=*&addBlock:_fn_ (*) [line 23]\n n$5=n$4(1:int ,2:int ) [line 23]\n *&x:int =n$5 [line 23]\n REMOVE_TEMPS(n$4,n$5); [line 23]\n NULLIFY(&addBlock); [line 23]\n " shape="box"] +14 [label="14: DeclStmt \n n$4=*&addBlock:_fn_ (*) [line 23]\n n$5=n$4(1:int ,2:int ) [line 23]\n *&x:int =n$5 [line 23]\n " shape="box"] 14 -> 13 ; @@ -159,19 +159,19 @@ digraph iCFG { 13 -> 8 ; -12 [label="12: Return Stmt \n n$3=*&x:int [line 28]\n *&return:int =n$3 [line 28]\n REMOVE_TEMPS(n$3); [line 28]\n NULLIFY(&x); [line 28]\n APPLY_ABSTRACTION; [line 28]\n " shape="box"] +12 [label="12: Return Stmt \n n$3=*&x:int [line 28]\n *&return:int =n$3 [line 28]\n " shape="box"] 12 -> 5 ; -11 [label="11: Return Stmt \n n$1=*&p:int * [line 26]\n n$2=*n$1:int [line 26]\n *&return:int =n$2 [line 26]\n REMOVE_TEMPS(n$1,n$2); [line 26]\n NULLIFY(&p); [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"] +11 [label="11: Return Stmt \n n$1=*&p:int * [line 26]\n n$2=*n$1:int [line 26]\n *&return:int =n$2 [line 26]\n " shape="box"] 11 -> 5 ; -10 [label="10: Prune (false branch) \n PRUNE(((n$0 == 8) == 0), false); [line 25]\n REMOVE_TEMPS(n$0); [line 25]\n NULLIFY(&p); [line 25]\n " shape="invhouse"] +10 [label="10: Prune (false branch) \n PRUNE(((n$0 == 8) == 0), false); [line 25]\n " shape="invhouse"] 10 -> 12 ; -9 [label="9: Prune (true branch) \n PRUNE(((n$0 == 8) != 0), true); [line 25]\n REMOVE_TEMPS(n$0); [line 25]\n NULLIFY(&x); [line 25]\n " shape="invhouse"] +9 [label="9: Prune (true branch) \n PRUNE(((n$0 == 8) != 0), true); [line 25]\n " shape="invhouse"] 9 -> 11 ; @@ -180,7 +180,7 @@ digraph iCFG { 8 -> 9 ; 8 -> 10 ; -7 [label="7: between_join_and_exit \n APPLY_ABSTRACTION; [line 25]\n " shape="box"] +7 [label="7: between_join_and_exit \n " shape="box"] 7 -> 5 ; @@ -195,7 +195,7 @@ digraph iCFG { 4 -> 19 ; -3 [label="3: Return Stmt \n *&return:int =5 [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =5 [line 15]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/block/block-it.dot b/infer/tests/codetoanalyze/objc/frontend/block/block-it.dot index 390693fa7..d4cb85d37 100644 --- a/infer/tests/codetoanalyze/objc/frontend/block/block-it.dot +++ b/infer/tests/codetoanalyze/objc/frontend/block/block-it.dot @@ -1,30 +1,30 @@ /* @generated */ digraph iCFG { -54 [label="54: DeclStmt \n n$44=_fun___objc_alloc_no_fail(sizeof(class NSArray ):unsigned long ) [line 34]\n n$45=_fun_NSArray_init(n$44:class NSArray *) virtual [line 34]\n *&a:class NSArray *=n$45 [line 34]\n REMOVE_TEMPS(n$44,n$45); [line 34]\n " shape="box"] +54 [label="54: DeclStmt \n n$44=_fun___objc_alloc_no_fail(sizeof(class NSArray ):unsigned long ) [line 34]\n n$45=_fun_NSArray_init(n$44:class NSArray *) virtual [line 34]\n *&a:class NSArray *=n$45 [line 34]\n " shape="box"] 54 -> 53 ; -53 [label="53: DeclStmt \n n$43=*&a:class NSArray * [line 36]\n *&objects:class NSArray *=n$43 [line 36]\n REMOVE_TEMPS(n$43); [line 36]\n NULLIFY(&a); [line 36]\n " shape="box"] +53 [label="53: DeclStmt \n n$43=*&a:class NSArray * [line 36]\n *&objects:class NSArray *=n$43 [line 36]\n " shape="box"] 53 -> 52 ; -52 [label="52: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_MyBlock_array_trans______2); [line 40]\n n$42=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_MyBlock_array_trans______2 ):unsigned long ) [line 40]\n *&__objc_anonymous_block_MyBlock_array_trans______2:class __objc_anonymous_block_MyBlock_array_trans______2 =n$42 [line 40]\n *&enumerateObjectsUsingBlock:_fn_ (*)=(_fun___objc_anonymous_block_MyBlock_array_trans______2) [line 39]\n REMOVE_TEMPS(n$42); [line 39]\n NULLIFY(&__objc_anonymous_block_MyBlock_array_trans______2); [line 39]\n " shape="box"] +52 [label="52: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_MyBlock_array_trans______2); [line 40]\n n$42=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_MyBlock_array_trans______2 ):unsigned long ) [line 40]\n *&__objc_anonymous_block_MyBlock_array_trans______2:class __objc_anonymous_block_MyBlock_array_trans______2 =n$42 [line 40]\n *&enumerateObjectsUsingBlock:_fn_ (*)=(_fun___objc_anonymous_block_MyBlock_array_trans______2) [line 39]\n " shape="box"] 52 -> 44 ; -51 [label="51: BinaryOperatorStmt: Assign \n n$41=*&stop:_Bool * [line 45]\n *n$41:_Bool =1 [line 45]\n REMOVE_TEMPS(n$41); [line 45]\n NULLIFY(&stop); [line 45]\n APPLY_ABSTRACTION; [line 45]\n " shape="box"] +51 [label="51: BinaryOperatorStmt: Assign \n n$41=*&stop:_Bool * [line 45]\n *n$41:_Bool =1 [line 45]\n " shape="box"] 51 -> 47 ; -50 [label="50: Prune (false branch) \n n$40=*&ShouldStop:int [line 44]\n PRUNE((n$40 == 0), false); [line 44]\n REMOVE_TEMPS(n$40); [line 44]\n NULLIFY(&ShouldStop); [line 44]\n APPLY_ABSTRACTION; [line 44]\n " shape="invhouse"] +50 [label="50: Prune (false branch) \n n$40=*&ShouldStop:int [line 44]\n PRUNE((n$40 == 0), false); [line 44]\n " shape="invhouse"] 50 -> 47 ; -49 [label="49: Prune (true branch) \n n$40=*&ShouldStop:int [line 44]\n PRUNE((n$40 != 0), true); [line 44]\n REMOVE_TEMPS(n$40); [line 44]\n NULLIFY(&ShouldStop); [line 44]\n " shape="invhouse"] +49 [label="49: Prune (true branch) \n n$40=*&ShouldStop:int [line 44]\n PRUNE((n$40 != 0), true); [line 44]\n " shape="invhouse"] 49 -> 51 ; -48 [label="48: between_join_and_exit \n APPLY_ABSTRACTION; [line 44]\n " shape="box"] +48 [label="48: between_join_and_exit \n " shape="box"] 48 -> 46 ; @@ -40,31 +40,31 @@ digraph iCFG { 45 -> 49 ; 45 -> 50 ; -44 [label="44: DeclStmt \n n$39=_fun_malloc_no_fail(sizeof(_Bool ):_Bool ) [line 48]\n *&stop:_Bool *=n$39 [line 48]\n REMOVE_TEMPS(n$39); [line 48]\n " shape="box"] +44 [label="44: DeclStmt \n n$39=_fun_malloc_no_fail(sizeof(_Bool ):_Bool ) [line 48]\n *&stop:_Bool *=n$39 [line 48]\n " shape="box"] 44 -> 43 ; -43 [label="43: BinaryOperatorStmt: Assign \n n$38=*&stop:_Bool * [line 49]\n *n$38:_Bool =0 [line 49]\n REMOVE_TEMPS(n$38); [line 49]\n " shape="box"] +43 [label="43: BinaryOperatorStmt: Assign \n n$38=*&stop:_Bool * [line 49]\n *n$38:_Bool =0 [line 49]\n " shape="box"] 43 -> 32 ; -42 [label="42: DeclStmt \n n$35=*&objects:class NSArray * [line 53]\n n$36=*&idx:unsigned long [line 53]\n n$37=_fun_NSArray_objectAtIndexedSubscript:(n$35:class NSArray *,n$36:unsigned long ) virtual [line 53]\n *&object:struct objc_object *=n$37 [line 53]\n REMOVE_TEMPS(n$35,n$36,n$37); [line 53]\n " shape="box"] +42 [label="42: DeclStmt \n n$35=*&objects:class NSArray * [line 53]\n n$36=*&idx:unsigned long [line 53]\n n$37=_fun_NSArray_objectAtIndexedSubscript:(n$35:class NSArray *,n$36:unsigned long ) virtual [line 53]\n *&object:struct objc_object *=n$37 [line 53]\n " shape="box"] 42 -> 41 ; -41 [label="41: Call n$31 \n n$31=*&enumerateObjectsUsingBlock:_fn_ (*) [line 54]\n n$32=*&object:struct objc_object * [line 54]\n n$33=*&idx:unsigned long [line 54]\n n$34=*&stop:_Bool * [line 54]\n n$31(n$32:struct objc_object *,n$33:unsigned long ,n$34:_Bool *) [line 54]\n REMOVE_TEMPS(n$31,n$32,n$33,n$34); [line 54]\n NULLIFY(&object); [line 54]\n " shape="box"] +41 [label="41: Call n$31 \n n$31=*&enumerateObjectsUsingBlock:_fn_ (*) [line 54]\n n$32=*&object:struct objc_object * [line 54]\n n$33=*&idx:unsigned long [line 54]\n n$34=*&stop:_Bool * [line 54]\n n$31(n$32:struct objc_object *,n$33:unsigned long ,n$34:_Bool *) [line 54]\n " shape="box"] 41 -> 38 ; -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 [label="40: Prune (false branch) \n PRUNE(((n$30 == 1) == 0), false); [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$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 " 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 REMOVE_TEMPS(n$29); [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 " shape="box"] 38 -> 39 ; @@ -73,24 +73,24 @@ 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$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 " 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$28); [line 51]\n " shape="invhouse"] +35 [label="35: Prune (true branch) \n PRUNE(((n$26 < n$28) != 0), true); [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 REMOVE_TEMPS(n$27); [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 " shape="box"] 34 -> 35 ; 34 -> 36 ; -33 [label="33: UnaryOperator \n n$25=*&idx:unsigned long [line 51]\n *&idx:unsigned long =(n$25 + 1) [line 51]\n REMOVE_TEMPS(n$25); [line 51]\n APPLY_ABSTRACTION; [line 51]\n " shape="box"] +33 [label="33: UnaryOperator \n n$25=*&idx:unsigned long [line 51]\n *&idx:unsigned long =(n$25 + 1) [line 51]\n " shape="box"] 33 -> 31 ; -32 [label="32: DeclStmt \n *&idx:unsigned long =0 [line 51]\n APPLY_ABSTRACTION; [line 51]\n " shape="box"] +32 [label="32: DeclStmt \n *&idx:unsigned long =0 [line 51]\n " shape="box"] 32 -> 31 ; @@ -98,7 +98,7 @@ digraph iCFG { 31 -> 34 ; -30 [label="30: Call _fun_free \n n$24=*&stop:_Bool * [line 58]\n _fun_free(n$24:void *) [line 58]\n REMOVE_TEMPS(n$24); [line 58]\n NULLIFY(&stop); [line 58]\n APPLY_ABSTRACTION; [line 58]\n " shape="box"] +30 [label="30: Call _fun_free \n n$24=*&stop:_Bool * [line 58]\n _fun_free(n$24:void *) [line 58]\n " shape="box"] 30 -> 29 ; @@ -109,31 +109,31 @@ digraph iCFG { 28 -> 54 ; -27 [label="27: DeclStmt \n n$22=_fun___objc_alloc_no_fail(sizeof(class NSArray ):unsigned long ) [line 20]\n n$23=_fun_NSArray_init(n$22:class NSArray *) virtual [line 20]\n *&a:class NSArray *=n$23 [line 20]\n REMOVE_TEMPS(n$22,n$23); [line 20]\n " shape="box"] +27 [label="27: DeclStmt \n n$22=_fun___objc_alloc_no_fail(sizeof(class NSArray ):unsigned long ) [line 20]\n n$23=_fun_NSArray_init(n$22:class NSArray *) virtual [line 20]\n *&a:class NSArray *=n$23 [line 20]\n " shape="box"] 27 -> 26 ; -26 [label="26: DeclStmt \n n$21=*&a:class NSArray * [line 21]\n *&objects:class NSArray *=n$21 [line 21]\n REMOVE_TEMPS(n$21); [line 21]\n NULLIFY(&a); [line 21]\n " shape="box"] +26 [label="26: DeclStmt \n n$21=*&a:class NSArray * [line 21]\n *&objects:class NSArray *=n$21 [line 21]\n " shape="box"] 26 -> 25 ; -25 [label="25: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_MyBlock_array______1); [line 21]\n n$20=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_MyBlock_array______1 ):unsigned long ) [line 21]\n *&__objc_anonymous_block_MyBlock_array______1:class __objc_anonymous_block_MyBlock_array______1 =n$20 [line 21]\n *&infer___objc_anonymous_block_MyBlock_array______1:_fn_ (*)=(_fun___objc_anonymous_block_MyBlock_array______1) [line 21]\n REMOVE_TEMPS(n$20); [line 21]\n NULLIFY(&__objc_anonymous_block_MyBlock_array______1); [line 21]\n " shape="box"] +25 [label="25: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_MyBlock_array______1); [line 21]\n n$20=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_MyBlock_array______1 ):unsigned long ) [line 21]\n *&__objc_anonymous_block_MyBlock_array______1:class __objc_anonymous_block_MyBlock_array______1 =n$20 [line 21]\n *&infer___objc_anonymous_block_MyBlock_array______1:_fn_ (*)=(_fun___objc_anonymous_block_MyBlock_array______1) [line 21]\n " shape="box"] 25 -> 17 ; -24 [label="24: BinaryOperatorStmt: Assign \n n$19=*&stop:_Bool * [line 27]\n *n$19:_Bool =1 [line 27]\n REMOVE_TEMPS(n$19); [line 27]\n NULLIFY(&stop); [line 27]\n APPLY_ABSTRACTION; [line 27]\n " shape="box"] +24 [label="24: BinaryOperatorStmt: Assign \n n$19=*&stop:_Bool * [line 27]\n *n$19:_Bool =1 [line 27]\n " shape="box"] 24 -> 20 ; -23 [label="23: Prune (false branch) \n n$18=*&ShouldStop:int [line 26]\n PRUNE((n$18 == 0), false); [line 26]\n REMOVE_TEMPS(n$18); [line 26]\n NULLIFY(&ShouldStop); [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="invhouse"] +23 [label="23: Prune (false branch) \n n$18=*&ShouldStop:int [line 26]\n PRUNE((n$18 == 0), false); [line 26]\n " shape="invhouse"] 23 -> 20 ; -22 [label="22: Prune (true branch) \n n$18=*&ShouldStop:int [line 26]\n PRUNE((n$18 != 0), true); [line 26]\n REMOVE_TEMPS(n$18); [line 26]\n NULLIFY(&ShouldStop); [line 26]\n " shape="invhouse"] +22 [label="22: Prune (true branch) \n n$18=*&ShouldStop:int [line 26]\n PRUNE((n$18 != 0), true); [line 26]\n " shape="invhouse"] 22 -> 24 ; -21 [label="21: between_join_and_exit \n APPLY_ABSTRACTION; [line 26]\n " shape="box"] +21 [label="21: between_join_and_exit \n " shape="box"] 21 -> 19 ; @@ -149,27 +149,27 @@ digraph iCFG { 18 -> 22 ; 18 -> 23 ; -17 [label="17: DeclStmt \n n$17=_fun_malloc_no_fail(sizeof(signed char ):signed char ) [line 21]\n *&stop:_Bool *=n$17 [line 21]\n REMOVE_TEMPS(n$17); [line 21]\n " shape="box"] +17 [label="17: DeclStmt \n n$17=_fun_malloc_no_fail(sizeof(signed char ):signed char ) [line 21]\n *&stop:_Bool *=n$17 [line 21]\n " shape="box"] 17 -> 16 ; -16 [label="16: BinaryOperatorStmt: Assign \n n$16=*&stop:_Bool * [line 21]\n *n$16:void =0 [line 21]\n REMOVE_TEMPS(n$16); [line 21]\n " shape="box"] +16 [label="16: BinaryOperatorStmt: Assign \n n$16=*&stop:_Bool * [line 21]\n *n$16:void =0 [line 21]\n " shape="box"] 16 -> 5 ; -15 [label="15: DeclStmt \n n$13=*&objects:class NSArray * [line 21]\n n$14=*&idx:unsigned long [line 21]\n n$15=_fun_NSArray_objectAtIndexedSubscript:(n$13:class NSArray *,n$14:unsigned long ) virtual [line 21]\n *&object:struct objc_object *=n$15 [line 21]\n REMOVE_TEMPS(n$13,n$14,n$15); [line 21]\n NULLIFY(&object); [line 21]\n " shape="box"] +15 [label="15: DeclStmt \n n$13=*&objects:class NSArray * [line 21]\n n$14=*&idx:unsigned long [line 21]\n n$15=_fun_NSArray_objectAtIndexedSubscript:(n$13:class NSArray *,n$14:unsigned long ) virtual [line 21]\n *&object:struct objc_object *=n$15 [line 21]\n " shape="box"] 15 -> 14 ; -14 [label="14: Call n$8 \n n$8=*&infer___objc_anonymous_block_MyBlock_array______1:_fn_ (*) [line 21]\n n$9=*&object:struct objc_object * [line 21]\n n$10=*&idx:unsigned long [line 21]\n n$11=*&stop:_Bool * [line 21]\n n$12=n$8(n$9:struct objc_object *,n$10:unsigned long ,n$11:_Bool *) [line 21]\n REMOVE_TEMPS(n$8,n$9,n$10,n$11,n$12); [line 21]\n " shape="box"] +14 [label="14: Call n$8 \n n$8=*&infer___objc_anonymous_block_MyBlock_array______1:_fn_ (*) [line 21]\n n$9=*&object:struct objc_object * [line 21]\n n$10=*&idx:unsigned long [line 21]\n n$11=*&stop:_Bool * [line 21]\n n$12=n$8(n$9:struct objc_object *,n$10:unsigned long ,n$11:_Bool *) [line 21]\n " shape="box"] 14 -> 11 ; -13 [label="13: Prune (false branch) \n n$7=*n$6:signed char [line 21]\n PRUNE((n$7 == 0), false); [line 21]\n REMOVE_TEMPS(n$6,n$7); [line 21]\n " shape="invhouse"] +13 [label="13: Prune (false branch) \n n$7=*n$6:signed char [line 21]\n PRUNE((n$7 == 0), false); [line 21]\n " shape="invhouse"] 13 -> 10 ; -12 [label="12: Prune (true branch) \n n$7=*n$6:signed char [line 21]\n PRUNE((n$7 != 0), true); [line 21]\n REMOVE_TEMPS(n$6,n$7); [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"] +12 [label="12: Prune (true branch) \n n$7=*n$6:signed char [line 21]\n PRUNE((n$7 != 0), true); [line 21]\n " shape="invhouse"] 12 -> 3 ; @@ -182,24 +182,24 @@ 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$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 " 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$5); [line 21]\n " shape="invhouse"] +8 [label="8: Prune (true branch) \n PRUNE(((n$3 < n$5) != 0), true); [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 REMOVE_TEMPS(n$4); [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 " shape="box"] 7 -> 8 ; 7 -> 9 ; -6 [label="6: UnaryOperator \n n$2=*&idx:unsigned long [line 21]\n *&idx:unsigned long =(n$2 + 1) [line 21]\n REMOVE_TEMPS(n$2); [line 21]\n APPLY_ABSTRACTION; [line 21]\n " shape="box"] +6 [label="6: UnaryOperator \n n$2=*&idx:unsigned long [line 21]\n *&idx:unsigned long =(n$2 + 1) [line 21]\n " shape="box"] 6 -> 4 ; -5 [label="5: DeclStmt \n *&idx:unsigned long =0 [line 21]\n APPLY_ABSTRACTION; [line 21]\n " shape="box"] +5 [label="5: DeclStmt \n *&idx:unsigned long =0 [line 21]\n " shape="box"] 5 -> 4 ; @@ -207,7 +207,7 @@ digraph iCFG { 4 -> 7 ; -3 [label="3: Call _fun_free \n n$0=*&stop:_Bool * [line 21]\n n$1=_fun_free(n$0:void *) [line 21]\n REMOVE_TEMPS(n$0,n$1); [line 21]\n NULLIFY(&stop); [line 21]\n APPLY_ABSTRACTION; [line 21]\n " shape="box"] +3 [label="3: Call _fun_free \n n$0=*&stop:_Bool * [line 21]\n n$1=_fun_free(n$0:void *) [line 21]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/block/block.dot b/infer/tests/codetoanalyze/objc/frontend/block/block.dot index 1907453ce..957519213 100644 --- a/infer/tests/codetoanalyze/objc/frontend/block/block.dot +++ b/infer/tests/codetoanalyze/objc/frontend/block/block.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -25 [label="25: Return Stmt \n n$0=_fun_main1(4:int ) [line 46]\n *&return:int =n$0 [line 46]\n REMOVE_TEMPS(n$0); [line 46]\n APPLY_ABSTRACTION; [line 46]\n " shape="box"] +25 [label="25: Return Stmt \n n$0=_fun_main1(4:int ) [line 46]\n *&return:int =n$0 [line 46]\n " shape="box"] 25 -> 24 ; @@ -19,7 +19,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$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 [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 " shape="box"] 20 -> 10 ; @@ -27,11 +27,11 @@ 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$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 [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 " shape="box"] 18 -> 14 ; -17 [label="17: Return Stmt \n n$19=*&z:int [line 25]\n n$20=*&#GB$main1_s:int [line 25]\n n$21=*&x:int [line 25]\n n$22=*&bla:int [line 25]\n *&return:int =(((n$19 + n$20) + n$21) + n$22) [line 25]\n REMOVE_TEMPS(n$19,n$20,n$21,n$22); [line 25]\n NULLIFY(&bla); [line 25]\n NULLIFY(&x); [line 25]\n NULLIFY(&z); [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="box"] +17 [label="17: Return Stmt \n n$19=*&z:int [line 25]\n n$20=*&#GB$main1_s:int [line 25]\n n$21=*&x:int [line 25]\n n$22=*&bla:int [line 25]\n *&return:int =(((n$19 + n$20) + n$21) + n$22) [line 25]\n " shape="box"] 17 -> 16 ; @@ -42,11 +42,11 @@ digraph iCFG { 15 -> 17 ; -14 [label="14: BinaryOperatorStmt: Assign \n n$15=*&addblock2:_fn_ (*) [line 28]\n n$16=n$15(1:int ) [line 28]\n *&add2:int =n$16 [line 28]\n REMOVE_TEMPS(n$15,n$16); [line 28]\n NULLIFY(&addblock2); [line 28]\n " shape="box"] +14 [label="14: BinaryOperatorStmt: Assign \n n$15=*&addblock2:_fn_ (*) [line 28]\n n$16=n$15(1:int ) [line 28]\n *&add2:int =n$16 [line 28]\n " shape="box"] 14 -> 13 ; -13 [label="13: Return Stmt \n n$12=*&c:int [line 29]\n n$13=*&add2:int [line 29]\n n$14=*&bla:int [line 29]\n *&return:int =((n$12 + n$13) + n$14) [line 29]\n REMOVE_TEMPS(n$12,n$13,n$14); [line 29]\n NULLIFY(&add2); [line 29]\n NULLIFY(&bla); [line 29]\n NULLIFY(&c); [line 29]\n APPLY_ABSTRACTION; [line 29]\n " shape="box"] +13 [label="13: Return Stmt \n n$12=*&c:int [line 29]\n n$13=*&add2:int [line 29]\n n$14=*&bla:int [line 29]\n *&return:int =((n$12 + n$13) + n$14) [line 29]\n " shape="box"] 13 -> 12 ; @@ -57,15 +57,15 @@ digraph iCFG { 11 -> 19 ; -10 [label="10: BinaryOperatorStmt: Assign \n n$9=*&addblock:_fn_ (*) [line 32]\n n$10=n$9(1:int ,2:int ) [line 32]\n *&add1:int =n$10 [line 32]\n REMOVE_TEMPS(n$9,n$10); [line 32]\n NULLIFY(&addblock); [line 32]\n " shape="box"] +10 [label="10: BinaryOperatorStmt: Assign \n n$9=*&addblock:_fn_ (*) [line 32]\n n$10=n$9(1:int ,2:int ) [line 32]\n *&add1:int =n$10 [line 32]\n " shape="box"] 10 -> 9 ; -9 [label="9: BinaryOperatorStmt: Assign \n DECLARE_LOCALS(&__objc_anonymous_block_main1______1); [line 34]\n n$7=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_main1______1 ):unsigned long ) [line 34]\n *&__objc_anonymous_block_main1______1:class __objc_anonymous_block_main1______1 =n$7 [line 34]\n n$8=*&#GB$main1_s:int [line 34]\n *n$7.main1_s:int =n$8 [line 34]\n *&addblock:_fn_ (*)=(_fun___objc_anonymous_block_main1______1) [line 34]\n REMOVE_TEMPS(n$7,n$8); [line 34]\n NULLIFY(&__objc_anonymous_block_main1______1); [line 34]\n " shape="box"] +9 [label="9: BinaryOperatorStmt: Assign \n DECLARE_LOCALS(&__objc_anonymous_block_main1______1); [line 34]\n n$7=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_main1______1 ):unsigned long ) [line 34]\n *&__objc_anonymous_block_main1______1:class __objc_anonymous_block_main1______1 =n$7 [line 34]\n n$8=*&#GB$main1_s:int [line 34]\n *n$7.main1_s:int =n$8 [line 34]\n *&addblock:_fn_ (*)=(_fun___objc_anonymous_block_main1______1) [line 34]\n " shape="box"] 9 -> 5 ; -8 [label="8: Return Stmt \n n$5=*&e:int [line 35]\n n$6=*&#GB$main1_s:int [line 35]\n *&return:int =(n$5 - n$6) [line 35]\n REMOVE_TEMPS(n$5,n$6); [line 35]\n NULLIFY(&e); [line 35]\n APPLY_ABSTRACTION; [line 35]\n " shape="box"] +8 [label="8: Return Stmt \n n$5=*&e:int [line 35]\n n$6=*&#GB$main1_s:int [line 35]\n *&return:int =(n$5 - n$6) [line 35]\n " shape="box"] 8 -> 7 ; @@ -76,15 +76,15 @@ digraph iCFG { 6 -> 8 ; -5 [label="5: BinaryOperatorStmt: Assign \n n$3=*&addblock:_fn_ (*) [line 38]\n n$4=n$3(3:int ,2:int ) [line 38]\n *&add2:int =n$4 [line 38]\n REMOVE_TEMPS(n$3,n$4); [line 38]\n NULLIFY(&addblock); [line 38]\n " shape="box"] +5 [label="5: BinaryOperatorStmt: Assign \n n$3=*&addblock:_fn_ (*) [line 38]\n n$4=n$3(3:int ,2:int ) [line 38]\n *&add2:int =n$4 [line 38]\n " shape="box"] 5 -> 4 ; -4 [label="4: BinaryOperatorStmt: Assign \n n$1=*&add1:int [line 41]\n n$2=*&add2:int [line 41]\n *&y:int =(n$1 / n$2) [line 41]\n REMOVE_TEMPS(n$1,n$2); [line 41]\n NULLIFY(&add1); [line 41]\n NULLIFY(&add2); [line 41]\n " shape="box"] +4 [label="4: BinaryOperatorStmt: Assign \n n$1=*&add1:int [line 41]\n n$2=*&add2:int [line 41]\n *&y:int =(n$1 / n$2) [line 41]\n " shape="box"] 4 -> 3 ; -3 [label="3: Return Stmt \n n$0=*&y:int [line 43]\n *&return:int =n$0 [line 43]\n REMOVE_TEMPS(n$0); [line 43]\n NULLIFY(&y); [line 43]\n APPLY_ABSTRACTION; [line 43]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&y:int [line 43]\n *&return:int =n$0 [line 43]\n " shape="box"] 3 -> 2 ; 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 742e7151f..39e069962 100644 --- a/infer/tests/codetoanalyze/objc/frontend/block/block_no_args.dot +++ b/infer/tests/codetoanalyze/objc/frontend/block/block_no_args.dot @@ -8,11 +8,11 @@ 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$5,n$7,n$8,n$9); [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 " shape="box"] 15 -> 11 ; -14 [label="14: BinaryOperatorStmt: Assign \n n$6=*&z:int [line 26]\n *&#GB$g:int =(n$6 + 3) [line 26]\n REMOVE_TEMPS(n$6); [line 26]\n NULLIFY(&z); [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"] +14 [label="14: BinaryOperatorStmt: Assign \n n$6=*&z:int [line 26]\n *&#GB$g:int =(n$6 + 3) [line 26]\n " shape="box"] 14 -> 13 ; @@ -23,7 +23,7 @@ digraph iCFG { 12 -> 14 ; -11 [label="11: Call n$4 \n n$4=*&b:_fn_ (*) [line 28]\n n$4() [line 28]\n REMOVE_TEMPS(n$4); [line 28]\n NULLIFY(&b); [line 28]\n " shape="box"] +11 [label="11: Call n$4 \n n$4=*&b:_fn_ (*) [line 28]\n n$4() [line 28]\n " shape="box"] 11 -> 10 ; @@ -31,19 +31,19 @@ digraph iCFG { 10 -> 5 ; -9 [label="9: Return Stmt \n n$3=*&z:int [line 33]\n *&return:int =n$3 [line 33]\n REMOVE_TEMPS(n$3); [line 33]\n NULLIFY(&z); [line 33]\n APPLY_ABSTRACTION; [line 33]\n " shape="box"] +9 [label="9: Return Stmt \n n$3=*&z:int [line 33]\n *&return:int =n$3 [line 33]\n " shape="box"] 9 -> 2 ; -8 [label="8: Return Stmt \n n$1=*&p:int * [line 31]\n n$2=*n$1:int [line 31]\n *&return:int =n$2 [line 31]\n REMOVE_TEMPS(n$1,n$2); [line 31]\n NULLIFY(&p); [line 31]\n APPLY_ABSTRACTION; [line 31]\n " shape="box"] +8 [label="8: Return Stmt \n n$1=*&p:int * [line 31]\n n$2=*n$1:int [line 31]\n *&return:int =n$2 [line 31]\n " shape="box"] 8 -> 2 ; -7 [label="7: Prune (false branch) \n PRUNE(((n$0 == 6) == 0), false); [line 30]\n REMOVE_TEMPS(n$0); [line 30]\n NULLIFY(&p); [line 30]\n " shape="invhouse"] +7 [label="7: Prune (false branch) \n PRUNE(((n$0 == 6) == 0), false); [line 30]\n " shape="invhouse"] 7 -> 9 ; -6 [label="6: Prune (true branch) \n PRUNE(((n$0 == 6) != 0), true); [line 30]\n REMOVE_TEMPS(n$0); [line 30]\n NULLIFY(&z); [line 30]\n " shape="invhouse"] +6 [label="6: Prune (true branch) \n PRUNE(((n$0 == 6) != 0), true); [line 30]\n " shape="invhouse"] 6 -> 8 ; @@ -52,7 +52,7 @@ digraph iCFG { 5 -> 6 ; 5 -> 7 ; -4 [label="4: between_join_and_exit \n APPLY_ABSTRACTION; [line 30]\n " shape="box"] +4 [label="4: between_join_and_exit \n " shape="box"] 4 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/block/block_release.dot b/infer/tests/codetoanalyze/objc/frontend/block/block_release.dot index b8cf7e935..b4cff26ed 100644 --- a/infer/tests/codetoanalyze/objc/frontend/block/block_release.dot +++ b/infer/tests/codetoanalyze/objc/frontend/block/block_release.dot @@ -4,31 +4,31 @@ digraph iCFG { 19 -> 18 ; -18 [label="18: DeclStmt \n n$12=_fun_CGBitmapContextCreate(0:void *,0:unsigned long ,0:unsigned long ,8:unsigned long ,0:unsigned long ,0:struct CGColorSpace *,0:unsigned int ) [line 23]\n *&context:struct CGContext *=n$12 [line 23]\n REMOVE_TEMPS(n$12); [line 23]\n " shape="box"] +18 [label="18: DeclStmt \n n$12=_fun_CGBitmapContextCreate(0:void *,0:unsigned long ,0:unsigned long ,8:unsigned long ,0:unsigned long ,0:struct CGColorSpace *,0:unsigned int ) [line 23]\n *&context:struct CGContext *=n$12 [line 23]\n " shape="box"] 18 -> 17 ; -17 [label="17: DeclStmt \n n$10=*&context:struct CGContext * [line 24]\n n$11=_fun_CGBitmapContextCreateImage(n$10:struct CGContext *) [line 24]\n *&newImage:struct CGImage *=n$11 [line 24]\n REMOVE_TEMPS(n$10,n$11); [line 24]\n " shape="box"] +17 [label="17: DeclStmt \n n$10=*&context:struct CGContext * [line 24]\n n$11=_fun_CGBitmapContextCreateImage(n$10:struct CGContext *) [line 24]\n *&newImage:struct CGImage *=n$11 [line 24]\n " shape="box"] 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$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 [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 " shape="box"] 16 -> 8 ; -15 [label="15: Call _fun_CGImageRelease \n n$7=*&newImage:struct CGImage * [line 27]\n _fun_CGImageRelease(n$7:struct CGImage *) [line 27]\n REMOVE_TEMPS(n$7); [line 27]\n NULLIFY(&newImage); [line 27]\n APPLY_ABSTRACTION; [line 27]\n " shape="box"] +15 [label="15: Call _fun_CGImageRelease \n n$7=*&newImage:struct CGImage * [line 27]\n _fun_CGImageRelease(n$7:struct CGImage *) [line 27]\n " shape="box"] 15 -> 11 ; -14 [label="14: Prune (false branch) \n n$6=*&newImage:struct CGImage * [line 26]\n PRUNE((n$6 == 0), false); [line 26]\n REMOVE_TEMPS(n$6); [line 26]\n NULLIFY(&newImage); [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="invhouse"] +14 [label="14: Prune (false branch) \n n$6=*&newImage:struct CGImage * [line 26]\n PRUNE((n$6 == 0), false); [line 26]\n " shape="invhouse"] 14 -> 11 ; -13 [label="13: Prune (true branch) \n n$6=*&newImage:struct CGImage * [line 26]\n PRUNE((n$6 != 0), true); [line 26]\n REMOVE_TEMPS(n$6); [line 26]\n " shape="invhouse"] +13 [label="13: Prune (true branch) \n n$6=*&newImage:struct CGImage * [line 26]\n PRUNE((n$6 != 0), true); [line 26]\n " shape="invhouse"] 13 -> 15 ; -12 [label="12: between_join_and_exit \n APPLY_ABSTRACTION; [line 26]\n " shape="box"] +12 [label="12: between_join_and_exit \n " shape="box"] 12 -> 10 ; @@ -44,20 +44,20 @@ digraph iCFG { 9 -> 13 ; 9 -> 14 ; -8 [label="8: Call n$3 \n n$3=*&b:_fn_ (*) [line 29]\n n$4=*&z:int [line 29]\n n$3(n$4:int ) [line 29]\n REMOVE_TEMPS(n$3,n$4); [line 29]\n NULLIFY(&b); [line 29]\n " shape="box"] +8 [label="8: Call n$3 \n n$3=*&b:_fn_ (*) [line 29]\n n$4=*&z:int [line 29]\n n$3(n$4:int ) [line 29]\n " shape="box"] 8 -> 5 ; 8 -> 6 ; -7 [label="7: Call _fun_CGContextRelease \n n$2=*&context:struct CGContext * [line 31]\n _fun_CGContextRelease(n$2:struct CGContext *) [line 31]\n REMOVE_TEMPS(n$2); [line 31]\n NULLIFY(&context); [line 31]\n APPLY_ABSTRACTION; [line 31]\n " shape="box"] +7 [label="7: Call _fun_CGContextRelease \n n$2=*&context:struct CGContext * [line 31]\n _fun_CGContextRelease(n$2:struct CGContext *) [line 31]\n " shape="box"] 7 -> 4 ; -6 [label="6: Prune (false branch) \n n$1=*&context:struct CGContext * [line 30]\n PRUNE((n$1 == 0), false); [line 30]\n REMOVE_TEMPS(n$1); [line 30]\n NULLIFY(&context); [line 30]\n APPLY_ABSTRACTION; [line 30]\n " shape="invhouse"] +6 [label="6: Prune (false branch) \n n$1=*&context:struct CGContext * [line 30]\n PRUNE((n$1 == 0), false); [line 30]\n " shape="invhouse"] 6 -> 4 ; -5 [label="5: Prune (true branch) \n n$1=*&context:struct CGContext * [line 30]\n PRUNE((n$1 != 0), true); [line 30]\n REMOVE_TEMPS(n$1); [line 30]\n " shape="invhouse"] +5 [label="5: Prune (true branch) \n n$1=*&context:struct CGContext * [line 30]\n PRUNE((n$1 != 0), true); [line 30]\n " shape="invhouse"] 5 -> 7 ; @@ -65,7 +65,7 @@ digraph iCFG { 4 -> 3 ; -3 [label="3: Return Stmt \n n$0=*&z:int [line 32]\n *&return:int =n$0 [line 32]\n REMOVE_TEMPS(n$0); [line 32]\n NULLIFY(&z); [line 32]\n APPLY_ABSTRACTION; [line 32]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&z:int [line 32]\n *&return:int =n$0 [line 32]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/block/dispatch.dot b/infer/tests/codetoanalyze/objc/frontend/block/dispatch.dot index 256282778..90d87acf5 100644 --- a/infer/tests/codetoanalyze/objc/frontend/block/dispatch.dot +++ b/infer/tests/codetoanalyze/objc/frontend/block/dispatch.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -27 [label="27: DeclStmt \n n$3=_fun_A_sharedInstance() [line 43]\n *&b:class A *=n$3 [line 43]\n REMOVE_TEMPS(n$3); [line 43]\n " shape="box"] +27 [label="27: DeclStmt \n n$3=_fun_A_sharedInstance() [line 43]\n *&b:class A *=n$3 [line 43]\n " shape="box"] 27 -> 26 ; @@ -8,28 +8,28 @@ digraph iCFG { 26 -> 21 ; -25 [label="25: Return Stmt \n *&return:int =0 [line 48]\n APPLY_ABSTRACTION; [line 48]\n " shape="box"] +25 [label="25: Return Stmt \n *&return:int =0 [line 48]\n " shape="box"] 25 -> 18 ; -24 [label="24: Return Stmt \n n$1=*&p:int * [line 46]\n n$2=*n$1:int [line 46]\n *&return:int =n$2 [line 46]\n REMOVE_TEMPS(n$1,n$2); [line 46]\n NULLIFY(&p); [line 46]\n APPLY_ABSTRACTION; [line 46]\n " shape="box"] +24 [label="24: Return Stmt \n n$1=*&p:int * [line 46]\n n$2=*n$1:int [line 46]\n *&return:int =n$2 [line 46]\n " shape="box"] 24 -> 18 ; -23 [label="23: Prune (false branch) \n PRUNE(((n$0 == 0) == 0), false); [line 45]\n REMOVE_TEMPS(n$0); [line 45]\n NULLIFY(&p); [line 45]\n " shape="invhouse"] +23 [label="23: Prune (false branch) \n PRUNE(((n$0 == 0) == 0), false); [line 45]\n " shape="invhouse"] 23 -> 25 ; -22 [label="22: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 45]\n REMOVE_TEMPS(n$0); [line 45]\n " shape="invhouse"] +22 [label="22: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 45]\n " shape="invhouse"] 22 -> 24 ; -21 [label="21: BinaryOperatorStmt: EQ \n n$0=*&b:class A * [line 45]\n NULLIFY(&b); [line 45]\n " shape="box"] +21 [label="21: BinaryOperatorStmt: EQ \n n$0=*&b:class A * [line 45]\n " shape="box"] 21 -> 22 ; 21 -> 23 ; -20 [label="20: between_join_and_exit \n APPLY_ABSTRACTION; [line 45]\n " shape="box"] +20 [label="20: between_join_and_exit \n " shape="box"] 20 -> 18 ; @@ -44,11 +44,11 @@ digraph iCFG { 17 -> 27 ; -16 [label="16: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_A_trans______2); [line 34]\n n$11=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_trans______2 ):unsigned long ) [line 34]\n *&__objc_anonymous_block_A_trans______2:class __objc_anonymous_block_A_trans______2 =n$11 [line 34]\n n$12=*&#GB$A_trans_sharedInstance:struct objc_object * [line 34]\n *n$11.A_trans_sharedInstance:struct objc_object *=n$12 [line 34]\n *&dummy_block:_fn_ (*)=(_fun___objc_anonymous_block_A_trans______2) [line 34]\n REMOVE_TEMPS(n$11,n$12); [line 34]\n NULLIFY(&__objc_anonymous_block_A_trans______2); [line 34]\n " shape="box"] +16 [label="16: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_A_trans______2); [line 34]\n n$11=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_trans______2 ):unsigned long ) [line 34]\n *&__objc_anonymous_block_A_trans______2:class __objc_anonymous_block_A_trans______2 =n$11 [line 34]\n n$12=*&#GB$A_trans_sharedInstance:struct objc_object * [line 34]\n *n$11.A_trans_sharedInstance:struct objc_object *=n$12 [line 34]\n *&dummy_block:_fn_ (*)=(_fun___objc_anonymous_block_A_trans______2) [line 34]\n " shape="box"] 16 -> 12 ; -15 [label="15: BinaryOperatorStmt: Assign \n n$9=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 35]\n n$10=_fun_A_init(n$9:class A *) virtual [line 35]\n *&#GB$A_trans_sharedInstance:struct objc_object *=n$10 [line 35]\n REMOVE_TEMPS(n$9,n$10); [line 35]\n APPLY_ABSTRACTION; [line 35]\n " shape="box"] +15 [label="15: BinaryOperatorStmt: Assign \n n$9=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 35]\n n$10=_fun_A_init(n$9:class A *) virtual [line 35]\n *&#GB$A_trans_sharedInstance:struct objc_object *=n$10 [line 35]\n " shape="box"] 15 -> 14 ; @@ -59,11 +59,11 @@ digraph iCFG { 13 -> 15 ; -12 [label="12: Call n$8 \n n$8=*&dummy_block:_fn_ (*) [line 37]\n n$8() [line 37]\n REMOVE_TEMPS(n$8); [line 37]\n NULLIFY(&dummy_block); [line 37]\n " shape="box"] +12 [label="12: Call n$8 \n n$8=*&dummy_block:_fn_ (*) [line 37]\n n$8() [line 37]\n " shape="box"] 12 -> 11 ; -11 [label="11: Return Stmt \n n$7=*&#GB$A_trans_sharedInstance:struct objc_object * [line 38]\n *&return:struct objc_object *=n$7 [line 38]\n REMOVE_TEMPS(n$7); [line 38]\n APPLY_ABSTRACTION; [line 38]\n " shape="box"] +11 [label="11: Return Stmt \n n$7=*&#GB$A_trans_sharedInstance:struct objc_object * [line 38]\n *&return:struct objc_object *=n$7 [line 38]\n " shape="box"] 11 -> 10 ; @@ -74,11 +74,11 @@ digraph iCFG { 9 -> 16 ; -8 [label="8: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_A_sharedInstance______1); [line 26]\n n$5=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_sharedInstance______1 ):unsigned long ) [line 26]\n *&__objc_anonymous_block_A_sharedInstance______1:class __objc_anonymous_block_A_sharedInstance______1 =n$5 [line 26]\n n$6=*&#GB$A_sharedInstance_sharedInstance:struct objc_object * [line 26]\n *n$5.A_sharedInstance_sharedInstance:struct objc_object *=n$6 [line 26]\n *&infer___objc_anonymous_block_A_sharedInstance______1:_fn_ (*)=(_fun___objc_anonymous_block_A_sharedInstance______1) [line 26]\n REMOVE_TEMPS(n$5,n$6); [line 26]\n NULLIFY(&__objc_anonymous_block_A_sharedInstance______1); [line 26]\n " shape="box"] +8 [label="8: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_A_sharedInstance______1); [line 26]\n n$5=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_sharedInstance______1 ):unsigned long ) [line 26]\n *&__objc_anonymous_block_A_sharedInstance______1:class __objc_anonymous_block_A_sharedInstance______1 =n$5 [line 26]\n n$6=*&#GB$A_sharedInstance_sharedInstance:struct objc_object * [line 26]\n *n$5.A_sharedInstance_sharedInstance:struct objc_object *=n$6 [line 26]\n *&infer___objc_anonymous_block_A_sharedInstance______1:_fn_ (*)=(_fun___objc_anonymous_block_A_sharedInstance______1) [line 26]\n " shape="box"] 8 -> 4 ; -7 [label="7: BinaryOperatorStmt: Assign \n n$3=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 27]\n n$4=_fun_A_init(n$3:class A *) virtual [line 27]\n *&#GB$A_sharedInstance_sharedInstance:struct objc_object *=n$4 [line 27]\n REMOVE_TEMPS(n$3,n$4); [line 27]\n APPLY_ABSTRACTION; [line 27]\n " shape="box"] +7 [label="7: BinaryOperatorStmt: Assign \n n$3=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 27]\n n$4=_fun_A_init(n$3:class A *) virtual [line 27]\n *&#GB$A_sharedInstance_sharedInstance:struct objc_object *=n$4 [line 27]\n " shape="box"] 7 -> 6 ; @@ -89,11 +89,11 @@ digraph iCFG { 5 -> 7 ; -4 [label="4: Call n$1 \n n$1=*&infer___objc_anonymous_block_A_sharedInstance______1:_fn_ (*) [line 26]\n n$2=n$1() [line 26]\n REMOVE_TEMPS(n$1,n$2); [line 26]\n NULLIFY(&infer___objc_anonymous_block_A_sharedInstance______1); [line 26]\n " shape="box"] +4 [label="4: Call n$1 \n n$1=*&infer___objc_anonymous_block_A_sharedInstance______1:_fn_ (*) [line 26]\n n$2=n$1() [line 26]\n " shape="box"] 4 -> 3 ; -3 [label="3: Return Stmt \n n$0=*&#GB$A_sharedInstance_sharedInstance:struct objc_object * [line 29]\n *&return:struct objc_object *=n$0 [line 29]\n REMOVE_TEMPS(n$0); [line 29]\n APPLY_ABSTRACTION; [line 29]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&#GB$A_sharedInstance_sharedInstance:struct objc_object * [line 29]\n *&return:struct objc_object *=n$0 [line 29]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/block/dispatch_examples.dot b/infer/tests/codetoanalyze/objc/frontend/block/dispatch_examples.dot index 031b03c94..ff44bd36c 100644 --- a/infer/tests/codetoanalyze/objc/frontend/block/dispatch_examples.dot +++ b/infer/tests/codetoanalyze/objc/frontend/block/dispatch_examples.dot @@ -4,15 +4,15 @@ digraph iCFG { 60 -> 59 ; -59 [label="59: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_A_dispatch_barrier_example______6); [line 73]\n n$52=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_dispatch_barrier_example______6 ):unsigned long ) [line 73]\n *&__objc_anonymous_block_A_dispatch_barrier_example______6:class __objc_anonymous_block_A_dispatch_barrier_example______6 =n$52 [line 73]\n n$53=*&#GB$A_dispatch_barrier_example_a:class A * [line 73]\n *n$52.A_dispatch_barrier_example_a:class A *=n$53 [line 73]\n *&infer___objc_anonymous_block_A_dispatch_barrier_example______6:_fn_ (*)=(_fun___objc_anonymous_block_A_dispatch_barrier_example______6) [line 73]\n REMOVE_TEMPS(n$52,n$53); [line 73]\n NULLIFY(&__objc_anonymous_block_A_dispatch_barrier_example______6); [line 73]\n " shape="box"] +59 [label="59: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_A_dispatch_barrier_example______6); [line 73]\n n$52=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_dispatch_barrier_example______6 ):unsigned long ) [line 73]\n *&__objc_anonymous_block_A_dispatch_barrier_example______6:class __objc_anonymous_block_A_dispatch_barrier_example______6 =n$52 [line 73]\n n$53=*&#GB$A_dispatch_barrier_example_a:class A * [line 73]\n *n$52.A_dispatch_barrier_example_a:class A *=n$53 [line 73]\n *&infer___objc_anonymous_block_A_dispatch_barrier_example______6:_fn_ (*)=(_fun___objc_anonymous_block_A_dispatch_barrier_example______6) [line 73]\n " shape="box"] 59 -> 54 ; -58 [label="58: BinaryOperatorStmt: Assign \n n$50=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 74]\n n$51=_fun_NSObject_init(n$50:class A *) virtual [line 74]\n *&#GB$A_dispatch_barrier_example_a:class A *=n$51 [line 74]\n REMOVE_TEMPS(n$50,n$51); [line 74]\n " shape="box"] +58 [label="58: BinaryOperatorStmt: Assign \n n$50=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 74]\n n$51=_fun_NSObject_init(n$50:class A *) virtual [line 74]\n *&#GB$A_dispatch_barrier_example_a:class A *=n$51 [line 74]\n " shape="box"] 58 -> 57 ; -57 [label="57: BinaryOperatorStmt: Assign \n n$49=*&#GB$A_dispatch_barrier_example_a:class A * [line 75]\n *n$49.x:int =10 [line 75]\n REMOVE_TEMPS(n$49); [line 75]\n APPLY_ABSTRACTION; [line 75]\n " shape="box"] +57 [label="57: BinaryOperatorStmt: Assign \n n$49=*&#GB$A_dispatch_barrier_example_a:class A * [line 75]\n *n$49.x:int =10 [line 75]\n " shape="box"] 57 -> 56 ; @@ -23,11 +23,11 @@ digraph iCFG { 55 -> 58 ; -54 [label="54: Call n$47 \n n$47=*&infer___objc_anonymous_block_A_dispatch_barrier_example______6:_fn_ (*) [line 73]\n n$48=n$47() [line 73]\n REMOVE_TEMPS(n$47,n$48); [line 73]\n NULLIFY(&infer___objc_anonymous_block_A_dispatch_barrier_example______6); [line 73]\n " shape="box"] +54 [label="54: Call n$47 \n n$47=*&infer___objc_anonymous_block_A_dispatch_barrier_example______6:_fn_ (*) [line 73]\n n$48=n$47() [line 73]\n " shape="box"] 54 -> 53 ; -53 [label="53: Return Stmt \n n$45=*&#GB$A_dispatch_barrier_example_a:class A * [line 77]\n n$46=*n$45.x:int [line 77]\n *&return:int =n$46 [line 77]\n REMOVE_TEMPS(n$45,n$46); [line 77]\n APPLY_ABSTRACTION; [line 77]\n " shape="box"] +53 [label="53: Return Stmt \n n$45=*&#GB$A_dispatch_barrier_example_a:class A * [line 77]\n n$46=*n$45.x:int [line 77]\n *&return:int =n$46 [line 77]\n " shape="box"] 53 -> 52 ; @@ -42,15 +42,15 @@ digraph iCFG { 50 -> 49 ; -49 [label="49: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_A_dispatch_group_notify_example______5); [line 64]\n n$43=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_dispatch_group_notify_example______5 ):unsigned long ) [line 64]\n *&__objc_anonymous_block_A_dispatch_group_notify_example______5:class __objc_anonymous_block_A_dispatch_group_notify_example______5 =n$43 [line 64]\n n$44=*&#GB$A_dispatch_group_notify_example_a:class A * [line 64]\n *n$43.A_dispatch_group_notify_example_a:class A *=n$44 [line 64]\n *&infer___objc_anonymous_block_A_dispatch_group_notify_example______5:_fn_ (*)=(_fun___objc_anonymous_block_A_dispatch_group_notify_example______5) [line 64]\n REMOVE_TEMPS(n$43,n$44); [line 64]\n NULLIFY(&__objc_anonymous_block_A_dispatch_group_notify_example______5); [line 64]\n " shape="box"] +49 [label="49: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_A_dispatch_group_notify_example______5); [line 64]\n n$43=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_dispatch_group_notify_example______5 ):unsigned long ) [line 64]\n *&__objc_anonymous_block_A_dispatch_group_notify_example______5:class __objc_anonymous_block_A_dispatch_group_notify_example______5 =n$43 [line 64]\n n$44=*&#GB$A_dispatch_group_notify_example_a:class A * [line 64]\n *n$43.A_dispatch_group_notify_example_a:class A *=n$44 [line 64]\n *&infer___objc_anonymous_block_A_dispatch_group_notify_example______5:_fn_ (*)=(_fun___objc_anonymous_block_A_dispatch_group_notify_example______5) [line 64]\n " shape="box"] 49 -> 44 ; -48 [label="48: BinaryOperatorStmt: Assign \n n$41=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 65]\n n$42=_fun_NSObject_init(n$41:class A *) virtual [line 65]\n *&#GB$A_dispatch_group_notify_example_a:class A *=n$42 [line 65]\n REMOVE_TEMPS(n$41,n$42); [line 65]\n " shape="box"] +48 [label="48: BinaryOperatorStmt: Assign \n n$41=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 65]\n n$42=_fun_NSObject_init(n$41:class A *) virtual [line 65]\n *&#GB$A_dispatch_group_notify_example_a:class A *=n$42 [line 65]\n " shape="box"] 48 -> 47 ; -47 [label="47: BinaryOperatorStmt: Assign \n n$40=*&#GB$A_dispatch_group_notify_example_a:class A * [line 66]\n *n$40.x:int =10 [line 66]\n REMOVE_TEMPS(n$40); [line 66]\n APPLY_ABSTRACTION; [line 66]\n " shape="box"] +47 [label="47: BinaryOperatorStmt: Assign \n n$40=*&#GB$A_dispatch_group_notify_example_a:class A * [line 66]\n *n$40.x:int =10 [line 66]\n " shape="box"] 47 -> 46 ; @@ -61,11 +61,11 @@ digraph iCFG { 45 -> 48 ; -44 [label="44: Call n$38 \n n$38=*&infer___objc_anonymous_block_A_dispatch_group_notify_example______5:_fn_ (*) [line 64]\n n$39=n$38() [line 64]\n REMOVE_TEMPS(n$38,n$39); [line 64]\n NULLIFY(&infer___objc_anonymous_block_A_dispatch_group_notify_example______5); [line 64]\n " shape="box"] +44 [label="44: Call n$38 \n n$38=*&infer___objc_anonymous_block_A_dispatch_group_notify_example______5:_fn_ (*) [line 64]\n n$39=n$38() [line 64]\n " shape="box"] 44 -> 43 ; -43 [label="43: Return Stmt \n n$36=*&#GB$A_dispatch_group_notify_example_a:class A * [line 68]\n n$37=*n$36.x:int [line 68]\n *&return:int =n$37 [line 68]\n REMOVE_TEMPS(n$36,n$37); [line 68]\n APPLY_ABSTRACTION; [line 68]\n " shape="box"] +43 [label="43: Return Stmt \n n$36=*&#GB$A_dispatch_group_notify_example_a:class A * [line 68]\n n$37=*n$36.x:int [line 68]\n *&return:int =n$37 [line 68]\n " shape="box"] 43 -> 42 ; @@ -80,15 +80,15 @@ digraph iCFG { 40 -> 39 ; -39 [label="39: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_A_dispatch_group_example______4); [line 55]\n n$34=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_dispatch_group_example______4 ):unsigned long ) [line 55]\n *&__objc_anonymous_block_A_dispatch_group_example______4:class __objc_anonymous_block_A_dispatch_group_example______4 =n$34 [line 55]\n n$35=*&#GB$A_dispatch_group_example_a:class A * [line 55]\n *n$34.A_dispatch_group_example_a:class A *=n$35 [line 55]\n *&infer___objc_anonymous_block_A_dispatch_group_example______4:_fn_ (*)=(_fun___objc_anonymous_block_A_dispatch_group_example______4) [line 55]\n REMOVE_TEMPS(n$34,n$35); [line 55]\n NULLIFY(&__objc_anonymous_block_A_dispatch_group_example______4); [line 55]\n " shape="box"] +39 [label="39: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_A_dispatch_group_example______4); [line 55]\n n$34=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_dispatch_group_example______4 ):unsigned long ) [line 55]\n *&__objc_anonymous_block_A_dispatch_group_example______4:class __objc_anonymous_block_A_dispatch_group_example______4 =n$34 [line 55]\n n$35=*&#GB$A_dispatch_group_example_a:class A * [line 55]\n *n$34.A_dispatch_group_example_a:class A *=n$35 [line 55]\n *&infer___objc_anonymous_block_A_dispatch_group_example______4:_fn_ (*)=(_fun___objc_anonymous_block_A_dispatch_group_example______4) [line 55]\n " shape="box"] 39 -> 34 ; -38 [label="38: BinaryOperatorStmt: Assign \n n$32=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 56]\n n$33=_fun_NSObject_init(n$32:class A *) virtual [line 56]\n *&#GB$A_dispatch_group_example_a:class A *=n$33 [line 56]\n REMOVE_TEMPS(n$32,n$33); [line 56]\n " shape="box"] +38 [label="38: BinaryOperatorStmt: Assign \n n$32=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 56]\n n$33=_fun_NSObject_init(n$32:class A *) virtual [line 56]\n *&#GB$A_dispatch_group_example_a:class A *=n$33 [line 56]\n " shape="box"] 38 -> 37 ; -37 [label="37: BinaryOperatorStmt: Assign \n n$31=*&#GB$A_dispatch_group_example_a:class A * [line 57]\n *n$31.x:int =10 [line 57]\n REMOVE_TEMPS(n$31); [line 57]\n APPLY_ABSTRACTION; [line 57]\n " shape="box"] +37 [label="37: BinaryOperatorStmt: Assign \n n$31=*&#GB$A_dispatch_group_example_a:class A * [line 57]\n *n$31.x:int =10 [line 57]\n " shape="box"] 37 -> 36 ; @@ -99,11 +99,11 @@ digraph iCFG { 35 -> 38 ; -34 [label="34: Call n$29 \n n$29=*&infer___objc_anonymous_block_A_dispatch_group_example______4:_fn_ (*) [line 55]\n n$30=n$29() [line 55]\n REMOVE_TEMPS(n$29,n$30); [line 55]\n NULLIFY(&infer___objc_anonymous_block_A_dispatch_group_example______4); [line 55]\n " shape="box"] +34 [label="34: Call n$29 \n n$29=*&infer___objc_anonymous_block_A_dispatch_group_example______4:_fn_ (*) [line 55]\n n$30=n$29() [line 55]\n " shape="box"] 34 -> 33 ; -33 [label="33: Return Stmt \n n$27=*&#GB$A_dispatch_group_example_a:class A * [line 59]\n n$28=*n$27.x:int [line 59]\n *&return:int =n$28 [line 59]\n REMOVE_TEMPS(n$27,n$28); [line 59]\n APPLY_ABSTRACTION; [line 59]\n " shape="box"] +33 [label="33: Return Stmt \n n$27=*&#GB$A_dispatch_group_example_a:class A * [line 59]\n n$28=*n$27.x:int [line 59]\n *&return:int =n$28 [line 59]\n " shape="box"] 33 -> 32 ; @@ -118,15 +118,15 @@ digraph iCFG { 30 -> 29 ; -29 [label="29: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_A_dispatch_after_example______3); [line 46]\n n$25=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_dispatch_after_example______3 ):unsigned long ) [line 46]\n *&__objc_anonymous_block_A_dispatch_after_example______3:class __objc_anonymous_block_A_dispatch_after_example______3 =n$25 [line 46]\n n$26=*&#GB$A_dispatch_after_example_a:class A * [line 46]\n *n$25.A_dispatch_after_example_a:class A *=n$26 [line 46]\n *&infer___objc_anonymous_block_A_dispatch_after_example______3:_fn_ (*)=(_fun___objc_anonymous_block_A_dispatch_after_example______3) [line 44]\n REMOVE_TEMPS(n$25,n$26); [line 44]\n NULLIFY(&__objc_anonymous_block_A_dispatch_after_example______3); [line 44]\n " shape="box"] +29 [label="29: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_A_dispatch_after_example______3); [line 46]\n n$25=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_dispatch_after_example______3 ):unsigned long ) [line 46]\n *&__objc_anonymous_block_A_dispatch_after_example______3:class __objc_anonymous_block_A_dispatch_after_example______3 =n$25 [line 46]\n n$26=*&#GB$A_dispatch_after_example_a:class A * [line 46]\n *n$25.A_dispatch_after_example_a:class A *=n$26 [line 46]\n *&infer___objc_anonymous_block_A_dispatch_after_example______3:_fn_ (*)=(_fun___objc_anonymous_block_A_dispatch_after_example______3) [line 44]\n " shape="box"] 29 -> 24 ; -28 [label="28: BinaryOperatorStmt: Assign \n n$23=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 47]\n n$24=_fun_NSObject_init(n$23:class A *) virtual [line 47]\n *&#GB$A_dispatch_after_example_a:class A *=n$24 [line 47]\n REMOVE_TEMPS(n$23,n$24); [line 47]\n " shape="box"] +28 [label="28: BinaryOperatorStmt: Assign \n n$23=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 47]\n n$24=_fun_NSObject_init(n$23:class A *) virtual [line 47]\n *&#GB$A_dispatch_after_example_a:class A *=n$24 [line 47]\n " shape="box"] 28 -> 27 ; -27 [label="27: BinaryOperatorStmt: Assign \n n$22=*&#GB$A_dispatch_after_example_a:class A * [line 48]\n *n$22.x:int =10 [line 48]\n REMOVE_TEMPS(n$22); [line 48]\n APPLY_ABSTRACTION; [line 48]\n " shape="box"] +27 [label="27: BinaryOperatorStmt: Assign \n n$22=*&#GB$A_dispatch_after_example_a:class A * [line 48]\n *n$22.x:int =10 [line 48]\n " shape="box"] 27 -> 26 ; @@ -137,11 +137,11 @@ digraph iCFG { 25 -> 28 ; -24 [label="24: Call n$20 \n n$20=*&infer___objc_anonymous_block_A_dispatch_after_example______3:_fn_ (*) [line 44]\n n$21=n$20() [line 44]\n REMOVE_TEMPS(n$20,n$21); [line 44]\n NULLIFY(&infer___objc_anonymous_block_A_dispatch_after_example______3); [line 44]\n " shape="box"] +24 [label="24: Call n$20 \n n$20=*&infer___objc_anonymous_block_A_dispatch_after_example______3:_fn_ (*) [line 44]\n n$21=n$20() [line 44]\n " shape="box"] 24 -> 23 ; -23 [label="23: Return Stmt \n n$18=*&#GB$A_dispatch_after_example_a:class A * [line 50]\n n$19=*n$18.x:int [line 50]\n *&return:int =n$19 [line 50]\n REMOVE_TEMPS(n$18,n$19); [line 50]\n APPLY_ABSTRACTION; [line 50]\n " shape="box"] +23 [label="23: Return Stmt \n n$18=*&#GB$A_dispatch_after_example_a:class A * [line 50]\n n$19=*n$18.x:int [line 50]\n *&return:int =n$19 [line 50]\n " shape="box"] 23 -> 22 ; @@ -156,15 +156,15 @@ digraph iCFG { 20 -> 19 ; -19 [label="19: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_A_dispatch_async_example______2); [line 35]\n n$16=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_dispatch_async_example______2 ):unsigned long ) [line 35]\n *&__objc_anonymous_block_A_dispatch_async_example______2:class __objc_anonymous_block_A_dispatch_async_example______2 =n$16 [line 35]\n n$17=*&#GB$A_dispatch_async_example_a:class A * [line 35]\n *n$16.A_dispatch_async_example_a:class A *=n$17 [line 35]\n *&infer___objc_anonymous_block_A_dispatch_async_example______2:_fn_ (*)=(_fun___objc_anonymous_block_A_dispatch_async_example______2) [line 34]\n REMOVE_TEMPS(n$16,n$17); [line 34]\n NULLIFY(&__objc_anonymous_block_A_dispatch_async_example______2); [line 34]\n " shape="box"] +19 [label="19: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_A_dispatch_async_example______2); [line 35]\n n$16=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_dispatch_async_example______2 ):unsigned long ) [line 35]\n *&__objc_anonymous_block_A_dispatch_async_example______2:class __objc_anonymous_block_A_dispatch_async_example______2 =n$16 [line 35]\n n$17=*&#GB$A_dispatch_async_example_a:class A * [line 35]\n *n$16.A_dispatch_async_example_a:class A *=n$17 [line 35]\n *&infer___objc_anonymous_block_A_dispatch_async_example______2:_fn_ (*)=(_fun___objc_anonymous_block_A_dispatch_async_example______2) [line 34]\n " shape="box"] 19 -> 14 ; -18 [label="18: BinaryOperatorStmt: Assign \n n$14=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 36]\n n$15=_fun_NSObject_init(n$14:class A *) virtual [line 36]\n *&#GB$A_dispatch_async_example_a:class A *=n$15 [line 36]\n REMOVE_TEMPS(n$14,n$15); [line 36]\n " shape="box"] +18 [label="18: BinaryOperatorStmt: Assign \n n$14=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 36]\n n$15=_fun_NSObject_init(n$14:class A *) virtual [line 36]\n *&#GB$A_dispatch_async_example_a:class A *=n$15 [line 36]\n " shape="box"] 18 -> 17 ; -17 [label="17: BinaryOperatorStmt: Assign \n n$13=*&#GB$A_dispatch_async_example_a:class A * [line 37]\n *n$13.x:int =10 [line 37]\n REMOVE_TEMPS(n$13); [line 37]\n APPLY_ABSTRACTION; [line 37]\n " shape="box"] +17 [label="17: BinaryOperatorStmt: Assign \n n$13=*&#GB$A_dispatch_async_example_a:class A * [line 37]\n *n$13.x:int =10 [line 37]\n " shape="box"] 17 -> 16 ; @@ -175,11 +175,11 @@ digraph iCFG { 15 -> 18 ; -14 [label="14: Call n$11 \n n$11=*&infer___objc_anonymous_block_A_dispatch_async_example______2:_fn_ (*) [line 34]\n n$12=n$11() [line 34]\n REMOVE_TEMPS(n$11,n$12); [line 34]\n NULLIFY(&infer___objc_anonymous_block_A_dispatch_async_example______2); [line 34]\n " shape="box"] +14 [label="14: Call n$11 \n n$11=*&infer___objc_anonymous_block_A_dispatch_async_example______2:_fn_ (*) [line 34]\n n$12=n$11() [line 34]\n " shape="box"] 14 -> 13 ; -13 [label="13: Return Stmt \n n$9=*&#GB$A_dispatch_async_example_a:class A * [line 39]\n n$10=*n$9.x:int [line 39]\n *&return:int =n$10 [line 39]\n REMOVE_TEMPS(n$9,n$10); [line 39]\n APPLY_ABSTRACTION; [line 39]\n " shape="box"] +13 [label="13: Return Stmt \n n$9=*&#GB$A_dispatch_async_example_a:class A * [line 39]\n n$10=*n$9.x:int [line 39]\n *&return:int =n$10 [line 39]\n " shape="box"] 13 -> 12 ; @@ -194,15 +194,15 @@ digraph iCFG { 10 -> 9 ; -9 [label="9: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_A_dispatch_once_example______1); [line 25]\n n$7=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_dispatch_once_example______1 ):unsigned long ) [line 25]\n *&__objc_anonymous_block_A_dispatch_once_example______1:class __objc_anonymous_block_A_dispatch_once_example______1 =n$7 [line 25]\n n$8=*&#GB$A_dispatch_once_example_a:class A * [line 25]\n *n$7.A_dispatch_once_example_a:class A *=n$8 [line 25]\n *&infer___objc_anonymous_block_A_dispatch_once_example______1:_fn_ (*)=(_fun___objc_anonymous_block_A_dispatch_once_example______1) [line 25]\n REMOVE_TEMPS(n$7,n$8); [line 25]\n NULLIFY(&__objc_anonymous_block_A_dispatch_once_example______1); [line 25]\n " shape="box"] +9 [label="9: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_A_dispatch_once_example______1); [line 25]\n n$7=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_dispatch_once_example______1 ):unsigned long ) [line 25]\n *&__objc_anonymous_block_A_dispatch_once_example______1:class __objc_anonymous_block_A_dispatch_once_example______1 =n$7 [line 25]\n n$8=*&#GB$A_dispatch_once_example_a:class A * [line 25]\n *n$7.A_dispatch_once_example_a:class A *=n$8 [line 25]\n *&infer___objc_anonymous_block_A_dispatch_once_example______1:_fn_ (*)=(_fun___objc_anonymous_block_A_dispatch_once_example______1) [line 25]\n " shape="box"] 9 -> 4 ; -8 [label="8: BinaryOperatorStmt: Assign \n n$5=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 26]\n n$6=_fun_NSObject_init(n$5:class A *) virtual [line 26]\n *&#GB$A_dispatch_once_example_a:class A *=n$6 [line 26]\n REMOVE_TEMPS(n$5,n$6); [line 26]\n " shape="box"] +8 [label="8: BinaryOperatorStmt: Assign \n n$5=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 26]\n n$6=_fun_NSObject_init(n$5:class A *) virtual [line 26]\n *&#GB$A_dispatch_once_example_a:class A *=n$6 [line 26]\n " shape="box"] 8 -> 7 ; -7 [label="7: BinaryOperatorStmt: Assign \n n$4=*&#GB$A_dispatch_once_example_a:class A * [line 27]\n *n$4.x:int =10 [line 27]\n REMOVE_TEMPS(n$4); [line 27]\n APPLY_ABSTRACTION; [line 27]\n " shape="box"] +7 [label="7: BinaryOperatorStmt: Assign \n n$4=*&#GB$A_dispatch_once_example_a:class A * [line 27]\n *n$4.x:int =10 [line 27]\n " shape="box"] 7 -> 6 ; @@ -213,11 +213,11 @@ digraph iCFG { 5 -> 8 ; -4 [label="4: Call n$2 \n n$2=*&infer___objc_anonymous_block_A_dispatch_once_example______1:_fn_ (*) [line 25]\n n$3=n$2() [line 25]\n REMOVE_TEMPS(n$2,n$3); [line 25]\n NULLIFY(&infer___objc_anonymous_block_A_dispatch_once_example______1); [line 25]\n " shape="box"] +4 [label="4: Call n$2 \n n$2=*&infer___objc_anonymous_block_A_dispatch_once_example______1:_fn_ (*) [line 25]\n n$3=n$2() [line 25]\n " shape="box"] 4 -> 3 ; -3 [label="3: Return Stmt \n n$0=*&#GB$A_dispatch_once_example_a:class A * [line 29]\n n$1=*n$0.x:int [line 29]\n *&return:int =n$1 [line 29]\n REMOVE_TEMPS(n$0,n$1); [line 29]\n APPLY_ABSTRACTION; [line 29]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&#GB$A_dispatch_once_example_a:class A * [line 29]\n n$1=*n$0.x:int [line 29]\n *&return:int =n$1 [line 29]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/block/retain_cycle.dot b/infer/tests/codetoanalyze/objc/frontend/block/retain_cycle.dot index 837c62d4a..6706d870d 100644 --- a/infer/tests/codetoanalyze/objc/frontend/block/retain_cycle.dot +++ b/infer/tests/codetoanalyze/objc/frontend/block/retain_cycle.dot @@ -1,14 +1,14 @@ /* @generated */ digraph iCFG { -19 [label="19: DeclStmt \n n$2=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 63]\n *&a:class A *=n$2 [line 63]\n REMOVE_TEMPS(n$2); [line 63]\n " shape="box"] +19 [label="19: DeclStmt \n n$2=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 63]\n *&a:class A *=n$2 [line 63]\n " shape="box"] 19 -> 18 ; -18 [label="18: BinaryOperatorStmt: Assign \n n$0=*&a:class A * [line 65]\n n$1=_fun_foo(n$0:class A *) [line 65]\n *&a:class A *=n$1 [line 65]\n REMOVE_TEMPS(n$0,n$1); [line 65]\n NULLIFY(&a); [line 65]\n " shape="box"] +18 [label="18: BinaryOperatorStmt: Assign \n n$0=*&a:class A * [line 65]\n n$1=_fun_foo(n$0:class A *) [line 65]\n *&a:class A *=n$1 [line 65]\n " shape="box"] 18 -> 17 ; -17 [label="17: Return Stmt \n *&return:int =0 [line 67]\n APPLY_ABSTRACTION; [line 67]\n " shape="box"] +17 [label="17: Return Stmt \n *&return:int =0 [line 67]\n " shape="box"] 17 -> 16 ; @@ -19,11 +19,11 @@ digraph iCFG { 15 -> 19 ; -14 [label="14: Message Call: capture \n n$1=*&a:class A * [line 56]\n _fun_A_capture(n$1:class A *) virtual [line 56]\n REMOVE_TEMPS(n$1); [line 56]\n " shape="box"] +14 [label="14: Message Call: capture \n n$1=*&a:class A * [line 56]\n _fun_A_capture(n$1:class A *) virtual [line 56]\n " shape="box"] 14 -> 13 ; -13 [label="13: Return Stmt \n n$0=*&a:class A * [line 58]\n *&return:class A *=n$0 [line 58]\n REMOVE_TEMPS(n$0); [line 58]\n NULLIFY(&a); [line 58]\n APPLY_ABSTRACTION; [line 58]\n " shape="box"] +13 [label="13: Return Stmt \n n$0=*&a:class A * [line 58]\n *&return:class A *=n$0 [line 58]\n " shape="box"] 13 -> 12 ; @@ -34,15 +34,15 @@ digraph iCFG { 11 -> 14 ; -10 [label="10: BinaryOperatorStmt: Assign \n n$8=*&self:class A * [line 46]\n n$9=_fun___objc_alloc_no_fail(sizeof(class B ):unsigned long ) [line 46]\n *n$8._b:class B *=n$9 [line 46]\n REMOVE_TEMPS(n$8,n$9); [line 46]\n " shape="box"] +10 [label="10: BinaryOperatorStmt: Assign \n n$8=*&self:class A * [line 46]\n n$9=_fun___objc_alloc_no_fail(sizeof(class B ):unsigned long ) [line 46]\n *n$8._b:class B *=n$9 [line 46]\n " shape="box"] 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$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 [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 " shape="box"] 9 -> 5 ; -8 [label="8: BinaryOperatorStmt: Assign \n n$3=*&self:class A * [line 48]\n n$4=*&d:class D * [line 48]\n *n$3._data:class D *=n$4 [line 48]\n REMOVE_TEMPS(n$3,n$4); [line 48]\n NULLIFY(&d); [line 48]\n NULLIFY(&self); [line 48]\n APPLY_ABSTRACTION; [line 48]\n " shape="box"] +8 [label="8: BinaryOperatorStmt: Assign \n n$3=*&self:class A * [line 48]\n n$4=*&d:class D * [line 48]\n *n$3._data:class D *=n$4 [line 48]\n " shape="box"] 8 -> 7 ; @@ -60,7 +60,7 @@ digraph iCFG { 4 -> 10 ; -3 [label="3: BinaryOperatorStmt: Assign \n n$0=*&self:class B * [line 30]\n n$1=*&h:_fn_ (*) [line 30]\n *n$0._h:_fn_ (*)=n$1 [line 30]\n REMOVE_TEMPS(n$0,n$1); [line 30]\n NULLIFY(&h); [line 30]\n NULLIFY(&self); [line 30]\n APPLY_ABSTRACTION; [line 30]\n " shape="box"] +3 [label="3: BinaryOperatorStmt: Assign \n n$0=*&self:class B * [line 30]\n n$1=*&h:_fn_ (*) [line 30]\n *n$0._h:_fn_ (*)=n$1 [line 30]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/block/static.dot b/infer/tests/codetoanalyze/objc/frontend/block/static.dot index 16e9822fc..c98f56e0e 100644 --- a/infer/tests/codetoanalyze/objc/frontend/block/static.dot +++ b/infer/tests/codetoanalyze/objc/frontend/block/static.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -31 [label="31: Return Stmt \n *&return:int =0 [line 60]\n APPLY_ABSTRACTION; [line 60]\n " shape="box"] +31 [label="31: Return Stmt \n *&return:int =0 [line 60]\n " shape="box"] 31 -> 30 ; @@ -11,11 +11,11 @@ digraph iCFG { 29 -> 31 ; -28 [label="28: Call (_fun___objc_anonymous_block_A_test3______4) \n DECLARE_LOCALS(&__objc_anonymous_block_A_test3______4); [line 50]\n n$17=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_test3______4 ):unsigned long ) [line 50]\n *&__objc_anonymous_block_A_test3______4:class __objc_anonymous_block_A_test3______4 =n$17 [line 50]\n n$18=*&#GB$A_test3_i:int [line 50]\n *n$17.A_test3_i:int =n$18 [line 50]\n (_fun___objc_anonymous_block_A_test3______4)() [line 50]\n REMOVE_TEMPS(n$17,n$18); [line 50]\n NULLIFY(&__objc_anonymous_block_A_test3______4); [line 50]\n " shape="box"] +28 [label="28: Call (_fun___objc_anonymous_block_A_test3______4) \n DECLARE_LOCALS(&__objc_anonymous_block_A_test3______4); [line 50]\n n$17=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_test3______4 ):unsigned long ) [line 50]\n *&__objc_anonymous_block_A_test3______4:class __objc_anonymous_block_A_test3______4 =n$17 [line 50]\n n$18=*&#GB$A_test3_i:int [line 50]\n *n$17.A_test3_i:int =n$18 [line 50]\n (_fun___objc_anonymous_block_A_test3______4)() [line 50]\n " shape="box"] 28 -> 24 ; -27 [label="27: UnaryOperator \n n$16=*&#GB$A_test3_i:int [line 52]\n *&#GB$A_test3_i:int =(n$16 + 1) [line 52]\n REMOVE_TEMPS(n$16); [line 52]\n APPLY_ABSTRACTION; [line 52]\n " shape="box"] +27 [label="27: UnaryOperator \n n$16=*&#GB$A_test3_i:int [line 52]\n *&#GB$A_test3_i:int =(n$16 + 1) [line 52]\n " shape="box"] 27 -> 26 ; @@ -26,7 +26,7 @@ digraph iCFG { 25 -> 27 ; -24 [label="24: Return Stmt \n n$15=*&#GB$A_test3_i:int [line 55]\n *&return:int =n$15 [line 55]\n REMOVE_TEMPS(n$15); [line 55]\n APPLY_ABSTRACTION; [line 55]\n " shape="box"] +24 [label="24: Return Stmt \n n$15=*&#GB$A_test3_i:int [line 55]\n *&return:int =n$15 [line 55]\n " shape="box"] 24 -> 23 ; @@ -37,15 +37,15 @@ digraph iCFG { 22 -> 28 ; -21 [label="21: BinaryOperatorStmt: Assign \n n$13=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 38]\n n$14=_fun_A_init(n$13:class A *) virtual [line 38]\n *&#GB$A_test2_sharedInstance:struct objc_object *=n$14 [line 38]\n REMOVE_TEMPS(n$13,n$14); [line 38]\n " shape="box"] +21 [label="21: BinaryOperatorStmt: Assign \n n$13=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 38]\n n$14=_fun_A_init(n$13:class A *) virtual [line 38]\n *&#GB$A_test2_sharedInstance:struct objc_object *=n$14 [line 38]\n " shape="box"] 21 -> 20 ; -20 [label="20: Call (_fun___objc_anonymous_block_A_test2______3) \n DECLARE_LOCALS(&__objc_anonymous_block_A_test2______3); [line 39]\n n$11=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_test2______3 ):unsigned long ) [line 39]\n *&__objc_anonymous_block_A_test2______3:class __objc_anonymous_block_A_test2______3 =n$11 [line 39]\n n$12=*&#GB$A_test2_sharedInstance:struct objc_object * [line 39]\n *n$11.A_test2_sharedInstance:struct objc_object *=n$12 [line 39]\n (_fun___objc_anonymous_block_A_test2______3)() [line 39]\n REMOVE_TEMPS(n$11,n$12); [line 39]\n NULLIFY(&__objc_anonymous_block_A_test2______3); [line 39]\n " shape="box"] +20 [label="20: Call (_fun___objc_anonymous_block_A_test2______3) \n DECLARE_LOCALS(&__objc_anonymous_block_A_test2______3); [line 39]\n n$11=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_test2______3 ):unsigned long ) [line 39]\n *&__objc_anonymous_block_A_test2______3:class __objc_anonymous_block_A_test2______3 =n$11 [line 39]\n n$12=*&#GB$A_test2_sharedInstance:struct objc_object * [line 39]\n *n$11.A_test2_sharedInstance:struct objc_object *=n$12 [line 39]\n (_fun___objc_anonymous_block_A_test2______3)() [line 39]\n " shape="box"] 20 -> 16 ; -19 [label="19: DeclStmt \n n$10=*&#GB$A_test2_sharedInstance:struct objc_object * [line 41]\n *&p:struct objc_object *=n$10 [line 41]\n REMOVE_TEMPS(n$10); [line 41]\n NULLIFY(&p); [line 41]\n APPLY_ABSTRACTION; [line 41]\n " shape="box"] +19 [label="19: DeclStmt \n n$10=*&#GB$A_test2_sharedInstance:struct objc_object * [line 41]\n *&p:struct objc_object *=n$10 [line 41]\n " shape="box"] 19 -> 18 ; @@ -56,7 +56,7 @@ digraph iCFG { 17 -> 19 ; -16 [label="16: Return Stmt \n n$9=*&#GB$A_test2_sharedInstance:struct objc_object * [line 44]\n *&return:struct objc_object *=n$9 [line 44]\n REMOVE_TEMPS(n$9); [line 44]\n APPLY_ABSTRACTION; [line 44]\n " shape="box"] +16 [label="16: Return Stmt \n n$9=*&#GB$A_test2_sharedInstance:struct objc_object * [line 44]\n *&return:struct objc_object *=n$9 [line 44]\n " shape="box"] 16 -> 15 ; @@ -67,11 +67,11 @@ digraph iCFG { 14 -> 21 ; -13 [label="13: Call (_fun___objc_anonymous_block_A_test_leak______2) \n DECLARE_LOCALS(&__objc_anonymous_block_A_test_leak______2); [line 30]\n n$7=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_test_leak______2 ):unsigned long ) [line 30]\n *&__objc_anonymous_block_A_test_leak______2:class __objc_anonymous_block_A_test_leak______2 =n$7 [line 30]\n n$8=*&#GB$A_test_leak_sharedInstance:struct objc_object * [line 30]\n *n$7.A_test_leak_sharedInstance:struct objc_object *=n$8 [line 30]\n (_fun___objc_anonymous_block_A_test_leak______2)() [line 30]\n REMOVE_TEMPS(n$7,n$8); [line 30]\n NULLIFY(&__objc_anonymous_block_A_test_leak______2); [line 30]\n APPLY_ABSTRACTION; [line 30]\n " shape="box"] +13 [label="13: Call (_fun___objc_anonymous_block_A_test_leak______2) \n DECLARE_LOCALS(&__objc_anonymous_block_A_test_leak______2); [line 30]\n n$7=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_test_leak______2 ):unsigned long ) [line 30]\n *&__objc_anonymous_block_A_test_leak______2:class __objc_anonymous_block_A_test_leak______2 =n$7 [line 30]\n n$8=*&#GB$A_test_leak_sharedInstance:struct objc_object * [line 30]\n *n$7.A_test_leak_sharedInstance:struct objc_object *=n$8 [line 30]\n (_fun___objc_anonymous_block_A_test_leak______2)() [line 30]\n " shape="box"] 13 -> 9 ; -12 [label="12: BinaryOperatorStmt: Assign \n n$5=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 31]\n n$6=_fun_A_init(n$5:class A *) virtual [line 31]\n *&#GB$A_test_leak_sharedInstance:struct objc_object *=n$6 [line 31]\n REMOVE_TEMPS(n$5,n$6); [line 31]\n APPLY_ABSTRACTION; [line 31]\n " shape="box"] +12 [label="12: BinaryOperatorStmt: Assign \n n$5=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 31]\n n$6=_fun_A_init(n$5:class A *) virtual [line 31]\n *&#GB$A_test_leak_sharedInstance:struct objc_object *=n$6 [line 31]\n " shape="box"] 12 -> 11 ; @@ -89,11 +89,11 @@ digraph iCFG { 8 -> 13 ; -7 [label="7: Call (_fun___objc_anonymous_block_A_test______1) \n DECLARE_LOCALS(&__objc_anonymous_block_A_test______1); [line 20]\n n$3=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_test______1 ):unsigned long ) [line 20]\n *&__objc_anonymous_block_A_test______1:class __objc_anonymous_block_A_test______1 =n$3 [line 20]\n n$4=*&#GB$A_test_sharedInstance:struct objc_object * [line 20]\n *n$3.A_test_sharedInstance:struct objc_object *=n$4 [line 20]\n (_fun___objc_anonymous_block_A_test______1)() [line 20]\n REMOVE_TEMPS(n$3,n$4); [line 20]\n NULLIFY(&__objc_anonymous_block_A_test______1); [line 20]\n " shape="box"] +7 [label="7: Call (_fun___objc_anonymous_block_A_test______1) \n DECLARE_LOCALS(&__objc_anonymous_block_A_test______1); [line 20]\n n$3=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_test______1 ):unsigned long ) [line 20]\n *&__objc_anonymous_block_A_test______1:class __objc_anonymous_block_A_test______1 =n$3 [line 20]\n n$4=*&#GB$A_test_sharedInstance:struct objc_object * [line 20]\n *n$3.A_test_sharedInstance:struct objc_object *=n$4 [line 20]\n (_fun___objc_anonymous_block_A_test______1)() [line 20]\n " shape="box"] 7 -> 3 ; -6 [label="6: BinaryOperatorStmt: Assign \n n$1=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 21]\n n$2=_fun_A_init(n$1:class A *) virtual [line 21]\n *&#GB$A_test_sharedInstance:struct objc_object *=n$2 [line 21]\n REMOVE_TEMPS(n$1,n$2); [line 21]\n APPLY_ABSTRACTION; [line 21]\n " shape="box"] +6 [label="6: BinaryOperatorStmt: Assign \n n$1=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 21]\n n$2=_fun_A_init(n$1:class A *) virtual [line 21]\n *&#GB$A_test_sharedInstance:struct objc_object *=n$2 [line 21]\n " shape="box"] 6 -> 5 ; @@ -104,7 +104,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: Return Stmt \n n$0=*&#GB$A_test_sharedInstance:struct objc_object * [line 25]\n *&return:struct objc_object *=n$0 [line 25]\n REMOVE_TEMPS(n$0); [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&#GB$A_test_sharedInstance:struct objc_object * [line 25]\n *&return:struct objc_object *=n$0 [line 25]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/boxing/Boxing.dot b/infer/tests/codetoanalyze/objc/frontend/boxing/Boxing.dot index ec639e625..0fdc197eb 100644 --- a/infer/tests/codetoanalyze/objc/frontend/boxing/Boxing.dot +++ b/infer/tests/codetoanalyze/objc/frontend/boxing/Boxing.dot @@ -1,10 +1,10 @@ /* @generated */ digraph iCFG { -26 [label="26: DeclStmt \n n$15=_fun_strdup(\"hello world\":char *) [line 42]\n n$16=_fun_NSString_stringWithUTF8String:(n$15:char *) [line 42]\n *&s:class NSString *=n$16 [line 42]\n REMOVE_TEMPS(n$15,n$16); [line 42]\n NULLIFY(&s); [line 42]\n " shape="box"] +26 [label="26: DeclStmt \n n$15=_fun_strdup(\"hello world\":char *) [line 42]\n n$16=_fun_NSString_stringWithUTF8String:(n$15:char *) [line 42]\n *&s:class NSString *=n$16 [line 42]\n " shape="box"] 26 -> 25 ; -25 [label="25: Return Stmt \n n$14=_fun_NSString_stringWithUTF8String:(\"hello world\":char *) [line 43]\n *&return:class NSString *=n$14 [line 43]\n REMOVE_TEMPS(n$14); [line 43]\n APPLY_ABSTRACTION; [line 43]\n " shape="box"] +25 [label="25: Return Stmt \n n$14=_fun_NSString_stringWithUTF8String:(\"hello world\":char *) [line 43]\n *&return:class NSString *=n$14 [line 43]\n " shape="box"] 25 -> 24 ; @@ -15,11 +15,11 @@ digraph iCFG { 23 -> 26 ; -22 [label="22: DeclStmt \n n$13=_fun_NSNumber_numberWithBool:(1:_Bool ) [line 37]\n *&n:class NSNumber *=n$13 [line 37]\n REMOVE_TEMPS(n$13); [line 37]\n NULLIFY(&n); [line 37]\n " shape="box"] +22 [label="22: DeclStmt \n n$13=_fun_NSNumber_numberWithBool:(1:_Bool ) [line 37]\n *&n:class NSNumber *=n$13 [line 37]\n " shape="box"] 22 -> 21 ; -21 [label="21: Return Stmt \n n$12=_fun_NSNumber_numberWithBool:(1:_Bool ) [line 38]\n *&return:class NSNumber *=n$12 [line 38]\n REMOVE_TEMPS(n$12); [line 38]\n APPLY_ABSTRACTION; [line 38]\n " shape="box"] +21 [label="21: Return Stmt \n n$12=_fun_NSNumber_numberWithBool:(1:_Bool ) [line 38]\n *&return:class NSNumber *=n$12 [line 38]\n " shape="box"] 21 -> 20 ; @@ -30,11 +30,11 @@ digraph iCFG { 19 -> 22 ; -18 [label="18: DeclStmt \n n$11=_fun_NSNumber_numberWithDouble:(1.500000:double ) [line 32]\n *&n:class NSNumber *=n$11 [line 32]\n REMOVE_TEMPS(n$11); [line 32]\n NULLIFY(&n); [line 32]\n " shape="box"] +18 [label="18: DeclStmt \n n$11=_fun_NSNumber_numberWithDouble:(1.500000:double ) [line 32]\n *&n:class NSNumber *=n$11 [line 32]\n " shape="box"] 18 -> 17 ; -17 [label="17: Return Stmt \n n$10=_fun_NSNumber_numberWithDouble:(1.500000:double ) [line 33]\n *&return:class NSNumber *=n$10 [line 33]\n REMOVE_TEMPS(n$10); [line 33]\n APPLY_ABSTRACTION; [line 33]\n " shape="box"] +17 [label="17: Return Stmt \n n$10=_fun_NSNumber_numberWithDouble:(1.500000:double ) [line 33]\n *&return:class NSNumber *=n$10 [line 33]\n " shape="box"] 17 -> 16 ; @@ -45,11 +45,11 @@ digraph iCFG { 15 -> 18 ; -14 [label="14: DeclStmt \n n$9=_fun_NSNumber_numberWithFloat:(1.500000:float ) [line 27]\n *&n:class NSNumber *=n$9 [line 27]\n REMOVE_TEMPS(n$9); [line 27]\n NULLIFY(&n); [line 27]\n " shape="box"] +14 [label="14: DeclStmt \n n$9=_fun_NSNumber_numberWithFloat:(1.500000:float ) [line 27]\n *&n:class NSNumber *=n$9 [line 27]\n " shape="box"] 14 -> 13 ; -13 [label="13: Return Stmt \n n$8=_fun_NSNumber_numberWithFloat:(1.500000:float ) [line 28]\n *&return:class NSNumber *=n$8 [line 28]\n REMOVE_TEMPS(n$8); [line 28]\n APPLY_ABSTRACTION; [line 28]\n " shape="box"] +13 [label="13: Return Stmt \n n$8=_fun_NSNumber_numberWithFloat:(1.500000:float ) [line 28]\n *&return:class NSNumber *=n$8 [line 28]\n " shape="box"] 13 -> 12 ; @@ -60,11 +60,11 @@ digraph iCFG { 11 -> 14 ; -10 [label="10: DeclStmt \n n$7=_fun_NSNumber_numberWithInt:(5:int ) [line 22]\n *&n:class NSNumber *=n$7 [line 22]\n REMOVE_TEMPS(n$7); [line 22]\n NULLIFY(&n); [line 22]\n " shape="box"] +10 [label="10: DeclStmt \n n$7=_fun_NSNumber_numberWithInt:(5:int ) [line 22]\n *&n:class NSNumber *=n$7 [line 22]\n " shape="box"] 10 -> 9 ; -9 [label="9: Return Stmt \n n$6=_fun_NSNumber_numberWithInt:(5:int ) [line 23]\n *&return:class NSNumber *=n$6 [line 23]\n REMOVE_TEMPS(n$6); [line 23]\n APPLY_ABSTRACTION; [line 23]\n " shape="box"] +9 [label="9: Return Stmt \n n$6=_fun_NSNumber_numberWithInt:(5:int ) [line 23]\n *&return:class NSNumber *=n$6 [line 23]\n " shape="box"] 9 -> 8 ; @@ -83,11 +83,11 @@ digraph iCFG { 5 -> 4 ; -4 [label="4: DeclStmt \n n$3=*&x:int [line 17]\n n$4=*&y:int [line 17]\n n$5=_fun_NSNumber_numberWithInt:((n$3 + n$4):int ) [line 17]\n *&n:class NSNumber *=n$5 [line 17]\n REMOVE_TEMPS(n$3,n$4,n$5); [line 17]\n NULLIFY(&n); [line 17]\n " shape="box"] +4 [label="4: DeclStmt \n n$3=*&x:int [line 17]\n n$4=*&y:int [line 17]\n n$5=_fun_NSNumber_numberWithInt:((n$3 + n$4):int ) [line 17]\n *&n:class NSNumber *=n$5 [line 17]\n " shape="box"] 4 -> 3 ; -3 [label="3: Return Stmt \n n$0=*&x:int [line 18]\n n$1=*&y:int [line 18]\n n$2=_fun_NSNumber_numberWithInt:((n$0 + n$1):int ) [line 18]\n *&return:class NSNumber *=n$2 [line 18]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 18]\n NULLIFY(&x); [line 18]\n NULLIFY(&y); [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&x:int [line 18]\n n$1=*&y:int [line 18]\n n$2=_fun_NSNumber_numberWithInt:((n$0 + n$1):int ) [line 18]\n *&return:class NSNumber *=n$2 [line 18]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/boxing/array.dot b/infer/tests/codetoanalyze/objc/frontend/boxing/array.dot index 5071d4a64..2585c9f20 100644 --- a/infer/tests/codetoanalyze/objc/frontend/boxing/array.dot +++ b/infer/tests/codetoanalyze/objc/frontend/boxing/array.dot @@ -1,30 +1,30 @@ /* @generated */ digraph iCFG { -12 [label="12: DeclStmt \n n$9=_fun_NSString_stringWithUTF8String:(\"Mercedes-Benz\":char *) [line 17]\n n$10=_fun_NSString_stringWithUTF8String:(\"BMW\":char *) [line 18]\n n$11=_fun_NSString_stringWithUTF8String:(\"Porsche\":char *) [line 19]\n n$12=_fun_NSString_stringWithUTF8String:(\"Opel\":char *) [line 20]\n n$13=_fun_NSString_stringWithUTF8String:(\"Volkswagen\":char *) [line 21]\n n$14=_fun_NSString_stringWithUTF8String:(\"Audi\":char *) [line 22]\n n$15=_fun_NSArray_arrayWithObjects:count:(n$9:struct objc_object *,n$10:struct objc_object *,n$11:struct objc_object *,n$12:struct objc_object *,n$13:struct objc_object *,n$14:struct objc_object *,0:struct objc_object *) [line 16]\n *&germanCars:class NSArray *=n$15 [line 16]\n REMOVE_TEMPS(n$9,n$10,n$11,n$12,n$13,n$14,n$15); [line 16]\n " shape="box"] +12 [label="12: DeclStmt \n n$9=_fun_NSString_stringWithUTF8String:(\"Mercedes-Benz\":char *) [line 17]\n n$10=_fun_NSString_stringWithUTF8String:(\"BMW\":char *) [line 18]\n n$11=_fun_NSString_stringWithUTF8String:(\"Porsche\":char *) [line 19]\n n$12=_fun_NSString_stringWithUTF8String:(\"Opel\":char *) [line 20]\n n$13=_fun_NSString_stringWithUTF8String:(\"Volkswagen\":char *) [line 21]\n n$14=_fun_NSString_stringWithUTF8String:(\"Audi\":char *) [line 22]\n n$15=_fun_NSArray_arrayWithObjects:count:(n$9:struct objc_object *,n$10:struct objc_object *,n$11:struct objc_object *,n$12:struct objc_object *,n$13:struct objc_object *,n$14:struct objc_object *,0:struct objc_object *) [line 16]\n *&germanCars:class NSArray *=n$15 [line 16]\n " shape="box"] 12 -> 11 ; -11 [label="11: BinaryOperatorStmt: Assign \n n$7=*&germanCars:class NSArray * [line 24]\n n$8=_fun_NSArray_objectAtIndexedSubscript:(n$7:class NSArray *,3:unsigned long ) virtual [line 24]\n *&s:class NSString *=n$8 [line 24]\n REMOVE_TEMPS(n$7,n$8); [line 24]\n NULLIFY(&s); [line 24]\n " shape="box"] +11 [label="11: BinaryOperatorStmt: Assign \n n$7=*&germanCars:class NSArray * [line 24]\n n$8=_fun_NSArray_objectAtIndexedSubscript:(n$7:class NSArray *,3:unsigned long ) virtual [line 24]\n *&s:class NSString *=n$8 [line 24]\n " shape="box"] 11 -> 10 ; -10 [label="10: BinaryOperatorStmt: Assign \n n$5=*&germanCars:class NSArray * [line 26]\n n$6=_fun_NSArray_nextObject(n$5:class NSArray *) virtual [line 26]\n *&item:class NSString *=n$6 [line 26]\n REMOVE_TEMPS(n$5,n$6); [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"] +10 [label="10: BinaryOperatorStmt: Assign \n n$5=*&germanCars:class NSArray * [line 26]\n n$6=_fun_NSArray_nextObject(n$5:class NSArray *) virtual [line 26]\n *&item:class NSString *=n$6 [line 26]\n " shape="box"] 10 -> 4 ; -9 [label="9: Call _fun_NSLog \n n$3=_fun_NSString_stringWithUTF8String:(\"%@\":char *) [line 27]\n n$4=*&item:class NSString * [line 27]\n _fun_NSLog(n$3:struct objc_object *,n$4:class NSString *) [line 27]\n REMOVE_TEMPS(n$3,n$4); [line 27]\n NULLIFY(&item); [line 27]\n " shape="box"] +9 [label="9: Call _fun_NSLog \n n$3=_fun_NSString_stringWithUTF8String:(\"%@\":char *) [line 27]\n n$4=*&item:class NSString * [line 27]\n _fun_NSLog(n$3:struct objc_object *,n$4:class NSString *) [line 27]\n " shape="box"] 9 -> 8 ; -8 [label="8: BinaryOperatorStmt: Assign \n n$1=*&germanCars:class NSArray * [line 26]\n n$2=_fun_NSArray_nextObject(n$1:class NSArray *) virtual [line 26]\n *&item:class NSString *=n$2 [line 26]\n REMOVE_TEMPS(n$1,n$2); [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"] +8 [label="8: BinaryOperatorStmt: Assign \n n$1=*&germanCars:class NSArray * [line 26]\n n$2=_fun_NSArray_nextObject(n$1:class NSArray *) virtual [line 26]\n *&item:class NSString *=n$2 [line 26]\n " shape="box"] 8 -> 4 ; -7 [label="7: Prune (false branch) \n PRUNE(((n$0 != 0) == 0), false); [line 26]\n REMOVE_TEMPS(n$0); [line 26]\n NULLIFY(&germanCars); [line 26]\n NULLIFY(&item); [line 26]\n " shape="invhouse"] +7 [label="7: Prune (false branch) \n PRUNE(((n$0 != 0) == 0), false); [line 26]\n " shape="invhouse"] 7 -> 3 ; -6 [label="6: Prune (true branch) \n PRUNE(((n$0 != 0) != 0), true); [line 26]\n REMOVE_TEMPS(n$0); [line 26]\n " shape="invhouse"] +6 [label="6: Prune (true branch) \n PRUNE(((n$0 != 0) != 0), true); [line 26]\n " shape="invhouse"] 6 -> 9 ; @@ -37,7 +37,7 @@ digraph iCFG { 4 -> 5 ; -3 [label="3: Return Stmt \n *&return:int =0 [line 30]\n APPLY_ABSTRACTION; [line 30]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =0 [line 30]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/boxing/array_literal.dot b/infer/tests/codetoanalyze/objc/frontend/boxing/array_literal.dot index 4b3c0e291..6cfa0881d 100644 --- a/infer/tests/codetoanalyze/objc/frontend/boxing/array_literal.dot +++ b/infer/tests/codetoanalyze/objc/frontend/boxing/array_literal.dot @@ -1,10 +1,10 @@ /* @generated */ digraph iCFG { -4 [label="4: DeclStmt \n n$3=_fun_NSString_stringWithUTF8String:(\"cat\":char *) [line 13]\n n$4=_fun_NSString_stringWithUTF8String:(\"dog\":char *) [line 13]\n n$5=_fun_NSArray_arrayWithObjects:(n$3:struct objc_object *,n$4:class NSString *,0:void *) [line 13]\n *&animals:class NSArray *=n$5 [line 13]\n REMOVE_TEMPS(n$3,n$4,n$5); [line 13]\n NULLIFY(&animals); [line 13]\n " shape="box"] +4 [label="4: DeclStmt \n n$3=_fun_NSString_stringWithUTF8String:(\"cat\":char *) [line 13]\n n$4=_fun_NSString_stringWithUTF8String:(\"dog\":char *) [line 13]\n n$5=_fun_NSArray_arrayWithObjects:(n$3:struct objc_object *,n$4:class NSString *,0:void *) [line 13]\n *&animals:class NSArray *=n$5 [line 13]\n " shape="box"] 4 -> 3 ; -3 [label="3: Return Stmt \n n$0=_fun_NSString_stringWithUTF8String:(\"cat\":char *) [line 14]\n n$1=_fun_NSString_stringWithUTF8String:(\"dog\":char *) [line 14]\n n$2=_fun_NSArray_arrayWithObjects:count:(n$0:struct objc_object *,n$1:struct objc_object *,0:struct objc_object *) [line 14]\n *&return:class NSArray *=n$2 [line 14]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=_fun_NSString_stringWithUTF8String:(\"cat\":char *) [line 14]\n n$1=_fun_NSString_stringWithUTF8String:(\"dog\":char *) [line 14]\n n$2=_fun_NSArray_arrayWithObjects:count:(n$0:struct objc_object *,n$1:struct objc_object *,0:struct objc_object *) [line 14]\n *&return:class NSArray *=n$2 [line 14]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/boxing/dict_literal.dot b/infer/tests/codetoanalyze/objc/frontend/boxing/dict_literal.dot index 54faa46db..65d967aab 100644 --- a/infer/tests/codetoanalyze/objc/frontend/boxing/dict_literal.dot +++ b/infer/tests/codetoanalyze/objc/frontend/boxing/dict_literal.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -6 [label="6: Return Stmt \n n$0=_fun_NSString_stringWithUTF8String:(\"Matt\":char *) [line 25]\n n$1=_fun_NSString_stringWithUTF8String:(\"firstName\":char *) [line 25]\n n$2=_fun_NSString_stringWithUTF8String:(\"Galloway\":char *) [line 25]\n n$3=_fun_NSString_stringWithUTF8String:(\"lastName\":char *) [line 25]\n n$4=_fun_NSNumber_numberWithInt:(28:int ) [line 25]\n n$5=_fun_NSString_stringWithUTF8String:(\"age\":char *) [line 25]\n n$6=_fun_NSDictionary_dictionaryWithObjects:forKeys:count:(n$0:struct objc_object *,n$1:struct objc_object *,n$2:struct objc_object *,n$3:struct objc_object *,n$4:struct objc_object *,n$5:struct objc_object *,0:struct objc_object *) [line 25]\n *&return:class NSDictionary *=n$6 [line 25]\n REMOVE_TEMPS(n$0,n$1,n$2,n$3,n$4,n$5,n$6); [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="box"] +6 [label="6: Return Stmt \n n$0=_fun_NSString_stringWithUTF8String:(\"Matt\":char *) [line 25]\n n$1=_fun_NSString_stringWithUTF8String:(\"firstName\":char *) [line 25]\n n$2=_fun_NSString_stringWithUTF8String:(\"Galloway\":char *) [line 25]\n n$3=_fun_NSString_stringWithUTF8String:(\"lastName\":char *) [line 25]\n n$4=_fun_NSNumber_numberWithInt:(28:int ) [line 25]\n n$5=_fun_NSString_stringWithUTF8String:(\"age\":char *) [line 25]\n n$6=_fun_NSDictionary_dictionaryWithObjects:forKeys:count:(n$0:struct objc_object *,n$1:struct objc_object *,n$2:struct objc_object *,n$3:struct objc_object *,n$4:struct objc_object *,n$5:struct objc_object *,0:struct objc_object *) [line 25]\n *&return:class NSDictionary *=n$6 [line 25]\n " shape="box"] 6 -> 5 ; @@ -11,7 +11,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: Return Stmt \n n$0=_fun_NSString_stringWithUTF8String:(\"Matt\":char *) [line 14]\n n$1=_fun_NSString_stringWithUTF8String:(\"firstName\":char *) [line 15]\n n$2=_fun_NSString_stringWithUTF8String:(\"Galloway\":char *) [line 16]\n n$3=_fun_NSString_stringWithUTF8String:(\"lastName\":char *) [line 17]\n n$4=_fun_NSNumber_numberWithInt:(28:int ) [line 18]\n n$5=_fun_NSString_stringWithUTF8String:(\"age\":char *) [line 19]\n n$6=_fun_NSDictionary_dictionaryWithObjectsAndKeys:(n$0:struct objc_object *,n$1:class NSString *,n$2:class NSString *,n$3:class NSString *,n$4:class NSNumber *,n$5:class NSString *,0:void *) [line 14]\n *&return:class NSDictionary *=n$6 [line 14]\n REMOVE_TEMPS(n$0,n$1,n$2,n$3,n$4,n$5,n$6); [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=_fun_NSString_stringWithUTF8String:(\"Matt\":char *) [line 14]\n n$1=_fun_NSString_stringWithUTF8String:(\"firstName\":char *) [line 15]\n n$2=_fun_NSString_stringWithUTF8String:(\"Galloway\":char *) [line 16]\n n$3=_fun_NSString_stringWithUTF8String:(\"lastName\":char *) [line 17]\n n$4=_fun_NSNumber_numberWithInt:(28:int ) [line 18]\n n$5=_fun_NSString_stringWithUTF8String:(\"age\":char *) [line 19]\n n$6=_fun_NSDictionary_dictionaryWithObjectsAndKeys:(n$0:struct objc_object *,n$1:class NSString *,n$2:class NSString *,n$3:class NSString *,n$4:class NSNumber *,n$5:class NSString *,0:void *) [line 14]\n *&return:class NSDictionary *=n$6 [line 14]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/boxing/string_literal.dot b/infer/tests/codetoanalyze/objc/frontend/boxing/string_literal.dot index 3a10525bb..b7690c9fd 100644 --- a/infer/tests/codetoanalyze/objc/frontend/boxing/string_literal.dot +++ b/infer/tests/codetoanalyze/objc/frontend/boxing/string_literal.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -6 [label="6: Return Stmt \n n$0=_fun_NSString_stringWithUTF8String:(\"Hello World!\":char *) [line 17]\n *&return:class NSString *=n$0 [line 17]\n REMOVE_TEMPS(n$0); [line 17]\n APPLY_ABSTRACTION; [line 17]\n " shape="box"] +6 [label="6: Return Stmt \n n$0=_fun_NSString_stringWithUTF8String:(\"Hello World!\":char *) [line 17]\n *&return:class NSString *=n$0 [line 17]\n " shape="box"] 6 -> 5 ; @@ -11,7 +11,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: Return Stmt \n n$0=_fun_NSString_stringWithUTF8String:(\"Hello World!\":char *) [line 14]\n *&return:class NSString *=n$0 [line 14]\n REMOVE_TEMPS(n$0); [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=_fun_NSString_stringWithUTF8String:(\"Hello World!\":char *) [line 14]\n *&return:class NSString *=n$0 [line 14]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/conditional_operation/ConditionalOperation.dot b/infer/tests/codetoanalyze/objc/frontend/conditional_operation/ConditionalOperation.dot index 70e55174e..e47f6b175 100644 --- a/infer/tests/codetoanalyze/objc/frontend/conditional_operation/ConditionalOperation.dot +++ b/infer/tests/codetoanalyze/objc/frontend/conditional_operation/ConditionalOperation.dot @@ -1,22 +1,22 @@ /* @generated */ digraph iCFG { -11 [label="11: Return Stmt \n n$1=*&self:class A * [line 24]\n n$5=*&SIL_temp_conditional___n$2:int [line 24]\n n$6=_fun_A_test4:(n$1:class A *,n$5:int ) virtual [line 24]\n *&return:int =n$6 [line 24]\n REMOVE_TEMPS(n$1,n$5,n$6); [line 24]\n NULLIFY(&SIL_temp_conditional___n$2); [line 24]\n NULLIFY(&self); [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +11 [label="11: Return Stmt \n n$1=*&self:class A * [line 24]\n n$5=*&SIL_temp_conditional___n$2:int [line 24]\n n$6=_fun_A_test4:(n$1:class A *,n$5:int ) virtual [line 24]\n *&return:int =n$6 [line 24]\n " shape="box"] 11 -> 5 ; -10 [label="10: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =1 [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +10 [label="10: ConditinalStmt Branch \n *&SIL_temp_conditional___n$2:int =1 [line 24]\n " shape="box"] 10 -> 6 ; -9 [label="9: ConditinalStmt Branch \n n$4=*&b:_Bool [line 24]\n *&SIL_temp_conditional___n$2:int =n$4 [line 24]\n REMOVE_TEMPS(n$4); [line 24]\n NULLIFY(&b); [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +9 [label="9: ConditinalStmt Branch \n n$4=*&b:_Bool [line 24]\n *&SIL_temp_conditional___n$2:int =n$4 [line 24]\n " shape="box"] 9 -> 6 ; -8 [label="8: Prune (false branch) \n n$3=*&b:_Bool [line 24]\n PRUNE((n$3 == 0), false); [line 24]\n REMOVE_TEMPS(n$3); [line 24]\n NULLIFY(&b); [line 24]\n " shape="invhouse"] +8 [label="8: Prune (false branch) \n n$3=*&b:_Bool [line 24]\n PRUNE((n$3 == 0), false); [line 24]\n " shape="invhouse"] 8 -> 10 ; -7 [label="7: Prune (true branch) \n n$3=*&b:_Bool [line 24]\n PRUNE((n$3 != 0), true); [line 24]\n REMOVE_TEMPS(n$3); [line 24]\n " shape="invhouse"] +7 [label="7: Prune (true branch) \n n$3=*&b:_Bool [line 24]\n PRUNE((n$3 != 0), true); [line 24]\n " shape="invhouse"] 7 -> 9 ; @@ -32,7 +32,7 @@ digraph iCFG { 4 -> 7 ; 4 -> 8 ; -3 [label="3: Return Stmt \n n$0=*&x:int [line 20]\n *&return:int =n$0 [line 20]\n REMOVE_TEMPS(n$0); [line 20]\n NULLIFY(&x); [line 20]\n APPLY_ABSTRACTION; [line 20]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&x:int [line 20]\n *&return:int =n$0 [line 20]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/exceptions/ExceptionExample.dot b/infer/tests/codetoanalyze/objc/frontend/exceptions/ExceptionExample.dot index ae31def69..72b7c26b5 100644 --- a/infer/tests/codetoanalyze/objc/frontend/exceptions/ExceptionExample.dot +++ b/infer/tests/codetoanalyze/objc/frontend/exceptions/ExceptionExample.dot @@ -1,23 +1,23 @@ /* @generated */ digraph iCFG { -12 [label="12: DeclStmt \n n$7=_fun___objc_alloc_no_fail(sizeof(class NSString ):unsigned long ) [line 28]\n *&s:class NSString *=n$7 [line 28]\n REMOVE_TEMPS(n$7); [line 28]\n " shape="box"] +12 [label="12: DeclStmt \n n$7=_fun___objc_alloc_no_fail(sizeof(class NSString ):unsigned long ) [line 28]\n *&s:class NSString *=n$7 [line 28]\n " shape="box"] 12 -> 9 ; 12 -> 10 ; -11 [label="11: Return Stmt \n n$4=_fun_NSString_stringWithUTF8String:(\"Something is not right exception\":char *) [line 31]\n n$5=_fun_NSString_stringWithUTF8String:(\"Can't perform this operation because of this or that\":char *) [line 33]\n n$6=_fun_NSException_exceptionWithName:reason:userInfo:(n$4:class NSString *,n$5:class NSString *,0:class NSDictionary *) [line 30]\n *&return:void =n$6 [line 30]\n REMOVE_TEMPS(n$4,n$5,n$6); [line 30]\n APPLY_ABSTRACTION; [line 30]\n " shape="box"] +11 [label="11: Return Stmt \n n$4=_fun_NSString_stringWithUTF8String:(\"Something is not right exception\":char *) [line 31]\n n$5=_fun_NSString_stringWithUTF8String:(\"Can't perform this operation because of this or that\":char *) [line 33]\n n$6=_fun_NSException_exceptionWithName:reason:userInfo:(n$4:class NSString *,n$5:class NSString *,0:class NSDictionary *) [line 30]\n *&return:void =n$6 [line 30]\n " shape="box"] 11 -> 6 ; -10 [label="10: Prune (false branch) \n n$3=*&s:class NSString * [line 29]\n PRUNE((n$3 == 0), false); [line 29]\n REMOVE_TEMPS(n$3); [line 29]\n NULLIFY(&s); [line 29]\n " shape="invhouse"] +10 [label="10: Prune (false branch) \n n$3=*&s:class NSString * [line 29]\n PRUNE((n$3 == 0), false); [line 29]\n " shape="invhouse"] 10 -> 7 ; -9 [label="9: Prune (true branch) \n n$3=*&s:class NSString * [line 29]\n PRUNE((n$3 != 0), true); [line 29]\n REMOVE_TEMPS(n$3); [line 29]\n NULLIFY(&s); [line 29]\n " shape="invhouse"] +9 [label="9: Prune (true branch) \n n$3=*&s:class NSString * [line 29]\n PRUNE((n$3 != 0), true); [line 29]\n " shape="invhouse"] 9 -> 11 ; -8 [label="8: between_join_and_exit \n APPLY_ABSTRACTION; [line 29]\n " shape="box"] +8 [label="8: between_join_and_exit \n " shape="box"] 8 -> 6 ; @@ -32,11 +32,11 @@ digraph iCFG { 5 -> 12 ; -4 [label="4: DeclStmt \n n$2=_fun___objc_alloc_no_fail(sizeof(class NSString ):unsigned long ) [line 20]\n *&s:class NSString *=n$2 [line 20]\n REMOVE_TEMPS(n$2); [line 20]\n NULLIFY(&s); [line 20]\n " shape="box"] +4 [label="4: DeclStmt \n n$2=_fun___objc_alloc_no_fail(sizeof(class NSString ):unsigned long ) [line 20]\n *&s:class NSString *=n$2 [line 20]\n " shape="box"] 4 -> 3 ; -3 [label="3: Message Call: description \n n$0=*&self:class ExceptionExample * [line 23]\n n$1=_fun_ExceptionExample_description(n$0:class ExceptionExample *) [line 23]\n REMOVE_TEMPS(n$0,n$1); [line 23]\n NULLIFY(&self); [line 23]\n APPLY_ABSTRACTION; [line 23]\n " shape="box"] +3 [label="3: Message Call: description \n n$0=*&self:class ExceptionExample * [line 23]\n n$1=_fun_ExceptionExample_description(n$0:class ExceptionExample *) [line 23]\n " shape="box"] 3 -> 2 ; 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 f03ea3ae9..31fa49a84 100644 --- a/infer/tests/codetoanalyze/objc/frontend/fast_enumeration/Fast_enumeration.dot +++ b/infer/tests/codetoanalyze/objc/frontend/fast_enumeration/Fast_enumeration.dot @@ -4,23 +4,23 @@ digraph iCFG { 21 -> 20 ; -20 [label="20: DeclStmt \n *&item:class NSArray *=0 [line 27]\n NULLIFY(&item); [line 27]\n APPLY_ABSTRACTION; [line 27]\n " shape="box"] +20 [label="20: DeclStmt \n *&item:class NSArray *=0 [line 27]\n " shape="box"] 20 -> 15 ; -19 [label="19: BinaryOperatorStmt: AddAssign \n n$13=*&item:class NSArray * [line 29]\n n$14=_fun_NSArray_count(n$13:class NSArray *) [line 29]\n n$15=*&size:int [line 29]\n *&size:int =(n$15 + n$14) [line 29]\n REMOVE_TEMPS(n$13,n$14,n$15); [line 29]\n NULLIFY(&item); [line 29]\n APPLY_ABSTRACTION; [line 29]\n " shape="box"] +19 [label="19: BinaryOperatorStmt: AddAssign \n n$13=*&item:class NSArray * [line 29]\n n$14=_fun_NSArray_count(n$13:class NSArray *) [line 29]\n n$15=*&size:int [line 29]\n *&size:int =(n$15 + n$14) [line 29]\n " shape="box"] 19 -> 15 ; -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 [label="18: Prune (false branch) \n PRUNE((n$12 == 0), false); [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$12); [line 28]\n " shape="invhouse"] +17 [label="17: Prune (true branch) \n PRUNE((n$12 != 0), true); [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 REMOVE_TEMPS(n$10,n$11); [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 " shape="box"] 16 -> 17 ; @@ -29,7 +29,7 @@ digraph iCFG { 15 -> 16 ; -14 [label="14: Return Stmt \n n$9=*&size:int [line 31]\n *&return:int =n$9 [line 31]\n REMOVE_TEMPS(n$9); [line 31]\n NULLIFY(&size); [line 31]\n APPLY_ABSTRACTION; [line 31]\n " shape="box"] +14 [label="14: Return Stmt \n n$9=*&size:int [line 31]\n *&return:int =n$9 [line 31]\n " shape="box"] 14 -> 13 ; @@ -44,23 +44,23 @@ digraph iCFG { 11 -> 10 ; -10 [label="10: BinaryOperatorStmt: Assign \n n$7=*&items:class NSArray * [line 19]\n n$8=_fun_NSArray_nextObject(n$7:class NSArray *) virtual [line 19]\n *&item:class NSArray *=n$8 [line 19]\n REMOVE_TEMPS(n$7,n$8); [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +10 [label="10: BinaryOperatorStmt: Assign \n n$7=*&items:class NSArray * [line 19]\n n$8=_fun_NSArray_nextObject(n$7:class NSArray *) virtual [line 19]\n *&item:class NSArray *=n$8 [line 19]\n " shape="box"] 10 -> 4 ; -9 [label="9: BinaryOperatorStmt: AddAssign \n n$4=*&item:class NSArray * [line 20]\n n$5=_fun_NSArray_count(n$4:class NSArray *) [line 20]\n n$6=*&size:int [line 20]\n *&size:int =(n$6 + n$5) [line 20]\n REMOVE_TEMPS(n$4,n$5,n$6); [line 20]\n NULLIFY(&item); [line 20]\n " shape="box"] +9 [label="9: BinaryOperatorStmt: AddAssign \n n$4=*&item:class NSArray * [line 20]\n n$5=_fun_NSArray_count(n$4:class NSArray *) [line 20]\n n$6=*&size:int [line 20]\n *&size:int =(n$6 + n$5) [line 20]\n " shape="box"] 9 -> 8 ; -8 [label="8: BinaryOperatorStmt: Assign \n n$2=*&items:class NSArray * [line 19]\n n$3=_fun_NSArray_nextObject(n$2:class NSArray *) virtual [line 19]\n *&item:class NSArray *=n$3 [line 19]\n REMOVE_TEMPS(n$2,n$3); [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +8 [label="8: BinaryOperatorStmt: Assign \n n$2=*&items:class NSArray * [line 19]\n n$3=_fun_NSArray_nextObject(n$2:class NSArray *) virtual [line 19]\n *&item:class NSArray *=n$3 [line 19]\n " shape="box"] 8 -> 4 ; -7 [label="7: Prune (false branch) \n PRUNE(((n$1 != 0) == 0), false); [line 19]\n REMOVE_TEMPS(n$1); [line 19]\n NULLIFY(&item); [line 19]\n " shape="invhouse"] +7 [label="7: Prune (false branch) \n PRUNE(((n$1 != 0) == 0), false); [line 19]\n " shape="invhouse"] 7 -> 3 ; -6 [label="6: Prune (true branch) \n PRUNE(((n$1 != 0) != 0), true); [line 19]\n REMOVE_TEMPS(n$1); [line 19]\n " shape="invhouse"] +6 [label="6: Prune (true branch) \n PRUNE(((n$1 != 0) != 0), true); [line 19]\n " shape="invhouse"] 6 -> 9 ; @@ -73,7 +73,7 @@ digraph iCFG { 4 -> 5 ; -3 [label="3: Return Stmt \n n$0=*&size:int [line 22]\n *&return:int =n$0 [line 22]\n REMOVE_TEMPS(n$0); [line 22]\n NULLIFY(&size); [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&size:int [line 22]\n *&return:int =n$0 [line 22]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/predefined_expr/PredefinedExprExample.dot b/infer/tests/codetoanalyze/objc/frontend/predefined_expr/PredefinedExprExample.dot index 38bd25278..9c76270e6 100644 --- a/infer/tests/codetoanalyze/objc/frontend/predefined_expr/PredefinedExprExample.dot +++ b/infer/tests/codetoanalyze/objc/frontend/predefined_expr/PredefinedExprExample.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -9 [label="9: Call _fun_NSLog \n n$2=_fun_NSString_stringWithUTF8String:(\"%s\":char *) [line 27]\n _fun_NSLog(n$2:struct objc_object *,\"\":char *) [line 27]\n REMOVE_TEMPS(n$2); [line 27]\n APPLY_ABSTRACTION; [line 27]\n " shape="box"] +9 [label="9: Call _fun_NSLog \n n$2=_fun_NSString_stringWithUTF8String:(\"%s\":char *) [line 27]\n _fun_NSLog(n$2:struct objc_object *,\"\":char *) [line 27]\n " shape="box"] 9 -> 8 ; @@ -11,7 +11,7 @@ digraph iCFG { 7 -> 9 ; -6 [label="6: Call _fun_NSLog \n n$1=_fun_NSString_stringWithUTF8String:(\"%s\":char *) [line 23]\n _fun_NSLog(n$1:struct objc_object *,\"\":char *) [line 23]\n REMOVE_TEMPS(n$1); [line 23]\n APPLY_ABSTRACTION; [line 23]\n " shape="box"] +6 [label="6: Call _fun_NSLog \n n$1=_fun_NSString_stringWithUTF8String:(\"%s\":char *) [line 23]\n _fun_NSLog(n$1:struct objc_object *,\"\":char *) [line 23]\n " shape="box"] 6 -> 5 ; @@ -22,7 +22,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: Call _fun_NSLog \n n$0=_fun_NSString_stringWithUTF8String:(\"%s\":char *) [line 19]\n _fun_NSLog(n$0:struct objc_object *,\"\":char *) [line 19]\n REMOVE_TEMPS(n$0); [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +3 [label="3: Call _fun_NSLog \n n$0=_fun_NSString_stringWithUTF8String:(\"%s\":char *) [line 19]\n _fun_NSLog(n$0:struct objc_object *,\"\":char *) [line 19]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/property/PropertyAttributes.dot b/infer/tests/codetoanalyze/objc/frontend/property/PropertyAttributes.dot index 59f3001e0..04defd792 100644 --- a/infer/tests/codetoanalyze/objc/frontend/property/PropertyAttributes.dot +++ b/infer/tests/codetoanalyze/objc/frontend/property/PropertyAttributes.dot @@ -1,18 +1,18 @@ /* @generated */ digraph iCFG { -18 [label="18: DeclStmt \n n$3=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 39]\n n$4=_fun_NSObject_init(n$3:class A *) virtual [line 39]\n *&a:class A *=n$4 [line 39]\n REMOVE_TEMPS(n$3,n$4); [line 39]\n " shape="box"] +18 [label="18: DeclStmt \n n$3=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 39]\n n$4=_fun_NSObject_init(n$3:class A *) virtual [line 39]\n *&a:class A *=n$4 [line 39]\n " shape="box"] 18 -> 17 ; -17 [label="17: Message Call: setLast_name: \n n$1=*&a:class A * [line 40]\n n$2=*&a2:class A * [line 40]\n _fun_A_setLast_name:(n$1:class A *,n$2:class A *) [line 40]\n REMOVE_TEMPS(n$1,n$2); [line 40]\n NULLIFY(&a2); [line 40]\n " shape="box"] +17 [label="17: Message Call: setLast_name: \n n$1=*&a:class A * [line 40]\n n$2=*&a2:class A * [line 40]\n _fun_A_setLast_name:(n$1:class A *,n$2:class A *) [line 40]\n " shape="box"] 17 -> 16 ; -16 [label="16: Message Call: release \n n$0=*&a:class A * [line 41]\n _fun___objc_release(n$0:class A *) [line 41]\n REMOVE_TEMPS(n$0); [line 41]\n NULLIFY(&a); [line 41]\n " shape="box"] +16 [label="16: Message Call: release \n n$0=*&a:class A * [line 41]\n _fun___objc_release(n$0:class A *) [line 41]\n " shape="box"] 16 -> 15 ; -15 [label="15: Return Stmt \n *&return:int =0 [line 42]\n APPLY_ABSTRACTION; [line 42]\n " shape="box"] +15 [label="15: Return Stmt \n *&return:int =0 [line 42]\n " shape="box"] 15 -> 14 ; @@ -23,28 +23,28 @@ digraph iCFG { 13 -> 18 ; -12 [label="12: DeclStmt \n n$11=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 27]\n n$12=_fun_NSObject_init(n$11:class A *) virtual [line 27]\n *&other:class A *=n$12 [line 27]\n REMOVE_TEMPS(n$11,n$12); [line 27]\n " shape="box"] +12 [label="12: DeclStmt \n n$11=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 27]\n n$12=_fun_NSObject_init(n$11:class A *) virtual [line 27]\n *&other:class A *=n$12 [line 27]\n " shape="box"] 12 -> 7 ; 12 -> 8 ; -11 [label="11: BinaryOperatorStmt: Assign \n n$8=*&other:class A * [line 29]\n n$9=*&self:class A * [line 29]\n n$10=*n$9._name:class A * [line 29]\n *n$8._name:class A *=n$10 [line 29]\n REMOVE_TEMPS(n$8,n$9,n$10); [line 29]\n " shape="box"] +11 [label="11: BinaryOperatorStmt: Assign \n n$8=*&other:class A * [line 29]\n n$9=*&self:class A * [line 29]\n n$10=*n$9._name:class A * [line 29]\n *n$8._name:class A *=n$10 [line 29]\n " shape="box"] 11 -> 10 ; -10 [label="10: BinaryOperatorStmt: Assign \n n$5=*&other:class A * [line 30]\n n$6=*&self:class A * [line 30]\n n$7=*n$6._last_name:class A * [line 30]\n *n$5._last_name:class A *=n$7 [line 30]\n REMOVE_TEMPS(n$5,n$6,n$7); [line 30]\n " shape="box"] +10 [label="10: BinaryOperatorStmt: Assign \n n$5=*&other:class A * [line 30]\n n$6=*&self:class A * [line 30]\n n$7=*n$6._last_name:class A * [line 30]\n *n$5._last_name:class A *=n$7 [line 30]\n " shape="box"] 10 -> 9 ; -9 [label="9: BinaryOperatorStmt: Assign \n n$2=*&other:class A * [line 31]\n n$3=*&self:class A * [line 31]\n n$4=*n$3._child:class A * [line 31]\n *n$2._child:class A *=n$4 [line 31]\n REMOVE_TEMPS(n$2,n$3,n$4); [line 31]\n NULLIFY(&self); [line 31]\n APPLY_ABSTRACTION; [line 31]\n " shape="box"] +9 [label="9: BinaryOperatorStmt: Assign \n n$2=*&other:class A * [line 31]\n n$3=*&self:class A * [line 31]\n n$4=*n$3._child:class A * [line 31]\n *n$2._child:class A *=n$4 [line 31]\n " shape="box"] 9 -> 6 ; -8 [label="8: Prune (false branch) \n n$1=*&other:class A * [line 28]\n PRUNE((n$1 == 0), false); [line 28]\n REMOVE_TEMPS(n$1); [line 28]\n APPLY_ABSTRACTION; [line 28]\n " shape="invhouse"] +8 [label="8: Prune (false branch) \n n$1=*&other:class A * [line 28]\n PRUNE((n$1 == 0), false); [line 28]\n " shape="invhouse"] 8 -> 6 ; -7 [label="7: Prune (true branch) \n n$1=*&other:class A * [line 28]\n PRUNE((n$1 != 0), true); [line 28]\n REMOVE_TEMPS(n$1); [line 28]\n " shape="invhouse"] +7 [label="7: Prune (true branch) \n n$1=*&other:class A * [line 28]\n PRUNE((n$1 != 0), true); [line 28]\n " shape="invhouse"] 7 -> 11 ; @@ -52,7 +52,7 @@ digraph iCFG { 6 -> 5 ; -5 [label="5: Return Stmt \n n$0=*&other:class A * [line 33]\n *&return:class A *=n$0 [line 33]\n REMOVE_TEMPS(n$0); [line 33]\n NULLIFY(&other); [line 33]\n APPLY_ABSTRACTION; [line 33]\n " shape="box"] +5 [label="5: Return Stmt \n n$0=*&other:class A * [line 33]\n *&return:class A *=n$0 [line 33]\n " shape="box"] 5 -> 4 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/property/PropertyImplSetter.dot b/infer/tests/codetoanalyze/objc/frontend/property/PropertyImplSetter.dot index 47f2c7aba..8b558747b 100644 --- a/infer/tests/codetoanalyze/objc/frontend/property/PropertyImplSetter.dot +++ b/infer/tests/codetoanalyze/objc/frontend/property/PropertyImplSetter.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -3 [label="3: BinaryOperatorStmt: Assign \n n$0=*&self:class PropertyImplSetter * [line 15]\n *n$0._maximumFileSize:int =0 [line 15]\n REMOVE_TEMPS(n$0); [line 15]\n NULLIFY(&self); [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +3 [label="3: BinaryOperatorStmt: Assign \n n$0=*&self:class PropertyImplSetter * [line 15]\n *n$0._maximumFileSize:int =0 [line 15]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/property/Property_getter.dot b/infer/tests/codetoanalyze/objc/frontend/property/Property_getter.dot index 05e24222f..7535a0091 100644 --- a/infer/tests/codetoanalyze/objc/frontend/property/Property_getter.dot +++ b/infer/tests/codetoanalyze/objc/frontend/property/Property_getter.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -3 [label="3: Return Stmt \n n$0=*&target:class A * [line 19]\n n$1=_fun_A_x(n$0:class A *) [line 19]\n *&return:int =n$1 [line 19]\n REMOVE_TEMPS(n$0,n$1); [line 19]\n NULLIFY(&target); [line 19]\n APPLY_ABSTRACTION; [line 19]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&target:class A * [line 19]\n n$1=_fun_A_x(n$0:class A *) [line 19]\n *&return:int =n$1 [line 19]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/property/main_car.dot b/infer/tests/codetoanalyze/objc/frontend/property/main_car.dot index 3b71230a6..1e14ed733 100644 --- a/infer/tests/codetoanalyze/objc/frontend/property/main_car.dot +++ b/infer/tests/codetoanalyze/objc/frontend/property/main_car.dot @@ -1,18 +1,18 @@ /* @generated */ digraph iCFG { -6 [label="6: DeclStmt \n n$4=_fun___objc_alloc_no_fail(sizeof(class Car ):unsigned long ) [line 13]\n n$5=_fun_NSObject_init(n$4:class Car *) virtual [line 13]\n *&honda:class Car *=n$5 [line 13]\n REMOVE_TEMPS(n$4,n$5); [line 13]\n " shape="box"] +6 [label="6: DeclStmt \n n$4=_fun___objc_alloc_no_fail(sizeof(class Car ):unsigned long ) [line 13]\n n$5=_fun_NSObject_init(n$4:class Car *) virtual [line 13]\n *&honda:class Car *=n$5 [line 13]\n " shape="box"] 6 -> 5 ; -5 [label="5: Message Call: setRunning: \n n$3=*&honda:class Car * [line 14]\n _fun_Car_setRunning:(n$3:class Car *,1:_Bool ) [line 14]\n REMOVE_TEMPS(n$3); [line 14]\n " shape="box"] +5 [label="5: Message Call: setRunning: \n n$3=*&honda:class Car * [line 14]\n _fun_Car_setRunning:(n$3:class Car *,1:_Bool ) [line 14]\n " shape="box"] 5 -> 4 ; -4 [label="4: Call _fun_NSLog \n n$0=_fun_NSString_stringWithUTF8String:(\"%d\":char *) [line 15]\n n$1=*&honda:class Car * [line 15]\n n$2=_fun_Car_running(n$1:class Car *) [line 15]\n _fun_NSLog(n$0:struct objc_object *,n$2:int ) [line 15]\n REMOVE_TEMPS(n$0,n$1,n$2); [line 15]\n NULLIFY(&honda); [line 15]\n " shape="box"] +4 [label="4: Call _fun_NSLog \n n$0=_fun_NSString_stringWithUTF8String:(\"%d\":char *) [line 15]\n n$1=*&honda:class Car * [line 15]\n n$2=_fun_Car_running(n$1:class Car *) [line 15]\n _fun_NSLog(n$0:struct objc_object *,n$2:int ) [line 15]\n " shape="box"] 4 -> 3 ; -3 [label="3: Return Stmt \n *&return:int =0 [line 16]\n APPLY_ABSTRACTION; [line 16]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =0 [line 16]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/protocol/protocol.dot b/infer/tests/codetoanalyze/objc/frontend/protocol/protocol.dot index b07324e67..0c0deb2d2 100644 --- a/infer/tests/codetoanalyze/objc/frontend/protocol/protocol.dot +++ b/infer/tests/codetoanalyze/objc/frontend/protocol/protocol.dot @@ -1,23 +1,23 @@ /* @generated */ digraph iCFG { -8 [label="8: Return Stmt \n APPLY_ABSTRACTION; [line 26]\n " shape="box"] +8 [label="8: Return Stmt \n " shape="box"] 8 -> 2 ; -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 [label="7: Prune (false branch) \n PRUNE((n$1 == 0), false); [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$1); [line 25]\n " shape="invhouse"] +6 [label="6: Prune (true branch) \n PRUNE((n$1 != 0), true); [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 REMOVE_TEMPS(n$0); [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 " shape="box"] 5 -> 6 ; 5 -> 7 ; -4 [label="4: between_join_and_exit \n APPLY_ABSTRACTION; [line 25]\n " shape="box"] +4 [label="4: between_join_and_exit \n " shape="box"] 4 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/returnstmt/void_return.dot b/infer/tests/codetoanalyze/objc/frontend/returnstmt/void_return.dot index cb9d9f188..dd54cb4b3 100644 --- a/infer/tests/codetoanalyze/objc/frontend/returnstmt/void_return.dot +++ b/infer/tests/codetoanalyze/objc/frontend/returnstmt/void_return.dot @@ -8,15 +8,15 @@ digraph iCFG { 14 -> 10 ; -13 [label="13: Return Stmt \n APPLY_ABSTRACTION; [line 22]\n " shape="box"] +13 [label="13: Return Stmt \n " shape="box"] 13 -> 2 ; -12 [label="12: Prune (false branch) \n PRUNE(((n$2 == 0) == 0), false); [line 21]\n REMOVE_TEMPS(n$2); [line 21]\n " shape="invhouse"] +12 [label="12: Prune (false branch) \n PRUNE(((n$2 == 0) == 0), false); [line 21]\n " shape="invhouse"] 12 -> 9 ; -11 [label="11: Prune (true branch) \n PRUNE(((n$2 == 0) != 0), true); [line 21]\n REMOVE_TEMPS(n$2); [line 21]\n NULLIFY(&i); [line 21]\n NULLIFY(&j); [line 21]\n " shape="invhouse"] +11 [label="11: Prune (true branch) \n PRUNE(((n$2 == 0) != 0), true); [line 21]\n " shape="invhouse"] 11 -> 13 ; @@ -29,24 +29,24 @@ digraph iCFG { 9 -> 5 ; -8 [label="8: UnaryOperator \n n$1=*&i:int [line 26]\n *&i:int =(n$1 + 1) [line 26]\n REMOVE_TEMPS(n$1); [line 26]\n NULLIFY(&i); [line 26]\n APPLY_ABSTRACTION; [line 26]\n " shape="box"] +8 [label="8: UnaryOperator \n n$1=*&i:int [line 26]\n *&i:int =(n$1 + 1) [line 26]\n " shape="box"] 8 -> 3 ; -7 [label="7: Prune (false branch) \n PRUNE(((n$0 == 0) == 0), false); [line 25]\n REMOVE_TEMPS(n$0); [line 25]\n NULLIFY(&i); [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="invhouse"] +7 [label="7: Prune (false branch) \n PRUNE(((n$0 == 0) == 0), false); [line 25]\n " shape="invhouse"] 7 -> 3 ; -6 [label="6: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 25]\n REMOVE_TEMPS(n$0); [line 25]\n " shape="invhouse"] +6 [label="6: Prune (true branch) \n PRUNE(((n$0 == 0) != 0), true); [line 25]\n " shape="invhouse"] 6 -> 8 ; -5 [label="5: BinaryOperatorStmt: EQ \n n$0=*&j:int [line 25]\n NULLIFY(&j); [line 25]\n " shape="box"] +5 [label="5: BinaryOperatorStmt: EQ \n n$0=*&j:int [line 25]\n " shape="box"] 5 -> 6 ; 5 -> 7 ; -4 [label="4: between_join_and_exit \n APPLY_ABSTRACTION; [line 25]\n " shape="box"] +4 [label="4: between_join_and_exit \n " shape="box"] 4 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/self_static/Self.dot b/infer/tests/codetoanalyze/objc/frontend/self_static/Self.dot index bcee0fff2..97589b569 100644 --- a/infer/tests/codetoanalyze/objc/frontend/self_static/Self.dot +++ b/infer/tests/codetoanalyze/objc/frontend/self_static/Self.dot @@ -1,27 +1,27 @@ /* @generated */ digraph iCFG { -52 [label="52: Return Stmt \n *&return:int =0 [line 98]\n APPLY_ABSTRACTION; [line 98]\n " shape="box"] +52 [label="52: Return Stmt \n *&return:int =0 [line 98]\n " shape="box"] 52 -> 45 ; -51 [label="51: Return Stmt \n *&return:int =1 [line 96]\n APPLY_ABSTRACTION; [line 96]\n " shape="box"] +51 [label="51: Return Stmt \n *&return:int =1 [line 96]\n " shape="box"] 51 -> 45 ; -50 [label="50: Prune (false branch) \n PRUNE(((sizeof(class A ) != n$15) == 0), false); [line 95]\n REMOVE_TEMPS(n$15); [line 95]\n " shape="invhouse"] +50 [label="50: Prune (false branch) \n PRUNE(((sizeof(class A ) != n$15) == 0), false); [line 95]\n " shape="invhouse"] 50 -> 52 ; -49 [label="49: Prune (true branch) \n PRUNE(((sizeof(class A ) != n$15) != 0), true); [line 95]\n REMOVE_TEMPS(n$15); [line 95]\n " shape="invhouse"] +49 [label="49: Prune (true branch) \n PRUNE(((sizeof(class A ) != n$15) != 0), true); [line 95]\n " shape="invhouse"] 49 -> 51 ; -48 [label="48: BinaryOperatorStmt: NE \n n$15=*&c:struct objc_class * [line 95]\n NULLIFY(&c); [line 95]\n " shape="box"] +48 [label="48: BinaryOperatorStmt: NE \n n$15=*&c:struct objc_class * [line 95]\n " shape="box"] 48 -> 49 ; 48 -> 50 ; -47 [label="47: between_join_and_exit \n APPLY_ABSTRACTION; [line 95]\n " shape="box"] +47 [label="47: between_join_and_exit \n " shape="box"] 47 -> 45 ; @@ -36,7 +36,7 @@ digraph iCFG { 44 -> 48 ; -43 [label="43: Return Stmt \n n$14=_fun_NSStringFromClass(sizeof(class A ):unsigned long ) [line 91]\n *&return:class NSString *=n$14 [line 91]\n REMOVE_TEMPS(n$14); [line 91]\n APPLY_ABSTRACTION; [line 91]\n " shape="box"] +43 [label="43: Return Stmt \n n$14=_fun_NSStringFromClass(sizeof(class A ):unsigned long ) [line 91]\n *&return:class NSString *=n$14 [line 91]\n " shape="box"] 43 -> 42 ; @@ -47,7 +47,7 @@ digraph iCFG { 41 -> 43 ; -40 [label="40: Message Call: init \n n$11=*&self:class A * [line 87]\n n$12=_fun_NSObject_init(n$11:class A *) [line 87]\n REMOVE_TEMPS(n$11,n$12); [line 87]\n NULLIFY(&self); [line 87]\n APPLY_ABSTRACTION; [line 87]\n " shape="box"] +40 [label="40: Message Call: init \n n$11=*&self:class A * [line 87]\n n$12=_fun_NSObject_init(n$11:class A *) [line 87]\n " shape="box"] 40 -> 39 ; @@ -58,7 +58,7 @@ digraph iCFG { 38 -> 40 ; -37 [label="37: Message Call: test_class \n _fun_C_test_class() [line 83]\n APPLY_ABSTRACTION; [line 83]\n " shape="box"] +37 [label="37: Message Call: test_class \n _fun_C_test_class() [line 83]\n " shape="box"] 37 -> 36 ; @@ -69,7 +69,7 @@ digraph iCFG { 35 -> 37 ; -34 [label="34: Return Stmt \n n$8=*&object:class B * [line 79]\n n$10=_fun_B_isC:(n$8:class B *,sizeof(class A ):unsigned long ) virtual [line 79]\n *&return:_Bool =n$10 [line 79]\n REMOVE_TEMPS(n$8,n$10); [line 79]\n NULLIFY(&object); [line 79]\n APPLY_ABSTRACTION; [line 79]\n " shape="box"] +34 [label="34: Return Stmt \n n$8=*&object:class B * [line 79]\n n$10=_fun_B_isC:(n$8:class B *,sizeof(class A ):unsigned long ) virtual [line 79]\n *&return:_Bool =n$10 [line 79]\n " shape="box"] 34 -> 33 ; @@ -80,11 +80,11 @@ digraph iCFG { 32 -> 34 ; -31 [label="31: DeclStmt \n n$6=_fun___objc_alloc_no_fail(sizeof(class B ):unsigned long ) [line 74]\n n$7=_fun_NSObject_init(n$6:class B *) virtual [line 74]\n *&b:class B *=n$7 [line 74]\n REMOVE_TEMPS(n$6,n$7); [line 74]\n NULLIFY(&b); [line 74]\n " shape="box"] +31 [label="31: DeclStmt \n n$6=_fun___objc_alloc_no_fail(sizeof(class B ):unsigned long ) [line 74]\n n$7=_fun_NSObject_init(n$6:class B *) virtual [line 74]\n *&b:class B *=n$7 [line 74]\n " shape="box"] 31 -> 30 ; -30 [label="30: Message Call: b_m \n _fun_B_b_m() [line 75]\n APPLY_ABSTRACTION; [line 75]\n " shape="box"] +30 [label="30: Message Call: b_m \n _fun_B_b_m() [line 75]\n " shape="box"] 30 -> 29 ; @@ -95,7 +95,7 @@ digraph iCFG { 28 -> 31 ; -27 [label="27: Message Call: test_class \n _fun_A_test_class() [line 70]\n APPLY_ABSTRACTION; [line 70]\n " shape="box"] +27 [label="27: Message Call: test_class \n _fun_A_test_class() [line 70]\n " shape="box"] 27 -> 26 ; @@ -106,7 +106,7 @@ digraph iCFG { 25 -> 27 ; -24 [label="24: Message Call: test_class \n _fun_A_test_class() [line 66]\n APPLY_ABSTRACTION; [line 66]\n " shape="box"] +24 [label="24: Message Call: test_class \n _fun_A_test_class() [line 66]\n " shape="box"] 24 -> 23 ; @@ -117,7 +117,7 @@ digraph iCFG { 22 -> 24 ; -21 [label="21: Call alloc \n n$3=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 62]\n REMOVE_TEMPS(n$3); [line 62]\n APPLY_ABSTRACTION; [line 62]\n " shape="box"] +21 [label="21: Call alloc \n n$3=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 62]\n " shape="box"] 21 -> 20 ; @@ -128,7 +128,7 @@ digraph iCFG { 19 -> 21 ; -18 [label="18: Call alloc \n n$1=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 58]\n REMOVE_TEMPS(n$1); [line 58]\n APPLY_ABSTRACTION; [line 58]\n " shape="box"] +18 [label="18: Call alloc \n n$1=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 58]\n " shape="box"] 18 -> 17 ; @@ -139,7 +139,7 @@ digraph iCFG { 16 -> 18 ; -15 [label="15: Message Call: test_class \n _fun_A_test_class() [line 54]\n APPLY_ABSTRACTION; [line 54]\n " shape="box"] +15 [label="15: Message Call: test_class \n _fun_A_test_class() [line 54]\n " shape="box"] 15 -> 14 ; @@ -157,7 +157,7 @@ digraph iCFG { 11 -> 12 ; -10 [label="10: Message Call: test \n n$0=*&self:class A * [line 47]\n _fun_A_test(n$0:class A *) virtual [line 47]\n REMOVE_TEMPS(n$0); [line 47]\n NULLIFY(&self); [line 47]\n APPLY_ABSTRACTION; [line 47]\n " shape="box"] +10 [label="10: Message Call: test \n n$0=*&self:class A * [line 47]\n _fun_A_test(n$0:class A *) virtual [line 47]\n " shape="box"] 10 -> 9 ; @@ -175,7 +175,7 @@ digraph iCFG { 6 -> 7 ; -5 [label="5: Return Stmt \n *&return:_Bool =1 [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +5 [label="5: Return Stmt \n *&return:_Bool =1 [line 24]\n " shape="box"] 5 -> 4 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/self_static/static.dot b/infer/tests/codetoanalyze/objc/frontend/self_static/static.dot index dd1aca598..9eb84bf0c 100644 --- a/infer/tests/codetoanalyze/objc/frontend/self_static/static.dot +++ b/infer/tests/codetoanalyze/objc/frontend/self_static/static.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -15 [label="15: Message Call: getX \n n$1=*&self:class MyClass * [line 37]\n n$2=_fun_MyClass_getX(n$1:class MyClass *) virtual [line 37]\n REMOVE_TEMPS(n$1,n$2); [line 37]\n NULLIFY(&self); [line 37]\n APPLY_ABSTRACTION; [line 37]\n " shape="box"] +15 [label="15: Message Call: getX \n n$1=*&self:class MyClass * [line 37]\n n$2=_fun_MyClass_getX(n$1:class MyClass *) virtual [line 37]\n " shape="box"] 15 -> 14 ; @@ -11,7 +11,7 @@ digraph iCFG { 13 -> 15 ; -12 [label="12: Return Stmt \n *&return:int =0 [line 33]\n APPLY_ABSTRACTION; [line 33]\n " shape="box"] +12 [label="12: Return Stmt \n *&return:int =0 [line 33]\n " shape="box"] 12 -> 11 ; @@ -22,7 +22,7 @@ digraph iCFG { 10 -> 12 ; -9 [label="9: Message Call: aClassMethod \n _fun_MyClass_aClassMethod() [line 29]\n APPLY_ABSTRACTION; [line 29]\n " shape="box"] +9 [label="9: Message Call: aClassMethod \n _fun_MyClass_aClassMethod() [line 29]\n " shape="box"] 9 -> 8 ; @@ -33,7 +33,7 @@ digraph iCFG { 7 -> 9 ; -6 [label="6: Message Call: aClassMethod \n _fun_MyClass_aClassMethod() [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="box"] +6 [label="6: Message Call: aClassMethod \n _fun_MyClass_aClassMethod() [line 25]\n " shape="box"] 6 -> 5 ; @@ -44,7 +44,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: DeclStmt \n n$0=_fun___objc_alloc_no_fail(sizeof(class MyClass ):unsigned long ) [line 21]\n *&myClass:class MyClass *=n$0 [line 21]\n REMOVE_TEMPS(n$0); [line 21]\n NULLIFY(&myClass); [line 21]\n APPLY_ABSTRACTION; [line 21]\n " shape="box"] +3 [label="3: DeclStmt \n n$0=_fun___objc_alloc_no_fail(sizeof(class MyClass ):unsigned long ) [line 21]\n *&myClass:class MyClass *=n$0 [line 21]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/strings/global_string_literal.dot b/infer/tests/codetoanalyze/objc/frontend/strings/global_string_literal.dot index 2c87889e1..464fd1c2f 100644 --- a/infer/tests/codetoanalyze/objc/frontend/strings/global_string_literal.dot +++ b/infer/tests/codetoanalyze/objc/frontend/strings/global_string_literal.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -3 [label="3: Return Stmt \n *&return:int =0 [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =0 [line 14]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/strings/string_literal.dot b/infer/tests/codetoanalyze/objc/frontend/strings/string_literal.dot index 356ad591f..d95a01358 100644 --- a/infer/tests/codetoanalyze/objc/frontend/strings/string_literal.dot +++ b/infer/tests/codetoanalyze/objc/frontend/strings/string_literal.dot @@ -1,10 +1,10 @@ /* @generated */ digraph iCFG { -4 [label="4: DeclStmt \n n$0=_fun_NSString_stringWithUTF8String:(\"Rodriguez\":char *) [line 13]\n *&lastName:class NSString *=n$0 [line 13]\n REMOVE_TEMPS(n$0); [line 13]\n NULLIFY(&lastName); [line 13]\n " shape="box"] +4 [label="4: DeclStmt \n n$0=_fun_NSString_stringWithUTF8String:(\"Rodriguez\":char *) [line 13]\n *&lastName:class NSString *=n$0 [line 13]\n " shape="box"] 4 -> 3 ; -3 [label="3: Return Stmt \n *&return:int =0 [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =0 [line 14]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/subclass/MyClass.dot b/infer/tests/codetoanalyze/objc/frontend/subclass/MyClass.dot index 25d2aadda..59fb707b6 100644 --- a/infer/tests/codetoanalyze/objc/frontend/subclass/MyClass.dot +++ b/infer/tests/codetoanalyze/objc/frontend/subclass/MyClass.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -3 [label="3: Return Stmt \n *&return:int =1 [line 15]\n APPLY_ABSTRACTION; [line 15]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =1 [line 15]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/subclass/MySubClass.dot b/infer/tests/codetoanalyze/objc/frontend/subclass/MySubClass.dot index cc457d984..635f7b1bc 100644 --- a/infer/tests/codetoanalyze/objc/frontend/subclass/MySubClass.dot +++ b/infer/tests/codetoanalyze/objc/frontend/subclass/MySubClass.dot @@ -1,10 +1,10 @@ /* @generated */ digraph iCFG { -4 [label="4: DeclStmt \n n$1=*&self:class MySubclass * [line 17]\n n$2=_fun_MyClass_myNumber(n$1:class MySubclass *) [line 17]\n *&subclassNumber:int =(n$2 + 1) [line 17]\n REMOVE_TEMPS(n$1,n$2); [line 17]\n NULLIFY(&self); [line 17]\n " shape="box"] +4 [label="4: DeclStmt \n n$1=*&self:class MySubclass * [line 17]\n n$2=_fun_MyClass_myNumber(n$1:class MySubclass *) [line 17]\n *&subclassNumber:int =(n$2 + 1) [line 17]\n " shape="box"] 4 -> 3 ; -3 [label="3: Return Stmt \n n$0=*&subclassNumber:int [line 18]\n *&return:int =n$0 [line 18]\n REMOVE_TEMPS(n$0); [line 18]\n NULLIFY(&subclassNumber); [line 18]\n APPLY_ABSTRACTION; [line 18]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&subclassNumber:int [line 18]\n *&return:int =n$0 [line 18]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/subclass/main.dot b/infer/tests/codetoanalyze/objc/frontend/subclass/main.dot index de3d96a7b..542006659 100644 --- a/infer/tests/codetoanalyze/objc/frontend/subclass/main.dot +++ b/infer/tests/codetoanalyze/objc/frontend/subclass/main.dot @@ -1,10 +1,10 @@ /* @generated */ digraph iCFG { -4 [label="4: DeclStmt \n n$0=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 13]\n n$1=_fun_NSObject_init(n$0:class A *) virtual [line 13]\n *&a:class A *=n$1 [line 13]\n REMOVE_TEMPS(n$0,n$1); [line 13]\n NULLIFY(&a); [line 13]\n " shape="box"] +4 [label="4: DeclStmt \n n$0=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 13]\n n$1=_fun_NSObject_init(n$0:class A *) virtual [line 13]\n *&a:class A *=n$1 [line 13]\n " shape="box"] 4 -> 3 ; -3 [label="3: Return Stmt \n *&return:int =0 [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =0 [line 14]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/types/attributes.dot b/infer/tests/codetoanalyze/objc/frontend/types/attributes.dot index 2ffbbc313..9eb9eb2f5 100644 --- a/infer/tests/codetoanalyze/objc/frontend/types/attributes.dot +++ b/infer/tests/codetoanalyze/objc/frontend/types/attributes.dot @@ -4,7 +4,7 @@ digraph iCFG { 14 -> 13 ; -13 [label="13: DeclStmt \n _fun___objc_retain(0:class A *) [line 23]\n *&aStrongRef:class A *=0 [line 23]\n NULLIFY(&aStrongRef); [line 23]\n " shape="box"] +13 [label="13: DeclStmt \n _fun___objc_retain(0:class A *) [line 23]\n *&aStrongRef:class A *=0 [line 23]\n " shape="box"] 13 -> 12 ; @@ -20,31 +20,31 @@ digraph iCFG { 10 -> 9 ; -9 [label="9: BinaryOperatorStmt: Assign \n n$9=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 29]\n *&aStrongRef:class A *=n$9 [line 29]\n REMOVE_TEMPS(n$9); [line 29]\n " shape="box"] +9 [label="9: BinaryOperatorStmt: Assign \n n$9=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 29]\n *&aStrongRef:class A *=n$9 [line 29]\n " shape="box"] 9 -> 8 ; -8 [label="8: BinaryOperatorStmt: Assign \n n$7=*&aStrongRef:class A * [line 31]\n _fun___objc_retain(n$7:class A *) [line 31]\n n$8=*&aStdRef:class A * [line 31]\n *&aStdRef:class A *=n$7 [line 31]\n _fun___objc_release(n$8:class A *) [line 31]\n REMOVE_TEMPS(n$7,n$8); [line 31]\n " shape="box"] +8 [label="8: BinaryOperatorStmt: Assign \n n$7=*&aStrongRef:class A * [line 31]\n _fun___objc_retain(n$7:class A *) [line 31]\n n$8=*&aStdRef:class A * [line 31]\n *&aStdRef:class A *=n$7 [line 31]\n _fun___objc_release(n$8:class A *) [line 31]\n " shape="box"] 8 -> 7 ; -7 [label="7: BinaryOperatorStmt: Assign \n _fun___objc_retain(0:class A *) [line 33]\n n$6=*&aStrongRef:class A * [line 33]\n *&aStrongRef:class A *=0 [line 33]\n _fun___objc_release(n$6:class A *) [line 33]\n REMOVE_TEMPS(n$6); [line 33]\n NULLIFY(&aStrongRef); [line 33]\n " shape="box"] +7 [label="7: BinaryOperatorStmt: Assign \n _fun___objc_retain(0:class A *) [line 33]\n n$6=*&aStrongRef:class A * [line 33]\n *&aStrongRef:class A *=0 [line 33]\n _fun___objc_release(n$6:class A *) [line 33]\n " shape="box"] 7 -> 6 ; -6 [label="6: BinaryOperatorStmt: Assign \n n$4=*&aStdRef:class A * [line 35]\n _fun___objc_retain(n$4:class A *) [line 35]\n n$5=*&aWeakRef:class A * [line 35]\n *&aWeakRef:class A *=n$4 [line 35]\n _fun___objc_release(n$5:class A *) [line 35]\n REMOVE_TEMPS(n$4,n$5); [line 35]\n NULLIFY(&aWeakRef); [line 35]\n " shape="box"] +6 [label="6: BinaryOperatorStmt: Assign \n n$4=*&aStdRef:class A * [line 35]\n _fun___objc_retain(n$4:class A *) [line 35]\n n$5=*&aWeakRef:class A * [line 35]\n *&aWeakRef:class A *=n$4 [line 35]\n _fun___objc_release(n$5:class A *) [line 35]\n " shape="box"] 6 -> 5 ; -5 [label="5: BinaryOperatorStmt: Assign \n n$2=*&aStdRef:class A * [line 37]\n _fun___objc_retain(n$2:class A *) [line 37]\n n$3=*&anAutoRelRef:class A * [line 37]\n *&anAutoRelRef:class A *=n$2 [line 37]\n _fun___objc_release(n$3:class A *) [line 37]\n REMOVE_TEMPS(n$2,n$3); [line 37]\n NULLIFY(&anAutoRelRef); [line 37]\n " shape="box"] +5 [label="5: BinaryOperatorStmt: Assign \n n$2=*&aStdRef:class A * [line 37]\n _fun___objc_retain(n$2:class A *) [line 37]\n n$3=*&anAutoRelRef:class A * [line 37]\n *&anAutoRelRef:class A *=n$2 [line 37]\n _fun___objc_release(n$3:class A *) [line 37]\n " shape="box"] 5 -> 4 ; -4 [label="4: BinaryOperatorStmt: Assign \n n$0=*&aStdRef:class A * [line 39]\n _fun___objc_retain(n$0:class A *) [line 39]\n n$1=*&anUnsafeUnretRef:class A * [line 39]\n *&anUnsafeUnretRef:class A *=n$0 [line 39]\n _fun___objc_release(n$1:class A *) [line 39]\n REMOVE_TEMPS(n$0,n$1); [line 39]\n NULLIFY(&aStdRef); [line 39]\n NULLIFY(&anUnsafeUnretRef); [line 39]\n " shape="box"] +4 [label="4: BinaryOperatorStmt: Assign \n n$0=*&aStdRef:class A * [line 39]\n _fun___objc_retain(n$0:class A *) [line 39]\n n$1=*&anUnsafeUnretRef:class A * [line 39]\n *&anUnsafeUnretRef:class A *=n$0 [line 39]\n _fun___objc_release(n$1:class A *) [line 39]\n " shape="box"] 4 -> 3 ; -3 [label="3: Return Stmt \n *&return:int =0 [line 42]\n APPLY_ABSTRACTION; [line 42]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =0 [line 42]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/types/testloop.dot b/infer/tests/codetoanalyze/objc/frontend/types/testloop.dot index e88917090..42683be8e 100644 --- a/infer/tests/codetoanalyze/objc/frontend/types/testloop.dot +++ b/infer/tests/codetoanalyze/objc/frontend/types/testloop.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -3 [label="3: Return Stmt \n n$0=*&#GB$__iPhoneVideoAdLayout:struct FBVideoAdLayout [line 45]\n *&return:struct FBVideoAdLayout =n$0 [line 45]\n REMOVE_TEMPS(n$0); [line 45]\n APPLY_ABSTRACTION; [line 45]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&#GB$__iPhoneVideoAdLayout:struct FBVideoAdLayout [line 45]\n *&return:struct FBVideoAdLayout =n$0 [line 45]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/types/void_call.dot b/infer/tests/codetoanalyze/objc/frontend/types/void_call.dot index 5112b637a..34ca109b2 100644 --- a/infer/tests/codetoanalyze/objc/frontend/types/void_call.dot +++ b/infer/tests/codetoanalyze/objc/frontend/types/void_call.dot @@ -4,32 +4,32 @@ digraph iCFG { 24 -> 23 ; -23 [label="23: Call _fun_foo1 \n n$9=*&x:int [line 36]\n _fun_foo1(n$9:int ) [line 36]\n REMOVE_TEMPS(n$9); [line 36]\n " shape="box"] +23 [label="23: Call _fun_foo1 \n n$9=*&x:int [line 36]\n _fun_foo1(n$9:int ) [line 36]\n " shape="box"] 23 -> 22 ; -22 [label="22: BinaryOperatorStmt: Assign \n n$7=*&x:int [line 38]\n n$8=_fun_bar1(n$7:int ) [line 38]\n *&x:int =n$8 [line 38]\n REMOVE_TEMPS(n$7,n$8); [line 38]\n " shape="box"] +22 [label="22: BinaryOperatorStmt: Assign \n n$7=*&x:int [line 38]\n n$8=_fun_bar1(n$7:int ) [line 38]\n *&x:int =n$8 [line 38]\n " shape="box"] 22 -> 21 ; -21 [label="21: DeclStmt \n n$6=_fun___objc_alloc_no_fail(sizeof(class AClass ):unsigned long ) [line 40]\n *&o:class AClass *=n$6 [line 40]\n REMOVE_TEMPS(n$6); [line 40]\n " shape="box"] +21 [label="21: DeclStmt \n n$6=_fun___objc_alloc_no_fail(sizeof(class AClass ):unsigned long ) [line 40]\n *&o:class AClass *=n$6 [line 40]\n " shape="box"] 21 -> 17 ; 21 -> 18 ; -20 [label="20: Message Call: foo: \n n$4=*&o:class AClass * [line 44]\n n$5=*&x:int [line 44]\n _fun_AClass_foo:(n$4:class AClass *,n$5:int ) virtual [line 44]\n REMOVE_TEMPS(n$4,n$5); [line 44]\n " shape="box"] +20 [label="20: Message Call: foo: \n n$4=*&o:class AClass * [line 44]\n n$5=*&x:int [line 44]\n _fun_AClass_foo:(n$4:class AClass *,n$5:int ) virtual [line 44]\n " shape="box"] 20 -> 19 ; -19 [label="19: BinaryOperatorStmt: Assign \n n$1=*&o:class AClass * [line 45]\n n$2=*&x:int [line 45]\n n$3=_fun_AClass_bar:(n$1:class AClass *,n$2:int ) virtual [line 45]\n *&x:int =n$3 [line 45]\n REMOVE_TEMPS(n$1,n$2,n$3); [line 45]\n NULLIFY(&o); [line 45]\n NULLIFY(&x); [line 45]\n APPLY_ABSTRACTION; [line 45]\n " shape="box"] +19 [label="19: BinaryOperatorStmt: Assign \n n$1=*&o:class AClass * [line 45]\n n$2=*&x:int [line 45]\n n$3=_fun_AClass_bar:(n$1:class AClass *,n$2:int ) virtual [line 45]\n *&x:int =n$3 [line 45]\n " shape="box"] 19 -> 16 ; -18 [label="18: Prune (false branch) \n n$0=*&o:class AClass * [line 42]\n PRUNE((n$0 == 0), false); [line 42]\n REMOVE_TEMPS(n$0); [line 42]\n NULLIFY(&o); [line 42]\n NULLIFY(&x); [line 42]\n APPLY_ABSTRACTION; [line 42]\n " shape="invhouse"] +18 [label="18: Prune (false branch) \n n$0=*&o:class AClass * [line 42]\n PRUNE((n$0 == 0), false); [line 42]\n " shape="invhouse"] 18 -> 16 ; -17 [label="17: Prune (true branch) \n n$0=*&o:class AClass * [line 42]\n PRUNE((n$0 != 0), true); [line 42]\n REMOVE_TEMPS(n$0); [line 42]\n " shape="invhouse"] +17 [label="17: Prune (true branch) \n n$0=*&o:class AClass * [line 42]\n PRUNE((n$0 != 0), true); [line 42]\n " shape="invhouse"] 17 -> 20 ; @@ -37,7 +37,7 @@ digraph iCFG { 16 -> 15 ; -15 [label="15: Return Stmt \n *&return:int =0 [line 48]\n APPLY_ABSTRACTION; [line 48]\n " shape="box"] +15 [label="15: Return Stmt \n *&return:int =0 [line 48]\n " shape="box"] 15 -> 14 ; @@ -48,7 +48,7 @@ digraph iCFG { 13 -> 24 ; -12 [label="12: Return Stmt \n n$0=*&a:int [line 31]\n *&a:int =(n$0 + 1) [line 31]\n *&return:int =n$0 [line 31]\n REMOVE_TEMPS(n$0); [line 31]\n NULLIFY(&a); [line 31]\n APPLY_ABSTRACTION; [line 31]\n " shape="box"] +12 [label="12: Return Stmt \n n$0=*&a:int [line 31]\n *&a:int =(n$0 + 1) [line 31]\n *&return:int =n$0 [line 31]\n " shape="box"] 12 -> 11 ; @@ -59,7 +59,7 @@ digraph iCFG { 10 -> 12 ; -9 [label="9: UnaryOperator \n n$0=*&a:int [line 29]\n *&a:int =(n$0 + 1) [line 29]\n REMOVE_TEMPS(n$0); [line 29]\n NULLIFY(&a); [line 29]\n APPLY_ABSTRACTION; [line 29]\n " shape="box"] +9 [label="9: UnaryOperator \n n$0=*&a:int [line 29]\n *&a:int =(n$0 + 1) [line 29]\n " shape="box"] 9 -> 8 ; @@ -70,7 +70,7 @@ digraph iCFG { 7 -> 9 ; -6 [label="6: Return Stmt \n n$1=*&a:int [line 24]\n *&a:int =(n$1 + 1) [line 24]\n *&return:int =n$1 [line 24]\n REMOVE_TEMPS(n$1); [line 24]\n NULLIFY(&a); [line 24]\n APPLY_ABSTRACTION; [line 24]\n " shape="box"] +6 [label="6: Return Stmt \n n$1=*&a:int [line 24]\n *&a:int =(n$1 + 1) [line 24]\n *&return:int =n$1 [line 24]\n " shape="box"] 6 -> 5 ; @@ -81,7 +81,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: UnaryOperator \n n$0=*&a:int [line 21]\n *&a:int =(n$0 + 1) [line 21]\n REMOVE_TEMPS(n$0); [line 21]\n NULLIFY(&a); [line 21]\n APPLY_ABSTRACTION; [line 21]\n " shape="box"] +3 [label="3: UnaryOperator \n n$0=*&a:int [line 21]\n *&a:int =(n$0 + 1) [line 21]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/vardecl/aclass.dot b/infer/tests/codetoanalyze/objc/frontend/vardecl/aclass.dot index fb6eddcf3..fddb3645b 100644 --- a/infer/tests/codetoanalyze/objc/frontend/vardecl/aclass.dot +++ b/infer/tests/codetoanalyze/objc/frontend/vardecl/aclass.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -3 [label="3: Return Stmt \n n$0=*&#GB$aVariable:class NSObject * [line 21]\n *&return:class NSObject *=n$0 [line 21]\n REMOVE_TEMPS(n$0); [line 21]\n APPLY_ABSTRACTION; [line 21]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&#GB$aVariable:class NSObject * [line 21]\n *&return:class NSObject *=n$0 [line 21]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/vardecl/aclass_2.dot b/infer/tests/codetoanalyze/objc/frontend/vardecl/aclass_2.dot index fb6eddcf3..fddb3645b 100644 --- a/infer/tests/codetoanalyze/objc/frontend/vardecl/aclass_2.dot +++ b/infer/tests/codetoanalyze/objc/frontend/vardecl/aclass_2.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -3 [label="3: Return Stmt \n n$0=*&#GB$aVariable:class NSObject * [line 21]\n *&return:class NSObject *=n$0 [line 21]\n REMOVE_TEMPS(n$0); [line 21]\n APPLY_ABSTRACTION; [line 21]\n " shape="box"] +3 [label="3: Return Stmt \n n$0=*&#GB$aVariable:class NSObject * [line 21]\n *&return:class NSObject *=n$0 [line 21]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/vardecl/initlist.dot b/infer/tests/codetoanalyze/objc/frontend/vardecl/initlist.dot index 9a425fbf1..44b42c8e1 100644 --- a/infer/tests/codetoanalyze/objc/frontend/vardecl/initlist.dot +++ b/infer/tests/codetoanalyze/objc/frontend/vardecl/initlist.dot @@ -1,14 +1,14 @@ /* @generated */ digraph iCFG { -8 [label="8: DeclStmt \n n$5=_fun___objc_alloc_no_fail(sizeof(class C ):unsigned long ) [line 22]\n *&c1:class C *=n$5 [line 22]\n REMOVE_TEMPS(n$5); [line 22]\n " shape="box"] +8 [label="8: DeclStmt \n n$5=_fun___objc_alloc_no_fail(sizeof(class C ):unsigned long ) [line 22]\n *&c1:class C *=n$5 [line 22]\n " shape="box"] 8 -> 7 ; -7 [label="7: DeclStmt \n n$4=_fun___objc_alloc_no_fail(sizeof(class C ):unsigned long ) [line 23]\n *&c2:class C *=n$4 [line 23]\n REMOVE_TEMPS(n$4); [line 23]\n " shape="box"] +7 [label="7: DeclStmt \n n$4=_fun___objc_alloc_no_fail(sizeof(class C ):unsigned long ) [line 23]\n *&c2:class C *=n$4 [line 23]\n " shape="box"] 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$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 [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 " shape="box"] 6 -> 5 ; @@ -19,7 +19,7 @@ digraph iCFG { 4 -> 8 ; -3 [label="3: DeclStmt \n n$0=*&z:int [line 14]\n *&a[0][0]:int =(n$0 + 1) [line 14]\n *&a[0][1]:int =2 [line 14]\n *&a[0][2]:int =3 [line 14]\n *&a[1][0]:int =5 [line 14]\n *&a[1][1]:int =6 [line 14]\n *&a[1][2]:int =7 [line 14]\n REMOVE_TEMPS(n$0); [line 14]\n NULLIFY(&a); [line 14]\n NULLIFY(&z); [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +3 [label="3: DeclStmt \n n$0=*&z:int [line 14]\n *&a[0][0]:int =(n$0 + 1) [line 14]\n *&a[0][1]:int =2 [line 14]\n *&a[0][2]:int =3 [line 14]\n *&a[1][0]:int =5 [line 14]\n *&a[1][1]:int =6 [line 14]\n *&a[1][2]:int =7 [line 14]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/vardecl/last_af.dot b/infer/tests/codetoanalyze/objc/frontend/vardecl/last_af.dot index 30ce0b4b9..518b7b762 100644 --- a/infer/tests/codetoanalyze/objc/frontend/vardecl/last_af.dot +++ b/infer/tests/codetoanalyze/objc/frontend/vardecl/last_af.dot @@ -4,7 +4,7 @@ digraph iCFG { 4 -> 3 ; -3 [label="3: DeclStmt \n n$0=*&a:int [line 10]\n *&b:int =(n$0 + 2) [line 10]\n REMOVE_TEMPS(n$0); [line 10]\n NULLIFY(&a); [line 10]\n NULLIFY(&b); [line 10]\n APPLY_ABSTRACTION; [line 10]\n " shape="box"] +3 [label="3: DeclStmt \n n$0=*&a:int [line 10]\n *&b:int =(n$0 + 2) [line 10]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/codetoanalyze/objcpp/frontend/funcoverloading/af_test.dot b/infer/tests/codetoanalyze/objcpp/frontend/funcoverloading/af_test.dot index b211fa14d..32c593167 100644 --- a/infer/tests/codetoanalyze/objcpp/frontend/funcoverloading/af_test.dot +++ b/infer/tests/codetoanalyze/objcpp/frontend/funcoverloading/af_test.dot @@ -1,6 +1,6 @@ /* @generated */ digraph iCFG { -6 [label="6: Return Stmt \n n$0=*&v:int [line 14]\n *&return:int =n$0 [line 14]\n REMOVE_TEMPS(n$0); [line 14]\n NULLIFY(&v); [line 14]\n APPLY_ABSTRACTION; [line 14]\n " shape="box"] +6 [label="6: Return Stmt \n n$0=*&v:int [line 14]\n *&return:int =n$0 [line 14]\n " shape="box"] 6 -> 5 ; @@ -11,7 +11,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: Return Stmt \n *&return:int =1 [line 12]\n APPLY_ABSTRACTION; [line 12]\n " shape="box"] +3 [label="3: Return Stmt \n *&return:int =1 [line 12]\n " shape="box"] 3 -> 2 ; diff --git a/infer/tests/endtoend/java/tracing/LazyDynamicDispatchTest.java b/infer/tests/endtoend/java/tracing/LazyDynamicDispatchTest.java index 757057425..09c927951 100644 --- a/infer/tests/endtoend/java/tracing/LazyDynamicDispatchTest.java +++ b/infer/tests/endtoend/java/tracing/LazyDynamicDispatchTest.java @@ -42,8 +42,8 @@ public class LazyDynamicDispatchTest { public void matchErrors() throws IOException, InterruptedException, InferException { String[] methods = { - "callWithSubtype", - "shouldReportLocalVarTypeIsKnown", + "callWithSubtype", + "shouldReportLocalVarTypeIsKnown", }; assertThat( "Results should contain " + NPE,