Created
February 23, 2020 03:02
-
-
Save dfyz/c95cc29dd8f1d77f2d808292536e0df4 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; ModuleID = 'main.7rcbfp3g-cgu.2' | |
source_filename = "main.7rcbfp3g-cgu.2" | |
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" | |
target triple = "x86_64-unknown-linux-gnu" | |
%"alloc::vec::Vec<i32>" = type { [0 x i64], { i32*, i64 }, [0 x i64], i64, [0 x i64] } | |
%"unwind::libunwind::_Unwind_Exception" = type { [0 x i64], i64, [0 x i64], void (i32, %"unwind::libunwind::_Unwind_Exception"*)*, [0 x i64], [6 x i64], [0 x i64] } | |
%"unwind::libunwind::_Unwind_Context" = type { [0 x i8] } | |
@vtable.0.llvm.14851218111650171626 = external hidden unnamed_addr constant { void (i8**)*, i64, i64, i32 (i8**)*, i32 (i8**)*, i32 (i8**)* }, align 8 | |
; core::ptr::real_drop_in_place | |
; Function Attrs: nonlazybind uwtable | |
define internal fastcc void @_ZN4core3ptr18real_drop_in_place17h2169c20c6b0092b4E(%"alloc::vec::Vec<i32>"* nocapture readonly align 8 dereferenceable(24) %_1) unnamed_addr #0 personality i32 (i32, i32, i64, %"unwind::libunwind::_Unwind_Exception"*, %"unwind::libunwind::_Unwind_Context"*)* @rust_eh_personality { | |
bb4: | |
%0 = getelementptr %"alloc::vec::Vec<i32>", %"alloc::vec::Vec<i32>"* %_1, i64 0, i32 1, i32 1 | |
%self.idx1.val.i = load i64, i64* %0, align 8 | |
%_2.i.i.i = icmp eq i64 %self.idx1.val.i, 0 | |
br i1 %_2.i.i.i, label %"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hc2f48ae81b2e1e09E.exit", label %bb4.i.i | |
bb4.i.i: ; preds = %bb4 | |
%1 = bitcast %"alloc::vec::Vec<i32>"* %_1 to i8** | |
%self.idx.val2.i = load i8*, i8** %1, align 8 | |
%size.i.i.i = shl i64 %self.idx1.val.i, 2 | |
tail call void @__rust_dealloc(i8* nonnull %self.idx.val2.i, i64 %size.i.i.i, i64 4) #8 | |
br label %"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hc2f48ae81b2e1e09E.exit" | |
"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hc2f48ae81b2e1e09E.exit": ; preds = %bb4, %bb4.i.i | |
ret void | |
} | |
; main::do_test | |
; Function Attrs: nonlazybind uwtable | |
define internal fastcc void @_ZN4main7do_test17he62fd8bcc45385dbE(i64 %x) unnamed_addr #0 personality i32 (i32, i32, i64, %"unwind::libunwind::_Unwind_Exception"*, %"unwind::libunwind::_Unwind_Context"*)* @rust_eh_personality { | |
start: | |
%z = alloca %"alloc::vec::Vec<i32>", align 8 | |
%0 = bitcast %"alloc::vec::Vec<i32>"* %z to i8* | |
call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %0) | |
%1 = getelementptr inbounds %"alloc::vec::Vec<i32>", %"alloc::vec::Vec<i32>"* %z, i64 0, i32 0, i64 0 | |
store i64 4, i64* %1, align 8, !alias.scope !3 | |
%2 = getelementptr inbounds %"alloc::vec::Vec<i32>", %"alloc::vec::Vec<i32>"* %z, i64 0, i32 1, i32 1 | |
%3 = bitcast i64* %2 to i8* | |
call void @llvm.memset.p0i8.i64(i8* nonnull align 8 %3, i8 0, i64 16, i1 false) #8, !alias.scope !3 | |
%4 = icmp eq i64 %x, 0 | |
%5 = getelementptr inbounds %"alloc::vec::Vec<i32>", %"alloc::vec::Vec<i32>"* %z, i64 0, i32 3 | |
%6 = bitcast %"alloc::vec::Vec<i32>"* %z to i8** | |
%7 = shl nuw i64 %x, 2 | |
br i1 %4, label %"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hc2f48ae81b2e1e09E.exit", label %bb4.i | |
bb4.i.i: ; preds = %bb13 | |
%size.i.i.i = shl i64 %self.idx.val.i.i.i11131, 2 | |
tail call void @__rust_dealloc(i8* nonnull %_6563.i.i.i53145, i64 %size.i.i.i, i64 4) #8 | |
br label %"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hc2f48ae81b2e1e09E.exit" | |
"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hc2f48ae81b2e1e09E.exit": ; preds = %start, %bb13, %bb4.i.i | |
call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %0) | |
ret void | |
bb11.loopexit: ; preds = %bb1.i.i.i.i36 | |
%8 = getelementptr inbounds [0 x i32], [0 x i32]* %_2.i1.i8, i64 0, i64 %a | |
%9 = getelementptr inbounds i32, i32* %8, i64 16777216 | |
%10 = load i32, i32* %9, align 4 | |
%11 = add i32 %10, 1 | |
store i32 %11, i32* %9, align 4 | |
%12 = getelementptr inbounds [0 x i32], [0 x i32]* %_2.i1.i8, i64 0, i64 0 | |
%exitcond = icmp eq i64 %14, %x | |
br i1 %exitcond, label %bb13, label %bb4.i | |
bb4.i: ; preds = %start, %bb11.loopexit | |
%_6563.i.i.i53 = phi i8* [ %_6563.i.i.i53145, %bb11.loopexit ], [ inttoptr (i64 4 to i8*), %start ] | |
%_2.i16.pre.i64 = phi i32* [ %_2.i16.pre.i64142, %bb11.loopexit ], [ inttoptr (i64 4 to i32*), %start ] | |
%13 = phi i8* [ %42, %bb11.loopexit ], [ inttoptr (i64 4 to i8*), %start ] | |
%_2.i1.i8138 = phi [0 x i32]* [ %_2.i1.i8, %bb11.loopexit ], [ inttoptr (i64 4 to [0 x i32]*), %start ] | |
%_2.i16.pre.i32 = phi i32* [ %12, %bb11.loopexit ], [ inttoptr (i64 4 to i32*), %start ] | |
%self.idx.val.i.i.i43 = phi i64 [ %self.idx.val.i.i.i11131, %bb11.loopexit ], [ 0, %start ] | |
%self.idx.val17.pre.i58 = phi i64 [ %45, %bb11.loopexit ], [ 0, %start ] | |
%iter1.sroa.0.094 = phi i64 [ %14, %bb11.loopexit ], [ 0, %start ] | |
%14 = add nuw i64 %iter1.sroa.0.094, 1 | |
%a = mul i64 %iter1.sroa.0.094, %x | |
%_44 = mul i64 %14, %x | |
%b = add i64 %_44, -1 | |
%_4.i.i.i = icmp ult i64 %b, %a | |
%15 = sub i64 %self.idx.val.i.i.i43, %self.idx.val17.pre.i58 | |
%_6.i.i.i44 = icmp ult i64 %15, %x | |
br i1 %_4.i.i.i, label %bb22.us, label %bb22.us82.preheader93 | |
bb13: ; preds = %bb11.loopexit | |
%_2.i.i.i = icmp eq i64 %self.idx.val.i.i.i11131, 0 | |
br i1 %_2.i.i.i, label %"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hc2f48ae81b2e1e09E.exit", label %bb4.i.i | |
bb22.us: ; preds = %bb4.i | |
br i1 %_6.i.i.i44, label %bb6.i.i.i45, label %bb1.i.i.i.i68 | |
bb6.i.i.i45: ; preds = %bb22.us | |
%16 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %self.idx.val17.pre.i58, i64 %x) #8 | |
%17 = extractvalue { i64, i1 } %16, 0 | |
%18 = extractvalue { i64, i1 } %16, 1 | |
br i1 %18, label %bb2.i.i60, label %bb24.i.i.i48 | |
bb24.i.i.i48: ; preds = %bb6.i.i.i45 | |
%double_cap.i.i.i.i46 = shl i64 %self.idx.val.i.i.i43, 1 | |
%19 = icmp ugt i64 %double_cap.i.i.i.i46, %17 | |
%.0.sroa.speculated.i.i.i.i.i.i.i47 = select i1 %19, i64 %double_cap.i.i.i.i46, i64 %17 | |
%20 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %.0.sroa.speculated.i.i.i.i.i.i.i47, i64 4) #8 | |
%21 = extractvalue { i64, i1 } %20, 1 | |
br i1 %21, label %bb2.i.i60, label %bb42.i.i.i50 | |
bb42.i.i.i50: ; preds = %bb24.i.i.i48 | |
%22 = extractvalue { i64, i1 } %20, 0 | |
%_2.i5.i.i.i49 = icmp eq i64 %self.idx.val.i.i.i43, 0 | |
br i1 %_2.i5.i.i.i49, label %bb44.i.i.i51, label %bb46.i.i.i54 | |
bb44.i.i.i51: ; preds = %bb42.i.i.i50 | |
%23 = tail call i8* @__rust_alloc(i64 %22, i64 4) #8, !noalias !6 | |
br label %bb52.i.i.i56 | |
bb46.i.i.i54: ; preds = %bb42.i.i.i50 | |
%size.i.i.i.i52 = shl i64 %self.idx.val.i.i.i43, 2 | |
%24 = tail call i8* @__rust_realloc(i8* nonnull %_6563.i.i.i53, i64 %size.i.i.i.i52, i64 4, i64 %22) #8, !noalias !6 | |
br label %bb52.i.i.i56 | |
bb52.i.i.i56: ; preds = %bb46.i.i.i54, %bb44.i.i.i51 | |
%res.0.i.i.i55 = phi i8* [ %23, %bb44.i.i.i51 ], [ %24, %bb46.i.i.i54 ] | |
%25 = icmp eq i8* %res.0.i.i.i55, null | |
br i1 %25, label %bb55.i.i.i57, label %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve17hae8dac09c1ddc612E.exit.thread.i59" | |
bb55.i.i.i57: ; preds = %bb52.i.i.i56 | |
; call alloc::alloc::handle_alloc_error | |
tail call void @_ZN5alloc5alloc18handle_alloc_error17h310b2b12e0c80cdaE(i64 %22, i64 4), !noalias !6 | |
unreachable | |
"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve17hae8dac09c1ddc612E.exit.thread.i59": ; preds = %bb52.i.i.i56 | |
store i8* %res.0.i.i.i55, i8** %6, align 8, !noalias !6 | |
store i64 %.0.sroa.speculated.i.i.i.i.i.i.i47, i64* %2, align 8, !noalias !6 | |
%26 = bitcast i8* %res.0.i.i.i55 to i32* | |
br label %bb1.i.i.i.i68 | |
bb2.i.i60: ; preds = %bb24.i.i.i48, %bb6.i.i.i45 | |
; invoke alloc::raw_vec::capacity_overflow | |
invoke void @_ZN5alloc7raw_vec17capacity_overflow17h69b424f1d1921be0E() | |
to label %.noexc72 unwind label %cleanup.loopexit.us-lcssa.us | |
.noexc72: ; preds = %bb2.i.i60 | |
unreachable | |
bb1.i.i.i.i68: ; preds = %bb22.us, %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve17hae8dac09c1ddc612E.exit.thread.i59" | |
%_2.i16.i67 = phi i32* [ %26, %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve17hae8dac09c1ddc612E.exit.thread.i59" ], [ %_2.i16.pre.i64, %bb22.us ] | |
%27 = getelementptr inbounds i32, i32* %_2.i16.i67, i64 %self.idx.val17.pre.i58 | |
%28 = bitcast i32* %27 to i8* | |
call void @llvm.memset.p0i8.i64(i8* align 4 %28, i8 0, i64 %7, i1 false) | |
%29 = add i64 %self.idx.val17.pre.i58, %x | |
store i64 %29, i64* %5, align 8, !noalias !9 | |
; invoke core::slice::slice_index_order_fail | |
invoke void @_ZN4core5slice22slice_index_order_fail17hc2daf093fd804659E(i64 %a, i64 %b) | |
to label %.noexc35 unwind label %cleanup.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp | |
cleanup.loopexit.us-lcssa.us: ; preds = %bb2.i.i60 | |
%lpad.us-lcssa.us = landingpad { i8*, i32 } | |
cleanup | |
br label %cleanup | |
bb22.us82.preheader93: ; preds = %bb4.i | |
br i1 %_6.i.i.i44, label %bb6.i.i.i13, label %bb1.i.i.i.i36 | |
bb6.i.i.i13: ; preds = %bb22.us82.preheader93 | |
%30 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %self.idx.val17.pre.i58, i64 %x) #8 | |
%31 = extractvalue { i64, i1 } %30, 0 | |
%32 = extractvalue { i64, i1 } %30, 1 | |
br i1 %32, label %bb2.i.i28, label %bb24.i.i.i16 | |
bb24.i.i.i16: ; preds = %bb6.i.i.i13 | |
%double_cap.i.i.i.i14 = shl i64 %self.idx.val.i.i.i43, 1 | |
%33 = icmp ugt i64 %double_cap.i.i.i.i14, %31 | |
%.0.sroa.speculated.i.i.i.i.i.i.i15 = select i1 %33, i64 %double_cap.i.i.i.i14, i64 %31 | |
%34 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %.0.sroa.speculated.i.i.i.i.i.i.i15, i64 4) #8 | |
%35 = extractvalue { i64, i1 } %34, 1 | |
br i1 %35, label %bb2.i.i28, label %bb42.i.i.i18 | |
bb42.i.i.i18: ; preds = %bb24.i.i.i16 | |
%36 = extractvalue { i64, i1 } %34, 0 | |
%_2.i5.i.i.i17 = icmp eq i64 %self.idx.val.i.i.i43, 0 | |
br i1 %_2.i5.i.i.i17, label %bb44.i.i.i19, label %bb46.i.i.i22 | |
bb44.i.i.i19: ; preds = %bb42.i.i.i18 | |
%37 = tail call i8* @__rust_alloc(i64 %36, i64 4) #8, !noalias !18 | |
br label %bb52.i.i.i24 | |
bb46.i.i.i22: ; preds = %bb42.i.i.i18 | |
%size.i.i.i.i20 = shl i64 %self.idx.val.i.i.i43, 2 | |
%38 = tail call i8* @__rust_realloc(i8* nonnull %13, i64 %size.i.i.i.i20, i64 4, i64 %36) #8, !noalias !18 | |
br label %bb52.i.i.i24 | |
bb52.i.i.i24: ; preds = %bb46.i.i.i22, %bb44.i.i.i19 | |
%res.0.i.i.i23 = phi i8* [ %37, %bb44.i.i.i19 ], [ %38, %bb46.i.i.i22 ] | |
%39 = icmp eq i8* %res.0.i.i.i23, null | |
br i1 %39, label %bb55.i.i.i25, label %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve17hae8dac09c1ddc612E.exit.thread.i27" | |
bb55.i.i.i25: ; preds = %bb52.i.i.i24 | |
; call alloc::alloc::handle_alloc_error | |
tail call void @_ZN5alloc5alloc18handle_alloc_error17h310b2b12e0c80cdaE(i64 %36, i64 4), !noalias !18 | |
unreachable | |
"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve17hae8dac09c1ddc612E.exit.thread.i27": ; preds = %bb52.i.i.i24 | |
store i8* %res.0.i.i.i23, i8** %6, align 8, !noalias !18 | |
store i64 %.0.sroa.speculated.i.i.i.i.i.i.i15, i64* %2, align 8, !noalias !18 | |
%40 = bitcast i8* %res.0.i.i.i23 to i32* | |
%41 = bitcast i8* %res.0.i.i.i23 to [0 x i32]* | |
br label %bb1.i.i.i.i36 | |
bb2.i.i28: ; preds = %bb24.i.i.i16, %bb6.i.i.i13 | |
; invoke alloc::raw_vec::capacity_overflow | |
invoke void @_ZN5alloc7raw_vec17capacity_overflow17h69b424f1d1921be0E() | |
to label %.noexc40 unwind label %cleanup.loopexit.us-lcssa.us-lcssa.us | |
.noexc40: ; preds = %bb2.i.i28 | |
unreachable | |
bb1.i.i.i.i36: ; preds = %bb22.us82.preheader93, %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve17hae8dac09c1ddc612E.exit.thread.i27" | |
%_6563.i.i.i53145 = phi i8* [ %res.0.i.i.i23, %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve17hae8dac09c1ddc612E.exit.thread.i27" ], [ %_6563.i.i.i53, %bb22.us82.preheader93 ] | |
%_2.i16.pre.i64142 = phi i32* [ %40, %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve17hae8dac09c1ddc612E.exit.thread.i27" ], [ %_2.i16.pre.i64, %bb22.us82.preheader93 ] | |
%42 = phi i8* [ %res.0.i.i.i23, %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve17hae8dac09c1ddc612E.exit.thread.i27" ], [ %13, %bb22.us82.preheader93 ] | |
%_2.i1.i8 = phi [0 x i32]* [ %41, %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve17hae8dac09c1ddc612E.exit.thread.i27" ], [ %_2.i1.i8138, %bb22.us82.preheader93 ] | |
%self.idx.val.i.i.i11131 = phi i64 [ %.0.sroa.speculated.i.i.i.i.i.i.i15, %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve17hae8dac09c1ddc612E.exit.thread.i27" ], [ %self.idx.val.i.i.i43, %bb22.us82.preheader93 ] | |
%_2.i16.i35 = phi i32* [ %40, %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve17hae8dac09c1ddc612E.exit.thread.i27" ], [ %_2.i16.pre.i32, %bb22.us82.preheader93 ] | |
%43 = getelementptr inbounds i32, i32* %_2.i16.i35, i64 %self.idx.val17.pre.i58 | |
%44 = bitcast i32* %43 to i8* | |
call void @llvm.memset.p0i8.i64(i8* align 4 %44, i8 0, i64 %7, i1 false) | |
%45 = add i64 %self.idx.val17.pre.i58, %x | |
store i64 %45, i64* %5, align 8, !noalias !21 | |
%_9.i.i.i.us91 = icmp ult i64 %45, %b | |
br i1 %_9.i.i.i.us91, label %bb5.i.i.i, label %bb11.loopexit | |
cleanup.loopexit.us-lcssa.us-lcssa.us: ; preds = %bb2.i.i28 | |
%lpad.us-lcssa81.us = landingpad { i8*, i32 } | |
cleanup | |
br label %cleanup | |
.noexc35: ; preds = %bb1.i.i.i.i68 | |
unreachable | |
bb5.i.i.i: ; preds = %bb1.i.i.i.i36 | |
; invoke core::slice::slice_index_len_fail | |
invoke void @_ZN4core5slice20slice_index_len_fail17ha58ce2526532f1e6E(i64 %b, i64 %45) | |
to label %.noexc36 unwind label %cleanup.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp | |
.noexc36: ; preds = %bb5.i.i.i | |
unreachable | |
cleanup.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %bb5.i.i.i, %bb1.i.i.i.i68 | |
%lpad.loopexit.split-lp = landingpad { i8*, i32 } | |
cleanup | |
br label %cleanup | |
cleanup: ; preds = %cleanup.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, %cleanup.loopexit.us-lcssa.us-lcssa.us, %cleanup.loopexit.us-lcssa.us | |
%lpad.phi = phi { i8*, i32 } [ %lpad.us-lcssa.us, %cleanup.loopexit.us-lcssa.us ], [ %lpad.us-lcssa81.us, %cleanup.loopexit.us-lcssa.us-lcssa.us ], [ %lpad.loopexit.split-lp, %cleanup.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] | |
; call core::ptr::real_drop_in_place | |
call fastcc void @_ZN4core3ptr18real_drop_in_place17h2169c20c6b0092b4E(%"alloc::vec::Vec<i32>"* nonnull align 8 dereferenceable(24) %z) #9 | |
resume { i8*, i32 } %lpad.phi | |
} | |
; main::main | |
; Function Attrs: nonlazybind uwtable | |
define internal void @_ZN4main4main17h9e0ea2b04575dfdbE() unnamed_addr #0 { | |
start: | |
; call main::do_test | |
tail call fastcc void @_ZN4main7do_test17he62fd8bcc45385dbE(i64 1) | |
; call main::do_test | |
tail call fastcc void @_ZN4main7do_test17he62fd8bcc45385dbE(i64 2) | |
ret void | |
} | |
; Function Attrs: nounwind readnone speculatable | |
declare { i64, i1 } @llvm.uadd.with.overflow.i64(i64, i64) #1 | |
; Function Attrs: nounwind nonlazybind uwtable | |
declare i32 @rust_eh_personality(i32, i32, i64, %"unwind::libunwind::_Unwind_Exception"*, %"unwind::libunwind::_Unwind_Context"*) unnamed_addr #2 | |
; core::slice::slice_index_order_fail | |
; Function Attrs: cold noinline noreturn nonlazybind uwtable | |
declare void @_ZN4core5slice22slice_index_order_fail17hc2daf093fd804659E(i64, i64) unnamed_addr #3 | |
; core::slice::slice_index_len_fail | |
; Function Attrs: cold noinline noreturn nonlazybind uwtable | |
declare void @_ZN4core5slice20slice_index_len_fail17ha58ce2526532f1e6E(i64, i64) unnamed_addr #3 | |
; Function Attrs: nonlazybind | |
define i32 @main(i32, i8**) unnamed_addr #4 { | |
top: | |
%_7.i = alloca i8*, align 8 | |
%2 = sext i32 %0 to i64 | |
%3 = bitcast i8** %_7.i to i8* | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %3) | |
%4 = bitcast i8** %_7.i to void ()** | |
store void ()* @_ZN4main4main17h9e0ea2b04575dfdbE, void ()** %4, align 8 | |
%_4.0.i = bitcast i8** %_7.i to {}* | |
; call std::rt::lang_start_internal | |
%5 = call i64 @_ZN3std2rt19lang_start_internal17h14e7168ba039f170E({}* nonnull align 1 %_4.0.i, [3 x i64]* noalias readonly align 8 dereferenceable(24) bitcast ({ void (i8**)*, i64, i64, i32 (i8**)*, i32 (i8**)*, i32 (i8**)* }* @vtable.0.llvm.14851218111650171626 to [3 x i64]*), i64 %2, i8** %1) | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %3) | |
%6 = trunc i64 %5 to i32 | |
ret i32 %6 | |
} | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #5 | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #5 | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i1 immarg) #5 | |
; Function Attrs: nounwind readnone speculatable | |
declare { i64, i1 } @llvm.umul.with.overflow.i64(i64, i64) #1 | |
; Function Attrs: nounwind nonlazybind uwtable | |
declare noalias i8* @__rust_alloc(i64, i64) unnamed_addr #2 | |
; Function Attrs: nounwind nonlazybind uwtable | |
declare i8* @__rust_realloc(i8*, i64, i64, i64) unnamed_addr #2 | |
; alloc::alloc::handle_alloc_error | |
; Function Attrs: noreturn nounwind nonlazybind uwtable | |
declare void @_ZN5alloc5alloc18handle_alloc_error17h310b2b12e0c80cdaE(i64, i64) unnamed_addr #6 | |
; alloc::raw_vec::capacity_overflow | |
; Function Attrs: noreturn nonlazybind uwtable | |
declare void @_ZN5alloc7raw_vec17capacity_overflow17h69b424f1d1921be0E() unnamed_addr #7 | |
; Function Attrs: nounwind nonlazybind uwtable | |
declare void @__rust_dealloc(i8*, i64, i64) unnamed_addr #2 | |
; std::rt::lang_start_internal | |
; Function Attrs: nonlazybind uwtable | |
declare i64 @_ZN3std2rt19lang_start_internal17h14e7168ba039f170E({}* nonnull align 1, [3 x i64]* noalias readonly align 8 dereferenceable(24), i64, i8**) unnamed_addr #0 | |
attributes #0 = { nonlazybind uwtable "probe-stack"="__rust_probestack" "target-cpu"="x86-64" } | |
attributes #1 = { nounwind readnone speculatable } | |
attributes #2 = { nounwind nonlazybind uwtable "probe-stack"="__rust_probestack" "target-cpu"="x86-64" } | |
attributes #3 = { cold noinline noreturn nonlazybind uwtable "probe-stack"="__rust_probestack" "target-cpu"="x86-64" } | |
attributes #4 = { nonlazybind "probe-stack"="__rust_probestack" "target-cpu"="x86-64" } | |
attributes #5 = { argmemonly nounwind } | |
attributes #6 = { noreturn nounwind nonlazybind uwtable "probe-stack"="__rust_probestack" "target-cpu"="x86-64" } | |
attributes #7 = { noreturn nonlazybind uwtable "probe-stack"="__rust_probestack" "target-cpu"="x86-64" } | |
attributes #8 = { nounwind } | |
attributes #9 = { noinline } | |
!llvm.module.flags = !{!0, !1, !2} | |
!0 = !{i32 7, !"PIC Level", i32 2} | |
!1 = !{i32 7, !"PIE Level", i32 2} | |
!2 = !{i32 2, !"RtLibUseGOT", i32 1} | |
!3 = !{!4} | |
!4 = distinct !{!4, !5, !"_ZN5alloc3vec12Vec$LT$T$GT$3new17h4b4ae93d6a39baadE: argument 0"} | |
!5 = distinct !{!5, !"_ZN5alloc3vec12Vec$LT$T$GT$3new17h4b4ae93d6a39baadE"} | |
!6 = !{!7} | |
!7 = distinct !{!7, !8, !"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_internal17ha87291e441e79393E: argument 0"} | |
!8 = distinct !{!8, !"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_internal17ha87291e441e79393E"} | |
!9 = !{!10, !12, !14, !16} | |
!10 = distinct !{!10, !11, !"_ZN4core4iter6traits8iterator8Iterator8try_fold17hfa38e98e7148366bE: %f"} | |
!11 = distinct !{!11, !"_ZN4core4iter6traits8iterator8Iterator8try_fold17hfa38e98e7148366bE"} | |
!12 = distinct !{!12, !13, !"_ZN94_$LT$core..iter..adapters..Take$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h42c9ba6199d0fd3fE: %fold"} | |
!13 = distinct !{!13, !"_ZN94_$LT$core..iter..adapters..Take$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h42c9ba6199d0fd3fE"} | |
!14 = distinct !{!14, !15, !"_ZN4core4iter6traits8iterator8Iterator4fold17h110587aad388228fE: %f"} | |
!15 = distinct !{!15, !"_ZN4core4iter6traits8iterator8Iterator4fold17h110587aad388228fE"} | |
!16 = distinct !{!16, !17, !"_ZN4core4iter6traits8iterator8Iterator8for_each17h174d03d937a402faE: %f"} | |
!17 = distinct !{!17, !"_ZN4core4iter6traits8iterator8Iterator8for_each17h174d03d937a402faE"} | |
!18 = !{!19} | |
!19 = distinct !{!19, !20, !"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_internal17ha87291e441e79393E: argument 0"} | |
!20 = distinct !{!20, !"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_internal17ha87291e441e79393E"} | |
!21 = !{!22, !24, !26, !28} | |
!22 = distinct !{!22, !23, !"_ZN4core4iter6traits8iterator8Iterator8try_fold17hfa38e98e7148366bE: %f"} | |
!23 = distinct !{!23, !"_ZN4core4iter6traits8iterator8Iterator8try_fold17hfa38e98e7148366bE"} | |
!24 = distinct !{!24, !25, !"_ZN94_$LT$core..iter..adapters..Take$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h42c9ba6199d0fd3fE: %fold"} | |
!25 = distinct !{!25, !"_ZN94_$LT$core..iter..adapters..Take$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h42c9ba6199d0fd3fE"} | |
!26 = distinct !{!26, !27, !"_ZN4core4iter6traits8iterator8Iterator4fold17h110587aad388228fE: %f"} | |
!27 = distinct !{!27, !"_ZN4core4iter6traits8iterator8Iterator4fold17h110587aad388228fE"} | |
!28 = distinct !{!28, !29, !"_ZN4core4iter6traits8iterator8Iterator8for_each17h174d03d937a402faE: %f"} | |
!29 = distinct !{!29, !"_ZN4core4iter6traits8iterator8Iterator8for_each17h174d03d937a402faE"} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment