-
-
Save eddyb/9078327e85b628f72a5a 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
//> cat bench.rs; rustc --opt-level=3 --test bench.rs; ./bench --bench | |
extern mod extra; | |
use std::vec; | |
use std::ptr; | |
#[bench] | |
fn bench_from_elem(b: &mut extra::test::BenchHarness) { | |
b.iter(|| { | |
let _v: ~[u8] = vec::from_elem(1024, 0u8); | |
}); | |
} | |
#[bench] | |
fn bench_set_memory(b: &mut extra::test::BenchHarness) { | |
b.iter(|| { | |
let mut v: ~[u8] = vec::with_capacity(1024); | |
unsafe { | |
let vp = vec::raw::to_mut_ptr(v); | |
ptr::set_memory(vp, 0, 1024); | |
vec::raw::set_len(&mut v, 1024); | |
} | |
}); | |
} | |
#[bench] | |
fn bench_vec_repeat(b: &mut extra::test::BenchHarness) { | |
b.iter(|| { | |
let _v: ~[u8] = ~[0u8, ..1024]; | |
}); | |
} | |
#[bench] | |
fn bench_loop_set(b: &mut extra::test::BenchHarness) { | |
b.iter(|| { | |
let mut v: ~[u8] = vec::with_capacity(1024); | |
unsafe { | |
vec::raw::set_len(&mut v, 1024); | |
} | |
for i in range(0, 1024) { | |
v[i] = 0; | |
} | |
}); | |
} | |
#[bench] | |
fn bench_mut_iter(b: &mut extra::test::BenchHarness) { | |
b.iter(|| { | |
let mut v: ~[u8] = vec::with_capacity(1024); | |
unsafe { | |
vec::raw::set_len(&mut v, 1024); | |
} | |
for x in v.mut_iter() { | |
*x = 0; | |
} | |
}); | |
} | |
/* Bench results: | |
running 5 tests | |
test bench_from_elem ... bench: 3712 ns/iter (+/- 739) | |
test bench_loop_set ... bench: 1529 ns/iter (+/- 22) | |
test bench_mut_iter ... bench: 212 ns/iter (+/- 42) | |
test bench_set_memory ... bench: 206 ns/iter (+/- 55) | |
test bench_vec_repeat ... bench: 213 ns/iter (+/- 22) | |
*/ |
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
; ModuleID = 'stdout.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-S128" | |
target triple = "x86_64-unknown-linux-gnu" | |
%tydesc = type { i64, i64, void ({}*, i8*)*, void ({}*, i8*)*, void ({}*, i8*)*, void ({}*, i8*)*, i64, { i8*, i64 } } | |
%"enum.std::libc::types::common::c95::c_void[#1]" = type {} | |
%"struct.std::unstable::raw::Vec<()>[#1]" = type { i64, i64, {} } | |
@_rust_crate_map_toplevel = global { i32, { i64, i64 }, { i64, i64 }, i64* } { i32 2, { i64, i64 } { i64 ptrtoint ([0 x { { i8*, i64 }, i64 }]* @_rust_mod_map to i64), i64 0 }, { i64, i64 } { i64 ptrtoint ([2 x i64]* @_crate_map_child_vectors to i64), i64 2 }, i64* @_ZN4uvio8new_loop19hf88ce044d8c872ecae8v0.9.preE } | |
@str1342 = internal constant [7 x i8] c"<anon>\00" | |
@_ZN19_rust_crate_map_std17_6425b930ca146ae98v0.9.preE = external global i64 | |
@_ZN22_rust_crate_map_rustuv15a13edc95d75df178v0.9.preE = external global i64 | |
@_ZN4uvio8new_loop19hf88ce044d8c872ecae8v0.9.preE = external global i64 | |
@_crate_map_child_vectors = internal global [2 x i64] [i64 ptrtoint (i64* @_ZN19_rust_crate_map_std17_6425b930ca146ae98v0.9.preE to i64), i64 ptrtoint (i64* @_ZN22_rust_crate_map_rustuv15a13edc95d75df178v0.9.preE to i64)] | |
@_rust_mod_map = internal global [0 x { { i8*, i64 }, i64 }] zeroinitializer | |
; Function Attrs: nounwind | |
declare i32 @upcall_rust_personality() unnamed_addr #0 | |
; Function Attrs: uwtable | |
define internal void @_ZN4main18h59384e9f25bdf95ag4v0.0E({ i64, %tydesc*, i8*, i8*, i8 }* nocapture readnone) unnamed_addr #1 { | |
"normal return": | |
%1 = tail call %"enum.std::libc::types::common::c95::c_void[#1]"* @_ZN2rt11global_heap10malloc_raw18hc8dd83269b07a90aj8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, i64 1040) | |
%2 = bitcast %"enum.std::libc::types::common::c95::c_void[#1]"* %1 to %"struct.std::unstable::raw::Vec<()>[#1]"* | |
%3 = getelementptr inbounds %"struct.std::unstable::raw::Vec<()>[#1]"* %2, i64 0, i32 1 | |
store i64 1024, i64* %3, align 8 | |
%4 = bitcast %"enum.std::libc::types::common::c95::c_void[#1]"* %1 to { i64, i64, [0 x i8] }* | |
%5 = bitcast %"enum.std::libc::types::common::c95::c_void[#1]"* %1 to i64* | |
store i64 1024, i64* %5, align 8 | |
br label %match_else | |
unwind: ; preds = %cond | |
%6 = landingpad { i8*, i32 } personality i32 ()* @upcall_rust_personality | |
cleanup | |
%7 = icmp eq %"enum.std::libc::types::common::c95::c_void[#1]"* %1, null | |
br i1 %7, label %"_ZN8_$UP$u329glue_drop17hfae7fdc29923e2aQE.exit12", label %cond.i.i11 | |
cond.i.i11: ; preds = %unwind | |
%8 = bitcast %"enum.std::libc::types::common::c95::c_void[#1]"* %1 to i8* | |
tail call void @_ZN2rt11global_heap13exchange_free19hc05c15244ca85199ak8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, i8* %8) | |
br label %"_ZN8_$UP$u329glue_drop17hfae7fdc29923e2aQE.exit12" | |
"_ZN8_$UP$u329glue_drop17hfae7fdc29923e2aQE.exit12": ; preds = %unwind, %cond.i.i11 | |
resume { i8*, i32 } %6 | |
match_else: ; preds = %next5.match_else_crit_edge, %"normal return" | |
%9 = phi i64 [ 1024, %"normal return" ], [ %.pre, %next5.match_else_crit_edge ] | |
%.sroa.013.0.load2225 = phi i64 [ 0, %"normal return" ], [ %12, %next5.match_else_crit_edge ] | |
%10 = icmp ult i64 %.sroa.013.0.load2225, %9 | |
br i1 %10, label %next5, label %cond | |
"_ZN8_$UP$u329glue_drop17hfae7fdc29923e2aQE.exit": ; preds = %next5 | |
%11 = bitcast %"enum.std::libc::types::common::c95::c_void[#1]"* %1 to i8* | |
tail call void @_ZN2rt11global_heap13exchange_free19hc05c15244ca85199ak8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, i8* %11) | |
ret void | |
next5: ; preds = %match_else | |
%12 = add i64 %.sroa.013.0.load2225, 1 | |
%13 = getelementptr inbounds { i64, i64, [0 x i8] }* %4, i64 0, i32 2, i64 %.sroa.013.0.load2225 | |
store i8 0, i8* %13, align 1 | |
%14 = icmp slt i64 %12, 1024 | |
br i1 %14, label %next5.match_else_crit_edge, label %"_ZN8_$UP$u329glue_drop17hfae7fdc29923e2aQE.exit" | |
next5.match_else_crit_edge: ; preds = %next5 | |
%.pre = load i64* %5, align 8 | |
br label %match_else | |
cond: ; preds = %match_else | |
invoke void @_ZN8unstable4lang17fail_bounds_check18hcb910a4a141408bar8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, i8* getelementptr inbounds ([7 x i8]* @str1342, i64 0, i64 0), i64 1, i64 %.sroa.013.0.load2225, i64 %9) | |
to label %"normal return6" unwind label %unwind | |
"normal return6": ; preds = %cond | |
unreachable | |
} | |
define i64 @main(i64, i8**) unnamed_addr { | |
top: | |
%2 = tail call i64 @_ZN8unstable4lang5start16h511ef9eda4ccaad8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* null, i8* bitcast (void ({ i64, %tydesc*, i8*, i8*, i8 }*)* @_ZN4main18h59384e9f25bdf95ag4v0.0E to i8*), i64 %0, i8** %1) | |
ret i64 %2 | |
} | |
declare i64 @_ZN8unstable4lang5start16h511ef9eda4ccaad8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }*, i8*, i64, i8**) unnamed_addr | |
declare %"enum.std::libc::types::common::c95::c_void[#1]"* @_ZN2rt11global_heap10malloc_raw18hc8dd83269b07a90aj8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }*, i64) unnamed_addr | |
declare void @_ZN2rt11global_heap13exchange_free19hc05c15244ca85199ak8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }*, i8*) unnamed_addr | |
; Function Attrs: cold noreturn | |
declare void @_ZN8unstable4lang17fail_bounds_check18hcb910a4a141408bar8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }*, i8*, i64, i64, i64) unnamed_addr #2 | |
attributes #0 = { nounwind } | |
attributes #1 = { uwtable } | |
attributes #2 = { cold noreturn } |
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
; ModuleID = 'stdout.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-S128" | |
target triple = "x86_64-unknown-linux-gnu" | |
%tydesc = type { i64, i64, void ({}*, i8*)*, void ({}*, i8*)*, void ({}*, i8*)*, void ({}*, i8*)*, i64, { i8*, i64 } } | |
%"enum.std::libc::types::common::c95::c_void[#1]" = type {} | |
%"struct.std::unstable::raw::Vec<()>[#1]" = type { i64, i64, {} } | |
@_rust_crate_map_toplevel = global { i32, { i64, i64 }, { i64, i64 }, i64* } { i32 2, { i64, i64 } { i64 ptrtoint ([0 x { { i8*, i64 }, i64 }]* @_rust_mod_map to i64), i64 0 }, { i64, i64 } { i64 ptrtoint ([2 x i64]* @_crate_map_child_vectors to i64), i64 2 }, i64* @_ZN4uvio8new_loop19hf88ce044d8c872ecae8v0.9.preE } | |
@_ZN19_rust_crate_map_std17_6425b930ca146ae98v0.9.preE = external global i64 | |
@_ZN22_rust_crate_map_rustuv15a13edc95d75df178v0.9.preE = external global i64 | |
@_ZN4uvio8new_loop19hf88ce044d8c872ecae8v0.9.preE = external global i64 | |
@_crate_map_child_vectors = internal global [2 x i64] [i64 ptrtoint (i64* @_ZN19_rust_crate_map_std17_6425b930ca146ae98v0.9.preE to i64), i64 ptrtoint (i64* @_ZN22_rust_crate_map_rustuv15a13edc95d75df178v0.9.preE to i64)] | |
@_rust_mod_map = internal global [0 x { { i8*, i64 }, i64 }] zeroinitializer | |
; Function Attrs: nounwind | |
declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) unnamed_addr #0 | |
; Function Attrs: uwtable | |
define internal void @_ZN4main18h59384e9f25bdf95ag4v0.0E({ i64, %tydesc*, i8*, i8*, i8 }* nocapture readnone) unnamed_addr #1 { | |
match_case: | |
%1 = tail call %"enum.std::libc::types::common::c95::c_void[#1]"* @_ZN2rt11global_heap10malloc_raw18hc8dd83269b07a90aj8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, i64 1040) | |
%2 = bitcast %"enum.std::libc::types::common::c95::c_void[#1]"* %1 to i8* | |
%3 = bitcast %"enum.std::libc::types::common::c95::c_void[#1]"* %1 to %"struct.std::unstable::raw::Vec<()>[#1]"* | |
%4 = getelementptr inbounds %"struct.std::unstable::raw::Vec<()>[#1]"* %3, i64 0, i32 1 | |
store i64 1024, i64* %4, align 8 | |
%5 = bitcast %"enum.std::libc::types::common::c95::c_void[#1]"* %1 to i64* | |
store i64 1024, i64* %5, align 8 | |
%uglygep = getelementptr i8* %2, i64 16 | |
call void @llvm.memset.p0i8.i64(i8* %uglygep, i8 0, i64 1024, i32 1, i1 false) | |
%6 = icmp eq %"enum.std::libc::types::common::c95::c_void[#1]"* %1, null | |
br i1 %6, label %"_ZN8_$UP$u329glue_drop17hfae7fdc29923e2aGE.exit", label %cond.i.i | |
cond.i.i: ; preds = %match_case | |
tail call void @_ZN2rt11global_heap13exchange_free19hc05c15244ca85199ak8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, i8* %2) | |
br label %"_ZN8_$UP$u329glue_drop17hfae7fdc29923e2aGE.exit" | |
"_ZN8_$UP$u329glue_drop17hfae7fdc29923e2aGE.exit": ; preds = %match_case, %cond.i.i | |
ret void | |
} | |
define i64 @main(i64, i8**) unnamed_addr { | |
top: | |
%2 = tail call i64 @_ZN8unstable4lang5start16h511ef9eda4ccaad8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* null, i8* bitcast (void ({ i64, %tydesc*, i8*, i8*, i8 }*)* @_ZN4main18h59384e9f25bdf95ag4v0.0E to i8*), i64 %0, i8** %1) | |
ret i64 %2 | |
} | |
declare i64 @_ZN8unstable4lang5start16h511ef9eda4ccaad8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }*, i8*, i64, i8**) unnamed_addr | |
declare %"enum.std::libc::types::common::c95::c_void[#1]"* @_ZN2rt11global_heap10malloc_raw18hc8dd83269b07a90aj8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }*, i64) unnamed_addr | |
declare void @_ZN2rt11global_heap13exchange_free19hc05c15244ca85199ak8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }*, i8*) unnamed_addr | |
attributes #0 = { nounwind } | |
attributes #1 = { uwtable } |
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
; ModuleID = 'stdout.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-S128" | |
target triple = "x86_64-unknown-linux-gnu" | |
%tydesc = type { i64, i64, void ({}*, i8*)*, void ({}*, i8*)*, void ({}*, i8*)*, void ({}*, i8*)*, i64, { i8*, i64 } } | |
%str_slice = type { i8*, i64 } | |
%"struct.std::unstable::intrinsics::TypeId[#1]" = type { i64 } | |
%"enum.std::util::Void[#1]" = type {} | |
%"enum.std::libc::types::common::c95::c_void[#1]" = type {} | |
%"struct.std::unstable::finally::Finallyalizer[#1]" = type { { void ({ i64, %tydesc*, i8*, i8*, i8 }*)*, { i64, %tydesc*, i8*, i8*, i8 }* }, i8 } | |
%"struct.std::fmt::Arguments[#1]" = type { { %"enum.std::fmt::rt::Piece[#1]"*, i64 }, { %"struct.std::fmt::Argument[#1]"*, i64 } } | |
%"enum.std::fmt::rt::Piece[#1]" = type { i8, [7 x i8], [9 x i64] } | |
%"struct.std::fmt::Argument[#1]" = type { void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)*, %"enum.std::util::Void[#1]"* } | |
%"struct.std::fmt::Formatter[#1]" = type { i64, i32, i8, %"enum.std::option::Option<uint>[#1]", %"enum.std::option::Option<uint>[#1]", { %tydesc*, i8* }, %"struct.std::vec::VecIterator<std::fmt::Argument>[#1]", { %"struct.std::fmt::Argument[#1]"*, i64 } } | |
%"enum.std::option::Option<uint>[#1]" = type { i8, [7 x i8], [1 x i64] } | |
%"struct.std::vec::VecIterator<std::fmt::Argument>[#1]" = type { %"struct.std::fmt::Argument[#1]"*, %"struct.std::fmt::Argument[#1]"*, %"enum.std::option::Option<&'static std::fmt::Argument>[#1]" } | |
%"enum.std::option::Option<&'static std::fmt::Argument>[#1]" = type { %"struct.std::fmt::Argument[#1]"* } | |
%"struct.std::unstable::raw::Vec<()>[#1]" = type { i64, i64, {} } | |
%"struct.std::rt::task::Task[#1]" = type { %"struct.std::rt::local_heap::LocalHeap[#1]", %"struct.std::rt::task::GarbageCollector[#1]", %"struct.std::rt::task::LocalStorage[#1]", %"enum.std::option::Option<std::rt::logging::StdErrLogger>[#1]", %"struct.std::rt::task::Unwinder[#1]", %"struct.std::rt::kill::Death[#1]", i8, %"enum.std::option::Option<std::send_str::SendStr>[#1]", %"enum.std::option::Option<std::rt::task::Coroutine>[#1]", %"enum.std::option::Option<~std::rt::sched::Scheduler>[#1]", %"enum.std::rt::task::TaskType[#1]", %"enum.std::option::Option<~[std::rt::borrowck::BorrowRecord]>[#1]", %"enum.std::option::Option<~std::io::Writer:Send>[#1]", %"struct.std::unstable::mutex::Mutex[#1]", i8 } | |
%"struct.std::rt::local_heap::LocalHeap[#1]" = type { %"struct.std::rt::local_heap::MemoryRegion[#1]", i8, %"struct.std::unstable::raw::Box<()>[#1]"*, i8 } | |
%"struct.std::rt::local_heap::MemoryRegion[#1]" = type { { i64, i64, [0 x %"struct.std::rt::local_heap::AllocHeader[#1]"*] }*, i64, i8 } | |
%"struct.std::rt::local_heap::AllocHeader[#1]" = type {} | |
%"struct.std::unstable::raw::Box<()>[#1]" = type { i64, %"struct.std::unstable::intrinsics::TyDesc[#1]"*, %"struct.std::unstable::raw::Box<()>[#1]"*, %"struct.std::unstable::raw::Box<()>[#1]"*, {} } | |
%"struct.std::unstable::intrinsics::TyDesc[#1]" = type { i64, i64, void ({ i64, %tydesc*, i8*, i8*, i8 }*, i8*)*, void ({ i64, %tydesc*, i8*, i8*, i8 }*, i8*)*, void ({ i64, %tydesc*, i8*, i8*, i8 }*, i8*)*, void ({ i64, %tydesc*, i8*, i8*, i8 }*, i8*)*, i64, %str_slice } | |
%"struct.std::rt::task::GarbageCollector[#1]" = type {} | |
%"struct.std::rt::task::LocalStorage[#1]" = type { %"enum.std::option::Option<~[std::option::Option<(*std::libc::types::common::c95::c_void,~std::local_data::LocalData:Send,std::local_data::LoanState)>]>[#1]" } | |
%"enum.std::option::Option<~[std::option::Option<(*std::libc::types::common::c95::c_void,~std::local_data::LocalData:Send,std::local_data::LoanState)>]>[#1]" = type { { i64, i64, [0 x %"enum.std::option::Option<(*std::libc::types::common::c95::c_void,~std::local_data::LocalData:Send,std::local_data::LoanState)>[#1]"] }* } | |
%"enum.std::option::Option<(*std::libc::types::common::c95::c_void,~std::local_data::LocalData:Send,std::local_data::LoanState)>[#1]" = type { i8, [7 x i8], [4 x i64] } | |
%"enum.std::option::Option<std::rt::logging::StdErrLogger>[#1]" = type { i8, [7 x i8], [5 x i64] } | |
%"struct.std::rt::task::Unwinder[#1]" = type { i8, %"enum.std::option::Option<~std::any::Any:Send>[#1]" } | |
%"enum.std::option::Option<~std::any::Any:Send>[#1]" = type { i8, [7 x i8], [2 x i64] } | |
%"struct.std::rt::kill::Death[#1]" = type { %"enum.std::option::Option<proc:Send(std::rt::task::UnwindResult)>[#1]", i64, i8 } | |
%"enum.std::option::Option<proc:Send(std::rt::task::UnwindResult)>[#1]" = type { i8, [7 x i8], [2 x i64] } | |
%"enum.std::option::Option<std::send_str::SendStr>[#1]" = type { i8, [7 x i8], [3 x i64] } | |
%"enum.std::option::Option<std::rt::task::Coroutine>[#1]" = type { i8, [7 x i8], [7 x i64] } | |
%"enum.std::option::Option<~std::rt::sched::Scheduler>[#1]" = type { %"struct.std::rt::sched::Scheduler[#1]"* } | |
%"struct.std::rt::sched::Scheduler[#1]" = type { %"struct.std::rt::deque::Worker<~std::rt::task::Task>[#1]", { i64, i64, [0 x %"struct.std::rt::deque::Stealer<~std::rt::task::Task>[#1]"] }*, %"struct.std::rt::message_queue::MessageQueue<std::rt::sched::SchedMessage>[#1]", %"struct.std::rt::sleeper_list::SleeperList[#1]", i8, i8, %"struct.std::rt::stack::StackPool[#1]", %"enum.std::option::Option<~std::rt::task::Task>[#1]", %"enum.std::option::Option<std::rt::sched::CleanupJob>[#1]", i8, %"enum.std::option::Option<std::rt::sched::SchedHandle>[#1]", %"struct.std::rand::XorShiftRng[#1]", %"enum.std::option::Option<~std::rt::rtio::PausibleIdleCallback:Send>[#1]", i64, i8, { %tydesc*, { i64, %tydesc*, i8*, i8*, i8 }* } } | |
%"struct.std::rt::deque::Worker<~std::rt::task::Task>[#1]" = type { %"struct.std::unstable::sync::UnsafeArc<std::rt::deque::Deque<~std::rt::task::Task>>[#1]" } | |
%"struct.std::unstable::sync::UnsafeArc<std::rt::deque::Deque<~std::rt::task::Task>>[#1]" = type { %"struct.std::unstable::sync::ArcData<std::rt::deque::Deque<~std::rt::task::Task>>[#1]"*, i8 } | |
%"struct.std::unstable::sync::ArcData<std::rt::deque::Deque<~std::rt::task::Task>>[#1]" = type { %"struct.std::unstable::atomics::AtomicUint[#1]", %"struct.std::unstable::atomics::AtomicOption<(std::comm::ChanOne<()>,std::comm::PortOne<bool>)>[#1]", %"enum.std::option::Option<std::rt::deque::Deque<~std::rt::task::Task>>[#1]" } | |
%"struct.std::unstable::atomics::AtomicUint[#1]" = type { i64, %"struct.std::util::NonCopyable[#1]" } | |
%"struct.std::util::NonCopyable[#1]" = type {} | |
%"struct.std::unstable::atomics::AtomicOption<(std::comm::ChanOne<()>,std::comm::PortOne<bool>)>[#1]" = type { %"enum.std::libc::types::common::c95::c_void[#1]"* } | |
%"enum.std::option::Option<std::rt::deque::Deque<~std::rt::task::Task>>[#1]" = type { i8, [7 x i8], [6 x i64] } | |
%"struct.std::rt::deque::Stealer<~std::rt::task::Task>[#1]" = type { %"struct.std::unstable::sync::UnsafeArc<std::rt::deque::Deque<~std::rt::task::Task>>[#1]" } | |
%"struct.std::rt::message_queue::MessageQueue<std::rt::sched::SchedMessage>[#1]" = type { %"struct.std::rt::mpsc_queue::Queue<std::rt::sched::SchedMessage>[#1]" } | |
%"struct.std::rt::mpsc_queue::Queue<std::rt::sched::SchedMessage>[#1]" = type { %"struct.std::unstable::sync::UnsafeArc<std::rt::mpsc_queue::State<std::rt::sched::SchedMessage>>[#1]" } | |
%"struct.std::unstable::sync::UnsafeArc<std::rt::mpsc_queue::State<std::rt::sched::SchedMessage>>[#1]" = type { %"struct.std::unstable::sync::ArcData<std::rt::mpsc_queue::State<std::rt::sched::SchedMessage>>[#1]"*, i8 } | |
%"struct.std::unstable::sync::ArcData<std::rt::mpsc_queue::State<std::rt::sched::SchedMessage>>[#1]" = type { %"struct.std::unstable::atomics::AtomicUint[#1]", %"struct.std::unstable::atomics::AtomicOption<(std::comm::ChanOne<()>,std::comm::PortOne<bool>)>[#1]", %"enum.std::option::Option<std::rt::mpsc_queue::State<std::rt::sched::SchedMessage>>[#1]" } | |
%"enum.std::option::Option<std::rt::mpsc_queue::State<std::rt::sched::SchedMessage>>[#1]" = type { i8, [7 x i8], [38 x i64] } | |
%"struct.std::rt::sleeper_list::SleeperList[#1]" = type { %"struct.std::rt::mpmc_bounded_queue::Queue<std::rt::sched::SchedHandle>[#1]" } | |
%"struct.std::rt::mpmc_bounded_queue::Queue<std::rt::sched::SchedHandle>[#1]" = type { %"struct.std::unstable::sync::UnsafeArc<std::rt::mpmc_bounded_queue::State<std::rt::sched::SchedHandle>>[#1]" } | |
%"struct.std::unstable::sync::UnsafeArc<std::rt::mpmc_bounded_queue::State<std::rt::sched::SchedHandle>>[#1]" = type { %"struct.std::unstable::sync::ArcData<std::rt::mpmc_bounded_queue::State<std::rt::sched::SchedHandle>>[#1]"*, i8 } | |
%"struct.std::unstable::sync::ArcData<std::rt::mpmc_bounded_queue::State<std::rt::sched::SchedHandle>>[#1]" = type { %"struct.std::unstable::atomics::AtomicUint[#1]", %"struct.std::unstable::atomics::AtomicOption<(std::comm::ChanOne<()>,std::comm::PortOne<bool>)>[#1]", %"enum.std::option::Option<std::rt::mpmc_bounded_queue::State<std::rt::sched::SchedHandle>>[#1]" } | |
%"enum.std::option::Option<std::rt::mpmc_bounded_queue::State<std::rt::sched::SchedHandle>>[#1]" = type { i8, [7 x i8], [36 x i64] } | |
%"struct.std::rt::stack::StackPool[#1]" = type { {} } | |
%"enum.std::option::Option<~std::rt::task::Task>[#1]" = type { %"struct.std::rt::task::Task[#1]"* } | |
%"enum.std::option::Option<std::rt::sched::CleanupJob>[#1]" = type { i8, [7 x i8], [3 x i64] } | |
%"enum.std::option::Option<std::rt::sched::SchedHandle>[#1]" = type { i8, [7 x i8], [5 x i64] } | |
%"struct.std::rand::XorShiftRng[#1]" = type { i32, i32, i32, i32 } | |
%"enum.std::option::Option<~std::rt::rtio::PausibleIdleCallback:Send>[#1]" = type { i8, [7 x i8], [2 x i64] } | |
%"enum.std::rt::task::TaskType[#1]" = type { i8, [7 x i8], [7 x i64] } | |
%"enum.std::option::Option<~[std::rt::borrowck::BorrowRecord]>[#1]" = type { { i64, i64, [0 x %"struct.std::rt::borrowck::BorrowRecord[#1]"] }* } | |
%"struct.std::rt::borrowck::BorrowRecord[#1]" = type { %"struct.std::unstable::raw::Box<()>[#1]"*, i8*, i64 } | |
%"enum.std::option::Option<~std::io::Writer:Send>[#1]" = type { i8, [7 x i8], [2 x i64] } | |
%"struct.std::unstable::mutex::Mutex[#1]" = type { %"struct.std::unstable::atomics::AtomicUint[#1]", %"struct.std::unstable::atomics::AtomicUint[#1]" } | |
@_rust_crate_map_toplevel = global { i32, { i64, i64 }, { i64, i64 }, i64* } { i32 2, { i64, i64 } { i64 ptrtoint ([0 x { { i8*, i64 }, i64 }]* @_rust_mod_map to i64), i64 0 }, { i64, i64 } { i64 ptrtoint ([2 x i64]* @_crate_map_child_vectors to i64), i64 2 }, i64* @_ZN4uvio8new_loop19hf88ce044d8c872ecae8v0.9.preE } | |
@"_ZN26_$UP$$BP$$x27static$x20str6tydesc19h4fa2efc66d6bb149a7E" = internal constant %tydesc { i64 8, i64 ptrtoint (i1** getelementptr ({ i1, i1* }* null, i64 0, i32 1) to i64), void ({}*, i8*)* bitcast (void ({}*, i32*)* @_ZN3u329glue_take19h3b3b46959e8fcac5acE to void ({}*, i8*)*), void ({}*, i8*)* bitcast (void ({}*, i32**)* @"_ZN8_$UP$u329glue_drop17hfae7fdc29923e2agE" to void ({}*, i8*)*), void ({}*, i8*)* bitcast (void ({}*, i32**)* @"_ZN8_$UP$u329glue_free17hfae7fdc29923e2ahE" to void ({}*, i8*)*), void ({}*, i8*)* bitcast (void ({}*, %str_slice**)* @"_ZN26_$UP$$BP$$x27static$x20str10glue_visit19h4fa2efc66d6bb149akE" to void ({}*, i8*)*), i64 0, { i8*, i64 } { i8* getelementptr inbounds ([14 x i8]* @str1487, i32 0, i32 0), i64 13 } } | |
@str1487 = internal constant [14 x i8] c"~&'static str\00" | |
@"_ZN22_$BP$$x27static$x20str6tydesc19h8dffbda03facde61afE" = internal constant %tydesc { i64 16, i64 ptrtoint (%str_slice* getelementptr ({ i1, %str_slice }* null, i64 0, i32 1) to i64), void ({}*, i8*)* bitcast (void ({}*, i32*)* @_ZN3u329glue_take19h3b3b46959e8fcac5acE to void ({}*, i8*)*), void ({}*, i8*)* bitcast (void ({}*, i32*)* @_ZN3u329glue_drop19h3b3b46959e8fcac5aiE to void ({}*, i8*)*), void ({}*, i8*)* bitcast (void ({}*, i32*)* @_ZN3u329glue_free19h3b3b46959e8fcac5ajE to void ({}*, i8*)*), void ({}*, i8*)* bitcast (void ({}*, %str_slice*)* @"_ZN22_$BP$$x27static$x20str10glue_visit19h8dffbda03facde61akE" to void ({}*, i8*)*), i64 0, { i8*, i64 } { i8* getelementptr inbounds ([13 x i8]* @str1557, i32 0, i32 0), i64 12 } } | |
@str1557 = internal constant [13 x i8] c"&'static str\00" | |
@vtable1561 = internal constant { %tydesc*, %"struct.std::unstable::intrinsics::TypeId[#1]" ({ i64, %tydesc*, i8*, i8*, i8 }*)*, %"enum.std::util::Void[#1]"* ({ i64, %tydesc*, i8*, i8*, i8 }*)*, %"enum.std::util::Void[#1]"* ({ i64, %tydesc*, i8*, i8*, i8 }*)* } { %tydesc* @"_ZN26_$UP$$BP$$x27static$x20str6tydesc19h4fa2efc66d6bb149a7E", %"struct.std::unstable::intrinsics::TypeId[#1]" ({ i64, %tydesc*, i8*, i8*, i8 }*)* @"_ZN3any5Any$T11get_type_id19h3228ab16337da05jaZ4v0.0E", %"enum.std::util::Void[#1]"* ({ i64, %tydesc*, i8*, i8*, i8 }*)* @"_ZN3any5Any$T11as_void_ptr21h594198516f8322205ja54v0.0E", %"enum.std::util::Void[#1]"* ({ i64, %tydesc*, i8*, i8*, i8 }*)* @"_ZN3any5Any$T15as_mut_void_ptr20hfb75be5da2ed8c65ja64v0.0E" } | |
@str1592 = internal constant [5 x i8] c"~Any\00" | |
@str1627 = internal constant [32 x i8] c"failed in non-task context at '\00" | |
@str1628 = internal constant [4 x i8] c"', \00" | |
@str1629 = internal constant [2 x i8] c":\00" | |
@_ZN2rt4task12begin_unwind15__STATIC_FMTSTR17hd5f7ac9a7a11afa88v0.9.preE = internal unnamed_addr constant { { i8, { i8*, i64 }, [56 x i8] }, { i8, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } }, [0 x i8] }, { i8, { i8*, i64 }, [56 x i8] }, { i8, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } }, [0 x i8] }, { i8, { i8*, i64 }, [56 x i8] }, { i8, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } }, [0 x i8] } } { { i8, { i8*, i64 }, [56 x i8] } { i8 0, { i8*, i64 } { i8* getelementptr inbounds ([32 x i8]* @str1627, i32 0, i32 0), i64 31 }, [56 x i8] undef }, { i8, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } }, [0 x i8] } { i8 2, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } } { { i8, [15 x i8] } { i8 0, [15 x i8] undef }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } } { i32 32, i8 2, i64 0, { i8, [15 x i8] } { i8 3, [15 x i8] undef }, { i8, [15 x i8] } { i8 3, [15 x i8] undef } }, { i8* } zeroinitializer }, [0 x i8] undef }, { i8, { i8*, i64 }, [56 x i8] } { i8 0, { i8*, i64 } { i8* getelementptr inbounds ([4 x i8]* @str1628, i32 0, i32 0), i64 3 }, [56 x i8] undef }, { i8, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } }, [0 x i8] } { i8 2, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } } { { i8, [15 x i8] } { i8 0, [15 x i8] undef }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } } { i32 32, i8 2, i64 0, { i8, [15 x i8] } { i8 3, [15 x i8] undef }, { i8, [15 x i8] } { i8 3, [15 x i8] undef } }, { i8* } zeroinitializer }, [0 x i8] undef }, { i8, { i8*, i64 }, [56 x i8] } { i8 0, { i8*, i64 } { i8* getelementptr inbounds ([2 x i8]* @str1629, i32 0, i32 0), i64 1 }, [56 x i8] undef }, { i8, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } }, [0 x i8] } { i8 2, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } } { { i8, [15 x i8] } { i8 0, [15 x i8] undef }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } } { i32 32, i8 2, i64 0, { i8, [15 x i8] } { i8 3, [15 x i8] undef }, { i8, [15 x i8] } { i8 3, [15 x i8] undef } }, { i8* } zeroinitializer }, [0 x i8] undef } } | |
@_ZN2rt9local_ptr8compiled10RT_TLS_PTR19h205cf0859f417374aP8v0.9.preE = available_externally thread_local global %"enum.std::libc::types::common::c95::c_void[#1]"* null | |
@str1664 = internal constant [37 x i8] c"thread-local pointer is null. bogus!\00" | |
@_ZN2rt9local_ptr8compiled13unsafe_borrow15__STATIC_FMTSTR19h203afc54b9333977a58v0.9.preE = internal unnamed_addr constant { { i8, { i8*, i64 }, [56 x i8] } } { { i8, { i8*, i64 }, [56 x i8] } { i8 0, { i8*, i64 } { i8* getelementptr inbounds ([37 x i8]* @str1664, i32 0, i32 0), i64 36 }, [56 x i8] undef } } | |
@"_ZN8_$UP$str6tydesc19h29b89872efc46afea1E" = internal constant %tydesc { i64 8, i64 ptrtoint (i1** getelementptr ({ i1, i1* }* null, i64 0, i32 1) to i64), void ({}*, i8*)* bitcast (void ({}*, i32*)* @_ZN3u329glue_take19h3b3b46959e8fcac5acE to void ({}*, i8*)*), void ({}*, i8*)* bitcast (void ({}*, { i64, i64, [0 x i8] }**)* @"_ZN8_$UP$str9glue_drop19h29b89872efc46afea4E" to void ({}*, i8*)*), void ({}*, i8*)* bitcast (void ({}*, { i64, i64, [0 x i8] }**)* @"_ZN8_$UP$str9glue_free19h29b89872efc46afea5E" to void ({}*, i8*)*), void ({}*, i8*)* bitcast (void ({}*, { i64, i64, [0 x i8] }**)* @"_ZN8_$UP$str10glue_visit19h29b89872efc46afeahE" to void ({}*, i8*)*), i64 0, { i8*, i64 } { i8* getelementptr inbounds ([5 x i8]* @str1667, i32 0, i32 0), i64 4 } } | |
@str1667 = internal constant [5 x i8] c"~str\00" | |
@str1680 = internal constant [10 x i8] c"<unnamed>\00" | |
@str1681 = internal constant [7 x i8] c"task '\00" | |
@str1682 = internal constant [14 x i8] c"' failed at '\00" | |
@_ZN2rt4task12begin_unwind15__STATIC_FMTSTR19h4577d3568ce19534ak8v0.9.preE = internal unnamed_addr constant { { i8, { i8*, i64 }, [56 x i8] }, { i8, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } }, [0 x i8] }, { i8, { i8*, i64 }, [56 x i8] }, { i8, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } }, [0 x i8] }, { i8, { i8*, i64 }, [56 x i8] }, { i8, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } }, [0 x i8] }, { i8, { i8*, i64 }, [56 x i8] }, { i8, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } }, [0 x i8] } } { { i8, { i8*, i64 }, [56 x i8] } { i8 0, { i8*, i64 } { i8* getelementptr inbounds ([7 x i8]* @str1681, i32 0, i32 0), i64 6 }, [56 x i8] undef }, { i8, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } }, [0 x i8] } { i8 2, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } } { { i8, [15 x i8] } { i8 0, [15 x i8] undef }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } } { i32 32, i8 2, i64 0, { i8, [15 x i8] } { i8 3, [15 x i8] undef }, { i8, [15 x i8] } { i8 3, [15 x i8] undef } }, { i8* } zeroinitializer }, [0 x i8] undef }, { i8, { i8*, i64 }, [56 x i8] } { i8 0, { i8*, i64 } { i8* getelementptr inbounds ([14 x i8]* @str1682, i32 0, i32 0), i64 13 }, [56 x i8] undef }, { i8, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } }, [0 x i8] } { i8 2, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } } { { i8, [15 x i8] } { i8 0, [15 x i8] undef }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } } { i32 32, i8 2, i64 0, { i8, [15 x i8] } { i8 3, [15 x i8] undef }, { i8, [15 x i8] } { i8 3, [15 x i8] undef } }, { i8* } zeroinitializer }, [0 x i8] undef }, { i8, { i8*, i64 }, [56 x i8] } { i8 0, { i8*, i64 } { i8* getelementptr inbounds ([4 x i8]* @str1628, i32 0, i32 0), i64 3 }, [56 x i8] undef }, { i8, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } }, [0 x i8] } { i8 2, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } } { { i8, [15 x i8] } { i8 0, [15 x i8] undef }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } } { i32 32, i8 2, i64 0, { i8, [15 x i8] } { i8 3, [15 x i8] undef }, { i8, [15 x i8] } { i8 3, [15 x i8] undef } }, { i8* } zeroinitializer }, [0 x i8] undef }, { i8, { i8*, i64 }, [56 x i8] } { i8 0, { i8*, i64 } { i8* getelementptr inbounds ([2 x i8]* @str1629, i32 0, i32 0), i64 1 }, [56 x i8] undef }, { i8, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } }, [0 x i8] } { i8 2, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } } { { i8, [15 x i8] } { i8 0, [15 x i8] undef }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } } { i32 32, i8 2, i64 0, { i8, [15 x i8] } { i8 3, [15 x i8] undef }, { i8, [15 x i8] } { i8 3, [15 x i8] undef } }, { i8* } zeroinitializer }, [0 x i8] undef } } | |
@str1683 = internal constant [16 x i8] c"unwinding again\00" | |
@_ZN2rt4task12begin_unwind15__STATIC_FMTSTR19h203afc54b9333977ar8v0.9.preE = internal unnamed_addr constant { { i8, { i8*, i64 }, [56 x i8] } } { { i8, { i8*, i64 }, [56 x i8] } { i8 0, { i8*, i64 } { i8* getelementptr inbounds ([16 x i8]* @str1683, i32 0, i32 0), i64 15 }, [56 x i8] undef } } | |
@str1684 = internal constant [44 x i8] c"called `Option::unwrap()` on a `None` value\00" | |
@str1685 = internal constant [46 x i8] c"/home/eddy/Projects/rust/src/libstd/option.rs\00" | |
@"_ZN12_$UP$$UP$str6tydesc17hdf9ebcadebf694abE" = internal constant %tydesc { i64 8, i64 ptrtoint (i1** getelementptr ({ i1, i1* }* null, i64 0, i32 1) to i64), void ({}*, i8*)* bitcast (void ({}*, i32*)* @_ZN3u329glue_take19h3b3b46959e8fcac5acE to void ({}*, i8*)*), void ({}*, i8*)* bitcast (void ({}*, { i64, i64, [0 x i8] }***)* @"_ZN12_$UP$$UP$str9glue_drop17hdf9ebcadebf694aeE" to void ({}*, i8*)*), void ({}*, i8*)* bitcast (void ({}*, { i64, i64, [0 x i8] }***)* @"_ZN12_$UP$$UP$str9glue_free17hdf9ebcadebf694afE" to void ({}*, i8*)*), void ({}*, i8*)* bitcast (void ({}*, { i64, i64, [0 x i8] }***)* @"_ZN12_$UP$$UP$str10glue_visit17hdf9ebcadebf694agE" to void ({}*, i8*)*), i64 0, { i8*, i64 } { i8* getelementptr inbounds ([6 x i8]* @str1739, i32 0, i32 0), i64 5 } } | |
@str1739 = internal constant [6 x i8] c"~~str\00" | |
@vtable1744 = internal constant { %tydesc*, %"struct.std::unstable::intrinsics::TypeId[#1]" ({ i64, %tydesc*, i8*, i8*, i8 }*)*, %"enum.std::util::Void[#1]"* ({ i64, %tydesc*, i8*, i8*, i8 }*)*, %"enum.std::util::Void[#1]"* ({ i64, %tydesc*, i8*, i8*, i8 }*)* } { %tydesc* @"_ZN12_$UP$$UP$str6tydesc17hdf9ebcadebf694abE", %"struct.std::unstable::intrinsics::TypeId[#1]" ({ i64, %tydesc*, i8*, i8*, i8 }*)* @"_ZN3any5Any$T11get_type_id19h3228ab16337da05ja84v0.0E", %"enum.std::util::Void[#1]"* ({ i64, %tydesc*, i8*, i8*, i8 }*)* @"_ZN3any5Any$T11as_void_ptr21h594198516f8322205ja94v0.0E", %"enum.std::util::Void[#1]"* ({ i64, %tydesc*, i8*, i8*, i8 }*)* @"_ZN3any5Any$T15as_mut_void_ptr20hfb75be5da2ed8c65jaa4v0.0E" } | |
@str2140 = internal constant [7 x i8] c"<anon>\00" | |
@str2163 = internal constant [43 x i8] c"/home/eddy/Projects/rust/src/libstd/vec.rs\00" | |
@str2274 = internal constant [27 x i8] c"vector size is too large: \00" | |
@str2435 = internal constant [6 x i8] c"10000\00" | |
@_ZN3vec13with_capacity15__STATIC_FMTSTR19h73954e5b9b315fcda88v0.9.preE = internal unnamed_addr constant { { i8, { i8*, i64 }, [56 x i8] }, { i8, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } }, [0 x i8] } } { { i8, { i8*, i64 }, [56 x i8] } { i8 0, { i8*, i64 } { i8* getelementptr inbounds ([27 x i8]* @str2274, i32 0, i32 0), i64 26 }, [56 x i8] undef }, { i8, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } }, [0 x i8] } { i8 2, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } } { { i8, [15 x i8] } { i8 0, [15 x i8] undef }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } } { i32 32, i8 2, i64 0, { i8, [15 x i8] } { i8 3, [15 x i8] undef }, { i8, [15 x i8] } { i8 3, [15 x i8] undef } }, { i8* } zeroinitializer }, [0 x i8] undef } } | |
@_ZN19_rust_crate_map_std17_6425b930ca146ae98v0.9.preE = external global i64 | |
@_ZN22_rust_crate_map_rustuv15a13edc95d75df178v0.9.preE = external global i64 | |
@_ZN4uvio8new_loop19hf88ce044d8c872ecae8v0.9.preE = external global i64 | |
@_crate_map_child_vectors = internal global [2 x i64] [i64 ptrtoint (i64* @_ZN19_rust_crate_map_std17_6425b930ca146ae98v0.9.preE to i64), i64 ptrtoint (i64* @_ZN22_rust_crate_map_rustuv15a13edc95d75df178v0.9.preE to i64)] | |
@_rust_mod_map = internal global [0 x { { i8*, i64 }, i64 }] zeroinitializer | |
; Function Attrs: nounwind | |
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i32, i1) unnamed_addr #0 | |
; Function Attrs: nounwind | |
declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) unnamed_addr #0 | |
; Function Attrs: noreturn nounwind | |
declare void @llvm.trap() unnamed_addr #1 | |
; Function Attrs: nounwind readnone | |
declare { i64, i1 } @llvm.uadd.with.overflow.i64(i64, i64) unnamed_addr #2 | |
; Function Attrs: nounwind | |
declare i32 @upcall_rust_personality() unnamed_addr #0 | |
; Function Attrs: uwtable | |
define internal void @_ZN4main18h59384e9f25bdf95ag4v0.0E({ i64, %tydesc*, i8*, i8*, i8 }* nocapture readnone) unnamed_addr #3 { | |
"while loop body.lr.ph.while loop body.lr.ph.split_crit_edge.i.i.i.i": | |
%_d.i.i = alloca %"struct.std::unstable::finally::Finallyalizer[#1]", align 8 | |
%__arg.i.i = alloca i64, align 8 | |
%__args.i.i = alloca %"struct.std::fmt::Arguments[#1]", align 8 | |
%1 = alloca %"struct.std::fmt::Argument[#1]", align 8 | |
%2 = alloca %str_slice, align 8 | |
%v.i = alloca { i64, i64, [0 x i8] }*, align 8 | |
%i.i = alloca i64, align 8 | |
%__closure2.i = alloca { i64, %tydesc*, i8*, i8*, { { i64, i64, [0 x i8] }**, i64* } }, align 8 | |
%3 = alloca %str_slice, align 8 | |
%4 = alloca %str_slice, align 8 | |
%5 = alloca %str_slice, align 8 | |
%6 = alloca %str_slice, align 8 | |
%7 = bitcast %str_slice* %5 to i8* | |
%8 = bitcast %str_slice* %6 to i8* | |
br label %next.i59.i.i.i.i | |
next.i59.i.i.i.i: ; preds = %next128.i.i.i.i, %"while loop body.lr.ph.while loop body.lr.ph.split_crit_edge.i.i.i.i" | |
%i.1184.i.i.i.i = phi i64 [ 0, %"while loop body.lr.ph.while loop body.lr.ph.split_crit_edge.i.i.i.i" ], [ %33, %next128.i.i.i.i ] | |
%.sroa.485.8.load118183.i.i.i.i = phi i64 [ undef, %"while loop body.lr.ph.while loop body.lr.ph.split_crit_edge.i.i.i.i" ], [ %val.0.i68..sroa.485.8.load118.i.i.i.i, %next128.i.i.i.i ] | |
%accum.0.load90120182.i.i.i.i = phi i64 [ 0, %"while loop body.lr.ph.while loop body.lr.ph.split_crit_edge.i.i.i.i" ], [ %28, %next128.i.i.i.i ] | |
%9 = getelementptr inbounds [6 x i8]* @str2435, i64 0, i64 %i.1184.i.i.i.i | |
%10 = load i8* %9, align 1 | |
%11 = zext i8 %10 to i32 | |
%.off.i58.i.i.i.i = add i32 %11, -48 | |
%12 = icmp ult i32 %.off.i58.i.i.i.i, 10 | |
br i1 %12, label %match_case.i60.i.i.i.i, label %compare_next.i62.i.i.i.i | |
match_case.i60.i.i.i.i: ; preds = %next.i59.i.i.i.i | |
%13 = zext i8 %10 to i64 | |
%14 = add i64 %13, -48 | |
br label %_ZN4char8to_digit17h4aeba5f78bc5e9a64v0.0E.exit72.i.i.i.i | |
compare_next.i62.i.i.i.i: ; preds = %next.i59.i.i.i.i | |
%.off1.i61.i.i.i.i = add i32 %11, -97 | |
%15 = icmp ult i32 %.off1.i61.i.i.i.i, 26 | |
br i1 %15, label %match_case7.i63.i.i.i.i, label %compare_next8.i65.i.i.i.i | |
match_case7.i63.i.i.i.i: ; preds = %compare_next.i62.i.i.i.i | |
%16 = zext i8 %10 to i64 | |
%17 = add i64 %16, -87 | |
br label %_ZN4char8to_digit17h4aeba5f78bc5e9a64v0.0E.exit72.i.i.i.i | |
compare_next8.i65.i.i.i.i: ; preds = %compare_next.i62.i.i.i.i | |
%.off2.i64.i.i.i.i = add i32 %11, -65 | |
%18 = icmp ult i32 %.off2.i64.i.i.i.i, 26 | |
br i1 %18, label %match_case9.i66.i.i.i.i, label %match_else106.i.i.i.i | |
match_case9.i66.i.i.i.i: ; preds = %compare_next8.i65.i.i.i.i | |
%19 = zext i8 %10 to i64 | |
%20 = add i64 %19, -55 | |
br label %_ZN4char8to_digit17h4aeba5f78bc5e9a64v0.0E.exit72.i.i.i.i | |
_ZN4char8to_digit17h4aeba5f78bc5e9a64v0.0E.exit72.i.i.i.i: ; preds = %match_case9.i66.i.i.i.i, %match_case7.i63.i.i.i.i, %match_case.i60.i.i.i.i | |
%val.0.i68.i.i.i.i = phi i64 [ %14, %match_case.i60.i.i.i.i ], [ %17, %match_case7.i63.i.i.i.i ], [ %20, %match_case9.i66.i.i.i.i ] | |
%21 = icmp ult i64 %val.0.i68.i.i.i.i, 10 | |
%val.0.i68..sroa.485.8.load118.i.i.i.i = select i1 %21, i64 %val.0.i68.i.i.i.i, i64 %.sroa.485.8.load118183.i.i.i.i | |
br i1 %21, label %match_case107.i.i.i.i, label %match_else106.i.i.i.i | |
match_else106.i.i.i.i: ; preds = %_ZN4char8to_digit17h4aeba5f78bc5e9a64v0.0E.exit72.i.i.i.i, %compare_next8.i65.i.i.i.i | |
switch i32 %11, label %match_else.i [ | |
i32 80, label %next195.i.i.i.i | |
i32 101, label %next195.i.i.i.i | |
i32 69, label %next195.i.i.i.i | |
i32 112, label %next195.i.i.i.i | |
] | |
match_case107.i.i.i.i: ; preds = %_ZN4char8to_digit17h4aeba5f78bc5e9a64v0.0E.exit72.i.i.i.i | |
%22 = icmp slt i64 %val.0.i68..sroa.485.8.load118.i.i.i.i, 0 | |
call void @llvm.lifetime.start(i64 16, i8* %7) | |
call void @llvm.lifetime.start(i64 16, i8* %8) | |
br i1 %22, label %match_else.i41.i.i.i.i, label %_ZN6option6Option6unwrap20h66564d7f8e6a7e73Ia54v0.0E.exit43.i.i.i.i | |
match_else.i41.i.i.i.i: ; preds = %match_case107.i.i.i.i | |
%23 = getelementptr inbounds %str_slice* %5, i64 0, i32 0 | |
store i8* getelementptr inbounds ([44 x i8]* @str1684, i64 0, i64 0), i8** %23, align 8 | |
%24 = getelementptr inbounds %str_slice* %5, i64 0, i32 1 | |
store i64 43, i64* %24, align 8 | |
%25 = getelementptr inbounds %str_slice* %6, i64 0, i32 0 | |
store i8* getelementptr inbounds ([46 x i8]* @str1685, i64 0, i64 0), i8** %25, align 8 | |
%26 = getelementptr inbounds %str_slice* %6, i64 0, i32 1 | |
store i64 45, i64* %26, align 8 | |
call fastcc void @_ZN2rt4task12begin_unwind19hb2ca8f51fb27782dap4v0.0E(%str_slice* %5, %str_slice* %6, i64 135) | |
unreachable | |
_ZN6option6Option6unwrap20h66564d7f8e6a7e73Ia54v0.0E.exit43.i.i.i.i: ; preds = %match_case107.i.i.i.i | |
%27 = mul i64 %accum.0.load90120182.i.i.i.i, 10 | |
call void @llvm.lifetime.end(i64 16, i8* %7) | |
call void @llvm.lifetime.end(i64 16, i8* %8) | |
%28 = add i64 %val.0.i68..sroa.485.8.load118.i.i.i.i, %27 | |
%29 = icmp eq i64 %accum.0.load90120182.i.i.i.i, 0 | |
br i1 %29, label %next128.i.i.i.i, label %rhs113.i.i.i.i | |
rhs113.i.i.i.i: ; preds = %_ZN6option6Option6unwrap20h66564d7f8e6a7e73Ia54v0.0E.exit43.i.i.i.i | |
%30 = icmp ult i64 %accum.0.load90120182.i.i.i.i, %28 | |
%31 = udiv i64 %27, 10 | |
%32 = icmp eq i64 %accum.0.load90120182.i.i.i.i, %31 | |
%or.cond = and i1 %30, %32 | |
br i1 %or.cond, label %next128.i.i.i.i, label %match_else.i | |
next128.i.i.i.i: ; preds = %rhs113.i.i.i.i, %_ZN6option6Option6unwrap20h66564d7f8e6a7e73Ia54v0.0E.exit43.i.i.i.i | |
%33 = add i64 %i.1184.i.i.i.i, 1 | |
%34 = icmp ult i64 %33, 5 | |
br i1 %34, label %next.i59.i.i.i.i, label %_ZN6option6Option6unwrap20h66564d7f8e6a7e73Ia54v0.0E.exit | |
next195.i.i.i.i: ; preds = %match_else106.i.i.i.i, %match_else106.i.i.i.i, %match_else106.i.i.i.i, %match_else106.i.i.i.i | |
%switch = icmp ult i64 %i.1184.i.i.i.i, 5 | |
br i1 %switch, label %match_else.i, label %cond204.i.i.i.i | |
cond204.i.i.i.i: ; preds = %next195.i.i.i.i | |
call void @_ZN8unstable4lang17fail_bounds_check18hcb910a4a141408bar8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, i8* getelementptr inbounds ([7 x i8]* @str2140, i64 0, i64 0), i64 1, i64 %i.1184.i.i.i.i, i64 5) | |
unreachable | |
match_else.i: ; preds = %rhs113.i.i.i.i, %next195.i.i.i.i, %match_else106.i.i.i.i | |
%35 = bitcast %str_slice* %3 to i8* | |
call void @llvm.lifetime.start(i64 16, i8* %35) | |
%36 = bitcast %str_slice* %4 to i8* | |
call void @llvm.lifetime.start(i64 16, i8* %36) | |
%37 = getelementptr inbounds %str_slice* %3, i64 0, i32 0 | |
store i8* getelementptr inbounds ([44 x i8]* @str1684, i64 0, i64 0), i8** %37, align 8 | |
%38 = getelementptr inbounds %str_slice* %3, i64 0, i32 1 | |
store i64 43, i64* %38, align 8 | |
%39 = getelementptr inbounds %str_slice* %4, i64 0, i32 0 | |
store i8* getelementptr inbounds ([46 x i8]* @str1685, i64 0, i64 0), i8** %39, align 8 | |
%40 = getelementptr inbounds %str_slice* %4, i64 0, i32 1 | |
store i64 45, i64* %40, align 8 | |
call fastcc void @_ZN2rt4task12begin_unwind19hb2ca8f51fb27782dap4v0.0E(%str_slice* %3, %str_slice* %4, i64 135) | |
unreachable | |
_ZN6option6Option6unwrap20h66564d7f8e6a7e73Ia54v0.0E.exit: ; preds = %next128.i.i.i.i | |
%41 = bitcast %str_slice* %3 to i8* | |
call void @llvm.lifetime.start(i64 16, i8* %41) | |
%42 = bitcast %str_slice* %4 to i8* | |
call void @llvm.lifetime.start(i64 16, i8* %42) | |
call void @llvm.lifetime.end(i64 16, i8* %41) | |
call void @llvm.lifetime.end(i64 16, i8* %42) | |
%43 = bitcast { i64, i64, [0 x i8] }** %v.i to i8* | |
call void @llvm.lifetime.start(i64 8, i8* %43) | |
%44 = bitcast i64* %i.i to i8* | |
call void @llvm.lifetime.start(i64 8, i8* %44) | |
%45 = bitcast { i64, %tydesc*, i8*, i8*, { { i64, i64, [0 x i8] }**, i64* } }* %__closure2.i to i8* | |
call void @llvm.lifetime.start(i64 48, i8* %45) | |
%46 = bitcast i64* %__arg.i.i to i8* | |
call void @llvm.lifetime.start(i64 8, i8* %46) | |
%47 = bitcast %"struct.std::fmt::Arguments[#1]"* %__args.i.i to i8* | |
call void @llvm.lifetime.start(i64 32, i8* %47) | |
%48 = bitcast %"struct.std::fmt::Argument[#1]"* %1 to i8* | |
call void @llvm.lifetime.start(i64 16, i8* %48) | |
%49 = bitcast %str_slice* %2 to i8* | |
call void @llvm.lifetime.start(i64 16, i8* %49) | |
store i64 %28, i64* %__arg.i.i, align 8 | |
%uadd.i.i = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %28, i64 16) | |
%50 = extractvalue { i64, i1 } %uadd.i.i, 1 | |
br i1 %50, label %then1.i.i, label %"normal return.i" | |
then1.i.i: ; preds = %_ZN6option6Option6unwrap20h66564d7f8e6a7e73Ia54v0.0E.exit | |
%51 = getelementptr inbounds %"struct.std::fmt::Argument[#1]"* %1, i64 0, i32 0 | |
store void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)* bitcast (void ({ i64, %tydesc*, i8*, i8*, i8 }*, i64*, %"struct.std::fmt::Formatter[#1]"*)* @"_ZN3fmt12Default$uint3fmt21h7ed8518a18cff18aVLa08v0.9.preE" to void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)*), void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)** %51, align 8 | |
%52 = getelementptr inbounds %"struct.std::fmt::Argument[#1]"* %1, i64 0, i32 1 | |
%53 = bitcast i64* %__arg.i.i to %"enum.std::util::Void[#1]"* | |
store %"enum.std::util::Void[#1]"* %53, %"enum.std::util::Void[#1]"** %52, align 8 | |
%__self.sroa.0.0.idx.i.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args.i.i, i64 0, i32 0, i32 0 | |
store %"enum.std::fmt::rt::Piece[#1]"* bitcast ({ { i8, { i8*, i64 }, [56 x i8] }, { i8, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } }, [0 x i8] } }* @_ZN3vec13with_capacity15__STATIC_FMTSTR19h73954e5b9b315fcda88v0.9.preE to %"enum.std::fmt::rt::Piece[#1]"*), %"enum.std::fmt::rt::Piece[#1]"** %__self.sroa.0.0.idx.i.i, align 8 | |
%__self.sroa.2.0.idx2.i.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args.i.i, i64 0, i32 0, i32 1 | |
store i64 2, i64* %__self.sroa.2.0.idx2.i.i, align 8 | |
%__adjust.sroa.0.0.idx.i.i.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args.i.i, i64 0, i32 1, i32 0 | |
store %"struct.std::fmt::Argument[#1]"* %1, %"struct.std::fmt::Argument[#1]"** %__adjust.sroa.0.0.idx.i.i.i, align 8 | |
%__adjust.sroa.2.0.idx1.i.i.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args.i.i, i64 0, i32 1, i32 1 | |
store i64 1, i64* %__adjust.sroa.2.0.idx1.i.i.i, align 8 | |
%54 = call { i64, i64, [0 x i8] }* @_ZN3fmt6format19h532a2575ed3ec0b2aH8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, %"struct.std::fmt::Arguments[#1]"* %__args.i.i) | |
%55 = getelementptr inbounds %str_slice* %2, i64 0, i32 0 | |
store i8* getelementptr inbounds ([43 x i8]* @str2163, i64 0, i64 0), i8** %55, align 8 | |
%56 = getelementptr inbounds %str_slice* %2, i64 0, i32 1 | |
store i64 42, i64* %56, align 8 | |
call fastcc void @_ZN2rt4task12begin_unwind19hb69f3b6242a253fda74v0.0E({ i64, i64, [0 x i8] }* %54, %str_slice* %2, i64 191) | |
unreachable | |
"normal return.i": ; preds = %_ZN6option6Option6unwrap20h66564d7f8e6a7e73Ia54v0.0E.exit | |
%57 = extractvalue { i64, i1 } %uadd.i.i, 0 | |
%58 = call %"enum.std::libc::types::common::c95::c_void[#1]"* @_ZN2rt11global_heap10malloc_raw18hc8dd83269b07a90aj8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, i64 %57) | |
%59 = bitcast %"enum.std::libc::types::common::c95::c_void[#1]"* %58 to %"struct.std::unstable::raw::Vec<()>[#1]"* | |
%60 = getelementptr inbounds %"struct.std::unstable::raw::Vec<()>[#1]"* %59, i64 0, i32 1 | |
store i64 %28, i64* %60, align 8 | |
%61 = bitcast %"enum.std::libc::types::common::c95::c_void[#1]"* %58 to i64* | |
store i64 0, i64* %61, align 8 | |
%62 = bitcast %"enum.std::libc::types::common::c95::c_void[#1]"* %58 to { i64, i64, [0 x i8] }* | |
call void @llvm.lifetime.end(i64 8, i8* %46) | |
call void @llvm.lifetime.end(i64 32, i8* %47) | |
call void @llvm.lifetime.end(i64 16, i8* %48) | |
call void @llvm.lifetime.end(i64 16, i8* %49) | |
store { i64, i64, [0 x i8] }* %62, { i64, i64, [0 x i8] }** %v.i, align 8 | |
store i64 0, i64* %i.i, align 8 | |
%63 = getelementptr inbounds { i64, %tydesc*, i8*, i8*, { { i64, i64, [0 x i8] }**, i64* } }* %__closure2.i, i64 0, i32 4, i32 0 | |
store { i64, i64, [0 x i8] }** %v.i, { i64, i64, [0 x i8] }*** %63, align 8 | |
%64 = getelementptr inbounds { i64, %tydesc*, i8*, i8*, { { i64, i64, [0 x i8] }**, i64* } }* %__closure2.i, i64 0, i32 4, i32 1 | |
store i64* %i.i, i64** %64, align 8 | |
%65 = bitcast { i64, %tydesc*, i8*, i8*, { { i64, i64, [0 x i8] }**, i64* } }* %__closure2.i to { i64, %tydesc*, i8*, i8*, i8 }* | |
%66 = bitcast %"struct.std::unstable::finally::Finallyalizer[#1]"* %_d.i.i to i8* | |
call void @llvm.lifetime.start(i64 24, i8* %66) | |
%67 = getelementptr inbounds %"struct.std::unstable::finally::Finallyalizer[#1]"* %_d.i.i, i64 0, i32 1 | |
store i8 1, i8* %67, align 8 | |
%.sroa.0.0.idx.i = getelementptr inbounds %"struct.std::unstable::finally::Finallyalizer[#1]"* %_d.i.i, i64 0, i32 0, i32 0 | |
store void ({ i64, %tydesc*, i8*, i8*, i8 }*)* @_ZN3vec9from_elem4anon7expr_fn4axaQE, void ({ i64, %tydesc*, i8*, i8*, i8 }*)** %.sroa.0.0.idx.i, align 8 | |
%.sroa.2.0.idx6.i = getelementptr inbounds %"struct.std::unstable::finally::Finallyalizer[#1]"* %_d.i.i, i64 0, i32 0, i32 1 | |
store { i64, %tydesc*, i8*, i8*, i8 }* %65, { i64, %tydesc*, i8*, i8*, i8 }** %.sroa.2.0.idx6.i, align 8 | |
%68 = icmp eq i64 %28, 0 | |
br i1 %68, label %cond.i.i.i, label %.noexc10.i | |
.noexc10.i: ; preds = %"normal return.i", %.noexc10.i | |
%69 = phi i64 [ %72, %.noexc10.i ], [ 0, %"normal return.i" ] | |
%70 = getelementptr inbounds { i64, i64, [0 x i8] }* %62, i64 0, i32 2, i64 %69 | |
store i8 0, i8* %70, align 1 | |
%71 = load i64* %i.i, align 8 | |
%72 = add i64 %71, 1 | |
store i64 %72, i64* %i.i, align 8 | |
%73 = icmp ult i64 %72, %28 | |
br i1 %73, label %.noexc10.i, label %"normal return.i.i" | |
"normal return.i.i": ; preds = %.noexc10.i | |
%.pre.i = load i8* %67, align 8 | |
%phitmp.i = icmp eq i8 %.pre.i, 0 | |
br i1 %phitmp.i, label %_ZN3vec9from_elem18h4d913edebab3eafax4v0.0E.exit, label %cond.i.i.i | |
cond.i.i.i: ; preds = %"normal return.i.i", %"normal return.i" | |
invoke void @"_ZN8unstable7finally18Drop$Finallyalizer4drop20h5b8c344136b8d92YtaS8v0.9.preE"(%"struct.std::unstable::finally::Finallyalizer[#1]"* %_d.i.i) | |
to label %_ZN3vec9from_elem18h4d913edebab3eafax4v0.0E.exit unwind label %unwind.body.i | |
unwind.body.i: ; preds = %cond.i.i.i | |
%74 = landingpad { i8*, i32 } personality i32 ()* @upcall_rust_personality | |
cleanup | |
%75 = load { i64, i64, [0 x i8] }** %v.i, align 8 | |
%76 = icmp eq { i64, i64, [0 x i8] }* %75, null | |
br i1 %76, label %"_ZN8_$UP$u329glue_drop17hfae7fdc29923e2agE.exit.i", label %cond.i.i3.i | |
cond.i.i3.i: ; preds = %unwind.body.i | |
%77 = bitcast { i64, i64, [0 x i8] }* %75 to i8* | |
call void @_ZN2rt11global_heap13exchange_free19hc05c15244ca85199ak8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, i8* %77) | |
br label %"_ZN8_$UP$u329glue_drop17hfae7fdc29923e2agE.exit.i" | |
"_ZN8_$UP$u329glue_drop17hfae7fdc29923e2agE.exit.i": ; preds = %cond.i.i3.i, %unwind.body.i | |
resume { i8*, i32 } %74 | |
_ZN3vec9from_elem18h4d913edebab3eafax4v0.0E.exit: ; preds = %"normal return.i.i", %cond.i.i.i | |
call void @llvm.lifetime.end(i64 24, i8* %66) | |
%78 = load { i64, i64, [0 x i8] }** %v.i, align 8 | |
call void @llvm.lifetime.end(i64 8, i8* %43) | |
call void @llvm.lifetime.end(i64 8, i8* %44) | |
call void @llvm.lifetime.end(i64 48, i8* %45) | |
%79 = icmp eq { i64, i64, [0 x i8] }* %78, null | |
br i1 %79, label %"_ZN8_$UP$u329glue_drop17hfae7fdc29923e2agE.exit", label %cond.i.i | |
cond.i.i: ; preds = %_ZN3vec9from_elem18h4d913edebab3eafax4v0.0E.exit | |
%80 = bitcast { i64, i64, [0 x i8] }* %78 to i8* | |
call void @_ZN2rt11global_heap13exchange_free19hc05c15244ca85199ak8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, i8* %80) | |
br label %"_ZN8_$UP$u329glue_drop17hfae7fdc29923e2agE.exit" | |
"_ZN8_$UP$u329glue_drop17hfae7fdc29923e2agE.exit": ; preds = %_ZN3vec9from_elem18h4d913edebab3eafax4v0.0E.exit, %cond.i.i | |
ret void | |
} | |
define i64 @main(i64, i8**) unnamed_addr { | |
top: | |
%2 = tail call i64 @_ZN8unstable4lang5start16h511ef9eda4ccaad8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* null, i8* bitcast (void ({ i64, %tydesc*, i8*, i8*, i8 }*)* @_ZN4main18h59384e9f25bdf95ag4v0.0E to i8*), i64 %0, i8** %1) | |
ret i64 %2 | |
} | |
declare i64 @_ZN8unstable4lang5start16h511ef9eda4ccaad8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }*, i8*, i64, i8**) unnamed_addr | |
; Function Attrs: noreturn uwtable | |
define internal fastcc void @_ZN2rt4task12begin_unwind19hb2ca8f51fb27782dap4v0.0E(%str_slice* nocapture readonly, %str_slice*, i64) unnamed_addr #4 { | |
"normal return": | |
%3 = alloca [0 x %"struct.std::fmt::Argument[#1]"], align 8 | |
%__args.i.i = alloca %"struct.std::fmt::Arguments[#1]", align 8 | |
%__adjust2.i.i = alloca { i8*, i64 }, align 8 | |
%__arg = alloca i64, align 8 | |
%msg = alloca { %tydesc*, { i64, %tydesc*, i8*, i8*, i8 }* }, align 8 | |
%msg_s = alloca %str_slice, align 8 | |
%__args = alloca %"struct.std::fmt::Arguments[#1]", align 8 | |
%4 = alloca [3 x %"struct.std::fmt::Argument[#1]"], align 8 | |
%n = alloca %str_slice, align 8 | |
%__args29 = alloca %"struct.std::fmt::Arguments[#1]", align 8 | |
%5 = alloca [4 x %"struct.std::fmt::Argument[#1]"], align 8 | |
%__args40 = alloca %"struct.std::fmt::Arguments[#1]", align 8 | |
%__adjust46 = alloca { i8*, i64 }, align 8 | |
%__self51 = alloca { %tydesc*, { i64, %tydesc*, i8*, i8*, i8 }* }, align 8 | |
%.sub4 = getelementptr inbounds [0 x %"struct.std::fmt::Argument[#1]"]* %3, i64 0, i64 0 | |
%.sub3 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %5, i64 0, i64 0 | |
%.sub = getelementptr inbounds [3 x %"struct.std::fmt::Argument[#1]"]* %4, i64 0, i64 0 | |
store i64 %2, i64* %__arg, align 8 | |
%6 = getelementptr inbounds { %tydesc*, { i64, %tydesc*, i8*, i8*, i8 }* }* %msg, i64 0, i32 1 | |
%7 = call %"enum.std::libc::types::common::c95::c_void[#1]"* @_ZN2rt11global_heap10malloc_raw18hc8dd83269b07a90aj8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, i64 16) | |
%8 = bitcast %"enum.std::libc::types::common::c95::c_void[#1]"* %7 to i8* | |
%9 = bitcast %str_slice* %0 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %9, i64 16, i32 8, i1 false) | |
%.c = bitcast %"enum.std::libc::types::common::c95::c_void[#1]"* %7 to { i64, %tydesc*, i8*, i8*, i8 }* | |
store { i64, %tydesc*, i8*, i8*, i8 }* %.c, { i64, %tydesc*, i8*, i8*, i8 }** %6, align 8 | |
%10 = getelementptr inbounds { %tydesc*, { i64, %tydesc*, i8*, i8*, i8 }* }* %msg, i64 0, i32 0 | |
store %tydesc* bitcast ({ %tydesc*, %"struct.std::unstable::intrinsics::TypeId[#1]" ({ i64, %tydesc*, i8*, i8*, i8 }*)*, %"enum.std::util::Void[#1]"* ({ i64, %tydesc*, i8*, i8*, i8 }*)*, %"enum.std::util::Void[#1]"* ({ i64, %tydesc*, i8*, i8*, i8 }*)* }* @vtable1561 to %tydesc*), %tydesc** %10, align 8 | |
%11 = icmp eq %"enum.std::libc::types::common::c95::c_void[#1]"* %7, null | |
br i1 %11, label %match_else9, label %match_case | |
unwind: ; preds = %cond.i.i.i.i, %then.i.i, %next50, %"normal return44", %"normal return37", %"normal return19", %join12 | |
%12 = landingpad { i8*, i32 } personality i32 ()* @upcall_rust_personality | |
cleanup | |
br label %unwind.body | |
unwind.body: ; preds = %unwind.i.i, %cond.i.i.i.i, %unwind | |
%eh.lpad-body = phi { i8*, i32 } [ %12, %unwind ], [ %47, %cond.i.i.i.i ], [ %47, %unwind.i.i ] | |
%.fca.0.extract78 = extractvalue { i8*, i32 } %eh.lpad-body, 0 | |
%.fca.1.extract = extractvalue { i8*, i32 } %eh.lpad-body, 1 | |
br label %cleanup | |
cleanup: ; preds = %cond.i.i, %unwind48, %unwind.body | |
%.sroa.086.0 = phi i8* [ %.fca.0.extract78, %unwind.body ], [ %.fca.0.extract83, %unwind48 ], [ %.fca.0.extract83, %cond.i.i ] | |
%.sroa.3.0 = phi i32 [ %.fca.1.extract, %unwind.body ], [ %.fca.1.extract85, %unwind48 ], [ %.fca.1.extract85, %cond.i.i ] | |
%13 = load { i64, %tydesc*, i8*, i8*, i8 }** %6, align 8 | |
%14 = icmp eq { i64, %tydesc*, i8*, i8*, i8 }* %13, null | |
br i1 %14, label %"_ZN23_$UP$std..any..Any.Send9glue_drop19hd789a1a3ffe4e6a7aGE.exit", label %cond.i | |
cond.i: ; preds = %cleanup | |
%15 = load %tydesc** %10, align 8 | |
%16 = bitcast %tydesc* %15 to %tydesc** | |
%17 = load %tydesc** %16, align 8 | |
%18 = bitcast { i64, %tydesc*, i8*, i8*, i8 }** %6 to i8* | |
%19 = getelementptr inbounds %tydesc* %17, i64 0, i32 4 | |
%20 = load void ({}*, i8*)** %19, align 8 | |
call void %20({}* null, i8* %18) | |
br label %"_ZN23_$UP$std..any..Any.Send9glue_drop19hd789a1a3ffe4e6a7aGE.exit" | |
"_ZN23_$UP$std..any..Any.Send9glue_drop19hd789a1a3ffe4e6a7aGE.exit": ; preds = %cleanup, %cond.i | |
%.fca.0.insert80 = insertvalue { i8*, i32 } undef, i8* %.sroa.086.0, 0 | |
%.fca.1.insert = insertvalue { i8*, i32 } %.fca.0.insert80, i32 %.sroa.3.0, 1 | |
resume { i8*, i32 } %.fca.1.insert | |
match_case: ; preds = %"normal return" | |
%21 = bitcast %str_slice* %msg_s to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %21, i8* %8, i64 16, i32 8, i1 false) | |
br label %join12 | |
match_else9: ; preds = %"normal return" | |
%22 = getelementptr inbounds %str_slice* %msg_s, i64 0, i32 0 | |
store i8* getelementptr inbounds ([5 x i8]* @str1592, i64 0, i64 0), i8** %22, align 8 | |
%23 = getelementptr inbounds %str_slice* %msg_s, i64 0, i32 1 | |
store i64 4, i64* %23, align 8 | |
br label %join12 | |
join12: ; preds = %match_else9, %match_case | |
%24 = invoke i8 @_ZN2rt21in_green_task_context18hdbdeab4941a112aat8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef) | |
to label %"normal return13" unwind label %unwind | |
"normal return13": ; preds = %join12 | |
%25 = icmp eq i8 %24, 0 | |
br i1 %25, label %"normal return19", label %next | |
"normal return19": ; preds = %"normal return13" | |
%26 = getelementptr inbounds [3 x %"struct.std::fmt::Argument[#1]"]* %4, i64 0, i64 0, i32 0 | |
store void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)* bitcast (void ({ i64, %tydesc*, i8*, i8*, i8 }*, %str_slice*, %"struct.std::fmt::Formatter[#1]"*)* @"_ZN3fmt22Default$__extensions__3fmt20h197151a9adb3cf2D0aP8v0.9.preE" to void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)*), void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)** %26, align 8 | |
%27 = getelementptr inbounds [3 x %"struct.std::fmt::Argument[#1]"]* %4, i64 0, i64 0, i32 1 | |
%28 = bitcast %str_slice* %msg_s to %"enum.std::util::Void[#1]"* | |
store %"enum.std::util::Void[#1]"* %28, %"enum.std::util::Void[#1]"** %27, align 8 | |
%29 = getelementptr inbounds [3 x %"struct.std::fmt::Argument[#1]"]* %4, i64 0, i64 1, i32 0 | |
store void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)* bitcast (void ({ i64, %tydesc*, i8*, i8*, i8 }*, %str_slice*, %"struct.std::fmt::Formatter[#1]"*)* @"_ZN3fmt22Default$__extensions__3fmt20h197151a9adb3cf2D0aP8v0.9.preE" to void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)*), void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)** %29, align 8 | |
%30 = getelementptr inbounds [3 x %"struct.std::fmt::Argument[#1]"]* %4, i64 0, i64 1, i32 1 | |
%31 = bitcast %str_slice* %1 to %"enum.std::util::Void[#1]"* | |
store %"enum.std::util::Void[#1]"* %31, %"enum.std::util::Void[#1]"** %30, align 8 | |
%32 = getelementptr inbounds [3 x %"struct.std::fmt::Argument[#1]"]* %4, i64 0, i64 2, i32 0 | |
store void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)* bitcast (void ({ i64, %tydesc*, i8*, i8*, i8 }*, i64*, %"struct.std::fmt::Formatter[#1]"*)* @"_ZN3fmt12Default$uint3fmt21h7ed8518a18cff18aVLa08v0.9.preE" to void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)*), void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)** %32, align 8 | |
%33 = getelementptr inbounds [3 x %"struct.std::fmt::Argument[#1]"]* %4, i64 0, i64 2, i32 1 | |
%34 = bitcast i64* %__arg to %"enum.std::util::Void[#1]"* | |
store %"enum.std::util::Void[#1]"* %34, %"enum.std::util::Void[#1]"** %33, align 8 | |
%__self14.sroa.0.0.idx = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args, i64 0, i32 0, i32 0 | |
store %"enum.std::fmt::rt::Piece[#1]"* bitcast ({ { i8, { i8*, i64 }, [56 x i8] }, { i8, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } }, [0 x i8] }, { i8, { i8*, i64 }, [56 x i8] }, { i8, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } }, [0 x i8] }, { i8, { i8*, i64 }, [56 x i8] }, { i8, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } }, [0 x i8] } }* @_ZN2rt4task12begin_unwind15__STATIC_FMTSTR17hd5f7ac9a7a11afa88v0.9.preE to %"enum.std::fmt::rt::Piece[#1]"*), %"enum.std::fmt::rt::Piece[#1]"** %__self14.sroa.0.0.idx, align 8 | |
%__self14.sroa.2.0.idx38 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args, i64 0, i32 0, i32 1 | |
store i64 6, i64* %__self14.sroa.2.0.idx38, align 8 | |
%__adjust.sroa.0.0.idx.i21 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args, i64 0, i32 1, i32 0 | |
store %"struct.std::fmt::Argument[#1]"* %.sub, %"struct.std::fmt::Argument[#1]"** %__adjust.sroa.0.0.idx.i21, align 8 | |
%__adjust.sroa.2.0.idx1.i22 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args, i64 0, i32 1, i32 1 | |
store i64 3, i64* %__adjust.sroa.2.0.idx1.i22, align 8 | |
invoke void @_ZN2rt4util12dumb_println18h233bfbbcb2c2c68aB8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, %"struct.std::fmt::Arguments[#1]"* %__args) | |
to label %"normal return20" unwind label %unwind | |
"normal return20": ; preds = %"normal return19" | |
call void @llvm.trap() #0 | |
unreachable | |
next: ; preds = %"normal return13" | |
%35 = bitcast [0 x %"struct.std::fmt::Argument[#1]"]* %3 to i8* | |
call void @llvm.lifetime.start(i64 0, i8* %35) | |
%36 = bitcast %"struct.std::fmt::Arguments[#1]"* %__args.i.i to i8* | |
call void @llvm.lifetime.start(i64 32, i8* %36) | |
%37 = bitcast { i8*, i64 }* %__adjust2.i.i to i8* | |
call void @llvm.lifetime.start(i64 16, i8* %37) | |
%38 = load %"enum.std::libc::types::common::c95::c_void[#1]"** @_ZN2rt9local_ptr8compiled10RT_TLS_PTR19h205cf0859f417374aP8v0.9.preE, align 8 | |
%39 = icmp eq %"enum.std::libc::types::common::c95::c_void[#1]"* %38, null | |
br i1 %39, label %then.i.i, label %"normal return22" | |
then.i.i: ; preds = %next | |
%__self.sroa.0.0.idx.i.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args.i.i, i64 0, i32 0, i32 0 | |
store %"enum.std::fmt::rt::Piece[#1]"* bitcast ({ { i8, { i8*, i64 }, [56 x i8] } }* @_ZN2rt9local_ptr8compiled13unsafe_borrow15__STATIC_FMTSTR19h203afc54b9333977a58v0.9.preE to %"enum.std::fmt::rt::Piece[#1]"*), %"enum.std::fmt::rt::Piece[#1]"** %__self.sroa.0.0.idx.i.i, align 8 | |
%__self.sroa.2.0.idx2.i.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args.i.i, i64 0, i32 0, i32 1 | |
store i64 1, i64* %__self.sroa.2.0.idx2.i.i, align 8 | |
%__adjust.sroa.0.0.idx.i.i.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args.i.i, i64 0, i32 1, i32 0 | |
store %"struct.std::fmt::Argument[#1]"* %.sub4, %"struct.std::fmt::Argument[#1]"** %__adjust.sroa.0.0.idx.i.i.i, align 8 | |
%__adjust.sroa.2.0.idx1.i.i.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args.i.i, i64 0, i32 1, i32 1 | |
store i64 0, i64* %__adjust.sroa.2.0.idx1.i.i.i, align 8 | |
%40 = invoke { i64, i64, [0 x i8] }* @_ZN3fmt6format19h532a2575ed3ec0b2aH8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, %"struct.std::fmt::Arguments[#1]"* %__args.i.i) | |
to label %.noexc26 unwind label %unwind | |
.noexc26: ; preds = %then.i.i | |
%41 = getelementptr inbounds { i64, i64, [0 x i8] }* %40, i64 0, i32 2, i64 0 | |
%42 = getelementptr inbounds { i64, i64, [0 x i8] }* %40, i64 0, i32 0 | |
%43 = load i64* %42, align 8 | |
%44 = getelementptr inbounds { i8*, i64 }* %__adjust2.i.i, i64 0, i32 0 | |
store i8* %41, i8** %44, align 8 | |
%45 = getelementptr inbounds { i8*, i64 }* %__adjust2.i.i, i64 0, i32 1 | |
store i64 %43, i64* %45, align 8 | |
%46 = bitcast { i8*, i64 }* %__adjust2.i.i to %str_slice* | |
invoke void @_ZN2rt4util5abort19hcb77c39c2971b825a48v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, %str_slice* %46) | |
to label %"normal return.i.i" unwind label %unwind.i.i | |
"normal return.i.i": ; preds = %.noexc26 | |
unreachable | |
unwind.i.i: ; preds = %.noexc26 | |
%47 = landingpad { i8*, i32 } personality i32 ()* @upcall_rust_personality | |
cleanup | |
%48 = icmp eq { i64, i64, [0 x i8] }* %40, null | |
br i1 %48, label %unwind.body, label %cond.i.i.i.i | |
cond.i.i.i.i: ; preds = %unwind.i.i | |
%49 = bitcast { i64, i64, [0 x i8] }* %40 to i8* | |
invoke void @_ZN2rt11global_heap13exchange_free19hc05c15244ca85199ak8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, i8* %49) | |
to label %unwind.body unwind label %unwind | |
"normal return22": ; preds = %next | |
%50 = bitcast %"enum.std::libc::types::common::c95::c_void[#1]"* %38 to %"struct.std::rt::task::Task[#1]"* | |
call void @llvm.lifetime.end(i64 0, i8* %35) | |
call void @llvm.lifetime.end(i64 32, i8* %36) | |
call void @llvm.lifetime.end(i64 16, i8* %37) | |
%51 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %50, i64 0, i32 7, i32 0 | |
%52 = load i8* %51, align 1, !range !0 | |
%cond.i23 = icmp eq i8 %52, 1 | |
br i1 %cond.i23, label %match_case.i19, label %match_else.i | |
match_case.i19: ; preds = %"normal return22" | |
%53 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %50, i64 0, i32 7, i32 2 | |
%54 = bitcast [3 x i64]* %53 to i8* | |
%55 = load i8* %54, align 1, !range !0 | |
%cond.i48 = icmp eq i8 %55, 0 | |
%56 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %50, i64 0, i32 7, i32 2, i64 1 | |
br i1 %cond.i48, label %match_case.i50, label %match_else.i49 | |
match_else.i49: ; preds = %match_case.i19 | |
%s2.i.sroa.0.0.cast = bitcast i64* %56 to i8** | |
%s2.i.sroa.0.0.copyload = load i8** %s2.i.sroa.0.0.cast, align 8 | |
%57 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %50, i64 0, i32 7, i32 2, i64 2 | |
br label %match_case.i | |
match_case.i50: ; preds = %match_case.i19 | |
%58 = bitcast i64* %56 to { i64, i64, [0 x i8] }** | |
%59 = load { i64, i64, [0 x i8] }** %58, align 8 | |
%60 = getelementptr inbounds { i64, i64, [0 x i8] }* %59, i64 0, i32 2, i64 0 | |
%61 = getelementptr inbounds { i64, i64, [0 x i8] }* %59, i64 0, i32 0 | |
br label %match_case.i | |
match_else.i: ; preds = %"normal return22" | |
%.sroa.0.0.idx = getelementptr inbounds %str_slice* %n, i64 0, i32 0 | |
store i8* getelementptr inbounds ([10 x i8]* @str1680, i64 0, i64 0), i8** %.sroa.0.0.idx, align 8 | |
%.sroa.2.0.idx30 = getelementptr inbounds %str_slice* %n, i64 0, i32 1 | |
store i64 9, i64* %.sroa.2.0.idx30, align 8 | |
br label %"normal return37" | |
match_case.i: ; preds = %match_else.i49, %match_case.i50 | |
%.sroa.6.0.copyload73.in = phi i64* [ %57, %match_else.i49 ], [ %61, %match_case.i50 ] | |
%62 = phi i8* [ %s2.i.sroa.0.0.copyload, %match_else.i49 ], [ %60, %match_case.i50 ] | |
%.sroa.6.0.copyload73 = load i64* %.sroa.6.0.copyload73.in, align 8 | |
%.sroa.0.0.idx53 = getelementptr inbounds %str_slice* %n, i64 0, i32 0 | |
store i8* %62, i8** %.sroa.0.0.idx53, align 8 | |
%.sroa.6.0.idx58 = getelementptr inbounds %str_slice* %n, i64 0, i32 1 | |
store i64 %.sroa.6.0.copyload73, i64* %.sroa.6.0.idx58, align 8 | |
br label %"normal return37" | |
"normal return37": ; preds = %match_else.i, %match_case.i | |
%63 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %5, i64 0, i64 0, i32 0 | |
store void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)* bitcast (void ({ i64, %tydesc*, i8*, i8*, i8 }*, %str_slice*, %"struct.std::fmt::Formatter[#1]"*)* @"_ZN3fmt22Default$__extensions__3fmt20h197151a9adb3cf2D0aP8v0.9.preE" to void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)*), void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)** %63, align 8 | |
%64 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %5, i64 0, i64 0, i32 1 | |
%65 = bitcast %str_slice* %n to %"enum.std::util::Void[#1]"* | |
store %"enum.std::util::Void[#1]"* %65, %"enum.std::util::Void[#1]"** %64, align 8 | |
%66 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %5, i64 0, i64 1, i32 0 | |
store void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)* bitcast (void ({ i64, %tydesc*, i8*, i8*, i8 }*, %str_slice*, %"struct.std::fmt::Formatter[#1]"*)* @"_ZN3fmt22Default$__extensions__3fmt20h197151a9adb3cf2D0aP8v0.9.preE" to void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)*), void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)** %66, align 8 | |
%67 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %5, i64 0, i64 1, i32 1 | |
%68 = bitcast %str_slice* %msg_s to %"enum.std::util::Void[#1]"* | |
store %"enum.std::util::Void[#1]"* %68, %"enum.std::util::Void[#1]"** %67, align 8 | |
%69 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %5, i64 0, i64 2, i32 0 | |
store void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)* bitcast (void ({ i64, %tydesc*, i8*, i8*, i8 }*, %str_slice*, %"struct.std::fmt::Formatter[#1]"*)* @"_ZN3fmt22Default$__extensions__3fmt20h197151a9adb3cf2D0aP8v0.9.preE" to void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)*), void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)** %69, align 8 | |
%70 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %5, i64 0, i64 2, i32 1 | |
%71 = bitcast %str_slice* %1 to %"enum.std::util::Void[#1]"* | |
store %"enum.std::util::Void[#1]"* %71, %"enum.std::util::Void[#1]"** %70, align 8 | |
%72 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %5, i64 0, i64 3, i32 0 | |
store void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)* bitcast (void ({ i64, %tydesc*, i8*, i8*, i8 }*, i64*, %"struct.std::fmt::Formatter[#1]"*)* @"_ZN3fmt12Default$uint3fmt21h7ed8518a18cff18aVLa08v0.9.preE" to void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)*), void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)** %72, align 8 | |
%73 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %5, i64 0, i64 3, i32 1 | |
%74 = bitcast i64* %__arg to %"enum.std::util::Void[#1]"* | |
store %"enum.std::util::Void[#1]"* %74, %"enum.std::util::Void[#1]"** %73, align 8 | |
%__self31.sroa.0.0.idx = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args29, i64 0, i32 0, i32 0 | |
store %"enum.std::fmt::rt::Piece[#1]"* bitcast ({ { i8, { i8*, i64 }, [56 x i8] }, { i8, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } }, [0 x i8] }, { i8, { i8*, i64 }, [56 x i8] }, { i8, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } }, [0 x i8] }, { i8, { i8*, i64 }, [56 x i8] }, { i8, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } }, [0 x i8] }, { i8, { i8*, i64 }, [56 x i8] }, { i8, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } }, [0 x i8] } }* @_ZN2rt4task12begin_unwind15__STATIC_FMTSTR19h4577d3568ce19534ak8v0.9.preE to %"enum.std::fmt::rt::Piece[#1]"*), %"enum.std::fmt::rt::Piece[#1]"** %__self31.sroa.0.0.idx, align 8 | |
%__self31.sroa.2.0.idx29 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args29, i64 0, i32 0, i32 1 | |
store i64 8, i64* %__self31.sroa.2.0.idx29, align 8 | |
%__adjust.sroa.0.0.idx.i15 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args29, i64 0, i32 1, i32 0 | |
store %"struct.std::fmt::Argument[#1]"* %.sub3, %"struct.std::fmt::Argument[#1]"** %__adjust.sroa.0.0.idx.i15, align 8 | |
%__adjust.sroa.2.0.idx1.i16 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args29, i64 0, i32 1, i32 1 | |
store i64 4, i64* %__adjust.sroa.2.0.idx1.i16, align 8 | |
invoke void @_ZN2rt4util12dumb_println18h233bfbbcb2c2c68aB8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, %"struct.std::fmt::Arguments[#1]"* %__args29) | |
to label %"normal return38" unwind label %unwind | |
"normal return38": ; preds = %"normal return37" | |
%75 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %50, i64 0, i32 4 | |
%76 = getelementptr inbounds %"struct.std::rt::task::Unwinder[#1]"* %75, i64 0, i32 0 | |
%77 = load i8* %76, align 1, !range !0 | |
%78 = icmp eq i8 %77, 0 | |
br i1 %78, label %next50, label %"normal return44" | |
"normal return44": ; preds = %"normal return38" | |
%__self42.sroa.0.0.idx = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args40, i64 0, i32 0, i32 0 | |
store %"enum.std::fmt::rt::Piece[#1]"* bitcast ({ { i8, { i8*, i64 }, [56 x i8] } }* @_ZN2rt4task12begin_unwind15__STATIC_FMTSTR19h203afc54b9333977ar8v0.9.preE to %"enum.std::fmt::rt::Piece[#1]"*), %"enum.std::fmt::rt::Piece[#1]"** %__self42.sroa.0.0.idx, align 8 | |
%__self42.sroa.2.0.idx28 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args40, i64 0, i32 0, i32 1 | |
store i64 1, i64* %__self42.sroa.2.0.idx28, align 8 | |
%__adjust.sroa.0.0.idx.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args40, i64 0, i32 1, i32 0 | |
store %"struct.std::fmt::Argument[#1]"* %.sub4, %"struct.std::fmt::Argument[#1]"** %__adjust.sroa.0.0.idx.i, align 8 | |
%__adjust.sroa.2.0.idx1.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args40, i64 0, i32 1, i32 1 | |
store i64 0, i64* %__adjust.sroa.2.0.idx1.i, align 8 | |
%79 = invoke { i64, i64, [0 x i8] }* @_ZN3fmt6format19h532a2575ed3ec0b2aH8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, %"struct.std::fmt::Arguments[#1]"* %__args40) | |
to label %"normal return45" unwind label %unwind | |
"normal return45": ; preds = %"normal return44" | |
%80 = getelementptr inbounds { i64, i64, [0 x i8] }* %79, i64 0, i32 2, i64 0 | |
%81 = getelementptr inbounds { i64, i64, [0 x i8] }* %79, i64 0, i32 0 | |
%82 = load i64* %81, align 8 | |
%83 = getelementptr inbounds { i8*, i64 }* %__adjust46, i64 0, i32 0 | |
store i8* %80, i8** %83, align 8 | |
%84 = getelementptr inbounds { i8*, i64 }* %__adjust46, i64 0, i32 1 | |
store i64 %82, i64* %84, align 8 | |
%85 = bitcast { i8*, i64 }* %__adjust46 to %str_slice* | |
invoke void @_ZN2rt4util5abort19hcb77c39c2971b825a48v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, %str_slice* %85) | |
to label %"normal return47" unwind label %unwind48 | |
"normal return47": ; preds = %"normal return45" | |
unreachable | |
unwind48: ; preds = %"normal return45" | |
%86 = landingpad { i8*, i32 } personality i32 ()* @upcall_rust_personality | |
cleanup | |
%.fca.0.extract83 = extractvalue { i8*, i32 } %86, 0 | |
%.fca.1.extract85 = extractvalue { i8*, i32 } %86, 1 | |
%87 = icmp eq { i64, i64, [0 x i8] }* %79, null | |
br i1 %87, label %cleanup, label %cond.i.i | |
cond.i.i: ; preds = %unwind48 | |
%88 = bitcast { i64, i64, [0 x i8] }* %79 to i8* | |
call void @_ZN2rt11global_heap13exchange_free19hc05c15244ca85199ak8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, i8* %88) | |
br label %cleanup | |
next50: ; preds = %"normal return38" | |
%89 = bitcast %"struct.std::rt::task::Unwinder[#1]"* %75 to { i64, %tydesc*, i8*, i8*, i8 }* | |
%90 = bitcast { %tydesc*, { i64, %tydesc*, i8*, i8*, i8 }* }* %msg to i8* | |
%91 = bitcast { %tydesc*, { i64, %tydesc*, i8*, i8*, i8 }* }* %__self51 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %91, i8* %90, i64 16, i32 8, i1 false) | |
call void @llvm.memset.p0i8.i64(i8* %90, i8 0, i64 16, i32 8, i1 false) | |
invoke void @_ZN2rt4task8Unwinder12begin_unwind21hd2fb6d27ccd4ac48Hiae8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* %89, { %tydesc*, { i64, %tydesc*, i8*, i8*, i8 }* }* %__self51) | |
to label %"normal return52" unwind label %unwind | |
"normal return52": ; preds = %next50 | |
unreachable | |
} | |
declare %"enum.std::libc::types::common::c95::c_void[#1]"* @_ZN2rt11global_heap10malloc_raw18hc8dd83269b07a90aj8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }*, i64) unnamed_addr | |
; Function Attrs: nounwind readnone uwtable | |
define internal %"struct.std::unstable::intrinsics::TypeId[#1]" @"_ZN3any5Any$T11get_type_id19h3228ab16337da05jaZ4v0.0E"({ i64, %tydesc*, i8*, i8*, i8 }* nocapture readnone) unnamed_addr #5 { | |
"function top level": | |
ret %"struct.std::unstable::intrinsics::TypeId[#1]" { i64 -7139287502465421498 } | |
} | |
; Function Attrs: nounwind readnone uwtable | |
define internal %"enum.std::util::Void[#1]"* @"_ZN3any5Any$T11as_void_ptr21h594198516f8322205ja54v0.0E"({ i64, %tydesc*, i8*, i8*, i8 }* readnone) unnamed_addr #5 { | |
"function top level": | |
%1 = bitcast { i64, %tydesc*, i8*, i8*, i8 }* %0 to %"enum.std::util::Void[#1]"* | |
ret %"enum.std::util::Void[#1]"* %1 | |
} | |
; Function Attrs: nounwind readnone uwtable | |
define internal %"enum.std::util::Void[#1]"* @"_ZN3any5Any$T15as_mut_void_ptr20hfb75be5da2ed8c65ja64v0.0E"({ i64, %tydesc*, i8*, i8*, i8 }* readnone) unnamed_addr #5 { | |
"function top level": | |
%1 = bitcast { i64, %tydesc*, i8*, i8*, i8 }* %0 to %"enum.std::util::Void[#1]"* | |
ret %"enum.std::util::Void[#1]"* %1 | |
} | |
; Function Attrs: nounwind readnone | |
define internal void @_ZN3u329glue_take19h3b3b46959e8fcac5acE({}* nocapture, i32* nocapture) unnamed_addr #2 { | |
"function top level": | |
ret void | |
} | |
define internal void @"_ZN8_$UP$u329glue_drop17hfae7fdc29923e2agE"({}* nocapture readnone, i32** nocapture readonly) unnamed_addr { | |
"function top level": | |
%2 = load i32** %1, align 8 | |
%3 = icmp eq i32* %2, null | |
br i1 %3, label %"_ZN8_$UP$u329glue_free17hfae7fdc29923e2ahE.exit", label %cond.i | |
cond.i: ; preds = %"function top level" | |
%4 = bitcast i32* %2 to i8* | |
tail call void @_ZN2rt11global_heap13exchange_free19hc05c15244ca85199ak8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, i8* %4) | |
br label %"_ZN8_$UP$u329glue_free17hfae7fdc29923e2ahE.exit" | |
"_ZN8_$UP$u329glue_free17hfae7fdc29923e2ahE.exit": ; preds = %"function top level", %cond.i | |
ret void | |
} | |
define internal void @"_ZN8_$UP$u329glue_free17hfae7fdc29923e2ahE"({}* nocapture readnone, i32** nocapture readonly) unnamed_addr { | |
"function top level": | |
%2 = load i32** %1, align 8 | |
%3 = icmp eq i32* %2, null | |
br i1 %3, label %next, label %cond | |
next: ; preds = %"function top level", %cond | |
ret void | |
cond: ; preds = %"function top level" | |
%4 = bitcast i32* %2 to i8* | |
tail call void @_ZN2rt11global_heap13exchange_free19hc05c15244ca85199ak8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, i8* %4) | |
br label %next | |
} | |
declare void @_ZN2rt11global_heap13exchange_free19hc05c15244ca85199ak8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }*, i8*) unnamed_addr | |
define internal void @"_ZN26_$UP$$BP$$x27static$x20str10glue_visit19h4fa2efc66d6bb149akE"({}* nocapture readnone, %str_slice** nocapture readonly) unnamed_addr { | |
"function top level": | |
%2 = getelementptr inbounds %str_slice** %1, i64 1 | |
%3 = load %str_slice** %2, align 8 | |
%4 = bitcast %str_slice* %3 to { i64, %tydesc*, i8*, i8*, i8 }* | |
%5 = load %str_slice** %1, align 8 | |
%6 = getelementptr inbounds %str_slice* %5, i64 11, i32 0 | |
%7 = load i8** %6, align 8 | |
%8 = bitcast i8* %7 to i8 ({ i64, %tydesc*, i8*, i8*, i8 }*, i64, %"struct.std::unstable::intrinsics::TyDesc[#1]"*)* | |
%9 = tail call i8 %8({ i64, %tydesc*, i8*, i8*, i8 }* %4, i64 1, %"struct.std::unstable::intrinsics::TyDesc[#1]"* bitcast (%tydesc* @"_ZN22_$BP$$x27static$x20str6tydesc19h8dffbda03facde61afE" to %"struct.std::unstable::intrinsics::TyDesc[#1]"*)) | |
ret void | |
} | |
; Function Attrs: nounwind readnone | |
define internal void @_ZN3u329glue_drop19h3b3b46959e8fcac5aiE({}* nocapture, i32* nocapture) unnamed_addr #2 { | |
"function top level": | |
ret void | |
} | |
; Function Attrs: nounwind readnone | |
define internal void @_ZN3u329glue_free19h3b3b46959e8fcac5ajE({}* nocapture, i32* nocapture) unnamed_addr #2 { | |
"function top level": | |
ret void | |
} | |
define internal void @"_ZN22_$BP$$x27static$x20str10glue_visit19h8dffbda03facde61akE"({}* nocapture readnone, %str_slice* nocapture readonly) unnamed_addr { | |
"function top level": | |
%2 = getelementptr inbounds %str_slice* %1, i64 0, i32 1 | |
%3 = bitcast i64* %2 to i8** | |
%4 = load i8** %3, align 8 | |
%5 = bitcast i8* %4 to { i64, %tydesc*, i8*, i8*, i8 }* | |
%6 = bitcast %str_slice* %1 to [1 x i8*]** | |
%7 = load [1 x i8*]** %6, align 8 | |
%8 = getelementptr inbounds [1 x i8*]* %7, i64 0, i64 19 | |
%9 = load i8** %8, align 8 | |
%10 = bitcast i8* %9 to i8 ({ i64, %tydesc*, i8*, i8*, i8 }*)* | |
%11 = tail call i8 %10({ i64, %tydesc*, i8*, i8*, i8 }* %5) | |
ret void | |
} | |
declare i8 @_ZN2rt21in_green_task_context18hdbdeab4941a112aat8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }*) unnamed_addr | |
declare void @"_ZN3fmt22Default$__extensions__3fmt20h197151a9adb3cf2D0aP8v0.9.preE"({ i64, %tydesc*, i8*, i8*, i8 }*, %str_slice*, %"struct.std::fmt::Formatter[#1]"*) unnamed_addr | |
declare void @"_ZN3fmt12Default$uint3fmt21h7ed8518a18cff18aVLa08v0.9.preE"({ i64, %tydesc*, i8*, i8*, i8 }*, i64*, %"struct.std::fmt::Formatter[#1]"*) unnamed_addr | |
declare void @_ZN2rt4util12dumb_println18h233bfbbcb2c2c68aB8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }*, %"struct.std::fmt::Arguments[#1]"*) unnamed_addr | |
; Function Attrs: noreturn | |
declare void @_ZN2rt4util5abort19hcb77c39c2971b825a48v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }*, %str_slice*) unnamed_addr #6 | |
declare { i64, i64, [0 x i8] }* @_ZN3fmt6format19h532a2575ed3ec0b2aH8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }*, %"struct.std::fmt::Arguments[#1]"*) unnamed_addr | |
define internal void @"_ZN8_$UP$str9glue_drop19h29b89872efc46afea4E"({}* nocapture readnone, { i64, i64, [0 x i8] }** nocapture readonly) unnamed_addr { | |
"function top level": | |
%2 = load { i64, i64, [0 x i8] }** %1, align 8 | |
%3 = icmp eq { i64, i64, [0 x i8] }* %2, null | |
br i1 %3, label %"_ZN8_$UP$str9glue_free19h29b89872efc46afea5E.exit", label %cond.i | |
cond.i: ; preds = %"function top level" | |
%4 = bitcast { i64, i64, [0 x i8] }* %2 to i8* | |
tail call void @_ZN2rt11global_heap13exchange_free19hc05c15244ca85199ak8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, i8* %4) | |
br label %"_ZN8_$UP$str9glue_free19h29b89872efc46afea5E.exit" | |
"_ZN8_$UP$str9glue_free19h29b89872efc46afea5E.exit": ; preds = %"function top level", %cond.i | |
ret void | |
} | |
define internal void @"_ZN8_$UP$str9glue_free19h29b89872efc46afea5E"({}* nocapture readnone, { i64, i64, [0 x i8] }** nocapture readonly) unnamed_addr { | |
"function top level": | |
%2 = load { i64, i64, [0 x i8] }** %1, align 8 | |
%3 = icmp eq { i64, i64, [0 x i8] }* %2, null | |
br i1 %3, label %next, label %cond | |
next: ; preds = %"function top level", %cond | |
ret void | |
cond: ; preds = %"function top level" | |
%4 = bitcast { i64, i64, [0 x i8] }* %2 to i8* | |
tail call void @_ZN2rt11global_heap13exchange_free19hc05c15244ca85199ak8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, i8* %4) | |
br label %next | |
} | |
; Function Attrs: noreturn | |
declare void @_ZN2rt4task8Unwinder12begin_unwind21hd2fb6d27ccd4ac48Hiae8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }*, { %tydesc*, { i64, %tydesc*, i8*, i8*, i8 }* }*) unnamed_addr #6 | |
; Function Attrs: noreturn uwtable | |
define internal fastcc void @_ZN2rt4task12begin_unwind19hb69f3b6242a253fda74v0.0E({ i64, i64, [0 x i8] }*, %str_slice*, i64) unnamed_addr #4 { | |
"function top level": | |
%3 = alloca [0 x %"struct.std::fmt::Argument[#1]"], align 8 | |
%__args.i.i = alloca %"struct.std::fmt::Arguments[#1]", align 8 | |
%__adjust2.i.i = alloca { i8*, i64 }, align 8 | |
%__arg1 = alloca i64, align 8 | |
%msg = alloca { %tydesc*, { i64, %tydesc*, i8*, i8*, i8 }* }, align 8 | |
%msg_s = alloca %str_slice, align 8 | |
%__args = alloca %"struct.std::fmt::Arguments[#1]", align 8 | |
%4 = alloca [3 x %"struct.std::fmt::Argument[#1]"], align 8 | |
%n = alloca %str_slice, align 8 | |
%__args34 = alloca %"struct.std::fmt::Arguments[#1]", align 8 | |
%5 = alloca [4 x %"struct.std::fmt::Argument[#1]"], align 8 | |
%__args45 = alloca %"struct.std::fmt::Arguments[#1]", align 8 | |
%__adjust51 = alloca { i8*, i64 }, align 8 | |
%__self56 = alloca { %tydesc*, { i64, %tydesc*, i8*, i8*, i8 }* }, align 8 | |
%.sub2 = getelementptr inbounds [0 x %"struct.std::fmt::Argument[#1]"]* %3, i64 0, i64 0 | |
%.sub1 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %5, i64 0, i64 0 | |
%.sub = getelementptr inbounds [3 x %"struct.std::fmt::Argument[#1]"]* %4, i64 0, i64 0 | |
store i64 %2, i64* %__arg1, align 8 | |
%6 = getelementptr inbounds { %tydesc*, { i64, %tydesc*, i8*, i8*, i8 }* }* %msg, i64 0, i32 1 | |
%7 = invoke %"enum.std::libc::types::common::c95::c_void[#1]"* @_ZN2rt11global_heap10malloc_raw18hc8dd83269b07a90aj8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, i64 8) | |
to label %"normal return8" unwind label %cleanup | |
cleanup: ; preds = %"function top level" | |
%8 = landingpad { i8*, i32 } personality i32 ()* @upcall_rust_personality | |
cleanup | |
%.fca.0.extract89 = extractvalue { i8*, i32 } %8, 0 | |
%.fca.1.extract = extractvalue { i8*, i32 } %8, 1 | |
%9 = icmp eq { i64, i64, [0 x i8] }* %0, null | |
br i1 %9, label %"_ZN8_$UP$str9glue_drop19h29b89872efc46afea4E.exit", label %cond.i.i | |
cond.i.i: ; preds = %cleanup | |
%10 = bitcast { i64, i64, [0 x i8] }* %0 to i8* | |
call void @_ZN2rt11global_heap13exchange_free19hc05c15244ca85199ak8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, i8* %10) | |
br label %"_ZN8_$UP$str9glue_drop19h29b89872efc46afea4E.exit" | |
"_ZN8_$UP$str9glue_drop19h29b89872efc46afea4E.exit": ; preds = %cleanup4, %cond.i, %cleanup, %cond.i.i | |
%.sroa.4.046 = phi i32 [ %.fca.1.extract, %cleanup ], [ %.fca.1.extract, %cond.i.i ], [ %.sroa.4.1, %cond.i ], [ %.sroa.4.1, %cleanup4 ] | |
%.sroa.0101.045 = phi i8* [ %.fca.0.extract89, %cleanup ], [ %.fca.0.extract89, %cond.i.i ], [ %.sroa.0101.1, %cond.i ], [ %.sroa.0101.1, %cleanup4 ] | |
%.fca.0.insert91 = insertvalue { i8*, i32 } undef, i8* %.sroa.0101.045, 0 | |
%.fca.1.insert = insertvalue { i8*, i32 } %.fca.0.insert91, i32 %.sroa.4.046, 1 | |
resume { i8*, i32 } %.fca.1.insert | |
unwind3: ; preds = %cond.i.i.i.i, %then.i.i, %next55, %"normal return49", %"normal return42", %"normal return24", %join16 | |
%11 = landingpad { i8*, i32 } personality i32 ()* @upcall_rust_personality | |
cleanup | |
br label %unwind3.body | |
unwind3.body: ; preds = %unwind.i.i, %cond.i.i.i.i, %unwind3 | |
%eh.lpad-body = phi { i8*, i32 } [ %11, %unwind3 ], [ %52, %cond.i.i.i.i ], [ %52, %unwind.i.i ] | |
%.fca.0.extract94 = extractvalue { i8*, i32 } %eh.lpad-body, 0 | |
%.fca.1.extract96 = extractvalue { i8*, i32 } %eh.lpad-body, 1 | |
br label %cleanup4 | |
cleanup4: ; preds = %cond.i.i13, %unwind53, %unwind3.body | |
%.sroa.0101.1 = phi i8* [ %.fca.0.extract94, %unwind3.body ], [ %.fca.0.extract98, %unwind53 ], [ %.fca.0.extract98, %cond.i.i13 ] | |
%.sroa.4.1 = phi i32 [ %.fca.1.extract96, %unwind3.body ], [ %.fca.1.extract100, %unwind53 ], [ %.fca.1.extract100, %cond.i.i13 ] | |
%12 = load { i64, %tydesc*, i8*, i8*, i8 }** %6, align 8 | |
%13 = icmp eq { i64, %tydesc*, i8*, i8*, i8 }* %12, null | |
br i1 %13, label %"_ZN8_$UP$str9glue_drop19h29b89872efc46afea4E.exit", label %cond.i | |
cond.i: ; preds = %cleanup4 | |
%14 = load %tydesc** %21, align 8 | |
%15 = bitcast %tydesc* %14 to %tydesc** | |
%16 = load %tydesc** %15, align 8 | |
%17 = bitcast { i64, %tydesc*, i8*, i8*, i8 }** %6 to i8* | |
%18 = getelementptr inbounds %tydesc* %16, i64 0, i32 4 | |
%19 = load void ({}*, i8*)** %18, align 8 | |
call void %19({}* null, i8* %17) | |
br label %"_ZN8_$UP$str9glue_drop19h29b89872efc46afea4E.exit" | |
"normal return8": ; preds = %"function top level" | |
%20 = bitcast %"enum.std::libc::types::common::c95::c_void[#1]"* %7 to { i64, i64, [0 x i8] }** | |
store { i64, i64, [0 x i8] }* %0, { i64, i64, [0 x i8] }** %20, align 8 | |
%.c = bitcast %"enum.std::libc::types::common::c95::c_void[#1]"* %7 to { i64, %tydesc*, i8*, i8*, i8 }* | |
store { i64, %tydesc*, i8*, i8*, i8 }* %.c, { i64, %tydesc*, i8*, i8*, i8 }** %6, align 8 | |
%21 = getelementptr inbounds { %tydesc*, { i64, %tydesc*, i8*, i8*, i8 }* }* %msg, i64 0, i32 0 | |
store %tydesc* bitcast ({ %tydesc*, %"struct.std::unstable::intrinsics::TypeId[#1]" ({ i64, %tydesc*, i8*, i8*, i8 }*)*, %"enum.std::util::Void[#1]"* ({ i64, %tydesc*, i8*, i8*, i8 }*)*, %"enum.std::util::Void[#1]"* ({ i64, %tydesc*, i8*, i8*, i8 }*)* }* @vtable1744 to %tydesc*), %tydesc** %21, align 8 | |
%22 = icmp eq %"enum.std::libc::types::common::c95::c_void[#1]"* %7, null | |
br i1 %22, label %match_else13, label %match_case14 | |
match_else13: ; preds = %"normal return8" | |
%23 = getelementptr inbounds %str_slice* %msg_s, i64 0, i32 0 | |
store i8* getelementptr inbounds ([5 x i8]* @str1592, i64 0, i64 0), i8** %23, align 8 | |
%24 = getelementptr inbounds %str_slice* %msg_s, i64 0, i32 1 | |
store i64 4, i64* %24, align 8 | |
br label %join16 | |
match_case14: ; preds = %"normal return8" | |
%25 = load { i64, i64, [0 x i8] }** %20, align 8 | |
%26 = getelementptr inbounds { i64, i64, [0 x i8] }* %25, i64 0, i32 2, i64 0 | |
%27 = getelementptr inbounds { i64, i64, [0 x i8] }* %25, i64 0, i32 0 | |
%28 = load i64* %27, align 8 | |
%s.sroa.0.0.idx.i = getelementptr inbounds %str_slice* %msg_s, i64 0, i32 0 | |
store i8* %26, i8** %s.sroa.0.0.idx.i, align 8 | |
%s.sroa.2.0.idx2.i = getelementptr inbounds %str_slice* %msg_s, i64 0, i32 1 | |
store i64 %28, i64* %s.sroa.2.0.idx2.i, align 8 | |
br label %join16 | |
join16: ; preds = %match_case14, %match_else13 | |
%29 = invoke i8 @_ZN2rt21in_green_task_context18hdbdeab4941a112aat8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef) | |
to label %"normal return17" unwind label %unwind3 | |
"normal return17": ; preds = %join16 | |
%30 = icmp eq i8 %29, 0 | |
br i1 %30, label %"normal return24", label %next | |
"normal return24": ; preds = %"normal return17" | |
%31 = getelementptr inbounds [3 x %"struct.std::fmt::Argument[#1]"]* %4, i64 0, i64 0, i32 0 | |
store void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)* bitcast (void ({ i64, %tydesc*, i8*, i8*, i8 }*, %str_slice*, %"struct.std::fmt::Formatter[#1]"*)* @"_ZN3fmt22Default$__extensions__3fmt20h197151a9adb3cf2D0aP8v0.9.preE" to void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)*), void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)** %31, align 8 | |
%32 = getelementptr inbounds [3 x %"struct.std::fmt::Argument[#1]"]* %4, i64 0, i64 0, i32 1 | |
%33 = bitcast %str_slice* %msg_s to %"enum.std::util::Void[#1]"* | |
store %"enum.std::util::Void[#1]"* %33, %"enum.std::util::Void[#1]"** %32, align 8 | |
%34 = getelementptr inbounds [3 x %"struct.std::fmt::Argument[#1]"]* %4, i64 0, i64 1, i32 0 | |
store void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)* bitcast (void ({ i64, %tydesc*, i8*, i8*, i8 }*, %str_slice*, %"struct.std::fmt::Formatter[#1]"*)* @"_ZN3fmt22Default$__extensions__3fmt20h197151a9adb3cf2D0aP8v0.9.preE" to void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)*), void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)** %34, align 8 | |
%35 = getelementptr inbounds [3 x %"struct.std::fmt::Argument[#1]"]* %4, i64 0, i64 1, i32 1 | |
%36 = bitcast %str_slice* %1 to %"enum.std::util::Void[#1]"* | |
store %"enum.std::util::Void[#1]"* %36, %"enum.std::util::Void[#1]"** %35, align 8 | |
%37 = getelementptr inbounds [3 x %"struct.std::fmt::Argument[#1]"]* %4, i64 0, i64 2, i32 0 | |
store void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)* bitcast (void ({ i64, %tydesc*, i8*, i8*, i8 }*, i64*, %"struct.std::fmt::Formatter[#1]"*)* @"_ZN3fmt12Default$uint3fmt21h7ed8518a18cff18aVLa08v0.9.preE" to void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)*), void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)** %37, align 8 | |
%38 = getelementptr inbounds [3 x %"struct.std::fmt::Argument[#1]"]* %4, i64 0, i64 2, i32 1 | |
%39 = bitcast i64* %__arg1 to %"enum.std::util::Void[#1]"* | |
store %"enum.std::util::Void[#1]"* %39, %"enum.std::util::Void[#1]"** %38, align 8 | |
%__self19.sroa.0.0.idx = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args, i64 0, i32 0, i32 0 | |
store %"enum.std::fmt::rt::Piece[#1]"* bitcast ({ { i8, { i8*, i64 }, [56 x i8] }, { i8, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } }, [0 x i8] }, { i8, { i8*, i64 }, [56 x i8] }, { i8, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } }, [0 x i8] }, { i8, { i8*, i64 }, [56 x i8] }, { i8, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } }, [0 x i8] } }* @_ZN2rt4task12begin_unwind15__STATIC_FMTSTR17hd5f7ac9a7a11afa88v0.9.preE to %"enum.std::fmt::rt::Piece[#1]"*), %"enum.std::fmt::rt::Piece[#1]"** %__self19.sroa.0.0.idx, align 8 | |
%__self19.sroa.2.0.idx38 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args, i64 0, i32 0, i32 1 | |
store i64 6, i64* %__self19.sroa.2.0.idx38, align 8 | |
%__adjust.sroa.0.0.idx.i21 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args, i64 0, i32 1, i32 0 | |
store %"struct.std::fmt::Argument[#1]"* %.sub, %"struct.std::fmt::Argument[#1]"** %__adjust.sroa.0.0.idx.i21, align 8 | |
%__adjust.sroa.2.0.idx1.i22 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args, i64 0, i32 1, i32 1 | |
store i64 3, i64* %__adjust.sroa.2.0.idx1.i22, align 8 | |
invoke void @_ZN2rt4util12dumb_println18h233bfbbcb2c2c68aB8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, %"struct.std::fmt::Arguments[#1]"* %__args) | |
to label %"normal return25" unwind label %unwind3 | |
"normal return25": ; preds = %"normal return24" | |
call void @llvm.trap() #0 | |
unreachable | |
next: ; preds = %"normal return17" | |
%40 = bitcast [0 x %"struct.std::fmt::Argument[#1]"]* %3 to i8* | |
call void @llvm.lifetime.start(i64 0, i8* %40) | |
%41 = bitcast %"struct.std::fmt::Arguments[#1]"* %__args.i.i to i8* | |
call void @llvm.lifetime.start(i64 32, i8* %41) | |
%42 = bitcast { i8*, i64 }* %__adjust2.i.i to i8* | |
call void @llvm.lifetime.start(i64 16, i8* %42) | |
%43 = load %"enum.std::libc::types::common::c95::c_void[#1]"** @_ZN2rt9local_ptr8compiled10RT_TLS_PTR19h205cf0859f417374aP8v0.9.preE, align 8 | |
%44 = icmp eq %"enum.std::libc::types::common::c95::c_void[#1]"* %43, null | |
br i1 %44, label %then.i.i, label %"normal return27" | |
then.i.i: ; preds = %next | |
%__self.sroa.0.0.idx.i.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args.i.i, i64 0, i32 0, i32 0 | |
store %"enum.std::fmt::rt::Piece[#1]"* bitcast ({ { i8, { i8*, i64 }, [56 x i8] } }* @_ZN2rt9local_ptr8compiled13unsafe_borrow15__STATIC_FMTSTR19h203afc54b9333977a58v0.9.preE to %"enum.std::fmt::rt::Piece[#1]"*), %"enum.std::fmt::rt::Piece[#1]"** %__self.sroa.0.0.idx.i.i, align 8 | |
%__self.sroa.2.0.idx2.i.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args.i.i, i64 0, i32 0, i32 1 | |
store i64 1, i64* %__self.sroa.2.0.idx2.i.i, align 8 | |
%__adjust.sroa.0.0.idx.i.i.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args.i.i, i64 0, i32 1, i32 0 | |
store %"struct.std::fmt::Argument[#1]"* %.sub2, %"struct.std::fmt::Argument[#1]"** %__adjust.sroa.0.0.idx.i.i.i, align 8 | |
%__adjust.sroa.2.0.idx1.i.i.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args.i.i, i64 0, i32 1, i32 1 | |
store i64 0, i64* %__adjust.sroa.2.0.idx1.i.i.i, align 8 | |
%45 = invoke { i64, i64, [0 x i8] }* @_ZN3fmt6format19h532a2575ed3ec0b2aH8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, %"struct.std::fmt::Arguments[#1]"* %__args.i.i) | |
to label %.noexc26 unwind label %unwind3 | |
.noexc26: ; preds = %then.i.i | |
%46 = getelementptr inbounds { i64, i64, [0 x i8] }* %45, i64 0, i32 2, i64 0 | |
%47 = getelementptr inbounds { i64, i64, [0 x i8] }* %45, i64 0, i32 0 | |
%48 = load i64* %47, align 8 | |
%49 = getelementptr inbounds { i8*, i64 }* %__adjust2.i.i, i64 0, i32 0 | |
store i8* %46, i8** %49, align 8 | |
%50 = getelementptr inbounds { i8*, i64 }* %__adjust2.i.i, i64 0, i32 1 | |
store i64 %48, i64* %50, align 8 | |
%51 = bitcast { i8*, i64 }* %__adjust2.i.i to %str_slice* | |
invoke void @_ZN2rt4util5abort19hcb77c39c2971b825a48v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, %str_slice* %51) | |
to label %"normal return.i.i" unwind label %unwind.i.i | |
"normal return.i.i": ; preds = %.noexc26 | |
unreachable | |
unwind.i.i: ; preds = %.noexc26 | |
%52 = landingpad { i8*, i32 } personality i32 ()* @upcall_rust_personality | |
cleanup | |
%53 = icmp eq { i64, i64, [0 x i8] }* %45, null | |
br i1 %53, label %unwind3.body, label %cond.i.i.i.i | |
cond.i.i.i.i: ; preds = %unwind.i.i | |
%54 = bitcast { i64, i64, [0 x i8] }* %45 to i8* | |
invoke void @_ZN2rt11global_heap13exchange_free19hc05c15244ca85199ak8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, i8* %54) | |
to label %unwind3.body unwind label %unwind3 | |
"normal return27": ; preds = %next | |
%55 = bitcast %"enum.std::libc::types::common::c95::c_void[#1]"* %43 to %"struct.std::rt::task::Task[#1]"* | |
call void @llvm.lifetime.end(i64 0, i8* %40) | |
call void @llvm.lifetime.end(i64 32, i8* %41) | |
call void @llvm.lifetime.end(i64 16, i8* %42) | |
%56 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %55, i64 0, i32 7, i32 0 | |
%57 = load i8* %56, align 1, !range !0 | |
%cond.i23 = icmp eq i8 %57, 1 | |
br i1 %cond.i23, label %match_case.i19, label %match_else.i | |
match_case.i19: ; preds = %"normal return27" | |
%58 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %55, i64 0, i32 7, i32 2 | |
%59 = bitcast [3 x i64]* %58 to i8* | |
%60 = load i8* %59, align 1, !range !0 | |
%cond.i51 = icmp eq i8 %60, 0 | |
%61 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %55, i64 0, i32 7, i32 2, i64 1 | |
br i1 %cond.i51, label %match_case.i53, label %match_else.i52 | |
match_else.i52: ; preds = %match_case.i19 | |
%s2.i.sroa.0.0.cast = bitcast i64* %61 to i8** | |
%s2.i.sroa.0.0.copyload = load i8** %s2.i.sroa.0.0.cast, align 8 | |
%62 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %55, i64 0, i32 7, i32 2, i64 2 | |
br label %match_case.i | |
match_case.i53: ; preds = %match_case.i19 | |
%63 = bitcast i64* %61 to { i64, i64, [0 x i8] }** | |
%64 = load { i64, i64, [0 x i8] }** %63, align 8 | |
%65 = getelementptr inbounds { i64, i64, [0 x i8] }* %64, i64 0, i32 2, i64 0 | |
%66 = getelementptr inbounds { i64, i64, [0 x i8] }* %64, i64 0, i32 0 | |
br label %match_case.i | |
match_else.i: ; preds = %"normal return27" | |
%.sroa.0.0.idx = getelementptr inbounds %str_slice* %n, i64 0, i32 0 | |
store i8* getelementptr inbounds ([10 x i8]* @str1680, i64 0, i64 0), i8** %.sroa.0.0.idx, align 8 | |
%.sroa.2.0.idx30 = getelementptr inbounds %str_slice* %n, i64 0, i32 1 | |
store i64 9, i64* %.sroa.2.0.idx30, align 8 | |
br label %"normal return42" | |
match_case.i: ; preds = %match_else.i52, %match_case.i53 | |
%.sroa.6.0.copyload76.in = phi i64* [ %62, %match_else.i52 ], [ %66, %match_case.i53 ] | |
%67 = phi i8* [ %s2.i.sroa.0.0.copyload, %match_else.i52 ], [ %65, %match_case.i53 ] | |
%.sroa.6.0.copyload76 = load i64* %.sroa.6.0.copyload76.in, align 8 | |
%.sroa.0.0.idx56 = getelementptr inbounds %str_slice* %n, i64 0, i32 0 | |
store i8* %67, i8** %.sroa.0.0.idx56, align 8 | |
%.sroa.6.0.idx61 = getelementptr inbounds %str_slice* %n, i64 0, i32 1 | |
store i64 %.sroa.6.0.copyload76, i64* %.sroa.6.0.idx61, align 8 | |
br label %"normal return42" | |
"normal return42": ; preds = %match_else.i, %match_case.i | |
%68 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %5, i64 0, i64 0, i32 0 | |
store void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)* bitcast (void ({ i64, %tydesc*, i8*, i8*, i8 }*, %str_slice*, %"struct.std::fmt::Formatter[#1]"*)* @"_ZN3fmt22Default$__extensions__3fmt20h197151a9adb3cf2D0aP8v0.9.preE" to void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)*), void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)** %68, align 8 | |
%69 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %5, i64 0, i64 0, i32 1 | |
%70 = bitcast %str_slice* %n to %"enum.std::util::Void[#1]"* | |
store %"enum.std::util::Void[#1]"* %70, %"enum.std::util::Void[#1]"** %69, align 8 | |
%71 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %5, i64 0, i64 1, i32 0 | |
store void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)* bitcast (void ({ i64, %tydesc*, i8*, i8*, i8 }*, %str_slice*, %"struct.std::fmt::Formatter[#1]"*)* @"_ZN3fmt22Default$__extensions__3fmt20h197151a9adb3cf2D0aP8v0.9.preE" to void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)*), void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)** %71, align 8 | |
%72 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %5, i64 0, i64 1, i32 1 | |
%73 = bitcast %str_slice* %msg_s to %"enum.std::util::Void[#1]"* | |
store %"enum.std::util::Void[#1]"* %73, %"enum.std::util::Void[#1]"** %72, align 8 | |
%74 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %5, i64 0, i64 2, i32 0 | |
store void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)* bitcast (void ({ i64, %tydesc*, i8*, i8*, i8 }*, %str_slice*, %"struct.std::fmt::Formatter[#1]"*)* @"_ZN3fmt22Default$__extensions__3fmt20h197151a9adb3cf2D0aP8v0.9.preE" to void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)*), void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)** %74, align 8 | |
%75 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %5, i64 0, i64 2, i32 1 | |
%76 = bitcast %str_slice* %1 to %"enum.std::util::Void[#1]"* | |
store %"enum.std::util::Void[#1]"* %76, %"enum.std::util::Void[#1]"** %75, align 8 | |
%77 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %5, i64 0, i64 3, i32 0 | |
store void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)* bitcast (void ({ i64, %tydesc*, i8*, i8*, i8 }*, i64*, %"struct.std::fmt::Formatter[#1]"*)* @"_ZN3fmt12Default$uint3fmt21h7ed8518a18cff18aVLa08v0.9.preE" to void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)*), void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"enum.std::util::Void[#1]"*, %"struct.std::fmt::Formatter[#1]"*)** %77, align 8 | |
%78 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %5, i64 0, i64 3, i32 1 | |
%79 = bitcast i64* %__arg1 to %"enum.std::util::Void[#1]"* | |
store %"enum.std::util::Void[#1]"* %79, %"enum.std::util::Void[#1]"** %78, align 8 | |
%__self36.sroa.0.0.idx = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args34, i64 0, i32 0, i32 0 | |
store %"enum.std::fmt::rt::Piece[#1]"* bitcast ({ { i8, { i8*, i64 }, [56 x i8] }, { i8, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } }, [0 x i8] }, { i8, { i8*, i64 }, [56 x i8] }, { i8, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } }, [0 x i8] }, { i8, { i8*, i64 }, [56 x i8] }, { i8, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } }, [0 x i8] }, { i8, { i8*, i64 }, [56 x i8] }, { i8, { { i8, [15 x i8] }, { i32, i8, i64, { i8, [15 x i8] }, { i8, [15 x i8] } }, { i8* } }, [0 x i8] } }* @_ZN2rt4task12begin_unwind15__STATIC_FMTSTR19h4577d3568ce19534ak8v0.9.preE to %"enum.std::fmt::rt::Piece[#1]"*), %"enum.std::fmt::rt::Piece[#1]"** %__self36.sroa.0.0.idx, align 8 | |
%__self36.sroa.2.0.idx29 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args34, i64 0, i32 0, i32 1 | |
store i64 8, i64* %__self36.sroa.2.0.idx29, align 8 | |
%__adjust.sroa.0.0.idx.i15 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args34, i64 0, i32 1, i32 0 | |
store %"struct.std::fmt::Argument[#1]"* %.sub1, %"struct.std::fmt::Argument[#1]"** %__adjust.sroa.0.0.idx.i15, align 8 | |
%__adjust.sroa.2.0.idx1.i16 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args34, i64 0, i32 1, i32 1 | |
store i64 4, i64* %__adjust.sroa.2.0.idx1.i16, align 8 | |
invoke void @_ZN2rt4util12dumb_println18h233bfbbcb2c2c68aB8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, %"struct.std::fmt::Arguments[#1]"* %__args34) | |
to label %"normal return43" unwind label %unwind3 | |
"normal return43": ; preds = %"normal return42" | |
%80 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %55, i64 0, i32 4 | |
%81 = getelementptr inbounds %"struct.std::rt::task::Unwinder[#1]"* %80, i64 0, i32 0 | |
%82 = load i8* %81, align 1, !range !0 | |
%83 = icmp eq i8 %82, 0 | |
br i1 %83, label %next55, label %"normal return49" | |
"normal return49": ; preds = %"normal return43" | |
%__self47.sroa.0.0.idx = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args45, i64 0, i32 0, i32 0 | |
store %"enum.std::fmt::rt::Piece[#1]"* bitcast ({ { i8, { i8*, i64 }, [56 x i8] } }* @_ZN2rt4task12begin_unwind15__STATIC_FMTSTR19h203afc54b9333977ar8v0.9.preE to %"enum.std::fmt::rt::Piece[#1]"*), %"enum.std::fmt::rt::Piece[#1]"** %__self47.sroa.0.0.idx, align 8 | |
%__self47.sroa.2.0.idx28 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args45, i64 0, i32 0, i32 1 | |
store i64 1, i64* %__self47.sroa.2.0.idx28, align 8 | |
%__adjust.sroa.0.0.idx.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args45, i64 0, i32 1, i32 0 | |
store %"struct.std::fmt::Argument[#1]"* %.sub2, %"struct.std::fmt::Argument[#1]"** %__adjust.sroa.0.0.idx.i, align 8 | |
%__adjust.sroa.2.0.idx1.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args45, i64 0, i32 1, i32 1 | |
store i64 0, i64* %__adjust.sroa.2.0.idx1.i, align 8 | |
%84 = invoke { i64, i64, [0 x i8] }* @_ZN3fmt6format19h532a2575ed3ec0b2aH8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, %"struct.std::fmt::Arguments[#1]"* %__args45) | |
to label %"normal return50" unwind label %unwind3 | |
"normal return50": ; preds = %"normal return49" | |
%85 = getelementptr inbounds { i64, i64, [0 x i8] }* %84, i64 0, i32 2, i64 0 | |
%86 = getelementptr inbounds { i64, i64, [0 x i8] }* %84, i64 0, i32 0 | |
%87 = load i64* %86, align 8 | |
%88 = getelementptr inbounds { i8*, i64 }* %__adjust51, i64 0, i32 0 | |
store i8* %85, i8** %88, align 8 | |
%89 = getelementptr inbounds { i8*, i64 }* %__adjust51, i64 0, i32 1 | |
store i64 %87, i64* %89, align 8 | |
%90 = bitcast { i8*, i64 }* %__adjust51 to %str_slice* | |
invoke void @_ZN2rt4util5abort19hcb77c39c2971b825a48v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, %str_slice* %90) | |
to label %"normal return52" unwind label %unwind53 | |
"normal return52": ; preds = %"normal return50" | |
unreachable | |
unwind53: ; preds = %"normal return50" | |
%91 = landingpad { i8*, i32 } personality i32 ()* @upcall_rust_personality | |
cleanup | |
%.fca.0.extract98 = extractvalue { i8*, i32 } %91, 0 | |
%.fca.1.extract100 = extractvalue { i8*, i32 } %91, 1 | |
%92 = icmp eq { i64, i64, [0 x i8] }* %84, null | |
br i1 %92, label %cleanup4, label %cond.i.i13 | |
cond.i.i13: ; preds = %unwind53 | |
%93 = bitcast { i64, i64, [0 x i8] }* %84 to i8* | |
call void @_ZN2rt11global_heap13exchange_free19hc05c15244ca85199ak8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, i8* %93) | |
br label %cleanup4 | |
next55: ; preds = %"normal return43" | |
%94 = bitcast %"struct.std::rt::task::Unwinder[#1]"* %80 to { i64, %tydesc*, i8*, i8*, i8 }* | |
%95 = bitcast { %tydesc*, { i64, %tydesc*, i8*, i8*, i8 }* }* %msg to i8* | |
%96 = bitcast { %tydesc*, { i64, %tydesc*, i8*, i8*, i8 }* }* %__self56 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %96, i8* %95, i64 16, i32 8, i1 false) | |
call void @llvm.memset.p0i8.i64(i8* %95, i8 0, i64 16, i32 8, i1 false) | |
invoke void @_ZN2rt4task8Unwinder12begin_unwind21hd2fb6d27ccd4ac48Hiae8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* %94, { %tydesc*, { i64, %tydesc*, i8*, i8*, i8 }* }* %__self56) | |
to label %"normal return57" unwind label %unwind3 | |
"normal return57": ; preds = %next55 | |
unreachable | |
} | |
; Function Attrs: nounwind readnone uwtable | |
define internal %"struct.std::unstable::intrinsics::TypeId[#1]" @"_ZN3any5Any$T11get_type_id19h3228ab16337da05ja84v0.0E"({ i64, %tydesc*, i8*, i8*, i8 }* nocapture readnone) unnamed_addr #5 { | |
"function top level": | |
ret %"struct.std::unstable::intrinsics::TypeId[#1]" { i64 5777515549890468306 } | |
} | |
; Function Attrs: nounwind readnone uwtable | |
define internal %"enum.std::util::Void[#1]"* @"_ZN3any5Any$T11as_void_ptr21h594198516f8322205ja94v0.0E"({ i64, %tydesc*, i8*, i8*, i8 }* readnone) unnamed_addr #5 { | |
"function top level": | |
%1 = bitcast { i64, %tydesc*, i8*, i8*, i8 }* %0 to %"enum.std::util::Void[#1]"* | |
ret %"enum.std::util::Void[#1]"* %1 | |
} | |
; Function Attrs: nounwind readnone uwtable | |
define internal %"enum.std::util::Void[#1]"* @"_ZN3any5Any$T15as_mut_void_ptr20hfb75be5da2ed8c65jaa4v0.0E"({ i64, %tydesc*, i8*, i8*, i8 }* readnone) unnamed_addr #5 { | |
"function top level": | |
%1 = bitcast { i64, %tydesc*, i8*, i8*, i8 }* %0 to %"enum.std::util::Void[#1]"* | |
ret %"enum.std::util::Void[#1]"* %1 | |
} | |
define internal void @"_ZN12_$UP$$UP$str9glue_drop17hdf9ebcadebf694aeE"({}* nocapture readnone, { i64, i64, [0 x i8] }*** nocapture readonly) unnamed_addr { | |
"function top level": | |
%2 = load { i64, i64, [0 x i8] }*** %1, align 8 | |
%3 = icmp eq { i64, i64, [0 x i8] }** %2, null | |
br i1 %3, label %"_ZN12_$UP$$UP$str9glue_free17hdf9ebcadebf694afE.exit", label %cond.i | |
cond.i: ; preds = %"function top level" | |
%4 = load { i64, i64, [0 x i8] }** %2, align 8 | |
%5 = icmp eq { i64, i64, [0 x i8] }* %4, null | |
br i1 %5, label %"_ZN8_$UP$str9glue_drop19h29b89872efc46afea4E.exit.i", label %cond.i.i.i | |
cond.i.i.i: ; preds = %cond.i | |
%6 = bitcast { i64, i64, [0 x i8] }* %4 to i8* | |
tail call void @_ZN2rt11global_heap13exchange_free19hc05c15244ca85199ak8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, i8* %6) | |
br label %"_ZN8_$UP$str9glue_drop19h29b89872efc46afea4E.exit.i" | |
"_ZN8_$UP$str9glue_drop19h29b89872efc46afea4E.exit.i": ; preds = %cond.i.i.i, %cond.i | |
%7 = bitcast { i64, i64, [0 x i8] }** %2 to i8* | |
tail call void @_ZN2rt11global_heap13exchange_free19hc05c15244ca85199ak8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, i8* %7) | |
br label %"_ZN12_$UP$$UP$str9glue_free17hdf9ebcadebf694afE.exit" | |
"_ZN12_$UP$$UP$str9glue_free17hdf9ebcadebf694afE.exit": ; preds = %"function top level", %"_ZN8_$UP$str9glue_drop19h29b89872efc46afea4E.exit.i" | |
ret void | |
} | |
define internal void @"_ZN12_$UP$$UP$str9glue_free17hdf9ebcadebf694afE"({}* nocapture readnone, { i64, i64, [0 x i8] }*** nocapture readonly) unnamed_addr { | |
"function top level": | |
%2 = load { i64, i64, [0 x i8] }*** %1, align 8 | |
%3 = icmp eq { i64, i64, [0 x i8] }** %2, null | |
br i1 %3, label %next, label %cond | |
next: ; preds = %"function top level", %"_ZN8_$UP$str9glue_drop19h29b89872efc46afea4E.exit" | |
ret void | |
cond: ; preds = %"function top level" | |
%4 = load { i64, i64, [0 x i8] }** %2, align 8 | |
%5 = icmp eq { i64, i64, [0 x i8] }* %4, null | |
br i1 %5, label %"_ZN8_$UP$str9glue_drop19h29b89872efc46afea4E.exit", label %cond.i.i | |
cond.i.i: ; preds = %cond | |
%6 = bitcast { i64, i64, [0 x i8] }* %4 to i8* | |
tail call void @_ZN2rt11global_heap13exchange_free19hc05c15244ca85199ak8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, i8* %6) | |
br label %"_ZN8_$UP$str9glue_drop19h29b89872efc46afea4E.exit" | |
"_ZN8_$UP$str9glue_drop19h29b89872efc46afea4E.exit": ; preds = %cond, %cond.i.i | |
%7 = bitcast { i64, i64, [0 x i8] }** %2 to i8* | |
tail call void @_ZN2rt11global_heap13exchange_free19hc05c15244ca85199ak8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, i8* %7) | |
br label %next | |
} | |
define internal void @"_ZN12_$UP$$UP$str10glue_visit17hdf9ebcadebf694agE"({}* nocapture readnone, { i64, i64, [0 x i8] }*** nocapture readonly) unnamed_addr { | |
"function top level": | |
%2 = getelementptr inbounds { i64, i64, [0 x i8] }*** %1, i64 1 | |
%3 = load { i64, i64, [0 x i8] }*** %2, align 8 | |
%4 = bitcast { i64, i64, [0 x i8] }** %3 to { i64, %tydesc*, i8*, i8*, i8 }* | |
%5 = load { i64, i64, [0 x i8] }*** %1, align 8 | |
%6 = getelementptr inbounds { i64, i64, [0 x i8] }** %5, i64 22 | |
%7 = load { i64, i64, [0 x i8] }** %6, align 8 | |
%8 = bitcast { i64, i64, [0 x i8] }* %7 to i8 ({ i64, %tydesc*, i8*, i8*, i8 }*, i64, %"struct.std::unstable::intrinsics::TyDesc[#1]"*)* | |
%9 = tail call i8 %8({ i64, %tydesc*, i8*, i8*, i8 }* %4, i64 1, %"struct.std::unstable::intrinsics::TyDesc[#1]"* bitcast (%tydesc* @"_ZN8_$UP$str6tydesc19h29b89872efc46afea1E" to %"struct.std::unstable::intrinsics::TyDesc[#1]"*)) | |
ret void | |
} | |
define internal void @"_ZN8_$UP$str10glue_visit19h29b89872efc46afeahE"({}* nocapture readnone, { i64, i64, [0 x i8] }** nocapture readonly) unnamed_addr { | |
"function top level": | |
%2 = getelementptr inbounds { i64, i64, [0 x i8] }** %1, i64 1 | |
%3 = load { i64, i64, [0 x i8] }** %2, align 8 | |
%4 = bitcast { i64, i64, [0 x i8] }* %3 to { i64, %tydesc*, i8*, i8*, i8 }* | |
%5 = load { i64, i64, [0 x i8] }** %1, align 8 | |
%6 = getelementptr inbounds { i64, i64, [0 x i8] }* %5, i64 9 | |
%7 = bitcast { i64, i64, [0 x i8] }* %6 to i8** | |
%8 = load i8** %7, align 8 | |
%9 = bitcast i8* %8 to i8 ({ i64, %tydesc*, i8*, i8*, i8 }*)* | |
%10 = tail call i8 %9({ i64, %tydesc*, i8*, i8*, i8 }* %4) | |
ret void | |
} | |
; Function Attrs: cold noreturn | |
declare void @_ZN8unstable4lang17fail_bounds_check18hcb910a4a141408bar8v0.9.preE({ i64, %tydesc*, i8*, i8*, i8 }*, i8*, i64, i64, i64) unnamed_addr #7 | |
declare void @"_ZN8unstable7finally18Drop$Finallyalizer4drop20h5b8c344136b8d92YtaS8v0.9.preE"(%"struct.std::unstable::finally::Finallyalizer[#1]"*) unnamed_addr | |
; Function Attrs: inlinehint nounwind uwtable | |
define internal void @_ZN3vec9from_elem4anon7expr_fn4axaQE({ i64, %tydesc*, i8*, i8*, i8 }* nocapture readonly) unnamed_addr #8 { | |
"function top level": | |
%1 = getelementptr inbounds { i64, %tydesc*, i8*, i8*, i8 }* %0, i64 0, i32 4 | |
%2 = bitcast i8* %1 to { i64, i64, [0 x i8] }*** | |
%3 = load { i64, i64, [0 x i8] }*** %2, align 8 | |
%4 = getelementptr inbounds i8* %1, i64 8 | |
%5 = bitcast i8* %4 to i64** | |
%6 = load i64** %5, align 8 | |
%7 = load i64* %6, align 8 | |
%8 = load { i64, i64, [0 x i8] }** %3, align 8 | |
%9 = getelementptr inbounds { i64, i64, [0 x i8] }* %8, i64 0, i32 0 | |
store i64 %7, i64* %9, align 8 | |
ret void | |
} | |
; Function Attrs: nounwind | |
declare void @llvm.lifetime.start(i64, i8* nocapture) #0 | |
; Function Attrs: nounwind | |
declare void @llvm.lifetime.end(i64, i8* nocapture) #0 | |
attributes #0 = { nounwind } | |
attributes #1 = { noreturn nounwind } | |
attributes #2 = { nounwind readnone } | |
attributes #3 = { uwtable } | |
attributes #4 = { noreturn uwtable } | |
attributes #5 = { nounwind readnone uwtable } | |
attributes #6 = { noreturn } | |
attributes #7 = { cold noreturn } | |
attributes #8 = { inlinehint nounwind uwtable } | |
!0 = metadata !{i8 0, i8 2} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment