Created
February 14, 2018 19:45
-
-
Save alexcrichton/ac88a4a59576aeff929d568f16c5114d 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 = '<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"} |
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 = '<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"} |
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
--- 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