Last active
August 29, 2015 14:01
-
-
Save SiegeLord/69770cf0ba61e5515523 to your computer and use it in GitHub Desktop.
Benchmark regression
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; ModuleID = 'algebloat.rs' | |
target datalayout = "e-i64:64-f80:128-n8:16:32:64-S128" | |
target triple = "x86_64-unknown-linux-gnu" | |
%"struct.core::intrinsics::TypeId[#3]" = type { i64 } | |
%str_slice = type { i8*, i64 } | |
%"struct.test::Bencher[#5]" = type { i64, i64, i64, i64 } | |
%"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 (%"enum.core::result::Result<(),std::io::IoError>[#3]"*, %"enum.core::any::Void[#3]"*, %"struct.std::fmt::Formatter[#1]"*)*, %"enum.core::any::Void[#3]"* } | |
%"enum.core::result::Result<(),std::io::IoError>[#3]" = type { i8, [7 x i8], [5 x i64] } | |
%"struct.std::fmt::Formatter[#1]" = type { i64, i32, i8, %"enum.core::option::Option<uint>[#3]", %"enum.core::option::Option<uint>[#3]", { void (i8*)**, i8* }, %"struct.core::slice::Items<std::fmt::Argument>[#3]", { %"struct.std::fmt::Argument[#1]"*, i64 } } | |
%"enum.core::option::Option<uint>[#3]" = type { i8, [7 x i8], [1 x i64] } | |
%"struct.core::slice::Items<std::fmt::Argument>[#3]" = type { %"struct.std::fmt::Argument[#1]"*, %"struct.std::fmt::Argument[#1]"*, %"struct.core::kinds::marker::ContravariantLifetime[#3]" } | |
%"struct.core::kinds::marker::ContravariantLifetime[#3]" = type {} | |
%"enum.core::any::Void[#3]" = type {} | |
%struct.Vector = type { %"struct.std::vec::Vec<core::cell::Cell<f32>>[#1]" } | |
%"struct.std::vec::Vec<core::cell::Cell<f32>>[#1]" = type { i64, i64, %"struct.core::cell::Cell<f32>[#3]"* } | |
%"struct.core::cell::Cell<f32>[#3]" = type { %"struct.core::ty::Unsafe<f32>[#3]", %"struct.core::kinds::marker::NoShare[#3]" } | |
%"struct.core::ty::Unsafe<f32>[#3]" = type { float, %"struct.core::kinds::marker::InvariantType<f32>[#3]" } | |
%"struct.core::kinds::marker::InvariantType<f32>[#3]" = type {} | |
%"struct.core::kinds::marker::NoShare[#3]" = type {} | |
%"struct.std::rt::libunwind::_Unwind_Exception[#1]" = type { i64, void (i32, %"struct.std::rt::libunwind::_Unwind_Exception[#1]"*)*, [2 x i64] } | |
%"enum.std::rt::libunwind::_Unwind_Context[#1]" = type {} | |
%"struct.Divider<Adder<&'static Vector,Multiplier<&'static Vector,&'static Vector>>,&'static Vector>" = type { %"struct.Adder<&'static Vector,Multiplier<&'static Vector,&'static Vector>>", %struct.Vector* } | |
%"struct.Adder<&'static Vector,Multiplier<&'static Vector,&'static Vector>>" = type { %struct.Vector*, %"struct.Multiplier<&'static Vector,&'static Vector>" } | |
%"struct.Multiplier<&'static Vector,&'static Vector>" = type { %struct.Vector*, %struct.Vector* } | |
%"struct.rand::XorShiftRng[#7]" = type { i32, i32, i32, i32 } | |
%"struct.std::vec::Vec<f32>[#1]" = type { i64, i64, float* } | |
%"struct.std::vec::Vec<~str>[#1]" = type { i64, i64, { i64, i64, [0 x i8] }** } | |
%"struct.test::TestDescAndFn[#5]" = type { %"struct.test::TestDesc[#5]", %"enum.test::TestFn[#5]" } | |
%"struct.test::TestDesc[#5]" = type { %"enum.test::TestName[#5]", i8, i8 } | |
%"enum.test::TestName[#5]" = type { i8, [7 x i8], [2 x i64] } | |
%"enum.test::TestFn[#5]" = type { i8, [7 x i8], [2 x i64] } | |
@str2220 = internal constant [14 x i8] c"src/new_lib.rs" | |
@str2221 = internal constant [18 x i8] c"assertion failed: " | |
@vtable2356 = internal constant { void (i8**)*, %"struct.core::intrinsics::TypeId[#3]" (%str_slice*)* } { void (i8**)* @"_ZN7_$UP$i814glue_drop.234017hb75657ce3a7ee077E", %"struct.core::intrinsics::TypeId[#3]" (%str_slice*)* @_ZN3any5T.Any11get_type_id20h30360513813683836744v0.0E } | |
@str2360 = internal constant [17 x i8] c"capacity overflow" | |
@str2466 = internal constant [39 x i8] c"/home/siege/src/rust2/src/libstd/vec.rs" | |
@str2500 = internal constant [42 x i8] c"/home/siege/src/rust2/src/libcore/slice.rs" | |
@str2501 = internal constant [35 x i8] c"assertion failed: end <= self.len()" | |
@str2547 = internal constant [21 x i8] c"self.len() == v.len()" | |
@str2563 = internal constant [18 x i8] c"a.len() == b.len()" | |
@str2566 = internal constant [11 x i8] c"sum != 96.0" | |
@_ZN4test14vec_speed_loop15__STATIC_FMTSTR20h2754a7156d484e2eI1a4v0.0E = 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 ([18 x i8]* @str2221, i32 0, i32 0), i64 18 }, [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 } } | |
@str2577 = internal constant [19 x i8] c"test::vec_speed_vec" | |
@str2578 = internal constant [20 x i8] c"test::vec_speed_loop" | |
@const = private constant { { { { i8, { i8*, i64 }, [0 x i8] }, i8, i8, [6 x i8] }, { i8, void (%"struct.test::Bencher[#5]"*)*, [8 x i8] } }, { { { i8, { i8*, i64 }, [0 x i8] }, i8, i8, [6 x i8] }, { i8, void (%"struct.test::Bencher[#5]"*)*, [8 x i8] } } } { { { { i8, { i8*, i64 }, [0 x i8] }, i8, i8, [6 x i8] }, { i8, void (%"struct.test::Bencher[#5]"*)*, [8 x i8] } } { { { i8, { i8*, i64 }, [0 x i8] }, i8, i8, [6 x i8] } { { i8, { i8*, i64 }, [0 x i8] } { i8 0, { i8*, i64 } { i8* getelementptr inbounds ([19 x i8]* @str2577, i32 0, i32 0), i64 19 }, [0 x i8] undef }, i8 0, i8 0, [6 x i8] undef }, { i8, void (%"struct.test::Bencher[#5]"*)*, [8 x i8] } { i8 1, void (%"struct.test::Bencher[#5]"*)* @_ZN4test13vec_speed_vec20h6a651987ed997271vWa4v0.0E, [8 x i8] undef } }, { { { i8, { i8*, i64 }, [0 x i8] }, i8, i8, [6 x i8] }, { i8, void (%"struct.test::Bencher[#5]"*)*, [8 x i8] } } { { { i8, { i8*, i64 }, [0 x i8] }, i8, i8, [6 x i8] } { { i8, { i8*, i64 }, [0 x i8] } { i8 0, { i8*, i64 } { i8* getelementptr inbounds ([20 x i8]* @str2578, i32 0, i32 0), i64 20 }, [0 x i8] undef }, i8 0, i8 0, [6 x i8] undef }, { i8, void (%"struct.test::Bencher[#5]"*)*, [8 x i8] } { i8 1, void (%"struct.test::Bencher[#5]"*)* @_ZN4test14vec_speed_loop20he36626d22787d321hZa4v0.0E, [8 x i8] undef } } } | |
; Function Attrs: cold noinline noreturn | |
declare void @_ZN2rt6unwind16begin_unwind_fmt20h1360f91e7709ea39KsF9v0.11.preE(%"struct.std::fmt::Arguments[#1]"* nocapture, %str_slice* noalias nocapture, i64) unnamed_addr #0 | |
; Function Attrs: uwtable | |
define internal fastcc void @_ZN6Vector3new20hf0f9aad5a0222bb5Uda4v0.0E(%struct.Vector* noalias nocapture sret, float* readonly %.0.0.val, i64 %.0.1.val) unnamed_addr #1 { | |
entry-block: | |
%1 = alloca %str_slice, align 8 | |
%2 = alloca %str_slice, align 8 | |
%3 = getelementptr inbounds float* %.0.0.val, i64 %.0.1.val | |
%4 = icmp eq i64 %.0.1.val, 0 | |
br i1 %4, label %_ZN4iter8Iterator7collect21h157530482907772535334v0.0E.exit, label %else-block.i.i.i | |
else-block.i.i.i: ; preds = %entry-block | |
%umul_with_overflow.i.i = shl nuw i64 %.0.1.val, 2 | |
%5 = tail call i8* @malloc(i64 %umul_with_overflow.i.i) #8 | |
%6 = icmp eq i8* %5, null | |
br i1 %6, label %then-block-3949-.i.i.i.i, label %"_ZN5slice57Items$LT$$x27a$C$$x20T$GT$.Iterator$LT$$BP$$x27a$x20T$GT$4next21h110212424784378364914v0.0E.exit.i.i.i.i.preheader" | |
then-block-3949-.i.i.i.i: ; preds = %else-block.i.i.i | |
tail call void @llvm.trap() #8 | |
unreachable | |
"_ZN5slice57Items$LT$$x27a$C$$x20T$GT$.Iterator$LT$$BP$$x27a$x20T$GT$4next21h110212424784378364914v0.0E.exit.i.i.i.i.preheader": ; preds = %else-block.i.i.i | |
%7 = bitcast i8* %5 to %"struct.core::cell::Cell<f32>[#3]"* | |
%8 = bitcast %str_slice* %1 to i8* | |
%9 = bitcast %str_slice* %2 to i8* | |
br label %"_ZN5slice57Items$LT$$x27a$C$$x20T$GT$.Iterator$LT$$BP$$x27a$x20T$GT$4next21h110212424784378364914v0.0E.exit.i.i.i.i" | |
"_ZN5slice57Items$LT$$x27a$C$$x20T$GT$.Iterator$LT$$BP$$x27a$x20T$GT$4next21h110212424784378364914v0.0E.exit.i.i.i.i": ; preds = %"_ZN5slice57Items$LT$$x27a$C$$x20T$GT$.Iterator$LT$$BP$$x27a$x20T$GT$4next21h110212424784378364914v0.0E.exit.i.i.i.i.preheader", %"_ZN3vec12Vec$LT$T$GT$4push20h46733768910178461114v0.0E.exit.i.i" | |
%10 = phi float* [ %13, %"_ZN3vec12Vec$LT$T$GT$4push20h46733768910178461114v0.0E.exit.i.i" ], [ %.0.0.val, %"_ZN5slice57Items$LT$$x27a$C$$x20T$GT$.Iterator$LT$$BP$$x27a$x20T$GT$4next21h110212424784378364914v0.0E.exit.i.i.i.i.preheader" ] | |
%11 = phi i64 [ %34, %"_ZN3vec12Vec$LT$T$GT$4push20h46733768910178461114v0.0E.exit.i.i" ], [ 0, %"_ZN5slice57Items$LT$$x27a$C$$x20T$GT$.Iterator$LT$$BP$$x27a$x20T$GT$4next21h110212424784378364914v0.0E.exit.i.i.i.i.preheader" ] | |
%12 = phi i64 [ %32, %"_ZN3vec12Vec$LT$T$GT$4push20h46733768910178461114v0.0E.exit.i.i" ], [ %.0.1.val, %"_ZN5slice57Items$LT$$x27a$C$$x20T$GT$.Iterator$LT$$BP$$x27a$x20T$GT$4next21h110212424784378364914v0.0E.exit.i.i.i.i.preheader" ] | |
%vector.sroa.12.0.oldload45.i13.i = phi %"struct.core::cell::Cell<f32>[#3]"* [ %vector.sroa.12.0.oldload44.i.i, %"_ZN3vec12Vec$LT$T$GT$4push20h46733768910178461114v0.0E.exit.i.i" ], [ %7, %"_ZN5slice57Items$LT$$x27a$C$$x20T$GT$.Iterator$LT$$BP$$x27a$x20T$GT$4next21h110212424784378364914v0.0E.exit.i.i.i.i.preheader" ] | |
%13 = getelementptr inbounds float* %10, i64 1 | |
%14 = icmp eq float* %10, null | |
br i1 %14, label %_ZN4iter8Iterator7collect21h157530482907772535334v0.0E.exit.loopexit, label %match_case.i.i.i.i.i | |
match_case.i.i.i.i.i: ; preds = %"_ZN5slice57Items$LT$$x27a$C$$x20T$GT$.Iterator$LT$$BP$$x27a$x20T$GT$4next21h110212424784378364914v0.0E.exit.i.i.i.i" | |
%15 = load float* %10, align 4 | |
%oldret.i.i = insertvalue %"struct.core::ty::Unsafe<f32>[#3]" undef, float %15, 0 | |
%oldret.i = insertvalue %"struct.core::cell::Cell<f32>[#3]" undef, %"struct.core::ty::Unsafe<f32>[#3]" %oldret.i.i, 0 | |
call void @llvm.lifetime.start(i64 16, i8* %8) | |
call void @llvm.lifetime.start(i64 16, i8* %9) | |
%16 = icmp eq i64 %11, %12 | |
br i1 %16, label %then-block-4623-.i.i.i, label %"_ZN3vec12Vec$LT$T$GT$4push20h46733768910178461114v0.0E.exit.i.i" | |
unwind_ast_3607_.nonloopexit.i.i: ; preds = %then-block-4666-.i.i.i | |
%lpad.nonloopexit.i.i = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"struct.std::rt::libunwind::_Unwind_Exception[#1]"*, %"enum.std::rt::libunwind::_Unwind_Context[#1]"*)* @rust_eh_personality | |
cleanup | |
%17 = bitcast %"struct.core::cell::Cell<f32>[#3]"* %vector.sroa.12.0.oldload45.i13.i.lcssa17 to i8* | |
tail call void @free(i8* %17) #8 | |
resume { i8*, i32 } %lpad.nonloopexit.i.i | |
then-block-4623-.i.i.i: ; preds = %match_case.i.i.i.i.i | |
%18 = icmp eq i64 %11, 0 | |
%..i.i = select i1 %18, i64 2, i64 %11 | |
%19 = shl i64 %..i.i, 2 | |
%20 = shl i64 %..i.i, 1 | |
%21 = shl i64 %..i.i, 3 | |
%22 = icmp ugt i64 %19, %21 | |
br i1 %22, label %then-block-4666-.i.i.i, label %next-block1.i.i.i | |
then-block-4666-.i.i.i: ; preds = %then-block-4623-.i.i.i | |
%vector.sroa.12.0.oldload45.i13.i.lcssa17 = phi %"struct.core::cell::Cell<f32>[#3]"* [ %vector.sroa.12.0.oldload45.i13.i, %then-block-4623-.i.i.i ] | |
%23 = getelementptr inbounds %str_slice* %1, i64 0, i32 0 | |
store i8* getelementptr inbounds ([17 x i8]* @str2360, i64 0, i64 0), i8** %23, align 8 | |
%24 = getelementptr inbounds %str_slice* %1, i64 0, i32 1 | |
store i64 17, i64* %24, align 8 | |
%25 = getelementptr inbounds %str_slice* %2, i64 0, i32 0 | |
store i8* getelementptr inbounds ([39 x i8]* @str2466, i64 0, i64 0), i8** %25, align 8 | |
%26 = getelementptr inbounds %str_slice* %2, i64 0, i32 1 | |
store i64 39, i64* %26, align 8 | |
invoke fastcc void @_ZN2rt6unwind12begin_unwind18h995620736527304054v0.0E(%str_slice* nocapture %1, %str_slice* nocapture %2, i64 554) | |
to label %.noexc40.i.i unwind label %unwind_ast_3607_.nonloopexit.i.i | |
.noexc40.i.i: ; preds = %then-block-4666-.i.i.i | |
unreachable | |
next-block1.i.i.i: ; preds = %then-block-4623-.i.i.i | |
%27 = bitcast %"struct.core::cell::Cell<f32>[#3]"* %vector.sroa.12.0.oldload45.i13.i to i8* | |
%28 = icmp eq i64 %21, 0 | |
br i1 %28, label %then-block-4745-.i.i.i.i, label %else-block.i.i38.i.i | |
then-block-4745-.i.i.i.i: ; preds = %next-block1.i.i.i | |
tail call void @free(i8* %27) #8 | |
br label %_ZN2rt11global_heap11realloc_raw20h6d6fc9759276e719pob4v0.0E.exit.i.i.i | |
else-block.i.i38.i.i: ; preds = %next-block1.i.i.i | |
%29 = tail call i8* @realloc(i8* %27, i64 %21) #8 | |
%30 = icmp eq i8* %29, null | |
br i1 %30, label %then-block-4777-.i.i.i.i, label %_ZN2rt11global_heap11realloc_raw20h6d6fc9759276e719pob4v0.0E.exit.i.i.i | |
then-block-4777-.i.i.i.i: ; preds = %else-block.i.i38.i.i | |
tail call void @llvm.trap() #8 | |
unreachable | |
_ZN2rt11global_heap11realloc_raw20h6d6fc9759276e719pob4v0.0E.exit.i.i.i: ; preds = %else-block.i.i38.i.i, %then-block-4745-.i.i.i.i | |
%__make_return_pointer.0.i.i39.i.i = phi i8* [ null, %then-block-4745-.i.i.i.i ], [ %29, %else-block.i.i38.i.i ] | |
%31 = bitcast i8* %__make_return_pointer.0.i.i39.i.i to %"struct.core::cell::Cell<f32>[#3]"* | |
br label %"_ZN3vec12Vec$LT$T$GT$4push20h46733768910178461114v0.0E.exit.i.i" | |
"_ZN3vec12Vec$LT$T$GT$4push20h46733768910178461114v0.0E.exit.i.i": ; preds = %_ZN2rt11global_heap11realloc_raw20h6d6fc9759276e719pob4v0.0E.exit.i.i.i, %match_case.i.i.i.i.i | |
%vector.sroa.12.0.oldload44.i.i = phi %"struct.core::cell::Cell<f32>[#3]"* [ %31, %_ZN2rt11global_heap11realloc_raw20h6d6fc9759276e719pob4v0.0E.exit.i.i.i ], [ %vector.sroa.12.0.oldload45.i13.i, %match_case.i.i.i.i.i ] | |
%32 = phi i64 [ %20, %_ZN2rt11global_heap11realloc_raw20h6d6fc9759276e719pob4v0.0E.exit.i.i.i ], [ %12, %match_case.i.i.i.i.i ] | |
%33 = getelementptr inbounds %"struct.core::cell::Cell<f32>[#3]"* %vector.sroa.12.0.oldload44.i.i, i64 %11 | |
store %"struct.core::cell::Cell<f32>[#3]" %oldret.i, %"struct.core::cell::Cell<f32>[#3]"* %33, align 4 | |
%34 = add i64 %11, 1 | |
call void @llvm.lifetime.end(i64 16, i8* %8) | |
call void @llvm.lifetime.end(i64 16, i8* %9) | |
%35 = icmp eq float* %13, %3 | |
br i1 %35, label %_ZN4iter8Iterator7collect21h157530482907772535334v0.0E.exit.loopexit, label %"_ZN5slice57Items$LT$$x27a$C$$x20T$GT$.Iterator$LT$$BP$$x27a$x20T$GT$4next21h110212424784378364914v0.0E.exit.i.i.i.i" | |
_ZN4iter8Iterator7collect21h157530482907772535334v0.0E.exit.loopexit: ; preds = %"_ZN3vec12Vec$LT$T$GT$4push20h46733768910178461114v0.0E.exit.i.i", %"_ZN5slice57Items$LT$$x27a$C$$x20T$GT$.Iterator$LT$$BP$$x27a$x20T$GT$4next21h110212424784378364914v0.0E.exit.i.i.i.i" | |
%.lcssa9.i.ph = phi i64 [ %11, %"_ZN5slice57Items$LT$$x27a$C$$x20T$GT$.Iterator$LT$$BP$$x27a$x20T$GT$4next21h110212424784378364914v0.0E.exit.i.i.i.i" ], [ %34, %"_ZN3vec12Vec$LT$T$GT$4push20h46733768910178461114v0.0E.exit.i.i" ] | |
%.lcssa.i.ph = phi i64 [ %12, %"_ZN5slice57Items$LT$$x27a$C$$x20T$GT$.Iterator$LT$$BP$$x27a$x20T$GT$4next21h110212424784378364914v0.0E.exit.i.i.i.i" ], [ %32, %"_ZN3vec12Vec$LT$T$GT$4push20h46733768910178461114v0.0E.exit.i.i" ] | |
%vector.sroa.12.0.oldload45.i.lcssa.i.ph = phi %"struct.core::cell::Cell<f32>[#3]"* [ %vector.sroa.12.0.oldload45.i13.i, %"_ZN5slice57Items$LT$$x27a$C$$x20T$GT$.Iterator$LT$$BP$$x27a$x20T$GT$4next21h110212424784378364914v0.0E.exit.i.i.i.i" ], [ %vector.sroa.12.0.oldload44.i.i, %"_ZN3vec12Vec$LT$T$GT$4push20h46733768910178461114v0.0E.exit.i.i" ] | |
br label %_ZN4iter8Iterator7collect21h157530482907772535334v0.0E.exit | |
_ZN4iter8Iterator7collect21h157530482907772535334v0.0E.exit: ; preds = %_ZN4iter8Iterator7collect21h157530482907772535334v0.0E.exit.loopexit, %entry-block | |
%.lcssa9.i = phi i64 [ 0, %entry-block ], [ %.lcssa9.i.ph, %_ZN4iter8Iterator7collect21h157530482907772535334v0.0E.exit.loopexit ] | |
%.lcssa.i = phi i64 [ 0, %entry-block ], [ %.lcssa.i.ph, %_ZN4iter8Iterator7collect21h157530482907772535334v0.0E.exit.loopexit ] | |
%vector.sroa.12.0.oldload45.i.lcssa.i = phi %"struct.core::cell::Cell<f32>[#3]"* [ null, %entry-block ], [ %vector.sroa.12.0.oldload45.i.lcssa.i.ph, %_ZN4iter8Iterator7collect21h157530482907772535334v0.0E.exit.loopexit ] | |
%vector.sroa.0.0..sroa_idx.i.i = getelementptr inbounds %struct.Vector* %0, i64 0, i32 0, i32 0 | |
store i64 %.lcssa9.i, i64* %vector.sroa.0.0..sroa_idx.i.i, align 8 | |
%vector.sroa.8.0..sroa_idx41.i.i = getelementptr inbounds %struct.Vector* %0, i64 0, i32 0, i32 1 | |
store i64 %.lcssa.i, i64* %vector.sroa.8.0..sroa_idx41.i.i, align 8 | |
%vector.sroa.12.0..sroa_idx43.i.i = getelementptr inbounds %struct.Vector* %0, i64 0, i32 0, i32 2 | |
store %"struct.core::cell::Cell<f32>[#3]"* %vector.sroa.12.0.oldload45.i.lcssa.i, %"struct.core::cell::Cell<f32>[#3]"** %vector.sroa.12.0..sroa_idx43.i.i, align 8 | |
ret void | |
} | |
; Function Attrs: cold noinline noreturn uwtable | |
define internal fastcc void @_ZN2rt6unwind12begin_unwind18h995620736527304054v0.0E(%str_slice* noalias nocapture readonly, %str_slice* noalias nocapture readonly, i64) unnamed_addr #2 { | |
entry-block: | |
%__adjust = alloca { void (i8*)**, i8* }, align 8 | |
%arg = alloca %str_slice, align 8 | |
%3 = tail call i8* @malloc(i64 16) #8 | |
%4 = icmp eq i8* %3, null | |
br i1 %4, label %then-block-3949-.i.i, label %_ZN2rt11global_heap15exchange_malloc20h2fda127de8d70239Kab4v0.0E.exit | |
then-block-3949-.i.i: ; preds = %entry-block | |
tail call void @llvm.trap() #8 | |
unreachable | |
_ZN2rt11global_heap15exchange_malloc20h2fda127de8d70239Kab4v0.0E.exit: ; preds = %entry-block | |
%5 = bitcast %str_slice* %0 to i8* | |
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %5, i64 16, i32 8, i1 false) | |
%6 = getelementptr inbounds { void (i8*)**, i8* }* %__adjust, i64 0, i32 1 | |
store i8* %3, i8** %6, align 8 | |
%7 = getelementptr inbounds { void (i8*)**, i8* }* %__adjust, i64 0, i32 0 | |
store void (i8*)** bitcast ({ void (i8**)*, %"struct.core::intrinsics::TypeId[#3]" (%str_slice*)* }* @vtable2356 to void (i8*)**), void (i8*)*** %7, align 8 | |
%8 = bitcast %str_slice* %1 to i8* | |
%9 = bitcast %str_slice* %arg to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %8, i64 16, i32 8, i1 false) | |
call void @_ZN2rt6unwind18begin_unwind_inner20h483d0e1a956a5c13AtF9v0.11.preE({ void (i8*)**, i8* }* nocapture %__adjust, %str_slice* nocapture %arg, i64 %2) | |
unreachable | |
} | |
; Function Attrs: cold noinline noreturn | |
declare void @_ZN2rt6unwind18begin_unwind_inner20h483d0e1a956a5c13AtF9v0.11.preE({ void (i8*)**, i8* }* noalias nocapture, %str_slice* noalias nocapture, i64) unnamed_addr #0 | |
; Function Attrs: nounwind | |
declare noalias i8* @malloc(i64) unnamed_addr #3 | |
; Function Attrs: noreturn nounwind | |
declare void @llvm.trap() unnamed_addr #4 | |
; Function Attrs: nounwind | |
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i32, i1) unnamed_addr #3 | |
; Function Attrs: nounwind | |
define internal void @"_ZN7_$UP$i814glue_drop.234017hb75657ce3a7ee077E"(i8** nocapture readonly) unnamed_addr #3 { | |
entry-block: | |
%1 = load i8** %0, align 8 | |
%2 = icmp eq i8* %1, null | |
br i1 %2, label %next, label %cond | |
next: ; preds = %entry-block, %cond | |
ret void | |
cond: ; preds = %entry-block | |
tail call void @free(i8* %1) #8 | |
br label %next | |
} | |
; Function Attrs: nounwind | |
declare void @free(i8* nocapture) unnamed_addr #3 | |
; Function Attrs: nounwind readnone uwtable | |
define internal %"struct.core::intrinsics::TypeId[#3]" @_ZN3any5T.Any11get_type_id20h30360513813683836744v0.0E(%str_slice* nocapture readnone) unnamed_addr #5 { | |
entry-block: | |
ret %"struct.core::intrinsics::TypeId[#3]" { i64 8802261786977977801 } | |
} | |
declare i32 @rust_eh_personality(i32, i32, i64, %"struct.std::rt::libunwind::_Unwind_Exception[#1]"*, %"enum.std::rt::libunwind::_Unwind_Context[#1]"*) unnamed_addr #6 | |
; Function Attrs: nounwind | |
declare noalias i8* @realloc(i8* nocapture, i64) unnamed_addr #3 | |
; Function Attrs: uwtable | |
define void @_ZN4test13vec_speed_vec20h6a651987ed997271vWa4v0.0E(%"struct.test::Bencher[#5]"* noalias nocapture) unnamed_addr #1 { | |
entry-block: | |
%dummy.i.i = alloca {}, align 8 | |
%1 = alloca %str_slice, align 8 | |
%2 = alloca %str_slice, align 8 | |
%3 = alloca %"struct.std::fmt::Argument[#1]", align 8 | |
%__args.i87 = alloca %"struct.std::fmt::Arguments[#1]", align 8 | |
%4 = alloca %str_slice, align 8 | |
%5 = alloca %"struct.Divider<Adder<&'static Vector,Multiplier<&'static Vector,&'static Vector>>,&'static Vector>", align 8 | |
%6 = alloca <2 x %struct.Vector*>, align 16 | |
%tmpcast = bitcast <2 x %struct.Vector*>* %6 to %"struct.Multiplier<&'static Vector,&'static Vector>"* | |
%7 = alloca %str_slice, align 8 | |
%8 = alloca %"struct.std::fmt::Argument[#1]", align 8 | |
%__args.i = alloca %"struct.std::fmt::Arguments[#1]", align 8 | |
%9 = alloca %str_slice, align 8 | |
%10 = alloca %str_slice, align 8 | |
%rng = alloca %"struct.rand::XorShiftRng[#7]", align 8 | |
%a = alloca %struct.Vector, align 8 | |
%11 = alloca %"struct.std::vec::Vec<f32>[#1]", align 8 | |
call void @_ZN8weak_rng20hfdeb0b8a85b490be0Tc9v0.11.preE(%"struct.rand::XorShiftRng[#7]"* noalias nocapture sret %rng) | |
call fastcc void @_ZN3Rng7gen_vec20h28934972009731545304v0.0E(%"struct.std::vec::Vec<f32>[#1]"* noalias nocapture sret %11, %"struct.rand::XorShiftRng[#7]"* %rng) | |
%.idx12 = getelementptr %"struct.std::vec::Vec<f32>[#1]"* %11, i64 0, i32 0 | |
%.idx12.val = load i64* %.idx12, align 8 | |
%.idx13 = getelementptr %"struct.std::vec::Vec<f32>[#1]"* %11, i64 0, i32 2 | |
%.idx13.val = load float** %.idx13, align 8 | |
%12 = bitcast %str_slice* %9 to i8* | |
call void @llvm.lifetime.start(i64 16, i8* %12) | |
%13 = bitcast %str_slice* %10 to i8* | |
call void @llvm.lifetime.start(i64 16, i8* %13) | |
%14 = icmp ugt i64 %.idx12.val, 9 | |
br i1 %14, label %normal-return, label %then-block-5126-.i.i | |
then-block-5126-.i.i: ; preds = %entry-block | |
%15 = getelementptr inbounds %str_slice* %9, i64 0, i32 0 | |
store i8* getelementptr inbounds ([35 x i8]* @str2501, i64 0, i64 0), i8** %15, align 8 | |
%16 = getelementptr inbounds %str_slice* %9, i64 0, i32 1 | |
store i64 35, i64* %16, align 8 | |
%17 = getelementptr inbounds %str_slice* %10, i64 0, i32 0 | |
store i8* getelementptr inbounds ([42 x i8]* @str2500, i64 0, i64 0), i8** %17, align 8 | |
%18 = getelementptr inbounds %str_slice* %10, i64 0, i32 1 | |
store i64 42, i64* %18, align 8 | |
invoke void @_ZN7failure12begin_unwind20ha3b1880e6a964addrxF9v0.11.preE(%str_slice* nocapture %9, %str_slice* nocapture %10, i64 549) | |
to label %.noexc unwind label %unwind_ast_3011_ | |
.noexc: ; preds = %then-block-5126-.i.i | |
unreachable | |
normal-return: ; preds = %entry-block | |
call void @llvm.lifetime.end(i64 16, i8* %12) | |
call void @llvm.lifetime.end(i64 16, i8* %13) | |
invoke fastcc void @_ZN6Vector3new20hf0f9aad5a0222bb5Uda4v0.0E(%struct.Vector* noalias nocapture sret %a, float* %.idx13.val, i64 10) | |
to label %normal-return1 unwind label %unwind_ast_3011_ | |
unwind_ast_3011_: ; preds = %then-block-5126-.i.i, %normal-return | |
%19 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"struct.std::rt::libunwind::_Unwind_Exception[#1]"*, %"enum.std::rt::libunwind::_Unwind_Context[#1]"*)* @rust_eh_personality | |
cleanup | |
%.fca.0.extract = extractvalue { i8*, i32 } %19, 0 | |
%.fca.1.extract = extractvalue { i8*, i32 } %19, 1 | |
%20 = bitcast float* %.idx13.val to i8* | |
call void @free(i8* %20) #8 | |
br label %resume | |
resume: ; preds = %unwind_ast_3004_, %unwind_ast_3011_ | |
%.sroa.3.0 = phi i32 [ %.fca.1.extract8, %unwind_ast_3004_ ], [ %.fca.1.extract, %unwind_ast_3011_ ] | |
%.sroa.0.0 = phi i8* [ %.fca.0.extract6, %unwind_ast_3004_ ], [ %.fca.0.extract, %unwind_ast_3011_ ] | |
%.fca.0.insert = insertvalue { i8*, i32 } undef, i8* %.sroa.0.0, 0 | |
%.fca.1.insert = insertvalue { i8*, i32 } %.fca.0.insert, i32 %.sroa.3.0, 1 | |
resume { i8*, i32 } %.fca.1.insert | |
normal-return1: ; preds = %normal-return | |
%21 = bitcast float* %.idx13.val to i8* | |
call void @free(i8* %21) #8 | |
%22 = invoke i64 @_ZN15precise_time_ns20h3c754008add7480eaqa9v0.11.preE() | |
to label %.noexc17 unwind label %unwind_ast_3004_.nonloopexit | |
.noexc17: ; preds = %normal-return1 | |
%23 = getelementptr inbounds %"struct.test::Bencher[#5]"* %0, i64 0, i32 1 | |
store i64 %22, i64* %23, align 8 | |
%24 = getelementptr inbounds %"struct.test::Bencher[#5]"* %0, i64 0, i32 0 | |
%25 = load i64* %24, align 8 | |
%26 = icmp eq i64 %25, 0 | |
br i1 %26, label %join3.i, label %match_else.lr.ph.i | |
match_else.lr.ph.i: ; preds = %.noexc17 | |
%27 = bitcast {}* %dummy.i.i to i8* | |
%28 = bitcast %"struct.Divider<Adder<&'static Vector,Multiplier<&'static Vector,&'static Vector>>,&'static Vector>"* %5 to i8* | |
%29 = bitcast <2 x %struct.Vector*>* %6 to i8* | |
%30 = bitcast %str_slice* %7 to i8* | |
%31 = bitcast %"struct.std::fmt::Argument[#1]"* %8 to i8* | |
%32 = bitcast %"struct.std::fmt::Arguments[#1]"* %__args.i to i8* | |
%33 = bitcast %str_slice* %2 to i8* | |
%34 = bitcast %"struct.std::fmt::Argument[#1]"* %3 to i8* | |
%35 = bitcast %"struct.std::fmt::Arguments[#1]"* %__args.i87 to i8* | |
%36 = getelementptr inbounds %struct.Vector* %a, i64 0, i32 0, i32 0 | |
%.sroa.0197.0..sroa_idx = getelementptr inbounds %"struct.Divider<Adder<&'static Vector,Multiplier<&'static Vector,&'static Vector>>,&'static Vector>"* %5, i64 0, i32 0, i32 0 | |
%.sroa.5199.0..sroa_idx201 = getelementptr inbounds %"struct.Divider<Adder<&'static Vector,Multiplier<&'static Vector,&'static Vector>>,&'static Vector>"* %5, i64 0, i32 0, i32 1, i32 0 | |
%37 = getelementptr inbounds %"struct.Divider<Adder<&'static Vector,Multiplier<&'static Vector,&'static Vector>>,&'static Vector>"* %5, i64 0, i32 1 | |
%38 = getelementptr inbounds %struct.Vector* %a, i64 0, i32 0, i32 2 | |
br label %.noexc25 | |
.noexc25: ; preds = %.noexc18, %match_else.lr.ph.i | |
%39 = phi i64 [ 0, %match_else.lr.ph.i ], [ %40, %.noexc18 ] | |
%40 = add i64 %39, 1 | |
call void @llvm.lifetime.start(i64 32, i8* %28) | |
call void @llvm.lifetime.start(i64 16, i8* %29) | |
call void @llvm.lifetime.start(i64 16, i8* %30) | |
call void @llvm.lifetime.start(i64 16, i8* %31) | |
call void @llvm.lifetime.start(i64 32, i8* %32) | |
br label %.noexc66 | |
.noexc66: ; preds = %.noexc29, %.noexc25 | |
%41 = phi i64 [ 0, %.noexc25 ], [ %45, %.noexc29 ] | |
%42 = icmp slt i64 %41, 100 | |
br i1 %42, label %.noexc82, label %.noexc47.preheader | |
.noexc47.preheader: ; preds = %.noexc66 | |
%43 = load i64* %36, align 8 | |
%44 = load %"struct.core::cell::Cell<f32>[#3]"** %38, align 8 | |
br label %.noexc47 | |
.noexc82: ; preds = %.noexc66 | |
%45 = add i64 %41, 1 | |
invoke fastcc void @"_ZN29Multiplier$LT$TA$C$$x20TB$GT$3new20h43690195969142038944v0.0E"(%"struct.Multiplier<&'static Vector,&'static Vector>"* noalias nocapture sret %tmpcast, %struct.Vector* %a, %struct.Vector* %a) | |
to label %.noexc91 unwind label %unwind_ast_3004_.loopexit.loopexit | |
.noexc91: ; preds = %.noexc82 | |
%46 = load <2 x %struct.Vector*>* %6, align 16 | |
call void @llvm.lifetime.start(i64 16, i8* %33) | |
call void @llvm.lifetime.start(i64 16, i8* %34) | |
call void @llvm.lifetime.start(i64 32, i8* %35) | |
%47 = load i64* %36, align 8 | |
%48 = extractelement <2 x %struct.Vector*> %46, i32 0 | |
%49 = getelementptr inbounds %struct.Vector* %48, i64 0, i32 0, i32 0 | |
%50 = load i64* %49, align 8 | |
%51 = icmp eq i64 %47, %50 | |
br i1 %51, label %.noexc29, label %.noexc93 | |
.noexc93: ; preds = %.noexc91 | |
%52 = getelementptr inbounds %str_slice* %2, i64 0, i32 0 | |
store i8* getelementptr inbounds ([18 x i8]* @str2563, i64 0, i64 0), i8** %52, align 8 | |
%53 = getelementptr inbounds %str_slice* %2, i64 0, i32 1 | |
store i64 18, i64* %53, align 8 | |
%54 = getelementptr inbounds %"struct.std::fmt::Argument[#1]"* %3, i64 0, i32 0 | |
store void (%"enum.core::result::Result<(),std::io::IoError>[#3]"*, %"enum.core::any::Void[#3]"*, %"struct.std::fmt::Formatter[#1]"*)* bitcast (void (%"enum.core::result::Result<(),std::io::IoError>[#3]"*, %str_slice*, %"struct.std::fmt::Formatter[#1]"*)* @_ZN3fmt13secret_string21h168541290156162148204v0.0E to void (%"enum.core::result::Result<(),std::io::IoError>[#3]"*, %"enum.core::any::Void[#3]"*, %"struct.std::fmt::Formatter[#1]"*)*), void (%"enum.core::result::Result<(),std::io::IoError>[#3]"*, %"enum.core::any::Void[#3]"*, %"struct.std::fmt::Formatter[#1]"*)** %54, align 8 | |
%55 = getelementptr inbounds %"struct.std::fmt::Argument[#1]"* %3, i64 0, i32 1 | |
%56 = bitcast %str_slice* %2 to %"enum.core::any::Void[#3]"* | |
store %"enum.core::any::Void[#3]"* %56, %"enum.core::any::Void[#3]"** %55, align 8 | |
%arg.i105.sroa.0.0..sroa_idx = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args.i87, 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] } }* @_ZN4test14vec_speed_loop15__STATIC_FMTSTR20h2754a7156d484e2eI1a4v0.0E to %"enum.std::fmt::rt::Piece[#1]"*), %"enum.std::fmt::rt::Piece[#1]"** %arg.i105.sroa.0.0..sroa_idx, align 8 | |
%arg.i105.sroa.4.0..sroa_idx228 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args.i87, i64 0, i32 0, i32 1 | |
store i64 2, i64* %arg.i105.sroa.4.0..sroa_idx228, align 8 | |
%__adjust.sroa.0.0..sroa_idx.i101 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args.i87, i64 0, i32 1, i32 0 | |
store %"struct.std::fmt::Argument[#1]"* %3, %"struct.std::fmt::Argument[#1]"** %__adjust.sroa.0.0..sroa_idx.i101, align 8 | |
%__adjust.sroa.2.0..sroa_idx1.i102 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args.i87, i64 0, i32 1, i32 1 | |
store i64 1, i64* %__adjust.sroa.2.0..sroa_idx1.i102, align 8 | |
%57 = bitcast %str_slice* %1 to i8* | |
call void @llvm.lifetime.start(i64 16, i8* %57) | |
%58 = getelementptr inbounds %str_slice* %1, i64 0, i32 0 | |
store i8* getelementptr inbounds ([14 x i8]* @str2220, i64 0, i64 0), i8** %58, align 8 | |
%59 = getelementptr inbounds %str_slice* %1, i64 0, i32 1 | |
store i64 14, i64* %59, align 8 | |
invoke void @_ZN2rt6unwind16begin_unwind_fmt20h1360f91e7709ea39KsF9v0.11.preE(%"struct.std::fmt::Arguments[#1]"* nocapture %__args.i87, %str_slice* nocapture %1, i64 320) | |
to label %.noexc95 unwind label %unwind_ast_3004_.loopexit.nonloopexit | |
.noexc95: ; preds = %.noexc93 | |
unreachable | |
.noexc29: ; preds = %.noexc91 | |
call void @llvm.lifetime.end(i64 16, i8* %33) | |
call void @llvm.lifetime.end(i64 16, i8* %34) | |
call void @llvm.lifetime.end(i64 32, i8* %35) | |
store %struct.Vector* %a, %struct.Vector** %.sroa.0197.0..sroa_idx, align 8 | |
%60 = bitcast %struct.Vector** %.sroa.5199.0..sroa_idx201 to <2 x %struct.Vector*>* | |
store <2 x %struct.Vector*> %46, <2 x %struct.Vector*>* %60, align 8 | |
store %struct.Vector* %a, %struct.Vector** %37, align 8 | |
invoke fastcc void @"_ZN27LHS.VectorAssign$LT$RHS$GT$6assign21h155967611411155622994v0.0E"(%struct.Vector* %a, %"struct.Divider<Adder<&'static Vector,Multiplier<&'static Vector,&'static Vector>>,&'static Vector>"* nocapture %5) | |
to label %.noexc66 unwind label %unwind_ast_3004_.loopexit.loopexit | |
.noexc47: ; preds = %.noexc47.preheader, %match_else16.i | |
%.sroa.5.8.load235 = phi i64 [ %64, %match_else16.i ], [ 0, %.noexc47.preheader ] | |
%sum.0.i = phi float [ %65, %match_else16.i ], [ 0.000000e+00, %.noexc47.preheader ] | |
%61 = icmp ult i64 %.sroa.5.8.load235, %43 | |
br i1 %61, label %match_else16.i, label %join19.i | |
match_else16.i: ; preds = %.noexc47 | |
%62 = getelementptr inbounds %"struct.core::cell::Cell<f32>[#3]"* %44, i64 %.sroa.5.8.load235, i32 0, i32 0 | |
%63 = load float* %62, align 4 | |
%64 = add i64 %.sroa.5.8.load235, 1 | |
%65 = fadd float %sum.0.i, %63 | |
br label %.noexc47 | |
join19.i: ; preds = %.noexc47 | |
%sum.0.i.lcssa = phi float [ %sum.0.i, %.noexc47 ] | |
%66 = fcmp une float %sum.0.i.lcssa, 9.600000e+01 | |
br i1 %66, label %.noexc18, label %.noexc34 | |
.noexc34: ; preds = %join19.i | |
%67 = getelementptr inbounds %str_slice* %7, i64 0, i32 0 | |
store i8* getelementptr inbounds ([11 x i8]* @str2566, i64 0, i64 0), i8** %67, align 8 | |
%68 = getelementptr inbounds %str_slice* %7, i64 0, i32 1 | |
store i64 11, i64* %68, align 8 | |
%69 = getelementptr inbounds %"struct.std::fmt::Argument[#1]"* %8, i64 0, i32 0 | |
store void (%"enum.core::result::Result<(),std::io::IoError>[#3]"*, %"enum.core::any::Void[#3]"*, %"struct.std::fmt::Formatter[#1]"*)* bitcast (void (%"enum.core::result::Result<(),std::io::IoError>[#3]"*, %str_slice*, %"struct.std::fmt::Formatter[#1]"*)* @_ZN3fmt13secret_string21h168541290156162148204v0.0E to void (%"enum.core::result::Result<(),std::io::IoError>[#3]"*, %"enum.core::any::Void[#3]"*, %"struct.std::fmt::Formatter[#1]"*)*), void (%"enum.core::result::Result<(),std::io::IoError>[#3]"*, %"enum.core::any::Void[#3]"*, %"struct.std::fmt::Formatter[#1]"*)** %69, align 8 | |
%70 = getelementptr inbounds %"struct.std::fmt::Argument[#1]"* %8, i64 0, i32 1 | |
%71 = bitcast %str_slice* %7 to %"enum.core::any::Void[#3]"* | |
store %"enum.core::any::Void[#3]"* %71, %"enum.core::any::Void[#3]"** %70, align 8 | |
%arg.i40.sroa.0.0..sroa_idx = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args.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] } }* @_ZN4test14vec_speed_loop15__STATIC_FMTSTR20h2754a7156d484e2eI1a4v0.0E to %"enum.std::fmt::rt::Piece[#1]"*), %"enum.std::fmt::rt::Piece[#1]"** %arg.i40.sroa.0.0..sroa_idx, align 8 | |
%arg.i40.sroa.4.0..sroa_idx177 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args.i, i64 0, i32 0, i32 1 | |
store i64 2, i64* %arg.i40.sroa.4.0..sroa_idx177, align 8 | |
%__adjust.sroa.0.0..sroa_idx.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args.i, i64 0, i32 1, i32 0 | |
store %"struct.std::fmt::Argument[#1]"* %8, %"struct.std::fmt::Argument[#1]"** %__adjust.sroa.0.0..sroa_idx.i, align 8 | |
%__adjust.sroa.2.0..sroa_idx1.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args.i, i64 0, i32 1, i32 1 | |
store i64 1, i64* %__adjust.sroa.2.0..sroa_idx1.i, align 8 | |
%72 = bitcast %str_slice* %4 to i8* | |
call void @llvm.lifetime.start(i64 16, i8* %72) | |
%73 = getelementptr inbounds %str_slice* %4, i64 0, i32 0 | |
store i8* getelementptr inbounds ([14 x i8]* @str2220, i64 0, i64 0), i8** %73, align 8 | |
%74 = getelementptr inbounds %str_slice* %4, i64 0, i32 1 | |
store i64 14, i64* %74, align 8 | |
invoke void @_ZN2rt6unwind16begin_unwind_fmt20h1360f91e7709ea39KsF9v0.11.preE(%"struct.std::fmt::Arguments[#1]"* nocapture %__args.i, %str_slice* nocapture %4, i64 357) | |
to label %.noexc36 unwind label %unwind_ast_3004_.loopexit.nonloopexit | |
.noexc36: ; preds = %.noexc34 | |
unreachable | |
.noexc18: ; preds = %join19.i | |
call void @llvm.lifetime.end(i64 32, i8* %28) | |
call void @llvm.lifetime.end(i64 16, i8* %29) | |
call void @llvm.lifetime.end(i64 16, i8* %30) | |
call void @llvm.lifetime.end(i64 16, i8* %31) | |
call void @llvm.lifetime.end(i64 32, i8* %32) | |
call void @llvm.lifetime.start(i64 0, i8* %27) #8 | |
call void asm "", "r,~{dirflag},~{fpsr},~{flags}"({}* %dummy.i.i) #8 | |
call void @llvm.lifetime.end(i64 0, i8* %27) #8 | |
%exitcond.i = icmp eq i64 %40, %25 | |
br i1 %exitcond.i, label %join3.i.loopexit, label %.noexc25 | |
join3.i.loopexit: ; preds = %.noexc18 | |
br label %join3.i | |
join3.i: ; preds = %join3.i.loopexit, %.noexc17 | |
%75 = invoke i64 @_ZN15precise_time_ns20h3c754008add7480eaqa9v0.11.preE() | |
to label %normal-return2 unwind label %unwind_ast_3004_.nonloopexit | |
normal-return2: ; preds = %join3.i | |
%76 = getelementptr inbounds %"struct.test::Bencher[#5]"* %0, i64 0, i32 2 | |
store i64 %75, i64* %76, align 8 | |
%.idx1.i = getelementptr %struct.Vector* %a, i64 0, i32 0, i32 2 | |
%.idx1.val.i = load %"struct.core::cell::Cell<f32>[#3]"** %.idx1.i, align 8 | |
%77 = bitcast %"struct.core::cell::Cell<f32>[#3]"* %.idx1.val.i to i8* | |
call void @free(i8* %77) #8 | |
ret void | |
unwind_ast_3004_.loopexit.loopexit: ; preds = %.noexc29, %.noexc82 | |
%lpad.loopexit238 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"struct.std::rt::libunwind::_Unwind_Exception[#1]"*, %"enum.std::rt::libunwind::_Unwind_Context[#1]"*)* @rust_eh_personality | |
cleanup | |
br label %unwind_ast_3004_ | |
unwind_ast_3004_.loopexit.nonloopexit: ; preds = %.noexc34, %.noexc93 | |
%lpad.nonloopexit239 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"struct.std::rt::libunwind::_Unwind_Exception[#1]"*, %"enum.std::rt::libunwind::_Unwind_Context[#1]"*)* @rust_eh_personality | |
cleanup | |
br label %unwind_ast_3004_ | |
unwind_ast_3004_.nonloopexit: ; preds = %normal-return1, %join3.i | |
%lpad.nonloopexit = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"struct.std::rt::libunwind::_Unwind_Exception[#1]"*, %"enum.std::rt::libunwind::_Unwind_Context[#1]"*)* @rust_eh_personality | |
cleanup | |
%.idx1.i20.pre = getelementptr %struct.Vector* %a, i64 0, i32 0, i32 2 | |
br label %unwind_ast_3004_ | |
unwind_ast_3004_: ; preds = %unwind_ast_3004_.loopexit.loopexit, %unwind_ast_3004_.loopexit.nonloopexit, %unwind_ast_3004_.nonloopexit | |
%.idx1.i20.pre-phi = phi %"struct.core::cell::Cell<f32>[#3]"** [ %.idx1.i20.pre, %unwind_ast_3004_.nonloopexit ], [ %38, %unwind_ast_3004_.loopexit.nonloopexit ], [ %38, %unwind_ast_3004_.loopexit.loopexit ] | |
%lpad.phi = phi { i8*, i32 } [ %lpad.nonloopexit, %unwind_ast_3004_.nonloopexit ], [ %lpad.nonloopexit239, %unwind_ast_3004_.loopexit.nonloopexit ], [ %lpad.loopexit238, %unwind_ast_3004_.loopexit.loopexit ] | |
%.fca.0.extract6 = extractvalue { i8*, i32 } %lpad.phi, 0 | |
%.fca.1.extract8 = extractvalue { i8*, i32 } %lpad.phi, 1 | |
%.idx1.val.i21 = load %"struct.core::cell::Cell<f32>[#3]"** %.idx1.i20.pre-phi, align 8 | |
%78 = bitcast %"struct.core::cell::Cell<f32>[#3]"* %.idx1.val.i21 to i8* | |
call void @free(i8* %78) #8 | |
br label %resume | |
} | |
declare void @_ZN8weak_rng20hfdeb0b8a85b490be0Tc9v0.11.preE(%"struct.rand::XorShiftRng[#7]"* noalias sret) unnamed_addr #6 | |
; Function Attrs: cold noreturn | |
declare void @_ZN7failure12begin_unwind20ha3b1880e6a964addrxF9v0.11.preE(%str_slice* nocapture, %str_slice* noalias nocapture, i64) unnamed_addr #7 | |
; Function Attrs: uwtable | |
define internal fastcc void @_ZN3Rng7gen_vec20h28934972009731545304v0.0E(%"struct.std::vec::Vec<f32>[#1]"* noalias nocapture sret, %"struct.rand::XorShiftRng[#7]"* noalias) unnamed_addr #1 { | |
entry-block: | |
%2 = tail call i8* @malloc(i64 40) #8 | |
%3 = icmp eq i8* %2, null | |
br i1 %3, label %then-block-3949-.i.i.i, label %"_ZN3vec12Vec$LT$T$GT$13with_capacity21h175822918645250882804v0.0E.exit.i" | |
then-block-3949-.i.i.i: ; preds = %entry-block | |
tail call void @llvm.trap() #8 | |
unreachable | |
"_ZN3vec12Vec$LT$T$GT$13with_capacity21h175822918645250882804v0.0E.exit.i": ; preds = %entry-block | |
%4 = bitcast i8* %2 to float* | |
%5 = getelementptr inbounds %"struct.rand::XorShiftRng[#7]"* %1, i64 0, i32 0 | |
%6 = getelementptr inbounds %"struct.rand::XorShiftRng[#7]"* %1, i64 0, i32 1 | |
%7 = getelementptr inbounds %"struct.rand::XorShiftRng[#7]"* %1, i64 0, i32 2 | |
%8 = getelementptr inbounds %"struct.rand::XorShiftRng[#7]"* %1, i64 0, i32 3 | |
%.promoted = load i32* %5, align 4 | |
%.promoted3 = load i32* %6, align 4 | |
%.promoted5 = load i32* %7, align 4 | |
%.promoted7 = load i32* %8, align 4 | |
%9 = shl i32 %.promoted, 11 | |
%10 = xor i32 %9, %.promoted | |
%11 = lshr i32 %.promoted7, 19 | |
%12 = lshr i32 %10, 8 | |
%13 = xor i32 %12, %10 | |
%14 = xor i32 %13, %.promoted7 | |
%15 = xor i32 %14, %11 | |
%16 = lshr i32 %15, 8 | |
%17 = uitofp i32 %16 to float | |
%18 = fmul float %17, 0x3E70000000000000 | |
store float %18, float* %4, align 4 | |
%19 = shl i32 %.promoted3, 11 | |
%20 = xor i32 %19, %.promoted3 | |
%21 = lshr i32 %14, 19 | |
%22 = lshr i32 %20, 8 | |
%23 = xor i32 %22, %20 | |
%24 = xor i32 %23, %15 | |
%25 = xor i32 %24, %21 | |
%26 = lshr i32 %25, 8 | |
%27 = uitofp i32 %26 to float | |
%28 = fmul float %27, 0x3E70000000000000 | |
%29 = getelementptr inbounds i8* %2, i64 4 | |
%30 = bitcast i8* %29 to float* | |
store float %28, float* %30, align 4 | |
%31 = shl i32 %.promoted5, 11 | |
%32 = xor i32 %31, %.promoted5 | |
%33 = lshr i32 %24, 19 | |
%34 = lshr i32 %32, 8 | |
%35 = xor i32 %34, %32 | |
%36 = xor i32 %35, %25 | |
%37 = xor i32 %36, %33 | |
%38 = lshr i32 %37, 8 | |
%39 = uitofp i32 %38 to float | |
%40 = fmul float %39, 0x3E70000000000000 | |
%41 = getelementptr inbounds i8* %2, i64 8 | |
%42 = bitcast i8* %41 to float* | |
store float %40, float* %42, align 4 | |
%43 = shl i32 %.promoted7, 11 | |
%44 = xor i32 %43, %.promoted7 | |
%45 = lshr i32 %36, 19 | |
%46 = lshr i32 %44, 8 | |
%47 = xor i32 %46, %44 | |
%48 = xor i32 %47, %37 | |
%49 = xor i32 %48, %45 | |
%50 = lshr i32 %49, 8 | |
%51 = uitofp i32 %50 to float | |
%52 = fmul float %51, 0x3E70000000000000 | |
%53 = getelementptr inbounds i8* %2, i64 12 | |
%54 = bitcast i8* %53 to float* | |
store float %52, float* %54, align 4 | |
%55 = shl i32 %15, 11 | |
%56 = xor i32 %55, %15 | |
%57 = lshr i32 %48, 19 | |
%58 = lshr i32 %56, 8 | |
%59 = xor i32 %58, %56 | |
%60 = xor i32 %59, %49 | |
%61 = xor i32 %60, %57 | |
%62 = lshr i32 %61, 8 | |
%63 = uitofp i32 %62 to float | |
%64 = fmul float %63, 0x3E70000000000000 | |
%65 = getelementptr inbounds i8* %2, i64 16 | |
%66 = bitcast i8* %65 to float* | |
store float %64, float* %66, align 4 | |
%67 = shl i32 %25, 11 | |
%68 = xor i32 %67, %25 | |
%69 = lshr i32 %60, 19 | |
%70 = lshr i32 %68, 8 | |
%71 = xor i32 %70, %68 | |
%72 = xor i32 %71, %61 | |
%73 = xor i32 %72, %69 | |
%74 = lshr i32 %73, 8 | |
%75 = uitofp i32 %74 to float | |
%76 = fmul float %75, 0x3E70000000000000 | |
%77 = getelementptr inbounds i8* %2, i64 20 | |
%78 = bitcast i8* %77 to float* | |
store float %76, float* %78, align 4 | |
%79 = shl i32 %37, 11 | |
%80 = xor i32 %79, %37 | |
%81 = lshr i32 %72, 19 | |
%82 = lshr i32 %80, 8 | |
%83 = xor i32 %82, %80 | |
%84 = xor i32 %83, %73 | |
%85 = xor i32 %84, %81 | |
%86 = lshr i32 %85, 8 | |
%87 = uitofp i32 %86 to float | |
%88 = fmul float %87, 0x3E70000000000000 | |
%89 = getelementptr inbounds i8* %2, i64 24 | |
%90 = bitcast i8* %89 to float* | |
store float %88, float* %90, align 4 | |
%91 = shl i32 %49, 11 | |
%92 = xor i32 %91, %49 | |
%93 = lshr i32 %84, 19 | |
%94 = lshr i32 %92, 8 | |
%95 = xor i32 %94, %92 | |
%96 = xor i32 %95, %85 | |
%97 = xor i32 %96, %93 | |
%98 = lshr i32 %97, 8 | |
%99 = uitofp i32 %98 to float | |
%100 = fmul float %99, 0x3E70000000000000 | |
%101 = getelementptr inbounds i8* %2, i64 28 | |
%102 = bitcast i8* %101 to float* | |
store float %100, float* %102, align 4 | |
%103 = shl i32 %61, 11 | |
%104 = xor i32 %103, %61 | |
%105 = lshr i32 %96, 19 | |
%106 = lshr i32 %104, 8 | |
%107 = xor i32 %106, %104 | |
%108 = xor i32 %107, %97 | |
%109 = xor i32 %108, %105 | |
%110 = lshr i32 %109, 8 | |
%111 = uitofp i32 %110 to float | |
%112 = fmul float %111, 0x3E70000000000000 | |
%113 = getelementptr inbounds i8* %2, i64 32 | |
%114 = bitcast i8* %113 to float* | |
store float %112, float* %114, align 4 | |
%115 = shl i32 %73, 11 | |
%116 = xor i32 %115, %73 | |
%117 = lshr i32 %108, 19 | |
%118 = lshr i32 %116, 8 | |
%119 = xor i32 %118, %116 | |
%120 = xor i32 %119, %109 | |
%121 = xor i32 %120, %117 | |
%122 = lshr i32 %121, 8 | |
%123 = uitofp i32 %122 to float | |
%124 = fmul float %123, 0x3E70000000000000 | |
%125 = getelementptr inbounds i8* %2, i64 36 | |
%126 = bitcast i8* %125 to float* | |
store float %124, float* %126, align 4 | |
store i32 %85, i32* %5, align 4 | |
store i32 %97, i32* %6, align 4 | |
store i32 %109, i32* %7, align 4 | |
store i32 %121, i32* %8, align 4 | |
%127 = bitcast %"struct.std::vec::Vec<f32>[#1]"* %0 to <2 x i64>* | |
store <2 x i64> <i64 10, i64 10>, <2 x i64>* %127, align 8 | |
%xs.sroa.12.0..sroa_idx5.i = getelementptr inbounds %"struct.std::vec::Vec<f32>[#1]"* %0, i64 0, i32 2 | |
store float* %4, float** %xs.sroa.12.0..sroa_idx5.i, align 8 | |
ret void | |
} | |
declare i64 @_ZN15precise_time_ns20h3c754008add7480eaqa9v0.11.preE() unnamed_addr #6 | |
; Function Attrs: uwtable | |
define internal fastcc void @"_ZN27LHS.VectorAssign$LT$RHS$GT$6assign21h155967611411155622994v0.0E"(%struct.Vector* nocapture readonly, %"struct.Divider<Adder<&'static Vector,Multiplier<&'static Vector,&'static Vector>>,&'static Vector>"* noalias nocapture readonly) unnamed_addr #1 { | |
entry-block: | |
%2 = alloca %str_slice, align 8 | |
%3 = alloca %str_slice, align 8 | |
%4 = alloca %"struct.std::fmt::Argument[#1]", align 8 | |
%__args = alloca %"struct.std::fmt::Arguments[#1]", align 8 | |
%.idx.i = getelementptr %struct.Vector* %0, i64 0, i32 0, i32 0 | |
%.idx.val.i = load i64* %.idx.i, align 8 | |
%.idx.i20 = getelementptr %"struct.Divider<Adder<&'static Vector,Multiplier<&'static Vector,&'static Vector>>,&'static Vector>"* %1, i64 0, i32 0, i32 0 | |
%.idx.val.i21 = load %struct.Vector** %.idx.i20, align 8 | |
%.idx.val.idx.i22 = getelementptr %struct.Vector* %.idx.val.i21, i64 0, i32 0, i32 0 | |
%.idx.val.idx.val.i23 = load i64* %.idx.val.idx.i22, align 8 | |
%5 = icmp eq i64 %.idx.val.i, %.idx.val.idx.val.i23 | |
br i1 %5, label %loop_body.preheader, label %then-block-103- | |
loop_body.preheader: ; preds = %entry-block | |
%6 = icmp eq i64 %.idx.val.i, 0 | |
br i1 %6, label %join10, label %match_else.lr.ph | |
match_else.lr.ph: ; preds = %loop_body.preheader | |
%.idx1.i.i.i = getelementptr %struct.Vector* %.idx.val.i21, i64 0, i32 0, i32 2 | |
%.idx.i.i = getelementptr %"struct.Divider<Adder<&'static Vector,Multiplier<&'static Vector,&'static Vector>>,&'static Vector>"* %1, i64 0, i32 0, i32 1, i32 0 | |
%.idx.val.i.i = load %struct.Vector** %.idx.i.i, align 8 | |
%.idx4.i.i = getelementptr %"struct.Divider<Adder<&'static Vector,Multiplier<&'static Vector,&'static Vector>>,&'static Vector>"* %1, i64 0, i32 0, i32 1, i32 1 | |
%.idx4.val.i.i = load %struct.Vector** %.idx4.i.i, align 8 | |
%.idx.val.idx.i.i = getelementptr %struct.Vector* %.idx.val.i.i, i64 0, i32 0, i32 2 | |
%.idx4.val.idx.i.i = getelementptr %struct.Vector* %.idx4.val.i.i, i64 0, i32 0, i32 2 | |
%7 = getelementptr inbounds %"struct.Divider<Adder<&'static Vector,Multiplier<&'static Vector,&'static Vector>>,&'static Vector>"* %1, i64 0, i32 1 | |
%.val.i = load %struct.Vector** %7, align 8 | |
%.idx1.i.i = getelementptr %struct.Vector* %.val.i, i64 0, i32 0, i32 2 | |
%.idx1.i = getelementptr %struct.Vector* %0, i64 0, i32 0, i32 2 | |
br label %match_else | |
then-block-103-: ; preds = %entry-block | |
%8 = getelementptr inbounds %str_slice* %3, i64 0, i32 0 | |
store i8* getelementptr inbounds ([21 x i8]* @str2547, i64 0, i64 0), i8** %8, align 8 | |
%9 = getelementptr inbounds %str_slice* %3, i64 0, i32 1 | |
store i64 21, i64* %9, align 8 | |
%10 = getelementptr inbounds %"struct.std::fmt::Argument[#1]"* %4, i64 0, i32 0 | |
store void (%"enum.core::result::Result<(),std::io::IoError>[#3]"*, %"enum.core::any::Void[#3]"*, %"struct.std::fmt::Formatter[#1]"*)* bitcast (void (%"enum.core::result::Result<(),std::io::IoError>[#3]"*, %str_slice*, %"struct.std::fmt::Formatter[#1]"*)* @_ZN3fmt13secret_string21h168541290156162148204v0.0E to void (%"enum.core::result::Result<(),std::io::IoError>[#3]"*, %"enum.core::any::Void[#3]"*, %"struct.std::fmt::Formatter[#1]"*)*), void (%"enum.core::result::Result<(),std::io::IoError>[#3]"*, %"enum.core::any::Void[#3]"*, %"struct.std::fmt::Formatter[#1]"*)** %10, align 8 | |
%11 = getelementptr inbounds %"struct.std::fmt::Argument[#1]"* %4, i64 0, i32 1 | |
%12 = bitcast %str_slice* %3 to %"enum.core::any::Void[#3]"* | |
store %"enum.core::any::Void[#3]"* %12, %"enum.core::any::Void[#3]"** %11, align 8 | |
%__adjust.sroa.0.0..sroa_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] } }* @_ZN4test14vec_speed_loop15__STATIC_FMTSTR20h2754a7156d484e2eI1a4v0.0E to %"enum.std::fmt::rt::Piece[#1]"*), %"enum.std::fmt::rt::Piece[#1]"** %__adjust.sroa.0.0..sroa_idx, align 8 | |
%__adjust.sroa.2.0..sroa_idx26 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args, i64 0, i32 0, i32 1 | |
store i64 2, i64* %__adjust.sroa.2.0..sroa_idx26, align 8 | |
%__adjust.sroa.0.0..sroa_idx.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args, i64 0, i32 1, i32 0 | |
store %"struct.std::fmt::Argument[#1]"* %4, %"struct.std::fmt::Argument[#1]"** %__adjust.sroa.0.0..sroa_idx.i, align 8 | |
%__adjust.sroa.2.0..sroa_idx1.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args, i64 0, i32 1, i32 1 | |
store i64 1, i64* %__adjust.sroa.2.0..sroa_idx1.i, align 8 | |
%13 = bitcast %str_slice* %2 to i8* | |
call void @llvm.lifetime.start(i64 16, i8* %13) | |
%14 = getelementptr inbounds %str_slice* %2, i64 0, i32 0 | |
store i8* getelementptr inbounds ([14 x i8]* @str2220, i64 0, i64 0), i8** %14, align 8 | |
%15 = getelementptr inbounds %str_slice* %2, i64 0, i32 1 | |
store i64 14, i64* %15, align 8 | |
call void @_ZN2rt6unwind16begin_unwind_fmt20h1360f91e7709ea39KsF9v0.11.preE(%"struct.std::fmt::Arguments[#1]"* nocapture %__args, %str_slice* nocapture %2, i64 38) | |
unreachable | |
match_else: ; preds = %match_else, %match_else.lr.ph | |
%.sroa.024.0.load3133 = phi i64 [ 0, %match_else.lr.ph ], [ %16, %match_else ] | |
%16 = add i64 %.sroa.024.0.load3133, 1 | |
%.idx1.val.i.i.i = load %"struct.core::cell::Cell<f32>[#3]"** %.idx1.i.i.i, align 8 | |
%17 = getelementptr inbounds %"struct.core::cell::Cell<f32>[#3]"* %.idx1.val.i.i.i, i64 %.sroa.024.0.load3133, i32 0, i32 0 | |
%18 = load float* %17, align 4 | |
%.idx.val.idx.val.i.i = load %"struct.core::cell::Cell<f32>[#3]"** %.idx.val.idx.i.i, align 8 | |
%.idx4.val.idx.val.i.i = load %"struct.core::cell::Cell<f32>[#3]"** %.idx4.val.idx.i.i, align 8 | |
%19 = getelementptr inbounds %"struct.core::cell::Cell<f32>[#3]"* %.idx.val.idx.val.i.i, i64 %.sroa.024.0.load3133, i32 0, i32 0 | |
%20 = load float* %19, align 4 | |
%21 = getelementptr inbounds %"struct.core::cell::Cell<f32>[#3]"* %.idx4.val.idx.val.i.i, i64 %.sroa.024.0.load3133, i32 0, i32 0 | |
%22 = load float* %21, align 4 | |
%23 = fmul float %20, %22 | |
%24 = fadd float %18, %23 | |
%.idx1.val.i.i = load %"struct.core::cell::Cell<f32>[#3]"** %.idx1.i.i, align 8 | |
%25 = getelementptr inbounds %"struct.core::cell::Cell<f32>[#3]"* %.idx1.val.i.i, i64 %.sroa.024.0.load3133, i32 0, i32 0 | |
%26 = load float* %25, align 4 | |
%27 = fdiv float %24, %26 | |
%.idx1.val.i = load %"struct.core::cell::Cell<f32>[#3]"** %.idx1.i, align 8 | |
%28 = getelementptr inbounds %"struct.core::cell::Cell<f32>[#3]"* %.idx1.val.i, i64 %.sroa.024.0.load3133, i32 0, i32 0 | |
store float %27, float* %28, align 4 | |
%exitcond = icmp eq i64 %16, %.idx.val.i | |
br i1 %exitcond, label %join10.loopexit, label %match_else | |
join10.loopexit: ; preds = %match_else | |
br label %join10 | |
join10: ; preds = %join10.loopexit, %loop_body.preheader | |
ret void | |
} | |
; Function Attrs: uwtable | |
define internal void @_ZN3fmt13secret_string21h168541290156162148204v0.0E(%"enum.core::result::Result<(),std::io::IoError>[#3]"* noalias nocapture sret, %str_slice* nocapture readonly, %"struct.std::fmt::Formatter[#1]"* noalias) unnamed_addr #1 { | |
entry-block: | |
%3 = alloca %str_slice, align 8 | |
%4 = bitcast %str_slice* %3 to i8* | |
call void @llvm.lifetime.start(i64 16, i8* %4) | |
%5 = bitcast %str_slice* %1 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 16, i32 8, i1 false) #8 | |
call void @"_ZN3fmt22Formatter$LT$$x27a$GT$3pad20h30fa0e01affd8d1aHJv9v0.11.preE"(%"enum.core::result::Result<(),std::io::IoError>[#3]"* noalias nocapture sret %0, %"struct.std::fmt::Formatter[#1]"* %2, %str_slice* nocapture %3) | |
call void @llvm.lifetime.end(i64 16, i8* %4) | |
ret void | |
} | |
declare void @"_ZN3fmt22Formatter$LT$$x27a$GT$3pad20h30fa0e01affd8d1aHJv9v0.11.preE"(%"enum.core::result::Result<(),std::io::IoError>[#3]"* noalias sret, %"struct.std::fmt::Formatter[#1]"* noalias, %str_slice* nocapture) unnamed_addr #6 | |
; Function Attrs: uwtable | |
define internal fastcc void @"_ZN29Multiplier$LT$TA$C$$x20TB$GT$3new20h43690195969142038944v0.0E"(%"struct.Multiplier<&'static Vector,&'static Vector>"* noalias nocapture sret, %struct.Vector*, %struct.Vector*) unnamed_addr #1 { | |
entry-block: | |
%3 = alloca %str_slice, align 8 | |
%4 = alloca %str_slice, align 8 | |
%5 = alloca %"struct.std::fmt::Argument[#1]", align 8 | |
%__args = alloca %"struct.std::fmt::Arguments[#1]", align 8 | |
%.idx.i = getelementptr %struct.Vector* %1, i64 0, i32 0, i32 0 | |
%.idx.val.i = load i64* %.idx.i, align 8 | |
%.idx.i5 = getelementptr %struct.Vector* %2, i64 0, i32 0, i32 0 | |
%.idx.val.i6 = load i64* %.idx.i5, align 8 | |
%6 = icmp eq i64 %.idx.val.i, %.idx.val.i6 | |
br i1 %6, label %next-block, label %then-block-1383- | |
then-block-1383-: ; preds = %entry-block | |
%7 = getelementptr inbounds %str_slice* %4, i64 0, i32 0 | |
store i8* getelementptr inbounds ([18 x i8]* @str2563, i64 0, i64 0), i8** %7, align 8 | |
%8 = getelementptr inbounds %str_slice* %4, i64 0, i32 1 | |
store i64 18, i64* %8, align 8 | |
%9 = getelementptr inbounds %"struct.std::fmt::Argument[#1]"* %5, i64 0, i32 0 | |
store void (%"enum.core::result::Result<(),std::io::IoError>[#3]"*, %"enum.core::any::Void[#3]"*, %"struct.std::fmt::Formatter[#1]"*)* bitcast (void (%"enum.core::result::Result<(),std::io::IoError>[#3]"*, %str_slice*, %"struct.std::fmt::Formatter[#1]"*)* @_ZN3fmt13secret_string21h168541290156162148204v0.0E to void (%"enum.core::result::Result<(),std::io::IoError>[#3]"*, %"enum.core::any::Void[#3]"*, %"struct.std::fmt::Formatter[#1]"*)*), void (%"enum.core::result::Result<(),std::io::IoError>[#3]"*, %"enum.core::any::Void[#3]"*, %"struct.std::fmt::Formatter[#1]"*)** %9, align 8 | |
%10 = getelementptr inbounds %"struct.std::fmt::Argument[#1]"* %5, i64 0, i32 1 | |
%11 = bitcast %str_slice* %4 to %"enum.core::any::Void[#3]"* | |
store %"enum.core::any::Void[#3]"* %11, %"enum.core::any::Void[#3]"** %10, align 8 | |
%__adjust.sroa.0.0..sroa_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] } }* @_ZN4test14vec_speed_loop15__STATIC_FMTSTR20h2754a7156d484e2eI1a4v0.0E to %"enum.std::fmt::rt::Piece[#1]"*), %"enum.std::fmt::rt::Piece[#1]"** %__adjust.sroa.0.0..sroa_idx, align 8 | |
%__adjust.sroa.2.0..sroa_idx7 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args, i64 0, i32 0, i32 1 | |
store i64 2, i64* %__adjust.sroa.2.0..sroa_idx7, align 8 | |
%__adjust.sroa.0.0..sroa_idx.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args, i64 0, i32 1, i32 0 | |
store %"struct.std::fmt::Argument[#1]"* %5, %"struct.std::fmt::Argument[#1]"** %__adjust.sroa.0.0..sroa_idx.i, align 8 | |
%__adjust.sroa.2.0..sroa_idx1.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args, i64 0, i32 1, i32 1 | |
store i64 1, i64* %__adjust.sroa.2.0..sroa_idx1.i, align 8 | |
%12 = bitcast %str_slice* %3 to i8* | |
call void @llvm.lifetime.start(i64 16, i8* %12) | |
%13 = getelementptr inbounds %str_slice* %3, i64 0, i32 0 | |
store i8* getelementptr inbounds ([14 x i8]* @str2220, i64 0, i64 0), i8** %13, align 8 | |
%14 = getelementptr inbounds %str_slice* %3, i64 0, i32 1 | |
store i64 14, i64* %14, align 8 | |
call void @_ZN2rt6unwind16begin_unwind_fmt20h1360f91e7709ea39KsF9v0.11.preE(%"struct.std::fmt::Arguments[#1]"* nocapture %__args, %str_slice* nocapture %3, i64 322) | |
unreachable | |
next-block: ; preds = %entry-block | |
%15 = getelementptr inbounds %"struct.Multiplier<&'static Vector,&'static Vector>"* %0, i64 0, i32 0 | |
store %struct.Vector* %1, %struct.Vector** %15, align 8 | |
%16 = getelementptr inbounds %"struct.Multiplier<&'static Vector,&'static Vector>"* %0, i64 0, i32 1 | |
store %struct.Vector* %2, %struct.Vector** %16, align 8 | |
ret void | |
} | |
; Function Attrs: uwtable | |
define void @_ZN4test14vec_speed_loop20he36626d22787d321hZa4v0.0E(%"struct.test::Bencher[#5]"* noalias nocapture) unnamed_addr #1 { | |
entry-block: | |
%dummy.i.i = alloca {}, align 8 | |
%1 = alloca %str_slice, align 8 | |
%2 = alloca %str_slice, align 8 | |
%3 = alloca %"struct.std::fmt::Argument[#1]", align 8 | |
%__args.i = alloca %"struct.std::fmt::Arguments[#1]", align 8 | |
%4 = alloca %str_slice, align 8 | |
%5 = alloca %str_slice, align 8 | |
%rng = alloca %"struct.rand::XorShiftRng[#7]", align 8 | |
%a = alloca %struct.Vector, align 8 | |
%6 = alloca %"struct.std::vec::Vec<f32>[#1]", align 8 | |
call void @_ZN8weak_rng20hfdeb0b8a85b490be0Tc9v0.11.preE(%"struct.rand::XorShiftRng[#7]"* noalias nocapture sret %rng) | |
call fastcc void @_ZN3Rng7gen_vec20h28934972009731545304v0.0E(%"struct.std::vec::Vec<f32>[#1]"* noalias nocapture sret %6, %"struct.rand::XorShiftRng[#7]"* %rng) | |
%.idx12 = getelementptr %"struct.std::vec::Vec<f32>[#1]"* %6, i64 0, i32 0 | |
%.idx12.val = load i64* %.idx12, align 8 | |
%.idx13 = getelementptr %"struct.std::vec::Vec<f32>[#1]"* %6, i64 0, i32 2 | |
%.idx13.val = load float** %.idx13, align 8 | |
%7 = bitcast %str_slice* %4 to i8* | |
call void @llvm.lifetime.start(i64 16, i8* %7) | |
%8 = bitcast %str_slice* %5 to i8* | |
call void @llvm.lifetime.start(i64 16, i8* %8) | |
%9 = icmp ugt i64 %.idx12.val, 9 | |
br i1 %9, label %normal-return, label %then-block-5126-.i.i | |
then-block-5126-.i.i: ; preds = %entry-block | |
%10 = getelementptr inbounds %str_slice* %4, i64 0, i32 0 | |
store i8* getelementptr inbounds ([35 x i8]* @str2501, i64 0, i64 0), i8** %10, align 8 | |
%11 = getelementptr inbounds %str_slice* %4, i64 0, i32 1 | |
store i64 35, i64* %11, align 8 | |
%12 = getelementptr inbounds %str_slice* %5, i64 0, i32 0 | |
store i8* getelementptr inbounds ([42 x i8]* @str2500, i64 0, i64 0), i8** %12, align 8 | |
%13 = getelementptr inbounds %str_slice* %5, i64 0, i32 1 | |
store i64 42, i64* %13, align 8 | |
invoke void @_ZN7failure12begin_unwind20ha3b1880e6a964addrxF9v0.11.preE(%str_slice* nocapture %4, %str_slice* nocapture %5, i64 549) | |
to label %.noexc unwind label %unwind_ast_3183_ | |
.noexc: ; preds = %then-block-5126-.i.i | |
unreachable | |
normal-return: ; preds = %entry-block | |
call void @llvm.lifetime.end(i64 16, i8* %7) | |
call void @llvm.lifetime.end(i64 16, i8* %8) | |
invoke fastcc void @_ZN6Vector3new20hf0f9aad5a0222bb5Uda4v0.0E(%struct.Vector* noalias nocapture sret %a, float* %.idx13.val, i64 10) | |
to label %normal-return1 unwind label %unwind_ast_3183_ | |
unwind_ast_3183_: ; preds = %then-block-5126-.i.i, %normal-return | |
%14 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"struct.std::rt::libunwind::_Unwind_Exception[#1]"*, %"enum.std::rt::libunwind::_Unwind_Context[#1]"*)* @rust_eh_personality | |
cleanup | |
%.fca.0.extract = extractvalue { i8*, i32 } %14, 0 | |
%.fca.1.extract = extractvalue { i8*, i32 } %14, 1 | |
%15 = bitcast float* %.idx13.val to i8* | |
call void @free(i8* %15) #8 | |
br label %resume | |
resume: ; preds = %unwind_ast_3176_, %unwind_ast_3183_ | |
%.sroa.3.0 = phi i32 [ %.fca.1.extract8, %unwind_ast_3176_ ], [ %.fca.1.extract, %unwind_ast_3183_ ] | |
%.sroa.0.0 = phi i8* [ %.fca.0.extract6, %unwind_ast_3176_ ], [ %.fca.0.extract, %unwind_ast_3183_ ] | |
%.fca.0.insert = insertvalue { i8*, i32 } undef, i8* %.sroa.0.0, 0 | |
%.fca.1.insert = insertvalue { i8*, i32 } %.fca.0.insert, i32 %.sroa.3.0, 1 | |
resume { i8*, i32 } %.fca.1.insert | |
normal-return1: ; preds = %normal-return | |
%16 = bitcast float* %.idx13.val to i8* | |
call void @free(i8* %16) #8 | |
%17 = invoke i64 @_ZN15precise_time_ns20h3c754008add7480eaqa9v0.11.preE() | |
to label %.noexc17 unwind label %unwind_ast_3176_.nonloopexit | |
.noexc17: ; preds = %normal-return1 | |
%18 = getelementptr inbounds %"struct.test::Bencher[#5]"* %0, i64 0, i32 1 | |
store i64 %17, i64* %18, align 8 | |
%19 = getelementptr inbounds %"struct.test::Bencher[#5]"* %0, i64 0, i32 0 | |
%20 = load i64* %19, align 8 | |
%21 = icmp eq i64 %20, 0 | |
br i1 %21, label %join3.i, label %match_else.lr.ph.i | |
match_else.lr.ph.i: ; preds = %.noexc17 | |
%22 = bitcast {}* %dummy.i.i to i8* | |
%23 = bitcast %str_slice* %2 to i8* | |
%24 = bitcast %"struct.std::fmt::Argument[#1]"* %3 to i8* | |
%25 = bitcast %"struct.std::fmt::Arguments[#1]"* %__args.i to i8* | |
%.idx.i45 = getelementptr %struct.Vector* %a, i64 0, i32 0, i32 0 | |
%.idx.val.i46 = load i64* %.idx.i45, align 8 | |
%26 = icmp eq i64 %.idx.val.i46, 0 | |
%.idx1.i41 = getelementptr %struct.Vector* %a, i64 0, i32 0, i32 2 | |
%.idx1.val.i42 = load %"struct.core::cell::Cell<f32>[#3]"** %.idx1.i41, align 8 | |
br i1 %26, label %match_else.i.match_else.i.split_crit_edge.preheader, label %match_else.i.split.us.us.preheader | |
match_else.i.split.us.us.preheader: ; preds = %match_else.lr.ph.i | |
br label %match_else.i.split.us.us | |
match_else.i.match_else.i.split_crit_edge.preheader: ; preds = %match_else.lr.ph.i | |
br label %match_else.i.match_else.i.split_crit_edge | |
loop_body23.i.us: ; preds = %loop_body23.i.us.preheader, %match_else29.i.us | |
%.sroa.5.8.load86.us = phi i64 [ %30, %match_else29.i.us ], [ 0, %loop_body23.i.us.preheader ] | |
%sum.0.i.us = phi float [ %31, %match_else29.i.us ], [ 0.000000e+00, %loop_body23.i.us.preheader ] | |
%27 = icmp ult i64 %.sroa.5.8.load86.us, %.idx.val.i46 | |
br i1 %27, label %match_else29.i.us, label %join32.i.us | |
match_else29.i.us: ; preds = %loop_body23.i.us | |
%28 = getelementptr inbounds %"struct.core::cell::Cell<f32>[#3]"* %.idx1.val.i42, i64 %.sroa.5.8.load86.us, i32 0, i32 0 | |
%29 = load float* %28, align 4 | |
%30 = add i64 %.sroa.5.8.load86.us, 1 | |
%31 = fadd float %sum.0.i.us, %29 | |
br label %loop_body23.i.us | |
join32.i.us: ; preds = %loop_body23.i.us | |
%sum.0.i.us.lcssa = phi float [ %sum.0.i.us, %loop_body23.i.us ] | |
%32 = fcmp une float %sum.0.i.us.lcssa, 9.600000e+01 | |
br i1 %32, label %.noexc18.us, label %then-block-3294-.i | |
.noexc18.us: ; preds = %join32.i.us | |
call void @llvm.lifetime.end(i64 16, i8* %23) | |
call void @llvm.lifetime.end(i64 16, i8* %24) | |
call void @llvm.lifetime.end(i64 32, i8* %25) | |
call void @llvm.lifetime.start(i64 0, i8* %22) #8 | |
call void asm "", "r,~{dirflag},~{fpsr},~{flags}"({}* %dummy.i.i) #8 | |
call void @llvm.lifetime.end(i64 0, i8* %22) #8 | |
%exitcond.i.us = icmp eq i64 %55, %20 | |
br i1 %exitcond.i.us, label %join3.i.loopexit131, label %match_else.i.split.us.us | |
loop_body.i.loopexit.us.us.loopexit: ; preds = %.noexc25.us.us | |
br label %loop_body.i.loopexit.us.us | |
loop_body.i.loopexit.us.us: ; preds = %loop_body.i.loopexit.us.us.loopexit, %middle.block | |
%exitcond112 = icmp eq i64 %34, 100 | |
br i1 %exitcond112, label %loop_body23.i.us.preheader, label %.noexc25.lr.ph.us.us | |
loop_body23.i.us.preheader: ; preds = %loop_body.i.loopexit.us.us | |
br label %loop_body23.i.us | |
.noexc25.lr.ph.us.us: ; preds = %match_else.i.split.us.us, %loop_body.i.loopexit.us.us | |
%33 = phi i64 [ 0, %match_else.i.split.us.us ], [ %34, %loop_body.i.loopexit.us.us ] | |
%34 = add i64 %33, 1 | |
%n.vec = and i64 %.idx.val.i46, -8 | |
%cmp.zero = icmp eq i64 %n.vec, 0 | |
br i1 %cmp.zero, label %middle.block, label %vector.body.preheader | |
vector.body.preheader: ; preds = %.noexc25.lr.ph.us.us | |
br label %vector.body | |
vector.body: ; preds = %vector.body.preheader, %vector.body | |
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ] | |
%35 = getelementptr inbounds %"struct.core::cell::Cell<f32>[#3]"* %.idx1.val.i42, i64 %index, i32 0, i32 0 | |
%36 = bitcast float* %35 to <4 x float>* | |
%wide.load = load <4 x float>* %36, align 4 | |
%37 = getelementptr float* %35, i64 4 | |
%38 = bitcast float* %37 to <4 x float>* | |
%wide.load116 = load <4 x float>* %38, align 4 | |
%39 = fmul <4 x float> %wide.load, %wide.load | |
%40 = fmul <4 x float> %wide.load116, %wide.load116 | |
%41 = fadd <4 x float> %wide.load, %39 | |
%42 = fadd <4 x float> %wide.load116, %40 | |
%43 = fdiv <4 x float> %41, %wide.load | |
%44 = fdiv <4 x float> %42, %wide.load116 | |
%45 = bitcast float* %35 to <4 x float>* | |
store <4 x float> %43, <4 x float>* %45, align 4 | |
%46 = bitcast float* %37 to <4 x float>* | |
store <4 x float> %44, <4 x float>* %46, align 4 | |
%index.next = add i64 %index, 8 | |
%47 = icmp eq i64 %index.next, %n.vec | |
br i1 %47, label %middle.block.loopexit, label %vector.body, !llvm.loop !0 | |
middle.block.loopexit: ; preds = %vector.body | |
br label %middle.block | |
middle.block: ; preds = %middle.block.loopexit, %.noexc25.lr.ph.us.us | |
%resume.val = phi i64 [ 0, %.noexc25.lr.ph.us.us ], [ %n.vec, %middle.block.loopexit ] | |
%cmp.n = icmp eq i64 %.idx.val.i46, %resume.val | |
br i1 %cmp.n, label %loop_body.i.loopexit.us.us, label %.noexc25.us.us.preheader | |
.noexc25.us.us.preheader: ; preds = %middle.block | |
br label %.noexc25.us.us | |
.noexc25.us.us: ; preds = %.noexc25.us.us.preheader, %.noexc25.us.us | |
%.sroa.065.0..val.i449397.us.us = phi i64 [ %48, %.noexc25.us.us ], [ %resume.val, %.noexc25.us.us.preheader ] | |
%48 = add i64 %.sroa.065.0..val.i449397.us.us, 1 | |
%49 = getelementptr inbounds %"struct.core::cell::Cell<f32>[#3]"* %.idx1.val.i42, i64 %.sroa.065.0..val.i449397.us.us, i32 0, i32 0 | |
%50 = load float* %49, align 4 | |
%51 = fmul float %50, %50 | |
%52 = fadd float %50, %51 | |
%53 = fdiv float %52, %50 | |
store float %53, float* %49, align 4 | |
%exitcond111 = icmp eq i64 %48, %.idx.val.i46 | |
br i1 %exitcond111, label %loop_body.i.loopexit.us.us.loopexit, label %.noexc25.us.us, !llvm.loop !3 | |
match_else.i.split.us.us: ; preds = %match_else.i.split.us.us.preheader, %.noexc18.us | |
%54 = phi i64 [ %55, %.noexc18.us ], [ 0, %match_else.i.split.us.us.preheader ] | |
%55 = add i64 %54, 1 | |
call void @llvm.lifetime.start(i64 16, i8* %23) | |
call void @llvm.lifetime.start(i64 16, i8* %24) | |
call void @llvm.lifetime.start(i64 32, i8* %25) | |
br label %.noexc25.lr.ph.us.us | |
match_else.i.match_else.i.split_crit_edge: ; preds = %match_else.i.match_else.i.split_crit_edge.preheader, %loop_body.i.loopexit | |
%56 = phi i64 [ %57, %loop_body.i.loopexit ], [ 0, %match_else.i.match_else.i.split_crit_edge.preheader ] | |
%57 = add i64 %56, 1 | |
call void @llvm.lifetime.start(i64 16, i8* %23) | |
call void @llvm.lifetime.start(i64 16, i8* %24) | |
call void @llvm.lifetime.start(i64 32, i8* %25) | |
br label %vector.body120 | |
vector.body120: ; preds = %match_else.i.match_else.i.split_crit_edge | |
br label %loop_body.i.loopexit | |
loop_body.i.loopexit: ; preds = %vector.body120 | |
call void @llvm.lifetime.end(i64 16, i8* %23) | |
call void @llvm.lifetime.end(i64 16, i8* %24) | |
call void @llvm.lifetime.end(i64 32, i8* %25) | |
call void @llvm.lifetime.start(i64 0, i8* %22) #8 | |
call void asm "", "r,~{dirflag},~{fpsr},~{flags}"({}* %dummy.i.i) #8 | |
call void @llvm.lifetime.end(i64 0, i8* %22) #8 | |
%exitcond.i = icmp eq i64 %57, %20 | |
br i1 %exitcond.i, label %join3.i.loopexit, label %match_else.i.match_else.i.split_crit_edge | |
then-block-3294-.i: ; preds = %join32.i.us | |
%58 = getelementptr inbounds %str_slice* %2, i64 0, i32 0 | |
store i8* getelementptr inbounds ([11 x i8]* @str2566, i64 0, i64 0), i8** %58, align 8 | |
%59 = getelementptr inbounds %str_slice* %2, i64 0, i32 1 | |
store i64 11, i64* %59, align 8 | |
%60 = getelementptr inbounds %"struct.std::fmt::Argument[#1]"* %3, i64 0, i32 0 | |
store void (%"enum.core::result::Result<(),std::io::IoError>[#3]"*, %"enum.core::any::Void[#3]"*, %"struct.std::fmt::Formatter[#1]"*)* bitcast (void (%"enum.core::result::Result<(),std::io::IoError>[#3]"*, %str_slice*, %"struct.std::fmt::Formatter[#1]"*)* @_ZN3fmt13secret_string21h168541290156162148204v0.0E to void (%"enum.core::result::Result<(),std::io::IoError>[#3]"*, %"enum.core::any::Void[#3]"*, %"struct.std::fmt::Formatter[#1]"*)*), void (%"enum.core::result::Result<(),std::io::IoError>[#3]"*, %"enum.core::any::Void[#3]"*, %"struct.std::fmt::Formatter[#1]"*)** %60, align 8 | |
%61 = getelementptr inbounds %"struct.std::fmt::Argument[#1]"* %3, i64 0, i32 1 | |
%62 = bitcast %str_slice* %2 to %"enum.core::any::Void[#3]"* | |
store %"enum.core::any::Void[#3]"* %62, %"enum.core::any::Void[#3]"** %61, align 8 | |
%__adjust.i.sroa.0.0..sroa_idx = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args.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] } }* @_ZN4test14vec_speed_loop15__STATIC_FMTSTR20h2754a7156d484e2eI1a4v0.0E to %"enum.std::fmt::rt::Piece[#1]"*), %"enum.std::fmt::rt::Piece[#1]"** %__adjust.i.sroa.0.0..sroa_idx, align 8 | |
%__adjust.i.sroa.4.0..sroa_idx56 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args.i, i64 0, i32 0, i32 1 | |
store i64 2, i64* %__adjust.i.sroa.4.0..sroa_idx56, align 8 | |
%__adjust.sroa.0.0..sroa_idx.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args.i, i64 0, i32 1, i32 0 | |
store %"struct.std::fmt::Argument[#1]"* %3, %"struct.std::fmt::Argument[#1]"** %__adjust.sroa.0.0..sroa_idx.i, align 8 | |
%__adjust.sroa.2.0..sroa_idx1.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args.i, i64 0, i32 1, i32 1 | |
store i64 1, i64* %__adjust.sroa.2.0..sroa_idx1.i, align 8 | |
%63 = bitcast %str_slice* %1 to i8* | |
call void @llvm.lifetime.start(i64 16, i8* %63) | |
%64 = getelementptr inbounds %str_slice* %1, i64 0, i32 0 | |
store i8* getelementptr inbounds ([14 x i8]* @str2220, i64 0, i64 0), i8** %64, align 8 | |
%65 = getelementptr inbounds %str_slice* %1, i64 0, i32 1 | |
store i64 14, i64* %65, align 8 | |
invoke void @_ZN2rt6unwind16begin_unwind_fmt20h1360f91e7709ea39KsF9v0.11.preE(%"struct.std::fmt::Arguments[#1]"* nocapture %__args.i, %str_slice* nocapture %1, i64 385) | |
to label %.noexc29 unwind label %unwind_ast_3176_.loopexit | |
.noexc29: ; preds = %then-block-3294-.i | |
unreachable | |
join3.i.loopexit: ; preds = %loop_body.i.loopexit | |
br label %join3.i | |
join3.i.loopexit131: ; preds = %.noexc18.us | |
br label %join3.i | |
join3.i: ; preds = %join3.i.loopexit131, %join3.i.loopexit, %.noexc17 | |
%66 = invoke i64 @_ZN15precise_time_ns20h3c754008add7480eaqa9v0.11.preE() | |
to label %normal-return2 unwind label %unwind_ast_3176_.nonloopexit | |
normal-return2: ; preds = %join3.i | |
%67 = getelementptr inbounds %"struct.test::Bencher[#5]"* %0, i64 0, i32 2 | |
store i64 %66, i64* %67, align 8 | |
%.idx1.i = getelementptr %struct.Vector* %a, i64 0, i32 0, i32 2 | |
%.idx1.val.i = load %"struct.core::cell::Cell<f32>[#3]"** %.idx1.i, align 8 | |
%68 = bitcast %"struct.core::cell::Cell<f32>[#3]"* %.idx1.val.i to i8* | |
call void @free(i8* %68) #8 | |
ret void | |
unwind_ast_3176_.loopexit: ; preds = %then-block-3294-.i | |
%lpad.loopexit = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"struct.std::rt::libunwind::_Unwind_Exception[#1]"*, %"enum.std::rt::libunwind::_Unwind_Context[#1]"*)* @rust_eh_personality | |
cleanup | |
br label %unwind_ast_3176_ | |
unwind_ast_3176_.nonloopexit: ; preds = %normal-return1, %join3.i | |
%lpad.nonloopexit = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"struct.std::rt::libunwind::_Unwind_Exception[#1]"*, %"enum.std::rt::libunwind::_Unwind_Context[#1]"*)* @rust_eh_personality | |
cleanup | |
%.idx1.i20.phi.trans.insert = getelementptr %struct.Vector* %a, i64 0, i32 0, i32 2 | |
%.idx1.val.i21.pre = load %"struct.core::cell::Cell<f32>[#3]"** %.idx1.i20.phi.trans.insert, align 8 | |
br label %unwind_ast_3176_ | |
unwind_ast_3176_: ; preds = %unwind_ast_3176_.nonloopexit, %unwind_ast_3176_.loopexit | |
%.idx1.val.i21 = phi %"struct.core::cell::Cell<f32>[#3]"* [ %.idx1.val.i42, %unwind_ast_3176_.loopexit ], [ %.idx1.val.i21.pre, %unwind_ast_3176_.nonloopexit ] | |
%lpad.phi = phi { i8*, i32 } [ %lpad.loopexit, %unwind_ast_3176_.loopexit ], [ %lpad.nonloopexit, %unwind_ast_3176_.nonloopexit ] | |
%.fca.0.extract6 = extractvalue { i8*, i32 } %lpad.phi, 0 | |
%.fca.1.extract8 = extractvalue { i8*, i32 } %lpad.phi, 1 | |
%69 = bitcast %"struct.core::cell::Cell<f32>[#3]"* %.idx1.val.i21 to i8* | |
call void @free(i8* %69) #8 | |
br label %resume | |
} | |
; Function Attrs: uwtable | |
define internal void @_ZN6__test4main20hc397ed8eb090ed20u2a4v0.0E() unnamed_addr #1 { | |
normal-return: | |
%0 = alloca %"struct.std::vec::Vec<~str>[#1]", align 8 | |
%__adjust = alloca { { i64, i64, [0 x i8] }**, i64 }, align 8 | |
%__adjust1 = alloca { %"struct.test::TestDescAndFn[#5]"*, i64 }, align 8 | |
call void @_ZN2os4args20hc2b572ca80555f59AKm9v0.11.preE(%"struct.std::vec::Vec<~str>[#1]"* noalias nocapture sret %0) | |
%.idx = getelementptr %"struct.std::vec::Vec<~str>[#1]"* %0, i64 0, i32 0 | |
%.idx.val = load i64* %.idx, align 8 | |
%.idx5 = getelementptr %"struct.std::vec::Vec<~str>[#1]"* %0, i64 0, i32 2 | |
%.idx5.val = load { i64, i64, [0 x i8] }*** %.idx5, align 8 | |
%1 = getelementptr inbounds { { i64, i64, [0 x i8] }**, i64 }* %__adjust, i64 0, i32 0 | |
store { i64, i64, [0 x i8] }** %.idx5.val, { i64, i64, [0 x i8] }*** %1, align 8 | |
%2 = getelementptr inbounds { { i64, i64, [0 x i8] }**, i64 }* %__adjust, i64 0, i32 1 | |
store i64 %.idx.val, i64* %2, align 8 | |
%3 = getelementptr inbounds { %"struct.test::TestDescAndFn[#5]"*, i64 }* %__adjust1, i64 0, i32 0 | |
store %"struct.test::TestDescAndFn[#5]"* bitcast ({ { { { i8, { i8*, i64 }, [0 x i8] }, i8, i8, [6 x i8] }, { i8, void (%"struct.test::Bencher[#5]"*)*, [8 x i8] } }, { { { i8, { i8*, i64 }, [0 x i8] }, i8, i8, [6 x i8] }, { i8, void (%"struct.test::Bencher[#5]"*)*, [8 x i8] } } }* @const to %"struct.test::TestDescAndFn[#5]"*), %"struct.test::TestDescAndFn[#5]"** %3, align 8 | |
%4 = getelementptr inbounds { %"struct.test::TestDescAndFn[#5]"*, i64 }* %__adjust1, i64 0, i32 1 | |
store i64 2, i64* %4, align 8 | |
invoke void @_ZN16test_main_static20hdca621cfdea2c272dqb9v0.11.preE({ { i64, i64, [0 x i8] }**, i64 }* nocapture %__adjust, { %"struct.test::TestDescAndFn[#5]"*, i64 }* nocapture %__adjust1) | |
to label %normal-return2 unwind label %unwind_ast_3372_ | |
unwind_ast_3372_: ; preds = %normal-return | |
%5 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"struct.std::rt::libunwind::_Unwind_Exception[#1]"*, %"enum.std::rt::libunwind::_Unwind_Context[#1]"*)* @rust_eh_personality | |
cleanup | |
%6 = getelementptr inbounds { i64, i64, [0 x i8] }** %.idx5.val, i64 %.idx.val | |
%7 = icmp eq i64 %.idx.val, 0 | |
br i1 %7, label %"_ZN28std..vec..Vec$LT$$UP$str$GT$14glue_drop.257217h34549b3bf7b232a7E.exit16", label %"_ZN5slice57Items$LT$$x27a$C$$x20T$GT$.Iterator$LT$$BP$$x27a$x20T$GT$4next21h151933131302908977094v0.0E.exit.i.i11.preheader" | |
"_ZN5slice57Items$LT$$x27a$C$$x20T$GT$.Iterator$LT$$BP$$x27a$x20T$GT$4next21h151933131302908977094v0.0E.exit.i.i11.preheader": ; preds = %unwind_ast_3372_ | |
br label %"_ZN5slice57Items$LT$$x27a$C$$x20T$GT$.Iterator$LT$$BP$$x27a$x20T$GT$4next21h151933131302908977094v0.0E.exit.i.i11" | |
"_ZN5slice57Items$LT$$x27a$C$$x20T$GT$.Iterator$LT$$BP$$x27a$x20T$GT$4next21h151933131302908977094v0.0E.exit.i.i11": ; preds = %"_ZN5slice57Items$LT$$x27a$C$$x20T$GT$.Iterator$LT$$BP$$x27a$x20T$GT$4next21h151933131302908977094v0.0E.exit.i.i11.preheader", %loop_body.backedge.i.i14 | |
%.0.2.val34.i.i10 = phi { i64, i64, [0 x i8] }** [ %8, %loop_body.backedge.i.i14 ], [ %.idx5.val, %"_ZN5slice57Items$LT$$x27a$C$$x20T$GT$.Iterator$LT$$BP$$x27a$x20T$GT$4next21h151933131302908977094v0.0E.exit.i.i11.preheader" ] | |
%8 = getelementptr inbounds { i64, i64, [0 x i8] }** %.0.2.val34.i.i10, i64 1 | |
%9 = icmp eq { i64, i64, [0 x i8] }** %.0.2.val34.i.i10, null | |
br i1 %9, label %"_ZN28std..vec..Vec$LT$$UP$str$GT$14glue_drop.257217h34549b3bf7b232a7E.exit16.loopexit", label %match_else.i.i13 | |
match_else.i.i13: ; preds = %"_ZN5slice57Items$LT$$x27a$C$$x20T$GT$.Iterator$LT$$BP$$x27a$x20T$GT$4next21h151933131302908977094v0.0E.exit.i.i11" | |
%.val.i.i12 = load { i64, i64, [0 x i8] }** %.0.2.val34.i.i10, align 8 | |
%10 = icmp eq { i64, i64, [0 x i8] }* %.val.i.i12, null | |
br i1 %10, label %loop_body.backedge.i.i14, label %cond.i.i.i15 | |
loop_body.backedge.i.i14: ; preds = %cond.i.i.i15, %match_else.i.i13 | |
%11 = icmp eq { i64, i64, [0 x i8] }** %8, %6 | |
br i1 %11, label %"_ZN28std..vec..Vec$LT$$UP$str$GT$14glue_drop.257217h34549b3bf7b232a7E.exit16.loopexit", label %"_ZN5slice57Items$LT$$x27a$C$$x20T$GT$.Iterator$LT$$BP$$x27a$x20T$GT$4next21h151933131302908977094v0.0E.exit.i.i11" | |
cond.i.i.i15: ; preds = %match_else.i.i13 | |
%12 = bitcast { i64, i64, [0 x i8] }* %.val.i.i12 to i8* | |
tail call void @free(i8* %12) #8 | |
br label %loop_body.backedge.i.i14 | |
"_ZN28std..vec..Vec$LT$$UP$str$GT$14glue_drop.257217h34549b3bf7b232a7E.exit16.loopexit": ; preds = %loop_body.backedge.i.i14, %"_ZN5slice57Items$LT$$x27a$C$$x20T$GT$.Iterator$LT$$BP$$x27a$x20T$GT$4next21h151933131302908977094v0.0E.exit.i.i11" | |
br label %"_ZN28std..vec..Vec$LT$$UP$str$GT$14glue_drop.257217h34549b3bf7b232a7E.exit16" | |
"_ZN28std..vec..Vec$LT$$UP$str$GT$14glue_drop.257217h34549b3bf7b232a7E.exit16": ; preds = %"_ZN28std..vec..Vec$LT$$UP$str$GT$14glue_drop.257217h34549b3bf7b232a7E.exit16.loopexit", %unwind_ast_3372_ | |
%13 = bitcast { i64, i64, [0 x i8] }** %.idx5.val to i8* | |
tail call void @free(i8* %13) #8 | |
resume { i8*, i32 } %5 | |
normal-return2: ; preds = %normal-return | |
%14 = getelementptr inbounds { i64, i64, [0 x i8] }** %.idx5.val, i64 %.idx.val | |
%15 = icmp eq i64 %.idx.val, 0 | |
br i1 %15, label %"_ZN28std..vec..Vec$LT$$UP$str$GT$14glue_drop.257217h34549b3bf7b232a7E.exit", label %"_ZN5slice57Items$LT$$x27a$C$$x20T$GT$.Iterator$LT$$BP$$x27a$x20T$GT$4next21h151933131302908977094v0.0E.exit.i.i.preheader" | |
"_ZN5slice57Items$LT$$x27a$C$$x20T$GT$.Iterator$LT$$BP$$x27a$x20T$GT$4next21h151933131302908977094v0.0E.exit.i.i.preheader": ; preds = %normal-return2 | |
br label %"_ZN5slice57Items$LT$$x27a$C$$x20T$GT$.Iterator$LT$$BP$$x27a$x20T$GT$4next21h151933131302908977094v0.0E.exit.i.i" | |
"_ZN5slice57Items$LT$$x27a$C$$x20T$GT$.Iterator$LT$$BP$$x27a$x20T$GT$4next21h151933131302908977094v0.0E.exit.i.i": ; preds = %"_ZN5slice57Items$LT$$x27a$C$$x20T$GT$.Iterator$LT$$BP$$x27a$x20T$GT$4next21h151933131302908977094v0.0E.exit.i.i.preheader", %loop_body.backedge.i.i | |
%.0.2.val34.i.i = phi { i64, i64, [0 x i8] }** [ %16, %loop_body.backedge.i.i ], [ %.idx5.val, %"_ZN5slice57Items$LT$$x27a$C$$x20T$GT$.Iterator$LT$$BP$$x27a$x20T$GT$4next21h151933131302908977094v0.0E.exit.i.i.preheader" ] | |
%16 = getelementptr inbounds { i64, i64, [0 x i8] }** %.0.2.val34.i.i, i64 1 | |
%17 = icmp eq { i64, i64, [0 x i8] }** %.0.2.val34.i.i, null | |
br i1 %17, label %"_ZN28std..vec..Vec$LT$$UP$str$GT$14glue_drop.257217h34549b3bf7b232a7E.exit.loopexit", label %match_else.i.i | |
match_else.i.i: ; preds = %"_ZN5slice57Items$LT$$x27a$C$$x20T$GT$.Iterator$LT$$BP$$x27a$x20T$GT$4next21h151933131302908977094v0.0E.exit.i.i" | |
%.val.i.i = load { i64, i64, [0 x i8] }** %.0.2.val34.i.i, align 8 | |
%18 = icmp eq { i64, i64, [0 x i8] }* %.val.i.i, null | |
br i1 %18, label %loop_body.backedge.i.i, label %cond.i.i.i | |
loop_body.backedge.i.i: ; preds = %cond.i.i.i, %match_else.i.i | |
%19 = icmp eq { i64, i64, [0 x i8] }** %16, %14 | |
br i1 %19, label %"_ZN28std..vec..Vec$LT$$UP$str$GT$14glue_drop.257217h34549b3bf7b232a7E.exit.loopexit", label %"_ZN5slice57Items$LT$$x27a$C$$x20T$GT$.Iterator$LT$$BP$$x27a$x20T$GT$4next21h151933131302908977094v0.0E.exit.i.i" | |
cond.i.i.i: ; preds = %match_else.i.i | |
%20 = bitcast { i64, i64, [0 x i8] }* %.val.i.i to i8* | |
tail call void @free(i8* %20) #8 | |
br label %loop_body.backedge.i.i | |
"_ZN28std..vec..Vec$LT$$UP$str$GT$14glue_drop.257217h34549b3bf7b232a7E.exit.loopexit": ; preds = %loop_body.backedge.i.i, %"_ZN5slice57Items$LT$$x27a$C$$x20T$GT$.Iterator$LT$$BP$$x27a$x20T$GT$4next21h151933131302908977094v0.0E.exit.i.i" | |
br label %"_ZN28std..vec..Vec$LT$$UP$str$GT$14glue_drop.257217h34549b3bf7b232a7E.exit" | |
"_ZN28std..vec..Vec$LT$$UP$str$GT$14glue_drop.257217h34549b3bf7b232a7E.exit": ; preds = %"_ZN28std..vec..Vec$LT$$UP$str$GT$14glue_drop.257217h34549b3bf7b232a7E.exit.loopexit", %normal-return2 | |
%21 = bitcast { i64, i64, [0 x i8] }** %.idx5.val to i8* | |
tail call void @free(i8* %21) #8 | |
ret void | |
} | |
define i64 @main(i64, i8**) unnamed_addr #6 { | |
top: | |
%2 = tail call i64 @_ZN10lang_start20h820a0f119a0c9218dYd9v0.11.preE(i8* bitcast (void ()* @_ZN6__test4main20hc397ed8eb090ed20u2a4v0.0E to i8*), i64 %0, i8** %1) | |
ret i64 %2 | |
} | |
declare i64 @_ZN10lang_start20h820a0f119a0c9218dYd9v0.11.preE(i8*, i64, i8**) unnamed_addr #6 | |
declare void @_ZN16test_main_static20hdca621cfdea2c272dqb9v0.11.preE({ { i64, i64, [0 x i8] }**, i64 }* nocapture, { %"struct.test::TestDescAndFn[#5]"*, i64 }* nocapture) unnamed_addr #6 | |
declare void @_ZN2os4args20hc2b572ca80555f59AKm9v0.11.preE(%"struct.std::vec::Vec<~str>[#1]"* noalias sret) unnamed_addr #6 | |
; Function Attrs: nounwind | |
declare void @llvm.lifetime.start(i64, i8* nocapture) #8 | |
; Function Attrs: nounwind | |
declare void @llvm.lifetime.end(i64, i8* nocapture) #8 | |
attributes #0 = { cold noinline noreturn "split-stack" } | |
attributes #1 = { uwtable "split-stack" } | |
attributes #2 = { cold noinline noreturn uwtable "split-stack" } | |
attributes #3 = { nounwind "split-stack" } | |
attributes #4 = { noreturn nounwind "split-stack" } | |
attributes #5 = { nounwind readnone uwtable "split-stack" } | |
attributes #6 = { "split-stack" } | |
attributes #7 = { cold noreturn "split-stack" } | |
attributes #8 = { nounwind } | |
!0 = metadata !{metadata !0, metadata !1, metadata !2} | |
!1 = metadata !{metadata !"llvm.vectorizer.width", i32 1} | |
!2 = metadata !{metadata !"llvm.vectorizer.unroll", i32 1} | |
!3 = metadata !{metadata !3, metadata !1, metadata !2} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#![feature(globs, macro_rules)] | |
#![crate_type="lib"] | |
#![crate_id="algebloat"] | |
use std::cell::Cell; | |
pub trait VectorGet | |
{ | |
unsafe fn unsafe_get(&self, idx: uint) -> f32; | |
fn get(&self, idx: uint) -> f32; | |
} | |
pub trait VectorSet | |
{ | |
unsafe fn unsafe_set(&self, idx: uint, val: f32); | |
fn set(&self, idx: uint, val: f32); | |
} | |
pub trait VectorAssign<T> | |
{ | |
fn assign(&self, v: T); | |
} | |
pub trait VectorIter | |
{ | |
fn iter2(self) -> VectorIterator<Self>; | |
} | |
impl<LHS: VectorSet + Container, | |
RHS: VectorGet + Container> | |
VectorAssign<RHS> for | |
LHS | |
{ | |
fn assign(&self, v: RHS) | |
{ | |
assert!(self.len() == v.len()); | |
for i in range(0, v.len()) | |
{ | |
unsafe | |
{ | |
self.unsafe_set(i, v.unsafe_get(i)); | |
} | |
} | |
} | |
} | |
impl<T: VectorGet + Container> | |
VectorIter for | |
T | |
{ | |
fn iter2(self) -> VectorIterator<T> | |
{ | |
VectorIterator::new(self) | |
} | |
} | |
pub struct Vector | |
{ | |
data: Vec<Cell<f32>> | |
} | |
impl Vector | |
{ | |
pub fn new(data: &[f32]) -> Vector | |
{ | |
Vector{ data: data.iter().map(|&v| Cell::new(v)).collect() } | |
} | |
} | |
impl | |
FromIterator<f32> for | |
Vector | |
{ | |
fn from_iter<T: Iterator<f32>>(mut it: T) -> Vector | |
{ | |
Vector{ data: it.by_ref().map(|v| Cell::new(v)).collect() } | |
} | |
} | |
impl<'l> | |
VectorGet for | |
&'l Vector | |
{ | |
unsafe fn unsafe_get(&self, idx: uint) -> f32 | |
{ | |
(*self.data.as_slice().unsafe_ref(idx)).get() | |
} | |
fn get(&self, idx: uint) -> f32 | |
{ | |
self.data.get(idx).get() | |
} | |
} | |
impl<'l> | |
VectorSet for | |
&'l Vector | |
{ | |
unsafe fn unsafe_set(&self, idx: uint, val: f32) | |
{ | |
self.data.as_slice().unsafe_ref(idx).set(val); | |
} | |
fn set(&self, idx: uint, val: f32) | |
{ | |
self.data.get(idx).set(val); | |
} | |
} | |
impl<'l> | |
Container for | |
&'l Vector | |
{ | |
fn len(&self) -> uint | |
{ | |
self.data.len() | |
} | |
} | |
impl<'l> | |
VectorGet for | |
Vector | |
{ | |
unsafe fn unsafe_get(&self, idx: uint) -> f32 | |
{ | |
(*self.data.as_slice().unsafe_ref(idx)).get() | |
} | |
fn get(&self, idx: uint) -> f32 | |
{ | |
self.data.get(idx).get() | |
} | |
} | |
impl<'l> | |
VectorSet for | |
Vector | |
{ | |
unsafe fn unsafe_set(&self, idx: uint, val: f32) | |
{ | |
self.data.as_slice().unsafe_ref(idx).set(val); | |
} | |
fn set(&self, idx: uint, val: f32) | |
{ | |
self.data.get(idx).set(val); | |
} | |
} | |
impl<'l> | |
Container for | |
Vector | |
{ | |
fn len(&self) -> uint | |
{ | |
self.data.len() | |
} | |
} | |
pub struct VectorIterator<T> | |
{ | |
base: T, | |
idx: uint | |
} | |
impl<T: VectorGet + Container> | |
VectorIterator<T> | |
{ | |
fn new(base: T) -> VectorIterator<T> | |
{ | |
VectorIterator{ base: base, idx: 0 } | |
} | |
} | |
impl<T: VectorGet + Container> | |
Iterator<f32> for | |
VectorIterator<T> | |
{ | |
fn next(&mut self) -> Option<f32> | |
{ | |
let ret = if self.idx < self.base.len() | |
{ | |
unsafe | |
{ | |
Some(self.base.unsafe_get(self.idx)) | |
} | |
} | |
else | |
{ | |
None | |
}; | |
self.idx += 1; | |
ret | |
} | |
} | |
macro_rules! expr | |
{ | |
($e: expr) => { $e } | |
} | |
macro_rules! bin_op | |
{ | |
($op_name: ident, $op_method: ident, $op_struct_name: ident, $op: tt) => | |
{ | |
pub struct $op_struct_name<TA, TB> | |
{ | |
a: TA, | |
b: TB, | |
} | |
impl<TA: Container, | |
TB: Container> | |
$op_struct_name<TA, TB> | |
{ | |
pub unsafe fn unsafe_new(a: TA, b: TB) -> $op_struct_name<TA, TB> | |
{ | |
$op_struct_name{ a: a, b: b } | |
} | |
pub fn new(a: TA, b: TB) -> $op_struct_name<TA, TB> | |
{ | |
assert!(a.len() == b.len()); | |
$op_struct_name{ a: a, b: b } | |
} | |
} | |
impl<TA: Clone, | |
TB: Clone> | |
Clone for | |
$op_struct_name<TA, TB> | |
{ | |
fn clone(&self) -> $op_struct_name<TA, TB> | |
{ | |
$op_struct_name{ a: self.a.clone(), b: self.b.clone() } | |
} | |
} | |
impl<'l, | |
TA: VectorGet + Container, | |
TB: VectorGet + Container> | |
VectorGet for | |
$op_struct_name<TA, TB> | |
{ | |
unsafe fn unsafe_get(&self, idx: uint) -> f32 | |
{ | |
expr!(self.a.unsafe_get(idx) $op self.b.unsafe_get(idx)) | |
} | |
fn get(&self, idx: uint) -> f32 | |
{ | |
assert!(idx < self.len()); | |
unsafe | |
{ | |
expr!(self.a.unsafe_get(idx) $op self.b.unsafe_get(idx)) | |
} | |
} | |
} | |
impl<'l, | |
TA: Container, | |
TB: Container> | |
Container for $op_struct_name<TA, TB> | |
{ | |
fn len(&self) -> uint | |
{ | |
self.a.len() | |
} | |
} | |
impl<'l, | |
RHS: VectorGet + Clone + Container> | |
$op_name<RHS, $op_struct_name<&'l Vector, RHS>> for | |
&'l Vector | |
{ | |
fn $op_method(&self, rhs: &RHS) -> $op_struct_name<&'l Vector, RHS> | |
{ | |
$op_struct_name::new(self.clone(), rhs.clone()) | |
} | |
} | |
} | |
} | |
macro_rules! connect_op | |
{ | |
($op_struct_lhs: ident : $($op_name: ident, $op_method: ident, $op_struct_name: ident);+) => | |
{ | |
$( | |
impl<RHS: VectorGet + Clone + Container, | |
TA: VectorGet + Clone + Container, | |
TB: VectorGet + Clone + Container> | |
$op_name<RHS, $op_struct_name<$op_struct_lhs<TA, TB>, RHS>> for | |
$op_struct_lhs<TA, TB> | |
{ | |
fn $op_method(&self, rhs: &RHS) -> $op_struct_name<$op_struct_lhs<TA, TB>, RHS> | |
{ | |
$op_struct_name::new(self.clone(), rhs.clone()) | |
} | |
} | |
)+ | |
} | |
} | |
macro_rules! connect_ops | |
{ | |
($($op_struct: ident),+) => | |
{ | |
$( | |
connect_op!($op_struct: | |
Add, add, Adder; | |
Sub, sub, Subtracter; | |
Mul, mul, Multiplier; | |
Div, div, Divider) | |
)+ | |
} | |
} | |
bin_op!(Add, add, Adder, +) | |
bin_op!(Sub, sub, Subtracter, -) | |
bin_op!(Mul, mul, Multiplier, *) | |
bin_op!(Div, div, Divider, /) | |
connect_ops!(Adder, | |
Subtracter, | |
Multiplier, | |
Divider) | |
#[cfg(test)] | |
mod test | |
{ | |
extern crate test; | |
extern crate rand; | |
use super::*; | |
use self::test::Bencher; | |
use self::rand::{weak_rng, Rng}; | |
#[bench] | |
fn vec_speed_vec(bh: &mut Bencher) { | |
let mut rng = weak_rng(); | |
let a = Vector::new(rng.gen_vec(10).slice(0, 10)); | |
bh.iter(|| { | |
for _ in range(0, 100) | |
{ | |
a.assign((&a + &a * &a) / &a); | |
} | |
let mut sum = 0f32; | |
for v in (&a).iter2() | |
{ | |
sum += v; | |
} | |
assert!(sum != 96.0); | |
}) | |
} | |
#[bench] | |
fn vec_speed_loop(bh: &mut Bencher) { | |
let mut rng = weak_rng(); | |
let a = Vector::new(rng.gen_vec(10).slice(0, 10)); | |
bh.iter(|| { | |
for _ in range(0, 100) | |
{ | |
for i in range(0, a.len()) | |
{ | |
unsafe | |
{ | |
let v = a.unsafe_get(i); | |
a.unsafe_set(i, (v + v * v) / v) | |
} | |
} | |
} | |
let mut sum = 0f32; | |
for v in (&a).iter2() | |
{ | |
sum += v; | |
} | |
assert!(sum != 96.0); | |
}) | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
running 2 tests | |
test test::vec_speed_loop ... bench: 1169 ns/iter (+/- 22) | |
test test::vec_speed_vec ... bench: 4714 ns/iter (+/- 296) | |
test result: ok. 0 passed; 0 failed; 0 ignored; 2 measured |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; ModuleID = 'algebloat.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*)*, { i8*, i64 } } | |
%"struct.std::unstable::intrinsics::TypeId[#1]" = type { i64 } | |
%"enum.std::util::Void[#1]" = type {} | |
%"struct.extra::test::BenchHarness[#4]" = type { i64, i64, i64, i64 } | |
%"struct.std::cell::Cell<f32>[#1]" = type { float } | |
%"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::Items<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::Items<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::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] } | |
%str_slice = type { i8*, i64 } | |
%"enum.std::option::Option<~std::io::Writer:Send>[#1]" = type { i8, [7 x i8], [2 x 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]", %"struct.std::rt::unwind::Unwinder[#1]", %"struct.std::rt::task::Death[#1]", i8, %"enum.std::option::Option<std::send_str::SendStr>[#1]", %"enum.std::option::Option<~std::logging::Logger:Send>[#1]", %"enum.std::option::Option<~std::io::Writer:Send>[#1]", %"enum.std::option::Option<~std::io::Writer:Send>[#1]", %"enum.std::option::Option<~std::rt::Runtime:Send>[#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*)*, %str_slice } | |
%"struct.std::rt::task::GarbageCollector[#1]" = type {} | |
%"struct.std::rt::task::LocalStorage[#1]" = type { %"enum.std::option::Option<~[std::option::Option<(*u8,~std::local_data::LocalData:Send,std::local_data::LoanState)>]>[#1]" } | |
%"enum.std::option::Option<~[std::option::Option<(*u8,~std::local_data::LocalData:Send,std::local_data::LoanState)>]>[#1]" = type { { i64, i64, [0 x %"enum.std::option::Option<(*u8,~std::local_data::LocalData:Send,std::local_data::LoanState)>[#1]"] }* } | |
%"enum.std::option::Option<(*u8,~std::local_data::LocalData:Send,std::local_data::LoanState)>[#1]" = type { i8, [7 x i8], [4 x i64] } | |
%"struct.std::rt::unwind::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::task::Death[#1]" = type { %"enum.std::option::Option<proc:Send(std::result::Result<(),~std::any::Any:Send>)>[#1]", i8 } | |
%"enum.std::option::Option<proc:Send(std::result::Result<(),~std::any::Any:Send>)>[#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::logging::Logger:Send>[#1]" = type { i8, [7 x i8], [2 x i64] } | |
%"enum.std::option::Option<~std::rt::Runtime:Send>[#1]" = type { i8, [7 x i8], [2 x i64] } | |
%"struct.std::rt::unwind::libunwind::_Unwind_Exception[#1]" = type { i64, void (i32, %"struct.std::rt::unwind::libunwind::_Unwind_Exception[#1]"*)*, [2 x i64] } | |
%"enum.std::rt::unwind::libunwind::_Unwind_Context[#1]" = type {} | |
%"struct.std::rand::XorShiftRng[#1]" = type { i32, i32, i32, i32 } | |
%struct.Vector = type { { i64, i64, [0 x %"struct.std::cell::Cell<f32>[#1]"] }* } | |
%"struct.extra::test::TestDescAndFn[#4]" = type { %"struct.extra::test::TestDesc[#4]", %"enum.extra::test::TestFn[#4]" } | |
%"struct.extra::test::TestDesc[#4]" = type { %"enum.extra::test::TestName[#4]", i8, i8 } | |
%"enum.extra::test::TestName[#4]" = type { i8, [7 x i8], [2 x i64] } | |
%"enum.extra::test::TestFn[#4]" = type { i8, [7 x i8], [2 x 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 ([4 x i64]* @_crate_map_child_vectors to i64), i64 4 }, i64* @_ZN4uvio8new_loop19ha2f1f079a1df1d04a09v0.10.preE } | |
@str1789 = internal constant [19 x i8] c"assertion failed: \00" | |
@str1855 = internal constant [11 x i8] c"src/lib.rs\00" | |
@"_ZN8_$UP$str6tydesc19hf486c988072d7d43aiE" = internal constant %tydesc { i64 8, i64 ptrtoint (i1** getelementptr ({ i1, i1* }* null, i64 0, i32 1) to i64), void ({}*, i8*)* bitcast (void ({}*, {}*)* @"_ZN9_$LP$$RP$9glue_take19h0d906dfad616c965aFE" to void ({}*, i8*)*), void ({}*, i8*)* bitcast (void ({}*, { i64, i64, [0 x i8] }**)* @"_ZN8_$UP$str9glue_drop19hf486c988072d7d43alE" to void ({}*, i8*)*), void ({}*, i8*)* bitcast (void ({}*, { i64, i64, [0 x i8] }**)* @"_ZN8_$UP$str10glue_visit19hf486c988072d7d43aEE" to void ({}*, i8*)*), { i8*, i64 } { i8* getelementptr inbounds ([5 x i8]* @str1932, i32 0, i32 0), i64 4 } } | |
@str1932 = internal constant [5 x i8] c"~str\00" | |
@"_ZN12_$UP$$UP$str6tydesc19h4be2f769bb7f364cazE" = internal constant %tydesc { i64 8, i64 ptrtoint (i1** getelementptr ({ i1, i1* }* null, i64 0, i32 1) to i64), void ({}*, i8*)* bitcast (void ({}*, {}*)* @"_ZN9_$LP$$RP$9glue_take19h0d906dfad616c965aFE" to void ({}*, i8*)*), void ({}*, i8*)* bitcast (void ({}*, { i64, i64, [0 x i8] }***)* @"_ZN12_$UP$$UP$str9glue_drop19h4be2f769bb7f364caGE" to void ({}*, i8*)*), void ({}*, i8*)* bitcast (void ({}*, { i64, i64, [0 x i8] }***)* @"_ZN12_$UP$$UP$str10glue_visit19h4be2f769bb7f364caHE" to void ({}*, i8*)*), { i8*, i64 } { i8* getelementptr inbounds ([6 x i8]* @str1949, i32 0, i32 0), i64 5 } } | |
@str1949 = internal constant [6 x i8] c"~~str\00" | |
@vtable2015 = internal constant { %tydesc*, %"struct.std::unstable::intrinsics::TypeId[#1]" ({ i64, i64, [0 x i8] }**)*, %"enum.std::util::Void[#1]"* ({ i64, i64, [0 x i8] }**)*, %"enum.std::util::Void[#1]"* ({ i64, i64, [0 x i8] }**)* } { %tydesc* @"_ZN12_$UP$$UP$str6tydesc19h4be2f769bb7f364cazE", %"struct.std::unstable::intrinsics::TypeId[#1]" ({ i64, i64, [0 x i8] }**)* @"_ZN3any5Any$T11get_type_id21h161d4df8a2bc39a09Was4v0.0E", %"enum.std::util::Void[#1]"* ({ i64, i64, [0 x i8] }**)* @"_ZN3any5Any$T11as_void_ptr21h91cfce8f8bc934be9Wax4v0.0E", %"enum.std::util::Void[#1]"* ({ i64, i64, [0 x i8] }**)* @"_ZN3any5Any$T15as_mut_void_ptr21h05b1b923880fb5d09Way4v0.0E" } | |
@str2185 = internal constant [5 x i8] c"~Any\00" | |
@_ZN2rt9local_ptr8compiled10RT_TLS_PTR19hdc9a58880b8e9059a69v0.10.preE = available_externally thread_local global i8* null | |
@str2226 = internal constant [12 x i8] c"failed at '\00" | |
@str2227 = internal constant [4 x i8] c"', \00" | |
@str2228 = internal constant [2 x i8] c":\00" | |
@_ZN2rt6unwind12begin_unwind15__STATIC_FMTSTR19hc82609ea93582c3baQ9v0.10.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 ([12 x i8]* @str2226, i32 0, i32 0), i64 11 }, [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]* @str2227, 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]* @str2228, 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 } } | |
@str2253 = internal constant [10 x i8] c"<unnamed>\00" | |
@str2274 = internal constant [7 x i8] c"task '\00" | |
@str2275 = internal constant [14 x i8] c"' failed at '\00" | |
@str2280 = internal constant [15 x i8] c"!ptr.is_null()\00" | |
@str2281 = internal constant [20 x i8] c" assertion failed: \00" | |
@_ZN2rt9local_ptr8compiled4take15__STATIC_FMTSTR19hcf722141b2fbba44aS9v0.10.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 ([20 x i8]* @str2281, i32 0, i32 0), i64 19 }, [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 } } | |
@_ZN2rt6unwind12begin_unwind15__STATIC_FMTSTR19h3cdf3b09c8333291aa9v0.10.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]* @str2274, 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]* @str2275, 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]* @str2227, 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]* @str2228, 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 } } | |
@str2285 = internal constant [60 x i8] c"task failed during unwinding (double-failure - total drag!)\00" | |
@_ZN2rt6unwind12begin_unwind15__STATIC_FMTSTR19hdd896b8b7372fd49au9v0.10.preE = internal unnamed_addr constant { { i8, { i8*, i64 }, [56 x i8] } } { { i8, { i8*, i64 }, [56 x i8] } { i8 0, { i8*, i64 } { i8* getelementptr inbounds ([60 x i8]* @str2285, i32 0, i32 0), i64 59 }, [56 x i8] undef } } | |
@str2286 = internal constant [31 x i8] c"rust must abort now. so sorry.\00" | |
@_ZN2rt6unwind12begin_unwind15__STATIC_FMTSTR19hdd896b8b7372fd49a49v0.10.preE = internal unnamed_addr constant { { i8, { i8*, i64 }, [56 x i8] } } { { i8, { i8*, i64 }, [56 x i8] } { i8 0, { i8*, i64 } { i8* getelementptr inbounds ([31 x i8]* @str2286, i32 0, i32 0), i64 30 }, [56 x i8] undef } } | |
@str2289 = internal constant [37 x i8] c"thread-local pointer is null. bogus!\00" | |
@_ZN2rt9local_ptr8compiled13unsafe_borrow15__STATIC_FMTSTR19hdd896b8b7372fd49ah9v0.10.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]* @str2289, i32 0, i32 0), i64 36 }, [56 x i8] undef } } | |
@str2290 = internal constant [27 x i8] c"vector size is too large: \00" | |
@str2291 = internal constant [28 x i8] c"/tmp/rust/src/libstd/vec.rs\00" | |
@"_ZN3vec22OwnedVector$$UP$$VEC$T7reserve15__STATIC_FMTSTR21hcf722141b2fbba44Ypa99v0.10.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]* @str2290, 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 } } | |
@str2492 = internal constant [12 x i8] c"sum != 96.0\00" | |
@_ZN4test14vec_speed_loop15__STATIC_FMTSTR19hee3bcecd8c266311am4v0.0E = 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 ([19 x i8]* @str1789, i32 0, i32 0), i64 18 }, [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 } } | |
@str2500 = internal constant [20 x i8] c"test::vec_speed_vec\00" | |
@str2501 = internal constant [21 x i8] c"test::vec_speed_loop\00" | |
@const = private constant { { { { i8, { i8*, i64 }, [0 x i8] }, i8, i8 }, { i8, void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"struct.extra::test::BenchHarness[#4]"*)*, [8 x i8] } }, { { { i8, { i8*, i64 }, [0 x i8] }, i8, i8 }, { i8, void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"struct.extra::test::BenchHarness[#4]"*)*, [8 x i8] } } } { { { { i8, { i8*, i64 }, [0 x i8] }, i8, i8 }, { i8, void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"struct.extra::test::BenchHarness[#4]"*)*, [8 x i8] } } { { { i8, { i8*, i64 }, [0 x i8] }, i8, i8 } { { i8, { i8*, i64 }, [0 x i8] } { i8 0, { i8*, i64 } { i8* getelementptr inbounds ([20 x i8]* @str2500, i32 0, i32 0), i64 19 }, [0 x i8] undef }, i8 0, i8 0 }, { i8, void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"struct.extra::test::BenchHarness[#4]"*)*, [8 x i8] } { i8 1, void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"struct.extra::test::BenchHarness[#4]"*)* @_ZN4test13vec_speed_vec19h7704b567022d3c1fai4v0.0E, [8 x i8] undef } }, { { { i8, { i8*, i64 }, [0 x i8] }, i8, i8 }, { i8, void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"struct.extra::test::BenchHarness[#4]"*)*, [8 x i8] } } { { { i8, { i8*, i64 }, [0 x i8] }, i8, i8 } { { i8, { i8*, i64 }, [0 x i8] } { i8 0, { i8*, i64 } { i8* getelementptr inbounds ([21 x i8]* @str2501, i32 0, i32 0), i64 20 }, [0 x i8] undef }, i8 0, i8 0 }, { i8, void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"struct.extra::test::BenchHarness[#4]"*)*, [8 x i8] } { i8 1, void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"struct.extra::test::BenchHarness[#4]"*)* @_ZN4test14vec_speed_loop19h3dbb0822dfa8143ea74v0.0E, [8 x i8] undef } } } | |
@_ZN19_rust_crate_map_std17_966edb7e67a78fa79v0.10.preE = external global i64 | |
@_ZN21_rust_crate_map_green17_80d9e76ae01092f69v0.10.preE = external global i64 | |
@_ZN22_rust_crate_map_rustuv17_09e0b9252547dab39v0.10.preE = external global i64 | |
@_ZN21_rust_crate_map_extra17_64ade3d6312ae1df9v0.10.preE = external global i64 | |
@_ZN4uvio8new_loop19ha2f1f079a1df1d04a09v0.10.preE = external global i64 | |
@_crate_map_child_vectors = internal global [4 x i64] [i64 ptrtoint (i64* @_ZN19_rust_crate_map_std17_966edb7e67a78fa79v0.10.preE to i64), i64 ptrtoint (i64* @_ZN21_rust_crate_map_green17_80d9e76ae01092f69v0.10.preE to i64), i64 ptrtoint (i64* @_ZN22_rust_crate_map_rustuv17_09e0b9252547dab39v0.10.preE to i64), i64 ptrtoint (i64* @_ZN21_rust_crate_map_extra17_64ade3d6312ae1df9v0.10.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: uwtable | |
define internal fastcc { i64, i64, [0 x %"struct.std::cell::Cell<f32>[#1]"] }* @_ZN6Vector3new21h231b9303ce4bdf8bnfa24v0.0E(float* %.0.0.val, i64 %.0.1.val) unnamed_addr #3 { | |
entry-block: | |
%n.i.i.i.i.i.i.i = alloca i64, align 8 | |
%0 = alloca %"struct.std::fmt::Argument[#1]", align 8 | |
%__args.i.i.i.i.i.i.i = alloca %"struct.std::fmt::Arguments[#1]", align 8 | |
%1 = alloca %str_slice, align 8 | |
%capacity.i.i.i.i = alloca i64, align 8 | |
%2 = alloca %"struct.std::fmt::Argument[#1]", align 8 | |
%__args.i.i.i.i = alloca %"struct.std::fmt::Arguments[#1]", align 8 | |
%3 = alloca %str_slice, align 8 | |
%4 = getelementptr inbounds float* %.0.0.val, i64 %.0.1.val | |
%5 = bitcast i64* %capacity.i.i.i.i to i8* | |
call void @llvm.lifetime.start(i64 8, i8* %5) | |
%6 = bitcast %"struct.std::fmt::Argument[#1]"* %2 to i8* | |
call void @llvm.lifetime.start(i64 16, i8* %6) | |
%7 = bitcast %"struct.std::fmt::Arguments[#1]"* %__args.i.i.i.i to i8* | |
call void @llvm.lifetime.start(i64 32, i8* %7) | |
%8 = bitcast %str_slice* %3 to i8* | |
call void @llvm.lifetime.start(i64 16, i8* %8) | |
store i64 %.0.1.val, i64* %capacity.i.i.i.i, align 8 | |
%9 = shl nuw i64 %.0.1.val, 2 | |
%uadd.i.i.i.i = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %9, i64 16) | |
%10 = extractvalue { i64, i1 } %uadd.i.i.i.i, 0 | |
%11 = extractvalue { i64, i1 } %uadd.i.i.i.i, 1 | |
br i1 %11, label %then-block-4106-.i.i.i.i, label %next-block.i.i.i.i | |
then-block-4106-.i.i.i.i: ; preds = %entry-block | |
%12 = getelementptr inbounds %"struct.std::fmt::Argument[#1]"* %2, 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$uint3fmt21h9d24c533d4c27d2edaaR9v0.10.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]"*)** %12, align 8 | |
%13 = getelementptr inbounds %"struct.std::fmt::Argument[#1]"* %2, i64 0, i32 1 | |
%14 = bitcast i64* %capacity.i.i.i.i to %"enum.std::util::Void[#1]"* | |
store %"enum.std::util::Void[#1]"* %14, %"enum.std::util::Void[#1]"** %13, align 8 | |
%__adjust.sroa.0.0.idx.i.i.i.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args.i.i.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] } }* @"_ZN3vec22OwnedVector$$UP$$VEC$T7reserve15__STATIC_FMTSTR21hcf722141b2fbba44Ypa99v0.10.preE" to %"enum.std::fmt::rt::Piece[#1]"*), %"enum.std::fmt::rt::Piece[#1]"** %__adjust.sroa.0.0.idx.i.i.i.i, align 8 | |
%__adjust.sroa.2.0.idx2.i.i.i.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args.i.i.i.i, i64 0, i32 0, i32 1 | |
store i64 2, i64* %__adjust.sroa.2.0.idx2.i.i.i.i, align 8 | |
%__adjust.sroa.0.0.idx.i.i.i.i.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args.i.i.i.i, i64 0, i32 1, i32 0 | |
store %"struct.std::fmt::Argument[#1]"* %2, %"struct.std::fmt::Argument[#1]"** %__adjust.sroa.0.0.idx.i.i.i.i.i, align 8 | |
%__adjust.sroa.2.0.idx1.i.i.i.i.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args.i.i.i.i, i64 0, i32 1, i32 1 | |
store i64 1, i64* %__adjust.sroa.2.0.idx1.i.i.i.i.i, align 8 | |
%15 = call { i64, i64, [0 x i8] }* @_ZN3fmt6format19h356fa857e88c8c5bat9v0.10.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, %"struct.std::fmt::Arguments[#1]"* %__args.i.i.i.i) | |
%16 = getelementptr inbounds %str_slice* %3, i64 0, i32 0 | |
store i8* getelementptr inbounds ([28 x i8]* @str2291, i64 0, i64 0), i8** %16, align 8 | |
%17 = getelementptr inbounds %str_slice* %3, i64 0, i32 1 | |
store i64 27, i64* %17, align 8 | |
call fastcc void @_ZN2rt6unwind12begin_unwind19h9443711abab5072daA4v0.0E({ i64, i64, [0 x i8] }* %15, %str_slice* %3, i64 183) | |
unreachable | |
next-block.i.i.i.i: ; preds = %entry-block | |
%18 = icmp eq i64 %10, 0 | |
br i1 %18, label %_ZN3vec13with_capacity19h6f61fd28705b02a9ac4v0.0E.exit.i.i.i, label %else-block.i.i.i.i.i | |
else-block.i.i.i.i.i: ; preds = %next-block.i.i.i.i | |
%19 = call i8* @malloc(i64 %10) #0 | |
%20 = icmp eq i8* %19, null | |
br i1 %20, label %then-block-4856-.i.i.i.i.i, label %_ZN3vec13with_capacity19h6f61fd28705b02a9ac4v0.0E.exit.i.i.i | |
then-block-4856-.i.i.i.i.i: ; preds = %else-block.i.i.i.i.i | |
call void @llvm.trap() #0 | |
unreachable | |
_ZN3vec13with_capacity19h6f61fd28705b02a9ac4v0.0E.exit.i.i.i: ; preds = %else-block.i.i.i.i.i, %next-block.i.i.i.i | |
%__make_return_pointer.0.i.i.i.i.i = phi i8* [ null, %next-block.i.i.i.i ], [ %19, %else-block.i.i.i.i.i ] | |
%21 = getelementptr inbounds i8* %__make_return_pointer.0.i.i.i.i.i, i64 8 | |
%22 = bitcast i8* %21 to i64* | |
store i64 %9, i64* %22, align 8 | |
%23 = bitcast i8* %__make_return_pointer.0.i.i.i.i.i to i64* | |
store i64 0, i64* %23, align 8 | |
call void @llvm.lifetime.end(i64 8, i8* %5) | |
call void @llvm.lifetime.end(i64 16, i8* %6) | |
call void @llvm.lifetime.end(i64 32, i8* %7) | |
call void @llvm.lifetime.end(i64 16, i8* %8) | |
%24 = bitcast i8* %__make_return_pointer.0.i.i.i.i.i to {}* | |
%25 = bitcast i64* %n.i.i.i.i.i.i.i to i8* | |
%26 = bitcast %"struct.std::fmt::Argument[#1]"* %0 to i8* | |
%27 = bitcast %"struct.std::fmt::Arguments[#1]"* %__args.i.i.i.i.i.i.i to i8* | |
%28 = bitcast %str_slice* %1 to i8* | |
%29 = icmp eq i64 %.0.1.val, 0 | |
br i1 %29, label %"_ZN3vec26ImmutableVector$$BP$$VEC$T3map21h6969c481d18ebc73jHa54v0.0E.exit", label %"_ZN3vec14Iterator$Items4next21hfa2b844f4a7f4ac10lac4v0.0E.exit.i.i.i.i" | |
"_ZN3vec14Iterator$Items4next21hfa2b844f4a7f4ac10lac4v0.0E.exit.i.i.i.i": ; preds = %_ZN3vec13with_capacity19h6f61fd28705b02a9ac4v0.0E.exit.i.i.i, %"_ZN3vec22OwnedVector$$UP$$VEC$T4push21hfda9574a9a3c87bazZaq4v0.0E.exit.i.i.i" | |
%30 = phi {}* [ %87, %"_ZN3vec22OwnedVector$$UP$$VEC$T4push21hfda9574a9a3c87bazZaq4v0.0E.exit.i.i.i" ], [ %24, %_ZN3vec13with_capacity19h6f61fd28705b02a9ac4v0.0E.exit.i.i.i ] | |
%31 = phi float* [ %32, %"_ZN3vec22OwnedVector$$UP$$VEC$T4push21hfda9574a9a3c87bazZaq4v0.0E.exit.i.i.i" ], [ %.0.0.val, %_ZN3vec13with_capacity19h6f61fd28705b02a9ac4v0.0E.exit.i.i.i ] | |
%32 = getelementptr inbounds float* %31, i64 1 | |
%33 = icmp eq float* %31, null | |
br i1 %33, label %"_ZN3vec26ImmutableVector$$BP$$VEC$T3map21h6969c481d18ebc73jHa54v0.0E.exit", label %match_case.i.i.i.i.i | |
match_case.i.i.i.i.i: ; preds = %"_ZN3vec14Iterator$Items4next21hfa2b844f4a7f4ac10lac4v0.0E.exit.i.i.i.i" | |
%34 = load float* %31, align 4 | |
%oldret.i = insertvalue %"struct.std::cell::Cell<f32>[#1]" undef, float %34, 0 | |
%35 = bitcast {}* %30 to { i64, i64, [0 x %"struct.std::cell::Cell<f32>[#1]"] }* | |
%36 = bitcast {}* %30 to i64* | |
%37 = load i64* %36, align 8 | |
%38 = getelementptr inbounds { i64, i64, [0 x %"struct.std::cell::Cell<f32>[#1]"] }* %35, i64 0, i32 1 | |
%39 = load i64* %38, align 8 | |
%40 = icmp ugt i64 %39, %37 | |
br i1 %40, label %"_ZN3vec22OwnedVector$$UP$$VEC$T4push21hfda9574a9a3c87bazZaq4v0.0E.exit.i.i.i", label %then-block-6085-.i.i.i.i | |
unwind_ast_3907_.nonloopexit.i.i.i: ; preds = %.noexc6.i.i.i, %then-block-6495-.i.i.i.i.i.i.i | |
%lpad.nonloopexit.i.i.i = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"struct.std::rt::unwind::libunwind::_Unwind_Exception[#1]"*, %"enum.std::rt::unwind::libunwind::_Unwind_Context[#1]"*)* @rust_eh_personality | |
cleanup | |
%41 = icmp eq {}* %30, null | |
br i1 %41, label %"_ZN13_$UP$$LP$$RP$9glue_drop19h008e5fc303747c8bahE.exit4.i.i.i", label %cond.i3.i.i.i | |
cond.i3.i.i.i: ; preds = %unwind_ast_3907_.nonloopexit.i.i.i | |
%42 = bitcast {}* %30 to i8* | |
call void @free(i8* %42) #0 | |
br label %"_ZN13_$UP$$LP$$RP$9glue_drop19h008e5fc303747c8bahE.exit4.i.i.i" | |
"_ZN13_$UP$$LP$$RP$9glue_drop19h008e5fc303747c8bahE.exit4.i.i.i": ; preds = %cond.i3.i.i.i, %unwind_ast_3907_.nonloopexit.i.i.i | |
resume { i8*, i32 } %lpad.nonloopexit.i.i.i | |
then-block-6085-.i.i.i.i: ; preds = %match_case.i.i.i.i.i | |
%43 = lshr i64 %39, 2 | |
%44 = lshr i64 %37, 2 | |
%45 = icmp eq i64 %43, %44 | |
br i1 %45, label %match_else.i.i.i.i.i, label %"_ZN3vec22OwnedVector$$UP$$VEC$T4push21hfda9574a9a3c87bazZaq4v0.0E.exit.i.i.i" | |
match_else.i.i.i.i.i: ; preds = %then-block-6085-.i.i.i.i | |
%46 = add nuw i64 %43, 1 | |
%47 = lshr i64 %37, 3 | |
%48 = or i64 %43, %47 | |
%49 = lshr i64 %48, 2 | |
%50 = or i64 %49, %48 | |
%51 = lshr i64 %50, 4 | |
%52 = or i64 %51, %50 | |
%53 = lshr i64 %52, 8 | |
%54 = or i64 %53, %52 | |
%55 = lshr i64 %54, 16 | |
%56 = or i64 %55, %54 | |
%57 = lshr i64 %56, 32 | |
%58 = or i64 %57, %56 | |
%59 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %58, i64 1) #0 | |
%60 = extractvalue { i64, i1 } %59, 1 | |
br i1 %60, label %_ZN4uint21next_power_of_two_opt19h38b6f90766e9a357aT4v0.0E.exit.i.i.i.i.i.i, label %else-block.i.i.i.i.i.i.i.i | |
else-block.i.i.i.i.i.i.i.i: ; preds = %match_else.i.i.i.i.i | |
%61 = extractvalue { i64, i1 } %59, 0 | |
br label %_ZN4uint21next_power_of_two_opt19h38b6f90766e9a357aT4v0.0E.exit.i.i.i.i.i.i | |
_ZN4uint21next_power_of_two_opt19h38b6f90766e9a357aT4v0.0E.exit.i.i.i.i.i.i: ; preds = %else-block.i.i.i.i.i.i.i.i, %match_else.i.i.i.i.i | |
%.sroa.0.0.load4.i.i.i.i.i.i = phi i64 [ %61, %else-block.i.i.i.i.i.i.i.i ], [ %46, %match_else.i.i.i.i.i ] | |
call void @llvm.lifetime.start(i64 8, i8* %25) | |
call void @llvm.lifetime.start(i64 16, i8* %26) | |
call void @llvm.lifetime.start(i64 32, i8* %27) | |
call void @llvm.lifetime.start(i64 16, i8* %28) | |
store i64 %.sroa.0.0.load4.i.i.i.i.i.i, i64* %n.i.i.i.i.i.i.i, align 8 | |
%62 = load i64* %38, align 8 | |
%63 = lshr i64 %62, 2 | |
%64 = icmp ult i64 %63, %.sroa.0.0.load4.i.i.i.i.i.i | |
br i1 %64, label %then-block-6530-.i.i.i.i.i.i.i, label %"_ZN3vec22OwnedVector$$UP$$VEC$T4push21hfda9574a9a3c87bazZaq4v0.0E.exit.i.i.i" | |
then-block-6530-.i.i.i.i.i.i.i: ; preds = %_ZN4uint21next_power_of_two_opt19h38b6f90766e9a357aT4v0.0E.exit.i.i.i.i.i.i | |
%65 = shl i64 %.sroa.0.0.load4.i.i.i.i.i.i, 2 | |
%uadd.i.i.i.i.i.i.i = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %65, i64 16) | |
%66 = extractvalue { i64, i1 } %uadd.i.i.i.i.i.i.i, 0 | |
%67 = and i64 %.sroa.0.0.load4.i.i.i.i.i.i, 4611686018427387903 | |
%68 = icmp ne i64 %67, %.sroa.0.0.load4.i.i.i.i.i.i | |
%69 = zext i1 %68 to i8 | |
br i1 %68, label %join.i.i.i.i.i.i.i, label %before_rhs.i.i.i.i.i.i.i | |
join.i.i.i.i.i.i.i: ; preds = %before_rhs.i.i.i.i.i.i.i, %then-block-6530-.i.i.i.i.i.i.i | |
%70 = phi i8 [ %69, %then-block-6530-.i.i.i.i.i.i.i ], [ %73, %before_rhs.i.i.i.i.i.i.i ] | |
%71 = icmp eq i8 %70, 0 | |
br i1 %71, label %next-block.i.i.i.i.i.i.i, label %then-block-6495-.i.i.i.i.i.i.i | |
before_rhs.i.i.i.i.i.i.i: ; preds = %then-block-6530-.i.i.i.i.i.i.i | |
%72 = extractvalue { i64, i1 } %uadd.i.i.i.i.i.i.i, 1 | |
%73 = zext i1 %72 to i8 | |
br label %join.i.i.i.i.i.i.i | |
then-block-6495-.i.i.i.i.i.i.i: ; preds = %join.i.i.i.i.i.i.i | |
%74 = getelementptr inbounds %"struct.std::fmt::Argument[#1]"* %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 }*, i64*, %"struct.std::fmt::Formatter[#1]"*)* @"_ZN3fmt12Default$uint3fmt21h9d24c533d4c27d2edaaR9v0.10.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 %"struct.std::fmt::Argument[#1]"* %0, i64 0, i32 1 | |
%76 = bitcast i64* %n.i.i.i.i.i.i.i to %"enum.std::util::Void[#1]"* | |
store %"enum.std::util::Void[#1]"* %76, %"enum.std::util::Void[#1]"** %75, align 8 | |
%__adjust.sroa.0.0.idx.i.i.i.i.i.i.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args.i.i.i.i.i.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] } }* @"_ZN3vec22OwnedVector$$UP$$VEC$T7reserve15__STATIC_FMTSTR21hcf722141b2fbba44Ypa99v0.10.preE" to %"enum.std::fmt::rt::Piece[#1]"*), %"enum.std::fmt::rt::Piece[#1]"** %__adjust.sroa.0.0.idx.i.i.i.i.i.i.i, align 8 | |
%__adjust.sroa.2.0.idx16.i.i.i.i.i.i.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args.i.i.i.i.i.i.i, i64 0, i32 0, i32 1 | |
store i64 2, i64* %__adjust.sroa.2.0.idx16.i.i.i.i.i.i.i, align 8 | |
%__adjust.sroa.0.0.idx.i.i.i.i.i.i.i.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args.i.i.i.i.i.i.i, i64 0, i32 1, i32 0 | |
store %"struct.std::fmt::Argument[#1]"* %0, %"struct.std::fmt::Argument[#1]"** %__adjust.sroa.0.0.idx.i.i.i.i.i.i.i.i, align 8 | |
%__adjust.sroa.2.0.idx1.i.i.i.i.i.i.i.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args.i.i.i.i.i.i.i, i64 0, i32 1, i32 1 | |
store i64 1, i64* %__adjust.sroa.2.0.idx1.i.i.i.i.i.i.i.i, align 8 | |
%77 = invoke { i64, i64, [0 x i8] }* @_ZN3fmt6format19h356fa857e88c8c5bat9v0.10.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, %"struct.std::fmt::Arguments[#1]"* %__args.i.i.i.i.i.i.i) | |
to label %.noexc6.i.i.i unwind label %unwind_ast_3907_.nonloopexit.i.i.i | |
.noexc6.i.i.i: ; preds = %then-block-6495-.i.i.i.i.i.i.i | |
%78 = getelementptr inbounds %str_slice* %1, i64 0, i32 0 | |
store i8* getelementptr inbounds ([28 x i8]* @str2291, i64 0, i64 0), i8** %78, align 8 | |
%79 = getelementptr inbounds %str_slice* %1, i64 0, i32 1 | |
store i64 27, i64* %79, align 8 | |
invoke fastcc void @_ZN2rt6unwind12begin_unwind19h9443711abab5072daA4v0.0E({ i64, i64, [0 x i8] }* %77, %str_slice* %1, i64 1478) | |
to label %.noexc7.i.i.i unwind label %unwind_ast_3907_.nonloopexit.i.i.i | |
.noexc7.i.i.i: ; preds = %.noexc6.i.i.i | |
unreachable | |
next-block.i.i.i.i.i.i.i: ; preds = %join.i.i.i.i.i.i.i | |
%80 = bitcast {}* %30 to i8* | |
%81 = icmp eq i64 %66, 0 | |
br i1 %81, label %then-block-6583-.i.i.i.i.i.i.i.i, label %else-block.i.i3.i.i.i.i.i.i | |
then-block-6583-.i.i.i.i.i.i.i.i: ; preds = %next-block.i.i.i.i.i.i.i | |
call void @free(i8* %80) #0 | |
unreachable | |
else-block.i.i3.i.i.i.i.i.i: ; preds = %next-block.i.i.i.i.i.i.i | |
%82 = call i8* @realloc(i8* %80, i64 %66) #0 | |
%83 = icmp eq i8* %82, null | |
br i1 %83, label %then-block-6605-.i.i.i.i.i.i.i.i, label %_ZN2rt11global_heap11realloc_raw19h516dd31982ba661faU4v0.0E.exit.i.i.i.i.i.i.i | |
then-block-6605-.i.i.i.i.i.i.i.i: ; preds = %else-block.i.i3.i.i.i.i.i.i | |
call void @llvm.trap() #0 | |
unreachable | |
_ZN2rt11global_heap11realloc_raw19h516dd31982ba661faU4v0.0E.exit.i.i.i.i.i.i.i: ; preds = %else-block.i.i3.i.i.i.i.i.i | |
%.c.i.i.i.i.i.i.i = bitcast i8* %82 to { i64, i64, [0 x %"struct.std::cell::Cell<f32>[#1]"] }* | |
%84 = bitcast i8* %82 to {}* | |
%85 = getelementptr inbounds i8* %82, i64 8 | |
%86 = bitcast i8* %85 to i64* | |
store i64 %65, i64* %86, align 8 | |
br label %"_ZN3vec22OwnedVector$$UP$$VEC$T4push21hfda9574a9a3c87bazZaq4v0.0E.exit.i.i.i" | |
"_ZN3vec22OwnedVector$$UP$$VEC$T4push21hfda9574a9a3c87bazZaq4v0.0E.exit.i.i.i": ; preds = %_ZN2rt11global_heap11realloc_raw19h516dd31982ba661faU4v0.0E.exit.i.i.i.i.i.i.i, %_ZN4uint21next_power_of_two_opt19h38b6f90766e9a357aT4v0.0E.exit.i.i.i.i.i.i, %then-block-6085-.i.i.i.i, %match_case.i.i.i.i.i | |
%87 = phi {}* [ %84, %_ZN2rt11global_heap11realloc_raw19h516dd31982ba661faU4v0.0E.exit.i.i.i.i.i.i.i ], [ %30, %_ZN4uint21next_power_of_two_opt19h38b6f90766e9a357aT4v0.0E.exit.i.i.i.i.i.i ], [ %30, %then-block-6085-.i.i.i.i ], [ %30, %match_case.i.i.i.i.i ] | |
%88 = phi { i64, i64, [0 x %"struct.std::cell::Cell<f32>[#1]"] }* [ %.c.i.i.i.i.i.i.i, %_ZN2rt11global_heap11realloc_raw19h516dd31982ba661faU4v0.0E.exit.i.i.i.i.i.i.i ], [ %35, %_ZN4uint21next_power_of_two_opt19h38b6f90766e9a357aT4v0.0E.exit.i.i.i.i.i.i ], [ %35, %then-block-6085-.i.i.i.i ], [ %35, %match_case.i.i.i.i.i ] | |
%89 = getelementptr inbounds { i64, i64, [0 x %"struct.std::cell::Cell<f32>[#1]"] }* %88, i64 0, i32 0 | |
%90 = load i64* %89, align 8 | |
%91 = add i64 %90, 4 | |
store i64 %91, i64* %89, align 8 | |
%92 = bitcast {}* %87 to { i64, i64, [0 x %"struct.std::cell::Cell<f32>[#1]"] }* | |
%93 = getelementptr inbounds { i64, i64, [0 x %"struct.std::cell::Cell<f32>[#1]"] }* %92, i64 1 | |
%94 = bitcast { i64, i64, [0 x %"struct.std::cell::Cell<f32>[#1]"] }* %93 to i8* | |
%95 = getelementptr inbounds i8* %94, i64 %90 | |
%96 = bitcast i8* %95 to %"struct.std::cell::Cell<f32>[#1]"* | |
store %"struct.std::cell::Cell<f32>[#1]" %oldret.i, %"struct.std::cell::Cell<f32>[#1]"* %96, align 4 | |
%97 = icmp eq float* %32, %4 | |
br i1 %97, label %"_ZN3vec26ImmutableVector$$BP$$VEC$T3map21h6969c481d18ebc73jHa54v0.0E.exit", label %"_ZN3vec14Iterator$Items4next21hfa2b844f4a7f4ac10lac4v0.0E.exit.i.i.i.i" | |
"_ZN3vec26ImmutableVector$$BP$$VEC$T3map21h6969c481d18ebc73jHa54v0.0E.exit": ; preds = %"_ZN3vec14Iterator$Items4next21hfa2b844f4a7f4ac10lac4v0.0E.exit.i.i.i.i", %"_ZN3vec22OwnedVector$$UP$$VEC$T4push21hfda9574a9a3c87bazZaq4v0.0E.exit.i.i.i", %_ZN3vec13with_capacity19h6f61fd28705b02a9ac4v0.0E.exit.i.i.i | |
%.lcssa.i.i = phi {}* [ %24, %_ZN3vec13with_capacity19h6f61fd28705b02a9ac4v0.0E.exit.i.i.i ], [ %30, %"_ZN3vec14Iterator$Items4next21hfa2b844f4a7f4ac10lac4v0.0E.exit.i.i.i.i" ], [ %87, %"_ZN3vec22OwnedVector$$UP$$VEC$T4push21hfda9574a9a3c87bazZaq4v0.0E.exit.i.i.i" ] | |
%98 = bitcast {}* %.lcssa.i.i to { i64, i64, [0 x %"struct.std::cell::Cell<f32>[#1]"] }* | |
ret { i64, i64, [0 x %"struct.std::cell::Cell<f32>[#1]"] }* %98 | |
} | |
; Function Attrs: cold noinline noreturn uwtable | |
define internal fastcc void @_ZN2rt6unwind12begin_unwind19h9443711abab5072daA4v0.0E({ i64, i64, [0 x i8] }* noalias, %str_slice* nocapture readonly, i64) unnamed_addr #4 { | |
entry-block: | |
%tmp.i.i.sroa.4 = alloca [23 x i8], align 1 | |
%src.i.sroa.6 = alloca [23 x i8], align 1 | |
%__auto_borrow_obj.i = alloca { %tydesc*, i8* }, align 8 | |
%_x.i = alloca { %tydesc*, i8* }, align 8 | |
%tmp.i.i.sroa.4.i = alloca [23 x i8], align 1 | |
%src.i.sroa.6.i = alloca [23 x i8], align 1 | |
%.sroa.2.i64 = alloca [23 x i8], align 1 | |
%3 = alloca %str_slice, align 8 | |
%tmp.sroa.5.i.i.i = alloca [7 x i8], align 1 | |
%tmp.sroa.6.i.i.i = alloca [7 x i8], align 1 | |
%src.sroa.6.i.i = alloca [7 x i8], align 1 | |
%src.sroa.9.i.i = alloca [7 x i8], align 1 | |
%.sroa.2.i = alloca [7 x i8], align 1 | |
%.sroa.4.i = alloca [7 x i8], align 1 | |
%file = alloca %str_slice, align 8 | |
%line = alloca i64, align 8 | |
%msg1 = alloca { %tydesc*, i8* }, align 8 | |
%msg_s = alloca %str_slice, align 8 | |
%4 = alloca [3 x %"struct.std::fmt::Argument[#1]"], align 8 | |
%__args = alloca %"struct.std::fmt::Arguments[#1]", align 8 | |
%name.sroa.5 = alloca [7 x i8], align 1 | |
%name.sroa.10 = alloca [7 x i8], align 1 | |
%n = alloca %str_slice, align 8 | |
%5 = alloca %"enum.std::option::Option<~std::io::Writer:Send>[#1]", align 8 | |
%stderr = alloca { %tydesc*, i8* }, align 8 | |
%6 = alloca [4 x %"struct.std::fmt::Argument[#1]"], align 8 | |
%__args52 = alloca %"struct.std::fmt::Arguments[#1]", align 8 | |
%7 = alloca %"enum.std::option::Option<~std::io::Writer:Send>[#1]", align 8 | |
%.sroa.2 = alloca [23 x i8], align 1 | |
%arg = alloca { %tydesc*, i8* }, align 8 | |
%prev = alloca { %tydesc*, i8* }, align 8 | |
%arg68 = alloca { %tydesc*, i8* }, align 8 | |
%8 = alloca [4 x %"struct.std::fmt::Argument[#1]"], align 8 | |
%__args81 = alloca %"struct.std::fmt::Arguments[#1]", align 8 | |
%ExprAssign.sroa.2 = alloca [7 x i8], align 1 | |
%ExprAssign.sroa.4 = alloca [7 x i8], align 1 | |
%__args88 = alloca %"struct.std::fmt::Arguments[#1]", align 8 | |
%__args94 = alloca %"struct.std::fmt::Arguments[#1]", align 8 | |
%arg103 = alloca { %tydesc*, i8* }, align 8 | |
%.sub5 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %8, i64 0, i64 0 | |
%.sub4 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %6, i64 0, i64 0 | |
%.sub = getelementptr inbounds [3 x %"struct.std::fmt::Argument[#1]"]* %4, i64 0, i64 0 | |
%9 = bitcast %str_slice* %1 to i8* | |
%10 = bitcast %str_slice* %file to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %9, i64 16, i32 8, i1 false) | |
store i64 %2, i64* %line, align 8 | |
%11 = call i8* @malloc(i64 8) #0 | |
%12 = icmp eq i8* %11, null | |
br i1 %12, label %then-block-4856-.i.i, label %normal-return | |
then-block-4856-.i.i: ; preds = %entry-block | |
call void @llvm.trap() #0 | |
unreachable | |
normal-return: ; preds = %entry-block | |
%13 = bitcast i8* %11 to { i64, i64, [0 x i8] }** | |
store { i64, i64, [0 x i8] }* %0, { i64, i64, [0 x i8] }** %13, align 8 | |
%14 = getelementptr inbounds { %tydesc*, i8* }* %msg1, i64 0, i32 1 | |
store i8* %11, i8** %14, align 8 | |
%15 = getelementptr inbounds { %tydesc*, i8* }* %msg1, i64 0, i32 0 | |
store %tydesc* bitcast ({ %tydesc*, %"struct.std::unstable::intrinsics::TypeId[#1]" ({ i64, i64, [0 x i8] }**)*, %"enum.std::util::Void[#1]"* ({ i64, i64, [0 x i8] }**)*, %"enum.std::util::Void[#1]"* ({ i64, i64, [0 x i8] }**)* }* @vtable2015 to %tydesc*), %tydesc** %15, align 8 | |
%16 = bitcast i8* %11 to { i64, %tydesc*, i8*, i8*, i8 }* | |
%17 = invoke %"struct.std::unstable::intrinsics::TypeId[#1]" bitcast (%"struct.std::unstable::intrinsics::TypeId[#1]" ({ i64, i64, [0 x i8] }**)* @"_ZN3any5Any$T11get_type_id21h161d4df8a2bc39a09Was4v0.0E" to %"struct.std::unstable::intrinsics::TypeId[#1]" ({ i64, %tydesc*, i8*, i8*, i8 }*)*)({ i64, %tydesc*, i8*, i8*, i8 }* %16) | |
to label %.noexc unwind label %unwind_ast_4808_ | |
.noexc: ; preds = %normal-return | |
%.fca.0.extract.i.i = extractvalue %"struct.std::unstable::intrinsics::TypeId[#1]" %17, 0 | |
%18 = icmp eq i64 %.fca.0.extract.i.i, -7139287502465421498 | |
br i1 %18, label %match_case, label %match_else | |
"_ZN8_$UP$str9glue_drop19hf486c988072d7d43alE.exit": ; preds = %clean_ast_4808_, %cond.i18 | |
%.fca.0.insert131 = insertvalue { i8*, i32 } undef, i8* %.sroa.0157.1, 0 | |
%.fca.1.insert = insertvalue { i8*, i32 } %.fca.0.insert131, i32 %.sroa.8.1, 1 | |
resume { i8*, i32 } %.fca.1.insert | |
unwind_ast_4808_: ; preds = %normal-return100, %join14, %then-block-5004-.i20, %match_else, %normal-return, %normal-return102 | |
%19 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"struct.std::rt::unwind::libunwind::_Unwind_Exception[#1]"*, %"enum.std::rt::unwind::libunwind::_Unwind_Context[#1]"*)* @rust_eh_personality | |
cleanup | |
br label %unwind_ast_4808_.body | |
unwind_ast_4808_.body: ; preds = %.noexc27, %unwind_ast_4808_ | |
%eh.lpad-body = phi { i8*, i32 } [ %19, %unwind_ast_4808_ ], [ %227, %.noexc27 ] | |
%.fca.0.extract134 = extractvalue { i8*, i32 } %eh.lpad-body, 0 | |
%.fca.1.extract136 = extractvalue { i8*, i32 } %eh.lpad-body, 1 | |
br label %clean_ast_4808_ | |
clean_ast_4808_: ; preds = %clean_ast_4782_32, %clean_ast_4782_32.thread, %unwind_ast_4782_, %cond.i.i.i54, %unwind_ast_4808_.body | |
%task.0.load171 = phi %"struct.std::rt::task::Task[#1]"* [ null, %unwind_ast_4808_.body ], [ null, %unwind_ast_4782_ ], [ %task.0.load175, %cond.i.i.i54 ], [ %task.0.load175, %clean_ast_4782_32 ], [ %task.0.load169, %clean_ast_4782_32.thread ] | |
%.sroa.0157.1 = phi i8* [ %.fca.0.extract134, %unwind_ast_4808_.body ], [ %.fca.0.extract138, %unwind_ast_4782_ ], [ %.sroa.0157.3, %cond.i.i.i54 ], [ %.sroa.0157.3, %clean_ast_4782_32 ], [ %.fca.0.extract142, %clean_ast_4782_32.thread ] | |
%.sroa.8.1 = phi i32 [ %.fca.1.extract136, %unwind_ast_4808_.body ], [ %.fca.1.extract140, %unwind_ast_4782_ ], [ %.sroa.8.3, %cond.i.i.i54 ], [ %.sroa.8.3, %clean_ast_4782_32 ], [ %.fca.1.extract144, %clean_ast_4782_32.thread ] | |
call fastcc void @"_ZN24_$UP$std..rt..task..Task9glue_drop19h1061f94893119fc6auE"(%"struct.std::rt::task::Task[#1]"* %task.0.load171) | |
%20 = load i8** %14, align 8 | |
%21 = icmp eq i8* %20, null | |
br i1 %21, label %"_ZN8_$UP$str9glue_drop19hf486c988072d7d43alE.exit", label %cond.i18 | |
cond.i18: ; preds = %clean_ast_4808_ | |
%22 = load %tydesc** %15, align 8 | |
%23 = bitcast %tydesc* %22 to %tydesc** | |
%24 = load %tydesc** %23, align 8 | |
%25 = bitcast i8** %14 to i8* | |
%26 = getelementptr inbounds %tydesc* %24, i64 0, i32 3 | |
%27 = load void ({}*, i8*)** %26, align 8 | |
call void %27({}* null, i8* %25) | |
br label %"_ZN8_$UP$str9glue_drop19hf486c988072d7d43alE.exit" | |
match_else: ; preds = %.noexc | |
%28 = load %tydesc** %15, align 8 | |
%29 = load i8** %14, align 8 | |
%30 = bitcast i8* %29 to { i64, %tydesc*, i8*, i8*, i8 }* | |
%31 = getelementptr inbounds %tydesc* %28, i64 0, i32 1 | |
%32 = bitcast i64* %31 to i8** | |
%33 = load i8** %32, align 8 | |
%34 = bitcast i8* %33 to %"struct.std::unstable::intrinsics::TypeId[#1]" ({ i64, %tydesc*, i8*, i8*, i8 }*)* | |
%35 = invoke %"struct.std::unstable::intrinsics::TypeId[#1]" %34({ i64, %tydesc*, i8*, i8*, i8 }* %30) | |
to label %.noexc22 unwind label %unwind_ast_4808_ | |
.noexc22: ; preds = %match_else | |
%.fca.0.extract.i.i19 = extractvalue %"struct.std::unstable::intrinsics::TypeId[#1]" %35, 0 | |
%36 = icmp eq i64 %.fca.0.extract.i.i19, 5777515549890468306 | |
br i1 %36, label %then-block-5004-.i20, label %match_else11 | |
then-block-5004-.i20: ; preds = %.noexc22 | |
%37 = getelementptr inbounds %tydesc* %28, i64 0, i32 2 | |
%38 = load void ({}*, i8*)** %37, align 8 | |
%39 = bitcast void ({}*, i8*)* %38 to %"enum.std::util::Void[#1]"* ({ i64, %tydesc*, i8*, i8*, i8 }*)* | |
%40 = invoke %"enum.std::util::Void[#1]"* %39({ i64, %tydesc*, i8*, i8*, i8 }* %30) | |
to label %normal-return5 unwind label %unwind_ast_4808_ | |
match_case: ; preds = %.noexc | |
%41 = bitcast %str_slice* %msg_s to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %41, i8* %11, i64 16, i32 8, i1 false) | |
br label %join14 | |
normal-return5: ; preds = %then-block-5004-.i20 | |
%42 = icmp eq %"enum.std::util::Void[#1]"* %40, null | |
br i1 %42, label %match_else11, label %match_case12 | |
match_else11: ; preds = %.noexc22, %normal-return5 | |
%43 = getelementptr inbounds %str_slice* %msg_s, i64 0, i32 0 | |
store i8* getelementptr inbounds ([5 x i8]* @str2185, i64 0, i64 0), i8** %43, align 8 | |
%44 = getelementptr inbounds %str_slice* %msg_s, i64 0, i32 1 | |
store i64 4, i64* %44, align 8 | |
br label %join14 | |
match_case12: ; preds = %normal-return5 | |
%45 = bitcast %"enum.std::util::Void[#1]"* %40 to { i64, i64, [0 x i8] }** | |
%.val = load { i64, i64, [0 x i8] }** %45, align 8 | |
%46 = getelementptr inbounds { i64, i64, [0 x i8] }* %.val, i64 0, i32 2, i64 0 | |
%47 = getelementptr inbounds { i64, i64, [0 x i8] }* %.val, i64 0, i32 0 | |
%48 = load i64* %47, align 8 | |
%s.sroa.0.0.idx.i = getelementptr inbounds %str_slice* %msg_s, i64 0, i32 0 | |
store i8* %46, 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 %48, i64* %s.sroa.2.0.idx2.i, align 8 | |
br label %join14 | |
join14: ; preds = %match_case12, %match_else11, %match_case | |
%49 = invoke fastcc %"struct.std::rt::task::Task[#1]"* @_ZN2rt9local_ptr8compiled8try_take19h021887ac426c42f5ay4v0.0E() | |
to label %normal-return15 unwind label %unwind_ast_4808_ | |
normal-return15: ; preds = %join14 | |
%50 = icmp eq %"struct.std::rt::task::Task[#1]"* %49, null | |
br i1 %50, label %normal-return25, label %normal-return29 | |
unwind_ast_4782_: ; preds = %normal-return25 | |
%51 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"struct.std::rt::unwind::libunwind::_Unwind_Exception[#1]"*, %"enum.std::rt::unwind::libunwind::_Unwind_Context[#1]"*)* @rust_eh_personality | |
cleanup | |
%.fca.0.extract138 = extractvalue { i8*, i32 } %51, 0 | |
%.fca.1.extract140 = extractvalue { i8*, i32 } %51, 1 | |
br label %clean_ast_4808_ | |
normal-return25: ; preds = %normal-return15 | |
%52 = 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]"*)* @"_ZN3fmt15Default$$BP$str3fmt21hc4a66d5ebdc55a07LIaC9v0.10.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]"*)** %52, align 8 | |
%53 = getelementptr inbounds [3 x %"struct.std::fmt::Argument[#1]"]* %4, i64 0, i64 0, i32 1 | |
%54 = bitcast %str_slice* %msg_s to %"enum.std::util::Void[#1]"* | |
store %"enum.std::util::Void[#1]"* %54, %"enum.std::util::Void[#1]"** %53, align 8 | |
%55 = 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]"*)* @"_ZN3fmt15Default$$BP$str3fmt21hc4a66d5ebdc55a07LIaC9v0.10.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]"*)** %55, align 8 | |
%56 = getelementptr inbounds [3 x %"struct.std::fmt::Argument[#1]"]* %4, i64 0, i64 1, i32 1 | |
%57 = bitcast %str_slice* %file to %"enum.std::util::Void[#1]"* | |
store %"enum.std::util::Void[#1]"* %57, %"enum.std::util::Void[#1]"** %56, align 8 | |
%58 = 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$uint3fmt21h9d24c533d4c27d2edaaR9v0.10.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]"*)** %58, align 8 | |
%59 = getelementptr inbounds [3 x %"struct.std::fmt::Argument[#1]"]* %4, i64 0, i64 2, i32 1 | |
%60 = bitcast i64* %line to %"enum.std::util::Void[#1]"* | |
store %"enum.std::util::Void[#1]"* %60, %"enum.std::util::Void[#1]"** %59, align 8 | |
%__adjust.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] } }* @_ZN2rt6unwind12begin_unwind15__STATIC_FMTSTR19hc82609ea93582c3baQ9v0.10.preE to %"enum.std::fmt::rt::Piece[#1]"*), %"enum.std::fmt::rt::Piece[#1]"** %__adjust.sroa.0.0.idx, align 8 | |
%__adjust.sroa.2.0.idx117 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args, i64 0, i32 0, i32 1 | |
store i64 6, i64* %__adjust.sroa.2.0.idx117, align 8 | |
%__adjust.sroa.0.0.idx.i = 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.i, align 8 | |
%__adjust.sroa.2.0.idx1.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args, i64 0, i32 1, i32 1 | |
store i64 3, i64* %__adjust.sroa.2.0.idx1.i, align 8 | |
invoke void @_ZN2rt4util12dumb_println19hc795bb121ba5c6ecaQ9v0.10.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, %"struct.std::fmt::Arguments[#1]"* %__args) | |
to label %normal-return26 unwind label %unwind_ast_4782_ | |
normal-return26: ; preds = %normal-return25 | |
call void @llvm.trap() #0 | |
unreachable | |
normal-return29: ; preds = %normal-return15 | |
%.sroa.2.i.0.idx = getelementptr inbounds [7 x i8]* %.sroa.2.i, i64 0, i64 0 | |
call void @llvm.lifetime.start(i64 7, i8* %.sroa.2.i.0.idx) | |
%.sroa.4.i.0.idx = getelementptr inbounds [7 x i8]* %.sroa.4.i, i64 0, i64 0 | |
call void @llvm.lifetime.start(i64 7, i8* %.sroa.4.i.0.idx) | |
%src.sroa.6.i.0.idx.i = getelementptr inbounds [7 x i8]* %src.sroa.6.i.i, i64 0, i64 0 | |
call void @llvm.lifetime.start(i64 7, i8* %src.sroa.6.i.0.idx.i) | |
%src.sroa.9.i.0.idx.i = getelementptr inbounds [7 x i8]* %src.sroa.9.i.i, i64 0, i64 0 | |
call void @llvm.lifetime.start(i64 7, i8* %src.sroa.9.i.0.idx.i) | |
%tmp.sroa.5.i.0.idx.i.i = getelementptr inbounds [7 x i8]* %tmp.sroa.5.i.i.i, i64 0, i64 0 | |
call void @llvm.lifetime.start(i64 7, i8* %tmp.sroa.5.i.0.idx.i.i) | |
%tmp.sroa.6.i.0.idx.i.i = getelementptr inbounds [7 x i8]* %tmp.sroa.6.i.i.i, i64 0, i64 0 | |
call void @llvm.lifetime.start(i64 7, i8* %tmp.sroa.6.i.0.idx.i.i) | |
%tmp.sroa.0.0.idx1.i.i.i = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %49, i64 0, i32 6, i32 0 | |
%tmp.sroa.0.0.copyload2.i.i.i = load i8* %tmp.sroa.0.0.idx1.i.i.i, align 8 | |
%tmp.sroa.5.0.idx7.i.i.i = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %49, i64 0, i32 6, i32 1, i64 0 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %tmp.sroa.5.i.0.idx.i.i, i8* %tmp.sroa.5.0.idx7.i.i.i, i64 7, i32 1, i1 false) #0 | |
%tmp.sroa.511.0.idx12.i.i.i = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %49, i64 0, i32 6, i32 2 | |
%tmp.sroa.511.0.cast13.i.i.i = bitcast [3 x i64]* %tmp.sroa.511.0.idx12.i.i.i to i8* | |
%tmp.sroa.511.0.copyload14.i.i.i = load i8* %tmp.sroa.511.0.cast13.i.i.i, align 8 | |
%tmp.sroa.6.0.raw_idx20.i.i.i = getelementptr inbounds i8* %tmp.sroa.0.0.idx1.i.i.i, i64 9 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %tmp.sroa.6.i.0.idx.i.i, i8* %tmp.sroa.6.0.raw_idx20.i.i.i, i64 7, i32 1, i1 false) #0 | |
%tmp.sroa.625.0.idx26.i.i.i = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %49, i64 0, i32 6, i32 2, i64 1 | |
%tmp.sroa.625.0.cast27.i.i.i = bitcast i64* %tmp.sroa.625.0.idx26.i.i.i to { i64, i64, [0 x i8] }** | |
%tmp.sroa.625.0.copyload28.i.i.i = load { i64, i64, [0 x i8] }** %tmp.sroa.625.0.cast27.i.i.i, align 8 | |
%tmp.sroa.7.0.idx32.i.i.i = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %49, i64 0, i32 6, i32 2, i64 2 | |
%tmp.sroa.7.0.copyload33.i.i.i = load i64* %tmp.sroa.7.0.idx32.i.i.i, align 8 | |
store i8 0, i8* %tmp.sroa.0.0.idx1.i.i.i, align 8 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %tmp.sroa.5.0.idx7.i.i.i, i8* %.sroa.2.i.0.idx, i64 7, i32 1, i1 false) #0 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %tmp.sroa.6.0.raw_idx20.i.i.i, i8* %.sroa.4.i.0.idx, i64 7, i32 1, i1 false) #0 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %src.sroa.6.i.0.idx.i, i8* %tmp.sroa.5.i.0.idx.i.i, i64 7, i32 1, i1 false) #0 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %src.sroa.9.i.0.idx.i, i8* %tmp.sroa.6.i.0.idx.i.i, i64 7, i32 1, i1 false) #0 | |
%tmp.sroa.625.0.copyload28.c.i.i.i = ptrtoint { i64, i64, [0 x i8] }* %tmp.sroa.625.0.copyload28.i.i.i to i64 | |
call void @llvm.lifetime.end(i64 7, i8* %tmp.sroa.5.i.0.idx.i.i) | |
call void @llvm.lifetime.end(i64 7, i8* %tmp.sroa.6.i.0.idx.i.i) | |
%name.sroa.5.1.idx191 = getelementptr inbounds [7 x i8]* %name.sroa.5, i64 0, i64 0 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %name.sroa.5.1.idx191, i8* %src.sroa.6.i.0.idx.i, i64 7, i32 1, i1 false) | |
%name.sroa.10.9.idx195 = getelementptr inbounds [7 x i8]* %name.sroa.10, i64 0, i64 0 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %name.sroa.10.9.idx195, i8* %src.sroa.9.i.0.idx.i, i64 7, i32 1, i1 false) | |
call void @llvm.lifetime.end(i64 7, i8* %src.sroa.6.i.0.idx.i) | |
call void @llvm.lifetime.end(i64 7, i8* %src.sroa.9.i.0.idx.i) | |
call void @llvm.lifetime.end(i64 7, i8* %.sroa.2.i.0.idx) | |
call void @llvm.lifetime.end(i64 7, i8* %.sroa.4.i.0.idx) | |
%cond.i43 = icmp eq i8 %tmp.sroa.0.0.copyload2.i.i.i, 1 | |
%61 = bitcast %str_slice* %3 to i8* | |
call void @llvm.lifetime.start(i64 16, i8* %61) | |
br i1 %cond.i43, label %match_case.i48, label %match_else.i59 | |
match_case.i48: ; preds = %normal-return29 | |
%cond.i.i187 = icmp eq i8 %tmp.sroa.511.0.copyload14.i.i.i, 0 | |
br i1 %cond.i.i187, label %match_case.i.i, label %match_else.i.i | |
match_else.i.i: ; preds = %match_case.i48 | |
%62 = getelementptr inbounds %str_slice* %3, i64 0, i32 0 | |
%tmp.sroa.625.0.copyload28.c.i.i.i.c = bitcast { i64, i64, [0 x i8] }* %tmp.sroa.625.0.copyload28.i.i.i to i8* | |
store i8* %tmp.sroa.625.0.copyload28.c.i.i.i.c, i8** %62, align 8 | |
%name.sroa.16.16.idx198 = getelementptr inbounds %str_slice* %3, i64 0, i32 1 | |
store i64 %tmp.sroa.7.0.copyload33.i.i.i, i64* %name.sroa.16.16.idx198, align 8 | |
br label %_ZN2rt6unwind12begin_unwind4anon7expr_fn4aAaqE.exit | |
match_case.i.i: ; preds = %match_case.i48 | |
%63 = getelementptr inbounds { i64, i64, [0 x i8] }* %tmp.sroa.625.0.copyload28.i.i.i, i64 0, i32 2, i64 0 | |
%64 = getelementptr inbounds { i64, i64, [0 x i8] }* %tmp.sroa.625.0.copyload28.i.i.i, i64 0, i32 0 | |
%65 = load i64* %64, align 8 | |
%s.sroa.0.0.idx.i.i.i = getelementptr inbounds %str_slice* %3, i64 0, i32 0 | |
store i8* %63, i8** %s.sroa.0.0.idx.i.i.i, align 8 | |
%s.sroa.2.0.idx2.i.i.i = getelementptr inbounds %str_slice* %3, i64 0, i32 1 | |
store i64 %65, i64* %s.sroa.2.0.idx2.i.i.i, align 8 | |
br label %_ZN2rt6unwind12begin_unwind4anon7expr_fn4aAaqE.exit | |
_ZN2rt6unwind12begin_unwind4anon7expr_fn4aAaqE.exit: ; preds = %match_else.i.i, %match_case.i.i | |
%n185186 = bitcast %str_slice* %n to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %n185186, i8* %61, i64 16, i32 8, i1 false) | |
call void @llvm.lifetime.end(i64 16, i8* %61) | |
br label %normal-return35 | |
clean_ast_4782_32.thread: ; preds = %normal-return91, %normal-return97 | |
%66 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"struct.std::rt::unwind::libunwind::_Unwind_Exception[#1]"*, %"enum.std::rt::unwind::libunwind::_Unwind_Context[#1]"*)* @rust_eh_personality | |
cleanup | |
%.fca.0.extract142 = extractvalue { i8*, i32 } %66, 0 | |
%.fca.1.extract144 = extractvalue { i8*, i32 } %66, 1 | |
br label %clean_ast_4808_ | |
clean_ast_4782_32: ; preds = %cond.i.i79, %enum-iter-variant-1.i78, %clean_ast_4695_ | |
%cond.i50 = icmp ne i8 %tmp.sroa.0.0.copyload2.i.i.i, 1 | |
%cond.i.i51 = icmp eq i8 %tmp.sroa.511.0.copyload14.i.i.i, 1 | |
%or.cond = or i1 %cond.i50, %cond.i.i51 | |
%67 = icmp eq { i64, i64, [0 x i8] }* %tmp.sroa.625.0.copyload28.i.i.i, null | |
%or.cond233 = or i1 %or.cond, %67 | |
br i1 %or.cond233, label %clean_ast_4808_, label %cond.i.i.i54 | |
cond.i.i.i54: ; preds = %clean_ast_4782_32 | |
%68 = bitcast { i64, i64, [0 x i8] }* %tmp.sroa.625.0.copyload28.i.i.i to i8* | |
call void @free(i8* %68) #0 | |
br label %clean_ast_4808_ | |
match_else.i59: ; preds = %normal-return29 | |
call void @llvm.lifetime.end(i64 16, i8* %61) | |
%def.i.sroa.0.0.idx = getelementptr inbounds %str_slice* %n, i64 0, i32 0 | |
store i8* getelementptr inbounds ([10 x i8]* @str2253, i64 0, i64 0), i8** %def.i.sroa.0.0.idx, align 8 | |
%def.i.sroa.4.0.idx142 = getelementptr inbounds %str_slice* %n, i64 0, i32 1 | |
store i64 9, i64* %def.i.sroa.4.0.idx142, align 8 | |
br label %normal-return35 | |
normal-return35: ; preds = %match_else.i59, %_ZN2rt6unwind12begin_unwind4anon7expr_fn4aAaqE.exit | |
%.sroa.2.i64.0.idx = getelementptr inbounds [23 x i8]* %.sroa.2.i64, i64 0, i64 0 | |
call void @llvm.lifetime.start(i64 23, i8* %.sroa.2.i64.0.idx) | |
%src.i.sroa.6.0.idx22.i = getelementptr inbounds [23 x i8]* %src.i.sroa.6.i, i64 0, i64 0 | |
call void @llvm.lifetime.start(i64 23, i8* %src.i.sroa.6.0.idx22.i) | |
%tmp.i.i.sroa.4.0.idx20.i = getelementptr inbounds [23 x i8]* %tmp.i.i.sroa.4.i, i64 0, i64 0 | |
call void @llvm.lifetime.start(i64 23, i8* %tmp.i.i.sroa.4.0.idx20.i) | |
%tmp.i.i.sroa.0.0.idx.i = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %49, i64 0, i32 9, i32 0 | |
%tmp.i.i.sroa.0.0.copyload.i = load i8* %tmp.i.i.sroa.0.0.idx.i, align 8 | |
%tmp.i.i.sroa.4.0.idx16.i = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %49, i64 0, i32 9, i32 1, i64 0 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %tmp.i.i.sroa.4.0.idx20.i, i8* %tmp.i.i.sroa.4.0.idx16.i, i64 23, i32 1, i1 false) | |
store i8 0, i8* %tmp.i.i.sroa.0.0.idx.i, align 8 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %tmp.i.i.sroa.4.0.idx16.i, i8* %.sroa.2.i64.0.idx, i64 23, i32 1, i1 false) | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %src.i.sroa.6.0.idx22.i, i8* %tmp.i.i.sroa.4.0.idx20.i, i64 23, i32 1, i1 false) | |
call void @llvm.lifetime.end(i64 23, i8* %tmp.i.i.sroa.4.0.idx20.i) | |
%src.i.sroa.0.0.idx4.i = getelementptr inbounds %"enum.std::option::Option<~std::io::Writer:Send>[#1]"* %5, i64 0, i32 0 | |
store i8 %tmp.i.i.sroa.0.0.copyload.i, i8* %src.i.sroa.0.0.idx4.i, align 8 | |
%src.i.sroa.6.0.idx9.i = getelementptr inbounds %"enum.std::option::Option<~std::io::Writer:Send>[#1]"* %5, i64 0, i32 1, i64 0 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %src.i.sroa.6.0.idx9.i, i8* %src.i.sroa.6.0.idx22.i, i64 23, i32 1, i1 false) | |
call void @llvm.lifetime.end(i64 23, i8* %src.i.sroa.6.0.idx22.i) | |
call void @llvm.lifetime.end(i64 23, i8* %.sroa.2.i64.0.idx) | |
%cond107 = icmp eq i8 %tmp.i.i.sroa.0.0.copyload.i, 1 | |
br i1 %cond107, label %match_case40, label %normal-return84 | |
match_case40: ; preds = %normal-return35 | |
%69 = getelementptr inbounds %"enum.std::option::Option<~std::io::Writer:Send>[#1]"* %5, i64 0, i32 2 | |
%70 = bitcast [2 x i64]* %69 to i8* | |
%71 = bitcast { %tydesc*, i8* }* %stderr to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %71, i8* %70, i64 16, i32 8, i1 false) | |
call void @llvm.memset.p0i8.i64(i8* %70, i8 0, i64 16, i32 8, i1 false) | |
invoke fastcc void @_ZN2rt9local_ptr8compiled3put19h48db95f7430a5b1baI4v0.0E(%"struct.std::rt::task::Task[#1]"* %49) | |
to label %normal-return55 unwind label %.noexc74 | |
.noexc74: ; preds = %match_case40 | |
%72 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"struct.std::rt::unwind::libunwind::_Unwind_Exception[#1]"*, %"enum.std::rt::unwind::libunwind::_Unwind_Context[#1]"*)* @rust_eh_personality | |
cleanup | |
%.pre.pre = getelementptr inbounds { %tydesc*, i8* }* %stderr, i64 0, i32 1 | |
br label %unwind_custom_42.body | |
unwind_custom_42: ; preds = %normal-return56, %normal-return55 | |
%73 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"struct.std::rt::unwind::libunwind::_Unwind_Exception[#1]"*, %"enum.std::rt::unwind::libunwind::_Unwind_Context[#1]"*)* @rust_eh_personality | |
cleanup | |
br label %unwind_custom_42.body | |
unwind_custom_42.body: ; preds = %.noexc74, %unwind_custom_42 | |
%.pre.pre-phi = phi i8** [ %.pre.pre, %.noexc74 ], [ %112, %unwind_custom_42 ] | |
%eh.lpad-body75 = phi { i8*, i32 } [ %72, %.noexc74 ], [ %73, %unwind_custom_42 ] | |
%.fca.0.extract146 = extractvalue { i8*, i32 } %eh.lpad-body75, 0 | |
%.fca.1.extract148 = extractvalue { i8*, i32 } %eh.lpad-body75, 1 | |
br label %clean_custom_43 | |
clean_ast_4695_: ; preds = %cond.i81, %clean_custom_43, %unwind_ast_4695_ | |
%task.0.load175 = phi %"struct.std::rt::task::Task[#1]"* [ %49, %unwind_ast_4695_ ], [ null, %clean_custom_43 ], [ null, %cond.i81 ] | |
%.sroa.0157.3 = phi i8* [ %.fca.0.extract154, %unwind_ast_4695_ ], [ %.sroa.0157.4, %clean_custom_43 ], [ %.sroa.0157.4, %cond.i81 ] | |
%.sroa.8.3 = phi i32 [ %.fca.1.extract156, %unwind_ast_4695_ ], [ %.sroa.8.4, %clean_custom_43 ], [ %.sroa.8.4, %cond.i81 ] | |
%74 = load i8* %src.i.sroa.0.0.idx4.i, align 8, !range !0 | |
%cond.i77 = icmp eq i8 %74, 1 | |
br i1 %cond.i77, label %enum-iter-variant-1.i78, label %clean_ast_4782_32 | |
enum-iter-variant-1.i78: ; preds = %clean_ast_4695_ | |
%75 = getelementptr inbounds %"enum.std::option::Option<~std::io::Writer:Send>[#1]"* %5, i64 0, i32 2, i64 1 | |
%76 = bitcast i64* %75 to i8** | |
%77 = load i8** %76, align 8 | |
%78 = icmp eq i8* %77, null | |
br i1 %78, label %clean_ast_4782_32, label %cond.i.i79 | |
cond.i.i79: ; preds = %enum-iter-variant-1.i78 | |
%79 = getelementptr inbounds %"enum.std::option::Option<~std::io::Writer:Send>[#1]"* %5, i64 0, i32 2 | |
%80 = bitcast [2 x i64]* %79 to %tydesc** | |
%81 = load %tydesc** %80, align 8 | |
%82 = bitcast %tydesc* %81 to %tydesc** | |
%83 = load %tydesc** %82, align 8 | |
%84 = bitcast i64* %75 to i8* | |
%85 = getelementptr inbounds %tydesc* %83, i64 0, i32 3 | |
%86 = load void ({}*, i8*)** %85, align 8 | |
call void %86({}* null, i8* %84) | |
br label %clean_ast_4782_32 | |
clean_custom_43: ; preds = %cond.i.i86, %enum-iter-variant-1.i85, %"_ZN25_$UP$std..io..Writer.Send9glue_drop19h16e2cfb5e66048dbaPE.exit89", %unwind_custom_42.body | |
%.pre-phi = phi i8** [ %112, %cond.i.i86 ], [ %112, %enum-iter-variant-1.i85 ], [ %112, %"_ZN25_$UP$std..io..Writer.Send9glue_drop19h16e2cfb5e66048dbaPE.exit89" ], [ %.pre.pre-phi, %unwind_custom_42.body ] | |
%.sroa.0157.4 = phi i8* [ %.fca.0.extract150, %cond.i.i86 ], [ %.fca.0.extract150, %enum-iter-variant-1.i85 ], [ %.fca.0.extract150, %"_ZN25_$UP$std..io..Writer.Send9glue_drop19h16e2cfb5e66048dbaPE.exit89" ], [ %.fca.0.extract146, %unwind_custom_42.body ] | |
%.sroa.8.4 = phi i32 [ %.fca.1.extract152, %cond.i.i86 ], [ %.fca.1.extract152, %enum-iter-variant-1.i85 ], [ %.fca.1.extract152, %"_ZN25_$UP$std..io..Writer.Send9glue_drop19h16e2cfb5e66048dbaPE.exit89" ], [ %.fca.1.extract148, %unwind_custom_42.body ] | |
%87 = load i8** %.pre-phi, align 8 | |
%88 = icmp eq i8* %87, null | |
br i1 %88, label %clean_ast_4695_, label %cond.i81 | |
cond.i81: ; preds = %clean_custom_43 | |
%89 = getelementptr inbounds { %tydesc*, i8* }* %stderr, i64 0, i32 0 | |
%90 = load %tydesc** %89, align 8 | |
%91 = bitcast %tydesc* %90 to %tydesc** | |
%92 = load %tydesc** %91, align 8 | |
%93 = bitcast i8** %.pre-phi to i8* | |
%94 = getelementptr inbounds %tydesc* %92, i64 0, i32 3 | |
%95 = load void ({}*, i8*)** %94, align 8 | |
call void %95({}* null, i8* %93) | |
br label %clean_ast_4695_ | |
normal-return55: ; preds = %match_case40 | |
%96 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %6, 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]"*)* @"_ZN3fmt15Default$$BP$str3fmt21hc4a66d5ebdc55a07LIaC9v0.10.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]"*)** %96, align 8 | |
%97 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %6, i64 0, i64 0, i32 1 | |
%98 = bitcast %str_slice* %n to %"enum.std::util::Void[#1]"* | |
store %"enum.std::util::Void[#1]"* %98, %"enum.std::util::Void[#1]"** %97, align 8 | |
%99 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %6, 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]"*)* @"_ZN3fmt15Default$$BP$str3fmt21hc4a66d5ebdc55a07LIaC9v0.10.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]"*)** %99, align 8 | |
%100 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %6, i64 0, i64 1, i32 1 | |
%101 = bitcast %str_slice* %msg_s to %"enum.std::util::Void[#1]"* | |
store %"enum.std::util::Void[#1]"* %101, %"enum.std::util::Void[#1]"** %100, align 8 | |
%102 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %6, 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]"*)* @"_ZN3fmt15Default$$BP$str3fmt21hc4a66d5ebdc55a07LIaC9v0.10.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]"*)** %102, align 8 | |
%103 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %6, i64 0, i64 2, i32 1 | |
%104 = bitcast %str_slice* %file to %"enum.std::util::Void[#1]"* | |
store %"enum.std::util::Void[#1]"* %104, %"enum.std::util::Void[#1]"** %103, align 8 | |
%105 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %6, 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$uint3fmt21h9d24c533d4c27d2edaaR9v0.10.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]"*)** %105, align 8 | |
%106 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %6, i64 0, i64 3, i32 1 | |
%107 = bitcast i64* %line to %"enum.std::util::Void[#1]"* | |
store %"enum.std::util::Void[#1]"* %107, %"enum.std::util::Void[#1]"** %106, align 8 | |
%__adjust53.sroa.0.0.idx = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args52, 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] } }* @_ZN2rt6unwind12begin_unwind15__STATIC_FMTSTR19h3cdf3b09c8333291aa9v0.10.preE to %"enum.std::fmt::rt::Piece[#1]"*), %"enum.std::fmt::rt::Piece[#1]"** %__adjust53.sroa.0.0.idx, align 8 | |
%__adjust53.sroa.2.0.idx107 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args52, i64 0, i32 0, i32 1 | |
store i64 8, i64* %__adjust53.sroa.2.0.idx107, align 8 | |
%__adjust.sroa.0.0.idx.i90 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args52, i64 0, i32 1, i32 0 | |
store %"struct.std::fmt::Argument[#1]"* %.sub4, %"struct.std::fmt::Argument[#1]"** %__adjust.sroa.0.0.idx.i90, align 8 | |
%__adjust.sroa.2.0.idx1.i91 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args52, i64 0, i32 1, i32 1 | |
store i64 4, i64* %__adjust.sroa.2.0.idx1.i91, align 8 | |
%108 = bitcast { %tydesc*, i8* }* %__auto_borrow_obj.i to i8* | |
call void @llvm.lifetime.start(i64 16, i8* %108) | |
%109 = getelementptr inbounds { %tydesc*, i8* }* %stderr, i64 0, i32 0 | |
%110 = load %tydesc** %109, align 8 | |
%111 = getelementptr inbounds { %tydesc*, i8* }* %__auto_borrow_obj.i, i64 0, i32 0 | |
store %tydesc* %110, %tydesc** %111, align 8 | |
%112 = getelementptr inbounds { %tydesc*, i8* }* %stderr, i64 0, i32 1 | |
%113 = load i8** %112, align 8 | |
%114 = getelementptr inbounds { %tydesc*, i8* }* %__auto_borrow_obj.i, i64 0, i32 1 | |
store i8* %113, i8** %114, align 8 | |
invoke void @_ZN3fmt7writeln19h322c2b586bbb2c1eaX9v0.10.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, { %tydesc*, i8* }* %__auto_borrow_obj.i, %"struct.std::fmt::Arguments[#1]"* %__args52) | |
to label %normal-return56 unwind label %unwind_custom_42 | |
normal-return56: ; preds = %normal-return55 | |
call void @llvm.lifetime.end(i64 16, i8* %108) | |
%115 = invoke fastcc noalias %"struct.std::rt::task::Task[#1]"* @_ZN2rt9local_ptr8compiled4take19h8b0bb04cc5c11f7baV4v0.0E() | |
to label %normal-return59 unwind label %unwind_custom_42 | |
normal-return59: ; preds = %normal-return56 | |
%116 = bitcast { %tydesc*, i8* }* %arg to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %116, i8* %71, i64 16, i32 8, i1 false) | |
call void @llvm.memset.p0i8.i64(i8* %71, i8 0, i64 16, i32 8, i1 false) | |
%.sroa.2.8.idx = getelementptr inbounds [23 x i8]* %.sroa.2, i64 0, i64 7 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.2.8.idx, i8* %116, i64 16, i32 1, i1 false) | |
%src.i.sroa.6.0.idx167 = getelementptr inbounds [23 x i8]* %src.i.sroa.6, i64 0, i64 0 | |
call void @llvm.lifetime.start(i64 23, i8* %src.i.sroa.6.0.idx167) | |
%src.i.sroa.6.1.idx = getelementptr inbounds [23 x i8]* %.sroa.2, i64 0, i64 0 | |
%tmp.i.i.sroa.4.0.idx165 = getelementptr inbounds [23 x i8]* %tmp.i.i.sroa.4, i64 0, i64 0 | |
call void @llvm.lifetime.start(i64 23, i8* %tmp.i.i.sroa.4.0.idx165) | |
%tmp.i.i.sroa.0.0.idx = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %115, i64 0, i32 9, i32 0 | |
%tmp.i.i.sroa.0.0.copyload = load i8* %tmp.i.i.sroa.0.0.idx, align 8 | |
%tmp.i.i.sroa.4.0.idx161 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %115, i64 0, i32 9, i32 1, i64 0 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %tmp.i.i.sroa.4.0.idx165, i8* %tmp.i.i.sroa.4.0.idx161, i64 23, i32 1, i1 false) | |
store i8 1, i8* %tmp.i.i.sroa.0.0.idx, align 8 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %tmp.i.i.sroa.4.0.idx161, i8* %src.i.sroa.6.1.idx, i64 23, i32 1, i1 false) | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %src.i.sroa.6.0.idx167, i8* %tmp.i.i.sroa.4.0.idx165, i64 23, i32 1, i1 false) | |
call void @llvm.lifetime.end(i64 23, i8* %tmp.i.i.sroa.4.0.idx165) | |
%src.i.sroa.0.0.idx149 = getelementptr inbounds %"enum.std::option::Option<~std::io::Writer:Send>[#1]"* %7, i64 0, i32 0 | |
store i8 %tmp.i.i.sroa.0.0.copyload, i8* %src.i.sroa.0.0.idx149, align 8 | |
%src.i.sroa.6.0.idx154 = getelementptr inbounds %"enum.std::option::Option<~std::io::Writer:Send>[#1]"* %7, i64 0, i32 1, i64 0 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %src.i.sroa.6.0.idx154, i8* %src.i.sroa.6.0.idx167, i64 23, i32 1, i1 false) | |
call void @llvm.lifetime.end(i64 23, i8* %src.i.sroa.6.0.idx167) | |
%cond108 = icmp eq i8 %tmp.i.i.sroa.0.0.copyload, 1 | |
br i1 %cond108, label %match_case64, label %"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit68" | |
match_case64: ; preds = %normal-return59 | |
%117 = getelementptr inbounds %"enum.std::option::Option<~std::io::Writer:Send>[#1]"* %7, i64 0, i32 2 | |
%118 = bitcast [2 x i64]* %117 to i8* | |
%119 = bitcast { %tydesc*, i8* }* %prev to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %119, i8* %118, i64 16, i32 8, i1 false) | |
call void @llvm.memset.p0i8.i64(i8* %118, i8 0, i64 16, i32 8, i1 false) | |
invoke fastcc void @_ZN2rt9local_ptr8compiled3put19h48db95f7430a5b1baI4v0.0E(%"struct.std::rt::task::Task[#1]"* %115) | |
to label %normal-return65 unwind label %.noexc100 | |
.noexc100: ; preds = %match_case64 | |
%120 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"struct.std::rt::unwind::libunwind::_Unwind_Exception[#1]"*, %"enum.std::rt::unwind::libunwind::_Unwind_Context[#1]"*)* @rust_eh_personality | |
cleanup | |
br label %unwind_custom_66.body | |
normal-return65: ; preds = %match_case64 | |
%121 = bitcast { %tydesc*, i8* }* %arg68 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %121, i8* %119, i64 16, i32 8, i1 false) | |
call void @llvm.memset.p0i8.i64(i8* %119, i8 0, i64 16, i32 8, i1 false) | |
%122 = bitcast { %tydesc*, i8* }* %_x.i to i8* | |
call void @llvm.lifetime.start(i64 16, i8* %122) | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %122, i8* %121, i64 16, i32 8, i1 false) | |
%123 = getelementptr inbounds { %tydesc*, i8* }* %_x.i, i64 0, i32 1 | |
%124 = load i8** %123, align 8 | |
%125 = icmp eq i8* %124, null | |
br i1 %125, label %normal-return69, label %cond.i.i92 | |
cond.i.i92: ; preds = %normal-return65 | |
%126 = getelementptr inbounds { %tydesc*, i8* }* %_x.i, i64 0, i32 0 | |
%127 = load %tydesc** %126, align 8 | |
%128 = bitcast %tydesc* %127 to %tydesc** | |
%129 = load %tydesc** %128, align 8 | |
%130 = bitcast i8** %123 to i8* | |
%131 = getelementptr inbounds %tydesc* %129, i64 0, i32 3 | |
%132 = load void ({}*, i8*)** %131, align 8 | |
invoke void %132({}* null, i8* %130) | |
to label %normal-return69 unwind label %unwind_custom_66 | |
unwind_custom_66: ; preds = %cond.i.i92, %normal-return69 | |
%133 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"struct.std::rt::unwind::libunwind::_Unwind_Exception[#1]"*, %"enum.std::rt::unwind::libunwind::_Unwind_Context[#1]"*)* @rust_eh_personality | |
cleanup | |
br label %unwind_custom_66.body | |
unwind_custom_66.body: ; preds = %.noexc100, %unwind_custom_66 | |
%eh.lpad-body101 = phi { i8*, i32 } [ %133, %unwind_custom_66 ], [ %120, %.noexc100 ] | |
%.fca.0.extract150 = extractvalue { i8*, i32 } %eh.lpad-body101, 0 | |
%.fca.1.extract152 = extractvalue { i8*, i32 } %eh.lpad-body101, 1 | |
%134 = getelementptr inbounds { %tydesc*, i8* }* %prev, i64 0, i32 1 | |
%135 = load i8** %134, align 8 | |
%136 = icmp eq i8* %135, null | |
br i1 %136, label %"_ZN25_$UP$std..io..Writer.Send9glue_drop19h16e2cfb5e66048dbaPE.exit89", label %cond.i88 | |
cond.i88: ; preds = %unwind_custom_66.body | |
%137 = getelementptr inbounds { %tydesc*, i8* }* %prev, i64 0, i32 0 | |
%138 = load %tydesc** %137, align 8 | |
%139 = bitcast %tydesc* %138 to %tydesc** | |
%140 = load %tydesc** %139, align 8 | |
%141 = bitcast i8** %134 to i8* | |
%142 = getelementptr inbounds %tydesc* %140, i64 0, i32 3 | |
%143 = load void ({}*, i8*)** %142, align 8 | |
call void %143({}* null, i8* %141) | |
br label %"_ZN25_$UP$std..io..Writer.Send9glue_drop19h16e2cfb5e66048dbaPE.exit89" | |
"_ZN25_$UP$std..io..Writer.Send9glue_drop19h16e2cfb5e66048dbaPE.exit89": ; preds = %unwind_custom_66.body, %cond.i88 | |
%144 = load i8* %src.i.sroa.0.0.idx149, align 8, !range !0 | |
%cond.i84 = icmp eq i8 %144, 1 | |
br i1 %cond.i84, label %enum-iter-variant-1.i85, label %clean_custom_43 | |
enum-iter-variant-1.i85: ; preds = %"_ZN25_$UP$std..io..Writer.Send9glue_drop19h16e2cfb5e66048dbaPE.exit89" | |
%145 = getelementptr inbounds %"enum.std::option::Option<~std::io::Writer:Send>[#1]"* %7, i64 0, i32 2, i64 1 | |
%146 = bitcast i64* %145 to i8** | |
%147 = load i8** %146, align 8 | |
%148 = icmp eq i8* %147, null | |
br i1 %148, label %clean_custom_43, label %cond.i.i86 | |
cond.i.i86: ; preds = %enum-iter-variant-1.i85 | |
%149 = bitcast [2 x i64]* %117 to %tydesc** | |
%150 = load %tydesc** %149, align 8 | |
%151 = bitcast %tydesc* %150 to %tydesc** | |
%152 = load %tydesc** %151, align 8 | |
%153 = bitcast i64* %145 to i8* | |
%154 = getelementptr inbounds %tydesc* %152, i64 0, i32 3 | |
%155 = load void ({}*, i8*)** %154, align 8 | |
call void %155({}* null, i8* %153) | |
br label %clean_custom_43 | |
normal-return69: ; preds = %normal-return65, %cond.i.i92 | |
call void @llvm.lifetime.end(i64 16, i8* %122) | |
%156 = invoke fastcc noalias %"struct.std::rt::task::Task[#1]"* @_ZN2rt9local_ptr8compiled4take19h8b0bb04cc5c11f7baV4v0.0E() | |
to label %normal-return70 unwind label %unwind_custom_66 | |
normal-return70: ; preds = %normal-return69 | |
%157 = getelementptr inbounds { %tydesc*, i8* }* %prev, i64 0, i32 1 | |
%158 = load i8** %157, align 8 | |
%159 = icmp eq i8* %158, null | |
br i1 %159, label %join71, label %cond.i69 | |
cond.i69: ; preds = %normal-return70 | |
%160 = getelementptr inbounds { %tydesc*, i8* }* %prev, i64 0, i32 0 | |
%161 = load %tydesc** %160, align 8 | |
%162 = bitcast %tydesc* %161 to %tydesc** | |
%163 = load %tydesc** %162, align 8 | |
%164 = bitcast i8** %157 to i8* | |
%165 = getelementptr inbounds %tydesc* %163, i64 0, i32 3 | |
%166 = load void ({}*, i8*)** %165, align 8 | |
call void %166({}* null, i8* %164) | |
br label %join71 | |
join71: ; preds = %cond.i69, %normal-return70 | |
%.pr = load i8* %src.i.sroa.0.0.idx149, align 8 | |
%cond.i65 = icmp eq i8 %.pr, 1 | |
br i1 %cond.i65, label %enum-iter-variant-1.i66, label %"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit68" | |
enum-iter-variant-1.i66: ; preds = %join71 | |
%167 = getelementptr inbounds %"enum.std::option::Option<~std::io::Writer:Send>[#1]"* %7, i64 0, i32 2, i64 1 | |
%168 = bitcast i64* %167 to i8** | |
%169 = load i8** %168, align 8 | |
%170 = icmp eq i8* %169, null | |
br i1 %170, label %"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit68", label %cond.i.i67 | |
cond.i.i67: ; preds = %enum-iter-variant-1.i66 | |
%171 = bitcast [2 x i64]* %117 to %tydesc** | |
%172 = load %tydesc** %171, align 8 | |
%173 = bitcast %tydesc* %172 to %tydesc** | |
%174 = load %tydesc** %173, align 8 | |
%175 = bitcast i64* %167 to i8* | |
%176 = getelementptr inbounds %tydesc* %174, i64 0, i32 3 | |
%177 = load void ({}*, i8*)** %176, align 8 | |
call void %177({}* null, i8* %175) | |
br label %"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit68" | |
"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit68": ; preds = %normal-return59, %join71, %enum-iter-variant-1.i66, %cond.i.i67 | |
%task.0.load170184 = phi %"struct.std::rt::task::Task[#1]"* [ %156, %join71 ], [ %156, %enum-iter-variant-1.i66 ], [ %156, %cond.i.i67 ], [ %115, %normal-return59 ] | |
%178 = load i8** %112, align 8 | |
%179 = icmp eq i8* %178, null | |
br i1 %179, label %join86, label %cond.i63 | |
cond.i63: ; preds = %"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit68" | |
%180 = load %tydesc** %109, align 8 | |
%181 = bitcast %tydesc* %180 to %tydesc** | |
%182 = load %tydesc** %181, align 8 | |
%183 = bitcast i8** %112 to i8* | |
%184 = getelementptr inbounds %tydesc* %182, i64 0, i32 3 | |
%185 = load void ({}*, i8*)** %184, align 8 | |
call void %185({}* null, i8* %183) | |
br label %join86 | |
unwind_ast_4695_: ; preds = %normal-return84 | |
%186 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"struct.std::rt::unwind::libunwind::_Unwind_Exception[#1]"*, %"enum.std::rt::unwind::libunwind::_Unwind_Context[#1]"*)* @rust_eh_personality | |
cleanup | |
%.fca.0.extract154 = extractvalue { i8*, i32 } %186, 0 | |
%.fca.1.extract156 = extractvalue { i8*, i32 } %186, 1 | |
br label %clean_ast_4695_ | |
normal-return84: ; preds = %normal-return35 | |
%187 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %8, 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]"*)* @"_ZN3fmt15Default$$BP$str3fmt21hc4a66d5ebdc55a07LIaC9v0.10.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]"*)** %187, align 8 | |
%188 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %8, i64 0, i64 0, i32 1 | |
%189 = bitcast %str_slice* %n to %"enum.std::util::Void[#1]"* | |
store %"enum.std::util::Void[#1]"* %189, %"enum.std::util::Void[#1]"** %188, align 8 | |
%190 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %8, 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]"*)* @"_ZN3fmt15Default$$BP$str3fmt21hc4a66d5ebdc55a07LIaC9v0.10.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]"*)** %190, align 8 | |
%191 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %8, i64 0, i64 1, i32 1 | |
%192 = bitcast %str_slice* %msg_s to %"enum.std::util::Void[#1]"* | |
store %"enum.std::util::Void[#1]"* %192, %"enum.std::util::Void[#1]"** %191, align 8 | |
%193 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %8, 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]"*)* @"_ZN3fmt15Default$$BP$str3fmt21hc4a66d5ebdc55a07LIaC9v0.10.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]"*)** %193, align 8 | |
%194 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %8, i64 0, i64 2, i32 1 | |
%195 = bitcast %str_slice* %file to %"enum.std::util::Void[#1]"* | |
store %"enum.std::util::Void[#1]"* %195, %"enum.std::util::Void[#1]"** %194, align 8 | |
%196 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %8, 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$uint3fmt21h9d24c533d4c27d2edaaR9v0.10.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]"*)** %196, align 8 | |
%197 = getelementptr inbounds [4 x %"struct.std::fmt::Argument[#1]"]* %8, i64 0, i64 3, i32 1 | |
%198 = bitcast i64* %line to %"enum.std::util::Void[#1]"* | |
store %"enum.std::util::Void[#1]"* %198, %"enum.std::util::Void[#1]"** %197, align 8 | |
%__adjust82.sroa.0.0.idx = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args81, 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] } }* @_ZN2rt6unwind12begin_unwind15__STATIC_FMTSTR19h3cdf3b09c8333291aa9v0.10.preE to %"enum.std::fmt::rt::Piece[#1]"*), %"enum.std::fmt::rt::Piece[#1]"** %__adjust82.sroa.0.0.idx, align 8 | |
%__adjust82.sroa.2.0.idx105 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args81, i64 0, i32 0, i32 1 | |
store i64 8, i64* %__adjust82.sroa.2.0.idx105, align 8 | |
%__adjust.sroa.0.0.idx.i61 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args81, i64 0, i32 1, i32 0 | |
store %"struct.std::fmt::Argument[#1]"* %.sub5, %"struct.std::fmt::Argument[#1]"** %__adjust.sroa.0.0.idx.i61, align 8 | |
%__adjust.sroa.2.0.idx1.i62 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args81, i64 0, i32 1, i32 1 | |
store i64 4, i64* %__adjust.sroa.2.0.idx1.i62, align 8 | |
invoke void @_ZN2rt4util12dumb_println19hc795bb121ba5c6ecaQ9v0.10.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, %"struct.std::fmt::Arguments[#1]"* %__args81) | |
to label %join86 unwind label %unwind_ast_4695_ | |
join86: ; preds = %cond.i63, %"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit68", %normal-return84 | |
%task.0.load169 = phi %"struct.std::rt::task::Task[#1]"* [ %49, %normal-return84 ], [ %task.0.load170184, %"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit68" ], [ %task.0.load170184, %cond.i63 ] | |
%199 = load i8* %src.i.sroa.0.0.idx4.i, align 8, !range !0 | |
%cond.i45 = icmp eq i8 %199, 1 | |
br i1 %cond.i45, label %enum-iter-variant-1.i46, label %"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit" | |
enum-iter-variant-1.i46: ; preds = %join86 | |
%200 = getelementptr inbounds %"enum.std::option::Option<~std::io::Writer:Send>[#1]"* %5, i64 0, i32 2, i64 1 | |
%201 = bitcast i64* %200 to i8** | |
%202 = load i8** %201, align 8 | |
%203 = icmp eq i8* %202, null | |
br i1 %203, label %"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit", label %cond.i.i47 | |
cond.i.i47: ; preds = %enum-iter-variant-1.i46 | |
%204 = getelementptr inbounds %"enum.std::option::Option<~std::io::Writer:Send>[#1]"* %5, i64 0, i32 2 | |
%205 = bitcast [2 x i64]* %204 to %tydesc** | |
%206 = load %tydesc** %205, align 8 | |
%207 = bitcast %tydesc* %206 to %tydesc** | |
%208 = load %tydesc** %207, align 8 | |
%209 = bitcast i64* %200 to i8* | |
%210 = getelementptr inbounds %tydesc* %208, i64 0, i32 3 | |
%211 = load void ({}*, i8*)** %210, align 8 | |
call void %211({}* null, i8* %209) | |
br label %"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit" | |
"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit": ; preds = %join86, %enum-iter-variant-1.i46, %cond.i.i47 | |
%ExprAssign.sroa.2.1.idx202 = getelementptr inbounds [7 x i8]* %ExprAssign.sroa.2, i64 0, i64 0 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %ExprAssign.sroa.2.1.idx202, i8* %name.sroa.5.1.idx191, i64 7, i32 1, i1 false) | |
%ExprAssign.sroa.4.9.idx203 = getelementptr inbounds [7 x i8]* %ExprAssign.sroa.4, i64 0, i64 0 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %ExprAssign.sroa.4.9.idx203, i8* %name.sroa.10.9.idx195, i64 7, i32 1, i1 false) | |
call void @llvm.memset.p0i8.i64(i8* %name.sroa.5.1.idx191, i8 0, i64 7, i32 1, i1 false) | |
call void @llvm.memset.p0i8.i64(i8* %name.sroa.10.9.idx195, i8 0, i64 7, i32 1, i1 false) | |
%212 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %task.0.load169, i64 0, i32 6, i32 0 | |
%213 = load i8* %212, align 1, !range !0 | |
%cond.i37 = icmp eq i8 %213, 1 | |
%214 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %task.0.load169, i64 0, i32 6, i32 2 | |
%215 = bitcast [3 x i64]* %214 to i8* | |
br i1 %cond.i37, label %enum-iter-variant-1.i39, label %"_ZN49std..option..Option$LT$std..send_str..SendStr$GT$9glue_drop19hf8327488533a734da1E.exit42" | |
enum-iter-variant-1.i39: ; preds = %"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit" | |
%216 = load i8* %215, align 1, !range !0 | |
%cond.i.i38 = icmp eq i8 %216, 1 | |
br i1 %cond.i.i38, label %"_ZN49std..option..Option$LT$std..send_str..SendStr$GT$9glue_drop19hf8327488533a734da1E.exit42", label %enum-iter-variant-0.i.i40 | |
enum-iter-variant-0.i.i40: ; preds = %enum-iter-variant-1.i39 | |
%217 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %task.0.load169, i64 0, i32 6, i32 2, i64 1 | |
%218 = bitcast i64* %217 to { i64, i64, [0 x i8] }** | |
%219 = load { i64, i64, [0 x i8] }** %218, align 8 | |
%220 = icmp eq { i64, i64, [0 x i8] }* %219, null | |
br i1 %220, label %"_ZN49std..option..Option$LT$std..send_str..SendStr$GT$9glue_drop19hf8327488533a734da1E.exit42", label %cond.i.i.i41 | |
cond.i.i.i41: ; preds = %enum-iter-variant-0.i.i40 | |
%221 = bitcast { i64, i64, [0 x i8] }* %219 to i8* | |
call void @free(i8* %221) #0 | |
br label %"_ZN49std..option..Option$LT$std..send_str..SendStr$GT$9glue_drop19hf8327488533a734da1E.exit42" | |
"_ZN49std..option..Option$LT$std..send_str..SendStr$GT$9glue_drop19hf8327488533a734da1E.exit42": ; preds = %"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit", %enum-iter-variant-1.i39, %enum-iter-variant-0.i.i40, %cond.i.i.i41 | |
store i8 %tmp.sroa.0.0.copyload2.i.i.i, i8* %212, align 8 | |
%ExprAssign.sroa.2.0.idx = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %task.0.load169, i64 0, i32 6, i32 1, i64 0 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %ExprAssign.sroa.2.0.idx, i8* %ExprAssign.sroa.2.1.idx202, i64 7, i32 1, i1 false) | |
store i8 %tmp.sroa.511.0.copyload14.i.i.i, i8* %215, align 8 | |
%ExprAssign.sroa.4.0.raw_cast = bitcast %"struct.std::rt::task::Task[#1]"* %task.0.load169 to i8* | |
%ExprAssign.sroa.4.0.raw_idx = getelementptr inbounds i8* %ExprAssign.sroa.4.0.raw_cast, i64 137 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %ExprAssign.sroa.4.0.raw_idx, i8* %ExprAssign.sroa.4.9.idx203, i64 7, i32 1, i1 false) | |
%ExprAssign.sroa.5.0.idx = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %task.0.load169, i64 0, i32 6, i32 2, i64 1 | |
store i64 %tmp.sroa.625.0.copyload28.c.i.i.i, i64* %ExprAssign.sroa.5.0.idx, align 8 | |
%ExprAssign.sroa.6.0.idx = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %task.0.load169, i64 0, i32 6, i32 2, i64 2 | |
store i64 %tmp.sroa.7.0.copyload33.i.i.i, i64* %ExprAssign.sroa.6.0.idx, align 8 | |
%222 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %task.0.load169, i64 0, i32 3, i32 0 | |
%223 = load i8* %222, align 1, !range !0 | |
%224 = icmp eq i8 %223, 0 | |
br i1 %224, label %"_ZN50std..option..Option$LT$$UP$std..rt..task..Task$GT$9glue_drop19h4e2857b662727630aPE.exit29", label %normal-return91 | |
normal-return91: ; preds = %"_ZN49std..option..Option$LT$std..send_str..SendStr$GT$9glue_drop19hf8327488533a734da1E.exit42" | |
%__adjust89.sroa.0.0.idx = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args88, i64 0, i32 0, i32 0 | |
store %"enum.std::fmt::rt::Piece[#1]"* bitcast ({ { i8, { i8*, i64 }, [56 x i8] } }* @_ZN2rt6unwind12begin_unwind15__STATIC_FMTSTR19hdd896b8b7372fd49au9v0.10.preE to %"enum.std::fmt::rt::Piece[#1]"*), %"enum.std::fmt::rt::Piece[#1]"** %__adjust89.sroa.0.0.idx, align 8 | |
%__adjust89.sroa.2.0.idx104 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args88, i64 0, i32 0, i32 1 | |
store i64 1, i64* %__adjust89.sroa.2.0.idx104, align 8 | |
%__adjust.sroa.0.0.idx.i35 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args88, i64 0, i32 1, i32 0 | |
%225 = bitcast %"struct.std::fmt::Argument[#1]"** %__adjust.sroa.0.0.idx.i35 to i8* | |
call void @llvm.memset.p0i8.i64(i8* %225, i8 0, i64 16, i32 8, i1 false) | |
invoke void @_ZN2rt4util12dumb_println19hc795bb121ba5c6ecaQ9v0.10.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, %"struct.std::fmt::Arguments[#1]"* %__args88) | |
to label %normal-return97 unwind label %clean_ast_4782_32.thread | |
normal-return97: ; preds = %normal-return91 | |
%__adjust95.sroa.0.0.idx = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args94, i64 0, i32 0, i32 0 | |
store %"enum.std::fmt::rt::Piece[#1]"* bitcast ({ { i8, { i8*, i64 }, [56 x i8] } }* @_ZN2rt6unwind12begin_unwind15__STATIC_FMTSTR19hdd896b8b7372fd49a49v0.10.preE to %"enum.std::fmt::rt::Piece[#1]"*), %"enum.std::fmt::rt::Piece[#1]"** %__adjust95.sroa.0.0.idx, align 8 | |
%__adjust95.sroa.2.0.idx103 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args94, i64 0, i32 0, i32 1 | |
store i64 1, i64* %__adjust95.sroa.2.0.idx103, align 8 | |
%__adjust.sroa.0.0.idx.i33 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args94, i64 0, i32 1, i32 0 | |
%226 = bitcast %"struct.std::fmt::Argument[#1]"** %__adjust.sroa.0.0.idx.i33 to i8* | |
call void @llvm.memset.p0i8.i64(i8* %226, i8 0, i64 16, i32 8, i1 false) | |
invoke void @_ZN2rt4util12dumb_println19hc795bb121ba5c6ecaQ9v0.10.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, %"struct.std::fmt::Arguments[#1]"* %__args94) | |
to label %normal-return98 unwind label %clean_ast_4782_32.thread | |
normal-return98: ; preds = %normal-return97 | |
call void @llvm.trap() #0 | |
unreachable | |
"_ZN50std..option..Option$LT$$UP$std..rt..task..Task$GT$9glue_drop19h4e2857b662727630aPE.exit29": ; preds = %"_ZN49std..option..Option$LT$std..send_str..SendStr$GT$9glue_drop19hf8327488533a734da1E.exit42" | |
invoke fastcc void @_ZN2rt9local_ptr8compiled3put19h48db95f7430a5b1baI4v0.0E(%"struct.std::rt::task::Task[#1]"* %task.0.load169) | |
to label %normal-return100 unwind label %.noexc27 | |
.noexc27: ; preds = %"_ZN50std..option..Option$LT$$UP$std..rt..task..Task$GT$9glue_drop19h4e2857b662727630aPE.exit29" | |
%227 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"struct.std::rt::unwind::libunwind::_Unwind_Exception[#1]"*, %"enum.std::rt::unwind::libunwind::_Unwind_Context[#1]"*)* @rust_eh_personality | |
cleanup | |
br label %unwind_ast_4808_.body | |
normal-return100: ; preds = %"_ZN50std..option..Option$LT$$UP$std..rt..task..Task$GT$9glue_drop19h4e2857b662727630aPE.exit29" | |
%228 = invoke fastcc %"struct.std::rt::task::Task[#1]"* @_ZN2rt9local_ptr8compiled13unsafe_borrow19h50a768aa9b50244da44v0.0E() | |
to label %normal-return102 unwind label %unwind_ast_4808_ | |
normal-return102: ; preds = %normal-return100 | |
%229 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %228, i64 0, i32 3 | |
%230 = bitcast { %tydesc*, i8* }* %msg1 to i8* | |
%231 = bitcast { %tydesc*, i8* }* %arg103 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %231, i8* %230, i64 16, i32 8, i1 false) | |
call void @llvm.memset.p0i8.i64(i8* %230, i8 0, i64 16, i32 8, i1 false) | |
%232 = bitcast %"struct.std::rt::unwind::Unwinder[#1]"* %229 to { i64, %tydesc*, i8*, i8*, i8 }* | |
invoke void @_ZN2rt6unwind8Unwinder12begin_unwind21h3b1cb9a3eb8d991bZIaD9v0.10.preE({ i64, %tydesc*, i8*, i8*, i8 }* %232, { %tydesc*, i8* }* %arg103) | |
to label %normal-return104 unwind label %unwind_ast_4808_ | |
normal-return104: ; preds = %normal-return102 | |
unreachable | |
} | |
; Function Attrs: nounwind | |
declare noalias i8* @malloc(i64) unnamed_addr #0 | |
declare i32 @rust_eh_personality(i32, i32, i64, %"struct.std::rt::unwind::libunwind::_Unwind_Exception[#1]"*, %"enum.std::rt::unwind::libunwind::_Unwind_Context[#1]"*) unnamed_addr | |
; Function Attrs: nounwind | |
define internal void @"_ZN8_$UP$str9glue_drop19hf486c988072d7d43alE"({}* nocapture readnone, { i64, i64, [0 x i8] }** nocapture readonly) unnamed_addr #0 { | |
entry-block: | |
%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 = %entry-block, %cond | |
ret void | |
cond: ; preds = %entry-block | |
%4 = bitcast { i64, i64, [0 x i8] }* %2 to i8* | |
tail call void @free(i8* %4) #0 | |
br label %next | |
} | |
; Function Attrs: nounwind | |
declare void @free(i8* nocapture) unnamed_addr #0 | |
; Function Attrs: nounwind readnone uwtable | |
define internal %"struct.std::unstable::intrinsics::TypeId[#1]" @"_ZN3any5Any$T11get_type_id21h161d4df8a2bc39a09Was4v0.0E"({ i64, i64, [0 x i8] }** nocapture readnone) unnamed_addr #5 { | |
entry-block: | |
ret %"struct.std::unstable::intrinsics::TypeId[#1]" { i64 5777515549890468306 } | |
} | |
; Function Attrs: nounwind readnone uwtable | |
define internal %"enum.std::util::Void[#1]"* @"_ZN3any5Any$T11as_void_ptr21h91cfce8f8bc934be9Wax4v0.0E"({ i64, i64, [0 x i8] }** readnone) unnamed_addr #5 { | |
entry-block: | |
%1 = bitcast { i64, i64, [0 x 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_ptr21h05b1b923880fb5d09Way4v0.0E"({ i64, i64, [0 x i8] }** readnone) unnamed_addr #5 { | |
entry-block: | |
%1 = bitcast { i64, i64, [0 x i8] }** %0 to %"enum.std::util::Void[#1]"* | |
ret %"enum.std::util::Void[#1]"* %1 | |
} | |
; Function Attrs: nounwind readnone | |
define internal void @"_ZN9_$LP$$RP$9glue_take19h0d906dfad616c965aFE"({}* nocapture, {}* nocapture) unnamed_addr #2 { | |
entry-block: | |
ret void | |
} | |
; Function Attrs: nounwind | |
define internal void @"_ZN12_$UP$$UP$str9glue_drop19h4be2f769bb7f364caGE"({}* nocapture readnone, { i64, i64, [0 x i8] }*** nocapture readonly) unnamed_addr #0 { | |
entry-block: | |
%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 = %entry-block, %"_ZN8_$UP$str9glue_drop19hf486c988072d7d43alE.exit" | |
ret void | |
cond: ; preds = %entry-block | |
%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_drop19hf486c988072d7d43alE.exit", label %cond.i | |
cond.i: ; preds = %cond | |
%6 = bitcast { i64, i64, [0 x i8] }* %4 to i8* | |
tail call void @free(i8* %6) #0 | |
br label %"_ZN8_$UP$str9glue_drop19hf486c988072d7d43alE.exit" | |
"_ZN8_$UP$str9glue_drop19hf486c988072d7d43alE.exit": ; preds = %cond, %cond.i | |
%7 = bitcast { i64, i64, [0 x i8] }** %2 to i8* | |
tail call void @free(i8* %7) #0 | |
br label %next | |
} | |
define internal void @"_ZN12_$UP$$UP$str10glue_visit19h4be2f769bb7f364caHE"({}* nocapture readnone, { i64, i64, [0 x i8] }*** nocapture readonly) unnamed_addr { | |
entry-block: | |
%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$str6tydesc19hf486c988072d7d43aiE" to %"struct.std::unstable::intrinsics::TyDesc[#1]"*)) | |
ret void | |
} | |
define internal void @"_ZN8_$UP$str10glue_visit19hf486c988072d7d43aEE"({}* nocapture readnone, { i64, i64, [0 x i8] }** nocapture readonly) unnamed_addr { | |
entry-block: | |
%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 | |
} | |
define internal fastcc void @"_ZN24_$UP$std..rt..task..Task9glue_drop19h1061f94893119fc6auE"(%"struct.std::rt::task::Task[#1]"* %.val) unnamed_addr { | |
entry-block: | |
%0 = icmp eq %"struct.std::rt::task::Task[#1]"* %.val, null | |
br i1 %0, label %next, label %cond | |
next: ; preds = %entry-block, %_ZN19std..rt..task..Task9glue_drop19h8052bf0fe6a870dbayE.exit | |
ret void | |
cond: ; preds = %entry-block | |
%1 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 11 | |
%2 = load i8* %1, align 1 | |
%3 = icmp eq i8 %2, 0 | |
br i1 %3, label %_ZN19std..rt..task..Task9glue_drop19h8052bf0fe6a870dbayE.exit, label %cond.i | |
cond.i: ; preds = %cond | |
%4 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 0 | |
%5 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 2 | |
%6 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 4 | |
%7 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 6 | |
%8 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 7 | |
%9 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 8 | |
%10 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 9 | |
%11 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 10 | |
invoke void @"_ZN2rt4task9Drop$Task4drop21hadc0eb3d0769e07bdYaD9v0.10.preE"(%"struct.std::rt::task::Task[#1]"* %.val) | |
to label %normal-return.i unwind label %unwind_custom_.i | |
normal-return.i: ; preds = %cond.i | |
%12 = getelementptr inbounds %"enum.std::option::Option<~std::rt::Runtime:Send>[#1]"* %11, i64 0, i32 0 | |
%13 = load i8* %12, align 1, !range !0 | |
%cond.i.i = icmp eq i8 %13, 1 | |
br i1 %cond.i.i, label %enum-iter-variant-1.i.i, label %"_ZN52std..option..Option$LT$$UP$std..rt..Runtime.Send$GT$9glue_drop19h1cab3ca5091bd5d8aDE.exit.i" | |
enum-iter-variant-1.i.i: ; preds = %normal-return.i | |
%14 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 10, i32 2, i64 1 | |
%15 = bitcast i64* %14 to i8** | |
%16 = load i8** %15, align 8 | |
%17 = icmp eq i8* %16, null | |
br i1 %17, label %"_ZN52std..option..Option$LT$$UP$std..rt..Runtime.Send$GT$9glue_drop19h1cab3ca5091bd5d8aDE.exit.i", label %cond.i.i.i | |
cond.i.i.i: ; preds = %enum-iter-variant-1.i.i | |
%18 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 10, i32 2 | |
%19 = bitcast [2 x i64]* %18 to %tydesc** | |
%20 = load %tydesc** %19, align 8 | |
%21 = bitcast %tydesc* %20 to %tydesc** | |
%22 = load %tydesc** %21, align 8 | |
%23 = bitcast i64* %14 to i8* | |
%24 = getelementptr inbounds %tydesc* %22, i64 0, i32 3 | |
%25 = load void ({}*, i8*)** %24, align 8 | |
tail call void %25({}* null, i8* %23) | |
br label %"_ZN52std..option..Option$LT$$UP$std..rt..Runtime.Send$GT$9glue_drop19h1cab3ca5091bd5d8aDE.exit.i" | |
"_ZN52std..option..Option$LT$$UP$std..rt..Runtime.Send$GT$9glue_drop19h1cab3ca5091bd5d8aDE.exit.i": ; preds = %cond.i.i.i, %enum-iter-variant-1.i.i, %normal-return.i | |
%26 = getelementptr inbounds %"enum.std::option::Option<~std::io::Writer:Send>[#1]"* %10, i64 0, i32 0 | |
%27 = load i8* %26, align 1, !range !0 | |
%cond.i1.i = icmp eq i8 %27, 1 | |
br i1 %cond.i1.i, label %enum-iter-variant-1.i2.i, label %"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit.i" | |
enum-iter-variant-1.i2.i: ; preds = %"_ZN52std..option..Option$LT$$UP$std..rt..Runtime.Send$GT$9glue_drop19h1cab3ca5091bd5d8aDE.exit.i" | |
%28 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 9, i32 2, i64 1 | |
%29 = bitcast i64* %28 to i8** | |
%30 = load i8** %29, align 8 | |
%31 = icmp eq i8* %30, null | |
br i1 %31, label %"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit.i", label %cond.i.i3.i | |
cond.i.i3.i: ; preds = %enum-iter-variant-1.i2.i | |
%32 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 9, i32 2 | |
%33 = bitcast [2 x i64]* %32 to %tydesc** | |
%34 = load %tydesc** %33, align 8 | |
%35 = bitcast %tydesc* %34 to %tydesc** | |
%36 = load %tydesc** %35, align 8 | |
%37 = bitcast i64* %28 to i8* | |
%38 = getelementptr inbounds %tydesc* %36, i64 0, i32 3 | |
%39 = load void ({}*, i8*)** %38, align 8 | |
tail call void %39({}* null, i8* %37) | |
br label %"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit.i" | |
"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit.i": ; preds = %cond.i.i3.i, %enum-iter-variant-1.i2.i, %"_ZN52std..option..Option$LT$$UP$std..rt..Runtime.Send$GT$9glue_drop19h1cab3ca5091bd5d8aDE.exit.i" | |
%40 = getelementptr inbounds %"enum.std::option::Option<~std::io::Writer:Send>[#1]"* %9, i64 0, i32 0 | |
%41 = load i8* %40, align 1, !range !0 | |
%cond.i4.i = icmp eq i8 %41, 1 | |
br i1 %cond.i4.i, label %enum-iter-variant-1.i5.i, label %"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit7.i" | |
enum-iter-variant-1.i5.i: ; preds = %"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit.i" | |
%42 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 8, i32 2, i64 1 | |
%43 = bitcast i64* %42 to i8** | |
%44 = load i8** %43, align 8 | |
%45 = icmp eq i8* %44, null | |
br i1 %45, label %"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit7.i", label %cond.i.i6.i | |
cond.i.i6.i: ; preds = %enum-iter-variant-1.i5.i | |
%46 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 8, i32 2 | |
%47 = bitcast [2 x i64]* %46 to %tydesc** | |
%48 = load %tydesc** %47, align 8 | |
%49 = bitcast %tydesc* %48 to %tydesc** | |
%50 = load %tydesc** %49, align 8 | |
%51 = bitcast i64* %42 to i8* | |
%52 = getelementptr inbounds %tydesc* %50, i64 0, i32 3 | |
%53 = load void ({}*, i8*)** %52, align 8 | |
tail call void %53({}* null, i8* %51) | |
br label %"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit7.i" | |
"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit7.i": ; preds = %cond.i.i6.i, %enum-iter-variant-1.i5.i, %"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit.i" | |
%54 = getelementptr inbounds %"enum.std::option::Option<~std::logging::Logger:Send>[#1]"* %8, i64 0, i32 0 | |
%55 = load i8* %54, align 1, !range !0 | |
%cond.i8.i = icmp eq i8 %55, 1 | |
br i1 %cond.i8.i, label %enum-iter-variant-1.i9.i, label %"_ZN56std..option..Option$LT$$UP$std..logging..Logger.Send$GT$9glue_drop19hee0d26f16b722fa5aTE.exit.i" | |
enum-iter-variant-1.i9.i: ; preds = %"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit7.i" | |
%56 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 7, i32 2, i64 1 | |
%57 = bitcast i64* %56 to i8** | |
%58 = load i8** %57, align 8 | |
%59 = icmp eq i8* %58, null | |
br i1 %59, label %"_ZN56std..option..Option$LT$$UP$std..logging..Logger.Send$GT$9glue_drop19hee0d26f16b722fa5aTE.exit.i", label %cond.i.i10.i | |
cond.i.i10.i: ; preds = %enum-iter-variant-1.i9.i | |
%60 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 7, i32 2 | |
%61 = bitcast [2 x i64]* %60 to %tydesc** | |
%62 = load %tydesc** %61, align 8 | |
%63 = bitcast %tydesc* %62 to %tydesc** | |
%64 = load %tydesc** %63, align 8 | |
%65 = bitcast i64* %56 to i8* | |
%66 = getelementptr inbounds %tydesc* %64, i64 0, i32 3 | |
%67 = load void ({}*, i8*)** %66, align 8 | |
tail call void %67({}* null, i8* %65) | |
br label %"_ZN56std..option..Option$LT$$UP$std..logging..Logger.Send$GT$9glue_drop19hee0d26f16b722fa5aTE.exit.i" | |
"_ZN56std..option..Option$LT$$UP$std..logging..Logger.Send$GT$9glue_drop19hee0d26f16b722fa5aTE.exit.i": ; preds = %cond.i.i10.i, %enum-iter-variant-1.i9.i, %"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit7.i" | |
%68 = getelementptr inbounds %"enum.std::option::Option<std::send_str::SendStr>[#1]"* %7, i64 0, i32 0 | |
%69 = load i8* %68, align 1, !range !0 | |
%cond.i11.i = icmp eq i8 %69, 1 | |
br i1 %cond.i11.i, label %enum-iter-variant-1.i13.i, label %"_ZN49std..option..Option$LT$std..send_str..SendStr$GT$9glue_drop19hf8327488533a734da1E.exit.i" | |
enum-iter-variant-1.i13.i: ; preds = %"_ZN56std..option..Option$LT$$UP$std..logging..Logger.Send$GT$9glue_drop19hee0d26f16b722fa5aTE.exit.i" | |
%70 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 6, i32 2 | |
%71 = bitcast [3 x i64]* %70 to i8* | |
%72 = load i8* %71, align 1, !range !0 | |
%cond.i.i12.i = icmp eq i8 %72, 1 | |
br i1 %cond.i.i12.i, label %"_ZN49std..option..Option$LT$std..send_str..SendStr$GT$9glue_drop19hf8327488533a734da1E.exit.i", label %enum-iter-variant-0.i.i.i | |
enum-iter-variant-0.i.i.i: ; preds = %enum-iter-variant-1.i13.i | |
%73 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 6, i32 2, i64 1 | |
%74 = bitcast i64* %73 to { i64, i64, [0 x i8] }** | |
%75 = load { i64, i64, [0 x i8] }** %74, align 8 | |
%76 = icmp eq { i64, i64, [0 x i8] }* %75, null | |
br i1 %76, label %"_ZN49std..option..Option$LT$std..send_str..SendStr$GT$9glue_drop19hf8327488533a734da1E.exit.i", label %cond.i.i.i.i | |
cond.i.i.i.i: ; preds = %enum-iter-variant-0.i.i.i | |
%77 = bitcast { i64, i64, [0 x i8] }* %75 to i8* | |
tail call void @free(i8* %77) #0 | |
br label %"_ZN49std..option..Option$LT$std..send_str..SendStr$GT$9glue_drop19hf8327488533a734da1E.exit.i" | |
"_ZN49std..option..Option$LT$std..send_str..SendStr$GT$9glue_drop19hf8327488533a734da1E.exit.i": ; preds = %cond.i.i.i.i, %enum-iter-variant-0.i.i.i, %enum-iter-variant-1.i13.i, %"_ZN56std..option..Option$LT$$UP$std..logging..Logger.Send$GT$9glue_drop19hee0d26f16b722fa5aTE.exit.i" | |
%78 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 4, i32 1 | |
%79 = load i8* %78, align 1 | |
%80 = icmp eq i8 %79, 0 | |
br i1 %80, label %_ZN20std..rt..task..Death9glue_drop19h4c4fc97058572e77a9E.exit.i, label %cond.i14.i | |
cond.i14.i: ; preds = %"_ZN49std..option..Option$LT$std..send_str..SendStr$GT$9glue_drop19hf8327488533a734da1E.exit.i" | |
invoke void @"_ZN2rt4task10Drop$Death4drop21h41e8adbb8b92428bE1ae9v0.10.preE"(%"struct.std::rt::task::Death[#1]"* %6) | |
to label %normal-return.i.i unwind label %unwind_custom_.i.i | |
normal-return.i.i: ; preds = %cond.i14.i | |
%81 = getelementptr inbounds %"struct.std::rt::task::Death[#1]"* %6, i64 0, i32 0, i32 0 | |
%82 = load i8* %81, align 1, !range !0 | |
%cond.i.i15.i = icmp eq i8 %82, 1 | |
br i1 %cond.i.i15.i, label %enum-iter-variant-1.i.i.i, label %_ZN20std..rt..task..Death9glue_drop19h4c4fc97058572e77a9E.exit.i | |
enum-iter-variant-1.i.i.i: ; preds = %normal-return.i.i | |
%.idx.i.i.i = getelementptr %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 4, i32 0, i32 2, i64 1 | |
%83 = bitcast i64* %.idx.i.i.i to { i64, %tydesc*, i8*, i8*, i8 }** | |
%.idx.val.i.i.i = load { i64, %tydesc*, i8*, i8*, i8 }** %83, align 8 | |
%84 = icmp eq { i64, %tydesc*, i8*, i8*, i8 }* %.idx.val.i.i.i, null | |
br i1 %84, label %_ZN20std..rt..task..Death9glue_drop19h4c4fc97058572e77a9E.exit.i, label %cond.i.i.i16.i | |
cond.i.i.i16.i: ; preds = %enum-iter-variant-1.i.i.i | |
%85 = getelementptr inbounds { i64, %tydesc*, i8*, i8*, i8 }* %.idx.val.i.i.i, i64 0, i32 1 | |
%86 = load %tydesc** %85, align 8 | |
%87 = getelementptr inbounds { i64, %tydesc*, i8*, i8*, i8 }* %.idx.val.i.i.i, i64 0, i32 4 | |
%88 = getelementptr inbounds %tydesc* %86, i64 0, i32 3 | |
%89 = load void ({}*, i8*)** %88, align 8 | |
tail call void %89({}* null, i8* %87) | |
%90 = bitcast { i64, %tydesc*, i8*, i8*, i8 }* %.idx.val.i.i.i to i8* | |
tail call void @free(i8* %90) #0 | |
br label %_ZN20std..rt..task..Death9glue_drop19h4c4fc97058572e77a9E.exit.i | |
unwind_custom_.i.i: ; preds = %cond.i14.i | |
%91 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"struct.std::rt::unwind::libunwind::_Unwind_Exception[#1]"*, %"enum.std::rt::unwind::libunwind::_Unwind_Context[#1]"*)* @rust_eh_personality | |
cleanup | |
%92 = getelementptr inbounds %"struct.std::rt::task::Death[#1]"* %6, i64 0, i32 0, i32 0 | |
%93 = load i8* %92, align 1, !range !0 | |
%cond.i1.i.i = icmp eq i8 %93, 1 | |
br i1 %cond.i1.i.i, label %enum-iter-variant-1.i4.i.i, label %"_ZN104std..option..Option$LT$proc.Send$LP$std..result..Result$LT$$LP$$RP$$C$$UP$std..any..Any.Send$GT$$RP$$GT$9glue_drop19h37c883194f90ef3baeE.exit6.i.i" | |
enum-iter-variant-1.i4.i.i: ; preds = %unwind_custom_.i.i | |
%.idx.i2.i.i = getelementptr %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 4, i32 0, i32 2, i64 1 | |
%94 = bitcast i64* %.idx.i2.i.i to { i64, %tydesc*, i8*, i8*, i8 }** | |
%.idx.val.i3.i.i = load { i64, %tydesc*, i8*, i8*, i8 }** %94, align 8 | |
%95 = icmp eq { i64, %tydesc*, i8*, i8*, i8 }* %.idx.val.i3.i.i, null | |
br i1 %95, label %"_ZN104std..option..Option$LT$proc.Send$LP$std..result..Result$LT$$LP$$RP$$C$$UP$std..any..Any.Send$GT$$RP$$GT$9glue_drop19h37c883194f90ef3baeE.exit6.i.i", label %cond.i.i5.i.i | |
cond.i.i5.i.i: ; preds = %enum-iter-variant-1.i4.i.i | |
%96 = getelementptr inbounds { i64, %tydesc*, i8*, i8*, i8 }* %.idx.val.i3.i.i, i64 0, i32 1 | |
%97 = load %tydesc** %96, align 8 | |
%98 = getelementptr inbounds { i64, %tydesc*, i8*, i8*, i8 }* %.idx.val.i3.i.i, i64 0, i32 4 | |
%99 = getelementptr inbounds %tydesc* %97, i64 0, i32 3 | |
%100 = load void ({}*, i8*)** %99, align 8 | |
tail call void %100({}* null, i8* %98) | |
%101 = bitcast { i64, %tydesc*, i8*, i8*, i8 }* %.idx.val.i3.i.i to i8* | |
tail call void @free(i8* %101) #0 | |
br label %"_ZN104std..option..Option$LT$proc.Send$LP$std..result..Result$LT$$LP$$RP$$C$$UP$std..any..Any.Send$GT$$RP$$GT$9glue_drop19h37c883194f90ef3baeE.exit6.i.i" | |
"_ZN104std..option..Option$LT$proc.Send$LP$std..result..Result$LT$$LP$$RP$$C$$UP$std..any..Any.Send$GT$$RP$$GT$9glue_drop19h37c883194f90ef3baeE.exit6.i.i": ; preds = %cond.i.i5.i.i, %enum-iter-variant-1.i4.i.i, %unwind_custom_.i.i | |
resume { i8*, i32 } %91 | |
_ZN20std..rt..task..Death9glue_drop19h4c4fc97058572e77a9E.exit.i: ; preds = %cond.i.i.i16.i, %enum-iter-variant-1.i.i.i, %normal-return.i.i, %"_ZN49std..option..Option$LT$std..send_str..SendStr$GT$9glue_drop19hf8327488533a734da1E.exit.i" | |
%102 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 3, i32 1, i32 0 | |
%103 = load i8* %102, align 1, !range !0 | |
%cond.i.i17.i = icmp eq i8 %103, 1 | |
br i1 %cond.i.i17.i, label %enum-iter-variant-1.i.i18.i, label %_ZN25std..rt..unwind..Unwinder9glue_drop19h5e90654557b73f1eaqE.exit.i | |
enum-iter-variant-1.i.i18.i: ; preds = %_ZN20std..rt..task..Death9glue_drop19h4c4fc97058572e77a9E.exit.i | |
%104 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 3, i32 1, i32 2, i64 1 | |
%105 = bitcast i64* %104 to i8** | |
%106 = load i8** %105, align 8 | |
%107 = icmp eq i8* %106, null | |
br i1 %107, label %_ZN25std..rt..unwind..Unwinder9glue_drop19h5e90654557b73f1eaqE.exit.i, label %cond.i.i.i19.i | |
cond.i.i.i19.i: ; preds = %enum-iter-variant-1.i.i18.i | |
%108 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 3, i32 1, i32 2 | |
%109 = bitcast [2 x i64]* %108 to %tydesc** | |
%110 = load %tydesc** %109, align 8 | |
%111 = bitcast %tydesc* %110 to %tydesc** | |
%112 = load %tydesc** %111, align 8 | |
%113 = bitcast i64* %104 to i8* | |
%114 = getelementptr inbounds %tydesc* %112, i64 0, i32 3 | |
%115 = load void ({}*, i8*)** %114, align 8 | |
tail call void %115({}* null, i8* %113) | |
br label %_ZN25std..rt..unwind..Unwinder9glue_drop19h5e90654557b73f1eaqE.exit.i | |
_ZN25std..rt..unwind..Unwinder9glue_drop19h5e90654557b73f1eaqE.exit.i: ; preds = %cond.i.i.i19.i, %enum-iter-variant-1.i.i18.i, %_ZN20std..rt..task..Death9glue_drop19h4c4fc97058572e77a9E.exit.i | |
%.idx.i.i = getelementptr %"struct.std::rt::task::LocalStorage[#1]"* %5, i64 0, i32 0, i32 0 | |
%.idx.val.i.i = load { i64, i64, [0 x %"enum.std::option::Option<(*u8,~std::local_data::LocalData:Send,std::local_data::LoanState)>[#1]"] }** %.idx.i.i, align 8 | |
%116 = icmp eq { i64, i64, [0 x %"enum.std::option::Option<(*u8,~std::local_data::LocalData:Send,std::local_data::LoanState)>[#1]"] }* %.idx.val.i.i, null | |
br i1 %116, label %_ZN27std..rt..task..LocalStorage9glue_drop19h84a169208c1606e0aCE.exit.i, label %cond.i.i.i20.i | |
cond.i.i.i20.i: ; preds = %_ZN25std..rt..unwind..Unwinder9glue_drop19h5e90654557b73f1eaqE.exit.i | |
%117 = getelementptr inbounds { i64, i64, [0 x %"enum.std::option::Option<(*u8,~std::local_data::LocalData:Send,std::local_data::LoanState)>[#1]"] }* %.idx.val.i.i, i64 0, i32 0 | |
%118 = load i64* %117, align 8 | |
%119 = getelementptr inbounds { i64, i64, [0 x %"enum.std::option::Option<(*u8,~std::local_data::LocalData:Send,std::local_data::LoanState)>[#1]"] }* %.idx.val.i.i, i64 0, i32 2, i64 0 | |
%120 = getelementptr inbounds %"enum.std::option::Option<(*u8,~std::local_data::LocalData:Send,std::local_data::LoanState)>[#1]"* %119, i64 0, i32 0 | |
%121 = getelementptr inbounds i8* %120, i64 %118 | |
%122 = bitcast i8* %121 to %"enum.std::option::Option<(*u8,~std::local_data::LocalData:Send,std::local_data::LoanState)>[#1]"* | |
%123 = icmp ult %"enum.std::option::Option<(*u8,~std::local_data::LocalData:Send,std::local_data::LoanState)>[#1]"* %119, %122 | |
br i1 %123, label %iter_vec_loop_body.i.i.i.i.i, label %"_ZN121_$UP$$x5bstd..option..Option$LT$$LP$$RP$u8$C$$UP$std..local_data..LocalData.Send$C$std..local_data..LoanState$RP$$GT$$x5d9glue_drop19h5ee6f272902c8829aKE.exit.i.i.i" | |
iter_vec_loop_body.i.i.i.i.i: ; preds = %cond.i.i.i20.i, %"_ZN108std..option..Option$LT$$LP$$RP$u8$C$$UP$std..local_data..LocalData.Send$C$std..local_data..LoanState$RP$$GT$9glue_drop19hae992f395a5f7ef5aSE.exit.i.i.i.i.i" | |
%124 = phi %"enum.std::option::Option<(*u8,~std::local_data::LocalData:Send,std::local_data::LoanState)>[#1]"* [ %139, %"_ZN108std..option..Option$LT$$LP$$RP$u8$C$$UP$std..local_data..LocalData.Send$C$std..local_data..LoanState$RP$$GT$9glue_drop19hae992f395a5f7ef5aSE.exit.i.i.i.i.i" ], [ %119, %cond.i.i.i20.i ] | |
%125 = getelementptr inbounds %"enum.std::option::Option<(*u8,~std::local_data::LocalData:Send,std::local_data::LoanState)>[#1]"* %124, i64 0, i32 0 | |
%126 = load i8* %125, align 1, !range !0 | |
%cond.i.i.i.i.i.i = icmp eq i8 %126, 1 | |
br i1 %cond.i.i.i.i.i.i, label %enum-iter-variant-1.i.i.i.i.i.i, label %"_ZN108std..option..Option$LT$$LP$$RP$u8$C$$UP$std..local_data..LocalData.Send$C$std..local_data..LoanState$RP$$GT$9glue_drop19hae992f395a5f7ef5aSE.exit.i.i.i.i.i" | |
enum-iter-variant-1.i.i.i.i.i.i: ; preds = %iter_vec_loop_body.i.i.i.i.i | |
%127 = getelementptr inbounds %"enum.std::option::Option<(*u8,~std::local_data::LocalData:Send,std::local_data::LoanState)>[#1]"* %124, i64 0, i32 2, i64 2 | |
%128 = bitcast i64* %127 to i8** | |
%129 = load i8** %128, align 8 | |
%130 = icmp eq i8* %129, null | |
br i1 %130, label %"_ZN108std..option..Option$LT$$LP$$RP$u8$C$$UP$std..local_data..LocalData.Send$C$std..local_data..LoanState$RP$$GT$9glue_drop19hae992f395a5f7ef5aSE.exit.i.i.i.i.i", label %cond.i.i.i.i.i.i.i.i | |
cond.i.i.i.i.i.i.i.i: ; preds = %enum-iter-variant-1.i.i.i.i.i.i | |
%131 = getelementptr inbounds %"enum.std::option::Option<(*u8,~std::local_data::LocalData:Send,std::local_data::LoanState)>[#1]"* %124, i64 0, i32 2, i64 1 | |
%132 = bitcast i64* %131 to %tydesc** | |
%133 = load %tydesc** %132, align 8 | |
%134 = bitcast %tydesc* %133 to %tydesc** | |
%135 = load %tydesc** %134, align 8 | |
%136 = bitcast i64* %127 to i8* | |
%137 = getelementptr inbounds %tydesc* %135, i64 0, i32 3 | |
%138 = load void ({}*, i8*)** %137, align 8 | |
tail call void %138({}* null, i8* %136) | |
br label %"_ZN108std..option..Option$LT$$LP$$RP$u8$C$$UP$std..local_data..LocalData.Send$C$std..local_data..LoanState$RP$$GT$9glue_drop19hae992f395a5f7ef5aSE.exit.i.i.i.i.i" | |
"_ZN108std..option..Option$LT$$LP$$RP$u8$C$$UP$std..local_data..LocalData.Send$C$std..local_data..LoanState$RP$$GT$9glue_drop19hae992f395a5f7ef5aSE.exit.i.i.i.i.i": ; preds = %cond.i.i.i.i.i.i.i.i, %enum-iter-variant-1.i.i.i.i.i.i, %iter_vec_loop_body.i.i.i.i.i | |
%139 = getelementptr inbounds %"enum.std::option::Option<(*u8,~std::local_data::LocalData:Send,std::local_data::LoanState)>[#1]"* %124, i64 1 | |
%140 = icmp ult %"enum.std::option::Option<(*u8,~std::local_data::LocalData:Send,std::local_data::LoanState)>[#1]"* %139, %122 | |
br i1 %140, label %iter_vec_loop_body.i.i.i.i.i, label %"_ZN121_$UP$$x5bstd..option..Option$LT$$LP$$RP$u8$C$$UP$std..local_data..LocalData.Send$C$std..local_data..LoanState$RP$$GT$$x5d9glue_drop19h5ee6f272902c8829aKE.exit.i.i.i" | |
"_ZN121_$UP$$x5bstd..option..Option$LT$$LP$$RP$u8$C$$UP$std..local_data..LocalData.Send$C$std..local_data..LoanState$RP$$GT$$x5d9glue_drop19h5ee6f272902c8829aKE.exit.i.i.i": ; preds = %"_ZN108std..option..Option$LT$$LP$$RP$u8$C$$UP$std..local_data..LocalData.Send$C$std..local_data..LoanState$RP$$GT$9glue_drop19hae992f395a5f7ef5aSE.exit.i.i.i.i.i", %cond.i.i.i20.i | |
%141 = bitcast { i64, i64, [0 x %"enum.std::option::Option<(*u8,~std::local_data::LocalData:Send,std::local_data::LoanState)>[#1]"] }* %.idx.val.i.i to i8* | |
tail call void @free(i8* %141) #0 | |
br label %_ZN27std..rt..task..LocalStorage9glue_drop19h84a169208c1606e0aCE.exit.i | |
_ZN27std..rt..task..LocalStorage9glue_drop19h84a169208c1606e0aCE.exit.i: ; preds = %"_ZN121_$UP$$x5bstd..option..Option$LT$$LP$$RP$u8$C$$UP$std..local_data..LocalData.Send$C$std..local_data..LoanState$RP$$GT$$x5d9glue_drop19h5ee6f272902c8829aKE.exit.i.i.i", %_ZN25std..rt..unwind..Unwinder9glue_drop19h5e90654557b73f1eaqE.exit.i | |
tail call fastcc void @_ZN30std..rt..local_heap..LocalHeap9glue_drop19h3333a0e411bc2a6ea4E(%"struct.std::rt::local_heap::LocalHeap[#1]"* %4) | |
br label %_ZN19std..rt..task..Task9glue_drop19h8052bf0fe6a870dbayE.exit | |
unwind_custom_.i: ; preds = %cond.i | |
%142 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"struct.std::rt::unwind::libunwind::_Unwind_Exception[#1]"*, %"enum.std::rt::unwind::libunwind::_Unwind_Context[#1]"*)* @rust_eh_personality | |
cleanup | |
%143 = getelementptr inbounds %"enum.std::option::Option<~std::rt::Runtime:Send>[#1]"* %11, i64 0, i32 0 | |
%144 = load i8* %143, align 1, !range !0 | |
%cond.i21.i = icmp eq i8 %144, 1 | |
br i1 %cond.i21.i, label %enum-iter-variant-1.i22.i, label %"_ZN52std..option..Option$LT$$UP$std..rt..Runtime.Send$GT$9glue_drop19h1cab3ca5091bd5d8aDE.exit24.i" | |
enum-iter-variant-1.i22.i: ; preds = %unwind_custom_.i | |
%145 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 10, i32 2, i64 1 | |
%146 = bitcast i64* %145 to i8** | |
%147 = load i8** %146, align 8 | |
%148 = icmp eq i8* %147, null | |
br i1 %148, label %"_ZN52std..option..Option$LT$$UP$std..rt..Runtime.Send$GT$9glue_drop19h1cab3ca5091bd5d8aDE.exit24.i", label %cond.i.i23.i | |
cond.i.i23.i: ; preds = %enum-iter-variant-1.i22.i | |
%149 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 10, i32 2 | |
%150 = bitcast [2 x i64]* %149 to %tydesc** | |
%151 = load %tydesc** %150, align 8 | |
%152 = bitcast %tydesc* %151 to %tydesc** | |
%153 = load %tydesc** %152, align 8 | |
%154 = bitcast i64* %145 to i8* | |
%155 = getelementptr inbounds %tydesc* %153, i64 0, i32 3 | |
%156 = load void ({}*, i8*)** %155, align 8 | |
tail call void %156({}* null, i8* %154) | |
br label %"_ZN52std..option..Option$LT$$UP$std..rt..Runtime.Send$GT$9glue_drop19h1cab3ca5091bd5d8aDE.exit24.i" | |
"_ZN52std..option..Option$LT$$UP$std..rt..Runtime.Send$GT$9glue_drop19h1cab3ca5091bd5d8aDE.exit24.i": ; preds = %cond.i.i23.i, %enum-iter-variant-1.i22.i, %unwind_custom_.i | |
%157 = getelementptr inbounds %"enum.std::option::Option<~std::io::Writer:Send>[#1]"* %10, i64 0, i32 0 | |
%158 = load i8* %157, align 1, !range !0 | |
%cond.i25.i = icmp eq i8 %158, 1 | |
br i1 %cond.i25.i, label %enum-iter-variant-1.i26.i, label %"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit28.i" | |
enum-iter-variant-1.i26.i: ; preds = %"_ZN52std..option..Option$LT$$UP$std..rt..Runtime.Send$GT$9glue_drop19h1cab3ca5091bd5d8aDE.exit24.i" | |
%159 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 9, i32 2, i64 1 | |
%160 = bitcast i64* %159 to i8** | |
%161 = load i8** %160, align 8 | |
%162 = icmp eq i8* %161, null | |
br i1 %162, label %"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit28.i", label %cond.i.i27.i | |
cond.i.i27.i: ; preds = %enum-iter-variant-1.i26.i | |
%163 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 9, i32 2 | |
%164 = bitcast [2 x i64]* %163 to %tydesc** | |
%165 = load %tydesc** %164, align 8 | |
%166 = bitcast %tydesc* %165 to %tydesc** | |
%167 = load %tydesc** %166, align 8 | |
%168 = bitcast i64* %159 to i8* | |
%169 = getelementptr inbounds %tydesc* %167, i64 0, i32 3 | |
%170 = load void ({}*, i8*)** %169, align 8 | |
tail call void %170({}* null, i8* %168) | |
br label %"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit28.i" | |
"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit28.i": ; preds = %cond.i.i27.i, %enum-iter-variant-1.i26.i, %"_ZN52std..option..Option$LT$$UP$std..rt..Runtime.Send$GT$9glue_drop19h1cab3ca5091bd5d8aDE.exit24.i" | |
%171 = getelementptr inbounds %"enum.std::option::Option<~std::io::Writer:Send>[#1]"* %9, i64 0, i32 0 | |
%172 = load i8* %171, align 1, !range !0 | |
%cond.i29.i = icmp eq i8 %172, 1 | |
br i1 %cond.i29.i, label %enum-iter-variant-1.i30.i, label %"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit32.i" | |
enum-iter-variant-1.i30.i: ; preds = %"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit28.i" | |
%173 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 8, i32 2, i64 1 | |
%174 = bitcast i64* %173 to i8** | |
%175 = load i8** %174, align 8 | |
%176 = icmp eq i8* %175, null | |
br i1 %176, label %"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit32.i", label %cond.i.i31.i | |
cond.i.i31.i: ; preds = %enum-iter-variant-1.i30.i | |
%177 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 8, i32 2 | |
%178 = bitcast [2 x i64]* %177 to %tydesc** | |
%179 = load %tydesc** %178, align 8 | |
%180 = bitcast %tydesc* %179 to %tydesc** | |
%181 = load %tydesc** %180, align 8 | |
%182 = bitcast i64* %173 to i8* | |
%183 = getelementptr inbounds %tydesc* %181, i64 0, i32 3 | |
%184 = load void ({}*, i8*)** %183, align 8 | |
tail call void %184({}* null, i8* %182) | |
br label %"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit32.i" | |
"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit32.i": ; preds = %cond.i.i31.i, %enum-iter-variant-1.i30.i, %"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit28.i" | |
%185 = getelementptr inbounds %"enum.std::option::Option<~std::logging::Logger:Send>[#1]"* %8, i64 0, i32 0 | |
%186 = load i8* %185, align 1, !range !0 | |
%cond.i33.i = icmp eq i8 %186, 1 | |
br i1 %cond.i33.i, label %enum-iter-variant-1.i34.i, label %"_ZN56std..option..Option$LT$$UP$std..logging..Logger.Send$GT$9glue_drop19hee0d26f16b722fa5aTE.exit36.i" | |
enum-iter-variant-1.i34.i: ; preds = %"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit32.i" | |
%187 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 7, i32 2, i64 1 | |
%188 = bitcast i64* %187 to i8** | |
%189 = load i8** %188, align 8 | |
%190 = icmp eq i8* %189, null | |
br i1 %190, label %"_ZN56std..option..Option$LT$$UP$std..logging..Logger.Send$GT$9glue_drop19hee0d26f16b722fa5aTE.exit36.i", label %cond.i.i35.i | |
cond.i.i35.i: ; preds = %enum-iter-variant-1.i34.i | |
%191 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 7, i32 2 | |
%192 = bitcast [2 x i64]* %191 to %tydesc** | |
%193 = load %tydesc** %192, align 8 | |
%194 = bitcast %tydesc* %193 to %tydesc** | |
%195 = load %tydesc** %194, align 8 | |
%196 = bitcast i64* %187 to i8* | |
%197 = getelementptr inbounds %tydesc* %195, i64 0, i32 3 | |
%198 = load void ({}*, i8*)** %197, align 8 | |
tail call void %198({}* null, i8* %196) | |
br label %"_ZN56std..option..Option$LT$$UP$std..logging..Logger.Send$GT$9glue_drop19hee0d26f16b722fa5aTE.exit36.i" | |
"_ZN56std..option..Option$LT$$UP$std..logging..Logger.Send$GT$9glue_drop19hee0d26f16b722fa5aTE.exit36.i": ; preds = %cond.i.i35.i, %enum-iter-variant-1.i34.i, %"_ZN51std..option..Option$LT$$UP$std..io..Writer.Send$GT$9glue_drop19hab69fd0595fa2757aLE.exit32.i" | |
%199 = getelementptr inbounds %"enum.std::option::Option<std::send_str::SendStr>[#1]"* %7, i64 0, i32 0 | |
%200 = load i8* %199, align 1, !range !0 | |
%cond.i37.i = icmp eq i8 %200, 1 | |
br i1 %cond.i37.i, label %enum-iter-variant-1.i39.i, label %"_ZN49std..option..Option$LT$std..send_str..SendStr$GT$9glue_drop19hf8327488533a734da1E.exit42.i" | |
enum-iter-variant-1.i39.i: ; preds = %"_ZN56std..option..Option$LT$$UP$std..logging..Logger.Send$GT$9glue_drop19hee0d26f16b722fa5aTE.exit36.i" | |
%201 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 6, i32 2 | |
%202 = bitcast [3 x i64]* %201 to i8* | |
%203 = load i8* %202, align 1, !range !0 | |
%cond.i.i38.i = icmp eq i8 %203, 1 | |
br i1 %cond.i.i38.i, label %"_ZN49std..option..Option$LT$std..send_str..SendStr$GT$9glue_drop19hf8327488533a734da1E.exit42.i", label %enum-iter-variant-0.i.i40.i | |
enum-iter-variant-0.i.i40.i: ; preds = %enum-iter-variant-1.i39.i | |
%204 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 6, i32 2, i64 1 | |
%205 = bitcast i64* %204 to { i64, i64, [0 x i8] }** | |
%206 = load { i64, i64, [0 x i8] }** %205, align 8 | |
%207 = icmp eq { i64, i64, [0 x i8] }* %206, null | |
br i1 %207, label %"_ZN49std..option..Option$LT$std..send_str..SendStr$GT$9glue_drop19hf8327488533a734da1E.exit42.i", label %cond.i.i.i41.i | |
cond.i.i.i41.i: ; preds = %enum-iter-variant-0.i.i40.i | |
%208 = bitcast { i64, i64, [0 x i8] }* %206 to i8* | |
tail call void @free(i8* %208) #0 | |
br label %"_ZN49std..option..Option$LT$std..send_str..SendStr$GT$9glue_drop19hf8327488533a734da1E.exit42.i" | |
"_ZN49std..option..Option$LT$std..send_str..SendStr$GT$9glue_drop19hf8327488533a734da1E.exit42.i": ; preds = %cond.i.i.i41.i, %enum-iter-variant-0.i.i40.i, %enum-iter-variant-1.i39.i, %"_ZN56std..option..Option$LT$$UP$std..logging..Logger.Send$GT$9glue_drop19hee0d26f16b722fa5aTE.exit36.i" | |
%209 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 4, i32 1 | |
%210 = load i8* %209, align 1 | |
%211 = icmp eq i8 %210, 0 | |
br i1 %211, label %_ZN20std..rt..task..Death9glue_drop19h4c4fc97058572e77a9E.exit57.i, label %cond.i43.i | |
cond.i43.i: ; preds = %"_ZN49std..option..Option$LT$std..send_str..SendStr$GT$9glue_drop19hf8327488533a734da1E.exit42.i" | |
invoke void @"_ZN2rt4task10Drop$Death4drop21h41e8adbb8b92428bE1ae9v0.10.preE"(%"struct.std::rt::task::Death[#1]"* %6) | |
to label %normal-return.i45.i unwind label %unwind_custom_.i51.i | |
normal-return.i45.i: ; preds = %cond.i43.i | |
%212 = getelementptr inbounds %"struct.std::rt::task::Death[#1]"* %6, i64 0, i32 0, i32 0 | |
%213 = load i8* %212, align 1, !range !0 | |
%cond.i.i44.i = icmp eq i8 %213, 1 | |
br i1 %cond.i.i44.i, label %enum-iter-variant-1.i.i48.i, label %_ZN20std..rt..task..Death9glue_drop19h4c4fc97058572e77a9E.exit57.i | |
enum-iter-variant-1.i.i48.i: ; preds = %normal-return.i45.i | |
%.idx.i.i46.i = getelementptr %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 4, i32 0, i32 2, i64 1 | |
%214 = bitcast i64* %.idx.i.i46.i to { i64, %tydesc*, i8*, i8*, i8 }** | |
%.idx.val.i.i47.i = load { i64, %tydesc*, i8*, i8*, i8 }** %214, align 8 | |
%215 = icmp eq { i64, %tydesc*, i8*, i8*, i8 }* %.idx.val.i.i47.i, null | |
br i1 %215, label %_ZN20std..rt..task..Death9glue_drop19h4c4fc97058572e77a9E.exit57.i, label %cond.i.i.i49.i | |
cond.i.i.i49.i: ; preds = %enum-iter-variant-1.i.i48.i | |
%216 = getelementptr inbounds { i64, %tydesc*, i8*, i8*, i8 }* %.idx.val.i.i47.i, i64 0, i32 1 | |
%217 = load %tydesc** %216, align 8 | |
%218 = getelementptr inbounds { i64, %tydesc*, i8*, i8*, i8 }* %.idx.val.i.i47.i, i64 0, i32 4 | |
%219 = getelementptr inbounds %tydesc* %217, i64 0, i32 3 | |
%220 = load void ({}*, i8*)** %219, align 8 | |
tail call void %220({}* null, i8* %218) | |
%221 = bitcast { i64, %tydesc*, i8*, i8*, i8 }* %.idx.val.i.i47.i to i8* | |
tail call void @free(i8* %221) #0 | |
br label %_ZN20std..rt..task..Death9glue_drop19h4c4fc97058572e77a9E.exit57.i | |
unwind_custom_.i51.i: ; preds = %cond.i43.i | |
%222 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"struct.std::rt::unwind::libunwind::_Unwind_Exception[#1]"*, %"enum.std::rt::unwind::libunwind::_Unwind_Context[#1]"*)* @rust_eh_personality | |
cleanup | |
%223 = getelementptr inbounds %"struct.std::rt::task::Death[#1]"* %6, i64 0, i32 0, i32 0 | |
%224 = load i8* %223, align 1, !range !0 | |
%cond.i1.i50.i = icmp eq i8 %224, 1 | |
br i1 %cond.i1.i50.i, label %enum-iter-variant-1.i4.i54.i, label %"_ZN104std..option..Option$LT$proc.Send$LP$std..result..Result$LT$$LP$$RP$$C$$UP$std..any..Any.Send$GT$$RP$$GT$9glue_drop19h37c883194f90ef3baeE.exit6.i56.i" | |
enum-iter-variant-1.i4.i54.i: ; preds = %unwind_custom_.i51.i | |
%.idx.i2.i52.i = getelementptr %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 4, i32 0, i32 2, i64 1 | |
%225 = bitcast i64* %.idx.i2.i52.i to { i64, %tydesc*, i8*, i8*, i8 }** | |
%.idx.val.i3.i53.i = load { i64, %tydesc*, i8*, i8*, i8 }** %225, align 8 | |
%226 = icmp eq { i64, %tydesc*, i8*, i8*, i8 }* %.idx.val.i3.i53.i, null | |
br i1 %226, label %"_ZN104std..option..Option$LT$proc.Send$LP$std..result..Result$LT$$LP$$RP$$C$$UP$std..any..Any.Send$GT$$RP$$GT$9glue_drop19h37c883194f90ef3baeE.exit6.i56.i", label %cond.i.i5.i55.i | |
cond.i.i5.i55.i: ; preds = %enum-iter-variant-1.i4.i54.i | |
%227 = getelementptr inbounds { i64, %tydesc*, i8*, i8*, i8 }* %.idx.val.i3.i53.i, i64 0, i32 1 | |
%228 = load %tydesc** %227, align 8 | |
%229 = getelementptr inbounds { i64, %tydesc*, i8*, i8*, i8 }* %.idx.val.i3.i53.i, i64 0, i32 4 | |
%230 = getelementptr inbounds %tydesc* %228, i64 0, i32 3 | |
%231 = load void ({}*, i8*)** %230, align 8 | |
tail call void %231({}* null, i8* %229) | |
%232 = bitcast { i64, %tydesc*, i8*, i8*, i8 }* %.idx.val.i3.i53.i to i8* | |
tail call void @free(i8* %232) #0 | |
br label %"_ZN104std..option..Option$LT$proc.Send$LP$std..result..Result$LT$$LP$$RP$$C$$UP$std..any..Any.Send$GT$$RP$$GT$9glue_drop19h37c883194f90ef3baeE.exit6.i56.i" | |
"_ZN104std..option..Option$LT$proc.Send$LP$std..result..Result$LT$$LP$$RP$$C$$UP$std..any..Any.Send$GT$$RP$$GT$9glue_drop19h37c883194f90ef3baeE.exit6.i56.i": ; preds = %cond.i.i5.i55.i, %enum-iter-variant-1.i4.i54.i, %unwind_custom_.i51.i | |
resume { i8*, i32 } %222 | |
_ZN20std..rt..task..Death9glue_drop19h4c4fc97058572e77a9E.exit57.i: ; preds = %cond.i.i.i49.i, %enum-iter-variant-1.i.i48.i, %normal-return.i45.i, %"_ZN49std..option..Option$LT$std..send_str..SendStr$GT$9glue_drop19hf8327488533a734da1E.exit42.i" | |
%233 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 3, i32 1, i32 0 | |
%234 = load i8* %233, align 1, !range !0 | |
%cond.i.i58.i = icmp eq i8 %234, 1 | |
br i1 %cond.i.i58.i, label %enum-iter-variant-1.i.i59.i, label %_ZN25std..rt..unwind..Unwinder9glue_drop19h5e90654557b73f1eaqE.exit61.i | |
enum-iter-variant-1.i.i59.i: ; preds = %_ZN20std..rt..task..Death9glue_drop19h4c4fc97058572e77a9E.exit57.i | |
%235 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 3, i32 1, i32 2, i64 1 | |
%236 = bitcast i64* %235 to i8** | |
%237 = load i8** %236, align 8 | |
%238 = icmp eq i8* %237, null | |
br i1 %238, label %_ZN25std..rt..unwind..Unwinder9glue_drop19h5e90654557b73f1eaqE.exit61.i, label %cond.i.i.i60.i | |
cond.i.i.i60.i: ; preds = %enum-iter-variant-1.i.i59.i | |
%239 = getelementptr inbounds %"struct.std::rt::task::Task[#1]"* %.val, i64 0, i32 3, i32 1, i32 2 | |
%240 = bitcast [2 x i64]* %239 to %tydesc** | |
%241 = load %tydesc** %240, align 8 | |
%242 = bitcast %tydesc* %241 to %tydesc** | |
%243 = load %tydesc** %242, align 8 | |
%244 = bitcast i64* %235 to i8* | |
%245 = getelementptr inbounds %tydesc* %243, i64 0, i32 3 | |
%246 = load void ({}*, i8*)** %245, align 8 | |
tail call void %246({}* null, i8* %244) | |
br label %_ZN25std..rt..unwind..Unwinder9glue_drop19h5e90654557b73f1eaqE.exit61.i | |
_ZN25std..rt..unwind..Unwinder9glue_drop19h5e90654557b73f1eaqE.exit61.i: ; preds = %cond.i.i.i60.i, %enum-iter-variant-1.i.i59.i, %_ZN20std..rt..task..Death9glue_drop19h4c4fc97058572e77a9E.exit57.i | |
%.idx.i62.i = getelementptr %"struct.std::rt::task::LocalStorage[#1]"* %5, i64 0, i32 0, i32 0 | |
%.idx.val.i63.i = load { i64, i64, [0 x %"enum.std::option::Option<(*u8,~std::local_data::LocalData:Send,std::local_data::LoanState)>[#1]"] }** %.idx.i62.i, align 8 | |
%247 = icmp eq { i64, i64, [0 x %"enum.std::option::Option<(*u8,~std::local_data::LocalData:Send,std::local_data::LoanState)>[#1]"] }* %.idx.val.i63.i, null | |
br i1 %247, label %_ZN27std..rt..task..LocalStorage9glue_drop19h84a169208c1606e0aCE.exit71.i, label %cond.i.i.i64.i | |
cond.i.i.i64.i: ; preds = %_ZN25std..rt..unwind..Unwinder9glue_drop19h5e90654557b73f1eaqE.exit61.i | |
%248 = getelementptr inbounds { i64, i64, [0 x %"enum.std::option::Option<(*u8,~std::local_data::LocalData:Send,std::local_data::LoanState)>[#1]"] }* %.idx.val.i63.i, i64 0, i32 0 | |
%249 = load i64* %248, align 8 | |
%250 = getelementptr inbounds { i64, i64, [0 x %"enum.std::option::Option<(*u8,~std::local_data::LocalData:Send,std::local_data::LoanState)>[#1]"] }* %.idx.val.i63.i, i64 0, i32 2, i64 0 | |
%251 = getelementptr inbounds %"enum.std::option::Option<(*u8,~std::local_data::LocalData:Send,std::local_data::LoanState)>[#1]"* %250, i64 0, i32 0 | |
%252 = getelementptr inbounds i8* %251, i64 %249 | |
%253 = bitcast i8* %252 to %"enum.std::option::Option<(*u8,~std::local_data::LocalData:Send,std::local_data::LoanState)>[#1]"* | |
%254 = icmp ult %"enum.std::option::Option<(*u8,~std::local_data::LocalData:Send,std::local_data::LoanState)>[#1]"* %250, %253 | |
br i1 %254, label %iter_vec_loop_body.i.i.i.i66.i, label %"_ZN121_$UP$$x5bstd..option..Option$LT$$LP$$RP$u8$C$$UP$std..local_data..LocalData.Send$C$std..local_data..LoanState$RP$$GT$$x5d9glue_drop19h5ee6f272902c8829aKE.exit.i.i70.i" | |
iter_vec_loop_body.i.i.i.i66.i: ; preds = %cond.i.i.i64.i, %"_ZN108std..option..Option$LT$$LP$$RP$u8$C$$UP$std..local_data..LocalData.Send$C$std..local_data..LoanState$RP$$GT$9glue_drop19hae992f395a5f7ef5aSE.exit.i.i.i.i69.i" | |
%255 = phi %"enum.std::option::Option<(*u8,~std::local_data::LocalData:Send,std::local_data::LoanState)>[#1]"* [ %270, %"_ZN108std..option..Option$LT$$LP$$RP$u8$C$$UP$std..local_data..LocalData.Send$C$std..local_data..LoanState$RP$$GT$9glue_drop19hae992f395a5f7ef5aSE.exit.i.i.i.i69.i" ], [ %250, %cond.i.i.i64.i ] | |
%256 = getelementptr inbounds %"enum.std::option::Option<(*u8,~std::local_data::LocalData:Send,std::local_data::LoanState)>[#1]"* %255, i64 0, i32 0 | |
%257 = load i8* %256, align 1, !range !0 | |
%cond.i.i.i.i.i65.i = icmp eq i8 %257, 1 | |
br i1 %cond.i.i.i.i.i65.i, label %enum-iter-variant-1.i.i.i.i.i67.i, label %"_ZN108std..option..Option$LT$$LP$$RP$u8$C$$UP$std..local_data..LocalData.Send$C$std..local_data..LoanState$RP$$GT$9glue_drop19hae992f395a5f7ef5aSE.exit.i.i.i.i69.i" | |
enum-iter-variant-1.i.i.i.i.i67.i: ; preds = %iter_vec_loop_body.i.i.i.i66.i | |
%258 = getelementptr inbounds %"enum.std::option::Option<(*u8,~std::local_data::LocalData:Send,std::local_data::LoanState)>[#1]"* %255, i64 0, i32 2, i64 2 | |
%259 = bitcast i64* %258 to i8** | |
%260 = load i8** %259, align 8 | |
%261 = icmp eq i8* %260, null | |
br i1 %261, label %"_ZN108std..option..Option$LT$$LP$$RP$u8$C$$UP$std..local_data..LocalData.Send$C$std..local_data..LoanState$RP$$GT$9glue_drop19hae992f395a5f7ef5aSE.exit.i.i.i.i69.i", label %cond.i.i.i.i.i.i.i68.i | |
cond.i.i.i.i.i.i.i68.i: ; preds = %enum-iter-variant-1.i.i.i.i.i67.i | |
%262 = getelementptr inbounds %"enum.std::option::Option<(*u8,~std::local_data::LocalData:Send,std::local_data::LoanState)>[#1]"* %255, i64 0, i32 2, i64 1 | |
%263 = bitcast i64* %262 to %tydesc** | |
%264 = load %tydesc** %263, align 8 | |
%265 = bitcast %tydesc* %264 to %tydesc** | |
%266 = load %tydesc** %265, align 8 | |
%267 = bitcast i64* %258 to i8* | |
%268 = getelementptr inbounds %tydesc* %266, i64 0, i32 3 | |
%269 = load void ({}*, i8*)** %268, align 8 | |
tail call void %269({}* null, i8* %267) | |
br label %"_ZN108std..option..Option$LT$$LP$$RP$u8$C$$UP$std..local_data..LocalData.Send$C$std..local_data..LoanState$RP$$GT$9glue_drop19hae992f395a5f7ef5aSE.exit.i.i.i.i69.i" | |
"_ZN108std..option..Option$LT$$LP$$RP$u8$C$$UP$std..local_data..LocalData.Send$C$std..local_data..LoanState$RP$$GT$9glue_drop19hae992f395a5f7ef5aSE.exit.i.i.i.i69.i": ; preds = %cond.i.i.i.i.i.i.i68.i, %enum-iter-variant-1.i.i.i.i.i67.i, %iter_vec_loop_body.i.i.i.i66.i | |
%270 = getelementptr inbounds %"enum.std::option::Option<(*u8,~std::local_data::LocalData:Send,std::local_data::LoanState)>[#1]"* %255, i64 1 | |
%271 = icmp ult %"enum.std::option::Option<(*u8,~std::local_data::LocalData:Send,std::local_data::LoanState)>[#1]"* %270, %253 | |
br i1 %271, label %iter_vec_loop_body.i.i.i.i66.i, label %"_ZN121_$UP$$x5bstd..option..Option$LT$$LP$$RP$u8$C$$UP$std..local_data..LocalData.Send$C$std..local_data..LoanState$RP$$GT$$x5d9glue_drop19h5ee6f272902c8829aKE.exit.i.i70.i" | |
"_ZN121_$UP$$x5bstd..option..Option$LT$$LP$$RP$u8$C$$UP$std..local_data..LocalData.Send$C$std..local_data..LoanState$RP$$GT$$x5d9glue_drop19h5ee6f272902c8829aKE.exit.i.i70.i": ; preds = %"_ZN108std..option..Option$LT$$LP$$RP$u8$C$$UP$std..local_data..LocalData.Send$C$std..local_data..LoanState$RP$$GT$9glue_drop19hae992f395a5f7ef5aSE.exit.i.i.i.i69.i", %cond.i.i.i64.i | |
%272 = bitcast { i64, i64, [0 x %"enum.std::option::Option<(*u8,~std::local_data::LocalData:Send,std::local_data::LoanState)>[#1]"] }* %.idx.val.i63.i to i8* | |
tail call void @free(i8* %272) #0 | |
br label %_ZN27std..rt..task..LocalStorage9glue_drop19h84a169208c1606e0aCE.exit71.i | |
_ZN27std..rt..task..LocalStorage9glue_drop19h84a169208c1606e0aCE.exit71.i: ; preds = %"_ZN121_$UP$$x5bstd..option..Option$LT$$LP$$RP$u8$C$$UP$std..local_data..LocalData.Send$C$std..local_data..LoanState$RP$$GT$$x5d9glue_drop19h5ee6f272902c8829aKE.exit.i.i70.i", %_ZN25std..rt..unwind..Unwinder9glue_drop19h5e90654557b73f1eaqE.exit61.i | |
tail call fastcc void @_ZN30std..rt..local_heap..LocalHeap9glue_drop19h3333a0e411bc2a6ea4E(%"struct.std::rt::local_heap::LocalHeap[#1]"* %4) | |
resume { i8*, i32 } %142 | |
_ZN19std..rt..task..Task9glue_drop19h8052bf0fe6a870dbayE.exit: ; preds = %cond, %_ZN27std..rt..task..LocalStorage9glue_drop19h84a169208c1606e0aCE.exit.i | |
%273 = bitcast %"struct.std::rt::task::Task[#1]"* %.val to i8* | |
tail call void @free(i8* %273) #0 | |
br label %next | |
} | |
declare void @"_ZN2rt4task9Drop$Task4drop21hadc0eb3d0769e07bdYaD9v0.10.preE"(%"struct.std::rt::task::Task[#1]"*) unnamed_addr | |
declare void @"_ZN2rt4task10Drop$Death4drop21h41e8adbb8b92428bE1ae9v0.10.preE"(%"struct.std::rt::task::Death[#1]"*) unnamed_addr | |
define internal fastcc void @_ZN30std..rt..local_heap..LocalHeap9glue_drop19h3333a0e411bc2a6ea4E(%"struct.std::rt::local_heap::LocalHeap[#1]"*) unnamed_addr { | |
entry-block: | |
%1 = getelementptr inbounds %"struct.std::rt::local_heap::LocalHeap[#1]"* %0, i64 0, i32 3 | |
%2 = load i8* %1, align 1 | |
%3 = icmp eq i8 %2, 0 | |
br i1 %3, label %next, label %cond | |
next: ; preds = %cond.i.i, %normal-return.i, %normal-return, %entry-block | |
ret void | |
cond: ; preds = %entry-block | |
%4 = getelementptr inbounds %"struct.std::rt::local_heap::LocalHeap[#1]"* %0, i64 0, i32 0 | |
invoke void @"_ZN2rt10local_heap14Drop$LocalHeap4drop21hbe0295984675a0f1Aca99v0.10.preE"(%"struct.std::rt::local_heap::LocalHeap[#1]"* %0) | |
to label %normal-return unwind label %unwind_custom_ | |
normal-return: ; preds = %cond | |
%5 = getelementptr inbounds %"struct.std::rt::local_heap::LocalHeap[#1]"* %0, i64 0, i32 0, i32 2 | |
%6 = load i8* %5, align 1 | |
%7 = icmp eq i8 %6, 0 | |
br i1 %7, label %next, label %cond.i | |
cond.i: ; preds = %normal-return | |
invoke void @"_ZN2rt10local_heap17Drop$MemoryRegion4drop21h808c8f7694d6de485Kae9v0.10.preE"(%"struct.std::rt::local_heap::MemoryRegion[#1]"* %4) | |
to label %normal-return.i unwind label %unwind_custom_.i | |
normal-return.i: ; preds = %cond.i | |
%8 = bitcast %"struct.std::rt::local_heap::LocalHeap[#1]"* %0 to {}** | |
%9 = load {}** %8, align 8 | |
%10 = icmp eq {}* %9, null | |
br i1 %10, label %next, label %cond.i.i | |
cond.i.i: ; preds = %normal-return.i | |
%11 = bitcast {}* %9 to i8* | |
tail call void @free(i8* %11) #0 | |
br label %next | |
unwind_custom_.i: ; preds = %cond.i | |
%12 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"struct.std::rt::unwind::libunwind::_Unwind_Exception[#1]"*, %"enum.std::rt::unwind::libunwind::_Unwind_Context[#1]"*)* @rust_eh_personality | |
cleanup | |
%13 = bitcast %"struct.std::rt::local_heap::LocalHeap[#1]"* %0 to {}** | |
%14 = load {}** %13, align 8 | |
%15 = icmp eq {}* %14, null | |
br i1 %15, label %"_ZN13_$UP$$LP$$RP$9glue_drop19h008e5fc303747c8bahE.exit2.i", label %cond.i1.i | |
cond.i1.i: ; preds = %unwind_custom_.i | |
%16 = bitcast {}* %14 to i8* | |
tail call void @free(i8* %16) #0 | |
br label %"_ZN13_$UP$$LP$$RP$9glue_drop19h008e5fc303747c8bahE.exit2.i" | |
"_ZN13_$UP$$LP$$RP$9glue_drop19h008e5fc303747c8bahE.exit2.i": ; preds = %cond.i1.i, %unwind_custom_.i | |
resume { i8*, i32 } %12 | |
unwind_custom_: ; preds = %cond | |
%17 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"struct.std::rt::unwind::libunwind::_Unwind_Exception[#1]"*, %"enum.std::rt::unwind::libunwind::_Unwind_Context[#1]"*)* @rust_eh_personality | |
cleanup | |
%18 = getelementptr inbounds %"struct.std::rt::local_heap::LocalHeap[#1]"* %0, i64 0, i32 0, i32 2 | |
%19 = load i8* %18, align 1 | |
%20 = icmp eq i8 %19, 0 | |
br i1 %20, label %_ZN33std..rt..local_heap..MemoryRegion9glue_drop19hb907ab3166dd5d45a9E.exit7, label %cond.i1 | |
cond.i1: ; preds = %unwind_custom_ | |
invoke void @"_ZN2rt10local_heap17Drop$MemoryRegion4drop21h808c8f7694d6de485Kae9v0.10.preE"(%"struct.std::rt::local_heap::MemoryRegion[#1]"* %4) | |
to label %normal-return.i2 unwind label %unwind_custom_.i4 | |
normal-return.i2: ; preds = %cond.i1 | |
%21 = bitcast %"struct.std::rt::local_heap::LocalHeap[#1]"* %0 to {}** | |
%22 = load {}** %21, align 8 | |
%23 = icmp eq {}* %22, null | |
br i1 %23, label %_ZN33std..rt..local_heap..MemoryRegion9glue_drop19hb907ab3166dd5d45a9E.exit7, label %cond.i.i3 | |
cond.i.i3: ; preds = %normal-return.i2 | |
%24 = bitcast {}* %22 to i8* | |
tail call void @free(i8* %24) #0 | |
br label %_ZN33std..rt..local_heap..MemoryRegion9glue_drop19hb907ab3166dd5d45a9E.exit7 | |
unwind_custom_.i4: ; preds = %cond.i1 | |
%25 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"struct.std::rt::unwind::libunwind::_Unwind_Exception[#1]"*, %"enum.std::rt::unwind::libunwind::_Unwind_Context[#1]"*)* @rust_eh_personality | |
cleanup | |
%26 = bitcast %"struct.std::rt::local_heap::LocalHeap[#1]"* %0 to {}** | |
%27 = load {}** %26, align 8 | |
%28 = icmp eq {}* %27, null | |
br i1 %28, label %"_ZN13_$UP$$LP$$RP$9glue_drop19h008e5fc303747c8bahE.exit2.i6", label %cond.i1.i5 | |
cond.i1.i5: ; preds = %unwind_custom_.i4 | |
%29 = bitcast {}* %27 to i8* | |
tail call void @free(i8* %29) #0 | |
br label %"_ZN13_$UP$$LP$$RP$9glue_drop19h008e5fc303747c8bahE.exit2.i6" | |
"_ZN13_$UP$$LP$$RP$9glue_drop19h008e5fc303747c8bahE.exit2.i6": ; preds = %cond.i1.i5, %unwind_custom_.i4 | |
resume { i8*, i32 } %25 | |
_ZN33std..rt..local_heap..MemoryRegion9glue_drop19hb907ab3166dd5d45a9E.exit7: ; preds = %unwind_custom_, %normal-return.i2, %cond.i.i3 | |
resume { i8*, i32 } %17 | |
} | |
declare void @"_ZN2rt10local_heap14Drop$LocalHeap4drop21hbe0295984675a0f1Aca99v0.10.preE"(%"struct.std::rt::local_heap::LocalHeap[#1]"*) unnamed_addr | |
declare void @"_ZN2rt10local_heap17Drop$MemoryRegion4drop21h808c8f7694d6de485Kae9v0.10.preE"(%"struct.std::rt::local_heap::MemoryRegion[#1]"*) unnamed_addr | |
; Function Attrs: noinline uwtable | |
define internal fastcc %"struct.std::rt::task::Task[#1]"* @_ZN2rt9local_ptr8compiled8try_take19h021887ac426c42f5ay4v0.0E() unnamed_addr #6 { | |
entry-block: | |
%0 = load i8** @_ZN2rt9local_ptr8compiled10RT_TLS_PTR19hdc9a58880b8e9059a69v0.10.preE, align 8 | |
%1 = icmp eq i8* %0, null | |
br i1 %1, label %join, label %normal-return2 | |
normal-return2: ; preds = %entry-block | |
%2 = bitcast i8* %0 to %"struct.std::rt::task::Task[#1]"* | |
store i8* null, i8** @_ZN2rt9local_ptr8compiled10RT_TLS_PTR19hdc9a58880b8e9059a69v0.10.preE, align 8 | |
tail call fastcc void @"_ZN24_$UP$std..rt..task..Task9glue_drop19h1061f94893119fc6auE"(%"struct.std::rt::task::Task[#1]"* null) | |
br label %join | |
join: ; preds = %entry-block, %normal-return2 | |
%__make_return_pointer.sroa.0.0 = phi %"struct.std::rt::task::Task[#1]"* [ %2, %normal-return2 ], [ null, %entry-block ] | |
ret %"struct.std::rt::task::Task[#1]"* %__make_return_pointer.sroa.0.0 | |
} | |
declare void @"_ZN3fmt15Default$$BP$str3fmt21hc4a66d5ebdc55a07LIaC9v0.10.preE"({ i64, %tydesc*, i8*, i8*, i8 }*, %str_slice*, %"struct.std::fmt::Formatter[#1]"*) unnamed_addr | |
declare void @"_ZN3fmt12Default$uint3fmt21h9d24c533d4c27d2edaaR9v0.10.preE"({ i64, %tydesc*, i8*, i8*, i8 }*, i64*, %"struct.std::fmt::Formatter[#1]"*) unnamed_addr | |
declare void @_ZN2rt4util12dumb_println19hc795bb121ba5c6ecaQ9v0.10.preE({ i64, %tydesc*, i8*, i8*, i8 }*, %"struct.std::fmt::Arguments[#1]"*) unnamed_addr | |
; Function Attrs: noinline uwtable | |
define internal fastcc void @_ZN2rt9local_ptr8compiled3put19h48db95f7430a5b1baI4v0.0E(%"struct.std::rt::task::Task[#1]"* noalias) unnamed_addr #6 { | |
normal-return: | |
%1 = bitcast %"struct.std::rt::task::Task[#1]"* %0 to i8* | |
store i8* %1, i8** @_ZN2rt9local_ptr8compiled10RT_TLS_PTR19hdc9a58880b8e9059a69v0.10.preE, align 8 | |
tail call fastcc void @"_ZN24_$UP$std..rt..task..Task9glue_drop19h1061f94893119fc6auE"(%"struct.std::rt::task::Task[#1]"* null) | |
ret void | |
} | |
declare void @_ZN3fmt7writeln19h322c2b586bbb2c1eaX9v0.10.preE({ i64, %tydesc*, i8*, i8*, i8 }*, { %tydesc*, i8* }*, %"struct.std::fmt::Arguments[#1]"*) unnamed_addr | |
; Function Attrs: noinline uwtable | |
define internal fastcc noalias %"struct.std::rt::task::Task[#1]"* @_ZN2rt9local_ptr8compiled4take19h8b0bb04cc5c11f7baV4v0.0E() unnamed_addr #6 { | |
entry-block: | |
%0 = alloca %str_slice, align 8 | |
%1 = alloca %"struct.std::fmt::Argument[#1]", align 8 | |
%__args = alloca %"struct.std::fmt::Arguments[#1]", align 8 | |
%__adjust2 = alloca { i8*, i64 }, align 8 | |
%2 = load i8** @_ZN2rt9local_ptr8compiled10RT_TLS_PTR19hdc9a58880b8e9059a69v0.10.preE, align 8 | |
%3 = icmp eq i8* %2, null | |
br i1 %3, label %then-block-5685-, label %normal-return5 | |
then-block-5685-: ; preds = %entry-block | |
%4 = getelementptr inbounds %str_slice* %0, i64 0, i32 0 | |
store i8* getelementptr inbounds ([15 x i8]* @str2280, i64 0, i64 0), i8** %4, align 8 | |
%5 = getelementptr inbounds %str_slice* %0, i64 0, i32 1 | |
store i64 14, i64* %5, align 8 | |
%6 = 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 }*, %str_slice*, %"struct.std::fmt::Formatter[#1]"*)* @"_ZN3fmt15Default$$BP$str3fmt21hc4a66d5ebdc55a07LIaC9v0.10.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]"*)** %6, align 8 | |
%7 = getelementptr inbounds %"struct.std::fmt::Argument[#1]"* %1, i64 0, i32 1 | |
%8 = bitcast %str_slice* %0 to %"enum.std::util::Void[#1]"* | |
store %"enum.std::util::Void[#1]"* %8, %"enum.std::util::Void[#1]"** %7, align 8 | |
%__adjust.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] } }* @_ZN2rt9local_ptr8compiled4take15__STATIC_FMTSTR19hcf722141b2fbba44aS9v0.10.preE to %"enum.std::fmt::rt::Piece[#1]"*), %"enum.std::fmt::rt::Piece[#1]"** %__adjust.sroa.0.0.idx, align 8 | |
%__adjust.sroa.2.0.idx4 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args, i64 0, i32 0, i32 1 | |
store i64 2, i64* %__adjust.sroa.2.0.idx4, align 8 | |
%__adjust.sroa.0.0.idx.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args, i64 0, i32 1, i32 0 | |
store %"struct.std::fmt::Argument[#1]"* %1, %"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]"* %__args, i64 0, i32 1, i32 1 | |
store i64 1, i64* %__adjust.sroa.2.0.idx1.i, align 8 | |
%9 = call { i64, i64, [0 x i8] }* @_ZN3fmt6format19h356fa857e88c8c5bat9v0.10.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, %"struct.std::fmt::Arguments[#1]"* %__args) | |
%10 = getelementptr inbounds { i64, i64, [0 x i8] }* %9, i64 0, i32 2, i64 0 | |
%11 = getelementptr inbounds { i64, i64, [0 x i8] }* %9, i64 0, i32 0 | |
%12 = load i64* %11, align 8 | |
%13 = getelementptr inbounds { i8*, i64 }* %__adjust2, i64 0, i32 0 | |
store i8* %10, i8** %13, align 8 | |
%14 = getelementptr inbounds { i8*, i64 }* %__adjust2, i64 0, i32 1 | |
store i64 %12, i64* %14, align 8 | |
%15 = bitcast { i8*, i64 }* %__adjust2 to %str_slice* | |
invoke void @_ZN2rt4util5abort19hf012523982ca3e78aP9v0.10.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, %str_slice* %15) | |
to label %normal-return unwind label %unwind_ast_5681_ | |
normal-return: ; preds = %then-block-5685- | |
unreachable | |
unwind_ast_5681_: ; preds = %then-block-5685- | |
%16 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"struct.std::rt::unwind::libunwind::_Unwind_Exception[#1]"*, %"enum.std::rt::unwind::libunwind::_Unwind_Context[#1]"*)* @rust_eh_personality | |
cleanup | |
%17 = icmp eq { i64, i64, [0 x i8] }* %9, null | |
br i1 %17, label %resume, label %cond.i | |
cond.i: ; preds = %unwind_ast_5681_ | |
%18 = bitcast { i64, i64, [0 x i8] }* %9 to i8* | |
call void @free(i8* %18) #0 | |
br label %resume | |
resume: ; preds = %cond.i, %unwind_ast_5681_ | |
resume { i8*, i32 } %16 | |
normal-return5: ; preds = %entry-block | |
%19 = bitcast i8* %2 to %"struct.std::rt::task::Task[#1]"* | |
store i8* null, i8** @_ZN2rt9local_ptr8compiled10RT_TLS_PTR19hdc9a58880b8e9059a69v0.10.preE, align 8 | |
call fastcc void @"_ZN24_$UP$std..rt..task..Task9glue_drop19h1061f94893119fc6auE"(%"struct.std::rt::task::Task[#1]"* null) | |
ret %"struct.std::rt::task::Task[#1]"* %19 | |
} | |
; Function Attrs: noreturn | |
declare void @_ZN2rt4util5abort19hf012523982ca3e78aP9v0.10.preE({ i64, %tydesc*, i8*, i8*, i8 }*, %str_slice*) unnamed_addr #7 | |
declare noalias { i64, i64, [0 x i8] }* @_ZN3fmt6format19h356fa857e88c8c5bat9v0.10.preE({ i64, %tydesc*, i8*, i8*, i8 }*, %"struct.std::fmt::Arguments[#1]"*) unnamed_addr | |
; Function Attrs: noinline uwtable | |
define internal fastcc %"struct.std::rt::task::Task[#1]"* @_ZN2rt9local_ptr8compiled13unsafe_borrow19h50a768aa9b50244da44v0.0E() unnamed_addr #6 { | |
entry-block: | |
%__args = alloca %"struct.std::fmt::Arguments[#1]", align 8 | |
%__adjust2 = alloca { i8*, i64 }, align 8 | |
%_ZN2rt9local_ptr8compiled10RT_TLS_PTR19hdc9a58880b8e9059a69v0.10.preE.val = load i8** @_ZN2rt9local_ptr8compiled10RT_TLS_PTR19hdc9a58880b8e9059a69v0.10.preE, align 8 | |
%0 = icmp eq i8* %_ZN2rt9local_ptr8compiled10RT_TLS_PTR19hdc9a58880b8e9059a69v0.10.preE.val, null | |
br i1 %0, label %then-block-5891-, label %next-block | |
then-block-5891-: ; preds = %entry-block | |
%__adjust.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] } }* @_ZN2rt9local_ptr8compiled13unsafe_borrow15__STATIC_FMTSTR19hdd896b8b7372fd49ah9v0.10.preE to %"enum.std::fmt::rt::Piece[#1]"*), %"enum.std::fmt::rt::Piece[#1]"** %__adjust.sroa.0.0.idx, align 8 | |
%__adjust.sroa.2.0.idx2 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args, i64 0, i32 0, i32 1 | |
store i64 1, i64* %__adjust.sroa.2.0.idx2, align 8 | |
%__adjust.sroa.0.0.idx.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args, i64 0, i32 1, i32 0 | |
%1 = bitcast %"struct.std::fmt::Argument[#1]"** %__adjust.sroa.0.0.idx.i to i8* | |
call void @llvm.memset.p0i8.i64(i8* %1, i8 0, i64 16, i32 8, i1 false) | |
%2 = call { i64, i64, [0 x i8] }* @_ZN3fmt6format19h356fa857e88c8c5bat9v0.10.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, %"struct.std::fmt::Arguments[#1]"* %__args) | |
%3 = getelementptr inbounds { i64, i64, [0 x i8] }* %2, i64 0, i32 2, i64 0 | |
%4 = getelementptr inbounds { i64, i64, [0 x i8] }* %2, i64 0, i32 0 | |
%5 = load i64* %4, align 8 | |
%6 = getelementptr inbounds { i8*, i64 }* %__adjust2, i64 0, i32 0 | |
store i8* %3, i8** %6, align 8 | |
%7 = getelementptr inbounds { i8*, i64 }* %__adjust2, i64 0, i32 1 | |
store i64 %5, i64* %7, align 8 | |
%8 = bitcast { i8*, i64 }* %__adjust2 to %str_slice* | |
invoke void @_ZN2rt4util5abort19hf012523982ca3e78aP9v0.10.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, %str_slice* %8) | |
to label %normal-return unwind label %unwind_ast_5887_ | |
normal-return: ; preds = %then-block-5891- | |
unreachable | |
unwind_ast_5887_: ; preds = %then-block-5891- | |
%9 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"struct.std::rt::unwind::libunwind::_Unwind_Exception[#1]"*, %"enum.std::rt::unwind::libunwind::_Unwind_Context[#1]"*)* @rust_eh_personality | |
cleanup | |
%10 = icmp eq { i64, i64, [0 x i8] }* %2, null | |
br i1 %10, label %"_ZN8_$UP$str9glue_drop19hf486c988072d7d43alE.exit", label %cond.i | |
cond.i: ; preds = %unwind_ast_5887_ | |
%11 = bitcast { i64, i64, [0 x i8] }* %2 to i8* | |
call void @free(i8* %11) #0 | |
br label %"_ZN8_$UP$str9glue_drop19hf486c988072d7d43alE.exit" | |
"_ZN8_$UP$str9glue_drop19hf486c988072d7d43alE.exit": ; preds = %unwind_ast_5887_, %cond.i | |
resume { i8*, i32 } %9 | |
next-block: ; preds = %entry-block | |
%12 = bitcast i8* %_ZN2rt9local_ptr8compiled10RT_TLS_PTR19hdc9a58880b8e9059a69v0.10.preE.val to %"struct.std::rt::task::Task[#1]"* | |
ret %"struct.std::rt::task::Task[#1]"* %12 | |
} | |
; Function Attrs: noreturn | |
declare void @_ZN2rt6unwind8Unwinder12begin_unwind21h3b1cb9a3eb8d991bZIaD9v0.10.preE({ i64, %tydesc*, i8*, i8*, i8 }*, { %tydesc*, i8* }*) unnamed_addr #7 | |
; Function Attrs: nounwind | |
declare noalias i8* @realloc(i8* nocapture, i64) unnamed_addr #0 | |
; Function Attrs: uwtable | |
define internal void @_ZN4test13vec_speed_vec19h7704b567022d3c1fai4v0.0E({ i64, %tydesc*, i8*, i8*, i8 }* nocapture readnone, %"struct.extra::test::BenchHarness[#4]"*) unnamed_addr #3 { | |
entry-block: | |
%rng = alloca %"struct.std::rand::XorShiftRng[#1]", align 8 | |
%a = alloca %struct.Vector, align 8 | |
%2 = alloca { void ({ i64, %tydesc*, i8*, i8*, i8 }*)*, { i64, %tydesc*, i8*, i8*, i8 }* }, align 8 | |
%__closure = alloca { i64, %tydesc*, i8*, i8*, { %struct.Vector* } }, align 8 | |
call void @_ZN4rand8weak_rng19h2a6482ec662ffcedaD9v0.10.preE(%"struct.std::rand::XorShiftRng[#1]"* sret %rng, { i64, %tydesc*, i8*, i8*, i8 }* undef) | |
%3 = call fastcc noalias { i64, i64, [0 x float] }* @_ZN4rand3Rng7gen_vec19hdef3ac19495d16e6aS4v0.0E(%"struct.std::rand::XorShiftRng[#1]"* %rng) | |
%4 = getelementptr inbounds { i64, i64, [0 x float] }* %3, i64 0, i32 2, i64 0 | |
%5 = getelementptr inbounds { i64, i64, [0 x float] }* %3, i64 0, i32 0 | |
%6 = load i64* %5, align 8 | |
%7 = lshr i64 %6, 2 | |
%8 = invoke fastcc { i64, i64, [0 x %"struct.std::cell::Cell<f32>[#1]"] }* @_ZN6Vector3new21h231b9303ce4bdf8bnfa24v0.0E(float* %4, i64 %7) | |
to label %normal-return unwind label %unwind_ast_2944_ | |
normal-return: ; preds = %entry-block | |
%.fca.0.gep = getelementptr inbounds %struct.Vector* %a, i64 0, i32 0 | |
store { i64, i64, [0 x %"struct.std::cell::Cell<f32>[#1]"] }* %8, { i64, i64, [0 x %"struct.std::cell::Cell<f32>[#1]"] }** %.fca.0.gep, align 8 | |
%9 = icmp eq { i64, i64, [0 x float] }* %3, null | |
br i1 %9, label %"_ZN13_$UP$$LP$$RP$9glue_drop19h008e5fc303747c8bahE.exit", label %cond.i | |
cond.i: ; preds = %normal-return | |
%10 = bitcast { i64, i64, [0 x float] }* %3 to i8* | |
call void @free(i8* %10) #0 | |
br label %"_ZN13_$UP$$LP$$RP$9glue_drop19h008e5fc303747c8bahE.exit" | |
"_ZN13_$UP$$LP$$RP$9glue_drop19h008e5fc303747c8bahE.exit": ; preds = %normal-return, %cond.i | |
%11 = getelementptr inbounds { i64, %tydesc*, i8*, i8*, { %struct.Vector* } }* %__closure, i64 0, i32 4, i32 0 | |
store %struct.Vector* %a, %struct.Vector** %11, align 8 | |
%12 = getelementptr inbounds { void ({ i64, %tydesc*, i8*, i8*, i8 }*)*, { i64, %tydesc*, i8*, i8*, i8 }* }* %2, i64 0, i32 0 | |
store void ({ i64, %tydesc*, i8*, i8*, i8 }*)* @_ZN4test13vec_speed_vec4anon7expr_fn2awE, void ({ i64, %tydesc*, i8*, i8*, i8 }*)** %12, align 8 | |
%13 = getelementptr inbounds { void ({ i64, %tydesc*, i8*, i8*, i8 }*)*, { i64, %tydesc*, i8*, i8*, i8 }* }* %2, i64 0, i32 1 | |
%14 = bitcast { i64, %tydesc*, i8*, i8*, { %struct.Vector* } }* %__closure to { i64, %tydesc*, i8*, i8*, i8 }* | |
store { i64, %tydesc*, i8*, i8*, i8 }* %14, { i64, %tydesc*, i8*, i8*, i8 }** %13, align 8 | |
%15 = bitcast %"struct.extra::test::BenchHarness[#4]"* %1 to { i64, %tydesc*, i8*, i8*, i8 }* | |
invoke void @_ZN4test12BenchHarness4iter21h397831f0876fe9aefSa19v0.10.preE({ i64, %tydesc*, i8*, i8*, i8 }* %15, { void ({ i64, %tydesc*, i8*, i8*, i8 }*)*, { i64, %tydesc*, i8*, i8*, i8 }* }* %2) | |
to label %normal-return1 unwind label %unwind_ast_3096_ | |
unwind_ast_2944_: ; preds = %entry-block | |
%16 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"struct.std::rt::unwind::libunwind::_Unwind_Exception[#1]"*, %"enum.std::rt::unwind::libunwind::_Unwind_Context[#1]"*)* @rust_eh_personality | |
cleanup | |
%.fca.0.extract = extractvalue { i8*, i32 } %16, 0 | |
%.fca.1.extract = extractvalue { i8*, i32 } %16, 1 | |
%17 = icmp eq { i64, i64, [0 x float] }* %3, null | |
br i1 %17, label %resume, label %cond.i10 | |
cond.i10: ; preds = %unwind_ast_2944_ | |
%18 = bitcast { i64, i64, [0 x float] }* %3 to i8* | |
call void @free(i8* %18) #0 | |
br label %resume | |
resume: ; preds = %cond.i.i12, %unwind_ast_3096_, %cond.i10, %unwind_ast_2944_ | |
%.sroa.3.0 = phi i32 [ %.fca.1.extract, %unwind_ast_2944_ ], [ %.fca.1.extract, %cond.i10 ], [ %.fca.1.extract7, %unwind_ast_3096_ ], [ %.fca.1.extract7, %cond.i.i12 ] | |
%.sroa.0.0 = phi i8* [ %.fca.0.extract, %unwind_ast_2944_ ], [ %.fca.0.extract, %cond.i10 ], [ %.fca.0.extract5, %unwind_ast_3096_ ], [ %.fca.0.extract5, %cond.i.i12 ] | |
%.fca.0.insert = insertvalue { i8*, i32 } undef, i8* %.sroa.0.0, 0 | |
%.fca.1.insert = insertvalue { i8*, i32 } %.fca.0.insert, i32 %.sroa.3.0, 1 | |
resume { i8*, i32 } %.fca.1.insert | |
normal-return1: ; preds = %"_ZN13_$UP$$LP$$RP$9glue_drop19h008e5fc303747c8bahE.exit" | |
%19 = bitcast %struct.Vector* %a to {}** | |
%20 = load {}** %19, align 8 | |
%21 = icmp eq {}* %20, null | |
br i1 %21, label %_ZN6Vector9glue_drop19h332a669c2d14e00dapE.exit, label %cond.i.i | |
cond.i.i: ; preds = %normal-return1 | |
%22 = bitcast {}* %20 to i8* | |
call void @free(i8* %22) #0 | |
br label %_ZN6Vector9glue_drop19h332a669c2d14e00dapE.exit | |
_ZN6Vector9glue_drop19h332a669c2d14e00dapE.exit: ; preds = %normal-return1, %cond.i.i | |
ret void | |
unwind_ast_3096_: ; preds = %"_ZN13_$UP$$LP$$RP$9glue_drop19h008e5fc303747c8bahE.exit" | |
%23 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"struct.std::rt::unwind::libunwind::_Unwind_Exception[#1]"*, %"enum.std::rt::unwind::libunwind::_Unwind_Context[#1]"*)* @rust_eh_personality | |
cleanup | |
%.fca.0.extract5 = extractvalue { i8*, i32 } %23, 0 | |
%.fca.1.extract7 = extractvalue { i8*, i32 } %23, 1 | |
%24 = bitcast %struct.Vector* %a to {}** | |
%25 = load {}** %24, align 8 | |
%26 = icmp eq {}* %25, null | |
br i1 %26, label %resume, label %cond.i.i12 | |
cond.i.i12: ; preds = %unwind_ast_3096_ | |
%27 = bitcast {}* %25 to i8* | |
call void @free(i8* %27) #0 | |
br label %resume | |
} | |
declare void @_ZN4rand8weak_rng19h2a6482ec662ffcedaD9v0.10.preE(%"struct.std::rand::XorShiftRng[#1]"* noalias sret, { i64, %tydesc*, i8*, i8*, i8 }*) unnamed_addr | |
; Function Attrs: uwtable | |
define internal fastcc noalias { i64, i64, [0 x float] }* @_ZN4rand3Rng7gen_vec19hdef3ac19495d16e6aS4v0.0E(%"struct.std::rand::XorShiftRng[#1]"*) unnamed_addr #3 { | |
entry-block: | |
%1 = tail call i8* @malloc(i64 56) #0 | |
%2 = icmp eq i8* %1, null | |
br i1 %2, label %then-block-4856-.i.i.i, label %normal-return.i | |
then-block-4856-.i.i.i: ; preds = %entry-block | |
tail call void @llvm.trap() #0 | |
unreachable | |
normal-return.i: ; preds = %entry-block | |
%3 = getelementptr inbounds i8* %1, i64 8 | |
%4 = bitcast i8* %3 to i64* | |
store i64 40, i64* %4, align 8 | |
%5 = bitcast i8* %1 to i64* | |
store i64 0, i64* %5, align 8 | |
%6 = getelementptr inbounds i8* %1, i64 16 | |
%7 = bitcast i8* %6 to float* | |
%8 = getelementptr inbounds %"struct.std::rand::XorShiftRng[#1]"* %0, i64 0, i32 0 | |
%9 = getelementptr inbounds %"struct.std::rand::XorShiftRng[#1]"* %0, i64 0, i32 1 | |
%10 = getelementptr inbounds %"struct.std::rand::XorShiftRng[#1]"* %0, i64 0, i32 2 | |
%11 = getelementptr inbounds %"struct.std::rand::XorShiftRng[#1]"* %0, i64 0, i32 3 | |
%.promoted = load i32* %8, align 4 | |
%.promoted1 = load i32* %9, align 4 | |
%.promoted2 = load i32* %10, align 4 | |
%.promoted3 = load i32* %11, align 4 | |
%12 = shl i32 %.promoted, 11 | |
%13 = xor i32 %12, %.promoted | |
%14 = lshr i32 %.promoted3, 19 | |
%15 = lshr i32 %13, 8 | |
%16 = xor i32 %15, %13 | |
%17 = xor i32 %16, %.promoted3 | |
%18 = xor i32 %17, %14 | |
%19 = lshr i32 %18, 8 | |
%20 = uitofp i32 %19 to float | |
%21 = fmul float %20, 0x3E70000000000000 | |
store float %21, float* %7, align 4 | |
%22 = shl i32 %.promoted1, 11 | |
%23 = xor i32 %22, %.promoted1 | |
%24 = lshr i32 %17, 19 | |
%25 = lshr i32 %23, 8 | |
%26 = xor i32 %25, %23 | |
%27 = xor i32 %26, %18 | |
%28 = xor i32 %27, %24 | |
%29 = lshr i32 %28, 8 | |
%30 = uitofp i32 %29 to float | |
%31 = fmul float %30, 0x3E70000000000000 | |
%32 = getelementptr inbounds i8* %1, i64 20 | |
%33 = bitcast i8* %32 to float* | |
store float %31, float* %33, align 4 | |
%34 = shl i32 %.promoted2, 11 | |
%35 = xor i32 %34, %.promoted2 | |
%36 = lshr i32 %27, 19 | |
%37 = lshr i32 %35, 8 | |
%38 = xor i32 %37, %35 | |
%39 = xor i32 %38, %28 | |
%40 = xor i32 %39, %36 | |
%41 = lshr i32 %40, 8 | |
%42 = uitofp i32 %41 to float | |
%43 = fmul float %42, 0x3E70000000000000 | |
%44 = getelementptr inbounds i8* %1, i64 24 | |
%45 = bitcast i8* %44 to float* | |
store float %43, float* %45, align 4 | |
%46 = shl i32 %.promoted3, 11 | |
%47 = xor i32 %46, %.promoted3 | |
%48 = lshr i32 %39, 19 | |
%49 = lshr i32 %47, 8 | |
%50 = xor i32 %49, %47 | |
%51 = xor i32 %50, %40 | |
%52 = xor i32 %51, %48 | |
%53 = lshr i32 %52, 8 | |
%54 = uitofp i32 %53 to float | |
%55 = fmul float %54, 0x3E70000000000000 | |
%56 = getelementptr inbounds i8* %1, i64 28 | |
%57 = bitcast i8* %56 to float* | |
store float %55, float* %57, align 4 | |
%58 = shl i32 %18, 11 | |
%59 = xor i32 %58, %18 | |
%60 = lshr i32 %51, 19 | |
%61 = lshr i32 %59, 8 | |
%62 = xor i32 %61, %59 | |
%63 = xor i32 %62, %52 | |
%64 = xor i32 %63, %60 | |
%65 = lshr i32 %64, 8 | |
%66 = uitofp i32 %65 to float | |
%67 = fmul float %66, 0x3E70000000000000 | |
%68 = getelementptr inbounds i8* %1, i64 32 | |
%69 = bitcast i8* %68 to float* | |
store float %67, float* %69, align 4 | |
%70 = shl i32 %28, 11 | |
%71 = xor i32 %70, %28 | |
%72 = lshr i32 %63, 19 | |
%73 = lshr i32 %71, 8 | |
%74 = xor i32 %73, %71 | |
%75 = xor i32 %74, %64 | |
%76 = xor i32 %75, %72 | |
%77 = lshr i32 %76, 8 | |
%78 = uitofp i32 %77 to float | |
%79 = fmul float %78, 0x3E70000000000000 | |
%80 = getelementptr inbounds i8* %1, i64 36 | |
%81 = bitcast i8* %80 to float* | |
store float %79, float* %81, align 4 | |
%82 = shl i32 %40, 11 | |
%83 = xor i32 %82, %40 | |
%84 = lshr i32 %75, 19 | |
%85 = lshr i32 %83, 8 | |
%86 = xor i32 %85, %83 | |
%87 = xor i32 %86, %76 | |
%88 = xor i32 %87, %84 | |
%89 = lshr i32 %88, 8 | |
%90 = uitofp i32 %89 to float | |
%91 = fmul float %90, 0x3E70000000000000 | |
%92 = getelementptr inbounds i8* %1, i64 40 | |
%93 = bitcast i8* %92 to float* | |
store float %91, float* %93, align 4 | |
%94 = shl i32 %52, 11 | |
%95 = xor i32 %94, %52 | |
%96 = lshr i32 %87, 19 | |
%97 = lshr i32 %95, 8 | |
%98 = xor i32 %97, %95 | |
%99 = xor i32 %98, %88 | |
%100 = xor i32 %99, %96 | |
%101 = lshr i32 %100, 8 | |
%102 = uitofp i32 %101 to float | |
%103 = fmul float %102, 0x3E70000000000000 | |
%104 = getelementptr inbounds i8* %1, i64 44 | |
%105 = bitcast i8* %104 to float* | |
store float %103, float* %105, align 4 | |
%106 = shl i32 %64, 11 | |
%107 = xor i32 %106, %64 | |
%108 = lshr i32 %99, 19 | |
%109 = lshr i32 %107, 8 | |
%110 = xor i32 %109, %107 | |
%111 = xor i32 %110, %100 | |
%112 = xor i32 %111, %108 | |
%113 = lshr i32 %112, 8 | |
%114 = uitofp i32 %113 to float | |
%115 = fmul float %114, 0x3E70000000000000 | |
%116 = getelementptr inbounds i8* %1, i64 48 | |
%117 = bitcast i8* %116 to float* | |
store float %115, float* %117, align 4 | |
%118 = shl i32 %76, 11 | |
%119 = xor i32 %118, %76 | |
%120 = lshr i32 %111, 19 | |
%121 = lshr i32 %119, 8 | |
%122 = xor i32 %121, %119 | |
%123 = xor i32 %122, %112 | |
%124 = xor i32 %123, %120 | |
%125 = lshr i32 %124, 8 | |
%126 = uitofp i32 %125 to float | |
%127 = fmul float %126, 0x3E70000000000000 | |
%128 = getelementptr inbounds i8* %1, i64 52 | |
%129 = bitcast i8* %128 to float* | |
store float %127, float* %129, align 4 | |
store i32 %88, i32* %8, align 4 | |
store i32 %100, i32* %9, align 4 | |
store i32 %112, i32* %10, align 4 | |
store i32 %124, i32* %11, align 4 | |
store i64 40, i64* %5, align 8 | |
%130 = bitcast i8* %1 to { i64, i64, [0 x float] }* | |
ret { i64, i64, [0 x float] }* %130 | |
} | |
declare void @_ZN4test12BenchHarness4iter21h397831f0876fe9aefSa19v0.10.preE({ i64, %tydesc*, i8*, i8*, i8 }*, { void ({ i64, %tydesc*, i8*, i8*, i8 }*)*, { i64, %tydesc*, i8*, i8*, i8 }* }*) unnamed_addr | |
; Function Attrs: inlinehint uwtable | |
define internal void @_ZN4test13vec_speed_vec4anon7expr_fn2awE({ i64, %tydesc*, i8*, i8*, i8 }* nocapture readonly) unnamed_addr #8 { | |
entry-block: | |
%1 = alloca %str_slice, align 8 | |
%2 = alloca %"struct.std::fmt::Argument[#1]", align 8 | |
%__args = alloca %"struct.std::fmt::Arguments[#1]", align 8 | |
%3 = alloca %str_slice, align 8 | |
%4 = getelementptr inbounds { i64, %tydesc*, i8*, i8*, i8 }* %0, i64 0, i32 4 | |
%5 = bitcast i8* %4 to %struct.Vector** | |
%6 = load %struct.Vector** %5, align 8 | |
%a.idx.val.idx.i.i = getelementptr %struct.Vector* %6, i64 0, i32 0 | |
br label %loop_body.preheader.i | |
loop_body11.preheader: ; preds = %loop_body.backedge | |
%.val.idx.val.i = load { i64, i64, [0 x %"struct.std::cell::Cell<f32>[#1]"] }** %a.idx.val.idx.i.i, align 8 | |
%.val.idx.val.idx.i = getelementptr { i64, i64, [0 x %"struct.std::cell::Cell<f32>[#1]"] }* %.val.idx.val.i, i64 0, i32 0 | |
%.val.idx.val.idx.val.i = load i64* %.val.idx.val.idx.i, align 8 | |
%7 = lshr i64 %.val.idx.val.idx.val.i, 2 | |
br label %loop_body11 | |
loop_body.preheader.i: ; preds = %loop_body.backedge, %entry-block | |
%8 = phi i64 [ 0, %entry-block ], [ %9, %loop_body.backedge ] | |
%9 = add i64 %8, 1 | |
%.idx.val.i = load { i64, i64, [0 x %"struct.std::cell::Cell<f32>[#1]"] }** %a.idx.val.idx.i.i, align 8 | |
%.idx.val.idx.i = getelementptr { i64, i64, [0 x %"struct.std::cell::Cell<f32>[#1]"] }* %.idx.val.i, i64 0, i32 0 | |
%.idx.val.idx.val.i = load i64* %.idx.val.idx.i, align 8 | |
%10 = lshr i64 %.idx.val.idx.val.i, 2 | |
%11 = icmp eq i64 %10, 0 | |
br i1 %11, label %loop_body.backedge, label %match_else.lr.ph.i | |
loop_body.backedge: ; preds = %match_else.match_else_crit_edge.i, %match_else.lr.ph.i, %loop_body.preheader.i | |
%12 = icmp slt i64 %9, 100 | |
br i1 %12, label %loop_body.preheader.i, label %loop_body11.preheader | |
match_else.lr.ph.i: ; preds = %loop_body.preheader.i | |
%.idx.i.i.i.i80 = getelementptr { i64, i64, [0 x %"struct.std::cell::Cell<f32>[#1]"] }* %.idx.val.i, i64 0, i32 2, i64 0, i32 0 | |
%.idx.val.i.i.i.i81 = load float* %.idx.i.i.i.i80, align 4 | |
%13 = fmul float %.idx.val.i.i.i.i81, %.idx.val.i.i.i.i81 | |
%14 = fadd float %.idx.val.i.i.i.i81, %13 | |
%15 = fdiv float %14, %.idx.val.i.i.i.i81 | |
store float %15, float* %.idx.i.i.i.i80, align 4 | |
%16 = icmp ugt i64 %.idx.val.idx.val.i, 7 | |
br i1 %16, label %match_else.match_else_crit_edge.i, label %loop_body.backedge | |
match_else.match_else_crit_edge.i: ; preds = %match_else.lr.ph.i, %match_else.match_else_crit_edge.i | |
%17 = phi i64 [ %18, %match_else.match_else_crit_edge.i ], [ 1, %match_else.lr.ph.i ] | |
%.val.idx.val.i.i.pre.i = load { i64, i64, [0 x %"struct.std::cell::Cell<f32>[#1]"] }** %a.idx.val.idx.i.i, align 8 | |
%18 = add i64 %17, 1 | |
%.idx.i.i.i.i = getelementptr { i64, i64, [0 x %"struct.std::cell::Cell<f32>[#1]"] }* %.val.idx.val.i.i.pre.i, i64 0, i32 2, i64 %17, i32 0 | |
%.idx.val.i.i.i.i = load float* %.idx.i.i.i.i, align 4 | |
%19 = fmul float %.idx.val.i.i.i.i, %.idx.val.i.i.i.i | |
%20 = fadd float %.idx.val.i.i.i.i, %19 | |
%21 = fdiv float %20, %.idx.val.i.i.i.i | |
store float %21, float* %.idx.i.i.i.i, align 4 | |
%22 = icmp ult i64 %18, %10 | |
br i1 %22, label %match_else.match_else_crit_edge.i, label %loop_body.backedge | |
loop_body11: ; preds = %loop_body11.preheader, %match_else16 | |
%.sroa.2.8.load76 = phi i64 [ %24, %match_else16 ], [ 0, %loop_body11.preheader ] | |
%sum.0 = phi float [ %25, %match_else16 ], [ 0.000000e+00, %loop_body11.preheader ] | |
%23 = icmp ult i64 %.sroa.2.8.load76, %7 | |
br i1 %23, label %match_else16, label %join19 | |
match_else16: ; preds = %loop_body11 | |
%.idx.i.i = getelementptr { i64, i64, [0 x %"struct.std::cell::Cell<f32>[#1]"] }* %.val.idx.val.i, i64 0, i32 2, i64 %.sroa.2.8.load76, i32 0 | |
%.idx.val.i.i = load float* %.idx.i.i, align 4 | |
%24 = add i64 %.sroa.2.8.load76, 1 | |
%25 = fadd float %sum.0, %.idx.val.i.i | |
br label %loop_body11 | |
join19: ; preds = %loop_body11 | |
%26 = fcmp une float %sum.0, 9.600000e+01 | |
br i1 %26, label %next-block, label %then-block-3088- | |
then-block-3088-: ; preds = %join19 | |
%27 = getelementptr inbounds %str_slice* %1, i64 0, i32 0 | |
store i8* getelementptr inbounds ([12 x i8]* @str2492, i64 0, i64 0), i8** %27, align 8 | |
%28 = getelementptr inbounds %str_slice* %1, i64 0, i32 1 | |
store i64 11, i64* %28, align 8 | |
%29 = getelementptr inbounds %"struct.std::fmt::Argument[#1]"* %2, 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]"*)* @"_ZN3fmt8String$T3fmt21h787465c43299bcd1YOaQ4v0.0E" 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 %"struct.std::fmt::Argument[#1]"* %2, i64 0, 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 | |
%__adjust.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] } }* @_ZN4test14vec_speed_loop15__STATIC_FMTSTR19hee3bcecd8c266311am4v0.0E to %"enum.std::fmt::rt::Piece[#1]"*), %"enum.std::fmt::rt::Piece[#1]"** %__adjust.sroa.0.0.idx, align 8 | |
%__adjust.sroa.2.0.idx65 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args, i64 0, i32 0, i32 1 | |
store i64 2, i64* %__adjust.sroa.2.0.idx65, align 8 | |
%__adjust.sroa.0.0.idx.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args, i64 0, i32 1, i32 0 | |
store %"struct.std::fmt::Argument[#1]"* %2, %"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]"* %__args, i64 0, i32 1, i32 1 | |
store i64 1, i64* %__adjust.sroa.2.0.idx1.i, align 8 | |
%32 = call { i64, i64, [0 x i8] }* @_ZN3fmt6format19h356fa857e88c8c5bat9v0.10.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, %"struct.std::fmt::Arguments[#1]"* %__args) | |
%33 = getelementptr inbounds %str_slice* %3, i64 0, i32 0 | |
store i8* getelementptr inbounds ([11 x i8]* @str1855, i64 0, i64 0), i8** %33, align 8 | |
%34 = getelementptr inbounds %str_slice* %3, i64 0, i32 1 | |
store i64 10, i64* %34, align 8 | |
call fastcc void @_ZN2rt6unwind12begin_unwind19h9443711abab5072daA4v0.0E({ i64, i64, [0 x i8] }* %32, %str_slice* %3, i64 355) | |
unreachable | |
next-block: ; preds = %join19 | |
ret void | |
} | |
; Function Attrs: uwtable | |
define internal void @"_ZN3fmt8String$T3fmt21h787465c43299bcd1YOaQ4v0.0E"({ i64, %tydesc*, i8*, i8*, i8 }* nocapture readnone, %str_slice* nocapture readonly, %"struct.std::fmt::Formatter[#1]"*) unnamed_addr #3 { | |
entry-block: | |
%3 = alloca %str_slice, align 8 | |
%4 = bitcast %str_slice* %1 to i8* | |
%5 = bitcast %str_slice* %3 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %4, i64 16, i32 8, i1 false) #0 | |
%6 = bitcast %"struct.std::fmt::Formatter[#1]"* %2 to { i64, %tydesc*, i8*, i8*, i8 }* | |
call void @_ZN3fmt9Formatter3pad21h61c2065a9cc2568bc3aq9v0.10.preE({ i64, %tydesc*, i8*, i8*, i8 }* %6, %str_slice* %3) | |
ret void | |
} | |
declare void @_ZN3fmt9Formatter3pad21h61c2065a9cc2568bc3aq9v0.10.preE({ i64, %tydesc*, i8*, i8*, i8 }*, %str_slice*) unnamed_addr | |
; Function Attrs: uwtable | |
define internal void @_ZN4test14vec_speed_loop19h3dbb0822dfa8143ea74v0.0E({ i64, %tydesc*, i8*, i8*, i8 }* nocapture readnone, %"struct.extra::test::BenchHarness[#4]"*) unnamed_addr #3 { | |
entry-block: | |
%rng = alloca %"struct.std::rand::XorShiftRng[#1]", align 8 | |
%a = alloca %struct.Vector, align 8 | |
%2 = alloca { void ({ i64, %tydesc*, i8*, i8*, i8 }*)*, { i64, %tydesc*, i8*, i8*, i8 }* }, align 8 | |
%__closure = alloca { i64, %tydesc*, i8*, i8*, { %struct.Vector* } }, align 8 | |
call void @_ZN4rand8weak_rng19h2a6482ec662ffcedaD9v0.10.preE(%"struct.std::rand::XorShiftRng[#1]"* sret %rng, { i64, %tydesc*, i8*, i8*, i8 }* undef) | |
%3 = call fastcc noalias { i64, i64, [0 x float] }* @_ZN4rand3Rng7gen_vec19hdef3ac19495d16e6aS4v0.0E(%"struct.std::rand::XorShiftRng[#1]"* %rng) | |
%4 = getelementptr inbounds { i64, i64, [0 x float] }* %3, i64 0, i32 2, i64 0 | |
%5 = getelementptr inbounds { i64, i64, [0 x float] }* %3, i64 0, i32 0 | |
%6 = load i64* %5, align 8 | |
%7 = lshr i64 %6, 2 | |
%8 = invoke fastcc { i64, i64, [0 x %"struct.std::cell::Cell<f32>[#1]"] }* @_ZN6Vector3new21h231b9303ce4bdf8bnfa24v0.0E(float* %4, i64 %7) | |
to label %normal-return unwind label %unwind_ast_3119_ | |
normal-return: ; preds = %entry-block | |
%.fca.0.gep = getelementptr inbounds %struct.Vector* %a, i64 0, i32 0 | |
store { i64, i64, [0 x %"struct.std::cell::Cell<f32>[#1]"] }* %8, { i64, i64, [0 x %"struct.std::cell::Cell<f32>[#1]"] }** %.fca.0.gep, align 8 | |
%9 = icmp eq { i64, i64, [0 x float] }* %3, null | |
br i1 %9, label %"_ZN13_$UP$$LP$$RP$9glue_drop19h008e5fc303747c8bahE.exit", label %cond.i | |
cond.i: ; preds = %normal-return | |
%10 = bitcast { i64, i64, [0 x float] }* %3 to i8* | |
call void @free(i8* %10) #0 | |
br label %"_ZN13_$UP$$LP$$RP$9glue_drop19h008e5fc303747c8bahE.exit" | |
"_ZN13_$UP$$LP$$RP$9glue_drop19h008e5fc303747c8bahE.exit": ; preds = %normal-return, %cond.i | |
%11 = getelementptr inbounds { i64, %tydesc*, i8*, i8*, { %struct.Vector* } }* %__closure, i64 0, i32 4, i32 0 | |
store %struct.Vector* %a, %struct.Vector** %11, align 8 | |
%12 = getelementptr inbounds { void ({ i64, %tydesc*, i8*, i8*, i8 }*)*, { i64, %tydesc*, i8*, i8*, i8 }* }* %2, i64 0, i32 0 | |
store void ({ i64, %tydesc*, i8*, i8*, i8 }*)* @_ZN4test14vec_speed_loop4anon7expr_fn2aqE, void ({ i64, %tydesc*, i8*, i8*, i8 }*)** %12, align 8 | |
%13 = getelementptr inbounds { void ({ i64, %tydesc*, i8*, i8*, i8 }*)*, { i64, %tydesc*, i8*, i8*, i8 }* }* %2, i64 0, i32 1 | |
%14 = bitcast { i64, %tydesc*, i8*, i8*, { %struct.Vector* } }* %__closure to { i64, %tydesc*, i8*, i8*, i8 }* | |
store { i64, %tydesc*, i8*, i8*, i8 }* %14, { i64, %tydesc*, i8*, i8*, i8 }** %13, align 8 | |
%15 = bitcast %"struct.extra::test::BenchHarness[#4]"* %1 to { i64, %tydesc*, i8*, i8*, i8 }* | |
invoke void @_ZN4test12BenchHarness4iter21h397831f0876fe9aefSa19v0.10.preE({ i64, %tydesc*, i8*, i8*, i8 }* %15, { void ({ i64, %tydesc*, i8*, i8*, i8 }*)*, { i64, %tydesc*, i8*, i8*, i8 }* }* %2) | |
to label %normal-return1 unwind label %unwind_ast_3301_ | |
unwind_ast_3119_: ; preds = %entry-block | |
%16 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"struct.std::rt::unwind::libunwind::_Unwind_Exception[#1]"*, %"enum.std::rt::unwind::libunwind::_Unwind_Context[#1]"*)* @rust_eh_personality | |
cleanup | |
%.fca.0.extract = extractvalue { i8*, i32 } %16, 0 | |
%.fca.1.extract = extractvalue { i8*, i32 } %16, 1 | |
%17 = icmp eq { i64, i64, [0 x float] }* %3, null | |
br i1 %17, label %resume, label %cond.i10 | |
cond.i10: ; preds = %unwind_ast_3119_ | |
%18 = bitcast { i64, i64, [0 x float] }* %3 to i8* | |
call void @free(i8* %18) #0 | |
br label %resume | |
resume: ; preds = %cond.i.i12, %unwind_ast_3301_, %cond.i10, %unwind_ast_3119_ | |
%.sroa.3.0 = phi i32 [ %.fca.1.extract, %unwind_ast_3119_ ], [ %.fca.1.extract, %cond.i10 ], [ %.fca.1.extract7, %unwind_ast_3301_ ], [ %.fca.1.extract7, %cond.i.i12 ] | |
%.sroa.0.0 = phi i8* [ %.fca.0.extract, %unwind_ast_3119_ ], [ %.fca.0.extract, %cond.i10 ], [ %.fca.0.extract5, %unwind_ast_3301_ ], [ %.fca.0.extract5, %cond.i.i12 ] | |
%.fca.0.insert = insertvalue { i8*, i32 } undef, i8* %.sroa.0.0, 0 | |
%.fca.1.insert = insertvalue { i8*, i32 } %.fca.0.insert, i32 %.sroa.3.0, 1 | |
resume { i8*, i32 } %.fca.1.insert | |
normal-return1: ; preds = %"_ZN13_$UP$$LP$$RP$9glue_drop19h008e5fc303747c8bahE.exit" | |
%19 = bitcast %struct.Vector* %a to {}** | |
%20 = load {}** %19, align 8 | |
%21 = icmp eq {}* %20, null | |
br i1 %21, label %_ZN6Vector9glue_drop19h332a669c2d14e00dapE.exit, label %cond.i.i | |
cond.i.i: ; preds = %normal-return1 | |
%22 = bitcast {}* %20 to i8* | |
call void @free(i8* %22) #0 | |
br label %_ZN6Vector9glue_drop19h332a669c2d14e00dapE.exit | |
_ZN6Vector9glue_drop19h332a669c2d14e00dapE.exit: ; preds = %normal-return1, %cond.i.i | |
ret void | |
unwind_ast_3301_: ; preds = %"_ZN13_$UP$$LP$$RP$9glue_drop19h008e5fc303747c8bahE.exit" | |
%23 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"struct.std::rt::unwind::libunwind::_Unwind_Exception[#1]"*, %"enum.std::rt::unwind::libunwind::_Unwind_Context[#1]"*)* @rust_eh_personality | |
cleanup | |
%.fca.0.extract5 = extractvalue { i8*, i32 } %23, 0 | |
%.fca.1.extract7 = extractvalue { i8*, i32 } %23, 1 | |
%24 = bitcast %struct.Vector* %a to {}** | |
%25 = load {}** %24, align 8 | |
%26 = icmp eq {}* %25, null | |
br i1 %26, label %resume, label %cond.i.i12 | |
cond.i.i12: ; preds = %unwind_ast_3301_ | |
%27 = bitcast {}* %25 to i8* | |
call void @free(i8* %27) #0 | |
br label %resume | |
} | |
; Function Attrs: inlinehint uwtable | |
define internal void @_ZN4test14vec_speed_loop4anon7expr_fn2aqE({ i64, %tydesc*, i8*, i8*, i8 }* nocapture readonly) unnamed_addr #8 { | |
entry-block: | |
%1 = alloca %str_slice, align 8 | |
%2 = alloca %"struct.std::fmt::Argument[#1]", align 8 | |
%__args = alloca %"struct.std::fmt::Arguments[#1]", align 8 | |
%3 = alloca %str_slice, align 8 | |
%4 = getelementptr inbounds { i64, %tydesc*, i8*, i8*, i8 }* %0, i64 0, i32 4 | |
%5 = bitcast i8* %4 to %struct.Vector** | |
%6 = load %struct.Vector** %5, align 8 | |
%.idx = getelementptr %struct.Vector* %6, i64 0, i32 0 | |
br label %match_else | |
loop_body.loopexit: ; preds = %match_else13, %match_else | |
%exitcond = icmp eq i64 %9, 100 | |
br i1 %exitcond, label %loop_body23.preheader, label %match_else | |
loop_body23.preheader: ; preds = %loop_body.loopexit | |
%.val.idx.val.i = load { i64, i64, [0 x %"struct.std::cell::Cell<f32>[#1]"] }** %.idx, align 8 | |
%.val.idx.val.idx.i = getelementptr { i64, i64, [0 x %"struct.std::cell::Cell<f32>[#1]"] }* %.val.idx.val.i, i64 0, i32 0 | |
%.val.idx.val.idx.val.i = load i64* %.val.idx.val.idx.i, align 8 | |
%7 = lshr i64 %.val.idx.val.idx.val.i, 2 | |
br label %loop_body23 | |
match_else: ; preds = %loop_body.loopexit, %entry-block | |
%8 = phi i64 [ 0, %entry-block ], [ %9, %loop_body.loopexit ] | |
%9 = add i64 %8, 1 | |
%.idx.val = load { i64, i64, [0 x %"struct.std::cell::Cell<f32>[#1]"] }** %.idx, align 8 | |
%.idx.val.idx = getelementptr { i64, i64, [0 x %"struct.std::cell::Cell<f32>[#1]"] }* %.idx.val, i64 0, i32 0 | |
%.idx.val.idx.val = load i64* %.idx.val.idx, align 8 | |
%10 = lshr i64 %.idx.val.idx.val, 2 | |
%11 = icmp eq i64 %10, 0 | |
br i1 %11, label %loop_body.loopexit, label %match_else13 | |
match_else13: ; preds = %match_else, %match_else13.match_else13_crit_edge | |
%.idx61.val = phi { i64, i64, [0 x %"struct.std::cell::Cell<f32>[#1]"] }* [ %.idx61.val.pre, %match_else13.match_else13_crit_edge ], [ %.idx.val, %match_else ] | |
%.sroa.070.0.load8387 = phi i64 [ %12, %match_else13.match_else13_crit_edge ], [ 0, %match_else ] | |
%12 = add i64 %.sroa.070.0.load8387, 1 | |
%.idx.i = getelementptr { i64, i64, [0 x %"struct.std::cell::Cell<f32>[#1]"] }* %.idx61.val, i64 0, i32 2, i64 %.sroa.070.0.load8387, i32 0 | |
%.idx.val.i = load float* %.idx.i, align 4 | |
%13 = fmul float %.idx.val.i, %.idx.val.i | |
%14 = fadd float %.idx.val.i, %13 | |
%15 = fdiv float %14, %.idx.val.i | |
store float %15, float* %.idx.i, align 4 | |
%16 = icmp ult i64 %12, %10 | |
br i1 %16, label %match_else13.match_else13_crit_edge, label %loop_body.loopexit | |
match_else13.match_else13_crit_edge: ; preds = %match_else13 | |
%.idx61.val.pre = load { i64, i64, [0 x %"struct.std::cell::Cell<f32>[#1]"] }** %.idx, align 8 | |
br label %match_else13 | |
loop_body23: ; preds = %loop_body23.preheader, %match_else29 | |
%.sroa.2.8.load77 = phi i64 [ %18, %match_else29 ], [ 0, %loop_body23.preheader ] | |
%sum.0 = phi float [ %19, %match_else29 ], [ 0.000000e+00, %loop_body23.preheader ] | |
%17 = icmp ult i64 %.sroa.2.8.load77, %7 | |
br i1 %17, label %match_else29, label %join32 | |
match_else29: ; preds = %loop_body23 | |
%.idx.i.i = getelementptr { i64, i64, [0 x %"struct.std::cell::Cell<f32>[#1]"] }* %.val.idx.val.i, i64 0, i32 2, i64 %.sroa.2.8.load77, i32 0 | |
%.idx.val.i.i = load float* %.idx.i.i, align 4 | |
%18 = add i64 %.sroa.2.8.load77, 1 | |
%19 = fadd float %sum.0, %.idx.val.i.i | |
br label %loop_body23 | |
join32: ; preds = %loop_body23 | |
%20 = fcmp une float %sum.0, 9.600000e+01 | |
br i1 %20, label %next-block, label %then-block-3293- | |
then-block-3293-: ; preds = %join32 | |
%21 = getelementptr inbounds %str_slice* %1, i64 0, i32 0 | |
store i8* getelementptr inbounds ([12 x i8]* @str2492, i64 0, i64 0), i8** %21, align 8 | |
%22 = getelementptr inbounds %str_slice* %1, i64 0, i32 1 | |
store i64 11, i64* %22, align 8 | |
%23 = getelementptr inbounds %"struct.std::fmt::Argument[#1]"* %2, 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]"*)* @"_ZN3fmt8String$T3fmt21h787465c43299bcd1YOaQ4v0.0E" 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]"*)** %23, align 8 | |
%24 = getelementptr inbounds %"struct.std::fmt::Argument[#1]"* %2, i64 0, i32 1 | |
%25 = bitcast %str_slice* %1 to %"enum.std::util::Void[#1]"* | |
store %"enum.std::util::Void[#1]"* %25, %"enum.std::util::Void[#1]"** %24, align 8 | |
%__adjust.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] } }* @_ZN4test14vec_speed_loop15__STATIC_FMTSTR19hee3bcecd8c266311am4v0.0E to %"enum.std::fmt::rt::Piece[#1]"*), %"enum.std::fmt::rt::Piece[#1]"** %__adjust.sroa.0.0.idx, align 8 | |
%__adjust.sroa.2.0.idx68 = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args, i64 0, i32 0, i32 1 | |
store i64 2, i64* %__adjust.sroa.2.0.idx68, align 8 | |
%__adjust.sroa.0.0.idx.i = getelementptr inbounds %"struct.std::fmt::Arguments[#1]"* %__args, i64 0, i32 1, i32 0 | |
store %"struct.std::fmt::Argument[#1]"* %2, %"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]"* %__args, i64 0, i32 1, i32 1 | |
store i64 1, i64* %__adjust.sroa.2.0.idx1.i, align 8 | |
%26 = call { i64, i64, [0 x i8] }* @_ZN3fmt6format19h356fa857e88c8c5bat9v0.10.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, %"struct.std::fmt::Arguments[#1]"* %__args) | |
%27 = getelementptr inbounds %str_slice* %3, i64 0, i32 0 | |
store i8* getelementptr inbounds ([11 x i8]* @str1855, i64 0, i64 0), i8** %27, align 8 | |
%28 = getelementptr inbounds %str_slice* %3, i64 0, i32 1 | |
store i64 10, i64* %28, align 8 | |
call fastcc void @_ZN2rt6unwind12begin_unwind19h9443711abab5072daA4v0.0E({ i64, i64, [0 x i8] }* %26, %str_slice* %3, i64 383) | |
unreachable | |
next-block: ; preds = %join32 | |
ret void | |
} | |
; Function Attrs: uwtable | |
define internal void @_ZN6__test4main19ha53045dbc606aac2at4v0.0E({ i64, %tydesc*, i8*, i8*, i8 }* nocapture readnone) unnamed_addr #3 { | |
entry-block: | |
%__adjust = alloca { { i64, i64, [0 x i8] }**, i64 }, align 8 | |
%__adjust1 = alloca { %"struct.extra::test::TestDescAndFn[#4]"*, i64 }, align 8 | |
%1 = call noalias { i64, i64, [0 x { i64, i64, [0 x i8] }*] }* @_ZN2os4args19h75a1b2ab49ecd3b3aJ9v0.10.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef) | |
%2 = getelementptr inbounds { i64, i64, [0 x { i64, i64, [0 x i8] }*] }* %1, i64 0, i32 2, i64 0 | |
%3 = getelementptr inbounds { i64, i64, [0 x { i64, i64, [0 x i8] }*] }* %1, i64 0, i32 0 | |
%4 = load i64* %3, align 8 | |
%5 = lshr i64 %4, 3 | |
%6 = getelementptr inbounds { { i64, i64, [0 x i8] }**, i64 }* %__adjust, i64 0, i32 0 | |
store { i64, i64, [0 x i8] }** %2, { i64, i64, [0 x i8] }*** %6, align 8 | |
%7 = getelementptr inbounds { { i64, i64, [0 x i8] }**, i64 }* %__adjust, i64 0, i32 1 | |
store i64 %5, i64* %7, align 8 | |
%8 = getelementptr inbounds { %"struct.extra::test::TestDescAndFn[#4]"*, i64 }* %__adjust1, i64 0, i32 0 | |
store %"struct.extra::test::TestDescAndFn[#4]"* bitcast ({ { { { i8, { i8*, i64 }, [0 x i8] }, i8, i8 }, { i8, void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"struct.extra::test::BenchHarness[#4]"*)*, [8 x i8] } }, { { { i8, { i8*, i64 }, [0 x i8] }, i8, i8 }, { i8, void ({ i64, %tydesc*, i8*, i8*, i8 }*, %"struct.extra::test::BenchHarness[#4]"*)*, [8 x i8] } } }* @const to %"struct.extra::test::TestDescAndFn[#4]"*), %"struct.extra::test::TestDescAndFn[#4]"** %8, align 8 | |
%9 = getelementptr inbounds { %"struct.extra::test::TestDescAndFn[#4]"*, i64 }* %__adjust1, i64 0, i32 1 | |
store i64 2, i64* %9, align 8 | |
invoke void @_ZN4test16test_main_static19hd7f7b175edcf1677aV9v0.10.preE({ i64, %tydesc*, i8*, i8*, i8 }* undef, { { i64, i64, [0 x i8] }**, i64 }* %__adjust, { %"struct.extra::test::TestDescAndFn[#4]"*, i64 }* %__adjust1) | |
to label %normal-return unwind label %unwind_ast_3312_ | |
normal-return: ; preds = %entry-block | |
%10 = icmp eq { i64, i64, [0 x { i64, i64, [0 x i8] }*] }* %1, null | |
br i1 %10, label %"_ZN20_$UP$$x5b$UP$str$x5d9glue_drop19h9635eefedf52490aazE.exit", label %cond.i | |
cond.i: ; preds = %normal-return | |
%11 = load i64* %3, align 8 | |
%12 = bitcast { i64, i64, [0 x i8] }** %2 to i8* | |
%13 = getelementptr inbounds i8* %12, i64 %11 | |
%14 = bitcast i8* %13 to { i64, i64, [0 x i8] }** | |
%15 = icmp ult { i64, i64, [0 x i8] }** %2, %14 | |
br i1 %15, label %iter_vec_loop_body.i.i, label %"_ZN26unboxed_vec$LT$$UP$str$GT$9glue_drop19h8d958a1272ef4e65aDE.exit.i" | |
iter_vec_loop_body.i.i: ; preds = %cond.i, %"_ZN8_$UP$str9glue_drop19hf486c988072d7d43alE.exit.i.i" | |
%16 = phi { i64, i64, [0 x i8] }** [ %20, %"_ZN8_$UP$str9glue_drop19hf486c988072d7d43alE.exit.i.i" ], [ %2, %cond.i ] | |
%17 = load { i64, i64, [0 x i8] }** %16, align 8 | |
%18 = icmp eq { i64, i64, [0 x i8] }* %17, null | |
br i1 %18, label %"_ZN8_$UP$str9glue_drop19hf486c988072d7d43alE.exit.i.i", label %cond.i.i.i | |
cond.i.i.i: ; preds = %iter_vec_loop_body.i.i | |
%19 = bitcast { i64, i64, [0 x i8] }* %17 to i8* | |
call void @free(i8* %19) #0 | |
br label %"_ZN8_$UP$str9glue_drop19hf486c988072d7d43alE.exit.i.i" | |
"_ZN8_$UP$str9glue_drop19hf486c988072d7d43alE.exit.i.i": ; preds = %cond.i.i.i, %iter_vec_loop_body.i.i | |
%20 = getelementptr inbounds { i64, i64, [0 x i8] }** %16, i64 1 | |
%21 = icmp ult { i64, i64, [0 x i8] }** %20, %14 | |
br i1 %21, label %iter_vec_loop_body.i.i, label %"_ZN26unboxed_vec$LT$$UP$str$GT$9glue_drop19h8d958a1272ef4e65aDE.exit.i" | |
"_ZN26unboxed_vec$LT$$UP$str$GT$9glue_drop19h8d958a1272ef4e65aDE.exit.i": ; preds = %"_ZN8_$UP$str9glue_drop19hf486c988072d7d43alE.exit.i.i", %cond.i | |
%22 = bitcast { i64, i64, [0 x { i64, i64, [0 x i8] }*] }* %1 to i8* | |
call void @free(i8* %22) #0 | |
br label %"_ZN20_$UP$$x5b$UP$str$x5d9glue_drop19h9635eefedf52490aazE.exit" | |
"_ZN20_$UP$$x5b$UP$str$x5d9glue_drop19h9635eefedf52490aazE.exit": ; preds = %normal-return, %"_ZN26unboxed_vec$LT$$UP$str$GT$9glue_drop19h8d958a1272ef4e65aDE.exit.i" | |
ret void | |
unwind_ast_3312_: ; preds = %entry-block | |
%23 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"struct.std::rt::unwind::libunwind::_Unwind_Exception[#1]"*, %"enum.std::rt::unwind::libunwind::_Unwind_Context[#1]"*)* @rust_eh_personality | |
cleanup | |
%24 = icmp eq { i64, i64, [0 x { i64, i64, [0 x i8] }*] }* %1, null | |
br i1 %24, label %"_ZN20_$UP$$x5b$UP$str$x5d9glue_drop19h9635eefedf52490aazE.exit10", label %cond.i5 | |
cond.i5: ; preds = %unwind_ast_3312_ | |
%25 = load i64* %3, align 8 | |
%26 = bitcast { i64, i64, [0 x i8] }** %2 to i8* | |
%27 = getelementptr inbounds i8* %26, i64 %25 | |
%28 = bitcast i8* %27 to { i64, i64, [0 x i8] }** | |
%29 = icmp ult { i64, i64, [0 x i8] }** %2, %28 | |
br i1 %29, label %iter_vec_loop_body.i.i6, label %"_ZN26unboxed_vec$LT$$UP$str$GT$9glue_drop19h8d958a1272ef4e65aDE.exit.i9" | |
iter_vec_loop_body.i.i6: ; preds = %cond.i5, %"_ZN8_$UP$str9glue_drop19hf486c988072d7d43alE.exit.i.i8" | |
%30 = phi { i64, i64, [0 x i8] }** [ %34, %"_ZN8_$UP$str9glue_drop19hf486c988072d7d43alE.exit.i.i8" ], [ %2, %cond.i5 ] | |
%31 = load { i64, i64, [0 x i8] }** %30, align 8 | |
%32 = icmp eq { i64, i64, [0 x i8] }* %31, null | |
br i1 %32, label %"_ZN8_$UP$str9glue_drop19hf486c988072d7d43alE.exit.i.i8", label %cond.i.i.i7 | |
cond.i.i.i7: ; preds = %iter_vec_loop_body.i.i6 | |
%33 = bitcast { i64, i64, [0 x i8] }* %31 to i8* | |
call void @free(i8* %33) #0 | |
br label %"_ZN8_$UP$str9glue_drop19hf486c988072d7d43alE.exit.i.i8" | |
"_ZN8_$UP$str9glue_drop19hf486c988072d7d43alE.exit.i.i8": ; preds = %cond.i.i.i7, %iter_vec_loop_body.i.i6 | |
%34 = getelementptr inbounds { i64, i64, [0 x i8] }** %30, i64 1 | |
%35 = icmp ult { i64, i64, [0 x i8] }** %34, %28 | |
br i1 %35, label %iter_vec_loop_body.i.i6, label %"_ZN26unboxed_vec$LT$$UP$str$GT$9glue_drop19h8d958a1272ef4e65aDE.exit.i9" | |
"_ZN26unboxed_vec$LT$$UP$str$GT$9glue_drop19h8d958a1272ef4e65aDE.exit.i9": ; preds = %"_ZN8_$UP$str9glue_drop19hf486c988072d7d43alE.exit.i.i8", %cond.i5 | |
%36 = bitcast { i64, i64, [0 x { i64, i64, [0 x i8] }*] }* %1 to i8* | |
call void @free(i8* %36) #0 | |
br label %"_ZN20_$UP$$x5b$UP$str$x5d9glue_drop19h9635eefedf52490aazE.exit10" | |
"_ZN20_$UP$$x5b$UP$str$x5d9glue_drop19h9635eefedf52490aazE.exit10": ; preds = %unwind_ast_3312_, %"_ZN26unboxed_vec$LT$$UP$str$GT$9glue_drop19h8d958a1272ef4e65aDE.exit.i9" | |
resume { i8*, i32 } %23 | |
} | |
define i64 @main(i64, i8**) unnamed_addr { | |
top: | |
%2 = tail call i64 @_ZN10lang_start19h4ff14d35a1ae64b2a79v0.10.preE({ i64, %tydesc*, i8*, i8*, i8 }* null, i8* bitcast (void ({ i64, %tydesc*, i8*, i8*, i8 }*)* @_ZN6__test4main19ha53045dbc606aac2at4v0.0E to i8*), i64 %0, i8** %1) | |
ret i64 %2 | |
} | |
declare i64 @_ZN10lang_start19h4ff14d35a1ae64b2a79v0.10.preE({ i64, %tydesc*, i8*, i8*, i8 }*, i8*, i64, i8**) unnamed_addr | |
declare void @_ZN4test16test_main_static19hd7f7b175edcf1677aV9v0.10.preE({ i64, %tydesc*, i8*, i8*, i8 }*, { { i64, i64, [0 x i8] }**, i64 }*, { %"struct.extra::test::TestDescAndFn[#4]"*, i64 }*) unnamed_addr | |
declare noalias { i64, i64, [0 x { i64, i64, [0 x i8] }*] }* @_ZN2os4args19h75a1b2ab49ecd3b3aJ9v0.10.preE({ i64, %tydesc*, i8*, i8*, i8 }*) unnamed_addr | |
; 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 = { cold noinline noreturn uwtable } | |
attributes #5 = { nounwind readnone uwtable } | |
attributes #6 = { noinline uwtable } | |
attributes #7 = { noreturn } | |
attributes #8 = { inlinehint uwtable } | |
!0 = metadata !{i8 0, i8 2} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#[feature(globs, macro_rules)]; | |
#[crate_type="lib"]; | |
#[crate_id="algebloat"]; | |
use std::cell::Cell; | |
pub trait VectorGet | |
{ | |
unsafe fn unsafe_get(&self, idx: uint) -> f32; | |
fn get(&self, idx: uint) -> f32; | |
} | |
pub trait VectorSet | |
{ | |
unsafe fn unsafe_set(&self, idx: uint, val: f32); | |
fn set(&self, idx: uint, val: f32); | |
} | |
pub trait VectorAssign<T> | |
{ | |
fn assign(&self, v: T); | |
} | |
pub trait VectorIter | |
{ | |
fn iter(self) -> VectorIterator<Self>; | |
} | |
impl<LHS: VectorSet + Container, | |
RHS: VectorGet + Container> | |
VectorAssign<RHS> for | |
LHS | |
{ | |
fn assign(&self, v: RHS) | |
{ | |
assert!(self.len() == v.len()); | |
for i in range(0, v.len()) | |
{ | |
unsafe | |
{ | |
self.unsafe_set(i, v.unsafe_get(i)); | |
} | |
} | |
} | |
} | |
impl<T: VectorGet + Container> | |
VectorIter for | |
T | |
{ | |
fn iter(self) -> VectorIterator<T> | |
{ | |
VectorIterator::new(self) | |
} | |
} | |
pub struct Vector | |
{ | |
priv data: ~[Cell<f32>] | |
} | |
impl Vector | |
{ | |
pub fn new(data: &[f32]) -> Vector | |
{ | |
Vector{ data: data.map(|&v| Cell::new(v)) } | |
} | |
} | |
impl | |
FromIterator<f32> for | |
Vector | |
{ | |
fn from_iterator<T: Iterator<f32>>(it: &mut T) -> Vector | |
{ | |
Vector{ data: it.by_ref().map(|v| Cell::new(v)).collect() } | |
} | |
} | |
impl<'l> | |
VectorGet for | |
&'l Vector | |
{ | |
unsafe fn unsafe_get(&self, idx: uint) -> f32 | |
{ | |
(*self.data.unsafe_ref(idx)).get() | |
} | |
fn get(&self, idx: uint) -> f32 | |
{ | |
self.data[idx].get() | |
} | |
} | |
impl<'l> | |
VectorSet for | |
&'l Vector | |
{ | |
unsafe fn unsafe_set(&self, idx: uint, val: f32) | |
{ | |
self.data.unsafe_ref(idx).set(val); | |
} | |
fn set(&self, idx: uint, val: f32) | |
{ | |
self.data[idx].set(val); | |
} | |
} | |
impl<'l> | |
Container for | |
&'l Vector | |
{ | |
fn len(&self) -> uint | |
{ | |
self.data.len() | |
} | |
} | |
impl<'l> | |
VectorGet for | |
Vector | |
{ | |
unsafe fn unsafe_get(&self, idx: uint) -> f32 | |
{ | |
(*self.data.unsafe_ref(idx)).get() | |
} | |
fn get(&self, idx: uint) -> f32 | |
{ | |
self.data[idx].get() | |
} | |
} | |
impl<'l> | |
VectorSet for | |
Vector | |
{ | |
unsafe fn unsafe_set(&self, idx: uint, val: f32) | |
{ | |
self.data.unsafe_ref(idx).set(val); | |
} | |
fn set(&self, idx: uint, val: f32) | |
{ | |
self.data[idx].set(val); | |
} | |
} | |
impl<'l> | |
Container for | |
Vector | |
{ | |
fn len(&self) -> uint | |
{ | |
self.data.len() | |
} | |
} | |
pub struct VectorIterator<T> | |
{ | |
priv base: T, | |
priv idx: uint | |
} | |
impl<T: VectorGet + Container> | |
VectorIterator<T> | |
{ | |
fn new(base: T) -> VectorIterator<T> | |
{ | |
VectorIterator{ base: base, idx: 0 } | |
} | |
} | |
impl<T: VectorGet + Container> | |
Iterator<f32> for | |
VectorIterator<T> | |
{ | |
fn next(&mut self) -> Option<f32> | |
{ | |
let ret = if self.idx < self.base.len() | |
{ | |
unsafe | |
{ | |
Some(self.base.unsafe_get(self.idx)) | |
} | |
} | |
else | |
{ | |
None | |
}; | |
self.idx += 1; | |
ret | |
} | |
} | |
macro_rules! expr | |
{ | |
($e: expr) => { $e } | |
} | |
macro_rules! bin_op | |
{ | |
($op_name: ident, $op_method: ident, $op_struct_name: ident, $op: tt) => | |
{ | |
pub struct $op_struct_name<TA, TB> | |
{ | |
a: TA, | |
b: TB, | |
} | |
impl<TA: Container, | |
TB: Container> | |
$op_struct_name<TA, TB> | |
{ | |
pub unsafe fn unsafe_new(a: TA, b: TB) -> $op_struct_name<TA, TB> | |
{ | |
$op_struct_name{ a: a, b: b } | |
} | |
pub fn new(a: TA, b: TB) -> $op_struct_name<TA, TB> | |
{ | |
assert!(a.len() == b.len()); | |
$op_struct_name{ a: a, b: b } | |
} | |
} | |
impl<TA: Clone, | |
TB: Clone> | |
Clone for | |
$op_struct_name<TA, TB> | |
{ | |
fn clone(&self) -> $op_struct_name<TA, TB> | |
{ | |
$op_struct_name{ a: self.a.clone(), b: self.b.clone() } | |
} | |
} | |
impl<'l, | |
TA: VectorGet + Container, | |
TB: VectorGet + Container> | |
VectorGet for | |
$op_struct_name<TA, TB> | |
{ | |
unsafe fn unsafe_get(&self, idx: uint) -> f32 | |
{ | |
expr!(self.a.unsafe_get(idx) $op self.b.unsafe_get(idx)) | |
} | |
fn get(&self, idx: uint) -> f32 | |
{ | |
assert!(idx < self.len()); | |
unsafe | |
{ | |
expr!(self.a.unsafe_get(idx) $op self.b.unsafe_get(idx)) | |
} | |
} | |
} | |
impl<'l, | |
TA: Container, | |
TB: Container> | |
Container for $op_struct_name<TA, TB> | |
{ | |
fn len(&self) -> uint | |
{ | |
self.a.len() | |
} | |
} | |
impl<'l, | |
RHS: VectorGet + Clone + Container> | |
$op_name<RHS, $op_struct_name<&'l Vector, RHS>> for | |
&'l Vector | |
{ | |
fn $op_method(&self, rhs: &RHS) -> $op_struct_name<&'l Vector, RHS> | |
{ | |
$op_struct_name::new(self.clone(), rhs.clone()) | |
} | |
} | |
} | |
} | |
macro_rules! connect_op | |
{ | |
($op_struct_lhs: ident : $($op_name: ident, $op_method: ident, $op_struct_name: ident);+) => | |
{ | |
$( | |
impl<RHS: VectorGet + Clone + Container, | |
TA: VectorGet + Clone + Container, | |
TB: VectorGet + Clone + Container> | |
$op_name<RHS, $op_struct_name<$op_struct_lhs<TA, TB>, RHS>> for | |
$op_struct_lhs<TA, TB> | |
{ | |
fn $op_method(&self, rhs: &RHS) -> $op_struct_name<$op_struct_lhs<TA, TB>, RHS> | |
{ | |
$op_struct_name::new(self.clone(), rhs.clone()) | |
} | |
} | |
)+ | |
} | |
} | |
macro_rules! connect_ops | |
{ | |
($($op_struct: ident),+) => | |
{ | |
$( | |
connect_op!($op_struct: | |
Add, add, Adder; | |
Sub, sub, Subtracter; | |
Mul, mul, Multiplier; | |
Div, div, Divider) | |
)+ | |
} | |
} | |
bin_op!(Add, add, Adder, +) | |
bin_op!(Sub, sub, Subtracter, -) | |
bin_op!(Mul, mul, Multiplier, *) | |
bin_op!(Div, div, Divider, /) | |
connect_ops!(Adder, | |
Subtracter, | |
Multiplier, | |
Divider) | |
#[cfg(test)] | |
mod test | |
{ | |
extern mod extra; | |
use super::*; | |
use self::extra::test::BenchHarness; | |
use std::rand::{weak_rng, Rng}; | |
#[bench] | |
fn vec_speed_vec(bh: &mut BenchHarness) { | |
let mut rng = weak_rng(); | |
let a = Vector::new(rng.gen_vec(10)); | |
bh.iter(|| { | |
for _ in range(0, 100) | |
{ | |
a.assign((&a + &a * &a) / &a); | |
} | |
let mut sum = 0f32; | |
for v in (&a).iter() | |
{ | |
sum += v; | |
} | |
assert!(sum != 96.0); | |
}) | |
} | |
#[bench] | |
fn vec_speed_loop(bh: &mut BenchHarness) { | |
let mut rng = weak_rng(); | |
let a = Vector::new(rng.gen_vec(10)); | |
bh.iter(|| { | |
for _ in range(0, 100) | |
{ | |
for i in range(0, a.len()) | |
{ | |
unsafe | |
{ | |
let v = a.unsafe_get(i); | |
a.unsafe_set(i, (v + v * v) / v) | |
} | |
} | |
} | |
let mut sum = 0f32; | |
for v in (&a).iter() | |
{ | |
sum += v; | |
} | |
assert!(sum != 96.0); | |
}) | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
running 2 tests | |
test test::vec_speed_loop ... bench: 2284 ns/iter (+/- 16) | |
test test::vec_speed_vec ... bench: 2286 ns/iter (+/- 20) | |
test result: ok. 0 passed; 0 failed; 0 ignored; 2 measured |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment