Skip to content

Instantly share code, notes, and snippets.

@dfyz
Created February 23, 2020 03:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dfyz/c95cc29dd8f1d77f2d808292536e0df4 to your computer and use it in GitHub Desktop.
Save dfyz/c95cc29dd8f1d77f2d808292536e0df4 to your computer and use it in GitHub Desktop.
; 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