Skip to content

Instantly share code, notes, and snippets.

@vtjnash
Last active April 27, 2019 20:33
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 vtjnash/192cab72a6cfc00256ff118238163b55 to your computer and use it in GitHub Desktop.
Save vtjnash/192cab72a6cfc00256ff118238163b55 to your computer and use it in GitHub Desktop.
X86AvoidStoreForwardingBlocks bug
; 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}
# 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.
$ ./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
$ ../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