Skip to content

Instantly share code, notes, and snippets.

@alexcrichton
Created February 14, 2018 19:45
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 alexcrichton/ac88a4a59576aeff929d568f16c5114d to your computer and use it in GitHub Desktop.
Save alexcrichton/ac88a4a59576aeff929d568f16c5114d to your computer and use it in GitHub Desktop.
; ModuleID = '<stdin>'
source_filename = "bad_position_simple0-317d481089b8c8fe83113de504472633.rs"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
%"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] }
; Function Attrs: uwtable
define hidden void @_ZN19bad_position_simple4test21import_path_to_string17h099030e197a06397E([0 x i32]* noalias nonnull readonly, i64) unnamed_addr #0 personality i32 (i32, i32, i64, %"unwind::libunwind::_Unwind_Exception"*, %"unwind::libunwind::_Unwind_Context"*)* @rust_eh_personality {
%3 = getelementptr inbounds [0 x i32], [0 x i32]* %0, i64 0, i64 0
%4 = getelementptr inbounds [0 x i32], [0 x i32]* %0, i64 0, i64 %1
%5 = ptrtoint i32* %4 to i64
%6 = shl nuw i64 %1, 2
%7 = sdiv i64 %6, 4
%8 = icmp ugt i64 %7, 3
br i1 %8, label %.preheader43, label %.loopexit27
.preheader43: ; preds = %2
br label %17
; <label>:9: ; preds = %36
%10 = ptrtoint i32* %42 to i64
%11 = sub i64 %5, %10
%12 = sdiv i64 %11, 4
%13 = icmp ugt i64 %12, 3
br i1 %13, label %17, label %.loopexit27
.loopexit27: ; preds = %9, %2
%14 = phi i32* [ %3, %2 ], [ %42, %9 ]
%15 = phi i64 [ 0, %2 ], [ %41, %9 ]
%16 = icmp eq i32* %14, %4
br i1 %16, label %.loopexit, label %.preheader
.preheader: ; preds = %.loopexit27
br label %43
; <label>:17: ; preds = %.preheader43, %9
%18 = phi i64 [ %41, %9 ], [ 0, %.preheader43 ]
%19 = phi i32* [ %42, %9 ], [ %3, %.preheader43 ]
%20 = load i32, i32* %19, align 4, !alias.scope !0, !noalias !5
%21 = icmp eq i32 %20, 1
%22 = zext i1 %21 to i64
%23 = add i64 %18, %22
br i1 %21, label %24, label %.thread
; <label>:24: ; preds = %17
%25 = getelementptr inbounds i32, i32* %19, i64 1
%26 = load i32, i32* %25, align 4, !alias.scope !11, !noalias !16
%27 = icmp eq i32 %26, 1
%28 = zext i1 %27 to i64
%29 = add i64 %23, %28
br i1 %27, label %30, label %.thread
; <label>:30: ; preds = %24
%31 = getelementptr inbounds i32, i32* %19, i64 2
%32 = load i32, i32* %31, align 4, !alias.scope !18, !noalias !23
%33 = icmp eq i32 %32, 1
%34 = zext i1 %33 to i64
%35 = add i64 %29, %34
br i1 %33, label %36, label %.thread
; <label>:36: ; preds = %30
%37 = getelementptr inbounds i32, i32* %19, i64 3
%38 = load i32, i32* %37, align 4, !alias.scope !25, !noalias !30
%39 = icmp eq i32 %38, 1
%40 = zext i1 %39 to i64
%41 = add i64 %35, %40
%42 = getelementptr inbounds i32, i32* %19, i64 4
br i1 %39, label %9, label %.thread
; <label>:43: ; preds = %.preheader, %51
%44 = phi i64 [ %50, %51 ], [ %15, %.preheader ]
%45 = phi i32* [ %46, %51 ], [ %14, %.preheader ]
%46 = getelementptr inbounds i32, i32* %45, i64 1
%47 = load i32, i32* %45, align 4, !alias.scope !32, !noalias !37
%48 = icmp eq i32 %47, 1
%49 = zext i1 %48 to i64
%50 = add i64 %44, %49
br i1 %48, label %51, label %.thread
; <label>:51: ; preds = %43
%52 = icmp eq i32* %46, %4
br i1 %52, label %.loopexit, label %43
.thread: ; preds = %36, %30, %24, %17, %43
%.sroa.7.0.ph = phi i64 [ %50, %43 ], [ %23, %17 ], [ %29, %24 ], [ %35, %30 ], [ %41, %36 ]
%53 = icmp ult i64 %.sroa.7.0.ph, %1
tail call void @llvm.assume(i1 %53) #2, !noalias !39
%54 = add i64 %.sroa.7.0.ph, 1
br label %66
.loopexit: ; preds = %51, %.loopexit27
%55 = icmp eq i64 %1, 0
br i1 %55, label %56, label %66
; <label>:56: ; preds = %66, %.loopexit
%57 = phi i1 [ false, %66 ], [ true, %.loopexit ]
%58 = phi i64 [ %67, %66 ], [ 0, %.loopexit ]
%59 = phi i64 [ %68, %66 ], [ undef, %.loopexit ]
br label %60
; <label>:60: ; preds = %66, %56
%61 = phi i1 [ %57, %56 ], [ false, %66 ]
%62 = phi i64 [ %58, %56 ], [ %67, %66 ]
%63 = phi i64 [ %59, %56 ], [ %68, %66 ]
%64 = phi i1 [ false, %56 ], [ true, %66 ]
%65 = icmp eq i64 %62, 1
br i1 %65, label %72, label %71
; <label>:66: ; preds = %.loopexit, %.thread
%67 = phi i64 [ 1, %.thread ], [ 0, %.loopexit ]
%68 = phi i64 [ %54, %.thread ], [ undef, %.loopexit ]
%69 = load i32, i32* %3, align 4
%70 = icmp eq i32 %69, 1
br i1 %70, label %60, label %56
; <label>:71: ; preds = %60
br i1 %64, label %79, label %83
; <label>:72: ; preds = %60
%73 = icmp ugt i64 %63, %1
br i1 %64, label %75, label %77
; <label>:74: ; preds = %86, %83, %77, %75
ret void
; <label>:75: ; preds = %72
br i1 %73, label %76, label %74
; <label>:76: ; preds = %75
tail call void @_ZN4core5slice20slice_index_len_fail17h41ae248f36c196f1E(i64 %63, i64 %1)
unreachable
; <label>:77: ; preds = %72
br i1 %73, label %78, label %74
; <label>:78: ; preds = %77
tail call void @_ZN4core5slice20slice_index_len_fail17h41ae248f36c196f1E(i64 %63, i64 %1)
unreachable
; <label>:79: ; preds = %71
br i1 %61, label %80, label %81
; <label>:80: ; preds = %79
tail call void @_ZN4core5slice22slice_index_order_fail17hd0a9eb5d87471258E(i64 1, i64 0)
unreachable
; <label>:81: ; preds = %79
%82 = add i64 %1, -1
br label %83
; <label>:83: ; preds = %81, %71
%84 = phi i64 [ %82, %81 ], [ %1, %71 ]
%85 = icmp eq i64 %84, 0
br i1 %85, label %74, label %86
; <label>:86: ; preds = %83
tail call void @_ZN19bad_position_simple3foo3foo17h0d3289c3fdce124fE(i64 %84)
br label %74
}
declare i32 @rust_eh_personality(i32, i32, i64, %"unwind::libunwind::_Unwind_Exception"*, %"unwind::libunwind::_Unwind_Context"*) unnamed_addr #1
; Function Attrs: nounwind
declare void @llvm.assume(i1) #2
; Function Attrs: cold noinline noreturn
declare void @_ZN4core5slice22slice_index_order_fail17hd0a9eb5d87471258E(i64, i64) unnamed_addr #3
; Function Attrs: cold noinline noreturn
declare void @_ZN4core5slice20slice_index_len_fail17h41ae248f36c196f1E(i64, i64) unnamed_addr #3
; Function Attrs: cold noinline
declare hidden void @_ZN19bad_position_simple3foo3foo17h0d3289c3fdce124fE(i64) unnamed_addr #4
attributes #0 = { uwtable "probe-stack"="__rust_probestack" }
attributes #1 = { "probe-stack"="__rust_probestack" }
attributes #2 = { nounwind }
attributes #3 = { cold noinline noreturn "probe-stack"="__rust_probestack" }
attributes #4 = { cold noinline "probe-stack"="__rust_probestack" }
!0 = !{!1, !3}
!1 = distinct !{!1, !2, !"_ZN19bad_position_simple4test21import_path_to_string28_$u7b$$u7b$closure$u7d$$u7d$17hfb8fd737bf1a9981E: argument 0"}
!2 = distinct !{!2, !"_ZN19bad_position_simple4test21import_path_to_string28_$u7b$$u7b$closure$u7d$$u7d$17hfb8fd737bf1a9981E"}
!3 = distinct !{!3, !4, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17ha78aa30fa5aeecc6E: argument 1"}
!4 = distinct !{!4, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17ha78aa30fa5aeecc6E"}
!5 = !{!6, !7, !9}
!6 = distinct !{!6, !4, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17ha78aa30fa5aeecc6E: argument 0"}
!7 = distinct !{!7, !8, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8try_fold17he6b3066925144076E: argument 0"}
!8 = distinct !{!8, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8try_fold17he6b3066925144076E"}
!9 = distinct !{!9, !10, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position17h8b58346f55ecd752E: argument 0"}
!10 = distinct !{!10, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position17h8b58346f55ecd752E"}
!11 = !{!12, !14}
!12 = distinct !{!12, !13, !"_ZN19bad_position_simple4test21import_path_to_string28_$u7b$$u7b$closure$u7d$$u7d$17hfb8fd737bf1a9981E: argument 0"}
!13 = distinct !{!13, !"_ZN19bad_position_simple4test21import_path_to_string28_$u7b$$u7b$closure$u7d$$u7d$17hfb8fd737bf1a9981E"}
!14 = distinct !{!14, !15, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17ha78aa30fa5aeecc6E: argument 1"}
!15 = distinct !{!15, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17ha78aa30fa5aeecc6E"}
!16 = !{!17, !7, !9}
!17 = distinct !{!17, !15, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17ha78aa30fa5aeecc6E: argument 0"}
!18 = !{!19, !21}
!19 = distinct !{!19, !20, !"_ZN19bad_position_simple4test21import_path_to_string28_$u7b$$u7b$closure$u7d$$u7d$17hfb8fd737bf1a9981E: argument 0"}
!20 = distinct !{!20, !"_ZN19bad_position_simple4test21import_path_to_string28_$u7b$$u7b$closure$u7d$$u7d$17hfb8fd737bf1a9981E"}
!21 = distinct !{!21, !22, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17ha78aa30fa5aeecc6E: argument 1"}
!22 = distinct !{!22, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17ha78aa30fa5aeecc6E"}
!23 = !{!24, !7, !9}
!24 = distinct !{!24, !22, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17ha78aa30fa5aeecc6E: argument 0"}
!25 = !{!26, !28}
!26 = distinct !{!26, !27, !"_ZN19bad_position_simple4test21import_path_to_string28_$u7b$$u7b$closure$u7d$$u7d$17hfb8fd737bf1a9981E: argument 0"}
!27 = distinct !{!27, !"_ZN19bad_position_simple4test21import_path_to_string28_$u7b$$u7b$closure$u7d$$u7d$17hfb8fd737bf1a9981E"}
!28 = distinct !{!28, !29, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17ha78aa30fa5aeecc6E: argument 1"}
!29 = distinct !{!29, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17ha78aa30fa5aeecc6E"}
!30 = !{!31, !7, !9}
!31 = distinct !{!31, !29, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17ha78aa30fa5aeecc6E: argument 0"}
!32 = !{!33, !35}
!33 = distinct !{!33, !34, !"_ZN19bad_position_simple4test21import_path_to_string28_$u7b$$u7b$closure$u7d$$u7d$17hfb8fd737bf1a9981E: argument 0"}
!34 = distinct !{!34, !"_ZN19bad_position_simple4test21import_path_to_string28_$u7b$$u7b$closure$u7d$$u7d$17hfb8fd737bf1a9981E"}
!35 = distinct !{!35, !36, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17ha78aa30fa5aeecc6E: argument 1"}
!36 = distinct !{!36, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17ha78aa30fa5aeecc6E"}
!37 = !{!38, !7, !9}
!38 = distinct !{!38, !36, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17ha78aa30fa5aeecc6E: argument 0"}
!39 = !{!40, !42, !44, !45, !9}
!40 = distinct !{!40, !41, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17hf597cb41b063d103E: argument 0"}
!41 = distinct !{!41, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17hf597cb41b063d103E"}
!42 = distinct !{!42, !43, !"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$3map17ha98ac76136c43306E: argument 0"}
!43 = distinct !{!43, !"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$3map17ha98ac76136c43306E"}
!44 = distinct !{!44, !43, !"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$3map17ha98ac76136c43306E: argument 1"}
!45 = distinct !{!45, !43, !"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$3map17ha98ac76136c43306E: argument 2"}
; ModuleID = '<stdin>'
source_filename = "bad_position_simple0-317d481089b8c8fe83113de504472633.rs"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
%"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] }
; Function Attrs: uwtable
define hidden void @_ZN19bad_position_simple4test21import_path_to_string17h099030e197a06397E([0 x i32]* noalias nonnull readonly, i64) unnamed_addr #0 personality i32 (i32, i32, i64, %"unwind::libunwind::_Unwind_Exception"*, %"unwind::libunwind::_Unwind_Context"*)* @rust_eh_personality {
%3 = getelementptr inbounds [0 x i32], [0 x i32]* %0, i64 0, i64 0
%4 = getelementptr inbounds [0 x i32], [0 x i32]* %0, i64 0, i64 %1
%5 = ptrtoint i32* %4 to i64
%6 = shl nuw i64 %1, 2
%7 = sdiv i64 %6, 4
%8 = icmp ugt i64 %7, 3
br i1 %8, label %.preheader45, label %.loopexit28
.preheader45: ; preds = %2
br label %17
; <label>:9: ; preds = %36
%10 = ptrtoint i32* %42 to i64
%11 = sub i64 %5, %10
%12 = sdiv i64 %11, 4
%13 = icmp ugt i64 %12, 3
br i1 %13, label %17, label %.loopexit28
.loopexit28: ; preds = %9, %2
%14 = phi i32* [ %3, %2 ], [ %42, %9 ]
%15 = phi i64 [ 0, %2 ], [ %41, %9 ]
%16 = icmp eq i32* %14, %4
br i1 %16, label %.loopexit36, label %.preheader
.preheader: ; preds = %.loopexit28
br label %43
; <label>:17: ; preds = %.preheader45, %9
%18 = phi i64 [ %41, %9 ], [ 0, %.preheader45 ]
%19 = phi i32* [ %42, %9 ], [ %3, %.preheader45 ]
%20 = load i32, i32* %19, align 4, !alias.scope !0, !noalias !5
%21 = icmp eq i32 %20, 1
%22 = zext i1 %21 to i64
%23 = add i64 %18, %22
br i1 %21, label %24, label %.loopexit
; <label>:24: ; preds = %17
%25 = getelementptr inbounds i32, i32* %19, i64 1
%26 = load i32, i32* %25, align 4, !alias.scope !11, !noalias !16
%27 = icmp eq i32 %26, 1
%28 = zext i1 %27 to i64
%29 = add i64 %23, %28
br i1 %27, label %30, label %.loopexit
; <label>:30: ; preds = %24
%31 = getelementptr inbounds i32, i32* %19, i64 2
%32 = load i32, i32* %31, align 4, !alias.scope !18, !noalias !23
%33 = icmp eq i32 %32, 1
%34 = zext i1 %33 to i64
%35 = add i64 %29, %34
br i1 %33, label %36, label %.loopexit
; <label>:36: ; preds = %30
%37 = getelementptr inbounds i32, i32* %19, i64 3
%38 = load i32, i32* %37, align 4, !alias.scope !25, !noalias !30
%39 = icmp eq i32 %38, 1
%40 = zext i1 %39 to i64
%41 = add i64 %35, %40
%42 = getelementptr inbounds i32, i32* %19, i64 4
br i1 %39, label %9, label %.loopexit
; <label>:43: ; preds = %.preheader, %51
%44 = phi i64 [ %50, %51 ], [ %15, %.preheader ]
%45 = phi i32* [ %46, %51 ], [ %14, %.preheader ]
%46 = getelementptr inbounds i32, i32* %45, i64 1
%47 = load i32, i32* %45, align 4, !alias.scope !32, !noalias !37
%48 = icmp eq i32 %47, 1
%49 = zext i1 %48 to i64
%50 = add i64 %44, %49
br i1 %48, label %51, label %.loopexit
; <label>:51: ; preds = %43
%52 = icmp eq i32* %46, %4
br i1 %52, label %.loopexit36, label %43
.loopexit36: ; preds = %51, %.loopexit28
%53 = load i32, i32* %3, align 4
%54 = icmp eq i32 %53, 1
br i1 %54, label %65, label %.thread26
.loopexit: ; preds = %36, %30, %24, %17, %43
%.sroa.7.0.ph = phi i64 [ %50, %43 ], [ %23, %17 ], [ %29, %24 ], [ %35, %30 ], [ %41, %36 ]
%55 = icmp ult i64 %.sroa.7.0.ph, %1
tail call void @llvm.assume(i1 %55) #2, !noalias !39
%56 = add i64 %.sroa.7.0.ph, 1
%57 = load i32, i32* %3, align 4
%58 = icmp eq i32 %57, 1
%59 = icmp ugt i64 %56, %1
br i1 %58, label %61, label %63
; <label>:60: ; preds = %.thread26, %65, %63, %61
ret void
; <label>:61: ; preds = %.loopexit
br i1 %59, label %62, label %60
; <label>:62: ; preds = %61
tail call void @_ZN4core5slice20slice_index_len_fail17h41ae248f36c196f1E(i64 %56, i64 %1)
unreachable
; <label>:63: ; preds = %.loopexit
br i1 %59, label %64, label %60
; <label>:64: ; preds = %63
tail call void @_ZN4core5slice20slice_index_len_fail17h41ae248f36c196f1E(i64 %56, i64 %1)
unreachable
; <label>:65: ; preds = %.loopexit36
%66 = add i64 %1, -1
%67 = icmp eq i64 %66, 0
br i1 %67, label %60, label %.thread26
.thread26: ; preds = %.loopexit36, %65
%68 = phi i64 [ %66, %65 ], [ %1, %.loopexit36 ]
tail call void @_ZN19bad_position_simple3foo3foo17h0d3289c3fdce124fE(i64 %68)
br label %60
}
declare i32 @rust_eh_personality(i32, i32, i64, %"unwind::libunwind::_Unwind_Exception"*, %"unwind::libunwind::_Unwind_Context"*) unnamed_addr #1
; Function Attrs: nounwind
declare void @llvm.assume(i1) #2
; Function Attrs: cold noinline noreturn
declare void @_ZN4core5slice20slice_index_len_fail17h41ae248f36c196f1E(i64, i64) unnamed_addr #3
; Function Attrs: cold noinline
declare hidden void @_ZN19bad_position_simple3foo3foo17h0d3289c3fdce124fE(i64) unnamed_addr #4
attributes #0 = { uwtable "probe-stack"="__rust_probestack" }
attributes #1 = { "probe-stack"="__rust_probestack" }
attributes #2 = { nounwind }
attributes #3 = { cold noinline noreturn "probe-stack"="__rust_probestack" }
attributes #4 = { cold noinline "probe-stack"="__rust_probestack" }
!0 = !{!1, !3}
!1 = distinct !{!1, !2, !"_ZN19bad_position_simple4test21import_path_to_string28_$u7b$$u7b$closure$u7d$$u7d$17hfb8fd737bf1a9981E: argument 0"}
!2 = distinct !{!2, !"_ZN19bad_position_simple4test21import_path_to_string28_$u7b$$u7b$closure$u7d$$u7d$17hfb8fd737bf1a9981E"}
!3 = distinct !{!3, !4, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17ha78aa30fa5aeecc6E: argument 1"}
!4 = distinct !{!4, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17ha78aa30fa5aeecc6E"}
!5 = !{!6, !7, !9}
!6 = distinct !{!6, !4, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17ha78aa30fa5aeecc6E: argument 0"}
!7 = distinct !{!7, !8, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8try_fold17he6b3066925144076E: argument 0"}
!8 = distinct !{!8, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8try_fold17he6b3066925144076E"}
!9 = distinct !{!9, !10, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position17h8b58346f55ecd752E: argument 0"}
!10 = distinct !{!10, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position17h8b58346f55ecd752E"}
!11 = !{!12, !14}
!12 = distinct !{!12, !13, !"_ZN19bad_position_simple4test21import_path_to_string28_$u7b$$u7b$closure$u7d$$u7d$17hfb8fd737bf1a9981E: argument 0"}
!13 = distinct !{!13, !"_ZN19bad_position_simple4test21import_path_to_string28_$u7b$$u7b$closure$u7d$$u7d$17hfb8fd737bf1a9981E"}
!14 = distinct !{!14, !15, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17ha78aa30fa5aeecc6E: argument 1"}
!15 = distinct !{!15, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17ha78aa30fa5aeecc6E"}
!16 = !{!17, !7, !9}
!17 = distinct !{!17, !15, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17ha78aa30fa5aeecc6E: argument 0"}
!18 = !{!19, !21}
!19 = distinct !{!19, !20, !"_ZN19bad_position_simple4test21import_path_to_string28_$u7b$$u7b$closure$u7d$$u7d$17hfb8fd737bf1a9981E: argument 0"}
!20 = distinct !{!20, !"_ZN19bad_position_simple4test21import_path_to_string28_$u7b$$u7b$closure$u7d$$u7d$17hfb8fd737bf1a9981E"}
!21 = distinct !{!21, !22, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17ha78aa30fa5aeecc6E: argument 1"}
!22 = distinct !{!22, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17ha78aa30fa5aeecc6E"}
!23 = !{!24, !7, !9}
!24 = distinct !{!24, !22, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17ha78aa30fa5aeecc6E: argument 0"}
!25 = !{!26, !28}
!26 = distinct !{!26, !27, !"_ZN19bad_position_simple4test21import_path_to_string28_$u7b$$u7b$closure$u7d$$u7d$17hfb8fd737bf1a9981E: argument 0"}
!27 = distinct !{!27, !"_ZN19bad_position_simple4test21import_path_to_string28_$u7b$$u7b$closure$u7d$$u7d$17hfb8fd737bf1a9981E"}
!28 = distinct !{!28, !29, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17ha78aa30fa5aeecc6E: argument 1"}
!29 = distinct !{!29, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17ha78aa30fa5aeecc6E"}
!30 = !{!31, !7, !9}
!31 = distinct !{!31, !29, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17ha78aa30fa5aeecc6E: argument 0"}
!32 = !{!33, !35}
!33 = distinct !{!33, !34, !"_ZN19bad_position_simple4test21import_path_to_string28_$u7b$$u7b$closure$u7d$$u7d$17hfb8fd737bf1a9981E: argument 0"}
!34 = distinct !{!34, !"_ZN19bad_position_simple4test21import_path_to_string28_$u7b$$u7b$closure$u7d$$u7d$17hfb8fd737bf1a9981E"}
!35 = distinct !{!35, !36, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17ha78aa30fa5aeecc6E: argument 1"}
!36 = distinct !{!36, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17ha78aa30fa5aeecc6E"}
!37 = !{!38, !7, !9}
!38 = distinct !{!38, !36, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17ha78aa30fa5aeecc6E: argument 0"}
!39 = !{!40, !42, !44, !45, !9}
!40 = distinct !{!40, !41, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17hf597cb41b063d103E: argument 0"}
!41 = distinct !{!41, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17hf597cb41b063d103E"}
!42 = distinct !{!42, !43, !"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$3map17ha98ac76136c43306E: argument 0"}
!43 = distinct !{!43, !"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$3map17ha98ac76136c43306E"}
!44 = distinct !{!44, !43, !"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$3map17ha98ac76136c43306E: argument 1"}
!45 = distinct !{!45, !43, !"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$3map17ha98ac76136c43306E: argument 2"}
--- glibc-2.23.ll 2018-02-14 11:45:07.618359143 -0800
+++ glibc-2.26.ll 2018-02-14 11:45:12.226430538 -0800
@@ -14,9 +14,9 @@
%6 = shl nuw i64 %1, 2
%7 = sdiv i64 %6, 4
%8 = icmp ugt i64 %7, 3
- br i1 %8, label %.preheader43, label %.loopexit27
+ br i1 %8, label %.preheader45, label %.loopexit28
-.preheader43: ; preds = %2
+.preheader45: ; preds = %2
br label %17
; <label>:9: ; preds = %36
@@ -24,25 +24,25 @@
%11 = sub i64 %5, %10
%12 = sdiv i64 %11, 4
%13 = icmp ugt i64 %12, 3
- br i1 %13, label %17, label %.loopexit27
+ br i1 %13, label %17, label %.loopexit28
-.loopexit27: ; preds = %9, %2
+.loopexit28: ; preds = %9, %2
%14 = phi i32* [ %3, %2 ], [ %42, %9 ]
%15 = phi i64 [ 0, %2 ], [ %41, %9 ]
%16 = icmp eq i32* %14, %4
- br i1 %16, label %.loopexit, label %.preheader
+ br i1 %16, label %.loopexit36, label %.preheader
-.preheader: ; preds = %.loopexit27
+.preheader: ; preds = %.loopexit28
br label %43
-; <label>:17: ; preds = %.preheader43, %9
- %18 = phi i64 [ %41, %9 ], [ 0, %.preheader43 ]
- %19 = phi i32* [ %42, %9 ], [ %3, %.preheader43 ]
+; <label>:17: ; preds = %.preheader45, %9
+ %18 = phi i64 [ %41, %9 ], [ 0, %.preheader45 ]
+ %19 = phi i32* [ %42, %9 ], [ %3, %.preheader45 ]
%20 = load i32, i32* %19, align 4, !alias.scope !0, !noalias !5
%21 = icmp eq i32 %20, 1
%22 = zext i1 %21 to i64
%23 = add i64 %18, %22
- br i1 %21, label %24, label %.thread
+ br i1 %21, label %24, label %.loopexit
; <label>:24: ; preds = %17
%25 = getelementptr inbounds i32, i32* %19, i64 1
@@ -50,7 +50,7 @@
%27 = icmp eq i32 %26, 1
%28 = zext i1 %27 to i64
%29 = add i64 %23, %28
- br i1 %27, label %30, label %.thread
+ br i1 %27, label %30, label %.loopexit
; <label>:30: ; preds = %24
%31 = getelementptr inbounds i32, i32* %19, i64 2
@@ -58,7 +58,7 @@
%33 = icmp eq i32 %32, 1
%34 = zext i1 %33 to i64
%35 = add i64 %29, %34
- br i1 %33, label %36, label %.thread
+ br i1 %33, label %36, label %.loopexit
; <label>:36: ; preds = %30
%37 = getelementptr inbounds i32, i32* %19, i64 3
@@ -67,7 +67,7 @@
%40 = zext i1 %39 to i64
%41 = add i64 %35, %40
%42 = getelementptr inbounds i32, i32* %19, i64 4
- br i1 %39, label %9, label %.thread
+ br i1 %39, label %9, label %.loopexit
; <label>:43: ; preds = %.preheader, %51
%44 = phi i64 [ %50, %51 ], [ %15, %.preheader ]
@@ -77,87 +77,53 @@
%48 = icmp eq i32 %47, 1
%49 = zext i1 %48 to i64
%50 = add i64 %44, %49
- br i1 %48, label %51, label %.thread
+ br i1 %48, label %51, label %.loopexit
; <label>:51: ; preds = %43
%52 = icmp eq i32* %46, %4
- br i1 %52, label %.loopexit, label %43
+ br i1 %52, label %.loopexit36, label %43
-.thread: ; preds = %36, %30, %24, %17, %43
- %.sroa.7.0.ph = phi i64 [ %50, %43 ], [ %23, %17 ], [ %29, %24 ], [ %35, %30 ], [ %41, %36 ]
- %53 = icmp ult i64 %.sroa.7.0.ph, %1
- tail call void @llvm.assume(i1 %53) #2, !noalias !39
- %54 = add i64 %.sroa.7.0.ph, 1
- br label %66
-
-.loopexit: ; preds = %51, %.loopexit27
- %55 = icmp eq i64 %1, 0
- br i1 %55, label %56, label %66
-
-; <label>:56: ; preds = %66, %.loopexit
- %57 = phi i1 [ false, %66 ], [ true, %.loopexit ]
- %58 = phi i64 [ %67, %66 ], [ 0, %.loopexit ]
- %59 = phi i64 [ %68, %66 ], [ undef, %.loopexit ]
- br label %60
+.loopexit36: ; preds = %51, %.loopexit28
+ %53 = load i32, i32* %3, align 4
+ %54 = icmp eq i32 %53, 1
+ br i1 %54, label %65, label %.thread26
-; <label>:60: ; preds = %66, %56
- %61 = phi i1 [ %57, %56 ], [ false, %66 ]
- %62 = phi i64 [ %58, %56 ], [ %67, %66 ]
- %63 = phi i64 [ %59, %56 ], [ %68, %66 ]
- %64 = phi i1 [ false, %56 ], [ true, %66 ]
- %65 = icmp eq i64 %62, 1
- br i1 %65, label %72, label %71
-
-; <label>:66: ; preds = %.loopexit, %.thread
- %67 = phi i64 [ 1, %.thread ], [ 0, %.loopexit ]
- %68 = phi i64 [ %54, %.thread ], [ undef, %.loopexit ]
- %69 = load i32, i32* %3, align 4
- %70 = icmp eq i32 %69, 1
- br i1 %70, label %60, label %56
-
-; <label>:71: ; preds = %60
- br i1 %64, label %79, label %83
-
-; <label>:72: ; preds = %60
- %73 = icmp ugt i64 %63, %1
- br i1 %64, label %75, label %77
+.loopexit: ; preds = %36, %30, %24, %17, %43
+ %.sroa.7.0.ph = phi i64 [ %50, %43 ], [ %23, %17 ], [ %29, %24 ], [ %35, %30 ], [ %41, %36 ]
+ %55 = icmp ult i64 %.sroa.7.0.ph, %1
+ tail call void @llvm.assume(i1 %55) #2, !noalias !39
+ %56 = add i64 %.sroa.7.0.ph, 1
+ %57 = load i32, i32* %3, align 4
+ %58 = icmp eq i32 %57, 1
+ %59 = icmp ugt i64 %56, %1
+ br i1 %58, label %61, label %63
-; <label>:74: ; preds = %86, %83, %77, %75
+; <label>:60: ; preds = %.thread26, %65, %63, %61
ret void
-; <label>:75: ; preds = %72
- br i1 %73, label %76, label %74
+; <label>:61: ; preds = %.loopexit
+ br i1 %59, label %62, label %60
-; <label>:76: ; preds = %75
- tail call void @_ZN4core5slice20slice_index_len_fail17h41ae248f36c196f1E(i64 %63, i64 %1)
+; <label>:62: ; preds = %61
+ tail call void @_ZN4core5slice20slice_index_len_fail17h41ae248f36c196f1E(i64 %56, i64 %1)
unreachable
-; <label>:77: ; preds = %72
- br i1 %73, label %78, label %74
+; <label>:63: ; preds = %.loopexit
+ br i1 %59, label %64, label %60
-; <label>:78: ; preds = %77
- tail call void @_ZN4core5slice20slice_index_len_fail17h41ae248f36c196f1E(i64 %63, i64 %1)
+; <label>:64: ; preds = %63
+ tail call void @_ZN4core5slice20slice_index_len_fail17h41ae248f36c196f1E(i64 %56, i64 %1)
unreachable
-; <label>:79: ; preds = %71
- br i1 %61, label %80, label %81
-
-; <label>:80: ; preds = %79
- tail call void @_ZN4core5slice22slice_index_order_fail17hd0a9eb5d87471258E(i64 1, i64 0)
- unreachable
-
-; <label>:81: ; preds = %79
- %82 = add i64 %1, -1
- br label %83
-
-; <label>:83: ; preds = %81, %71
- %84 = phi i64 [ %82, %81 ], [ %1, %71 ]
- %85 = icmp eq i64 %84, 0
- br i1 %85, label %74, label %86
-
-; <label>:86: ; preds = %83
- tail call void @_ZN19bad_position_simple3foo3foo17h0d3289c3fdce124fE(i64 %84)
- br label %74
+; <label>:65: ; preds = %.loopexit36
+ %66 = add i64 %1, -1
+ %67 = icmp eq i64 %66, 0
+ br i1 %67, label %60, label %.thread26
+
+.thread26: ; preds = %.loopexit36, %65
+ %68 = phi i64 [ %66, %65 ], [ %1, %.loopexit36 ]
+ tail call void @_ZN19bad_position_simple3foo3foo17h0d3289c3fdce124fE(i64 %68)
+ br label %60
}
declare i32 @rust_eh_personality(i32, i32, i64, %"unwind::libunwind::_Unwind_Exception"*, %"unwind::libunwind::_Unwind_Context"*) unnamed_addr #1
@@ -166,9 +132,6 @@
declare void @llvm.assume(i1) #2
; Function Attrs: cold noinline noreturn
-declare void @_ZN4core5slice22slice_index_order_fail17hd0a9eb5d87471258E(i64, i64) unnamed_addr #3
-
-; Function Attrs: cold noinline noreturn
declare void @_ZN4core5slice20slice_index_len_fail17h41ae248f36c196f1E(i64, i64) unnamed_addr #3
; Function Attrs: cold noinline
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment