Created
June 7, 2012 13:54
-
-
Save fjolnir/2888901 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
%struct.__block_literal_generic = type { i8*, i32, i32, i8*, %struct.__tq_block_descriptor* } | |
%struct.__tq_block_descriptor = type { i64, i64 } | |
@_NSConcreteGlobalBlock = external global i8* | |
@0 = private unnamed_addr constant [6 x i8] c"%@:%@\00" | |
@__tq_block_descriptor_tmp = internal constant { i64, i64, i8*, i8* } { i64 0, i64 0, i8* getelementptr inbounds ([6 x i8]* @0, i32 0, i32 0), i8* null } | |
@__tq_block_literal_global = internal constant { i8**, i32, i32, i8* (i8*, i8*)*, i8* } { i8** @_NSConcreteGlobalBlock, i32 1342177280, i32 0, i8* (i8*, i8*)* @__tq_block_invoke_1, i8* bitcast ({ i64, i64, i8*, i8* }* @__tq_block_descriptor_tmp to i8*) } | |
@className_NSNumber = private unnamed_addr constant [9 x i8] c"NSNumber\00" | |
@sel_numberWithDouble = private unnamed_addr constant [18 x i8] c"numberWithDouble:\00" | |
@1 = private unnamed_addr constant [6 x i8] c"%@:%@\00" | |
@__tq_block_descriptor_tmp1 = internal constant { i64, i64, i8*, i8* } { i64 0, i64 0, i8* getelementptr inbounds ([6 x i8]* @1, i32 0, i32 0), i8* null } | |
@__tq_block_literal_global2 = internal constant { i8**, i32, i32, i8* (i8*)*, i8* } { i8** @_NSConcreteGlobalBlock, i32 1342177280, i32 0, i8* (i8*)* @__tq_block_invoke_0, i8* bitcast ({ i64, i64, i8*, i8* }* @__tq_block_descriptor_tmp1 to i8*) } | |
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*) | |
define i8* @__tq_block_invoke_0(i8*) { | |
entry: | |
%__blk = alloca i8* | |
store i8* %0, i8** %__blk | |
%1 = alloca i8* | |
store i8* null, i8** %1 | |
store i8* bitcast ({ i8**, i32, i32, i8* (i8*, i8*)*, i8* }* @__tq_block_literal_global to i8*), i8** %1 | |
%2 = load i8** %1 | |
%block.literal = bitcast i8* %2 to %struct.__block_literal_generic* | |
%funPtr = getelementptr inbounds %struct.__block_literal_generic* %block.literal, i32 0, i32 3 | |
%blockLiteralCast = bitcast %struct.__block_literal_generic* %block.literal to i8* | |
%3 = call i8* @objc_getClass(i8* getelementptr inbounds ([9 x i8]* @className_NSNumber, i32 0, i32 0)) | |
%4 = call i8* @sel_registerName(i8* getelementptr inbounds ([18 x i8]* @sel_numberWithDouble, i32 0, i32 0)) | |
%5 = call i8* (i8*, i8*, ...)* @objc_msgSend(i8* %3, i8* %4, double 1.230000e+02) | |
%6 = load i8** %funPtr | |
%funCast = bitcast i8* %6 to i8* (i8*, i8*)* | |
%call = call i8* %funCast(i8* %blockLiteralCast, i8* %5) | |
ret i8* %call | |
} | |
define i8* @__tq_block_invoke_1(i8*, i8*) { | |
entry: | |
%b = alloca i8* | |
%__blk = alloca i8* | |
store i8* %0, i8** %__blk | |
store i8* %1, i8** %b | |
%2 = load i8** %b | |
ret i8* %2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment