Skip to content

Instantly share code, notes, and snippets.

@eddyb
Last active December 30, 2015 22:39
Show Gist options
  • Save eddyb/9078327e85b628f72a5a to your computer and use it in GitHub Desktop.
Save eddyb/9078327e85b628f72a5a to your computer and use it in GitHub Desktop.
//> 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)
*/
; 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 }
; 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 }
; 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