Skip to content

Instantly share code, notes, and snippets.

@Aatch
Last active August 29, 2015 14:13
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 Aatch/3786d20df2edaad6a0e8 to your computer and use it in GitHub Desktop.
Save Aatch/3786d20df2edaad6a0e8 to your computer and use it in GitHub Desktop.
; Function Attrs: noinline uwtable
define void @_ZN3foo20ha8463975d9fed9eefaaE(%"struct.alloc::rc::Rc<[\22collections::vec::Vec<usize>\22]>[#5]"* noalias nocapture readonly dereferenceable(8)) unnamed_addr #0 {
entry-block:
%1 = getelementptr inbounds %"struct.alloc::rc::Rc<[\22collections::vec::Vec<usize>\22]>[#5]"* %0, i64 0, i32 0, i32 0
%2 = load %"struct.alloc::rc::RcBox<[\22collections::vec::Vec<usize>\22]>[#5]"** %1, align 8, !alias.scope !0
%3 = getelementptr inbounds %"struct.alloc::rc::RcBox<[\22collections::vec::Vec<usize>\22]>[#5]"* %2, i64 0, i32 1, i32 0, i32 0
%4 = load i64* %3, align 8, !noalias !5
%5 = icmp ne i64 %4, 0
tail call void @llvm.assume(i1 %5) #2, !noalias !0
%6 = add i64 %4, 1
store i64 %6, i64* %3, align 8, !noalias !0
%7 = icmp eq %"struct.alloc::rc::RcBox<[\22collections::vec::Vec<usize>\22]>[#5]"* %2, null
br i1 %7, label %_ZN3mem4drop20h3199242223757211078E.exit, label %then-block-49-.i.i.i
then-block-49-.i.i.i: ; preds = %entry-block
%8 = icmp ne i64 %6, 0
tail call void @llvm.assume(i1 %8) #2, !noalias !8
store i64 %4, i64* %3, align 8, !noalias !8
br label %_ZN3mem4drop20h3199242223757211078E.exit
_ZN3mem4drop20h3199242223757211078E.exit: ; preds = %then-block-49-.i.i.i, %entry-block
ret void
}
; Function Attrs: noinline uwtable
define void @_ZN3foo20ha8463975d9fed9eefaaE(%"struct.alloc::rc::Rc<[\22collections::vec::Vec<usize>\22]>[#5]"* noalias nocapture readonly dereferenceable(8)) unnamed_addr #0 {
_ZN3mem4drop21h12530899199219128837E.exit:
%1 = getelementptr inbounds %"struct.alloc::rc::Rc<[\22collections::vec::Vec<usize>\22]>[#5]"* %0, i64 0, i32 0, i32 0
%2 = load %"struct.alloc::rc::RcBox<[\22collections::vec::Vec<usize>\22]>[#5]"** %1, align 8, !alias.scope !0
%3 = icmp ne %"struct.alloc::rc::RcBox<[\22collections::vec::Vec<usize>\22]>[#5]"* %2, null
tail call void @llvm.assume(i1 %3) #2, !noalias !5
%4 = getelementptr inbounds %"struct.alloc::rc::RcBox<[\22collections::vec::Vec<usize>\22]>[#5]"* %2, i64 0, i32 1, i32 0, i32 0
%5 = load i64* %4, align 8, !noalias !10
%6 = icmp ne i64 %5, 0
tail call void @llvm.assume(i1 %6) #2, !noalias !0
tail call void @llvm.assume(i1 %3) #2, !noalias !11
%7 = icmp ne i64 %5, -1
tail call void @llvm.assume(i1 %7) #2, !noalias !14
ret void
}
_ZN3foo20ha8463975d9fed9eefaaE:
.cfi_startproc
retq
.Ltmp0:
.size _ZN3foo20ha8463975d9fed9eefaaE, .Ltmp0-_ZN3foo20ha8463975d9fed9eefaaE
.cfi_endproc
; Function Attrs: noinline uwtable
define void @_ZN3foo20h3cefd4f5b70bff8bfaaE(%"struct.alloc::rc::Rc<[\22collections::vec::Vec<usize>\22]>[#5]"* noalias nocapture readonly dereferenceable(8)) unnamed_addr #0 {
entry-block:
%1 = getelementptr inbounds %"struct.alloc::rc::Rc<[\22collections::vec::Vec<usize>\22]>[#5]"* %0, i64 0, i32 0, i32 0
%2 = load %"struct.alloc::rc::RcBox<[\22collections::vec::Vec<usize>\22]>[#5]"** %1, align 8, !alias.scope !0
%3 = getelementptr inbounds %"struct.alloc::rc::RcBox<[\22collections::vec::Vec<usize>\22]>[#5]"* %2, i64 0, i32 1, i32 0, i32 0
%4 = load i64* %3, align 8, !noalias !7
%5 = add i64 %4, 1
store i64 %5, i64* %3, align 8, !noalias !10
%6 = icmp eq %"struct.alloc::rc::RcBox<[\22collections::vec::Vec<usize>\22]>[#5]"* %2, null
br i1 %6, label %_ZN3mem4drop20h8577950066041749832E.exit, label %then-block-49-.i.i.i
then-block-49-.i.i.i: ; preds = %entry-block
store i64 %4, i64* %3, align 8, !noalias !11
%7 = icmp eq i64 %4, 0
br i1 %7, label %then-block-58-.i.i.i, label %_ZN3mem4drop20h8577950066041749832E.exit
then-block-58-.i.i.i: ; preds = %then-block-49-.i.i.i
%tmp.sroa.610.0..sroa_idx11.i.i.i.i = getelementptr inbounds %"struct.alloc::rc::RcBox<[\22collections::vec::Vec<usize>\22]>[#5]"* %2, i64 0, i32 0, i32 2
%tmp.sroa.610.0.copyload.i.i.i.i = load i64* %tmp.sroa.610.0..sroa_idx11.i.i.i.i, align 8, !noalias !16
%8 = icmp eq i64 %tmp.sroa.610.0.copyload.i.i.i.i, 0
br i1 %8, label %"_ZN34collections..vec..Vec$LT$usize$GT$14glue_drop.110717hed3d631d85b586f9E.exit.i.i.i", label %then-block-304-.i.i.i.i.i
then-block-304-.i.i.i.i.i: ; preds = %then-block-58-.i.i.i
%tmp.sroa.0.0..sroa_idx.i.i.i.i = getelementptr inbounds %"struct.alloc::rc::RcBox<[\22collections::vec::Vec<usize>\22]>[#5]"* %2, i64 0, i32 0, i32 0, i32 0
%tmp.sroa.0.0.copyload.i.i.i.i = load i64** %tmp.sroa.0.0..sroa_idx.i.i.i.i, align 8, !noalias !16
%9 = bitcast i64* %tmp.sroa.0.0.copyload.i.i.i.i to i8*
%10 = shl i64 %tmp.sroa.610.0.copyload.i.i.i.i, 3
tail call void @je_sdallocx(i8* %9, i64 %10, i32 0), !noalias !19
br label %"_ZN34collections..vec..Vec$LT$usize$GT$14glue_drop.110717hed3d631d85b586f9E.exit.i.i.i"
"_ZN34collections..vec..Vec$LT$usize$GT$14glue_drop.110717hed3d631d85b586f9E.exit.i.i.i": ; preds = %then-block-304-.i.i.i.i.i, %then-block-58-.i.i.i
%11 = getelementptr inbounds %"struct.alloc::rc::RcBox<[\22collections::vec::Vec<usize>\22]>[#5]"* %2, i64 0, i32 2, i32 0, i32 0
%12 = load i64* %11, align 8, !noalias !22
%13 = add i64 %12, -1
store i64 %13, i64* %11, align 8, !noalias !27
%14 = icmp eq i64 %13, 0
br i1 %14, label %then-block-74-.i.i.i, label %_ZN3mem4drop20h8577950066041749832E.exit
then-block-74-.i.i.i: ; preds = %"_ZN34collections..vec..Vec$LT$usize$GT$14glue_drop.110717hed3d631d85b586f9E.exit.i.i.i"
%15 = bitcast %"struct.alloc::rc::RcBox<[\22collections::vec::Vec<usize>\22]>[#5]"* %2 to i8*
tail call void @je_sdallocx(i8* %15, i64 40, i32 0), !noalias !28
br label %_ZN3mem4drop20h8577950066041749832E.exit
_ZN3mem4drop20h8577950066041749832E.exit: ; preds = %entry-block, %then-block-49-.i.i.i, %"_ZN34collections..vec..Vec$LT$usize$GT$14glue_drop.110717hed3d631d85b586f9E.exit.i.i.i", %then-block-74-.i.i.i
ret void
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment