Created
April 9, 2012 02:26
-
-
Save brson/2340897 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
; ModuleID = 'hello.rc' | |
target datalayout = "e-p:32:32-f64:32:64-i64:32:64-f80:32:32-n8:16:32" | |
target triple = "i686-unknown-linux-gnu" | |
%shapes = type { [1 x i8]*, {}* } | |
%tydesc = type { %tydesc**, i32, i32, void (i1*, i1*, %tydesc**, i8*)*, void (i1*, i1*, %tydesc**, i8*)*, void (i1*, i1*, %tydesc**, i8*)*, i8*, void (i1*, i1*, %tydesc**, i8*)*, void (i1*, i1*, %tydesc**, i8*)*, void (i1*, i1*, %tydesc**, i8*)*, i8*, i8*, i8*, i32, i32 } | |
@_rust_crate_map_toplevel = global { i32, [2 x i32] } { i32 ptrtoint ([2 x { i32, i32 }]* @_rust_mod_map to i32), [2 x i32] [i32 ptrtoint (i32* @_rust_crate_map_core_0.2_d27e4777a53c3e50 to i32), i32 0] } | |
@shapes = internal constant %shapes { [1 x i8]* @tag_shapes, {}* @resource_shapes } | |
@rust_start = external global i32 (void (i1*, { i32, %tydesc*, i8*, i8*, i8 }*, { i32, i32, [0 x { i32, i32, [0 x i8] }*] }*)*, i32, i32, { i32, [2 x i32] }*) | |
@_ZN5hello9loglevel3E = internal global i32 0 | |
@_ZN5debug17_9f444a77fd4271d4202E = external global i32 | |
@str9 = internal constant [1 x i8] zeroinitializer | |
@str10 = internal constant [14 x i8] c"hello, world.\00" | |
@tydesc11 = internal constant %tydesc { %tydesc** null, i32 ptrtoint (i1** getelementptr (i1** null, i32 1) to i32), i32 ptrtoint (i1** getelementptr ({ i1, i1* }* null, i64 0, i32 1) to i32), void (i1*, i1*, %tydesc**, i8*)* null, void (i1*, i1*, %tydesc**, i8*)* null, void (i1*, i1*, %tydesc**, i8*)* @glue_free14, i8* null, void (i1*, i1*, %tydesc**, i8*)* null, void (i1*, i1*, %tydesc**, i8*)* null, void (i1*, i1*, %tydesc**, i8*)* null, i8* null, i8* getelementptr inbounds ([6 x i8]* @shape19, i32 0, i32 0), i8* bitcast (%shapes* @shapes to i8*), i32 0, i32 0 } | |
@_rust_crate_map_core_0.2_d27e4777a53c3e50 = external global i32 | |
@_rust_mod_map = internal global [2 x { i32, i32 }] [{ i32, i32 } { i32 ptrtoint ([6 x i8]* @str18 to i32), i32 ptrtoint (i32* @_ZN5hello9loglevel3E to i32) }, { i32, i32 } zeroinitializer] | |
@str18 = internal constant [6 x i8] c"hello\00" | |
@shape19 = internal constant [6 x i8] c"\0B\01\01\00\00\00" | |
@tag_shapes = internal constant [1 x i8] zeroinitializer | |
@resource_shapes = internal constant {} zeroinitializer | |
@rust_abi_version = constant i32 1 | |
declare void @llvm.gcroot(i8**, i8*) nounwind | |
declare void @llvm.gcread(i8*, i8**) nounwind readonly | |
declare void @llvm.memmove.p0i8.p0i8.i32(i8* nocapture, i8* nocapture, i32, i32, i1) nounwind | |
declare void @llvm.memmove.p0i8.p0i8.i64(i8* nocapture, i8* nocapture, i64, i32, i1) nounwind | |
declare void @llvm.memset.p0i8.i32(i8* nocapture, i8, i32, i32, i1) nounwind | |
declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind | |
declare void @llvm.trap() nounwind | |
declare void @upcall_fail(i8*, i8*, i32) | |
declare i8* @upcall_malloc(%tydesc*) | |
declare void @upcall_free(i8*) | |
declare void @upcall_validate_box(i8*) | |
declare i8* @upcall_shared_malloc(i32) | |
declare void @upcall_shared_free(i8*) | |
declare i8* @upcall_shared_realloc(i8*, i32) | |
declare i32 @upcall_mark(i8*) | |
declare void @upcall_vec_grow({ i32, i32, [0 x i8] }**, i32) | |
declare { i32, i32, [0 x i8] }* @upcall_str_new(i8*, i32) | |
declare { i32, i32, [0 x i8] }* @upcall_str_concat({ i32, i32, [0 x i8] }*, { i32, i32, [0 x i8] }*) | |
declare void @upcall_cmp_type(i1*, %tydesc*, %tydesc**, i8*, i8*, i8) | |
declare void @upcall_log_type(%tydesc*, i8*, i32) | |
declare i8* @upcall_alloc_c_stack(i32) | |
declare i32 @upcall_call_shim_on_c_stack(i8*, i8*) | |
declare i32 @upcall_call_shim_on_rust_stack(i8*, i8*) | |
declare i32 @upcall_rust_personality() | |
declare void @upcall_reset_stack_limit() | |
define void @_ZN4main17_4a1a51dec547b455200E(i1*, { i32, %tydesc*, i8*, i8*, i8 }*) uwtable { | |
static_allocas: | |
%2 = alloca { i32, i32, [0 x i8] }*, !dbg !5 | |
br label %load_env, !dbg !5 | |
load_env: ; preds = %static_allocas | |
br label %"function top level2", !dbg !5 | |
return: ; preds = %next6 | |
ret void, !dbg !5 | |
"function top level2": ; preds = %load_env | |
call void asm "; log (core::debug, \22\22 + \22hello, world.\22); (/home/brian/dev/rust/src/test/run-pass/hello.rs:5:12: 5:36)", ""(), !dbg !7 | |
%3 = load i32* @_ZN5hello9loglevel3E, !dbg !8 | |
br label %level4, !dbg !8 | |
level4: ; preds = %"function top level2" | |
%4 = load i32* @_ZN5debug17_9f444a77fd4271d4202E, !dbg !8 | |
br label %next5, !dbg !8 | |
next5: ; preds = %level4 | |
%5 = icmp uge i32 %3, %4, !dbg !8 | |
br i1 %5, label %cond7, label %next6, !dbg !8 | |
next6: ; preds = %next12, %next5 | |
br label %return, !dbg !5 | |
cond7: ; preds = %next5 | |
br label %log8, !dbg !8 | |
log8: ; preds = %cond7 | |
%6 = call { i32, i32, [0 x i8] }* @upcall_str_new(i8* getelementptr inbounds ([1 x i8]* @str9, i32 0, i32 0), i32 0), !dbg !9 | |
%7 = call { i32, i32, [0 x i8] }* @upcall_str_new(i8* getelementptr inbounds ([14 x i8]* @str10, i32 0, i32 0), i32 13), !dbg !5 | |
%8 = call { i32, i32, [0 x i8] }* @upcall_str_concat({ i32, i32, [0 x i8] }* %6, { i32, i32, [0 x i8] }* %7), !dbg !5 | |
store { i32, i32, [0 x i8] }* %8, { i32, i32, [0 x i8] }** %2, !dbg !5 | |
%9 = bitcast { i32, i32, [0 x i8] }** %2 to i8*, !dbg !5 | |
call void @upcall_log_type(%tydesc* @tydesc11, i8* %9, i32 %4), !dbg !5 | |
br label %cleanup13, !dbg !5 | |
next12: ; preds = %cleanup13 | |
br label %next6, !dbg !5 | |
cleanup13: ; preds = %log8 | |
%10 = bitcast { i32, i32, [0 x i8] }* %8 to i8*, !dbg !5 | |
call void @glue_free14(i1* null, i1* null, %tydesc** null, i8* %10), !dbg !5 | |
%11 = bitcast { i32, i32, [0 x i8] }* %7 to i8*, !dbg !5 | |
call void @glue_free14(i1* null, i1* null, %tydesc** null, i8* %11), !dbg !5 | |
%12 = bitcast { i32, i32, [0 x i8] }* %6 to i8*, !dbg !5 | |
call void @glue_free14(i1* null, i1* null, %tydesc** null, i8* %12), !dbg !5 | |
br label %next12, !dbg !5 | |
} | |
define void @_rust_main(i1*, { i32, %tydesc*, i8*, i8*, i8 }*, { i32, i32, [0 x { i32, i32, [0 x i8] }*] }*) { | |
static_allocas: | |
br label %load_env | |
load_env: ; preds = %static_allocas | |
br label %"function top level1" | |
return: ; preds = %"function top level1" | |
ret void | |
"function top level1": ; preds = %load_env | |
call void @_ZN4main17_4a1a51dec547b455200E(i1* %0, { i32, %tydesc*, i8*, i8*, i8 }* %1) | |
br label %return | |
} | |
define i32 @main(i32, i32) { | |
top: | |
%2 = call i32 @rust_start(void (i1*, { i32, %tydesc*, i8*, i8*, i8 }*, { i32, i32, [0 x { i32, i32, [0 x i8] }*] }*)* @_rust_main, i32 %0, i32 %1, { i32, [2 x i32] }* @_rust_crate_map_toplevel) | |
ret i32 %2 | |
} | |
define internal void @glue_free14(i1*, i1*, %tydesc**, i8*) alwaysinline { | |
static_allocas: | |
br label %load_env, !dbg !5 | |
load_env: ; preds = %static_allocas | |
br label %"function top level15", !dbg !5 | |
return: ; preds = %next16 | |
ret void, !dbg !5 | |
"function top level15": ; preds = %load_env | |
%4 = bitcast i8* %3 to { i32, i32, [0 x i8] }**, !dbg !5 | |
%5 = bitcast { i32, i32, [0 x i8] }** %4 to { i32, i32, [0 x i8] }*, !dbg !5 | |
%6 = icmp ne { i32, i32, [0 x i8] }* %5, null, !dbg !5 | |
br i1 %6, label %cond17, label %next16, !dbg !5 | |
next16: ; preds = %cond17, %"function top level15" | |
br label %return, !dbg !5 | |
cond17: ; preds = %"function top level15" | |
%7 = bitcast { i32, i32, [0 x i8] }* %5 to i8*, !dbg !5 | |
call void @upcall_shared_free(i8* %7), !dbg !5 | |
br label %next16, !dbg !5 | |
} | |
!llvm.dbg.cu = !{!0} | |
!llvm.dbg.sp = !{!1} | |
!0 = metadata !{i32 589841, i32 0, i32 36864, metadata !"hello.rc", metadata !"/home/brian/dev/rustscripten", metadata !"0.2 (9e1e42d 2012-04-08 14:16:55 -0700)", i1 true, i1 false, metadata !"", i32 0} | |
!1 = metadata !{i32 589870, i32 0, metadata !2, metadata !"main", metadata !"main", metadata !"", metadata !2, i32 5, metadata !3, i1 false, i1 true, i32 0, i32 0, i32 0, i32 256, i1 false, void (i1*, { i32, %tydesc*, i8*, i8*, i8 }*)* @_ZN4main17_4a1a51dec547b455200E} | |
!2 = metadata !{i32 589865, metadata !"/home/brian/dev/rust/src/test/run-pass/hello.rs", metadata !"/home/brian/dev/rustscripten", metadata !0} | |
!3 = metadata !{i32 589845, metadata !2, metadata !"", metadata !2, i32 0, i64 0, i64 0, i32 0, i32 0, null, metadata !4, i32 0, null} | |
!4 = metadata !{null} | |
!5 = metadata !{i32 5, i32 19, metadata !6, null} | |
!6 = metadata !{i32 589835, metadata !1, i32 5, i32 10, metadata !2, i32 0} | |
!7 = metadata !{i32 5, i32 10, metadata !6, null} | |
!8 = metadata !{i32 5, i32 12, metadata !6, null} | |
!9 = metadata !{i32 5, i32 46, metadata !6, null} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment