Last active
April 27, 2019 20:33
-
-
Save vtjnash/192cab72a6cfc00256ff118238163b55 to your computer and use it in GitHub Desktop.
X86AvoidStoreForwardingBlocks bug
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 = 'print_to_string_module.ll' | |
source_filename = "show" | |
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128-ni:10:11:12:13" | |
target triple = "x86_64--linux-gnu" | |
%jl_value_t = type opaque | |
%jl_array_t = type { i8 addrspace(13)*, i64, i16, i16, i32 } | |
@llvm.compiler.used = appending global [2 x i8*] [i8* bitcast (%jl_value_t addrspace(10)* (i8*, i32, i32)* @jl_gc_pool_alloc to i8*), i8* bitcast (%jl_value_t addrspace(10)* (i8*, i64)* @jl_gc_big_alloc to i8*)], section "llvm.metadata" | |
; Function Attrs: noreturn nounwind | |
declare void @llvm.trap() #0 | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i1) #1 | |
; Function Attrs: noreturn | |
declare void @jl_throw(%jl_value_t addrspace(12)*) #2 | |
declare void @julia_print_15939(%jl_value_t addrspace(10)* nonnull align 8 dereferenceable(48), { i64, i64 } addrspace(11)* nocapture nonnull readonly dereferenceable(16)) | |
declare nonnull %jl_value_t addrspace(10)* @jl_invoke(%jl_value_t addrspace(10)*, %jl_value_t addrspace(10)**, i32) | |
declare %jl_value_t addrspace(10)* @jl_box_int64(i64 signext) | |
define nonnull %jl_value_t addrspace(10)* @julia_print_to_string_15938({ i64, i64 } addrspace(11)* nocapture nonnull readonly dereferenceable(16)) { | |
top: | |
%1 = alloca %jl_value_t addrspace(10)*, i32 4 | |
%gcframe = alloca %jl_value_t addrspace(10)*, i32 3 | |
%2 = bitcast %jl_value_t addrspace(10)** %gcframe to i8* | |
call void @llvm.memset.p0i8.i32(i8* %2, i8 0, i32 24, i1 false), !tbaa !2 | |
%.sroa.0 = alloca { i64, i64 }, align 8 | |
%3 = alloca { i64, i64 }, align 8 | |
%4 = alloca { i64, i64 }, align 8 | |
%5 = alloca { i64, i64 }, align 8 | |
%6 = alloca { i64, i64 }, align 8 | |
%thread_ptr = call i8* asm "movq %fs:0, $0", "=r"() | |
%ptls_i8 = getelementptr i8, i8* %thread_ptr, i64 -15560 | |
%ptls = bitcast i8* %ptls_i8 to %jl_value_t*** | |
%7 = bitcast %jl_value_t addrspace(10)** %gcframe to %jl_value_t addrspace(10)** | |
%8 = bitcast %jl_value_t addrspace(10)** %7 to i64* | |
store i64 2, i64* %8, !tbaa !2 | |
%9 = bitcast %jl_value_t*** %ptls to %jl_value_t*** | |
%10 = getelementptr %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %gcframe, i32 1 | |
%11 = bitcast %jl_value_t addrspace(10)** %10 to %jl_value_t*** | |
%12 = load %jl_value_t**, %jl_value_t*** %9 | |
store %jl_value_t** %12, %jl_value_t*** %11, !tbaa !2 | |
%13 = bitcast %jl_value_t*** %9 to %jl_value_t addrspace(10)*** | |
store %jl_value_t addrspace(10)** %gcframe, %jl_value_t addrspace(10)*** %13 | |
%xs = alloca [1 x { i64, i64 }], align 8 | |
%.sroa.0.0..sroa_cast = bitcast { i64, i64 } addrspace(11)* %0 to i8 addrspace(11)* | |
%xs21 = bitcast [1 x { i64, i64 }]* %xs to { i64, i64 }* | |
%xs2122 = bitcast { i64, i64 }* %xs21 to i8* | |
call void @llvm.memcpy.p0i8.p11i8.i64(i8* align 8 %xs2122, i8 addrspace(11)* align 1 %.sroa.0.0..sroa_cast, i64 16, i1 false) | |
br label %L3 | |
L3: ; preds = %L3, %top | |
%value_phi = phi i64 [ 0, %top ], [ %14, %L3 ] | |
%14 = add i64 %value_phi, 8 | |
%15 = icmp eq i64 %14, 0 | |
br i1 %15, label %L3, label %L29 | |
L29: ; preds = %L3 | |
%16 = bitcast [1 x { i64, i64 }]* %xs to i8* | |
%17 = call nonnull %jl_value_t addrspace(10)* @"julia_#IOBuffer#318_13748"(i8 1, i8 1, i8 1, i64 9223372036854775807, i64 %14, %jl_value_t addrspace(10)* addrspacecast (%jl_value_t* inttoptr (i64 140737123398080 to %jl_value_t*) to %jl_value_t addrspace(10)*)) | |
%.0..sroa_cast16 = bitcast { i64, i64 }* %3 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %.0..sroa_cast16) | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %.0..sroa_cast16, i8* align 8 %16, i64 16, i1 false) | |
br label %L41 | |
L41: ; preds = %L60, %L29 | |
%value_phi7 = phi i64 [ 2, %L29 ], [ %value_phi9, %L60 ] | |
%18 = bitcast { i64, i64 }* %3 to i8* | |
%19 = bitcast { i64, i64 }* %4 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %18, i64 16, i1 false) | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %18) | |
%20 = addrspacecast { i64, i64 }* %4 to { i64, i64 } addrspace(11)* | |
%21 = getelementptr %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %gcframe, i32 2 | |
store %jl_value_t addrspace(10)* %17, %jl_value_t addrspace(10)** %21 | |
call void @julia_print_15939(%jl_value_t addrspace(10)* %17, { i64, i64 } addrspace(11)* nocapture readonly %20) | |
%22 = icmp eq i64 %value_phi7, 1 | |
br i1 %22, label %L51, label %L55 | |
L51: ; preds = %L41 | |
%23 = add i64 %value_phi7, -1 | |
%24 = getelementptr inbounds [1 x { i64, i64 }], [1 x { i64, i64 }]* %xs, i64 0, i64 %23 | |
%25 = add i64 %value_phi7, 1 | |
%.0..sroa_cast14 = bitcast { i64, i64 }* %5 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %.0..sroa_cast14) | |
%26 = bitcast { i64, i64 }* %24 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %.0..sroa_cast14, i8* align 8 %26, i64 16, i1 false) | |
br label %L55 | |
L55: ; preds = %L51, %L41 | |
%value_phi9 = phi i64 [ %25, %L51 ], [ undef, %L41 ] | |
%value_phi10 = phi i1 [ false, %L51 ], [ true, %L41 ] | |
%27 = bitcast { i64, i64 }* %6 to i8* | |
%28 = bitcast { i64, i64 }* %5 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %27, i8* align 8 %28, i64 16, i1 false) | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %28) | |
br i1 %value_phi10, label %L61, label %L60 | |
L60: ; preds = %L55 | |
%29 = bitcast { i64, i64 }* %6 to i8* | |
%30 = bitcast { i64, i64 }* %3 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %30) | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %30, i8* align 8 %29, i64 16, i1 false) | |
br label %L41 | |
L61: ; preds = %L55 | |
%const = bitcast i64 140737343996960 to i64 | |
%31 = addrspacecast %jl_value_t addrspace(10)* %17 to %jl_value_t addrspace(11)* | |
%32 = bitcast %jl_value_t addrspace(11)* %31 to %jl_value_t addrspace(10)* addrspace(11)* | |
%33 = load %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %32, align 8, !tbaa !5, !nonnull !9, !dereferenceable !10, !align !11 | |
%34 = bitcast %jl_value_t addrspace(11)* %31 to i8 addrspace(11)* | |
%35 = getelementptr inbounds i8, i8 addrspace(11)* %34, i64 16 | |
%36 = bitcast i8 addrspace(11)* %35 to i64 addrspace(11)* | |
%37 = load i64, i64 addrspace(11)* %36, align 8, !tbaa !5 | |
%38 = addrspacecast %jl_value_t addrspace(10)* %33 to %jl_value_t addrspace(11)* | |
%39 = bitcast %jl_value_t addrspace(11)* %38 to %jl_array_t addrspace(11)* | |
%40 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %39, i64 0, i32 1 | |
%41 = load i64, i64 addrspace(11)* %40, align 8, !tbaa !12 | |
%42 = icmp slt i64 %41, %37 | |
br i1 %42, label %L66, label %L82 | |
L66: ; preds = %L61 | |
%43 = sub i64 %37, %41 | |
%44 = icmp sgt i64 %43, -1 | |
br i1 %44, label %L79, label %L71 | |
L71: ; preds = %L66 | |
%45 = call %jl_value_t addrspace(10)* @jl_box_int64(i64 signext %43) | |
%46 = getelementptr %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %gcframe, i32 2 | |
store %jl_value_t addrspace(10)* %45, %jl_value_t addrspace(10)** %46 | |
%47 = bitcast %jl_value_t addrspace(10)** %1 to %jl_value_t addrspace(10)** | |
store %jl_value_t addrspace(10)* addrspacecast (%jl_value_t* inttoptr (i64 140737123073264 to %jl_value_t*) to %jl_value_t addrspace(10)*), %jl_value_t addrspace(10)** %47 | |
%48 = getelementptr %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %1, i32 1 | |
store %jl_value_t addrspace(10)* addrspacecast (%jl_value_t* inttoptr (i64 140737043726592 to %jl_value_t*) to %jl_value_t addrspace(10)*), %jl_value_t addrspace(10)** %48 | |
%49 = getelementptr %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %1, i32 2 | |
store %jl_value_t addrspace(10)* addrspacecast (%jl_value_t* inttoptr (i64 140737045743600 to %jl_value_t*) to %jl_value_t addrspace(10)*), %jl_value_t addrspace(10)** %49 | |
%50 = getelementptr %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %1, i32 3 | |
store %jl_value_t addrspace(10)* %45, %jl_value_t addrspace(10)** %50 | |
%51 = call nonnull %jl_value_t addrspace(10)* @jl_invoke(%jl_value_t addrspace(10)* addrspacecast (%jl_value_t* inttoptr (i64 140737123072512 to %jl_value_t*) to %jl_value_t addrspace(10)*), %jl_value_t addrspace(10)** %1, i32 4) | |
call void @llvm.trap() | |
unreachable | |
L79: ; preds = %L66 | |
%52 = getelementptr %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %gcframe, i32 2 | |
store %jl_value_t addrspace(10)* %33, %jl_value_t addrspace(10)** %52 | |
%const_mat = add i64 %const, 6208 | |
%53 = inttoptr i64 %const_mat to void (%jl_value_t addrspace(10)*, i64)* | |
call void %53(%jl_value_t addrspace(10)* nonnull %33, i64 %43) | |
br label %L107 | |
L82: ; preds = %L61 | |
%54 = icmp eq i64 %37, %41 | |
br i1 %54, label %L107, label %L85 | |
L85: ; preds = %L82 | |
%55 = icmp sgt i64 %37, -1 | |
br i1 %55, label %L90, label %L87 | |
L87: ; preds = %L85 | |
%56 = bitcast i8* %ptls_i8 to %jl_value_t*** | |
%57 = bitcast %jl_value_t*** %56 to i8* | |
%58 = call noalias nonnull %jl_value_t addrspace(10)* @jl_gc_pool_alloc(i8* %57, i32 1672, i32 16) #3 | |
%59 = bitcast %jl_value_t addrspace(10)* %58 to %jl_value_t addrspace(10)* addrspace(10)* | |
%60 = getelementptr %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(10)* %59, i64 -1 | |
store %jl_value_t addrspace(10)* addrspacecast (%jl_value_t* inttoptr (i64 140737123139680 to %jl_value_t*) to %jl_value_t addrspace(10)*), %jl_value_t addrspace(10)* addrspace(10)* %60, !tbaa !15 | |
%61 = addrspacecast %jl_value_t addrspace(10)* %58 to %jl_value_t addrspace(11)* | |
%62 = bitcast %jl_value_t addrspace(11)* %61 to %jl_value_t addrspace(10)* addrspace(11)* | |
store %jl_value_t addrspace(10)* null, %jl_value_t addrspace(10)* addrspace(11)* %62, align 8, !tbaa !17 | |
%63 = bitcast %jl_value_t addrspace(10)* %58 to %jl_value_t addrspace(10)* addrspace(10)* | |
store %jl_value_t addrspace(10)* addrspacecast (%jl_value_t* inttoptr (i64 140737128502112 to %jl_value_t*) to %jl_value_t addrspace(10)*), %jl_value_t addrspace(10)* addrspace(10)* %63, align 8, !tbaa !17 | |
%64 = addrspacecast %jl_value_t addrspace(10)* %58 to %jl_value_t addrspace(12)* | |
%65 = getelementptr %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %gcframe, i32 2 | |
store %jl_value_t addrspace(10)* %58, %jl_value_t addrspace(10)** %65 | |
call void @jl_throw(%jl_value_t addrspace(12)* %64) | |
unreachable | |
L90: ; preds = %L85 | |
%66 = sub i64 %41, %37 | |
%67 = icmp sgt i64 %66, -1 | |
br i1 %67, label %L103, label %L95 | |
L95: ; preds = %L90 | |
%68 = call %jl_value_t addrspace(10)* @jl_box_int64(i64 signext %66) | |
%69 = getelementptr %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %gcframe, i32 2 | |
store %jl_value_t addrspace(10)* %68, %jl_value_t addrspace(10)** %69 | |
%70 = bitcast %jl_value_t addrspace(10)** %1 to %jl_value_t addrspace(10)** | |
store %jl_value_t addrspace(10)* addrspacecast (%jl_value_t* inttoptr (i64 140737123073264 to %jl_value_t*) to %jl_value_t addrspace(10)*), %jl_value_t addrspace(10)** %70 | |
%71 = getelementptr %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %1, i32 1 | |
store %jl_value_t addrspace(10)* addrspacecast (%jl_value_t* inttoptr (i64 140737043726592 to %jl_value_t*) to %jl_value_t addrspace(10)*), %jl_value_t addrspace(10)** %71 | |
%72 = getelementptr %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %1, i32 2 | |
store %jl_value_t addrspace(10)* addrspacecast (%jl_value_t* inttoptr (i64 140737045743600 to %jl_value_t*) to %jl_value_t addrspace(10)*), %jl_value_t addrspace(10)** %72 | |
%73 = getelementptr %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %1, i32 3 | |
store %jl_value_t addrspace(10)* %68, %jl_value_t addrspace(10)** %73 | |
%74 = call nonnull %jl_value_t addrspace(10)* @jl_invoke(%jl_value_t addrspace(10)* addrspacecast (%jl_value_t* inttoptr (i64 140737123072512 to %jl_value_t*) to %jl_value_t addrspace(10)*), %jl_value_t addrspace(10)** %1, i32 4) | |
call void @llvm.trap() | |
unreachable | |
L103: ; preds = %L90 | |
%75 = getelementptr %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %gcframe, i32 2 | |
store %jl_value_t addrspace(10)* %33, %jl_value_t addrspace(10)** %75 | |
%const_mat23 = add i64 %const, 10064 | |
%76 = inttoptr i64 %const_mat23 to void (%jl_value_t addrspace(10)*, i64)* | |
call void %76(%jl_value_t addrspace(10)* nonnull %33, i64 %66) | |
br label %L107 | |
L107: ; preds = %L103, %L82, %L79 | |
%77 = bitcast i8* %ptls_i8 to %jl_value_t*** | |
%78 = getelementptr %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %gcframe, i32 2 | |
store %jl_value_t addrspace(10)* %33, %jl_value_t addrspace(10)** %78 | |
%79 = inttoptr i64 %const to %jl_value_t addrspace(10)* (%jl_value_t addrspace(10)*)* | |
%80 = call %jl_value_t addrspace(10)* %79(%jl_value_t addrspace(10)* nonnull %33) | |
%81 = getelementptr %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %gcframe, i32 1 | |
%82 = load %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %81, !tbaa !2 | |
%83 = bitcast %jl_value_t*** %77 to %jl_value_t*** | |
%84 = bitcast %jl_value_t*** %83 to %jl_value_t addrspace(10)** | |
store %jl_value_t addrspace(10)* %82, %jl_value_t addrspace(10)** %84, !tbaa !2 | |
ret %jl_value_t addrspace(10)* %80 | |
} | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.memcpy.p0i8.p11i8.i64(i8* nocapture writeonly, i8 addrspace(11)* nocapture readonly, i64, i1) #1 | |
declare nonnull %jl_value_t addrspace(10)* @"julia_#IOBuffer#318_13748"(i8, i8, i8, i64, i64, %jl_value_t addrspace(10)*) | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1 | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1 | |
; Function Attrs: allocsize(1) | |
declare noalias nonnull %jl_value_t addrspace(10)* @jl_gc_pool_alloc(i8*, i32, i32) #3 | |
; Function Attrs: allocsize(1) | |
declare noalias nonnull %jl_value_t addrspace(10)* @jl_gc_big_alloc(i8*, i64) #3 | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.memset.p0i8.i32(i8* nocapture writeonly, i8, i32, i1) #1 | |
attributes #0 = { noreturn nounwind } | |
attributes #1 = { argmemonly nounwind } | |
attributes #2 = { noreturn } | |
attributes #3 = { allocsize(1) } | |
!llvm.module.flags = !{!0, !1} | |
!0 = !{i32 2, !"Dwarf Version", i32 4} | |
!1 = !{i32 1, !"Debug Info Version", i32 3} | |
!2 = !{!3, !3, i64 0} | |
!3 = !{!"jtbaa_gcframe", !4, i64 0} | |
!4 = !{!"jtbaa"} | |
!5 = !{!6, !6, i64 0} | |
!6 = !{!"jtbaa_mutab", !7, i64 0} | |
!7 = !{!"jtbaa_value", !8, i64 0} | |
!8 = !{!"jtbaa_data", !4, i64 0} | |
!9 = !{} | |
!10 = !{i64 40} | |
!11 = !{i64 16} | |
!12 = !{!13, !13, i64 0} | |
!13 = !{!"jtbaa_arraylen", !14, i64 0} | |
!14 = !{!"jtbaa_array", !4, i64 0} | |
!15 = !{!16, !16, i64 0} | |
!16 = !{!"jtbaa_tag", !8, i64 0} | |
!17 = !{!18, !18, i64 0} | |
!18 = !{!"jtbaa_immut", !7, i64 0} |
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
# Machine code for function julia_print_to_string_15950: IsSSA, TracksLiveness | |
Frame Objects: | |
fi#0: size=32, align=8, at location [SP+8] | |
fi#1: size=24, align=8, at location [SP+8] | |
fi#2: size=16, align=8, at location [SP+8] | |
fi#3: size=16, align=8, at location [SP+8] | |
fi#4: size=16, align=16, at location [SP+8] | |
fi#5: size=16, align=8, at location [SP+8] | |
fi#6: size=16, align=8, at location [SP+8] | |
fi#7: size=16, align=8, at location [SP+8] | |
Function Live Ins: $rdi in %14 | |
bb.0.top: | |
successors: %bb.1(0x80000000); %bb.1(100.00%) | |
liveins: $rdi | |
%14:gr64 = COPY $rdi | |
%15:gr64 = COPY killed %14:gr64 | |
%16:gr32 = MOV32r0 implicit-def $eflags | |
%17:gr64 = SUBREG_TO_REG 0, %16:gr32, %subreg.sub_32bit | |
%21:gr64 = LEA64r %stack.1.gcframe, 1, $noreg, 0, $noreg | |
%28:gr64 = COPY %21:gr64 | |
%27:vr128x = AVX512_128_SET0 | |
VMOVDQU64Z128mr %28:gr64, 1, $noreg, 0, $noreg, killed %27:vr128x :: (store 16 into %ir.2, align 1) | |
MOV64mi32 %28:gr64, 1, $noreg, 16, $noreg, 0 :: (store 8 into %ir.2 + 16, align 1) | |
INLINEASM &"movq %fs:0, $0" [attdialect], $0:[regdef:GR64], def %25:gr64 | |
%20:gr64 = COPY %25:gr64 | |
%24:gr64 = ADD64ri32 %25:gr64, -15560, implicit-def $eflags | |
MOV64mi32 %stack.1.gcframe, 1, $noreg, 0, $noreg, 2 :: (store 8 into %ir.8, !tbaa !32) | |
%23:gr64 = MOV64rm %20:gr64, 1, $noreg, -15560, $noreg :: (load 8 from %ir.9) | |
MOV64mr %stack.1.gcframe, 1, $noreg, 8, $noreg, killed %23:gr64 :: (store 8 into %ir.11, !tbaa !32) | |
MOV64mr %20:gr64, 1, $noreg, -15560, $noreg, %21:gr64 :: (store 8 into %ir.13) | |
%18:gr64 = MOV64rm %15:gr64, 1, $noreg, 0, $noreg | |
MOV64mr %stack.7.xs, 1, $noreg, 0, $noreg, killed %18:gr64 | |
%19:gr64 = MOV64rm %15:gr64, 1, $noreg, 8, $noreg | |
MOV64mr %stack.7.xs, 1, $noreg, 8, $noreg, killed %19:gr64 | |
bb.1.L3: | |
; predecessors: %bb.0, %bb.1 | |
successors: %bb.1(0x7c000000), %bb.2(0x04000000); %bb.1(96.88%), %bb.2(3.12%) | |
%1:gr64 = PHI %17:gr64, %bb.0, %29:gr64, %bb.1 | |
%29:gr64 = ADD64ri8 killed %1:gr64, 8, implicit-def $eflags, debug-location !343; int.jl:53 @[ strings/io.jl:124 ] | |
JE_1 %bb.1, implicit $eflags, debug-location !345; strings/io.jl:124 | |
bb.2.L29: | |
; predecessors: %bb.1 | |
successors: %bb.3(0x80000000); %bb.3(100.00%) | |
ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp, debug-location !348; none:0 @[ strings/io.jl:127 ] | |
%36:gr64 = MOV64ri @"julia_#IOBuffer#318_13748", debug-location !348; none:0 @[ strings/io.jl:127 ] | |
%37:gr32 = MOV32ri 1 | |
%38:gr64 = MOV64ri 9223372036854775807 | |
%39:gr64 = MOV64ri 140737124532672 | |
$edi = COPY %37:gr32, debug-location !348; none:0 @[ strings/io.jl:127 ] | |
$esi = COPY %37:gr32, debug-location !348; none:0 @[ strings/io.jl:127 ] | |
$edx = COPY %37:gr32, debug-location !348; none:0 @[ strings/io.jl:127 ] | |
$rcx = COPY %38:gr64, debug-location !348; none:0 @[ strings/io.jl:127 ] | |
$r8 = COPY %29:gr64, debug-location !348; none:0 @[ strings/io.jl:127 ] | |
$r9 = COPY %39:gr64, debug-location !348; none:0 @[ strings/io.jl:127 ] | |
CALL64r killed %36:gr64, <regmask $bh $bl $bp $bph $bpl $bx $ebp $ebx $hbp $hbx $rbp $rbx $r12 $r13 $r14 $r15 $r12b $r13b $r14b $r15b $r12bh $r13bh $r14bh $r15bh $r12d $r13d $r14d $r15d $r12w $r13w $r14w $r15w $r12wh and 3 more...>, implicit $rsp, implicit $ssp, implicit $edi, implicit $esi, implicit $edx, implicit $rcx, implicit $r8, implicit $r9, implicit-def $rsp, implicit-def $ssp, implicit-def $rax, debug-location !348; none:0 @[ strings/io.jl:127 ] | |
ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp, debug-location !348; none:0 @[ strings/io.jl:127 ] | |
%40:gr64 = COPY $rax, debug-location !348; none:0 @[ strings/io.jl:127 ] | |
%3:gr64 = COPY %40:gr64, debug-location !348; none:0 @[ strings/io.jl:127 ] | |
%30:gr32 = MOV32ri 2 | |
%31:gr64 = SUBREG_TO_REG 0, %30:gr32, %subreg.sub_32bit | |
%32:gr64 = MOV64rm %stack.7.xs, 1, $noreg, 0, $noreg, debug-location !351; strings/io.jl:128 | |
MOV64mr %stack.3, 1, $noreg, 0, $noreg, killed %32:gr64, debug-location !351; strings/io.jl:128 | |
%33:gr64 = MOV64rm %stack.7.xs, 1, $noreg, 8, $noreg, debug-location !351; strings/io.jl:128 | |
MOV64mr %stack.3, 1, $noreg, 8, $noreg, killed %33:gr64, debug-location !351; strings/io.jl:128 | |
%43:gr64 = LEA64r %stack.4, 1, $noreg, 0, $noreg | |
%44:gr64 = MOV64ri @julia_print_15951 | |
%41:gr64 = IMPLICIT_DEF | |
%52:gr64 = LEA64r %stack.7.xs, 1, $noreg, 0, $noreg | |
bb.3.L41: | |
; predecessors: %bb.2, %bb.6 | |
successors: %bb.5(0x40000000), %bb.4(0x40000000); %bb.5(50.00%), %bb.4(50.00%) | |
%4:gr64 = PHI %31:gr64, %bb.2, %6:gr64, %bb.6 | |
%45:vr128x = VMOVDQU64Z128rm %stack.3, 1, $noreg, 0, $noreg, debug-location !351 :: (dereferenceable load 16 from %ir.18, align 8); strings/io.jl:128 | |
VMOVDQA64Z128mr %stack.4, 1, $noreg, 0, $noreg, killed %45:vr128x, debug-location !351 :: (store 16 into %ir.19); strings/io.jl:128 | |
MOV64mr %stack.1.gcframe, 1, $noreg, 16, $noreg, %3:gr64 :: (store 8 into %ir.21) | |
ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp, debug-location !352; strings/io.jl:129 | |
$rdi = COPY %3:gr64, debug-location !352; strings/io.jl:129 | |
$rsi = COPY %43:gr64, debug-location !352; strings/io.jl:129 | |
CALL64r %44:gr64, <regmask $bh $bl $bp $bph $bpl $bx $ebp $ebx $hbp $hbx $rbp $rbx $r12 $r13 $r14 $r15 $r12b $r13b $r14b $r15b $r12bh $r13bh $r14bh $r15bh $r12d $r13d $r14d $r15d $r12w $r13w $r14w $r15w $r12wh and 3 more...>, implicit $rsp, implicit $ssp, implicit $rdi, implicit $rsi, implicit-def $rsp, implicit-def $ssp, debug-location !352; strings/io.jl:129 | |
ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp, debug-location !352; strings/io.jl:129 | |
CMP64ri8 %4:gr64, 1, implicit-def $eflags, debug-location !353; tuple.jl:43 @[ strings/io.jl:129 ] | |
%42:gr8 = MOV8ri 1, debug-location !353; tuple.jl:43 @[ strings/io.jl:129 ] | |
JNE_1 %bb.5, implicit $eflags, debug-location !353; tuple.jl:43 @[ strings/io.jl:129 ] | |
bb.4.L51: | |
; predecessors: %bb.3 | |
successors: %bb.5(0x80000000); %bb.5(100.00%) | |
%46:gr32 = MOV32r0 implicit-def $eflags | |
%47:gr8 = COPY killed %46.sub_8bit:gr32 | |
%56:gr64 = ADD64ri8 %4:gr64, -1, implicit-def $eflags, debug-location !354; tuple.jl:24 @[ tuple.jl:43 @[ strings/io.jl:129 ] ] | |
%54:gr64 = SHL64ri killed %56:gr64, 4, implicit-def $eflags, debug-location !354; tuple.jl:24 @[ tuple.jl:43 @[ strings/io.jl:129 ] ] | |
%55:gr64 = ADD64rr %52:gr64, killed %54:gr64, implicit-def $eflags, debug-location !354; tuple.jl:24 @[ tuple.jl:43 @[ strings/io.jl:129 ] ] | |
%51:gr64 = ADD64ri8 %4:gr64, 1, implicit-def $eflags, debug-location !356; int.jl:53 @[ tuple.jl:43 @[ strings/io.jl:129 ] ] | |
%49:gr64 = MOV64rm %55:gr64, 1, $noreg, 0, $noreg, debug-location !353; tuple.jl:43 @[ strings/io.jl:129 ] | |
MOV64mr %stack.5, 1, $noreg, 0, $noreg, killed %49:gr64, debug-location !353; tuple.jl:43 @[ strings/io.jl:129 ] | |
%50:gr64 = MOV64rm %55:gr64, 1, $noreg, 8, $noreg, debug-location !353; tuple.jl:43 @[ strings/io.jl:129 ] | |
MOV64mr %stack.5, 1, $noreg, 8, $noreg, killed %50:gr64, debug-location !353; tuple.jl:43 @[ strings/io.jl:129 ] | |
bb.5.L55: | |
; predecessors: %bb.3, %bb.4 | |
successors: %bb.7(0x04000000), %bb.6(0x7c000000); %bb.7(3.12%), %bb.6(96.88%) | |
%6:gr64 = PHI %41:gr64, %bb.3, %51:gr64, %bb.4 | |
%7:gr8 = PHI %42:gr8, %bb.3, %47:gr8, %bb.4 | |
%57:gr64 = MOV64rm %stack.5, 1, $noreg, 0, $noreg, debug-location !352; strings/io.jl:129 | |
MOV64mr %stack.6, 1, $noreg, 0, $noreg, killed %57:gr64, debug-location !352; strings/io.jl:129 | |
%58:gr64 = MOV64rm %stack.5, 1, $noreg, 8, $noreg, debug-location !352; strings/io.jl:129 | |
MOV64mr %stack.6, 1, $noreg, 8, $noreg, killed %58:gr64, debug-location !352; strings/io.jl:129 | |
TEST8ri %7:gr8, 1, implicit-def $eflags, debug-location !352; strings/io.jl:129 | |
JNE_1 %bb.7, implicit $eflags, debug-location !352; strings/io.jl:129 | |
bb.6.L60: | |
; predecessors: %bb.5 | |
successors: %bb.3(0x80000000); %bb.3(100.00%) | |
%59:gr64 = MOV64rm %stack.6, 1, $noreg, 0, $noreg, debug-location !352; strings/io.jl:129 | |
MOV64mr %stack.3, 1, $noreg, 0, $noreg, killed %59:gr64, debug-location !352; strings/io.jl:129 | |
%60:gr64 = MOV64rm %stack.6, 1, $noreg, 8, $noreg, debug-location !352; strings/io.jl:129 | |
MOV64mr %stack.3, 1, $noreg, 8, $noreg, killed %60:gr64, debug-location !352; strings/io.jl:129 | |
JMP_1 %bb.3, debug-location !352; strings/io.jl:129 | |
bb.7.L61: | |
; predecessors: %bb.5 | |
successors: %bb.11(0x40000000), %bb.8(0x40000000); %bb.11(50.00%), %bb.8(50.00%) | |
%8:gr64 = MOV64ri 140737343996960 | |
%61:gr64 = MOV64rm %3:gr64, 1, $noreg, 0, $noreg, debug-location !357 :: (load 8 from %ir.32, !tbaa !149, addrspace 11); Base.jl:20 @[ strings/io.jl:131 ] | |
%10:gr64 = MOV64rm %3:gr64, 1, $noreg, 16, $noreg, debug-location !357 :: (load 8 from %ir.36, !tbaa !149, addrspace 11); Base.jl:20 @[ strings/io.jl:131 ] | |
%9:gr64 = COPY %61:gr64, debug-location !357; Base.jl:20 @[ strings/io.jl:131 ] | |
%62:gr64 = MOV64rm %61:gr64, 1, $noreg, 8, $noreg, debug-location !360 :: (load 8 from %ir.40, !tbaa !364, addrspace 11); array.jl:200 @[ array.jl:1001 @[ strings/io.jl:131 ] ] | |
CMP64rr %62:gr64, %10:gr64, implicit-def $eflags, debug-location !367; int.jl:49 @[ operators.jl:294 @[ array.jl:1002 @[ strings/io.jl:131 ] ] ] | |
JGE_1 %bb.11, implicit $eflags, debug-location !371; array.jl:1002 @[ strings/io.jl:131 ] | |
bb.8.L66: | |
; predecessors: %bb.7 | |
successors: %bb.10(0x7fffffff), %bb.9(0x00000001); %bb.10(100.00%), %bb.9(0.00%) | |
%86:gr64 = SUB64rr %10:gr64, %62:gr64, implicit-def $eflags, debug-location !372; int.jl:52 @[ array.jl:1003 @[ strings/io.jl:131 ] ] | |
CMP64ri8 %86:gr64, -1, implicit-def $eflags, debug-location !375; boot.jl:564 @[ boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:811 @[ array.jl:1003 @[ strings/io.jl:131 ] ] ] ] ] ] ] ] | |
JG_1 %bb.10, implicit $eflags, debug-location !378; boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:811 @[ array.jl:1003 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
bb.9.L71: | |
; predecessors: %bb.8 | |
ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp, debug-location !378; boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:811 @[ array.jl:1003 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
%93:gr64 = MOV64ri @jl_box_int64, debug-location !378; boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:811 @[ array.jl:1003 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
$rdi = COPY %86:gr64, debug-location !378; boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:811 @[ array.jl:1003 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
CALL64r killed %93:gr64, <regmask $bh $bl $bp $bph $bpl $bx $ebp $ebx $hbp $hbx $rbp $rbx $r12 $r13 $r14 $r15 $r12b $r13b $r14b $r15b $r12bh $r13bh $r14bh $r15bh $r12d $r13d $r14d $r15d $r12w $r13w $r14w $r15w $r12wh and 3 more...>, implicit $rsp, implicit $ssp, implicit $rdi, implicit-def $rsp, implicit-def $ssp, implicit-def $rax, debug-location !378; boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:811 @[ array.jl:1003 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp, debug-location !378; boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:811 @[ array.jl:1003 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
%94:gr64 = COPY $rax, debug-location !378; boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:811 @[ array.jl:1003 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
%92:gr64 = COPY %94:gr64, debug-location !378; boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:811 @[ array.jl:1003 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
MOV64mr %stack.1.gcframe, 1, $noreg, 16, $noreg, %94:gr64 :: (store 8 into %ir.46) | |
%95:gr64 = MOV64ri 140737124207856 | |
MOV64mr %stack.0, 1, $noreg, 0, $noreg, killed %95:gr64, debug-location !378 :: (store 8 into %ir.47); boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:811 @[ array.jl:1003 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
%96:gr64 = MOV64ri 140737044861184 | |
MOV64mr %stack.0, 1, $noreg, 8, $noreg, killed %96:gr64, debug-location !378 :: (store 8 into %ir.48); boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:811 @[ array.jl:1003 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
%97:gr64 = MOV64ri 140737046874096 | |
MOV64mr %stack.0, 1, $noreg, 16, $noreg, killed %97:gr64, debug-location !378 :: (store 8 into %ir.49); boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:811 @[ array.jl:1003 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
MOV64mr %stack.0, 1, $noreg, 24, $noreg, %92:gr64, debug-location !378 :: (store 8 into %ir.50); boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:811 @[ array.jl:1003 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp, debug-location !378; boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:811 @[ array.jl:1003 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
%87:gr64 = MOV64ri @jl_invoke, debug-location !378; boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:811 @[ array.jl:1003 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
%88:gr64 = MOV64ri 140737124207104 | |
%89:gr64 = LEA64r %stack.0, 1, $noreg, 0, $noreg | |
%90:gr32 = MOV32ri 4 | |
$rdi = COPY %88:gr64, debug-location !378; boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:811 @[ array.jl:1003 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
$rsi = COPY %89:gr64, debug-location !378; boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:811 @[ array.jl:1003 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
$edx = COPY %90:gr32, debug-location !378; boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:811 @[ array.jl:1003 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
CALL64r killed %87:gr64, <regmask $bh $bl $bp $bph $bpl $bx $ebp $ebx $hbp $hbx $rbp $rbx $r12 $r13 $r14 $r15 $r12b $r13b $r14b $r15b $r12bh $r13bh $r14bh $r15bh $r12d $r13d $r14d $r15d $r12w $r13w $r14w $r15w $r12wh and 3 more...>, implicit $rsp, implicit $ssp, implicit $rdi, implicit $rsi, implicit $edx, implicit-def $rsp, implicit-def $ssp, implicit-def $rax, debug-location !378; boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:811 @[ array.jl:1003 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp, debug-location !378; boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:811 @[ array.jl:1003 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
TRAP debug-location !378; boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:811 @[ array.jl:1003 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
bb.10.L79: | |
; predecessors: %bb.8 | |
successors: %bb.17(0x80000000); %bb.17(100.00%) | |
MOV64mr %stack.1.gcframe, 1, $noreg, 16, $noreg, %9:gr64 :: (store 8 into %ir.52) | |
%99:gr64 = ADD64ri32 %8:gr64, 6208, implicit-def $eflags, debug-location !390; array.jl:811 @[ array.jl:1003 @[ strings/io.jl:131 ] ] | |
ADJCALLSTACKDOWN64 0, 0, 0, implicit-def $rsp, implicit-def $eflags, implicit-def $ssp, implicit $rsp, implicit $ssp, debug-location !390; array.jl:811 @[ array.jl:1003 @[ strings/io.jl:131 ] ] | |
$rdi = COPY %9:gr64, debug-location !390; array.jl:811 @[ array.jl:1003 @[ strings/io.jl:131 ] ] | |
$rsi = COPY %86:gr64, debug-location !390; array.jl:811 @[ array.jl:1003 @[ strings/io.jl:131 ] ] | |
CALL64r %99:gr64, <regmask $bh $bl $bp $bph $bpl $bx $ebp $ebx $hbp $hbx $rbp $rbx $r12 $r13 $r14 $r15 $r12b $r13b $r14b $r15b $r12bh $r13bh $r14bh $r15bh $r12d $r13d $r14d $r15d $r12w $r13w $r14w $r15w $r12wh and 3 more...>, implicit $rsp, implicit $ssp, implicit $rdi, implicit $rsi, debug-location !390; array.jl:811 @[ array.jl:1003 @[ strings/io.jl:131 ] ] | |
ADJCALLSTACKUP64 0, 0, implicit-def $rsp, implicit-def $eflags, implicit-def $ssp, implicit $rsp, implicit $ssp, debug-location !390; array.jl:811 @[ array.jl:1003 @[ strings/io.jl:131 ] ] | |
JMP_1 %bb.17, debug-location !374; array.jl:1003 @[ strings/io.jl:131 ] | |
bb.11.L82: | |
; predecessors: %bb.7 | |
successors: %bb.17(0x40000000), %bb.12(0x40000000); %bb.17(50.00%), %bb.12(50.00%) | |
CMP64rr %10:gr64, %62:gr64, implicit-def $eflags, debug-location !392; promotion.jl:403 @[ operators.jl:193 @[ array.jl:1004 @[ strings/io.jl:131 ] ] ] | |
JE_1 %bb.17, implicit $eflags, debug-location !396; array.jl:1004 @[ strings/io.jl:131 ] | |
bb.12.L85: | |
; predecessors: %bb.11 | |
successors: %bb.14(0x7fffffff), %bb.13(0x00000001); %bb.14(100.00%), %bb.13(0.00%) | |
CMP64ri8 %10:gr64, -1, implicit-def $eflags, debug-location !397; int.jl:49 @[ array.jl:1005 @[ strings/io.jl:131 ] ] | |
JG_1 %bb.14, implicit $eflags, debug-location !398; array.jl:1005 @[ strings/io.jl:131 ] | |
bb.13.L87: | |
; predecessors: %bb.12 | |
ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp, debug-location !399; boot.jl:287 @[ array.jl:1006 @[ strings/io.jl:131 ] ] | |
%66:gr64 = MOV64ri @jl_gc_pool_alloc, debug-location !399; boot.jl:287 @[ array.jl:1006 @[ strings/io.jl:131 ] ] | |
%67:gr32 = MOV32ri 1672 | |
%68:gr32 = MOV32ri 16 | |
$rdi = COPY %24:gr64, debug-location !399; boot.jl:287 @[ array.jl:1006 @[ strings/io.jl:131 ] ] | |
$esi = COPY %67:gr32, debug-location !399; boot.jl:287 @[ array.jl:1006 @[ strings/io.jl:131 ] ] | |
$edx = COPY %68:gr32, debug-location !399; boot.jl:287 @[ array.jl:1006 @[ strings/io.jl:131 ] ] | |
CALL64r killed %66:gr64, <regmask $bh $bl $bp $bph $bpl $bx $ebp $ebx $hbp $hbx $rbp $rbx $r12 $r13 $r14 $r15 $r12b $r13b $r14b $r15b $r12bh $r13bh $r14bh $r15bh $r12d $r13d $r14d $r15d $r12w $r13w $r14w $r15w $r12wh and 3 more...>, implicit $rsp, implicit $ssp, implicit $rdi, implicit $esi, implicit $edx, implicit-def $rsp, implicit-def $ssp, implicit-def $rax, debug-location !399; boot.jl:287 @[ array.jl:1006 @[ strings/io.jl:131 ] ] | |
ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp, debug-location !399; boot.jl:287 @[ array.jl:1006 @[ strings/io.jl:131 ] ] | |
%69:gr64 = COPY $rax, debug-location !399; boot.jl:287 @[ array.jl:1006 @[ strings/io.jl:131 ] ] | |
%65:gr64 = COPY %69:gr64, debug-location !399; boot.jl:287 @[ array.jl:1006 @[ strings/io.jl:131 ] ] | |
%70:gr64 = MOV64ri 140737124274272 | |
MOV64mr %69:gr64, 1, $noreg, -8, $noreg, killed %70:gr64, debug-location !399 :: (store 8 into %ir.60, !tbaa !218, addrspace 10); boot.jl:287 @[ array.jl:1006 @[ strings/io.jl:131 ] ] | |
%71:gr64 = MOV64ri 140737129636704 | |
MOV64mr %69:gr64, 1, $noreg, 0, $noreg, killed %71:gr64, debug-location !399 :: (store 8 into %ir.63, !tbaa !50, addrspace 10); boot.jl:287 @[ array.jl:1006 @[ strings/io.jl:131 ] ] | |
MOV64mr %stack.1.gcframe, 1, $noreg, 16, $noreg, %65:gr64 :: (store 8 into %ir.65) | |
ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp, debug-location !400; array.jl:1006 @[ strings/io.jl:131 ] | |
%64:gr64 = MOV64ri @jl_throw, debug-location !400; array.jl:1006 @[ strings/io.jl:131 ] | |
$rdi = COPY %65:gr64, debug-location !400; array.jl:1006 @[ strings/io.jl:131 ] | |
CALL64r killed %64:gr64, <regmask $bh $bl $bp $bph $bpl $bx $ebp $ebx $hbp $hbx $rbp $rbx $r12 $r13 $r14 $r15 $r12b $r13b $r14b $r15b $r12bh $r13bh $r14bh $r15bh $r12d $r13d $r14d $r15d $r12w $r13w $r14w $r15w $r12wh and 3 more...>, implicit $rsp, implicit $ssp, implicit $rdi, implicit-def $rsp, implicit-def $ssp, debug-location !400; array.jl:1006 @[ strings/io.jl:131 ] | |
ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp, debug-location !400; array.jl:1006 @[ strings/io.jl:131 ] | |
bb.14.L90: | |
; predecessors: %bb.12 | |
successors: %bb.16(0x7fffffff), %bb.15(0x00000001); %bb.16(100.00%), %bb.15(0.00%) | |
%72:gr64 = SUB64rr %62:gr64, %10:gr64, implicit-def $eflags, debug-location !401; int.jl:52 @[ array.jl:1008 @[ strings/io.jl:131 ] ] | |
CMP64ri8 %72:gr64, -1, implicit-def $eflags, debug-location !403; boot.jl:564 @[ boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:820 @[ array.jl:1008 @[ strings/io.jl:131 ] ] ] ] ] ] ] ] | |
JG_1 %bb.16, implicit $eflags, debug-location !404; boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:820 @[ array.jl:1008 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
bb.15.L95: | |
; predecessors: %bb.14 | |
ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp, debug-location !404; boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:820 @[ array.jl:1008 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
%79:gr64 = MOV64ri @jl_box_int64, debug-location !404; boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:820 @[ array.jl:1008 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
$rdi = COPY %72:gr64, debug-location !404; boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:820 @[ array.jl:1008 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
CALL64r killed %79:gr64, <regmask $bh $bl $bp $bph $bpl $bx $ebp $ebx $hbp $hbx $rbp $rbx $r12 $r13 $r14 $r15 $r12b $r13b $r14b $r15b $r12bh $r13bh $r14bh $r15bh $r12d $r13d $r14d $r15d $r12w $r13w $r14w $r15w $r12wh and 3 more...>, implicit $rsp, implicit $ssp, implicit $rdi, implicit-def $rsp, implicit-def $ssp, implicit-def $rax, debug-location !404; boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:820 @[ array.jl:1008 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp, debug-location !404; boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:820 @[ array.jl:1008 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
%80:gr64 = COPY $rax, debug-location !404; boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:820 @[ array.jl:1008 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
%78:gr64 = COPY %80:gr64, debug-location !404; boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:820 @[ array.jl:1008 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
MOV64mr %stack.1.gcframe, 1, $noreg, 16, $noreg, %80:gr64 :: (store 8 into %ir.69) | |
%81:gr64 = MOV64ri 140737124207856 | |
MOV64mr %stack.0, 1, $noreg, 0, $noreg, killed %81:gr64, debug-location !404 :: (store 8 into %ir.70); boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:820 @[ array.jl:1008 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
%82:gr64 = MOV64ri 140737044861184 | |
MOV64mr %stack.0, 1, $noreg, 8, $noreg, killed %82:gr64, debug-location !404 :: (store 8 into %ir.71); boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:820 @[ array.jl:1008 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
%83:gr64 = MOV64ri 140737046874096 | |
MOV64mr %stack.0, 1, $noreg, 16, $noreg, killed %83:gr64, debug-location !404 :: (store 8 into %ir.72); boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:820 @[ array.jl:1008 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
MOV64mr %stack.0, 1, $noreg, 24, $noreg, %78:gr64, debug-location !404 :: (store 8 into %ir.73); boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:820 @[ array.jl:1008 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp, debug-location !404; boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:820 @[ array.jl:1008 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
%73:gr64 = MOV64ri @jl_invoke, debug-location !404; boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:820 @[ array.jl:1008 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
%74:gr64 = MOV64ri 140737124207104 | |
%75:gr64 = LEA64r %stack.0, 1, $noreg, 0, $noreg | |
%76:gr32 = MOV32ri 4 | |
$rdi = COPY %74:gr64, debug-location !404; boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:820 @[ array.jl:1008 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
$rsi = COPY %75:gr64, debug-location !404; boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:820 @[ array.jl:1008 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
$edx = COPY %76:gr32, debug-location !404; boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:820 @[ array.jl:1008 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
CALL64r killed %73:gr64, <regmask $bh $bl $bp $bph $bpl $bx $ebp $ebx $hbp $hbx $rbp $rbx $r12 $r13 $r14 $r15 $r12b $r13b $r14b $r15b $r12bh $r13bh $r14bh $r15bh $r12d $r13d $r14d $r15d $r12w $r13w $r14w $r15w $r12wh and 3 more...>, implicit $rsp, implicit $ssp, implicit $rdi, implicit $rsi, implicit $edx, implicit-def $rsp, implicit-def $ssp, implicit-def $rax, debug-location !404; boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:820 @[ array.jl:1008 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp, debug-location !404; boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:820 @[ array.jl:1008 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
TRAP debug-location !404; boot.jl:574 @[ boot.jl:685 @[ boot.jl:715 @[ number.jl:7 @[ essentials.jl:393 @[ array.jl:820 @[ array.jl:1008 @[ strings/io.jl:131 ] ] ] ] ] ] ] | |
bb.16.L103: | |
; predecessors: %bb.14 | |
successors: %bb.17(0x80000000); %bb.17(100.00%) | |
MOV64mr %stack.1.gcframe, 1, $noreg, 16, $noreg, %9:gr64 :: (store 8 into %ir.75) | |
%85:gr64 = ADD64ri32 %8:gr64, 10064, implicit-def $eflags, debug-location !409; array.jl:820 @[ array.jl:1008 @[ strings/io.jl:131 ] ] | |
ADJCALLSTACKDOWN64 0, 0, 0, implicit-def $rsp, implicit-def $eflags, implicit-def $ssp, implicit $rsp, implicit $ssp, debug-location !409; array.jl:820 @[ array.jl:1008 @[ strings/io.jl:131 ] ] | |
$rdi = COPY %9:gr64, debug-location !409; array.jl:820 @[ array.jl:1008 @[ strings/io.jl:131 ] ] | |
$rsi = COPY %72:gr64, debug-location !409; array.jl:820 @[ array.jl:1008 @[ strings/io.jl:131 ] ] | |
CALL64r %85:gr64, <regmask $bh $bl $bp $bph $bpl $bx $ebp $ebx $hbp $hbx $rbp $rbx $r12 $r13 $r14 $r15 $r12b $r13b $r14b $r15b $r12bh $r13bh $r14bh $r15bh $r12d $r13d $r14d $r15d $r12w $r13w $r14w $r15w $r12wh and 3 more...>, implicit $rsp, implicit $ssp, implicit $rdi, implicit $rsi, debug-location !409; array.jl:820 @[ array.jl:1008 @[ strings/io.jl:131 ] ] | |
ADJCALLSTACKUP64 0, 0, implicit-def $rsp, implicit-def $eflags, implicit-def $ssp, implicit $rsp, implicit $ssp, debug-location !409; array.jl:820 @[ array.jl:1008 @[ strings/io.jl:131 ] ] | |
bb.17.L107: | |
; predecessors: %bb.11, %bb.16, %bb.10 | |
MOV64mr %stack.1.gcframe, 1, $noreg, 16, $noreg, %9:gr64 :: (store 8 into %ir.78) | |
ADJCALLSTACKDOWN64 0, 0, 0, implicit-def $rsp, implicit-def $eflags, implicit-def $ssp, implicit $rsp, implicit $ssp, debug-location !411; strings/string.jl:39 @[ strings/io.jl:131 ] | |
$rdi = COPY %9:gr64, debug-location !411; strings/string.jl:39 @[ strings/io.jl:131 ] | |
CALL64r %8:gr64, <regmask $bh $bl $bp $bph $bpl $bx $ebp $ebx $hbp $hbx $rbp $rbx $r12 $r13 $r14 $r15 $r12b $r13b $r14b $r15b $r12bh $r13bh $r14bh $r15bh $r12d $r13d $r14d $r15d $r12w $r13w $r14w $r15w $r12wh and 3 more...>, implicit $rsp, implicit $ssp, implicit $rdi, implicit-def $rax, debug-location !411; strings/string.jl:39 @[ strings/io.jl:131 ] | |
ADJCALLSTACKUP64 0, 0, implicit-def $rsp, implicit-def $eflags, implicit-def $ssp, implicit $rsp, implicit $ssp, debug-location !411; strings/string.jl:39 @[ strings/io.jl:131 ] | |
%103:gr64 = COPY $rax, debug-location !411; strings/string.jl:39 @[ strings/io.jl:131 ] | |
%102:gr64 = MOV64rm %stack.1.gcframe, 1, $noreg, 8, $noreg, debug-location !359 :: (load 8 from %ir.81, !tbaa !32); strings/io.jl:131 | |
MOV64mr %24:gr64, 1, $noreg, 0, $noreg, killed %102:gr64, debug-location !359 :: (store 8 into %ir.84, !tbaa !32); strings/io.jl:131 | |
$rax = COPY %103:gr64, debug-location !359; strings/io.jl:131 | |
RETQ implicit $rax, debug-location !359; strings/io.jl:131 | |
# End machine code for function julia_print_to_string_15950. |
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
$ ./julia -O1 -q | |
julia> isdefined(Main, :OffsetArrays) || @eval Main include("testhelpers/OffsetArrays.jl") | |
Main.OffsetArrays | |
julia> using .Main.OffsetArrays | |
julia> A = OffsetArray(rand(4,4), (-3,5)) | |
julia: llvm-7.0.1/lib/Target/X86/X86AvoidStoreForwardingBlocks.cpp:694: | |
virtual bool {anonymous}::X86AvoidSFBPass::runOnMachineFunction(llvm::MachineFunction&): | |
Assertion `PBInst->hasOneMemOperand() && "Expected One Memory Operand"' failed. | |
MOV64mr %stack.3, 1, $noreg, 8, $noreg, killed %33:gr64, debug-location !351; strings/io.jl:128 |
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
$ ../usr/tools/llc -fast-isel -O1 -mcpu=skylake-avx512 -start-before=isel print_to_string.ll -o /dev/null | |
llc: llvm-7.0.1/lib/Target/X86/X86AvoidStoreForwardingBlocks.cpp:694: virtual bool {anonymous}::X86AvoidSFBPass::runOnMachineFunction(llvm::MachineFunction&): Assertion `PBInst->hasOneMemOperand() && "Expected One Memory Operand"' failed. | |
Stack dump: | |
0. Program arguments: ../usr/tools/llc -fast-isel -O1 -mcpu=skylake-avx512 -start-before=isel print_to_string.ll -o /dev/null | |
1. Running pass 'Function Pass Manager' on module 'print_to_string.ll'. | |
2. Running pass 'X86 Avoid Store Forwarding Blocks' on function '@julia_print_to_string_15938' | |
#0 0x00007f741153fd2a llvm::sys::PrintStackTrace(llvm::raw_ostream&) (/data/vtjnash/julia/usr/tools/../lib/libLLVM-7.so+0x752d2a) | |
#1 0x00007f741153e154 llvm::sys::RunSignalHandlers() (/data/vtjnash/julia/usr/tools/../lib/libLLVM-7.so+0x751154) | |
#2 0x00007f741153e292 SignalHandler(int) (/data/vtjnash/julia/usr/tools/../lib/libLLVM-7.so+0x751292) | |
#3 0x00007f74106be140 (/lib/x86_64-linux-gnu/libc.so.6+0x37140) | |
#4 0x00007f74106be0bb gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x370bb) | |
#5 0x00007f74106bff5d abort (/lib/x86_64-linux-gnu/libc.so.6+0x38f5d) | |
#6 0x00007f74106b5f17 (/lib/x86_64-linux-gnu/libc.so.6+0x2ef17) | |
#7 0x00007f74106b5fc2 (/lib/x86_64-linux-gnu/libc.so.6+0x2efc2) | |
#8 0x00007f7412df4dc6 (anonymous namespace)::X86AvoidSFBPass::runOnMachineFunction(llvm::MachineFunction&) (/data/vtjnash/julia/usr/tools/../lib/libLLVM-7.so+0x2007dc6) | |
#9 0x00007f7411894a55 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/data/vtjnash/julia/usr/tools/../lib/libLLVM-7.so+0xaa7a55) | |
#10 0x00007f74116671f1 llvm::FPPassManager::runOnFunction(llvm::Function&) (/data/vtjnash/julia/usr/tools/../lib/libLLVM-7.so+0x87a1f1) | |
#11 0x00007f7411667269 llvm::FPPassManager::runOnModule(llvm::Module&) (/data/vtjnash/julia/usr/tools/../lib/libLLVM-7.so+0x87a269) | |
#12 0x00007f7411666718 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/data/vtjnash/julia/usr/tools/../lib/libLLVM-7.so+0x879718) | |
#13 0x000056483a86c292 main (../usr/tools/llc+0xf292) | |
#14 0x00007f74106a81c1 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x211c1) | |
#15 0x000056483a86cd1a _start (../usr/tools/llc+0xfd1a) | |
Aborted |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment