1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple x86_64-apple-darwin -filetype=obj -o %t.o < %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llvm-dwarfdump -debug-dump=info %t.o | FileCheck %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker; Generated from llvm/tools/clang/test/CodeGenObjC/debug-info-blocks.m 5*9880d681SAndroid Build Coastguard Worker; rdar://problem/9279956 6*9880d681SAndroid Build Coastguard Worker; test that the DW_AT_location of self is at ( fbreg +{{[0-9]+}}, deref, +{{[0-9]+}} ) 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Worker; CHECK: [[A:.*]]: DW_TAG_structure_type 9*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: DW_AT_APPLE_objc_complete_type 10*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: DW_AT_name{{.*}}"A" 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Worker; CHECK: DW_TAG_subprogram 13*9880d681SAndroid Build Coastguard Worker; CHECK: DW_TAG_subprogram 14*9880d681SAndroid Build Coastguard Worker; CHECK: DW_TAG_subprogram 15*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: DW_TAG 16*9880d681SAndroid Build Coastguard Worker; CHECK: DW_AT_object_pointer 17*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: DW_TAG 18*9880d681SAndroid Build Coastguard Worker; CHECK: DW_AT_name{{.*}}_block_invoke 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: {{DW_TAG|NULL}} 21*9880d681SAndroid Build Coastguard Worker; CHECK: DW_TAG_formal_parameter 22*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: DW_TAG 23*9880d681SAndroid Build Coastguard Worker; CHECK: DW_AT_location 24*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: DW_TAG 25*9880d681SAndroid Build Coastguard Worker; CHECK: DW_AT_name{{.*}}.block_descriptor 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: {{DW_TAG|NULL}} 28*9880d681SAndroid Build Coastguard Worker; CHECK: DW_TAG_variable 29*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: DW_TAG 30*9880d681SAndroid Build Coastguard Worker; 0x06 = DW_OP_deref 31*9880d681SAndroid Build Coastguard Worker; 0x23 = DW_OP_uconst 32*9880d681SAndroid Build Coastguard Worker; 0x91 = DW_OP_fbreg 33*9880d681SAndroid Build Coastguard Worker; CHECK: DW_AT_location{{.*}}91 {{[0-9]+}} 06 23 {{[0-9]+}} ) 34*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: DW_TAG 35*9880d681SAndroid Build Coastguard Worker; CHECK: DW_AT_name{{.*}}"self" 36*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: DW_TAG 37*9880d681SAndroid Build Coastguard Worker; CHECK: DW_AT_type{{.*}}{[[APTR:.*]]} 38*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: DW_TAG 39*9880d681SAndroid Build Coastguard Worker; CHECK: DW_AT_artificial 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Worker; CHECK: [[APTR]]: DW_TAG_pointer_type 42*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {[[A]]} 43*9880d681SAndroid Build Coastguard Worker 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Worker; ModuleID = 'llvm/tools/clang/test/CodeGenObjC/debug-info-blocks.m' 46*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" 47*9880d681SAndroid Build Coastguard Workertarget triple = "x86_64-apple-darwin" 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Worker%0 = type opaque 50*9880d681SAndroid Build Coastguard Worker%1 = type opaque 51*9880d681SAndroid Build Coastguard Worker%struct._class_t = type { %struct._class_t*, %struct._class_t*, %struct._objc_cache*, i8* (i8*, i8*)**, %struct._class_ro_t* } 52*9880d681SAndroid Build Coastguard Worker%struct._objc_cache = type opaque 53*9880d681SAndroid Build Coastguard Worker%struct._class_ro_t = type { i32, i32, i32, i8*, i8*, %struct.__method_list_t*, %struct._objc_protocol_list*, %struct._ivar_list_t*, i8*, %struct._prop_list_t* } 54*9880d681SAndroid Build Coastguard Worker%struct.__method_list_t = type { i32, i32, [0 x %struct._objc_method] } 55*9880d681SAndroid Build Coastguard Worker%struct._objc_method = type { i8*, i8*, i8* } 56*9880d681SAndroid Build Coastguard Worker%struct._objc_protocol_list = type { i64, [0 x %struct._protocol_t*] } 57*9880d681SAndroid Build Coastguard Worker%struct._protocol_t = type { i8*, i8*, %struct._objc_protocol_list*, %struct.__method_list_t*, %struct.__method_list_t*, %struct.__method_list_t*, %struct.__method_list_t*, %struct._prop_list_t*, i32, i32, i8** } 58*9880d681SAndroid Build Coastguard Worker%struct._prop_list_t = type { i32, i32, [0 x %struct._prop_t] } 59*9880d681SAndroid Build Coastguard Worker%struct._prop_t = type { i8*, i8* } 60*9880d681SAndroid Build Coastguard Worker%struct._ivar_list_t = type { i32, i32, [0 x %struct._ivar_t] } 61*9880d681SAndroid Build Coastguard Worker%struct._ivar_t = type { i64*, i8*, i8*, i32, i32 } 62*9880d681SAndroid Build Coastguard Worker%struct._message_ref_t = type { i8*, i8* } 63*9880d681SAndroid Build Coastguard Worker%struct._objc_super = type { i8*, i8* } 64*9880d681SAndroid Build Coastguard Worker%struct.__block_descriptor = type { i64, i64 } 65*9880d681SAndroid Build Coastguard Worker%struct.__block_literal_generic = type { i8*, i32, i32, i8*, %struct.__block_descriptor* } 66*9880d681SAndroid Build Coastguard Worker 67*9880d681SAndroid Build Coastguard Worker@"OBJC_CLASS_$_A" = global %struct._class_t { %struct._class_t* @"OBJC_METACLASS_$_A", %struct._class_t* @"OBJC_CLASS_$_NSObject", %struct._objc_cache* @_objc_empty_cache, i8* (i8*, i8*)** @_objc_empty_vtable, %struct._class_ro_t* @"\01l_OBJC_CLASS_RO_$_A" }, section "__DATA, __objc_data", align 8 68*9880d681SAndroid Build Coastguard Worker@"\01L_OBJC_CLASSLIST_SUP_REFS_$_" = internal global %struct._class_t* @"OBJC_CLASS_$_A", section "__DATA, __objc_superrefs, regular, no_dead_strip", align 8 69*9880d681SAndroid Build Coastguard Worker@"\01L_OBJC_METH_VAR_NAME_" = internal global [5 x i8] c"init\00", section "__TEXT,__objc_methname,cstring_literals", align 1 70*9880d681SAndroid Build Coastguard Worker@"\01L_OBJC_SELECTOR_REFERENCES_" = internal externally_initialized global i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"\01L_OBJC_METH_VAR_NAME_", i32 0, i32 0), section "__DATA, __objc_selrefs, literal_pointers, no_dead_strip" 71*9880d681SAndroid Build Coastguard Worker@"OBJC_CLASS_$_NSMutableDictionary" = external global %struct._class_t 72*9880d681SAndroid Build Coastguard Worker@"\01L_OBJC_CLASSLIST_REFERENCES_$_" = internal global %struct._class_t* @"OBJC_CLASS_$_NSMutableDictionary", section "__DATA, __objc_classrefs, regular, no_dead_strip", align 8 73*9880d681SAndroid Build Coastguard Worker@"\01L_OBJC_METH_VAR_NAME_1" = internal global [6 x i8] c"alloc\00", section "__TEXT,__objc_methname,cstring_literals", align 1 74*9880d681SAndroid Build Coastguard Worker@"\01l_objc_msgSend_fixup_alloc" = weak hidden global { i8* (i8*, %struct._message_ref_t*, ...)*, i8* } { i8* (i8*, %struct._message_ref_t*, ...)* @objc_msgSend_fixup, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"\01L_OBJC_METH_VAR_NAME_1", i32 0, i32 0) }, section "__DATA, __objc_msgrefs, coalesced", align 16 75*9880d681SAndroid Build Coastguard Worker@"\01L_OBJC_METH_VAR_NAME_2" = internal global [6 x i8] c"count\00", section "__TEXT,__objc_methname,cstring_literals", align 1 76*9880d681SAndroid Build Coastguard Worker@"\01l_objc_msgSend_fixup_count" = weak hidden global { i8* (i8*, %struct._message_ref_t*, ...)*, i8* } { i8* (i8*, %struct._message_ref_t*, ...)* @objc_msgSend_fixup, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"\01L_OBJC_METH_VAR_NAME_2", i32 0, i32 0) }, section "__DATA, __objc_msgrefs, coalesced", align 16 77*9880d681SAndroid Build Coastguard Worker@"OBJC_IVAR_$_A.ivar" = global i64 0, section "__DATA, __objc_ivar", align 8 78*9880d681SAndroid Build Coastguard Worker@_NSConcreteStackBlock = external global i8* 79*9880d681SAndroid Build Coastguard Worker@.str = private unnamed_addr constant [6 x i8] c"v8@?0\00", align 1 80*9880d681SAndroid Build Coastguard Worker@__block_descriptor_tmp = internal constant { i64, i64, i8*, i8*, i8*, i64 } { i64 0, i64 40, i8* bitcast (void (i8*, i8*)* @__copy_helper_block_ to i8*), i8* bitcast (void (i8*)* @__destroy_helper_block_ to i8*), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i32 0, i32 0), i64 256 } 81*9880d681SAndroid Build Coastguard Worker@_objc_empty_cache = external global %struct._objc_cache 82*9880d681SAndroid Build Coastguard Worker@_objc_empty_vtable = external global i8* (i8*, i8*)* 83*9880d681SAndroid Build Coastguard Worker@"OBJC_METACLASS_$_NSObject" = external global %struct._class_t 84*9880d681SAndroid Build Coastguard Worker@"\01L_OBJC_CLASS_NAME_" = internal global [2 x i8] c"A\00", section "__TEXT,__objc_classname,cstring_literals", align 1 85*9880d681SAndroid Build Coastguard Worker@"\01l_OBJC_METACLASS_RO_$_A" = internal global %struct._class_ro_t { i32 1, i32 40, i32 40, i8* null, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"\01L_OBJC_CLASS_NAME_", i32 0, i32 0), %struct.__method_list_t* null, %struct._objc_protocol_list* null, %struct._ivar_list_t* null, i8* null, %struct._prop_list_t* null }, section "__DATA, __objc_const", align 8 86*9880d681SAndroid Build Coastguard Worker@"OBJC_METACLASS_$_A" = global %struct._class_t { %struct._class_t* @"OBJC_METACLASS_$_NSObject", %struct._class_t* @"OBJC_METACLASS_$_NSObject", %struct._objc_cache* @_objc_empty_cache, i8* (i8*, i8*)** @_objc_empty_vtable, %struct._class_ro_t* @"\01l_OBJC_METACLASS_RO_$_A" }, section "__DATA, __objc_data", align 8 87*9880d681SAndroid Build Coastguard Worker@"OBJC_CLASS_$_NSObject" = external global %struct._class_t 88*9880d681SAndroid Build Coastguard Worker@"\01L_OBJC_METH_VAR_TYPE_" = internal global [8 x i8] c"@16@0:8\00", section "__TEXT,__objc_methtype,cstring_literals", align 1 89*9880d681SAndroid Build Coastguard Worker@"\01l_OBJC_$_INSTANCE_METHODS_A" = internal global { i32, i32, [1 x %struct._objc_method] } { i32 24, i32 1, [1 x %struct._objc_method] [%struct._objc_method { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"\01L_OBJC_METH_VAR_NAME_", i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"\01L_OBJC_METH_VAR_TYPE_", i32 0, i32 0), i8* bitcast (i8* (%0*, i8*)* @"\01-[A init]" to i8*) }] }, section "__DATA, __objc_const", align 8 90*9880d681SAndroid Build Coastguard Worker@"\01L_OBJC_METH_VAR_NAME_3" = internal global [5 x i8] c"ivar\00", section "__TEXT,__objc_methname,cstring_literals", align 1 91*9880d681SAndroid Build Coastguard Worker@"\01L_OBJC_METH_VAR_TYPE_4" = internal global [2 x i8] c"i\00", section "__TEXT,__objc_methtype,cstring_literals", align 1 92*9880d681SAndroid Build Coastguard Worker@"\01l_OBJC_$_INSTANCE_VARIABLES_A" = internal global { i32, i32, [1 x %struct._ivar_t] } { i32 32, i32 1, [1 x %struct._ivar_t] [%struct._ivar_t { i64* @"OBJC_IVAR_$_A.ivar", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"\01L_OBJC_METH_VAR_NAME_3", i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"\01L_OBJC_METH_VAR_TYPE_4", i32 0, i32 0), i32 2, i32 4 }] }, section "__DATA, __objc_const", align 8 93*9880d681SAndroid Build Coastguard Worker@"\01l_OBJC_CLASS_RO_$_A" = internal global %struct._class_ro_t { i32 0, i32 0, i32 4, i8* null, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"\01L_OBJC_CLASS_NAME_", i32 0, i32 0), %struct.__method_list_t* bitcast ({ i32, i32, [1 x %struct._objc_method] }* @"\01l_OBJC_$_INSTANCE_METHODS_A" to %struct.__method_list_t*), %struct._objc_protocol_list* null, %struct._ivar_list_t* bitcast ({ i32, i32, [1 x %struct._ivar_t] }* @"\01l_OBJC_$_INSTANCE_VARIABLES_A" to %struct._ivar_list_t*), i8* null, %struct._prop_list_t* null }, section "__DATA, __objc_const", align 8 94*9880d681SAndroid Build Coastguard Worker@"\01L_OBJC_CLASSLIST_REFERENCES_$_5" = internal global %struct._class_t* @"OBJC_CLASS_$_A", section "__DATA, __objc_classrefs, regular, no_dead_strip", align 8 95*9880d681SAndroid Build Coastguard Worker@"\01L_OBJC_LABEL_CLASS_$" = internal global [1 x i8*] [i8* bitcast (%struct._class_t* @"OBJC_CLASS_$_A" to i8*)], section "__DATA, __objc_classlist, regular, no_dead_strip", align 8 96*9880d681SAndroid Build Coastguard Worker@llvm.used = appending global [14 x i8*] [i8* bitcast (%struct._class_t** @"\01L_OBJC_CLASSLIST_SUP_REFS_$_" to i8*), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"\01L_OBJC_METH_VAR_NAME_", i32 0, i32 0), i8* bitcast (i8** @"\01L_OBJC_SELECTOR_REFERENCES_" to i8*), i8* bitcast (%struct._class_t** @"\01L_OBJC_CLASSLIST_REFERENCES_$_" to i8*), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"\01L_OBJC_METH_VAR_NAME_1", i32 0, i32 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"\01L_OBJC_METH_VAR_NAME_2", i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"\01L_OBJC_CLASS_NAME_", i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"\01L_OBJC_METH_VAR_TYPE_", i32 0, i32 0), i8* bitcast ({ i32, i32, [1 x %struct._objc_method] }* @"\01l_OBJC_$_INSTANCE_METHODS_A" to i8*), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"\01L_OBJC_METH_VAR_NAME_3", i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"\01L_OBJC_METH_VAR_TYPE_4", i32 0, i32 0), i8* bitcast ({ i32, i32, [1 x %struct._ivar_t] }* @"\01l_OBJC_$_INSTANCE_VARIABLES_A" to i8*), i8* bitcast (%struct._class_t** @"\01L_OBJC_CLASSLIST_REFERENCES_$_5" to i8*), i8* bitcast ([1 x i8*]* @"\01L_OBJC_LABEL_CLASS_$" to i8*)], section "llvm.metadata" 97*9880d681SAndroid Build Coastguard Worker 98*9880d681SAndroid Build Coastguard Workerdefine internal i8* @"\01-[A init]"(%0* %self, i8* %_cmd) #0 !dbg !13 { 99*9880d681SAndroid Build Coastguard Worker %1 = alloca %0*, align 8 100*9880d681SAndroid Build Coastguard Worker %2 = alloca i8*, align 8 101*9880d681SAndroid Build Coastguard Worker %3 = alloca %struct._objc_super 102*9880d681SAndroid Build Coastguard Worker %4 = alloca <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>, align 8 103*9880d681SAndroid Build Coastguard Worker store %0* %self, %0** %1, align 8 104*9880d681SAndroid Build Coastguard Worker call void @llvm.dbg.declare(metadata %0** %1, metadata !60, metadata !DIExpression()), !dbg !62 105*9880d681SAndroid Build Coastguard Worker store i8* %_cmd, i8** %2, align 8 106*9880d681SAndroid Build Coastguard Worker call void @llvm.dbg.declare(metadata i8** %2, metadata !63, metadata !DIExpression()), !dbg !62 107*9880d681SAndroid Build Coastguard Worker %5 = load %0*, %0** %1, !dbg !65 108*9880d681SAndroid Build Coastguard Worker %6 = bitcast %0* %5 to i8*, !dbg !65 109*9880d681SAndroid Build Coastguard Worker %7 = getelementptr inbounds %struct._objc_super, %struct._objc_super* %3, i32 0, i32 0, !dbg !65 110*9880d681SAndroid Build Coastguard Worker store i8* %6, i8** %7, !dbg !65 111*9880d681SAndroid Build Coastguard Worker %8 = load %struct._class_t*, %struct._class_t** @"\01L_OBJC_CLASSLIST_SUP_REFS_$_", !dbg !65 112*9880d681SAndroid Build Coastguard Worker %9 = bitcast %struct._class_t* %8 to i8*, !dbg !65 113*9880d681SAndroid Build Coastguard Worker %10 = getelementptr inbounds %struct._objc_super, %struct._objc_super* %3, i32 0, i32 1, !dbg !65 114*9880d681SAndroid Build Coastguard Worker store i8* %9, i8** %10, !dbg !65 115*9880d681SAndroid Build Coastguard Worker %11 = load i8*, i8** @"\01L_OBJC_SELECTOR_REFERENCES_", !dbg !65, !invariant.load !67 116*9880d681SAndroid Build Coastguard Worker %12 = call i8* bitcast (i8* (%struct._objc_super*, i8*, ...)* @objc_msgSendSuper2 to i8* (%struct._objc_super*, i8*)*)(%struct._objc_super* %3, i8* %11), !dbg !65 117*9880d681SAndroid Build Coastguard Worker %13 = bitcast i8* %12 to %0*, !dbg !65 118*9880d681SAndroid Build Coastguard Worker store %0* %13, %0** %1, align 8, !dbg !65 119*9880d681SAndroid Build Coastguard Worker %14 = icmp ne %0* %13, null, !dbg !65 120*9880d681SAndroid Build Coastguard Worker br i1 %14, label %15, label %24, !dbg !65 121*9880d681SAndroid Build Coastguard Worker 122*9880d681SAndroid Build Coastguard Worker; <label>:15 ; preds = %0 123*9880d681SAndroid Build Coastguard Worker %16 = getelementptr inbounds <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>, <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>* %4, i32 0, i32 0, !dbg !68 124*9880d681SAndroid Build Coastguard Worker store i8* bitcast (i8** @_NSConcreteStackBlock to i8*), i8** %16, !dbg !68 125*9880d681SAndroid Build Coastguard Worker %17 = getelementptr inbounds <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>, <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>* %4, i32 0, i32 1, !dbg !68 126*9880d681SAndroid Build Coastguard Worker store i32 -1040187392, i32* %17, !dbg !68 127*9880d681SAndroid Build Coastguard Worker %18 = getelementptr inbounds <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>, <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>* %4, i32 0, i32 2, !dbg !68 128*9880d681SAndroid Build Coastguard Worker store i32 0, i32* %18, !dbg !68 129*9880d681SAndroid Build Coastguard Worker %19 = getelementptr inbounds <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>, <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>* %4, i32 0, i32 3, !dbg !68 130*9880d681SAndroid Build Coastguard Worker store i8* bitcast (void (i8*)* @"__9-[A init]_block_invoke" to i8*), i8** %19, !dbg !68 131*9880d681SAndroid Build Coastguard Worker %20 = getelementptr inbounds <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>, <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>* %4, i32 0, i32 4, !dbg !68 132*9880d681SAndroid Build Coastguard Worker store %struct.__block_descriptor* bitcast ({ i64, i64, i8*, i8*, i8*, i64 }* @__block_descriptor_tmp to %struct.__block_descriptor*), %struct.__block_descriptor** %20, !dbg !68 133*9880d681SAndroid Build Coastguard Worker %21 = getelementptr inbounds <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>, <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>* %4, i32 0, i32 5, !dbg !68 134*9880d681SAndroid Build Coastguard Worker %22 = load %0*, %0** %1, align 8, !dbg !68 135*9880d681SAndroid Build Coastguard Worker store %0* %22, %0** %21, align 8, !dbg !68 136*9880d681SAndroid Build Coastguard Worker %23 = bitcast <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>* %4 to void ()*, !dbg !68 137*9880d681SAndroid Build Coastguard Worker call void @run(void ()* %23), !dbg !68 138*9880d681SAndroid Build Coastguard Worker br label %24, !dbg !70 139*9880d681SAndroid Build Coastguard Worker 140*9880d681SAndroid Build Coastguard Worker; <label>:24 ; preds = %15, %0 141*9880d681SAndroid Build Coastguard Worker %25 = load %0*, %0** %1, align 8, !dbg !71 142*9880d681SAndroid Build Coastguard Worker %26 = bitcast %0* %25 to i8*, !dbg !71 143*9880d681SAndroid Build Coastguard Worker ret i8* %26, !dbg !71 144*9880d681SAndroid Build Coastguard Worker} 145*9880d681SAndroid Build Coastguard Worker 146*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.dbg.declare(metadata, metadata, metadata) #1 147*9880d681SAndroid Build Coastguard Worker 148*9880d681SAndroid Build Coastguard Workerdeclare i8* @objc_msgSendSuper2(%struct._objc_super*, i8*, ...) 149*9880d681SAndroid Build Coastguard Worker 150*9880d681SAndroid Build Coastguard Workerdefine internal void @run(void ()* %block) #0 !dbg !39 { 151*9880d681SAndroid Build Coastguard Worker %1 = alloca void ()*, align 8 152*9880d681SAndroid Build Coastguard Worker store void ()* %block, void ()** %1, align 8 153*9880d681SAndroid Build Coastguard Worker call void @llvm.dbg.declare(metadata void ()** %1, metadata !72, metadata !DIExpression()), !dbg !73 154*9880d681SAndroid Build Coastguard Worker %2 = load void ()*, void ()** %1, align 8, !dbg !74 155*9880d681SAndroid Build Coastguard Worker %3 = bitcast void ()* %2 to %struct.__block_literal_generic*, !dbg !74 156*9880d681SAndroid Build Coastguard Worker %4 = getelementptr inbounds %struct.__block_literal_generic, %struct.__block_literal_generic* %3, i32 0, i32 3, !dbg !74 157*9880d681SAndroid Build Coastguard Worker %5 = bitcast %struct.__block_literal_generic* %3 to i8*, !dbg !74 158*9880d681SAndroid Build Coastguard Worker %6 = load i8*, i8** %4, !dbg !74 159*9880d681SAndroid Build Coastguard Worker %7 = bitcast i8* %6 to void (i8*)*, !dbg !74 160*9880d681SAndroid Build Coastguard Worker call void %7(i8* %5), !dbg !74 161*9880d681SAndroid Build Coastguard Worker ret void, !dbg !75 162*9880d681SAndroid Build Coastguard Worker} 163*9880d681SAndroid Build Coastguard Worker 164*9880d681SAndroid Build Coastguard Workerdefine internal void @"__9-[A init]_block_invoke"(i8* %.block_descriptor) #0 !dbg !27 { 165*9880d681SAndroid Build Coastguard Worker %1 = alloca i8*, align 8 166*9880d681SAndroid Build Coastguard Worker %2 = alloca <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>*, align 8 167*9880d681SAndroid Build Coastguard Worker %d = alloca %1*, align 8 168*9880d681SAndroid Build Coastguard Worker store i8* %.block_descriptor, i8** %1, align 8 169*9880d681SAndroid Build Coastguard Worker %3 = load i8*, i8** %1 170*9880d681SAndroid Build Coastguard Worker call void @llvm.dbg.value(metadata i8* %3, i64 0, metadata !76, metadata !DIExpression()), !dbg !88 171*9880d681SAndroid Build Coastguard Worker call void @llvm.dbg.declare(metadata i8* %.block_descriptor, metadata !76, metadata !DIExpression()), !dbg !88 172*9880d681SAndroid Build Coastguard Worker %4 = bitcast i8* %.block_descriptor to <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>*, !dbg !88 173*9880d681SAndroid Build Coastguard Worker store <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>* %4, <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>** %2, align 8, !dbg !88 174*9880d681SAndroid Build Coastguard Worker %5 = getelementptr inbounds <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>, <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>* %4, i32 0, i32 5, !dbg !88 175*9880d681SAndroid Build Coastguard Worker call void @llvm.dbg.declare(metadata <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>** %2, metadata !89, metadata !111), !dbg !90 176*9880d681SAndroid Build Coastguard Worker call void @llvm.dbg.declare(metadata %1** %d, metadata !91, metadata !DIExpression()), !dbg !100 177*9880d681SAndroid Build Coastguard Worker %6 = load %struct._class_t*, %struct._class_t** @"\01L_OBJC_CLASSLIST_REFERENCES_$_", !dbg !100 178*9880d681SAndroid Build Coastguard Worker %7 = bitcast %struct._class_t* %6 to i8*, !dbg !100 179*9880d681SAndroid Build Coastguard Worker %8 = load i8*, i8** getelementptr inbounds (%struct._message_ref_t, %struct._message_ref_t* bitcast ({ i8* (i8*, %struct._message_ref_t*, ...)*, i8* }* @"\01l_objc_msgSend_fixup_alloc" to %struct._message_ref_t*), i32 0, i32 0), !dbg !100 180*9880d681SAndroid Build Coastguard Worker %9 = bitcast i8* %8 to i8* (i8*, i8*)*, !dbg !100 181*9880d681SAndroid Build Coastguard Worker %10 = call i8* %9(i8* %7, i8* bitcast ({ i8* (i8*, %struct._message_ref_t*, ...)*, i8* }* @"\01l_objc_msgSend_fixup_alloc" to i8*)), !dbg !100 182*9880d681SAndroid Build Coastguard Worker %11 = bitcast i8* %10 to %1*, !dbg !100 183*9880d681SAndroid Build Coastguard Worker %12 = load i8*, i8** @"\01L_OBJC_SELECTOR_REFERENCES_", !dbg !100, !invariant.load !67 184*9880d681SAndroid Build Coastguard Worker %13 = bitcast %1* %11 to i8*, !dbg !100 185*9880d681SAndroid Build Coastguard Worker %14 = call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i8* (i8*, i8*)*)(i8* %13, i8* %12), !dbg !100 186*9880d681SAndroid Build Coastguard Worker %15 = bitcast i8* %14 to %1*, !dbg !100 187*9880d681SAndroid Build Coastguard Worker store %1* %15, %1** %d, align 8, !dbg !100 188*9880d681SAndroid Build Coastguard Worker %16 = load %1*, %1** %d, align 8, !dbg !101 189*9880d681SAndroid Build Coastguard Worker %17 = bitcast %1* %16 to i8*, !dbg !101 190*9880d681SAndroid Build Coastguard Worker %18 = load i8*, i8** getelementptr inbounds (%struct._message_ref_t, %struct._message_ref_t* bitcast ({ i8* (i8*, %struct._message_ref_t*, ...)*, i8* }* @"\01l_objc_msgSend_fixup_count" to %struct._message_ref_t*), i32 0, i32 0), !dbg !101 191*9880d681SAndroid Build Coastguard Worker %19 = bitcast i8* %18 to i32 (i8*, i8*)*, !dbg !101 192*9880d681SAndroid Build Coastguard Worker %20 = call i32 %19(i8* %17, i8* bitcast ({ i8* (i8*, %struct._message_ref_t*, ...)*, i8* }* @"\01l_objc_msgSend_fixup_count" to i8*)), !dbg !101 193*9880d681SAndroid Build Coastguard Worker %21 = add nsw i32 42, %20, !dbg !101 194*9880d681SAndroid Build Coastguard Worker %22 = load %0*, %0** %5, align 8, !dbg !101 195*9880d681SAndroid Build Coastguard Worker %23 = load i64, i64* @"OBJC_IVAR_$_A.ivar", !dbg !101, !invariant.load !67 196*9880d681SAndroid Build Coastguard Worker %24 = bitcast %0* %22 to i8*, !dbg !101 197*9880d681SAndroid Build Coastguard Worker %25 = getelementptr inbounds i8, i8* %24, i64 %23, !dbg !101 198*9880d681SAndroid Build Coastguard Worker %26 = bitcast i8* %25 to i32*, !dbg !101 199*9880d681SAndroid Build Coastguard Worker store i32 %21, i32* %26, align 4, !dbg !101 200*9880d681SAndroid Build Coastguard Worker ret void, !dbg !90 201*9880d681SAndroid Build Coastguard Worker} 202*9880d681SAndroid Build Coastguard Worker 203*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.dbg.value(metadata, i64, metadata, metadata) #1 204*9880d681SAndroid Build Coastguard Worker 205*9880d681SAndroid Build Coastguard Workerdeclare i8* @objc_msgSend_fixup(i8*, %struct._message_ref_t*, ...) 206*9880d681SAndroid Build Coastguard Worker 207*9880d681SAndroid Build Coastguard Workerdeclare i8* @objc_msgSend(i8*, i8*, ...) #2 208*9880d681SAndroid Build Coastguard Worker 209*9880d681SAndroid Build Coastguard Workerdefine internal void @__copy_helper_block_(i8*, i8*) !dbg !31 { 210*9880d681SAndroid Build Coastguard Worker %3 = alloca i8*, align 8 211*9880d681SAndroid Build Coastguard Worker %4 = alloca i8*, align 8 212*9880d681SAndroid Build Coastguard Worker store i8* %0, i8** %3, align 8 213*9880d681SAndroid Build Coastguard Worker call void @llvm.dbg.declare(metadata i8** %3, metadata !102, metadata !DIExpression()), !dbg !103 214*9880d681SAndroid Build Coastguard Worker store i8* %1, i8** %4, align 8 215*9880d681SAndroid Build Coastguard Worker call void @llvm.dbg.declare(metadata i8** %4, metadata !104, metadata !DIExpression()), !dbg !103 216*9880d681SAndroid Build Coastguard Worker %5 = load i8*, i8** %4, !dbg !103 217*9880d681SAndroid Build Coastguard Worker %6 = bitcast i8* %5 to <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>*, !dbg !103 218*9880d681SAndroid Build Coastguard Worker %7 = load i8*, i8** %3, !dbg !103 219*9880d681SAndroid Build Coastguard Worker %8 = bitcast i8* %7 to <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>*, !dbg !103 220*9880d681SAndroid Build Coastguard Worker %9 = getelementptr inbounds <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>, <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>* %6, i32 0, i32 5, !dbg !103 221*9880d681SAndroid Build Coastguard Worker %10 = getelementptr inbounds <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>, <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>* %8, i32 0, i32 5, !dbg !103 222*9880d681SAndroid Build Coastguard Worker %11 = load %0*, %0** %9, !dbg !103 223*9880d681SAndroid Build Coastguard Worker %12 = bitcast %0* %11 to i8*, !dbg !103 224*9880d681SAndroid Build Coastguard Worker %13 = bitcast %0** %10 to i8*, !dbg !103 225*9880d681SAndroid Build Coastguard Worker call void @_Block_object_assign(i8* %13, i8* %12, i32 3) #3, !dbg !103 226*9880d681SAndroid Build Coastguard Worker ret void, !dbg !103 227*9880d681SAndroid Build Coastguard Worker} 228*9880d681SAndroid Build Coastguard Worker 229*9880d681SAndroid Build Coastguard Workerdeclare void @_Block_object_assign(i8*, i8*, i32) 230*9880d681SAndroid Build Coastguard Worker 231*9880d681SAndroid Build Coastguard Workerdefine internal void @__destroy_helper_block_(i8*) !dbg !35 { 232*9880d681SAndroid Build Coastguard Worker %2 = alloca i8*, align 8 233*9880d681SAndroid Build Coastguard Worker store i8* %0, i8** %2, align 8 234*9880d681SAndroid Build Coastguard Worker call void @llvm.dbg.declare(metadata i8** %2, metadata !105, metadata !DIExpression()), !dbg !106 235*9880d681SAndroid Build Coastguard Worker %3 = load i8*, i8** %2, !dbg !106 236*9880d681SAndroid Build Coastguard Worker %4 = bitcast i8* %3 to <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>*, !dbg !106 237*9880d681SAndroid Build Coastguard Worker %5 = getelementptr inbounds <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>, <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>* %4, i32 0, i32 5, !dbg !106 238*9880d681SAndroid Build Coastguard Worker %6 = load %0*, %0** %5, !dbg !106 239*9880d681SAndroid Build Coastguard Worker %7 = bitcast %0* %6 to i8*, !dbg !106 240*9880d681SAndroid Build Coastguard Worker call void @_Block_object_dispose(i8* %7, i32 3) #3, !dbg !106 241*9880d681SAndroid Build Coastguard Worker ret void, !dbg !106 242*9880d681SAndroid Build Coastguard Worker} 243*9880d681SAndroid Build Coastguard Worker 244*9880d681SAndroid Build Coastguard Workerdeclare void @_Block_object_dispose(i8*, i32) 245*9880d681SAndroid Build Coastguard Worker 246*9880d681SAndroid Build Coastguard Workerdefine i32 @main() #0 !dbg !36 { 247*9880d681SAndroid Build Coastguard Worker %1 = alloca i32, align 4 248*9880d681SAndroid Build Coastguard Worker %a = alloca %0*, align 8 249*9880d681SAndroid Build Coastguard Worker store i32 0, i32* %1 250*9880d681SAndroid Build Coastguard Worker call void @llvm.dbg.declare(metadata %0** %a, metadata !107, metadata !DIExpression()), !dbg !108 251*9880d681SAndroid Build Coastguard Worker %2 = load %struct._class_t*, %struct._class_t** @"\01L_OBJC_CLASSLIST_REFERENCES_$_5", !dbg !108 252*9880d681SAndroid Build Coastguard Worker %3 = bitcast %struct._class_t* %2 to i8*, !dbg !108 253*9880d681SAndroid Build Coastguard Worker %4 = load i8*, i8** getelementptr inbounds (%struct._message_ref_t, %struct._message_ref_t* bitcast ({ i8* (i8*, %struct._message_ref_t*, ...)*, i8* }* @"\01l_objc_msgSend_fixup_alloc" to %struct._message_ref_t*), i32 0, i32 0), !dbg !108 254*9880d681SAndroid Build Coastguard Worker %5 = bitcast i8* %4 to i8* (i8*, i8*)*, !dbg !108 255*9880d681SAndroid Build Coastguard Worker %6 = call i8* %5(i8* %3, i8* bitcast ({ i8* (i8*, %struct._message_ref_t*, ...)*, i8* }* @"\01l_objc_msgSend_fixup_alloc" to i8*)), !dbg !108 256*9880d681SAndroid Build Coastguard Worker %7 = bitcast i8* %6 to %0*, !dbg !108 257*9880d681SAndroid Build Coastguard Worker %8 = load i8*, i8** @"\01L_OBJC_SELECTOR_REFERENCES_", !dbg !108, !invariant.load !67 258*9880d681SAndroid Build Coastguard Worker %9 = bitcast %0* %7 to i8*, !dbg !108 259*9880d681SAndroid Build Coastguard Worker %10 = call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i8* (i8*, i8*)*)(i8* %9, i8* %8), !dbg !108 260*9880d681SAndroid Build Coastguard Worker %11 = bitcast i8* %10 to %0*, !dbg !108 261*9880d681SAndroid Build Coastguard Worker store %0* %11, %0** %a, align 8, !dbg !108 262*9880d681SAndroid Build Coastguard Worker ret i32 0, !dbg !109 263*9880d681SAndroid Build Coastguard Worker} 264*9880d681SAndroid Build Coastguard Worker 265*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-frame-pointer-elim-non-leaf"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" } 266*9880d681SAndroid Build Coastguard Workerattributes #1 = { nounwind readnone } 267*9880d681SAndroid Build Coastguard Workerattributes #2 = { nonlazybind } 268*9880d681SAndroid Build Coastguard Workerattributes #3 = { nounwind } 269*9880d681SAndroid Build Coastguard Worker 270*9880d681SAndroid Build Coastguard Worker!llvm.dbg.cu = !{!0} 271*9880d681SAndroid Build Coastguard Worker!llvm.module.flags = !{!56, !57, !58, !59, !110} 272*9880d681SAndroid Build Coastguard Worker 273*9880d681SAndroid Build Coastguard Worker!0 = distinct !DICompileUnit(language: DW_LANG_ObjC, producer: "clang version 3.3 ", isOptimized: false, runtimeVersion: 2, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !3, globals: !2, imports: !2) 274*9880d681SAndroid Build Coastguard Worker!1 = !DIFile(filename: "llvm/tools/clang/test/CodeGenObjC/<unknown>", directory: "llvm/_build.ninja.Debug") 275*9880d681SAndroid Build Coastguard Worker!2 = !{} 276*9880d681SAndroid Build Coastguard Worker!3 = !{!4} 277*9880d681SAndroid Build Coastguard Worker!4 = !DICompositeType(tag: DW_TAG_structure_type, name: "A", line: 33, size: 32, align: 32, flags: DIFlagObjcClassComplete, runtimeLang: DW_LANG_ObjC, file: !5, scope: !6, elements: !7) 278*9880d681SAndroid Build Coastguard Worker!5 = !DIFile(filename: "llvm/tools/clang/test/CodeGenObjC/debug-info-blocks.m", directory: "llvm/_build.ninja.Debug") 279*9880d681SAndroid Build Coastguard Worker!6 = !DIFile(filename: "llvm/tools/clang/test/CodeGenObjC/debug-info-blocks.m", directory: "llvm/_build.ninja.Debug") 280*9880d681SAndroid Build Coastguard Worker!7 = !{!8, !10} 281*9880d681SAndroid Build Coastguard Worker!8 = !DIDerivedType(tag: DW_TAG_inheritance, scope: !4, baseType: !9) 282*9880d681SAndroid Build Coastguard Worker!9 = !DICompositeType(tag: DW_TAG_structure_type, name: "NSObject", line: 21, align: 8, runtimeLang: DW_LANG_ObjC, file: !5, scope: !6, elements: !2) 283*9880d681SAndroid Build Coastguard Worker!10 = !DIDerivedType(tag: DW_TAG_member, name: "ivar", line: 35, size: 32, align: 32, file: !5, scope: !6, baseType: !11) 284*9880d681SAndroid Build Coastguard Worker!11 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed) 285*9880d681SAndroid Build Coastguard Worker!13 = distinct !DISubprogram(name: "-[A init]", line: 46, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 46, file: !5, scope: !6, type: !14, variables: !2) 286*9880d681SAndroid Build Coastguard Worker!14 = !DISubroutineType(types: !15) 287*9880d681SAndroid Build Coastguard Worker!15 = !{!16, !23, !24} 288*9880d681SAndroid Build Coastguard Worker!16 = !DIDerivedType(tag: DW_TAG_typedef, name: "id", line: 46, file: !5, baseType: !17) 289*9880d681SAndroid Build Coastguard Worker!17 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !18) 290*9880d681SAndroid Build Coastguard Worker!18 = !DICompositeType(tag: DW_TAG_structure_type, name: "objc_object", file: !1, elements: !19) 291*9880d681SAndroid Build Coastguard Worker!19 = !{!20} 292*9880d681SAndroid Build Coastguard Worker!20 = !DIDerivedType(tag: DW_TAG_member, name: "isa", size: 64, file: !1, scope: !18, baseType: !21) 293*9880d681SAndroid Build Coastguard Worker!21 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, baseType: !22) 294*9880d681SAndroid Build Coastguard Worker!22 = !DICompositeType(tag: DW_TAG_structure_type, name: "objc_class", flags: DIFlagFwdDecl, file: !1) 295*9880d681SAndroid Build Coastguard Worker!23 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, flags: DIFlagArtificial | DIFlagObjectPointer, baseType: !4) 296*9880d681SAndroid Build Coastguard Worker!24 = !DIDerivedType(tag: DW_TAG_typedef, name: "SEL", line: 46, flags: DIFlagArtificial, file: !5, baseType: !25) 297*9880d681SAndroid Build Coastguard Worker!25 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !26) 298*9880d681SAndroid Build Coastguard Worker!26 = !DICompositeType(tag: DW_TAG_structure_type, name: "objc_selector", flags: DIFlagFwdDecl, file: !1) 299*9880d681SAndroid Build Coastguard Worker!27 = distinct !DISubprogram(name: "__9-[A init]_block_invoke", line: 49, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 49, file: !5, scope: !6, type: !28, variables: !2) 300*9880d681SAndroid Build Coastguard Worker!28 = !DISubroutineType(types: !29) 301*9880d681SAndroid Build Coastguard Worker!29 = !{null, !30} 302*9880d681SAndroid Build Coastguard Worker!30 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: null) 303*9880d681SAndroid Build Coastguard Worker!31 = distinct !DISubprogram(name: "__copy_helper_block_", line: 52, isLocal: true, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !0, scopeLine: 52, file: !1, scope: !32, type: !33, variables: !2) 304*9880d681SAndroid Build Coastguard Worker!32 = !DIFile(filename: "llvm/tools/clang/test/CodeGenObjC/<unknown>", directory: "llvm/_build.ninja.Debug") 305*9880d681SAndroid Build Coastguard Worker!33 = !DISubroutineType(types: !34) 306*9880d681SAndroid Build Coastguard Worker!34 = !{null, !30, !30} 307*9880d681SAndroid Build Coastguard Worker!35 = distinct !DISubprogram(name: "__destroy_helper_block_", line: 52, isLocal: true, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !0, scopeLine: 52, file: !1, scope: !32, type: !28, variables: !2) 308*9880d681SAndroid Build Coastguard Worker!36 = distinct !DISubprogram(name: "main", line: 59, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !0, scopeLine: 60, file: !5, scope: !6, type: !37, variables: !2) 309*9880d681SAndroid Build Coastguard Worker!37 = !DISubroutineType(types: !38) 310*9880d681SAndroid Build Coastguard Worker!38 = !{!11} 311*9880d681SAndroid Build Coastguard Worker!39 = distinct !DISubprogram(name: "run", line: 39, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 40, file: !5, scope: !6, type: !40, variables: !2) 312*9880d681SAndroid Build Coastguard Worker!40 = !DISubroutineType(types: !41) 313*9880d681SAndroid Build Coastguard Worker!41 = !{null, !42} 314*9880d681SAndroid Build Coastguard Worker!42 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, baseType: !43) 315*9880d681SAndroid Build Coastguard Worker!43 = !DICompositeType(tag: DW_TAG_structure_type, name: "__block_literal_generic", line: 40, size: 256, flags: DIFlagAppleBlock, file: !5, scope: !6, elements: !44) 316*9880d681SAndroid Build Coastguard Worker!44 = !{!45, !46, !47, !48, !49} 317*9880d681SAndroid Build Coastguard Worker!45 = !DIDerivedType(tag: DW_TAG_member, name: "__isa", size: 64, align: 64, file: !5, scope: !6, baseType: !30) 318*9880d681SAndroid Build Coastguard Worker!46 = !DIDerivedType(tag: DW_TAG_member, name: "__flags", size: 32, align: 32, offset: 64, file: !5, scope: !6, baseType: !11) 319*9880d681SAndroid Build Coastguard Worker!47 = !DIDerivedType(tag: DW_TAG_member, name: "__reserved", size: 32, align: 32, offset: 96, file: !5, scope: !6, baseType: !11) 320*9880d681SAndroid Build Coastguard Worker!48 = !DIDerivedType(tag: DW_TAG_member, name: "__FuncPtr", size: 64, align: 64, offset: 128, file: !5, scope: !6, baseType: !30) 321*9880d681SAndroid Build Coastguard Worker!49 = !DIDerivedType(tag: DW_TAG_member, name: "__descriptor", line: 40, size: 64, align: 64, offset: 192, file: !5, scope: !6, baseType: !50) 322*9880d681SAndroid Build Coastguard Worker!50 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, baseType: !51) 323*9880d681SAndroid Build Coastguard Worker!51 = !DICompositeType(tag: DW_TAG_structure_type, name: "__block_descriptor", line: 40, size: 128, flags: DIFlagAppleBlock, file: !5, scope: !6, elements: !52) 324*9880d681SAndroid Build Coastguard Worker!52 = !{!53, !55} 325*9880d681SAndroid Build Coastguard Worker!53 = !DIDerivedType(tag: DW_TAG_member, name: "reserved", size: 64, align: 64, file: !5, scope: !6, baseType: !54) 326*9880d681SAndroid Build Coastguard Worker!54 = !DIBasicType(tag: DW_TAG_base_type, name: "long unsigned int", size: 64, align: 64, encoding: DW_ATE_unsigned) 327*9880d681SAndroid Build Coastguard Worker!55 = !DIDerivedType(tag: DW_TAG_member, name: "Size", size: 64, align: 64, offset: 64, file: !5, scope: !6, baseType: !54) 328*9880d681SAndroid Build Coastguard Worker!56 = !{i32 1, !"Objective-C Version", i32 2} 329*9880d681SAndroid Build Coastguard Worker!57 = !{i32 1, !"Objective-C Image Info Version", i32 0} 330*9880d681SAndroid Build Coastguard Worker!58 = !{i32 1, !"Objective-C Image Info Section", !"__DATA, __objc_imageinfo, regular, no_dead_strip"} 331*9880d681SAndroid Build Coastguard Worker!59 = !{i32 4, !"Objective-C Garbage Collection", i32 0} 332*9880d681SAndroid Build Coastguard Worker!60 = !DILocalVariable(name: "self", line: 46, arg: 1, flags: DIFlagArtificial | DIFlagObjectPointer, scope: !13, file: !32, type: !61) 333*9880d681SAndroid Build Coastguard Worker!61 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !4) 334*9880d681SAndroid Build Coastguard Worker!62 = !DILocation(line: 46, scope: !13) 335*9880d681SAndroid Build Coastguard Worker!63 = !DILocalVariable(name: "_cmd", line: 46, arg: 2, flags: DIFlagArtificial, scope: !13, file: !32, type: !64) 336*9880d681SAndroid Build Coastguard Worker!64 = !DIDerivedType(tag: DW_TAG_typedef, name: "SEL", line: 46, file: !5, baseType: !25) 337*9880d681SAndroid Build Coastguard Worker!65 = !DILocation(line: 48, scope: !66) 338*9880d681SAndroid Build Coastguard Worker!66 = distinct !DILexicalBlock(line: 47, column: 0, file: !5, scope: !13) 339*9880d681SAndroid Build Coastguard Worker!67 = !{} 340*9880d681SAndroid Build Coastguard Worker!68 = !DILocation(line: 49, scope: !69) 341*9880d681SAndroid Build Coastguard Worker!69 = distinct !DILexicalBlock(line: 48, column: 0, file: !5, scope: !66) 342*9880d681SAndroid Build Coastguard Worker!70 = !DILocation(line: 53, scope: !69) 343*9880d681SAndroid Build Coastguard Worker!71 = !DILocation(line: 54, scope: !66) 344*9880d681SAndroid Build Coastguard Worker!72 = !DILocalVariable(name: "block", line: 39, arg: 1, scope: !39, file: !6, type: !42) 345*9880d681SAndroid Build Coastguard Worker!73 = !DILocation(line: 39, scope: !39) 346*9880d681SAndroid Build Coastguard Worker!74 = !DILocation(line: 41, scope: !39) 347*9880d681SAndroid Build Coastguard Worker!75 = !DILocation(line: 42, scope: !39) 348*9880d681SAndroid Build Coastguard Worker!76 = !DILocalVariable(name: ".block_descriptor", line: 49, arg: 1, flags: DIFlagArtificial, scope: !27, file: !6, type: !77) 349*9880d681SAndroid Build Coastguard Worker!77 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, baseType: !78) 350*9880d681SAndroid Build Coastguard Worker!78 = !DICompositeType(tag: DW_TAG_structure_type, name: "__block_literal_1", line: 49, size: 320, align: 64, file: !5, scope: !6, elements: !79) 351*9880d681SAndroid Build Coastguard Worker!79 = !{!80, !81, !82, !83, !84, !87} 352*9880d681SAndroid Build Coastguard Worker!80 = !DIDerivedType(tag: DW_TAG_member, name: "__isa", line: 49, size: 64, align: 64, file: !5, scope: !6, baseType: !30) 353*9880d681SAndroid Build Coastguard Worker!81 = !DIDerivedType(tag: DW_TAG_member, name: "__flags", line: 49, size: 32, align: 32, offset: 64, file: !5, scope: !6, baseType: !11) 354*9880d681SAndroid Build Coastguard Worker!82 = !DIDerivedType(tag: DW_TAG_member, name: "__reserved", line: 49, size: 32, align: 32, offset: 96, file: !5, scope: !6, baseType: !11) 355*9880d681SAndroid Build Coastguard Worker!83 = !DIDerivedType(tag: DW_TAG_member, name: "__FuncPtr", line: 49, size: 64, align: 64, offset: 128, file: !5, scope: !6, baseType: !30) 356*9880d681SAndroid Build Coastguard Worker!84 = !DIDerivedType(tag: DW_TAG_member, name: "__descriptor", line: 49, size: 64, align: 64, offset: 192, file: !5, scope: !6, baseType: !85) 357*9880d681SAndroid Build Coastguard Worker!85 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !86) 358*9880d681SAndroid Build Coastguard Worker!86 = !DICompositeType(tag: DW_TAG_structure_type, name: "__block_descriptor_withcopydispose", line: 49, flags: DIFlagFwdDecl, file: !1) 359*9880d681SAndroid Build Coastguard Worker!87 = !DIDerivedType(tag: DW_TAG_member, name: "self", line: 49, size: 64, align: 64, offset: 256, file: !5, scope: !6, baseType: !61) 360*9880d681SAndroid Build Coastguard Worker!88 = !DILocation(line: 49, scope: !27) 361*9880d681SAndroid Build Coastguard Worker!89 = !DILocalVariable(name: "self", line: 52, scope: !27, file: !32, type: !23) 362*9880d681SAndroid Build Coastguard Worker!90 = !DILocation(line: 52, scope: !27) 363*9880d681SAndroid Build Coastguard Worker!91 = !DILocalVariable(name: "d", line: 50, scope: !92, file: !6, type: !93) 364*9880d681SAndroid Build Coastguard Worker!92 = distinct !DILexicalBlock(line: 49, column: 0, file: !5, scope: !27) 365*9880d681SAndroid Build Coastguard Worker!93 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !94) 366*9880d681SAndroid Build Coastguard Worker!94 = !DICompositeType(tag: DW_TAG_structure_type, name: "NSMutableDictionary", line: 30, align: 8, runtimeLang: DW_LANG_ObjC, file: !5, scope: !6, elements: !95) 367*9880d681SAndroid Build Coastguard Worker!95 = !{!96} 368*9880d681SAndroid Build Coastguard Worker!96 = !DIDerivedType(tag: DW_TAG_inheritance, scope: !94, baseType: !97) 369*9880d681SAndroid Build Coastguard Worker!97 = !DICompositeType(tag: DW_TAG_structure_type, name: "NSDictionary", line: 26, align: 8, runtimeLang: DW_LANG_ObjC, file: !5, scope: !6, elements: !98) 370*9880d681SAndroid Build Coastguard Worker!98 = !{!99} 371*9880d681SAndroid Build Coastguard Worker!99 = !DIDerivedType(tag: DW_TAG_inheritance, scope: !97, baseType: !9) 372*9880d681SAndroid Build Coastguard Worker!100 = !DILocation(line: 50, scope: !92) 373*9880d681SAndroid Build Coastguard Worker!101 = !DILocation(line: 51, scope: !92) 374*9880d681SAndroid Build Coastguard Worker!102 = !DILocalVariable(name: "", line: 52, arg: 1, flags: DIFlagArtificial | DIFlagObjectPointer, scope: !31, file: !32, type: !30) 375*9880d681SAndroid Build Coastguard Worker!103 = !DILocation(line: 52, scope: !31) 376*9880d681SAndroid Build Coastguard Worker!104 = !DILocalVariable(name: "", line: 52, arg: 2, flags: DIFlagArtificial, scope: !31, file: !32, type: !30) 377*9880d681SAndroid Build Coastguard Worker!105 = !DILocalVariable(name: "", line: 52, arg: 1, flags: DIFlagArtificial | DIFlagObjectPointer, scope: !35, file: !32, type: !30) 378*9880d681SAndroid Build Coastguard Worker!106 = !DILocation(line: 52, scope: !35) 379*9880d681SAndroid Build Coastguard Worker!107 = !DILocalVariable(name: "a", line: 61, scope: !36, file: !6, type: !61) 380*9880d681SAndroid Build Coastguard Worker!108 = !DILocation(line: 61, scope: !36) 381*9880d681SAndroid Build Coastguard Worker!109 = !DILocation(line: 62, scope: !36) 382*9880d681SAndroid Build Coastguard Worker!110 = !{i32 1, !"Debug Info Version", i32 3} 383*9880d681SAndroid Build Coastguard Worker!111 = !DIExpression(DW_OP_deref, DW_OP_plus, 32) 384