Created
November 6, 2012 03:16
-
-
Save catamorphism/4022340 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
| pub pure fn with_capacity<T>(capacity: uint) -> ~int { | |
| let mut vec = ~5; | |
| return move vec; | |
| } | |
| fn main() { | |
| with_capacity::<uint>(500); | |
| } | |
| // --------------------------------- | |
| ; ModuleID = 'zzz.rc' | |
| target 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" | |
| target triple = "x86_64-apple-darwin" | |
| %shapes = type opaque | |
| %tydesc = type { i64, i64, void (i1*, i1*, %tydesc**, i8*)*, void (i1*, i1*, %tydesc**, i8*)*, void (i1*, i1*, %tydesc**, i8*)*, void (i1*, i1*, %tydesc**, i8*)*, i8*, i8* } | |
| %"~enum intrinsic::TyDesc[#0]" = type { [16 x i8] } | |
| @_rust_crate_map_toplevel = global { i32, i8*, i64, [2 x i64] } { i32 1, i8* bitcast (void (i1*, { i64, %tydesc*, i8*, i8*, i8 } addrspace(1)*)* @_ZN7cleanup10annihilate16_9d8aa08e67953763_05E to i8*), i64 ptrtoint ([1 x { i64, i64 }]* @_rust_mod_map to i64), [2 x i64] [i64 ptrtoint (i64* @_rust_crate_map_core_0.5_c3ca5d77d81b46c1 to i64), i64 0] } | |
| @shapes = external global %shapes | |
| @_ZN9intrinsic6TyDesc6TyDesc7descrim16_65c4bb9c8a8df583_00E = constant i64 0 | |
| @tydesc_1737 = internal constant %tydesc { i64 ptrtoint (i64* getelementptr (i64* null, i32 1) to i64), i64 ptrtoint (i64* getelementptr ({ i1, i64 }* null, i64 0, i32 1) to i64), void (i1*, i1*, %tydesc**, i8*)* bitcast (void (i1*, i1*, %tydesc**, i32*)* @glue_take_1741 to void (i1*, i1*, %tydesc**, i8*)*), void (i1*, i1*, %tydesc**, i8*)* bitcast (void (i1*, i1*, %tydesc**, i32*)* @glue_drop_1743 to void (i1*, i1*, %tydesc**, i8*)*), void (i1*, i1*, %tydesc**, i8*)* bitcast (void (i1*, i1*, %tydesc**, i32*)* @glue_free_1745 to void (i1*, i1*, %tydesc**, i8*)*), void (i1*, i1*, %tydesc**, i8*)* bitcast (void (i1*, i1*, %tydesc**, i64*)* @glue_visit_1747 to void (i1*, i1*, %tydesc**, i8*)*), i8* null, i8* null } | |
| @tydesc_1739 = internal constant %tydesc { i64 ptrtoint (i32* getelementptr (i32* null, i32 1) to i64), i64 ptrtoint (i32* getelementptr ({ i1, i32 }* null, i64 0, i32 1) to i64), void (i1*, i1*, %tydesc**, i8*)* bitcast (void (i1*, i1*, %tydesc**, i32*)* @glue_take_1741 to void (i1*, i1*, %tydesc**, i8*)*), void (i1*, i1*, %tydesc**, i8*)* bitcast (void (i1*, i1*, %tydesc**, i32*)* @glue_drop_1743 to void (i1*, i1*, %tydesc**, i8*)*), void (i1*, i1*, %tydesc**, i8*)* bitcast (void (i1*, i1*, %tydesc**, i32*)* @glue_free_1745 to void (i1*, i1*, %tydesc**, i8*)*), void (i1*, i1*, %tydesc**, i8*)* null, i8* null, i8* null } | |
| @tydesc_1749 = internal constant %tydesc { i64 ptrtoint (i1 addrspace(1)** getelementptr (i1 addrspace(1)** null, i32 1) to i64), i64 ptrtoint (i1 addrspace(1)** getelementptr ({ i1, i1 addrspace(1)* }* null, i64 0, i32 1) to i64), void (i1*, i1*, %tydesc**, i8*)* null, void (i1*, i1*, %tydesc**, i8*)* bitcast (void (i1*, i1*, %tydesc**, { i64, %tydesc*, i8*, i8*, i32 } addrspace(1)**)* @glue_drop_1755 to void (i1*, i1*, %tydesc**, i8*)*), void (i1*, i1*, %tydesc**, i8*)* bitcast (void (i1*, i1*, %tydesc**, { i64, %tydesc*, i8*, i8*, i32 } addrspace(1)**)* @glue_free_1753 to void (i1*, i1*, %tydesc**, i8*)*), void (i1*, i1*, %tydesc**, i8*)* null, i8* null, i8* null } | |
| @tydesc_1751 = internal constant %tydesc { i64 ptrtoint (i1 addrspace(1)** getelementptr (i1 addrspace(1)** null, i32 1) to i64), i64 ptrtoint (i1 addrspace(1)** getelementptr ({ i1, i1 addrspace(1)* }* null, i64 0, i32 1) to i64), void (i1*, i1*, %tydesc**, i8*)* null, void (i1*, i1*, %tydesc**, i8*)* bitcast (void (i1*, i1*, %tydesc**, { i64, %tydesc*, i8*, i8*, i32 } addrspace(1)**)* @glue_drop_1755 to void (i1*, i1*, %tydesc**, i8*)*), void (i1*, i1*, %tydesc**, i8*)* bitcast (void (i1*, i1*, %tydesc**, { i64, %tydesc*, i8*, i8*, i32 } addrspace(1)**)* @glue_free_1753 to void (i1*, i1*, %tydesc**, i8*)*), void (i1*, i1*, %tydesc**, i8*)* null, i8* null, i8* null } | |
| @_rust_crate_map_core_0.5_c3ca5d77d81b46c1 = external global i64 | |
| @_rust_mod_map = internal global [1 x { i64, i64 }] zeroinitializer | |
| @rust_abi_version = constant i64 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() noreturn nounwind | |
| declare i8* @llvm.frameaddress(i32) nounwind readnone | |
| declare void @upcall_trace(i8*, i8*, i64) | |
| declare i8* @upcall_malloc(%tydesc*, i64) nounwind | |
| declare void @upcall_free(i8*) nounwind | |
| declare i8* @upcall_exchange_malloc(%tydesc*, i64) nounwind | |
| declare void @upcall_exchange_free(i8*) nounwind | |
| declare void @upcall_validate_box(i8*) nounwind | |
| declare void @upcall_log_type(%tydesc*, i8*, i32) | |
| declare i64 @upcall_call_shim_on_c_stack(i8*, i8*) | |
| declare i64 @upcall_call_shim_on_rust_stack(i8*, i8*) | |
| declare i32 @upcall_rust_personality() nounwind | |
| declare void @upcall_reset_stack_limit() nounwind | |
| define internal void @_ZN9intrinsic6TyDesc6TyDesc6TyDesc16_3cdf4616d082b3e3_00E(%"~enum intrinsic::TyDesc[#0]"*, { i64, %tydesc*, i8*, i8*, i8 } addrspace(1)*, { { i64, i64 } }*) inlinehint { | |
| static_allocas: | |
| br label %load_env | |
| load_env: ; preds = %static_allocas | |
| br label %3 | |
| return: ; preds = %3 | |
| ret void | |
| ; <label>:3 ; preds = %load_env | |
| %4 = bitcast %"~enum intrinsic::TyDesc[#0]"* %0 to { { { i64, i64 } } }* | |
| %5 = getelementptr inbounds { { { i64, i64 } } }* %4, i32 0, i32 0 | |
| %6 = bitcast { { i64, i64 } }* %2 to i8* | |
| %7 = bitcast { { i64, i64 } }* %5 to i8* | |
| call void @llvm.memmove.p0i8.p0i8.i64(i8* %7, i8* %6, i64 mul nuw (i64 ptrtoint (i64* getelementptr (i64* null, i32 1) to i64), i64 2), i32 1, i1 false) | |
| br label %return | |
| } | |
| define internal void @_ZN4main17_681e78d55eb073833_00E(i1*, { i64, %tydesc*, i8*, i8*, i8 } addrspace(1)*) uwtable { | |
| static_allocas: | |
| %2 = alloca { i64, %tydesc*, i8*, i8*, i64 } addrspace(1)* | |
| %3 = alloca i64 | |
| br label %load_env | |
| load_env: ; preds = %static_allocas | |
| br label %4 | |
| return: ; preds = %7 | |
| ret void | |
| ; <label>:4 ; preds = %load_env | |
| br label %5 | |
| ; <label>:5 ; preds = %4 | |
| store i64 500, i64* %3 | |
| %6 = load i64* %3 | |
| call void @_ZN18with_capacity_173316_58c42215619ab3a3_00E({ i64, %tydesc*, i8*, i8*, i64 } addrspace(1)** %2, { i64, %tydesc*, i8*, i8*, i8 } addrspace(1)* undef, i64 %6) | |
| call void bitcast (void (i1*, i1*, %tydesc**, { i64, %tydesc*, i8*, i8*, i32 } addrspace(1)**)* @glue_drop_1755 to void (i1*, i1*, %tydesc**, { i64, %tydesc*, i8*, i8*, i64 } addrspace(1)**)*)(i1* null, i1* null, %tydesc** null, { i64, %tydesc*, i8*, i8*, i64 } addrspace(1)** %2) | |
| br label %7 | |
| ; <label>:7 ; preds = %5 | |
| br label %return | |
| } | |
| define void @_rust_main(i1*, { i64, %tydesc*, i8*, i8*, i8 } addrspace(1)*, { i64, %tydesc*, i8*, i8*, { i64, i64, [0 x { i64, %tydesc*, i8*, i8*, { i64, i64, [0 x i8] } } addrspace(1)*] } } addrspace(1)*) { | |
| static_allocas: | |
| br label %load_env | |
| load_env: ; preds = %static_allocas | |
| br label %3 | |
| return: ; preds = %3 | |
| ret void | |
| ; <label>:3 ; preds = %load_env | |
| call void @_ZN4main17_681e78d55eb073833_00E(i1* %0, { i64, %tydesc*, i8*, i8*, i8 } addrspace(1)* %1) | |
| br label %return | |
| } | |
| define i64 @main(i64, i64) { | |
| top: | |
| %2 = call i64 @rust_start(void (i1*, { i64, %tydesc*, i8*, i8*, i8 } addrspace(1)*, { i64, %tydesc*, i8*, i8*, { i64, i64, [0 x { i64, %tydesc*, i8*, i8*, { i64, i64, [0 x i8] } } addrspace(1)*] } } addrspace(1)*)* @_rust_main, i64 %0, i64 %1, { i32, i8*, i64, [2 x i64] }* @_rust_crate_map_toplevel) | |
| ret i64 %2 | |
| } | |
| declare i64 @rust_start(void (i1*, { i64, %tydesc*, i8*, i8*, i8 } addrspace(1)*, { i64, %tydesc*, i8*, i8*, { i64, i64, [0 x { i64, %tydesc*, i8*, i8*, { i64, i64, [0 x i8] } } addrspace(1)*] } } addrspace(1)*)*, i64, i64, { i32, i8*, i64, [2 x i64] }*) | |
| define internal void @_ZN18with_capacity_173316_58c42215619ab3a3_00E({ i64, %tydesc*, i8*, i8*, i64 } addrspace(1)**, { i64, %tydesc*, i8*, i8*, i8 } addrspace(1)*, i64) uwtable { | |
| static_allocas: | |
| %3 = alloca i64 | |
| %4 = alloca { i64, %tydesc*, i8*, i8*, i64 } addrspace(1)* | |
| %5 = alloca i8* | |
| %6 = bitcast i8** %5 to i8* | |
| call void @llvm.memset.p0i8.i64(i8* %6, i8 0, i64 ptrtoint (i1** getelementptr (i1** null, i32 1) to i64), i32 1, i1 false) | |
| %7 = alloca { i64, %tydesc*, i8*, i8*, i64 } addrspace(1)* | |
| %8 = alloca { i64, %tydesc*, i8*, i8*, i64 } addrspace(1)** | |
| %9 = alloca { i64, %tydesc*, i8*, i8*, i64 } addrspace(1)* | |
| %10 = alloca { i64, %tydesc*, i8*, i8*, i64 } addrspace(1)* | |
| %11 = bitcast { i64, %tydesc*, i8*, i8*, i64 } addrspace(1)** %10 to i8* | |
| call void @llvm.memset.p0i8.i64(i8* %11, i8 0, i64 ptrtoint (i1 addrspace(1)** getelementptr (i1 addrspace(1)** null, i32 1) to i64), i32 1, i1 false) | |
| br label %load_env | |
| load_env: ; preds = %static_allocas | |
| br label %12 | |
| return: ; preds = %24 | |
| ret void | |
| ; <label>:12 ; preds = %load_env | |
| store i64 %2, i64* %3 | |
| br label %13 | |
| ; <label>:13 ; preds = %12 | |
| call void @_ZN2rt18rt_exchange_malloc17_9c8a1439dd31f1b93_05E(i8** %5, { i64, %tydesc*, i8*, i8*, i8 } addrspace(1)* undef, i8* bitcast (%tydesc* @tydesc_1737 to i8*), i64 ptrtoint (i64* getelementptr (i64* null, i32 1) to i64)) | |
| br label %14 | |
| ; <label>:14 ; preds = %13 | |
| %15 = load i8** %5 | |
| %16 = bitcast i8* %15 to { i64, %tydesc*, i8*, i8*, i64 } addrspace(1)* | |
| %17 = bitcast { i64, %tydesc*, i8*, i8*, i64 } addrspace(1)* %16 to { i64, %tydesc*, i8*, i8*, i64 }* | |
| %18 = getelementptr inbounds { i64, %tydesc*, i8*, i8*, i64 }* %17, i32 0, i32 4 | |
| store i64 5, i64* %18 | |
| store { i64, %tydesc*, i8*, i8*, i64 } addrspace(1)* %16, { i64, %tydesc*, i8*, i8*, i64 } addrspace(1)** %7 | |
| store { i64, %tydesc*, i8*, i8*, i64 } addrspace(1)** %7, { i64, %tydesc*, i8*, i8*, i64 } addrspace(1)*** %8 | |
| %19 = load { i64, %tydesc*, i8*, i8*, i64 } addrspace(1)*** %8 | |
| %20 = load { i64, %tydesc*, i8*, i8*, i64 } addrspace(1)** %19 | |
| store { i64, %tydesc*, i8*, i8*, i64 } addrspace(1)* %20, { i64, %tydesc*, i8*, i8*, i64 } addrspace(1)** %9 | |
| %21 = bitcast { i64, %tydesc*, i8*, i8*, i64 } addrspace(1)** %19 to i8* | |
| call void @llvm.memset.p0i8.i64(i8* %21, i8 0, i64 ptrtoint (i1 addrspace(1)** getelementptr (i1 addrspace(1)** null, i32 1) to i64), i32 1, i1 false) | |
| %22 = load { i64, %tydesc*, i8*, i8*, i64 } addrspace(1)** %9 | |
| store { i64, %tydesc*, i8*, i8*, i64 } addrspace(1)* %22, { i64, %tydesc*, i8*, i8*, i64 } addrspace(1)** %0 | |
| %23 = bitcast { i64, %tydesc*, i8*, i8*, i64 } addrspace(1)** %9 to i8* | |
| call void @llvm.memset.p0i8.i64(i8* %23, i8 0, i64 ptrtoint (i1 addrspace(1)** getelementptr (i1 addrspace(1)** null, i32 1) to i64), i32 1, i1 false) | |
| br label %24 | |
| ; <label>:24 ; preds = %14 | |
| store { i64, %tydesc*, i8*, i8*, i64 } addrspace(1)* %16, { i64, %tydesc*, i8*, i8*, i64 } addrspace(1)** %10 | |
| call void bitcast (void (i1*, i1*, %tydesc**, { i64, %tydesc*, i8*, i8*, i32 } addrspace(1)**)* @glue_free_1753 to void (i1*, i1*, %tydesc**, { i64, %tydesc*, i8*, i8*, i64 } addrspace(1)**)*)(i1* null, i1* null, %tydesc** null, { i64, %tydesc*, i8*, i8*, i64 } addrspace(1)** %10) | |
| br label %return | |
| } | |
| define internal void @glue_take_1741(i1*, i1*, %tydesc**, i32*) alwaysinline { | |
| static_allocas: | |
| br label %load_env | |
| load_env: ; preds = %static_allocas | |
| br label %4 | |
| return: ; preds = %4 | |
| ret void | |
| ; <label>:4 ; preds = %load_env | |
| br label %return | |
| } | |
| define internal void @glue_drop_1743(i1*, i1*, %tydesc**, i32*) alwaysinline { | |
| static_allocas: | |
| br label %load_env | |
| load_env: ; preds = %static_allocas | |
| br label %4 | |
| return: ; preds = %4 | |
| ret void | |
| ; <label>:4 ; preds = %load_env | |
| br label %return | |
| } | |
| define internal void @glue_free_1745(i1*, i1*, %tydesc**, i32*) alwaysinline { | |
| static_allocas: | |
| br label %load_env | |
| load_env: ; preds = %static_allocas | |
| br label %4 | |
| return: ; preds = %4 | |
| ret void | |
| ; <label>:4 ; preds = %load_env | |
| br label %return | |
| } | |
| define internal void @glue_visit_1747(i1*, i1*, %tydesc**, i64*) alwaysinline { | |
| static_allocas: | |
| %4 = alloca i1 | |
| br label %load_env | |
| load_env: ; preds = %static_allocas | |
| br label %5 | |
| return: ; preds = %7 | |
| ret void | |
| ; <label>:5 ; preds = %load_env | |
| %6 = bitcast i64* %3 to { %tydesc*, { i64, %tydesc*, i8*, i8*, i8 } addrspace(1)* }* | |
| br label %8 | |
| ; <label>:7 ; preds = %21, %19 | |
| br label %return | |
| ; <label>:8 ; preds = %5 | |
| %9 = getelementptr inbounds { %tydesc*, { i64, %tydesc*, i8*, i8*, i8 } addrspace(1)* }* %6, i32 0, i32 0 | |
| %10 = bitcast %tydesc** %9 to [1 x i8*]** | |
| %11 = load [1 x i8*]** %10 | |
| %12 = getelementptr inbounds { %tydesc*, { i64, %tydesc*, i8*, i8*, i8 } addrspace(1)* }* %6, i32 0, i32 1 | |
| %13 = load { i64, %tydesc*, i8*, i8*, i8 } addrspace(1)** %12 | |
| %14 = getelementptr inbounds { i64, %tydesc*, i8*, i8*, i8 } addrspace(1)* %13, i32 0, i32 4 | |
| %15 = getelementptr inbounds [1 x i8*]* %11, i32 0, i32 3 | |
| %16 = load i8** %15 | |
| %17 = bitcast i8* %16 to void (i1*, { i64, %tydesc*, i8*, i8*, i8 } addrspace(1)*)* | |
| %18 = bitcast i8 addrspace(1)* %14 to { i64, %tydesc*, i8*, i8*, i8 } addrspace(1)* | |
| call void %17(i1* %4, { i64, %tydesc*, i8*, i8*, i8 } addrspace(1)* %18) | |
| br label %19 | |
| ; <label>:19 ; preds = %8 | |
| %20 = load i1* %4 | |
| br i1 %20, label %21, label %7 | |
| ; <label>:21 ; preds = %19 | |
| br label %7 | |
| } | |
| declare void @_ZN2rt18rt_exchange_malloc17_9c8a1439dd31f1b93_05E(i8**, { i64, %tydesc*, i8*, i8*, i8 } addrspace(1)*, i8*, i64) | |
| define internal void @glue_free_1753(i1*, i1*, %tydesc**, { i64, %tydesc*, i8*, i8*, i32 } addrspace(1)**) alwaysinline { | |
| static_allocas: | |
| br label %load_env | |
| load_env: ; preds = %static_allocas | |
| br label %4 | |
| return: ; preds = %7 | |
| ret void | |
| ; <label>:4 ; preds = %load_env | |
| %5 = load { i64, %tydesc*, i8*, i8*, i32 } addrspace(1)** %3 | |
| %6 = icmp ne { i64, %tydesc*, i8*, i8*, i32 } addrspace(1)* %5, null | |
| br i1 %6, label %8, label %7 | |
| ; <label>:7 ; preds = %14, %4 | |
| br label %return | |
| ; <label>:8 ; preds = %4 | |
| %9 = bitcast { i64, %tydesc*, i8*, i8*, i32 } addrspace(1)* %5 to { i64, %tydesc*, i8*, i8* }* | |
| %10 = getelementptr inbounds { i64, %tydesc*, i8*, i8* }* %9, i32 1 | |
| %11 = bitcast { i64, %tydesc*, i8*, i8* }* %10 to i32* | |
| %12 = bitcast { i64, %tydesc*, i8*, i8*, i32 } addrspace(1)* %5 to i8* | |
| br label %13 | |
| ; <label>:13 ; preds = %8 | |
| call void @_ZN2rt16rt_exchange_free15_566dfde8e786233_05E(i1* undef, { i64, %tydesc*, i8*, i8*, i8 } addrspace(1)* undef, i8* %12) | |
| br label %14 | |
| ; <label>:14 ; preds = %13 | |
| br label %7 | |
| } | |
| declare void @_ZN2rt16rt_exchange_free15_566dfde8e786233_05E(i1*, { i64, %tydesc*, i8*, i8*, i8 } addrspace(1)*, i8*) | |
| define internal void @glue_drop_1755(i1*, i1*, %tydesc**, { i64, %tydesc*, i8*, i8*, i32 } addrspace(1)**) alwaysinline { | |
| static_allocas: | |
| br label %load_env | |
| load_env: ; preds = %static_allocas | |
| br label %4 | |
| return: ; preds = %4 | |
| ret void | |
| ; <label>:4 ; preds = %load_env | |
| call void @glue_free_1753(i1* null, i1* null, %tydesc** null, { i64, %tydesc*, i8*, i8*, i32 } addrspace(1)** %3) | |
| br label %return | |
| } | |
| declare void @_ZN7cleanup10annihilate16_9d8aa08e67953763_05E(i1*, { i64, %tydesc*, i8*, i8*, i8 } addrspace(1)*) | |
| warning: no debug symbols in executable (-arch x86_64) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment