From 394a3b4c2908bb26ad4f66a3396d175b7d5d3407 Mon Sep 17 00:00:00 2001 From: Andrzej Kotulski Date: Tue, 11 Aug 2015 15:39:57 -0100 Subject: [PATCH] [CFrontend] Sizeof should have ulong type --- infer/src/clang/cTrans.ml | 2 +- infer/src/clang/cTrans_utils.ml | 4 ++-- .../cpp/frontend/builtin/new.dot | 4 ++-- .../objc/errors/category_procdesc/main.dot | 2 +- .../errors/field_superclass/SuperExample.dot | 2 +- .../memory_leaks_benchmark/ArcExample.dot | 4 ++-- .../AutoreleaseExample.dot | 8 +++---- .../MemoryLeakExample.dot | 2 +- .../RetainReleaseExample.dot | 2 +- .../RetainReleaseExample2.dot | 6 ++--- .../TollBridgeExample.dot | 6 ++--- .../memory_leaks_benchmark/arc_methods.dot | 4 ++-- .../errors/npe/Nonnull_attribute_example.dot | 2 +- .../objc/errors/protocol_procdesc/main.dot | 2 +- .../objc/frontend/block/BlockVar.dot | 2 +- .../objc/frontend/block/block-it.dot | 8 +++---- .../objc/frontend/block/block.dot | 6 ++--- .../objc/frontend/block/block_no_args.dot | 2 +- .../objc/frontend/block/block_release.dot | 2 +- .../objc/frontend/block/dispatch.dot | 8 +++---- .../objc/frontend/block/dispatch_examples.dot | 24 +++++++++---------- .../objc/frontend/block/retain_cycle.dot | 6 ++--- .../objc/frontend/block/static.dot | 14 +++++------ .../frontend/exceptions/ExceptionExample.dot | 4 ++-- .../frontend/property/PropertyAttributes.dot | 4 ++-- .../objc/frontend/property/main_car.dot | 2 +- .../objc/frontend/self_static/Self.dot | 10 ++++---- .../objc/frontend/self_static/static.dot | 2 +- .../objc/frontend/subclass/main.dot | 2 +- .../objc/frontend/types/attributes.dot | 2 +- .../objc/frontend/types/void_call.dot | 2 +- .../objc/frontend/vardecl/initlist.dot | 4 ++-- 32 files changed, 77 insertions(+), 77 deletions(-) diff --git a/infer/src/clang/cTrans.ml b/infer/src/clang/cTrans.ml index 40f96f5d0..6bb2b2f56 100644 --- a/infer/src/clang/cTrans.ml +++ b/infer/src/clang/cTrans.ml @@ -181,7 +181,7 @@ struct with Self.SelfClassException class_name -> let typ = CTypes_decl.type_name_to_sil_type trans_state.context.CContext.tenv class_name in { empty_res_trans with - exps = [(Sil.Sizeof(typ, Sil.Subtype.exact), typ)]} + exps = [(Sil.Sizeof(typ, Sil.Subtype.exact), Sil.Tint Sil.IULong)] } (* Execute translation of e forcing to release priority (if it's not free) and then setting it back.*) (* This is used in conditional operators where we need to force the priority to be free for the *) diff --git a/infer/src/clang/cTrans_utils.ml b/infer/src/clang/cTrans_utils.ml index 173671285..038cba728 100644 --- a/infer/src/clang/cTrans_utils.ml +++ b/infer/src/clang/cTrans_utils.ml @@ -280,7 +280,7 @@ let create_alloc_instrs context sil_loc function_type fname = function_type, CTypes_decl.expand_structured_type context.CContext.tenv styp | _ -> Sil.Tptr (function_type, Sil.Pk_pointer), function_type in let sizeof_exp = Sil.Sizeof (function_type_np, Sil.Subtype.exact) in - let exp = (sizeof_exp, function_type) in + let exp = (sizeof_exp, Sil.Tint Sil.IULong) in let ret_id = Ident.create_fresh Ident.knormal in let stmt_call = Sil.Call([ret_id], (Sil.Const (Sil.Cfun fname)), [exp], sil_loc, Sil.cf_default) in (function_type, ret_id, stmt_call, Sil.Var ret_id) @@ -336,7 +336,7 @@ let create_cast_instrs context exp cast_from_typ cast_to_typ sil_loc = CTypes_decl.expand_structured_type context.CContext.tenv (CTypes.remove_pointer_to_typ cast_to_typ) in let sizeof_exp = Sil.Sizeof (cast_typ_no_pointer, Sil.Subtype.exact) in let pname = SymExec.ModelBuiltins.__objc_cast in - let args = [(exp, cast_from_typ); (sizeof_exp, Sil.Tvoid)] in + let args = [(exp, cast_from_typ); (sizeof_exp, Sil.Tint Sil.IULong)] in let stmt_call = Sil.Call([ret_id], (Sil.Const (Sil.Cfun pname)), args, sil_loc, Sil.cf_default) in (ret_id, stmt_call, Sil.Var ret_id) diff --git a/infer/tests/codetoanalyze/cpp/frontend/builtin/new.dot b/infer/tests/codetoanalyze/cpp/frontend/builtin/new.dot index ef2fb0f2a..d3a2266e1 100644 --- a/infer/tests/codetoanalyze/cpp/frontend/builtin/new.dot +++ b/infer/tests/codetoanalyze/cpp/frontend/builtin/new.dot @@ -3,11 +3,11 @@ digraph iCFG { 6 -> 5 ; -5 [label="5: DeclStmt \n n$2=_fun___new(sizeof(int ):int *) [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 REMOVE_TEMPS(n$2); [line 12]\n " shape="box"] 5 -> 4 ; -4 [label="4: Call C++ new \n n$1=_fun___new(sizeof(int ):int *) [line 13]\n REMOVE_TEMPS(n$1); [line 13]\n " shape="box"] +4 [label="4: Call C++ new \n n$1=_fun___new(sizeof(int ):unsigned long ) [line 13]\n REMOVE_TEMPS(n$1); [line 13]\n " shape="box"] 4 -> 3 ; diff --git a/infer/tests/codetoanalyze/objc/errors/category_procdesc/main.dot b/infer/tests/codetoanalyze/objc/errors/category_procdesc/main.dot index 4f93f78c4..60403bcc8 100644 --- a/infer/tests/codetoanalyze/objc/errors/category_procdesc/main.dot +++ b/infer/tests/codetoanalyze/objc/errors/category_procdesc/main.dot @@ -1,5 +1,5 @@ digraph iCFG { -6 [label="6: DeclStmt \n n$4=_fun___objc_alloc_no_fail(sizeof(class EOCPerson ):class EOCPerson *) [line 13]\n n$2=_fun_EOCPerson_init(n$4:class EOCPerson *) virtual [line 13]\n *&person:class EOCPerson *=n$2 [line 13]\n REMOVE_TEMPS(n$2,n$4); [line 13]\n " shape="box"] +6 [label="6: DeclStmt \n n$4=_fun___objc_alloc_no_fail(sizeof(class EOCPerson ):unsigned long ) [line 13]\n n$2=_fun_EOCPerson_init(n$4:class EOCPerson *) virtual [line 13]\n *&person:class EOCPerson *=n$2 [line 13]\n REMOVE_TEMPS(n$2,n$4); [line 13]\n " shape="box"] 6 -> 5 ; diff --git a/infer/tests/codetoanalyze/objc/errors/field_superclass/SuperExample.dot b/infer/tests/codetoanalyze/objc/errors/field_superclass/SuperExample.dot index c88bff4dc..76790b399 100644 --- a/infer/tests/codetoanalyze/objc/errors/field_superclass/SuperExample.dot +++ b/infer/tests/codetoanalyze/objc/errors/field_superclass/SuperExample.dot @@ -1,5 +1,5 @@ digraph iCFG { -12 [label="12: DeclStmt \n n$6=_fun___objc_alloc_no_fail(sizeof(class A ):class A *) [line 45]\n n$7=_fun_A_init(n$6:class A *) virtual [line 45]\n *&a:struct objc_object *=n$7 [line 46]\n REMOVE_TEMPS(n$6,n$7); [line 46]\n NULLIFY(&a,false); [line 46]\n " shape="box"] +12 [label="12: DeclStmt \n n$6=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 45]\n n$7=_fun_A_init(n$6:class A *) virtual [line 45]\n *&a:struct objc_object *=n$7 [line 46]\n REMOVE_TEMPS(n$6,n$7); [line 46]\n NULLIFY(&a,false); [line 46]\n " shape="box"] 12 -> 11 ; 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 faa8d08e9..9bd2a4ca6 100644 --- a/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/ArcExample.dot +++ b/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/ArcExample.dot @@ -21,7 +21,7 @@ digraph iCFG { 9 -> 11 ; -8 [label="8: DeclStmt \n n$6=_fun___objc_alloc_no_fail(sizeof(class NSString ):class NSString *) [line 29]\n *&s:class NSString *=n$6 [line 29]\n REMOVE_TEMPS(n$6); [line 29]\n " shape="box"] +8 [label="8: DeclStmt \n n$6=_fun___objc_alloc_no_fail(sizeof(class NSString ):unsigned long ) [line 29]\n *&s:class NSString *=n$6 [line 29]\n REMOVE_TEMPS(n$6); [line 29]\n " shape="box"] 8 -> 7 ; @@ -36,7 +36,7 @@ digraph iCFG { 5 -> 8 ; -4 [label="4: DeclStmt \n n$3=_fun___objc_alloc_no_fail(sizeof(class NSString ):class NSString *) [line 23]\n *&s:class NSString *=n$3 [line 23]\n REMOVE_TEMPS(n$3); [line 23]\n " shape="box"] +4 [label="4: DeclStmt \n n$3=_fun___objc_alloc_no_fail(sizeof(class NSString ):unsigned long ) [line 23]\n *&s:class NSString *=n$3 [line 23]\n REMOVE_TEMPS(n$3); [line 23]\n " shape="box"] 4 -> 3 ; 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 931c7da90..d5907aaa0 100644 --- a/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/AutoreleaseExample.dot +++ b/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/AutoreleaseExample.dot @@ -1,9 +1,9 @@ digraph iCFG { -41 [label="41: DeclStmt \n n$30=_fun___objc_alloc_no_fail(sizeof(class NSAutoreleasePool ):class NSAutoreleasePool *) [line 60]\n n$28=_fun_NSAutoreleasePool_init(n$30:class NSAutoreleasePool *) [line 60]\n *&pool:class NSAutoreleasePool *=n$28 [line 60]\n REMOVE_TEMPS(n$28,n$30); [line 60]\n " shape="box"] +41 [label="41: DeclStmt \n n$30=_fun___objc_alloc_no_fail(sizeof(class NSAutoreleasePool ):unsigned long ) [line 60]\n n$28=_fun_NSAutoreleasePool_init(n$30:class NSAutoreleasePool *) [line 60]\n *&pool:class NSAutoreleasePool *=n$28 [line 60]\n REMOVE_TEMPS(n$28,n$30); [line 60]\n " shape="box"] 41 -> 40 ; -40 [label="40: DeclStmt \n n$27=_fun___objc_alloc_no_fail(sizeof(class NSString ):class NSString *) [line 61]\n n$25=_fun___set_autorelease_attribute(n$27:class NSString *) [line 61]\n *&string:class NSString *=n$25 [line 61]\n REMOVE_TEMPS(n$25,n$27); [line 61]\n " shape="box"] +40 [label="40: DeclStmt \n n$27=_fun___objc_alloc_no_fail(sizeof(class NSString ):unsigned long ) [line 61]\n n$25=_fun___set_autorelease_attribute(n$27:class NSString *) [line 61]\n *&string:class NSString *=n$25 [line 61]\n REMOVE_TEMPS(n$25,n$27); [line 61]\n " shape="box"] 40 -> 39 ; @@ -104,7 +104,7 @@ digraph iCFG { 15 -> 25 ; -14 [label="14: DeclStmt \n n$12=_fun___objc_alloc_no_fail(sizeof(class A ):class A *) [line 30]\n n$10=_fun_A_init(n$12:class A *) virtual [line 30]\n *&s1:class A *=n$10 [line 30]\n REMOVE_TEMPS(n$10,n$12); [line 30]\n " shape="box"] +14 [label="14: DeclStmt \n n$12=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 30]\n n$10=_fun_A_init(n$12:class A *) virtual [line 30]\n *&s1:class A *=n$10 [line 30]\n REMOVE_TEMPS(n$10,n$12); [line 30]\n " shape="box"] 14 -> 13 ; @@ -141,7 +141,7 @@ digraph iCFG { 5 -> 7 ; -4 [label="4: DeclStmt \n n$3=_fun___objc_alloc_no_fail(sizeof(class NSString ):class NSString *) [line 23]\n *&s:class NSString *=n$3 [line 23]\n REMOVE_TEMPS(n$3); [line 23]\n " shape="box"] +4 [label="4: DeclStmt \n n$3=_fun___objc_alloc_no_fail(sizeof(class NSString ):unsigned long ) [line 23]\n *&s:class NSString *=n$3 [line 23]\n REMOVE_TEMPS(n$3); [line 23]\n " shape="box"] 4 -> 3 ; 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 35d603da8..ca4ff413b 100644 --- a/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/MemoryLeakExample.dot +++ b/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/MemoryLeakExample.dot @@ -156,7 +156,7 @@ digraph iCFG { 7 -> 10 ; -6 [label="6: DeclStmt \n n$6=_fun___objc_alloc_no_fail(sizeof(class UIView ):class UIView *) [line 21]\n *&attachmentContainerView:class UIView *=n$6 [line 21]\n REMOVE_TEMPS(n$6); [line 21]\n " shape="box"] +6 [label="6: DeclStmt \n n$6=_fun___objc_alloc_no_fail(sizeof(class UIView ):unsigned long ) [line 21]\n *&attachmentContainerView:class UIView *=n$6 [line 21]\n REMOVE_TEMPS(n$6); [line 21]\n " shape="box"] 6 -> 5 ; 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 3ca65cc22..a825f2b61 100644 --- a/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/RetainReleaseExample.dot +++ b/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/RetainReleaseExample.dot @@ -1,5 +1,5 @@ digraph iCFG { -5 [label="5: DeclStmt \n n$5=_fun___objc_alloc_no_fail(sizeof(class A ):class A *) [line 21]\n n$3=_fun_A_init(n$5:class A *) virtual [line 21]\n *&a:class A *=n$3 [line 21]\n REMOVE_TEMPS(n$3,n$5); [line 21]\n " shape="box"] +5 [label="5: DeclStmt \n n$5=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 21]\n n$3=_fun_A_init(n$5:class A *) virtual [line 21]\n *&a:class A *=n$3 [line 21]\n REMOVE_TEMPS(n$3,n$5); [line 21]\n " shape="box"] 5 -> 4 ; 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 e62b376fb..c2fef7dd5 100644 --- a/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/RetainReleaseExample2.dot +++ b/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/RetainReleaseExample2.dot @@ -23,7 +23,7 @@ digraph iCFG { 27 -> 30 ; 27 -> 31 ; -26 [label="26: DeclStmt \n n$21=_fun___objc_alloc_no_fail(sizeof(class A ):class A *) [line 62]\n n$19=_fun_A_init(n$21:class A *) virtual [line 62]\n *&a:class A *=n$19 [line 62]\n REMOVE_TEMPS(n$19,n$21); [line 62]\n " shape="box"] +26 [label="26: DeclStmt \n n$21=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 62]\n n$19=_fun_A_init(n$21:class A *) virtual [line 62]\n *&a:class A *=n$19 [line 62]\n REMOVE_TEMPS(n$19,n$21); [line 62]\n " shape="box"] 26 -> 25 ; @@ -42,7 +42,7 @@ digraph iCFG { 22 -> 26 ; -21 [label="21: DeclStmt \n n$15=_fun___objc_alloc_no_fail(sizeof(class A ):class A *) [line 55]\n n$13=_fun_A_init(n$15:class A *) virtual [line 55]\n *&a:class A *=n$13 [line 55]\n REMOVE_TEMPS(n$13,n$15); [line 55]\n " shape="box"] +21 [label="21: DeclStmt \n n$15=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 55]\n n$13=_fun_A_init(n$15:class A *) virtual [line 55]\n *&a:class A *=n$13 [line 55]\n REMOVE_TEMPS(n$13,n$15); [line 55]\n " shape="box"] 21 -> 20 ; @@ -98,7 +98,7 @@ digraph iCFG { 7 -> 10 ; -6 [label="6: DeclStmt \n n$6=_fun___objc_alloc_no_fail(sizeof(class A ):class A *) [line 26]\n n$4=_fun_A_init(n$6:class A *) virtual [line 26]\n *&a:class A *=n$4 [line 26]\n REMOVE_TEMPS(n$4,n$6); [line 26]\n " shape="box"] +6 [label="6: DeclStmt \n n$6=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 26]\n n$4=_fun_A_init(n$6:class A *) virtual [line 26]\n *&a:class A *=n$4 [line 26]\n REMOVE_TEMPS(n$4,n$6); [line 26]\n " shape="box"] 6 -> 5 ; 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 8c64f78f5..8b34439e3 100644 --- a/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/TollBridgeExample.dot +++ b/infer/tests/codetoanalyze/objc/errors/memory_leaks_benchmark/TollBridgeExample.dot @@ -1,5 +1,5 @@ digraph iCFG { -19 [label="19: Return Stmt \n n$10=_fun___builtin___CFStringMakeConstantString(\"Icon\":char *) [line 43]\n n$11=_fun_CTFontCreateWithName(n$10:struct __CFString *,17.000000:double ,0:CGAffineTransform *) [line 43]\n n$12=_fun___objc_cast(n$11:void *,sizeof(void ):void ) [line 43]\n *&return:struct __CTFont *=n$12 [line 43]\n REMOVE_TEMPS(n$10,n$11,n$12); [line 43]\n APPLY_ABSTRACTION; [line 43]\n " shape="box"] +19 [label="19: Return Stmt \n n$10=_fun___builtin___CFStringMakeConstantString(\"Icon\":char *) [line 43]\n n$11=_fun_CTFontCreateWithName(n$10:struct __CFString *,17.000000:double ,0:CGAffineTransform *) [line 43]\n n$12=_fun___objc_cast(n$11:void *,sizeof(void ):unsigned long ) [line 43]\n *&return:struct __CTFont *=n$12 [line 43]\n REMOVE_TEMPS(n$10,n$11,n$12); [line 43]\n APPLY_ABSTRACTION; [line 43]\n " shape="box"] 19 -> 18 ; @@ -14,7 +14,7 @@ digraph iCFG { 16 -> 15 ; -15 [label="15: Call _fun_CFBridgingRelease \n n$7=*&ref:struct __CFDictionary * [line 39]\n n$8=_fun___objc_cast(n$7:void *,sizeof(struct objc_object ):void ) [line 39]\n REMOVE_TEMPS(n$7,n$8); [line 39]\n NULLIFY(&ref,false); [line 39]\n APPLY_ABSTRACTION; [line 39]\n " shape="box"] +15 [label="15: Call _fun_CFBridgingRelease \n n$7=*&ref:struct __CFDictionary * [line 39]\n n$8=_fun___objc_cast(n$7:void *,sizeof(struct objc_object ):unsigned long ) [line 39]\n REMOVE_TEMPS(n$7,n$8); [line 39]\n NULLIFY(&ref,false); [line 39]\n APPLY_ABSTRACTION; [line 39]\n " shape="box"] 15 -> 14 ; @@ -25,7 +25,7 @@ digraph iCFG { 13 -> 16 ; -12 [label="12: DeclStmt \n n$6=_fun___objc_alloc_no_fail(sizeof(class NSLocale ):class NSLocale *) [line 32]\n *&observer:struct objc_object *=n$6 [line 32]\n REMOVE_TEMPS(n$6); [line 32]\n " shape="box"] +12 [label="12: DeclStmt \n n$6=_fun___objc_alloc_no_fail(sizeof(class NSLocale ):unsigned long ) [line 32]\n *&observer:struct objc_object *=n$6 [line 32]\n REMOVE_TEMPS(n$6); [line 32]\n " shape="box"] 12 -> 11 ; 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 d5ecbc215..6a0ccfb68 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 @@ -26,7 +26,7 @@ digraph iCFG { 9 -> 15 ; -8 [label="8: DeclStmt \n n$8=_fun___objc_alloc_no_fail(sizeof(class A ):class A *) [line 28]\n n$6=_fun_A_init(n$8:class A *) virtual [line 28]\n *&a:class A *=n$6 [line 28]\n REMOVE_TEMPS(n$6,n$8); [line 28]\n " shape="box"] +8 [label="8: DeclStmt \n n$8=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 28]\n n$6=_fun_A_init(n$8:class A *) virtual [line 28]\n *&a:class A *=n$6 [line 28]\n REMOVE_TEMPS(n$6,n$8); [line 28]\n " shape="box"] 8 -> 7 ; @@ -41,7 +41,7 @@ digraph iCFG { 5 -> 8 ; -4 [label="4: DeclStmt \n n$3=_fun___objc_alloc_no_fail(sizeof(class A ):class A *) [line 23]\n n$1=_fun_A_init(n$3:class A *) virtual [line 23]\n *&a:class A *=n$1 [line 23]\n REMOVE_TEMPS(n$1,n$3); [line 23]\n " shape="box"] +4 [label="4: DeclStmt \n n$3=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 23]\n n$1=_fun_A_init(n$3:class A *) virtual [line 23]\n *&a:class A *=n$1 [line 23]\n REMOVE_TEMPS(n$1,n$3); [line 23]\n " shape="box"] 4 -> 3 ; 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 f8139f6fb..a127c6447 100644 --- a/infer/tests/codetoanalyze/objc/errors/npe/Nonnull_attribute_example.dot +++ b/infer/tests/codetoanalyze/objc/errors/npe/Nonnull_attribute_example.dot @@ -63,7 +63,7 @@ digraph iCFG { 4 -> 9 ; -3 [label="3: Return Stmt \n n$1=_fun___objc_alloc_no_fail(sizeof(class A ):class A *) [line 25]\n n$2=_fun_A_init(n$1:class A *) virtual [line 25]\n *&return:class A *=n$2 [line 25]\n n$3=_fun___set_autorelease_attribute(n$2:class A *) [line 25]\n REMOVE_TEMPS(n$1,n$2,n$3); [line 25]\n APPLY_ABSTRACTION; [line 25]\n " shape="box"] +3 [label="3: Return Stmt \n n$1=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 25]\n n$2=_fun_A_init(n$1:class A *) virtual [line 25]\n *&return:class A *=n$2 [line 25]\n n$3=_fun___set_autorelease_attribute(n$2:class A *) [line 25]\n REMOVE_TEMPS(n$1,n$2,n$3); [line 25]\n APPLY_ABSTRACTION; [line 25]\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 d5e7439e2..81d995d7a 100644 --- a/infer/tests/codetoanalyze/objc/errors/protocol_procdesc/main.dot +++ b/infer/tests/codetoanalyze/objc/errors/protocol_procdesc/main.dot @@ -1,5 +1,5 @@ digraph iCFG { -5 [label="5: DeclStmt \n n$2=_fun___objc_alloc_no_fail(sizeof(class Bicycle ):class Bicycle *) [line 15]\n *&bike:class Bicycle *=n$2 [line 15]\n REMOVE_TEMPS(n$2); [line 15]\n " shape="box"] +5 [label="5: DeclStmt \n n$2=_fun___objc_alloc_no_fail(sizeof(class Bicycle ):unsigned long ) [line 15]\n *&bike:class Bicycle *=n$2 [line 15]\n REMOVE_TEMPS(n$2); [line 15]\n " shape="box"] 5 -> 4 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/block/BlockVar.dot b/infer/tests/codetoanalyze/objc/frontend/block/BlockVar.dot index c510dd15e..42c9da0be 100644 --- a/infer/tests/codetoanalyze/objc/frontend/block/BlockVar.dot +++ b/infer/tests/codetoanalyze/objc/frontend/block/BlockVar.dot @@ -18,7 +18,7 @@ digraph iCFG { 8 -> 12 ; -7 [label="7: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_BlockVar_navigateToURLInBackground:resolver:______1); [line 21]\n n$6=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_BlockVar_navigateToURLInBackground:resolver:______1 ):class __objc_anonymous_block_BlockVar_navigateToURLInBackground:resolver:______1 *) [line 21]\n *&__objc_anonymous_block_BlockVar_navigateToURLInBackground:resolver:______1:class __objc_anonymous_block_BlockVar_navigateToURLInBackground:resolver:______1 =n$6 [line 21]\n *&addBlock:_fn_ (*)=(_fun___objc_anonymous_block_BlockVar_navigateToURLInBackground:resolver:______1) [line 21]\n REMOVE_TEMPS(n$6); [line 21]\n " shape="box"] +7 [label="7: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_BlockVar_navigateToURLInBackground:resolver:______1); [line 21]\n n$6=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_BlockVar_navigateToURLInBackground:resolver:______1 ):unsigned long ) [line 21]\n *&__objc_anonymous_block_BlockVar_navigateToURLInBackground:resolver:______1:class __objc_anonymous_block_BlockVar_navigateToURLInBackground:resolver:______1 =n$6 [line 21]\n *&addBlock:_fn_ (*)=(_fun___objc_anonymous_block_BlockVar_navigateToURLInBackground:resolver:______1) [line 21]\n REMOVE_TEMPS(n$6); [line 21]\n " shape="box"] 7 -> 6 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/block/block-it.dot b/infer/tests/codetoanalyze/objc/frontend/block/block-it.dot index a8cda156d..112040be3 100644 --- a/infer/tests/codetoanalyze/objc/frontend/block/block-it.dot +++ b/infer/tests/codetoanalyze/objc/frontend/block/block-it.dot @@ -1,5 +1,5 @@ digraph iCFG { -52 [label="52: DeclStmt \n n$47=_fun___objc_alloc_no_fail(sizeof(class NSArray ):class NSArray *) [line 30]\n n$45=_fun_NSArray_init(n$47:class NSArray *) virtual [line 30]\n *&a:class NSArray *=n$45 [line 30]\n REMOVE_TEMPS(n$45,n$47); [line 30]\n " shape="box"] +52 [label="52: DeclStmt \n n$47=_fun___objc_alloc_no_fail(sizeof(class NSArray ):unsigned long ) [line 30]\n n$45=_fun_NSArray_init(n$47:class NSArray *) virtual [line 30]\n *&a:class NSArray *=n$45 [line 30]\n REMOVE_TEMPS(n$45,n$47); [line 30]\n " shape="box"] 52 -> 51 ; @@ -31,7 +31,7 @@ digraph iCFG { 45 -> 48 ; 45 -> 49 ; -44 [label="44: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_MyBlock_array_trans______2); [line 35]\n n$43=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_MyBlock_array_trans______2 ):class __objc_anonymous_block_MyBlock_array_trans______2 *) [line 35]\n *&__objc_anonymous_block_MyBlock_array_trans______2:class __objc_anonymous_block_MyBlock_array_trans______2 =n$43 [line 35]\n *&enumerateObjectsUsingBlock:_fn_ (*)=(_fun___objc_anonymous_block_MyBlock_array_trans______2) [line 35]\n REMOVE_TEMPS(n$43); [line 35]\n " shape="box"] +44 [label="44: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_MyBlock_array_trans______2); [line 35]\n n$43=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_MyBlock_array_trans______2 ):unsigned long ) [line 35]\n *&__objc_anonymous_block_MyBlock_array_trans______2:class __objc_anonymous_block_MyBlock_array_trans______2 =n$43 [line 35]\n *&enumerateObjectsUsingBlock:_fn_ (*)=(_fun___objc_anonymous_block_MyBlock_array_trans______2) [line 35]\n REMOVE_TEMPS(n$43); [line 35]\n " shape="box"] 44 -> 43 ; @@ -104,7 +104,7 @@ digraph iCFG { 27 -> 52 ; -26 [label="26: DeclStmt \n n$24=_fun___objc_alloc_no_fail(sizeof(class NSArray ):class NSArray *) [line 14]\n n$22=_fun_NSArray_init(n$24:class NSArray *) virtual [line 14]\n *&a:class NSArray *=n$22 [line 14]\n REMOVE_TEMPS(n$22,n$24); [line 14]\n " shape="box"] +26 [label="26: DeclStmt \n n$24=_fun___objc_alloc_no_fail(sizeof(class NSArray ):unsigned long ) [line 14]\n n$22=_fun_NSArray_init(n$24:class NSArray *) virtual [line 14]\n *&a:class NSArray *=n$22 [line 14]\n REMOVE_TEMPS(n$22,n$24); [line 14]\n " shape="box"] 26 -> 25 ; @@ -136,7 +136,7 @@ digraph iCFG { 19 -> 22 ; 19 -> 23 ; -18 [label="18: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_MyBlock_array______1); [line 15]\n n$20=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_MyBlock_array______1 ):class __objc_anonymous_block_MyBlock_array______1 *) [line 15]\n *&__objc_anonymous_block_MyBlock_array______1:class __objc_anonymous_block_MyBlock_array______1 =n$20 [line 15]\n *&infer___objc_anonymous_block_MyBlock_array______1:_fn_ (*)=(_fun___objc_anonymous_block_MyBlock_array______1) [line 15]\n REMOVE_TEMPS(n$20); [line 15]\n " shape="box"] +18 [label="18: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_MyBlock_array______1); [line 15]\n n$20=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_MyBlock_array______1 ):unsigned long ) [line 15]\n *&__objc_anonymous_block_MyBlock_array______1:class __objc_anonymous_block_MyBlock_array______1 =n$20 [line 15]\n *&infer___objc_anonymous_block_MyBlock_array______1:_fn_ (*)=(_fun___objc_anonymous_block_MyBlock_array______1) [line 15]\n REMOVE_TEMPS(n$20); [line 15]\n " shape="box"] 18 -> 17 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/block/block.dot b/infer/tests/codetoanalyze/objc/frontend/block/block.dot index ad5dc54e6..364dc4cb1 100644 --- a/infer/tests/codetoanalyze/objc/frontend/block/block.dot +++ b/infer/tests/codetoanalyze/objc/frontend/block/block.dot @@ -18,7 +18,7 @@ digraph iCFG { 21 -> 20 ; -20 [label="20: BinaryOperatorStmt: Assign \n DECLARE_LOCALS(&__objc_anonymous_block_main1______2); [line 19]\n n$25=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_main1______2 ):class __objc_anonymous_block_main1______2 *) [line 19]\n *&__objc_anonymous_block_main1______2:class __objc_anonymous_block_main1______2 =n$25 [line 19]\n n$26=*&x:int [line 19]\n *n$25.x:int =n$26 [line 19]\n n$10=*&x:int [line 19]\n *&addblock:_fn_ (*)=(_fun___objc_anonymous_block_main1______2,n$10) [line 19]\n REMOVE_TEMPS(n$25,n$26,n$10); [line 19]\n " shape="box"] +20 [label="20: BinaryOperatorStmt: Assign \n DECLARE_LOCALS(&__objc_anonymous_block_main1______2); [line 19]\n n$25=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_main1______2 ):unsigned long ) [line 19]\n *&__objc_anonymous_block_main1______2:class __objc_anonymous_block_main1______2 =n$25 [line 19]\n n$26=*&x:int [line 19]\n *n$25.x:int =n$26 [line 19]\n n$10=*&x:int [line 19]\n *&addblock:_fn_ (*)=(_fun___objc_anonymous_block_main1______2,n$10) [line 19]\n REMOVE_TEMPS(n$25,n$26,n$10); [line 19]\n " shape="box"] 20 -> 10 ; @@ -26,7 +26,7 @@ digraph iCFG { 19 -> 18 ; -18 [label="18: BinaryOperatorStmt: Assign \n DECLARE_LOCALS(&__objc_anonymous_block___objc_anonymous_block_main1______2______3); [line 25]\n n$22=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block___objc_anonymous_block_main1______2______3 ):class __objc_anonymous_block___objc_anonymous_block_main1______2______3 *) [line 25]\n *&__objc_anonymous_block___objc_anonymous_block_main1______2______3:class __objc_anonymous_block___objc_anonymous_block_main1______2______3 =n$22 [line 25]\n n$23=*&x:int [line 25]\n n$24=*&bla:int [line 25]\n *n$22.bla:int =n$23 [line 25]\n *n$22.x:int =n$24 [line 25]\n n$16=*&x:int [line 25]\n n$17=*&bla:int [line 25]\n *&addblock2:_fn_ (*)=(_fun___objc_anonymous_block___objc_anonymous_block_main1______2______3,n$16,n$17) [line 25]\n REMOVE_TEMPS(n$22,n$23,n$24,n$16,n$17); [line 25]\n " shape="box"] +18 [label="18: BinaryOperatorStmt: Assign \n DECLARE_LOCALS(&__objc_anonymous_block___objc_anonymous_block_main1______2______3); [line 25]\n n$22=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block___objc_anonymous_block_main1______2______3 ):unsigned long ) [line 25]\n *&__objc_anonymous_block___objc_anonymous_block_main1______2______3:class __objc_anonymous_block___objc_anonymous_block_main1______2______3 =n$22 [line 25]\n n$23=*&x:int [line 25]\n n$24=*&bla:int [line 25]\n *n$22.bla:int =n$23 [line 25]\n *n$22.x:int =n$24 [line 25]\n n$16=*&x:int [line 25]\n n$17=*&bla:int [line 25]\n *&addblock2:_fn_ (*)=(_fun___objc_anonymous_block___objc_anonymous_block_main1______2______3,n$16,n$17) [line 25]\n REMOVE_TEMPS(n$22,n$23,n$24,n$16,n$17); [line 25]\n " shape="box"] 18 -> 14 ; @@ -60,7 +60,7 @@ digraph iCFG { 10 -> 9 ; -9 [label="9: BinaryOperatorStmt: Assign \n DECLARE_LOCALS(&__objc_anonymous_block_main1______1); [line 36]\n n$7=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_main1______1 ):class __objc_anonymous_block_main1______1 *) [line 36]\n *&__objc_anonymous_block_main1______1:class __objc_anonymous_block_main1______1 =n$7 [line 36]\n *&addblock:_fn_ (*)=(_fun___objc_anonymous_block_main1______1) [line 36]\n REMOVE_TEMPS(n$7); [line 36]\n " shape="box"] +9 [label="9: BinaryOperatorStmt: Assign \n DECLARE_LOCALS(&__objc_anonymous_block_main1______1); [line 36]\n n$7=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_main1______1 ):unsigned long ) [line 36]\n *&__objc_anonymous_block_main1______1:class __objc_anonymous_block_main1______1 =n$7 [line 36]\n *&addblock:_fn_ (*)=(_fun___objc_anonymous_block_main1______1) [line 36]\n REMOVE_TEMPS(n$7); [line 36]\n " shape="box"] 9 -> 5 ; 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 8eec37c7f..3d6dc8007 100644 --- a/infer/tests/codetoanalyze/objc/frontend/block/block_no_args.dot +++ b/infer/tests/codetoanalyze/objc/frontend/block/block_no_args.dot @@ -7,7 +7,7 @@ digraph iCFG { 9 -> 8 ; -8 [label="8: BinaryOperatorStmt: Assign \n DECLARE_LOCALS(&__objc_anonymous_block_My_manager_my_mehtod______1); [line 26]\n n$4=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_My_manager_my_mehtod______1 ):class __objc_anonymous_block_My_manager_my_mehtod______1 *) [line 26]\n *&__objc_anonymous_block_My_manager_my_mehtod______1:class __objc_anonymous_block_My_manager_my_mehtod______1 =n$4 [line 26]\n n$5=*&z:int [line 26]\n *n$4.z:int =n$5 [line 26]\n n$2=*&z:int [line 26]\n *&b:_fn_ (*)=(_fun___objc_anonymous_block_My_manager_my_mehtod______1,n$2) [line 26]\n REMOVE_TEMPS(n$4,n$5,n$2); [line 26]\n " shape="box"] +8 [label="8: BinaryOperatorStmt: Assign \n DECLARE_LOCALS(&__objc_anonymous_block_My_manager_my_mehtod______1); [line 26]\n n$4=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_My_manager_my_mehtod______1 ):unsigned long ) [line 26]\n *&__objc_anonymous_block_My_manager_my_mehtod______1:class __objc_anonymous_block_My_manager_my_mehtod______1 =n$4 [line 26]\n n$5=*&z:int [line 26]\n *n$4.z:int =n$5 [line 26]\n n$2=*&z:int [line 26]\n *&b:_fn_ (*)=(_fun___objc_anonymous_block_My_manager_my_mehtod______1,n$2) [line 26]\n REMOVE_TEMPS(n$4,n$5,n$2); [line 26]\n " shape="box"] 8 -> 4 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/block/block_release.dot b/infer/tests/codetoanalyze/objc/frontend/block/block_release.dot index 833021ca9..0783b6dd7 100644 --- a/infer/tests/codetoanalyze/objc/frontend/block/block_release.dot +++ b/infer/tests/codetoanalyze/objc/frontend/block/block_release.dot @@ -15,7 +15,7 @@ digraph iCFG { 16 -> 15 ; -15 [label="15: BinaryOperatorStmt: Assign \n DECLARE_LOCALS(&__objc_anonymous_block_My_manager_my_mehtod______1); [line 29]\n n$8=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_My_manager_my_mehtod______1 ):class __objc_anonymous_block_My_manager_my_mehtod______1 *) [line 29]\n *&__objc_anonymous_block_My_manager_my_mehtod______1:class __objc_anonymous_block_My_manager_my_mehtod______1 =n$8 [line 29]\n n$9=*&newImage:struct CGImage * [line 29]\n *n$8.newImage:struct CGImage *=n$9 [line 29]\n n$5=*&newImage:struct CGImage * [line 29]\n *&b:_fn_ (*)=(_fun___objc_anonymous_block_My_manager_my_mehtod______1,n$5) [line 29]\n REMOVE_TEMPS(n$8,n$9,n$5); [line 29]\n " shape="box"] +15 [label="15: BinaryOperatorStmt: Assign \n DECLARE_LOCALS(&__objc_anonymous_block_My_manager_my_mehtod______1); [line 29]\n n$8=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_My_manager_my_mehtod______1 ):unsigned long ) [line 29]\n *&__objc_anonymous_block_My_manager_my_mehtod______1:class __objc_anonymous_block_My_manager_my_mehtod______1 =n$8 [line 29]\n n$9=*&newImage:struct CGImage * [line 29]\n *n$8.newImage:struct CGImage *=n$9 [line 29]\n n$5=*&newImage:struct CGImage * [line 29]\n *&b:_fn_ (*)=(_fun___objc_anonymous_block_My_manager_my_mehtod______1,n$5) [line 29]\n REMOVE_TEMPS(n$8,n$9,n$5); [line 29]\n " shape="box"] 15 -> 8 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/block/dispatch.dot b/infer/tests/codetoanalyze/objc/frontend/block/dispatch.dot index b86bdfe9f..fcd53a658 100644 --- a/infer/tests/codetoanalyze/objc/frontend/block/dispatch.dot +++ b/infer/tests/codetoanalyze/objc/frontend/block/dispatch.dot @@ -40,7 +40,7 @@ digraph iCFG { 17 -> 19 ; -16 [label="16: BinaryOperatorStmt: Assign \n n$11=_fun___objc_alloc_no_fail(sizeof(class A ):class A *) [line 41]\n n$9=_fun_A_init(n$11:class A *) virtual [line 41]\n *&#GB$A_trans_SI_sharedInstance:struct objc_object *=n$9 [line 41]\n REMOVE_TEMPS(n$9,n$11); [line 41]\n APPLY_ABSTRACTION; [line 41]\n " shape="box"] +16 [label="16: BinaryOperatorStmt: Assign \n n$11=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 41]\n n$9=_fun_A_init(n$11:class A *) virtual [line 41]\n *&#GB$A_trans_SI_sharedInstance:struct objc_object *=n$9 [line 41]\n REMOVE_TEMPS(n$9,n$11); [line 41]\n APPLY_ABSTRACTION; [line 41]\n " shape="box"] 16 -> 15 ; @@ -51,7 +51,7 @@ digraph iCFG { 14 -> 16 ; -13 [label="13: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_A_trans_SI______2); [line 40]\n n$12=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_trans_SI______2 ):class __objc_anonymous_block_A_trans_SI______2 *) [line 40]\n *&__objc_anonymous_block_A_trans_SI______2:class __objc_anonymous_block_A_trans_SI______2 =n$12 [line 40]\n *&dummy_block:_fn_ (*)=(_fun___objc_anonymous_block_A_trans_SI______2) [line 40]\n REMOVE_TEMPS(n$12); [line 40]\n " shape="box"] +13 [label="13: DeclStmt \n DECLARE_LOCALS(&__objc_anonymous_block_A_trans_SI______2); [line 40]\n n$12=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_trans_SI______2 ):unsigned long ) [line 40]\n *&__objc_anonymous_block_A_trans_SI______2:class __objc_anonymous_block_A_trans_SI______2 =n$12 [line 40]\n *&dummy_block:_fn_ (*)=(_fun___objc_anonymous_block_A_trans_SI______2) [line 40]\n REMOVE_TEMPS(n$12); [line 40]\n " shape="box"] 13 -> 12 ; @@ -70,7 +70,7 @@ digraph iCFG { 9 -> 13 ; -8 [label="8: BinaryOperatorStmt: Assign \n n$5=_fun___objc_alloc_no_fail(sizeof(class A ):class A *) [line 29]\n n$3=_fun_A_init(n$5:class A *) virtual [line 29]\n *&#GB$A_sharedInstance_sharedInstance:struct objc_object *=n$3 [line 29]\n REMOVE_TEMPS(n$3,n$5); [line 29]\n APPLY_ABSTRACTION; [line 29]\n " shape="box"] +8 [label="8: BinaryOperatorStmt: Assign \n n$5=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 29]\n n$3=_fun_A_init(n$5:class A *) virtual [line 29]\n *&#GB$A_sharedInstance_sharedInstance:struct objc_object *=n$3 [line 29]\n REMOVE_TEMPS(n$3,n$5); [line 29]\n APPLY_ABSTRACTION; [line 29]\n " shape="box"] 8 -> 7 ; @@ -81,7 +81,7 @@ digraph iCFG { 6 -> 8 ; -5 [label="5: DeclStmt \n DECLARE_LOCALS(&infer___objc_anonymous_block_A_sharedInstance______1); [line 30]\n DECLARE_LOCALS(&__objc_anonymous_block_A_sharedInstance______1); [line 28]\n n$6=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_sharedInstance______1 ):class __objc_anonymous_block_A_sharedInstance______1 *) [line 28]\n *&__objc_anonymous_block_A_sharedInstance______1:class __objc_anonymous_block_A_sharedInstance______1 =n$6 [line 28]\n *&infer___objc_anonymous_block_A_sharedInstance______1:_fn_ (*)=(_fun___objc_anonymous_block_A_sharedInstance______1) [line 30]\n REMOVE_TEMPS(n$6); [line 30]\n " shape="box"] +5 [label="5: DeclStmt \n DECLARE_LOCALS(&infer___objc_anonymous_block_A_sharedInstance______1); [line 30]\n DECLARE_LOCALS(&__objc_anonymous_block_A_sharedInstance______1); [line 28]\n n$6=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_sharedInstance______1 ):unsigned long ) [line 28]\n *&__objc_anonymous_block_A_sharedInstance______1:class __objc_anonymous_block_A_sharedInstance______1 =n$6 [line 28]\n *&infer___objc_anonymous_block_A_sharedInstance______1:_fn_ (*)=(_fun___objc_anonymous_block_A_sharedInstance______1) [line 30]\n REMOVE_TEMPS(n$6); [line 30]\n " shape="box"] 5 -> 4 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/block/dispatch_examples.dot b/infer/tests/codetoanalyze/objc/frontend/block/dispatch_examples.dot index 398d5722b..7a5934295 100644 --- a/infer/tests/codetoanalyze/objc/frontend/block/dispatch_examples.dot +++ b/infer/tests/codetoanalyze/objc/frontend/block/dispatch_examples.dot @@ -3,7 +3,7 @@ digraph iCFG { 60 -> 55 ; -59 [label="59: BinaryOperatorStmt: Assign \n n$52=_fun___objc_alloc_no_fail(sizeof(class A ):class A *) [line 71]\n n$50=_fun_A_init(n$52:class A *) virtual [line 71]\n *&#GB$A_dispatch_barrier_example_a:class A *=n$50 [line 71]\n REMOVE_TEMPS(n$50,n$52); [line 71]\n " shape="box"] +59 [label="59: BinaryOperatorStmt: Assign \n n$52=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 71]\n n$50=_fun_A_init(n$52:class A *) virtual [line 71]\n *&#GB$A_dispatch_barrier_example_a:class A *=n$50 [line 71]\n REMOVE_TEMPS(n$50,n$52); [line 71]\n " shape="box"] 59 -> 58 ; @@ -18,7 +18,7 @@ digraph iCFG { 56 -> 59 ; -55 [label="55: DeclStmt \n DECLARE_LOCALS(&infer___objc_anonymous_block_A_dispatch_barrier_example______6); [line 70]\n DECLARE_LOCALS(&__objc_anonymous_block_A_dispatch_barrier_example______6); [line 70]\n n$53=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_dispatch_barrier_example______6 ):class __objc_anonymous_block_A_dispatch_barrier_example______6 *) [line 70]\n *&__objc_anonymous_block_A_dispatch_barrier_example______6:class __objc_anonymous_block_A_dispatch_barrier_example______6 =n$53 [line 70]\n *&infer___objc_anonymous_block_A_dispatch_barrier_example______6:_fn_ (*)=(_fun___objc_anonymous_block_A_dispatch_barrier_example______6) [line 70]\n REMOVE_TEMPS(n$53); [line 70]\n " shape="box"] +55 [label="55: DeclStmt \n DECLARE_LOCALS(&infer___objc_anonymous_block_A_dispatch_barrier_example______6); [line 70]\n DECLARE_LOCALS(&__objc_anonymous_block_A_dispatch_barrier_example______6); [line 70]\n n$53=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_dispatch_barrier_example______6 ):unsigned long ) [line 70]\n *&__objc_anonymous_block_A_dispatch_barrier_example______6:class __objc_anonymous_block_A_dispatch_barrier_example______6 =n$53 [line 70]\n *&infer___objc_anonymous_block_A_dispatch_barrier_example______6:_fn_ (*)=(_fun___objc_anonymous_block_A_dispatch_barrier_example______6) [line 70]\n REMOVE_TEMPS(n$53); [line 70]\n " shape="box"] 55 -> 54 ; @@ -41,7 +41,7 @@ digraph iCFG { 50 -> 45 ; -49 [label="49: BinaryOperatorStmt: Assign \n n$43=_fun___objc_alloc_no_fail(sizeof(class A ):class A *) [line 62]\n n$41=_fun_A_init(n$43:class A *) virtual [line 62]\n *&#GB$A_dispatch_group_notify_example_a:class A *=n$41 [line 62]\n REMOVE_TEMPS(n$41,n$43); [line 62]\n " shape="box"] +49 [label="49: BinaryOperatorStmt: Assign \n n$43=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 62]\n n$41=_fun_A_init(n$43:class A *) virtual [line 62]\n *&#GB$A_dispatch_group_notify_example_a:class A *=n$41 [line 62]\n REMOVE_TEMPS(n$41,n$43); [line 62]\n " shape="box"] 49 -> 48 ; @@ -56,7 +56,7 @@ digraph iCFG { 46 -> 49 ; -45 [label="45: DeclStmt \n DECLARE_LOCALS(&infer___objc_anonymous_block_A_dispatch_group_notify_example______5); [line 61]\n DECLARE_LOCALS(&__objc_anonymous_block_A_dispatch_group_notify_example______5); [line 61]\n n$44=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_dispatch_group_notify_example______5 ):class __objc_anonymous_block_A_dispatch_group_notify_example______5 *) [line 61]\n *&__objc_anonymous_block_A_dispatch_group_notify_example______5:class __objc_anonymous_block_A_dispatch_group_notify_example______5 =n$44 [line 61]\n *&infer___objc_anonymous_block_A_dispatch_group_notify_example______5:_fn_ (*)=(_fun___objc_anonymous_block_A_dispatch_group_notify_example______5) [line 61]\n REMOVE_TEMPS(n$44); [line 61]\n " shape="box"] +45 [label="45: DeclStmt \n DECLARE_LOCALS(&infer___objc_anonymous_block_A_dispatch_group_notify_example______5); [line 61]\n DECLARE_LOCALS(&__objc_anonymous_block_A_dispatch_group_notify_example______5); [line 61]\n n$44=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_dispatch_group_notify_example______5 ):unsigned long ) [line 61]\n *&__objc_anonymous_block_A_dispatch_group_notify_example______5:class __objc_anonymous_block_A_dispatch_group_notify_example______5 =n$44 [line 61]\n *&infer___objc_anonymous_block_A_dispatch_group_notify_example______5:_fn_ (*)=(_fun___objc_anonymous_block_A_dispatch_group_notify_example______5) [line 61]\n REMOVE_TEMPS(n$44); [line 61]\n " shape="box"] 45 -> 44 ; @@ -79,7 +79,7 @@ digraph iCFG { 40 -> 35 ; -39 [label="39: BinaryOperatorStmt: Assign \n n$34=_fun___objc_alloc_no_fail(sizeof(class A ):class A *) [line 53]\n n$32=_fun_A_init(n$34:class A *) virtual [line 53]\n *&#GB$A_dispatch_group_example_a:class A *=n$32 [line 53]\n REMOVE_TEMPS(n$32,n$34); [line 53]\n " shape="box"] +39 [label="39: BinaryOperatorStmt: Assign \n n$34=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 53]\n n$32=_fun_A_init(n$34:class A *) virtual [line 53]\n *&#GB$A_dispatch_group_example_a:class A *=n$32 [line 53]\n REMOVE_TEMPS(n$32,n$34); [line 53]\n " shape="box"] 39 -> 38 ; @@ -94,7 +94,7 @@ digraph iCFG { 36 -> 39 ; -35 [label="35: DeclStmt \n DECLARE_LOCALS(&infer___objc_anonymous_block_A_dispatch_group_example______4); [line 52]\n DECLARE_LOCALS(&__objc_anonymous_block_A_dispatch_group_example______4); [line 52]\n n$35=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_dispatch_group_example______4 ):class __objc_anonymous_block_A_dispatch_group_example______4 *) [line 52]\n *&__objc_anonymous_block_A_dispatch_group_example______4:class __objc_anonymous_block_A_dispatch_group_example______4 =n$35 [line 52]\n *&infer___objc_anonymous_block_A_dispatch_group_example______4:_fn_ (*)=(_fun___objc_anonymous_block_A_dispatch_group_example______4) [line 52]\n REMOVE_TEMPS(n$35); [line 52]\n " shape="box"] +35 [label="35: DeclStmt \n DECLARE_LOCALS(&infer___objc_anonymous_block_A_dispatch_group_example______4); [line 52]\n DECLARE_LOCALS(&__objc_anonymous_block_A_dispatch_group_example______4); [line 52]\n n$35=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_dispatch_group_example______4 ):unsigned long ) [line 52]\n *&__objc_anonymous_block_A_dispatch_group_example______4:class __objc_anonymous_block_A_dispatch_group_example______4 =n$35 [line 52]\n *&infer___objc_anonymous_block_A_dispatch_group_example______4:_fn_ (*)=(_fun___objc_anonymous_block_A_dispatch_group_example______4) [line 52]\n REMOVE_TEMPS(n$35); [line 52]\n " shape="box"] 35 -> 34 ; @@ -117,7 +117,7 @@ digraph iCFG { 30 -> 25 ; -29 [label="29: BinaryOperatorStmt: Assign \n n$25=_fun___objc_alloc_no_fail(sizeof(class A ):class A *) [line 44]\n n$23=_fun_A_init(n$25:class A *) virtual [line 44]\n *&#GB$A_dispatch_after_example_a:class A *=n$23 [line 44]\n REMOVE_TEMPS(n$23,n$25); [line 44]\n " shape="box"] +29 [label="29: BinaryOperatorStmt: Assign \n n$25=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 44]\n n$23=_fun_A_init(n$25:class A *) virtual [line 44]\n *&#GB$A_dispatch_after_example_a:class A *=n$23 [line 44]\n REMOVE_TEMPS(n$23,n$25); [line 44]\n " shape="box"] 29 -> 28 ; @@ -132,7 +132,7 @@ digraph iCFG { 26 -> 29 ; -25 [label="25: DeclStmt \n DECLARE_LOCALS(&infer___objc_anonymous_block_A_dispatch_after_example______3); [line 42]\n DECLARE_LOCALS(&__objc_anonymous_block_A_dispatch_after_example______3); [line 43]\n n$26=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_dispatch_after_example______3 ):class __objc_anonymous_block_A_dispatch_after_example______3 *) [line 43]\n *&__objc_anonymous_block_A_dispatch_after_example______3:class __objc_anonymous_block_A_dispatch_after_example______3 =n$26 [line 43]\n *&infer___objc_anonymous_block_A_dispatch_after_example______3:_fn_ (*)=(_fun___objc_anonymous_block_A_dispatch_after_example______3) [line 42]\n REMOVE_TEMPS(n$26); [line 42]\n " shape="box"] +25 [label="25: DeclStmt \n DECLARE_LOCALS(&infer___objc_anonymous_block_A_dispatch_after_example______3); [line 42]\n DECLARE_LOCALS(&__objc_anonymous_block_A_dispatch_after_example______3); [line 43]\n n$26=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_dispatch_after_example______3 ):unsigned long ) [line 43]\n *&__objc_anonymous_block_A_dispatch_after_example______3:class __objc_anonymous_block_A_dispatch_after_example______3 =n$26 [line 43]\n *&infer___objc_anonymous_block_A_dispatch_after_example______3:_fn_ (*)=(_fun___objc_anonymous_block_A_dispatch_after_example______3) [line 42]\n REMOVE_TEMPS(n$26); [line 42]\n " shape="box"] 25 -> 24 ; @@ -155,7 +155,7 @@ digraph iCFG { 20 -> 15 ; -19 [label="19: BinaryOperatorStmt: Assign \n n$16=_fun___objc_alloc_no_fail(sizeof(class A ):class A *) [line 34]\n n$14=_fun_A_init(n$16:class A *) virtual [line 34]\n *&#GB$A_dispatch_async_example_a:class A *=n$14 [line 34]\n REMOVE_TEMPS(n$14,n$16); [line 34]\n " shape="box"] +19 [label="19: BinaryOperatorStmt: Assign \n n$16=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 34]\n n$14=_fun_A_init(n$16:class A *) virtual [line 34]\n *&#GB$A_dispatch_async_example_a:class A *=n$14 [line 34]\n REMOVE_TEMPS(n$14,n$16); [line 34]\n " shape="box"] 19 -> 18 ; @@ -170,7 +170,7 @@ digraph iCFG { 16 -> 19 ; -15 [label="15: DeclStmt \n DECLARE_LOCALS(&infer___objc_anonymous_block_A_dispatch_async_example______2); [line 33]\n DECLARE_LOCALS(&__objc_anonymous_block_A_dispatch_async_example______2); [line 33]\n n$17=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_dispatch_async_example______2 ):class __objc_anonymous_block_A_dispatch_async_example______2 *) [line 33]\n *&__objc_anonymous_block_A_dispatch_async_example______2:class __objc_anonymous_block_A_dispatch_async_example______2 =n$17 [line 33]\n *&infer___objc_anonymous_block_A_dispatch_async_example______2:_fn_ (*)=(_fun___objc_anonymous_block_A_dispatch_async_example______2) [line 33]\n REMOVE_TEMPS(n$17); [line 33]\n " shape="box"] +15 [label="15: DeclStmt \n DECLARE_LOCALS(&infer___objc_anonymous_block_A_dispatch_async_example______2); [line 33]\n DECLARE_LOCALS(&__objc_anonymous_block_A_dispatch_async_example______2); [line 33]\n n$17=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_dispatch_async_example______2 ):unsigned long ) [line 33]\n *&__objc_anonymous_block_A_dispatch_async_example______2:class __objc_anonymous_block_A_dispatch_async_example______2 =n$17 [line 33]\n *&infer___objc_anonymous_block_A_dispatch_async_example______2:_fn_ (*)=(_fun___objc_anonymous_block_A_dispatch_async_example______2) [line 33]\n REMOVE_TEMPS(n$17); [line 33]\n " shape="box"] 15 -> 14 ; @@ -193,7 +193,7 @@ digraph iCFG { 10 -> 5 ; -9 [label="9: BinaryOperatorStmt: Assign \n n$7=_fun___objc_alloc_no_fail(sizeof(class A ):class A *) [line 25]\n n$5=_fun_A_init(n$7:class A *) virtual [line 25]\n *&#GB$A_dispatch_once_example_a:class A *=n$5 [line 25]\n REMOVE_TEMPS(n$5,n$7); [line 25]\n " shape="box"] +9 [label="9: BinaryOperatorStmt: Assign \n n$7=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 25]\n n$5=_fun_A_init(n$7:class A *) virtual [line 25]\n *&#GB$A_dispatch_once_example_a:class A *=n$5 [line 25]\n REMOVE_TEMPS(n$5,n$7); [line 25]\n " shape="box"] 9 -> 8 ; @@ -208,7 +208,7 @@ digraph iCFG { 6 -> 9 ; -5 [label="5: DeclStmt \n DECLARE_LOCALS(&infer___objc_anonymous_block_A_dispatch_once_example______1); [line 23]\n DECLARE_LOCALS(&__objc_anonymous_block_A_dispatch_once_example______1); [line 24]\n n$8=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_dispatch_once_example______1 ):class __objc_anonymous_block_A_dispatch_once_example______1 *) [line 24]\n *&__objc_anonymous_block_A_dispatch_once_example______1:class __objc_anonymous_block_A_dispatch_once_example______1 =n$8 [line 24]\n *&infer___objc_anonymous_block_A_dispatch_once_example______1:_fn_ (*)=(_fun___objc_anonymous_block_A_dispatch_once_example______1) [line 23]\n REMOVE_TEMPS(n$8); [line 23]\n " shape="box"] +5 [label="5: DeclStmt \n DECLARE_LOCALS(&infer___objc_anonymous_block_A_dispatch_once_example______1); [line 23]\n DECLARE_LOCALS(&__objc_anonymous_block_A_dispatch_once_example______1); [line 24]\n n$8=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_dispatch_once_example______1 ):unsigned long ) [line 24]\n *&__objc_anonymous_block_A_dispatch_once_example______1:class __objc_anonymous_block_A_dispatch_once_example______1 =n$8 [line 24]\n *&infer___objc_anonymous_block_A_dispatch_once_example______1:_fn_ (*)=(_fun___objc_anonymous_block_A_dispatch_once_example______1) [line 23]\n REMOVE_TEMPS(n$8); [line 23]\n " shape="box"] 5 -> 4 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/block/retain_cycle.dot b/infer/tests/codetoanalyze/objc/frontend/block/retain_cycle.dot index 627523662..e4133c115 100644 --- a/infer/tests/codetoanalyze/objc/frontend/block/retain_cycle.dot +++ b/infer/tests/codetoanalyze/objc/frontend/block/retain_cycle.dot @@ -1,5 +1,5 @@ digraph iCFG { -19 [label="19: DeclStmt \n n$18=_fun___objc_alloc_no_fail(sizeof(class A ):class A *) [line 68]\n *&a:class A *=n$18 [line 68]\n REMOVE_TEMPS(n$18); [line 68]\n " shape="box"] +19 [label="19: DeclStmt \n n$18=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 68]\n *&a:class A *=n$18 [line 68]\n REMOVE_TEMPS(n$18); [line 68]\n " shape="box"] 19 -> 18 ; @@ -33,11 +33,11 @@ digraph iCFG { 11 -> 14 ; -10 [label="10: BinaryOperatorStmt: Assign \n n$10=*&self:class A * [line 50]\n n$12=_fun___objc_alloc_no_fail(sizeof(class B ):class B *) [line 50]\n *n$10._b:class B *=n$12 [line 50]\n REMOVE_TEMPS(n$10,n$12); [line 50]\n " shape="box"] +10 [label="10: BinaryOperatorStmt: Assign \n n$10=*&self:class A * [line 50]\n n$12=_fun___objc_alloc_no_fail(sizeof(class B ):unsigned long ) [line 50]\n *n$10._b:class B *=n$12 [line 50]\n REMOVE_TEMPS(n$10,n$12); [line 50]\n " shape="box"] 10 -> 9 ; -9 [label="9: Message Call: sHandler: \n n$2=*&self:class A * [line 51]\n n$3=*n$2._b:class B * [line 51]\n DECLARE_LOCALS(&__objc_anonymous_block_A_capture______1); [line 51]\n n$7=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_capture______1 ):class __objc_anonymous_block_A_capture______1 *) [line 51]\n *&__objc_anonymous_block_A_capture______1:class __objc_anonymous_block_A_capture______1 =n$7 [line 51]\n n$8=*&self:class A * [line 51]\n *n$7.self:class A *=n$8 [line 51]\n n$4=*&self:class A * [line 51]\n n$9=*&__objc_anonymous_block_A_capture______1:_fn_ (*) [line 51]\n _fun_B_sHandler:(n$3:class B *,n$9:_fn_ (*),n$4:_fn_ (*)) virtual [line 51]\n REMOVE_TEMPS(n$2,n$3,n$7,n$8,n$4,n$9); [line 51]\n NULLIFY(&__objc_anonymous_block_A_capture______1,true); [line 51]\n NULLIFY(&self,false); [line 51]\n APPLY_ABSTRACTION; [line 51]\n " shape="box"] +9 [label="9: Message Call: sHandler: \n n$2=*&self:class A * [line 51]\n n$3=*n$2._b:class B * [line 51]\n DECLARE_LOCALS(&__objc_anonymous_block_A_capture______1); [line 51]\n n$7=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_capture______1 ):unsigned long ) [line 51]\n *&__objc_anonymous_block_A_capture______1:class __objc_anonymous_block_A_capture______1 =n$7 [line 51]\n n$8=*&self:class A * [line 51]\n *n$7.self:class A *=n$8 [line 51]\n n$4=*&self:class A * [line 51]\n n$9=*&__objc_anonymous_block_A_capture______1:_fn_ (*) [line 51]\n _fun_B_sHandler:(n$3:class B *,n$9:_fn_ (*),n$4:_fn_ (*)) virtual [line 51]\n REMOVE_TEMPS(n$2,n$3,n$7,n$8,n$4,n$9); [line 51]\n NULLIFY(&__objc_anonymous_block_A_capture______1,true); [line 51]\n NULLIFY(&self,false); [line 51]\n APPLY_ABSTRACTION; [line 51]\n " shape="box"] 9 -> 5 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/block/static.dot b/infer/tests/codetoanalyze/objc/frontend/block/static.dot index 79d09b39e..b40657042 100644 --- a/infer/tests/codetoanalyze/objc/frontend/block/static.dot +++ b/infer/tests/codetoanalyze/objc/frontend/block/static.dot @@ -10,7 +10,7 @@ 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 59]\n n$17=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_test3______4 ):class __objc_anonymous_block_A_test3______4 *) [line 59]\n *&__objc_anonymous_block_A_test3______4:class __objc_anonymous_block_A_test3______4 =n$17 [line 59]\n (_fun___objc_anonymous_block_A_test3______4)() [line 59]\n REMOVE_TEMPS(n$17); [line 59]\n " shape="box"] +28 [label="28: Call (_fun___objc_anonymous_block_A_test3______4) \n DECLARE_LOCALS(&__objc_anonymous_block_A_test3______4); [line 59]\n n$17=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_test3______4 ):unsigned long ) [line 59]\n *&__objc_anonymous_block_A_test3______4:class __objc_anonymous_block_A_test3______4 =n$17 [line 59]\n (_fun___objc_anonymous_block_A_test3______4)() [line 59]\n REMOVE_TEMPS(n$17); [line 59]\n " shape="box"] 28 -> 24 ; @@ -36,11 +36,11 @@ digraph iCFG { 22 -> 28 ; -21 [label="21: BinaryOperatorStmt: Assign \n n$14=_fun___objc_alloc_no_fail(sizeof(class A ):class A *) [line 43]\n n$12=_fun_A_init(n$14:class A *) virtual [line 43]\n *&#GB$A_test2_sharedInstance:struct objc_object *=n$12 [line 43]\n REMOVE_TEMPS(n$12,n$14); [line 43]\n " shape="box"] +21 [label="21: BinaryOperatorStmt: Assign \n n$14=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 43]\n n$12=_fun_A_init(n$14:class A *) virtual [line 43]\n *&#GB$A_test2_sharedInstance:struct objc_object *=n$12 [line 43]\n REMOVE_TEMPS(n$12,n$14); [line 43]\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 44]\n n$11=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_test2______3 ):class __objc_anonymous_block_A_test2______3 *) [line 44]\n *&__objc_anonymous_block_A_test2______3:class __objc_anonymous_block_A_test2______3 =n$11 [line 44]\n (_fun___objc_anonymous_block_A_test2______3)() [line 44]\n REMOVE_TEMPS(n$11); [line 44]\n " shape="box"] +20 [label="20: Call (_fun___objc_anonymous_block_A_test2______3) \n DECLARE_LOCALS(&__objc_anonymous_block_A_test2______3); [line 44]\n n$11=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_test2______3 ):unsigned long ) [line 44]\n *&__objc_anonymous_block_A_test2______3:class __objc_anonymous_block_A_test2______3 =n$11 [line 44]\n (_fun___objc_anonymous_block_A_test2______3)() [line 44]\n REMOVE_TEMPS(n$11); [line 44]\n " shape="box"] 20 -> 16 ; @@ -66,11 +66,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 32]\n n$8=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_test_leak______2 ):class __objc_anonymous_block_A_test_leak______2 *) [line 32]\n *&__objc_anonymous_block_A_test_leak______2:class __objc_anonymous_block_A_test_leak______2 =n$8 [line 32]\n (_fun___objc_anonymous_block_A_test_leak______2)() [line 32]\n REMOVE_TEMPS(n$8); [line 32]\n NULLIFY(&__objc_anonymous_block_A_test_leak______2,true); [line 32]\n APPLY_ABSTRACTION; [line 32]\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 32]\n n$8=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_test_leak______2 ):unsigned long ) [line 32]\n *&__objc_anonymous_block_A_test_leak______2:class __objc_anonymous_block_A_test_leak______2 =n$8 [line 32]\n (_fun___objc_anonymous_block_A_test_leak______2)() [line 32]\n REMOVE_TEMPS(n$8); [line 32]\n NULLIFY(&__objc_anonymous_block_A_test_leak______2,true); [line 32]\n APPLY_ABSTRACTION; [line 32]\n " shape="box"] 13 -> 9 ; -12 [label="12: BinaryOperatorStmt: Assign \n n$7=_fun___objc_alloc_no_fail(sizeof(class A ):class A *) [line 33]\n n$5=_fun_A_init(n$7:class A *) virtual [line 33]\n *&#GB$A_test_leak_sharedInstance:struct objc_object *=n$5 [line 33]\n REMOVE_TEMPS(n$5,n$7); [line 33]\n APPLY_ABSTRACTION; [line 33]\n " shape="box"] +12 [label="12: BinaryOperatorStmt: Assign \n n$7=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 33]\n n$5=_fun_A_init(n$7:class A *) virtual [line 33]\n *&#GB$A_test_leak_sharedInstance:struct objc_object *=n$5 [line 33]\n REMOVE_TEMPS(n$5,n$7); [line 33]\n APPLY_ABSTRACTION; [line 33]\n " shape="box"] 12 -> 11 ; @@ -88,11 +88,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 21]\n n$4=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_test______1 ):class __objc_anonymous_block_A_test______1 *) [line 21]\n *&__objc_anonymous_block_A_test______1:class __objc_anonymous_block_A_test______1 =n$4 [line 21]\n (_fun___objc_anonymous_block_A_test______1)() [line 21]\n REMOVE_TEMPS(n$4); [line 21]\n " shape="box"] +7 [label="7: Call (_fun___objc_anonymous_block_A_test______1) \n DECLARE_LOCALS(&__objc_anonymous_block_A_test______1); [line 21]\n n$4=_fun___objc_alloc_no_fail(sizeof(class __objc_anonymous_block_A_test______1 ):unsigned long ) [line 21]\n *&__objc_anonymous_block_A_test______1:class __objc_anonymous_block_A_test______1 =n$4 [line 21]\n (_fun___objc_anonymous_block_A_test______1)() [line 21]\n REMOVE_TEMPS(n$4); [line 21]\n " shape="box"] 7 -> 3 ; -6 [label="6: BinaryOperatorStmt: Assign \n n$3=_fun___objc_alloc_no_fail(sizeof(class A ):class A *) [line 22]\n n$1=_fun_A_init(n$3:class A *) virtual [line 22]\n *&#GB$A_test_sharedInstance:struct objc_object *=n$1 [line 22]\n REMOVE_TEMPS(n$1,n$3); [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"] +6 [label="6: BinaryOperatorStmt: Assign \n n$3=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 22]\n n$1=_fun_A_init(n$3:class A *) virtual [line 22]\n *&#GB$A_test_sharedInstance:struct objc_object *=n$1 [line 22]\n REMOVE_TEMPS(n$1,n$3); [line 22]\n APPLY_ABSTRACTION; [line 22]\n " shape="box"] 6 -> 5 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/exceptions/ExceptionExample.dot b/infer/tests/codetoanalyze/objc/frontend/exceptions/ExceptionExample.dot index ee4b95889..5da098488 100644 --- a/infer/tests/codetoanalyze/objc/frontend/exceptions/ExceptionExample.dot +++ b/infer/tests/codetoanalyze/objc/frontend/exceptions/ExceptionExample.dot @@ -1,5 +1,5 @@ digraph iCFG { -11 [label="11: DeclStmt \n n$9=_fun___objc_alloc_no_fail(sizeof(class NSString ):class NSString *) [line 31]\n *&s:class NSString *=n$9 [line 31]\n REMOVE_TEMPS(n$9); [line 31]\n " shape="box"] +11 [label="11: DeclStmt \n n$9=_fun___objc_alloc_no_fail(sizeof(class NSString ):unsigned long ) [line 31]\n *&s:class NSString *=n$9 [line 31]\n REMOVE_TEMPS(n$9); [line 31]\n " shape="box"] 11 -> 8 ; @@ -27,7 +27,7 @@ digraph iCFG { 5 -> 11 ; -4 [label="4: DeclStmt \n n$3=_fun___objc_alloc_no_fail(sizeof(class NSString ):class NSString *) [line 21]\n *&s:class NSString *=n$3 [line 21]\n REMOVE_TEMPS(n$3); [line 21]\n NULLIFY(&s,false); [line 21]\n " shape="box"] +4 [label="4: DeclStmt \n n$3=_fun___objc_alloc_no_fail(sizeof(class NSString ):unsigned long ) [line 21]\n *&s:class NSString *=n$3 [line 21]\n REMOVE_TEMPS(n$3); [line 21]\n NULLIFY(&s,false); [line 21]\n " shape="box"] 4 -> 3 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/property/PropertyAttributes.dot b/infer/tests/codetoanalyze/objc/frontend/property/PropertyAttributes.dot index 348adc1c4..e9d8c6dc8 100644 --- a/infer/tests/codetoanalyze/objc/frontend/property/PropertyAttributes.dot +++ b/infer/tests/codetoanalyze/objc/frontend/property/PropertyAttributes.dot @@ -1,5 +1,5 @@ digraph iCFG { -39 [label="39: DeclStmt \n n$39=_fun___objc_alloc_no_fail(sizeof(class A ):class A *) [line 39]\n n$37=_fun_A_init(n$39:class A *) virtual [line 39]\n *&a:class A *=n$37 [line 39]\n REMOVE_TEMPS(n$37,n$39); [line 39]\n " shape="box"] +39 [label="39: DeclStmt \n n$39=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 39]\n n$37=_fun_A_init(n$39:class A *) virtual [line 39]\n *&a:class A *=n$37 [line 39]\n REMOVE_TEMPS(n$37,n$39); [line 39]\n " shape="box"] 39 -> 38 ; @@ -96,7 +96,7 @@ digraph iCFG { 11 -> 13 ; -10 [label="10: DeclStmt \n n$13=_fun___objc_alloc_no_fail(sizeof(class A ):class A *) [line 27]\n n$11=_fun_A_init(n$13:class A *) virtual [line 27]\n *&other:class A *=n$11 [line 27]\n REMOVE_TEMPS(n$11,n$13); [line 27]\n " shape="box"] +10 [label="10: DeclStmt \n n$13=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 27]\n n$11=_fun_A_init(n$13:class A *) virtual [line 27]\n *&other:class A *=n$11 [line 27]\n REMOVE_TEMPS(n$11,n$13); [line 27]\n " shape="box"] 10 -> 5 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/property/main_car.dot b/infer/tests/codetoanalyze/objc/frontend/property/main_car.dot index 08bc8d5c3..b522297f7 100644 --- a/infer/tests/codetoanalyze/objc/frontend/property/main_car.dot +++ b/infer/tests/codetoanalyze/objc/frontend/property/main_car.dot @@ -1,5 +1,5 @@ digraph iCFG { -6 [label="6: DeclStmt \n n$6=_fun___objc_alloc_no_fail(sizeof(class Car ):class Car *) [line 13]\n n$4=_fun_Car_init(n$6:class Car *) virtual [line 13]\n *&honda:class Car *=n$4 [line 13]\n REMOVE_TEMPS(n$4,n$6); [line 13]\n " shape="box"] +6 [label="6: DeclStmt \n n$6=_fun___objc_alloc_no_fail(sizeof(class Car ):unsigned long ) [line 13]\n n$4=_fun_Car_init(n$6:class Car *) virtual [line 13]\n *&honda:class Car *=n$4 [line 13]\n REMOVE_TEMPS(n$4,n$6); [line 13]\n " shape="box"] 6 -> 5 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/self_static/Self.dot b/infer/tests/codetoanalyze/objc/frontend/self_static/Self.dot index d6839ab61..efb2293f5 100644 --- a/infer/tests/codetoanalyze/objc/frontend/self_static/Self.dot +++ b/infer/tests/codetoanalyze/objc/frontend/self_static/Self.dot @@ -31,7 +31,7 @@ digraph iCFG { 44 -> 47 ; -43 [label="43: Return Stmt \n n$22=_fun_NSStringFromClass(sizeof(class A ):class A ) [line 93]\n *&return:class NSString *=n$22 [line 93]\n REMOVE_TEMPS(n$22); [line 93]\n APPLY_ABSTRACTION; [line 93]\n " shape="box"] +43 [label="43: Return Stmt \n n$22=_fun_NSStringFromClass(sizeof(class A ):unsigned long ) [line 93]\n *&return:class NSString *=n$22 [line 93]\n REMOVE_TEMPS(n$22); [line 93]\n APPLY_ABSTRACTION; [line 93]\n " shape="box"] 43 -> 42 ; @@ -64,7 +64,7 @@ digraph iCFG { 35 -> 37 ; -34 [label="34: Return Stmt \n n$15=*&object:class B * [line 80]\n n$14=_fun_B_isC:(n$15:class B *,sizeof(class A ):class A ) virtual [line 80]\n *&return:signed char =n$14 [line 80]\n REMOVE_TEMPS(n$14,n$15); [line 80]\n NULLIFY(&object,false); [line 80]\n APPLY_ABSTRACTION; [line 80]\n " shape="box"] +34 [label="34: Return Stmt \n n$15=*&object:class B * [line 80]\n n$14=_fun_B_isC:(n$15:class B *,sizeof(class A ):unsigned long ) virtual [line 80]\n *&return:signed char =n$14 [line 80]\n REMOVE_TEMPS(n$14,n$15); [line 80]\n NULLIFY(&object,false); [line 80]\n APPLY_ABSTRACTION; [line 80]\n " shape="box"] 34 -> 33 ; @@ -75,7 +75,7 @@ digraph iCFG { 32 -> 34 ; -31 [label="31: DeclStmt \n n$12=_fun___objc_alloc_no_fail(sizeof(class B ):class B *) [line 75]\n n$13=_fun_B_init(n$12:class B *) virtual [line 75]\n *&b:class B *=n$13 [line 75]\n REMOVE_TEMPS(n$12,n$13); [line 75]\n NULLIFY(&b,false); [line 75]\n " shape="box"] +31 [label="31: DeclStmt \n n$12=_fun___objc_alloc_no_fail(sizeof(class B ):unsigned long ) [line 75]\n n$13=_fun_B_init(n$12:class B *) virtual [line 75]\n *&b:class B *=n$13 [line 75]\n REMOVE_TEMPS(n$12,n$13); [line 75]\n NULLIFY(&b,false); [line 75]\n " shape="box"] 31 -> 30 ; @@ -112,7 +112,7 @@ digraph iCFG { 22 -> 24 ; -21 [label="21: Call alloc \n n$6=_fun___objc_alloc_no_fail(sizeof(class A ):class A *) [line 63]\n REMOVE_TEMPS(n$6); [line 63]\n APPLY_ABSTRACTION; [line 63]\n " shape="box"] +21 [label="21: Call alloc \n n$6=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 63]\n REMOVE_TEMPS(n$6); [line 63]\n APPLY_ABSTRACTION; [line 63]\n " shape="box"] 21 -> 20 ; @@ -123,7 +123,7 @@ digraph iCFG { 19 -> 21 ; -18 [label="18: Call alloc \n n$2=_fun___objc_alloc_no_fail(sizeof(class A ):class A *) [line 59]\n REMOVE_TEMPS(n$2); [line 59]\n APPLY_ABSTRACTION; [line 59]\n " shape="box"] +18 [label="18: Call alloc \n n$2=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 59]\n REMOVE_TEMPS(n$2); [line 59]\n APPLY_ABSTRACTION; [line 59]\n " shape="box"] 18 -> 17 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/self_static/static.dot b/infer/tests/codetoanalyze/objc/frontend/self_static/static.dot index b763bd45b..dcac7738b 100644 --- a/infer/tests/codetoanalyze/objc/frontend/self_static/static.dot +++ b/infer/tests/codetoanalyze/objc/frontend/self_static/static.dot @@ -43,7 +43,7 @@ digraph iCFG { 4 -> 6 ; -3 [label="3: DeclStmt \n n$1=_fun___objc_alloc_no_fail(sizeof(class MyClass ):class MyClass *) [line 21]\n *&myClass:class MyClass *=n$1 [line 21]\n REMOVE_TEMPS(n$1); [line 21]\n NULLIFY(&myClass,false); [line 21]\n APPLY_ABSTRACTION; [line 21]\n " shape="box"] +3 [label="3: DeclStmt \n n$1=_fun___objc_alloc_no_fail(sizeof(class MyClass ):unsigned long ) [line 21]\n *&myClass:class MyClass *=n$1 [line 21]\n REMOVE_TEMPS(n$1); [line 21]\n NULLIFY(&myClass,false); [line 21]\n APPLY_ABSTRACTION; [line 21]\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 8f42dd557..99f40ae69 100644 --- a/infer/tests/codetoanalyze/objc/frontend/subclass/main.dot +++ b/infer/tests/codetoanalyze/objc/frontend/subclass/main.dot @@ -1,5 +1,5 @@ digraph iCFG { -4 [label="4: DeclStmt \n n$2=_fun___objc_alloc_no_fail(sizeof(class A ):class A *) [line 13]\n n$0=_fun_A_init(n$2:class A *) virtual [line 13]\n *&a:class A *=n$0 [line 13]\n REMOVE_TEMPS(n$0,n$2); [line 13]\n NULLIFY(&a,false); [line 13]\n " shape="box"] +4 [label="4: DeclStmt \n n$2=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 13]\n n$0=_fun_A_init(n$2:class A *) virtual [line 13]\n *&a:class A *=n$0 [line 13]\n REMOVE_TEMPS(n$0,n$2); [line 13]\n NULLIFY(&a,false); [line 13]\n " shape="box"] 4 -> 3 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/types/attributes.dot b/infer/tests/codetoanalyze/objc/frontend/types/attributes.dot index 8b70df5d5..383181ae0 100644 --- a/infer/tests/codetoanalyze/objc/frontend/types/attributes.dot +++ b/infer/tests/codetoanalyze/objc/frontend/types/attributes.dot @@ -19,7 +19,7 @@ digraph iCFG { 10 -> 9 ; -9 [label="9: BinaryOperatorStmt: Assign \n n$10=_fun___objc_alloc_no_fail(sizeof(class A ):class A *) [line 29]\n *&aStrongRef:class A *=n$10 [line 29]\n REMOVE_TEMPS(n$10); [line 29]\n " shape="box"] +9 [label="9: BinaryOperatorStmt: Assign \n n$10=_fun___objc_alloc_no_fail(sizeof(class A ):unsigned long ) [line 29]\n *&aStrongRef:class A *=n$10 [line 29]\n REMOVE_TEMPS(n$10); [line 29]\n " shape="box"] 9 -> 8 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/types/void_call.dot b/infer/tests/codetoanalyze/objc/frontend/types/void_call.dot index 9cfde6bbb..46edcecd2 100644 --- a/infer/tests/codetoanalyze/objc/frontend/types/void_call.dot +++ b/infer/tests/codetoanalyze/objc/frontend/types/void_call.dot @@ -11,7 +11,7 @@ digraph iCFG { 22 -> 21 ; -21 [label="21: DeclStmt \n n$11=_fun___objc_alloc_no_fail(sizeof(class AClass ):class AClass *) [line 48]\n *&o:class AClass *=n$11 [line 48]\n REMOVE_TEMPS(n$11); [line 48]\n " shape="box"] +21 [label="21: DeclStmt \n n$11=_fun___objc_alloc_no_fail(sizeof(class AClass ):unsigned long ) [line 48]\n *&o:class AClass *=n$11 [line 48]\n REMOVE_TEMPS(n$11); [line 48]\n " shape="box"] 21 -> 17 ; diff --git a/infer/tests/codetoanalyze/objc/frontend/vardecl/initlist.dot b/infer/tests/codetoanalyze/objc/frontend/vardecl/initlist.dot index 96694746c..390e8d524 100644 --- a/infer/tests/codetoanalyze/objc/frontend/vardecl/initlist.dot +++ b/infer/tests/codetoanalyze/objc/frontend/vardecl/initlist.dot @@ -1,9 +1,9 @@ digraph iCFG { -8 [label="8: DeclStmt \n n$8=_fun___objc_alloc_no_fail(sizeof(class C ):class C *) [line 22]\n *&c1:class C *=n$8 [line 22]\n REMOVE_TEMPS(n$8); [line 22]\n " shape="box"] +8 [label="8: DeclStmt \n n$8=_fun___objc_alloc_no_fail(sizeof(class C ):unsigned long ) [line 22]\n *&c1:class C *=n$8 [line 22]\n REMOVE_TEMPS(n$8); [line 22]\n " shape="box"] 8 -> 7 ; -7 [label="7: DeclStmt \n n$6=_fun___objc_alloc_no_fail(sizeof(class C ):class C *) [line 23]\n *&c2:class C *=n$6 [line 23]\n REMOVE_TEMPS(n$6); [line 23]\n " shape="box"] +7 [label="7: DeclStmt \n n$6=_fun___objc_alloc_no_fail(sizeof(class C ):unsigned long ) [line 23]\n *&c2:class C *=n$6 [line 23]\n REMOVE_TEMPS(n$6); [line 23]\n " shape="box"] 7 -> 6 ;