Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; ModuleID = 'Test'
- %struct.__block_literal_generic.0 = type { i8*, i32, i32, i8*, %struct.__block_descriptor* }
- %struct.__block_descriptor = type { i64, i64 }
- %struct.__block_literal_generic = type { i8*, i32, i32, i8*, %struct.__tq_block_descriptor* }
- %struct.__tq_block_descriptor = type { i64, i64 }
- @_NSConcreteStackBlock = external global i8*
- @__tq_block_descriptor_tmp = internal constant { i64, i64 } { i64 0, i64 32 }
- @__tq_block_descriptor_tmp1 = internal constant { i64, i64 } { i64 0, i64 32 }
- @selector = private unnamed_addr constant [12 x i8] c"doubleValue\00"
- @className_NSNumber = private unnamed_addr constant [9 x i8] c"NSNumber\00"
- @sel_numberWithDouble = private unnamed_addr constant [18 x i8] c"numberWithDouble:\00"
- declare void @objc_allocateClassPair(i8*, i8*, i64)
- declare void @objc_registerClassPair(i8*)
- declare i8 @class_addIvar(i8*, i8*, i64, i8, i8*)
- declare i8 @class_addMethod(i8*, i8*, i8*, i8*)
- declare i8* @objc_msgSend(i8*, i8*, ...)
- declare void @objc_storeStrong(i8**, i8*)
- declare i8* @objc_storeWeak(i8**, i8*)
- declare i8* @objc_loadWeak(i8**)
- declare void @objc_destroyWeak(i8**)
- declare i8* @objc_retain(i8*)
- declare void @objc_release(i8*)
- declare i8* @sel_registerName(i8*)
- declare i8* @sel_getName(i8*)
- declare i8* @objc_getClass(i8*)
- declare i8* @objc_retainBlock(i8*)
- define i8* @__tq_block_invoke_0() {
- entry:
- %block = alloca %struct.__block_literal_generic.0, align 8
- %block.isa = getelementptr inbounds %struct.__block_literal_generic.0* %block, i32 0, i32 0
- store i8* bitcast (i8** @_NSConcreteStackBlock to i8*), i8** %block.isa
- %block.flags = getelementptr inbounds %struct.__block_literal_generic.0* %block, i32 0, i32 1
- store i32 0, i32* %block.flags
- %block.reserved = getelementptr inbounds %struct.__block_literal_generic.0* %block, i32 0, i32 2
- store i32 0, i32* %block.reserved
- %block.invoke = getelementptr inbounds %struct.__block_literal_generic.0* %block, i32 0, i32 3
- store i8* bitcast (i8* (i8*, i8*)* @__tq_block_invoke_1 to i8*), i8** %block.invoke
- %block.descriptor = getelementptr inbounds %struct.__block_literal_generic.0* %block, i32 0, i32 4
- store %struct.__block_descriptor* bitcast ({ i64, i64 }* @__tq_block_descriptor_tmp1 to %struct.__block_descriptor*), %struct.__block_descriptor** %block.descriptor
- %0 = bitcast %struct.__block_literal_generic.0* %block to i8*
- %1 = call i8* @objc_retainBlock(i8* %0)
- %2 = alloca i8*
- store i8* null, i8** %2
- %3 = load i8** %2
- store i8* %1, i8** %2
- %4 = load i8** %2
- %5 = call i8* @sel_registerName(i8* getelementptr inbounds ([12 x i8]* @selector, i32 0, i32 0))
- %6 = call i8* @objc_getClass(i8* getelementptr inbounds ([9 x i8]* @className_NSNumber, i32 0, i32 0))
- %7 = call i8* @sel_registerName(i8* getelementptr inbounds ([18 x i8]* @sel_numberWithDouble, i32 0, i32 0))
- %8 = call i8* (i8*, i8*, ...)* @objc_msgSend(i8* %6, i8* %7, double 1.230000e+02)
- %9 = call i8* (i8*, i8*, ...)* @objc_msgSend(i8* %8, i8* %5)
- %10 = load i8** %2
- %11 = bitcast i8* %10 to %struct.__block_literal_generic*
- %12 = getelementptr inbounds %struct.__block_literal_generic* %11, i32 0, i32 3
- %13 = bitcast %struct.__block_literal_generic* %11 to i8*
- %14 = call i8* @objc_getClass(i8* getelementptr inbounds ([9 x i8]* @className_NSNumber, i32 0, i32 0))
- %15 = call i8* @sel_registerName(i8* getelementptr inbounds ([18 x i8]* @sel_numberWithDouble, i32 0, i32 0))
- %16 = call i8* (i8*, i8*, ...)* @objc_msgSend(i8* %14, i8* %15, double 1.230000e+02)
- %17 = load i8** %12
- %18 = bitcast i8* %17 to i8* (i8*, i8*)*
- %19 = call i8* %18(i8* %13, i8* %16)
- ret i8* %19
- }
- define i8* @__tq_block_invoke_1(i8*, i8*) {
- entry:
- %block = alloca %struct.__block_literal_generic.0, align 8
- %b = alloca i8*
- %__blk = alloca i8*
- store i8* %0, i8** %__blk
- store i8* %1, i8** %b
- %block.isa = getelementptr inbounds %struct.__block_literal_generic.0* %block, i32 0, i32 0
- store i8* bitcast (i8** @_NSConcreteStackBlock to i8*), i8** %block.isa
- %block.flags = getelementptr inbounds %struct.__block_literal_generic.0* %block, i32 0, i32 1
- store i32 0, i32* %block.flags
- %block.reserved = getelementptr inbounds %struct.__block_literal_generic.0* %block, i32 0, i32 2
- store i32 0, i32* %block.reserved
- %block.invoke = getelementptr inbounds %struct.__block_literal_generic.0* %block, i32 0, i32 3
- store i8* bitcast (i8* (i8*, i8*)* @__tq_block_invoke_2 to i8*), i8** %block.invoke
- %block.descriptor = getelementptr inbounds %struct.__block_literal_generic.0* %block, i32 0, i32 4
- store %struct.__block_descriptor* bitcast ({ i64, i64 }* @__tq_block_descriptor_tmp to %struct.__block_descriptor*), %struct.__block_descriptor** %block.descriptor
- %2 = bitcast %struct.__block_literal_generic.0* %block to i8*
- %3 = call i8* @objc_retainBlock(i8* %2)
- %4 = bitcast i8* %3 to %struct.__block_literal_generic*
- %5 = getelementptr inbounds %struct.__block_literal_generic* %4, i32 0, i32 3
- %6 = bitcast %struct.__block_literal_generic* %4 to i8*
- %7 = load i8** %b
- %8 = load i8** %5
- %9 = bitcast i8* %8 to i8* (i8*, i8*)*
- %10 = call i8* %9(i8* %6, i8* %7)
- ret i8* %10
- }
- define i8* @__tq_block_invoke_2(i8*, i8*) {
- entry:
- %c = alloca i8*
- %__blk = alloca i8*
- store i8* %0, i8** %__blk
- store i8* %1, i8** %c
- %2 = load i8** %c
- ret i8* %2
- }
- --
- 2012-06-16 00:37:42.259 tranquil[92787:707] 'root' retval: 0x7fb058c11cb0: 123 (__NSCFNumber)
Add Comment
Please, Sign In to add comment