Created
April 8, 2011 00:07
-
-
Save brson/909044 to your computer and use it in GitHub Desktop.
This file contains 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
define internal fastcc void @_rust_fn1_id(i8*, %task*, %1*, %tydesc*, i8*) { | |
allocas: | |
%5 = getelementptr %tydesc* %3, i32 0, i32 0 | |
%6 = load %tydesc*** %5 | |
%7 = getelementptr %tydesc* %3, i32 0, i32 3 | |
%8 = load void (i1*, %task*, i1*, %tydesc**, i8*)** %7 | |
%9 = ptrtoint void (i1*, %task*, i1*, %tydesc**, i8*)* %8 to i32 | |
%10 = ptrtoint %tydesc* %3 to i32 | |
%11 = add i32 %9, %10 | |
%12 = inttoptr i32 %11 to void (i1*, %task*, i1*, %tydesc**, i8*)* | |
tail call fastcc void %12(i1* null, %task* %1, i1* null, %tydesc** %6, i8* %4) | |
%13 = getelementptr %tydesc* %3, i32 0, i32 1 | |
%14 = load i32* %13 | |
tail call fastcc void @rust_memcpy_glue(i8* %0, i8* %4, i32 %14) | |
ret void | |
} | |
define internal fastcc void @_rust_fn2_main(i1*, %task*, %1*) { | |
allocas: | |
%3 = alloca %"@int" | |
%4 = alloca %"@int" | |
%5 = ptrtoint %task* %1 to i32 | |
%6 = call fastcc i32 @rust_native_rust_3(i32 ptrtoint (i32 (i32, i32, i32)* @upcall_malloc to i32), i32 %5, i32 trunc (i64 mul nuw (i64 ptrtoint (i32* getelementptr (i32* null, i32 1) to i64), i64 2) to i32), i32 0) | |
%7 = inttoptr i32 %6 to %"@int" | |
%8 = getelementptr %"@int" %7, i32 0, i32 0 | |
%9 = getelementptr %"@int" %7, i32 0, i32 1 | |
store i32 1, i32* %8 | |
store i32 100, i32* %9 | |
%10 = bitcast %"@int" %7 to i8* | |
call fastcc void inttoptr (i32 add (i32 sub (i32 ptrtoint (void (i1*, %task*, i1*, %tydesc**, i8*)* @_rust_f04bf2966a4fb2fe_glue_take to i32), i32 ptrtoint (%tydesc* @tydesc_boxed_int5 to i32)), i32 ptrtoint (%tydesc* @tydesc_boxed_int5 to i32)) to void (i1*, %task*, i1*, %tydesc**, i8*)*)(i1* null, %task* %1, i1* null, %tydesc** null, i8* %10) | |
store %"@int" %7, %"@int"* %3 | |
%11 = bitcast %"@int"* %4 to i8* | |
%12 = bitcast %"@int"* %3 to i8* | |
call fastcc void inttoptr (i32 add (i32 sub (i32 ptrtoint (void (i1*, %task*, i1*, %tydesc**, i8*)* @_rust_f04bf2966a4fb2fe_glue_take to i32), i32 ptrtoint (%tydesc* @tydesc_boxed_int5 to i32)), i32 ptrtoint (%tydesc* @tydesc_boxed_int5 to i32)) to void (i1*, %task*, i1*, %tydesc**, i8*)*)(i1* null, %task* %1, i1* null, %tydesc** null, i8* %12) | |
call fastcc void @rust_memcpy_glue(i8* %11, i8* %12, i32 ptrtoint (i1** getelementptr (i1** null, i32 1) to i32)) | |
%13 = load %"@int"* %4 | |
%14 = bitcast %"@int" %13 to i8* | |
call fastcc void inttoptr (i32 add (i32 sub (i32 ptrtoint (void (i1*, %task*, i1*, %tydesc**, i8*)* @_rust_f04bf2966a4fb2fe_glue_take to i32), i32 ptrtoint (%tydesc* @tydesc_boxed_int5 to i32)), i32 ptrtoint (%tydesc* @tydesc_boxed_int5 to i32)) to void (i1*, %task*, i1*, %tydesc**, i8*)*)(i1* null, %task* %1, i1* null, %tydesc** null, i8* %14) | |
%15 = getelementptr %"@int" %13, i32 0, i32 1 | |
%16 = load i32* %15 | |
%17 = call fastcc i32 @rust_native_rust_2(i32 ptrtoint (i32 (i32, i32)* @upcall_log_int to i32), i32 %5, i32 %16) | |
%18 = load %"@int"* %3 | |
%19 = getelementptr %"@int" %18, i32 0, i32 1 | |
%20 = load i32* %19 | |
%21 = load i32* %15 | |
%22 = icmp eq i32 %20, %21 | |
br i1 %22, label %next17, label %fail14 | |
fail14: ; preds = %allocas | |
%23 = call fastcc i32 @rust_native_rust_4(i32 ptrtoint (i32 (i32, i32, i32, i32)* @upcall_fail to i32), i32 %5, i32 ptrtoint ([21 x i8]* @str15 to i32), i32 ptrtoint ([42 x i8]* @str16 to i32), i32 12) | |
unreachable | |
next17: ; preds = %allocas | |
call fastcc void inttoptr (i32 add (i32 sub (i32 ptrtoint (void (i1*, %task*, i1*, %tydesc**, i8*)* @_rust_f04bf2966a4fb2fe_glue_drop to i32), i32 ptrtoint (%tydesc* @tydesc_boxed_int5 to i32)), i32 ptrtoint (%tydesc* @tydesc_boxed_int5 to i32)) to void (i1*, %task*, i1*, %tydesc**, i8*)*)(i1* null, %task* %1, i1* null, %tydesc** null, i8* %14) | |
call fastcc void inttoptr (i32 add (i32 sub (i32 ptrtoint (void (i1*, %task*, i1*, %tydesc**, i8*)* @_rust_f04bf2966a4fb2fe_glue_drop to i32), i32 ptrtoint (%tydesc* @tydesc_boxed_int5 to i32)), i32 ptrtoint (%tydesc* @tydesc_boxed_int5 to i32)) to void (i1*, %task*, i1*, %tydesc**, i8*)*)(i1* null, %task* %1, i1* null, %tydesc** null, i8* %14) | |
call fastcc void inttoptr (i32 add (i32 sub (i32 ptrtoint (void (i1*, %task*, i1*, %tydesc**, i8*)* @_rust_f04bf2966a4fb2fe_glue_drop to i32), i32 ptrtoint (%tydesc* @tydesc_boxed_int5 to i32)), i32 ptrtoint (%tydesc* @tydesc_boxed_int5 to i32)) to void (i1*, %task*, i1*, %tydesc**, i8*)*)(i1* null, %task* %1, i1* null, %tydesc** null, i8* %10) | |
%24 = load %"@int"* %3 | |
%25 = bitcast %"@int" %24 to i8* | |
call fastcc void inttoptr (i32 add (i32 sub (i32 ptrtoint (void (i1*, %task*, i1*, %tydesc**, i8*)* @_rust_f04bf2966a4fb2fe_glue_drop to i32), i32 ptrtoint (%tydesc* @tydesc_boxed_int5 to i32)), i32 ptrtoint (%tydesc* @tydesc_boxed_int5 to i32)) to void (i1*, %task*, i1*, %tydesc**, i8*)*)(i1* null, %task* %1, i1* null, %tydesc** null, i8* %25) | |
ret void | |
} | |
declare i32 @upcall_malloc(i32, i32, i32) | |
define internal fastcc void @_rust_f04bf2966a4fb2fe_glue_take(i1*, %task*, i1*, %tydesc**, i8*) nounwind { | |
allocas: | |
%5 = bitcast i8* %4 to %"@int" | |
%6 = getelementptr %"@int" %5, i32 0, i32 0 | |
%7 = load i32* %6 | |
%8 = icmp eq i32 %7, 2074999502 | |
br i1 %8, label %next8, label %"rc++7" | |
"rc++7": ; preds = %allocas | |
%9 = add i32 %7, 1 | |
store i32 %9, i32* %6 | |
br label %next8 | |
next8: ; preds = %"rc++7", %allocas | |
ret void | |
} | |
define internal fastcc void @_rust_f04bf2966a4fb2fe_glue_drop(i1*, %task*, i1*, %tydesc**, i8*) { | |
allocas: | |
%5 = bitcast i8* %4 to %"@int" | |
%6 = icmp eq i8* %4, null | |
br i1 %6, label %next13, label %"load rc10" | |
"load rc10": ; preds = %allocas | |
%7 = getelementptr %"@int" %5, i32 0, i32 0 | |
%8 = load i32* %7 | |
%9 = icmp eq i32 %8, 2074999502 | |
br i1 %9, label %next13, label %rc--11 | |
rc--11: ; preds = %"load rc10" | |
%10 = add i32 %8, -1 | |
store i32 %10, i32* %7 | |
%11 = icmp eq i32 %10, 0 | |
br i1 %11, label %"free box12", label %next13 | |
"free box12": ; preds = %rc--11 | |
%12 = ptrtoint %"@int" %5 to i32 | |
%13 = ptrtoint %task* %1 to i32 | |
%14 = tail call fastcc i32 @rust_native_rust_3(i32 ptrtoint (i32 (i32, i32, i32)* @upcall_free to i32), i32 %13, i32 %12, i32 0) | |
br label %next13 | |
next13: ; preds = %"free box12", %rc--11, %"load rc10", %allocas | |
ret void | |
} | |
declare i32 @upcall_free(i32, i32, i32) | |
declare i32 @upcall_log_int(i32, i32) | |
declare i32 @upcall_fail(i32, i32, i32, i32) | |
declare i32 @upcall_vec_grow(i32, i32, i32, i32, i32) | |
define i32 @main(i32, i32) { | |
%3 = tail call i32 @rust_start(i32 ptrtoint (void (i1*, %task*, %1*)* @_rust_fn2_main to i32), i32 ptrtoint (%crate* @rust_crate to i32), i32 %0, i32 %1) | |
ret i32 %3 | |
} | |
declare i32 @rust_start(i32, i32, i32, i32) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment