Skip to content

Instantly share code, notes, and snippets.

@tkf
Last active December 3, 2019 08:01
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 tkf/d9397c14f8612f61be9ea72257c50591 to your computer and use it in GitHub Desktop.
Save tkf/d9397c14f8612f61be9ea72257c50591 to your computer and use it in GitHub Desktop.
│ ─ %-1 = invoke _foldl_impl(::Base.BottomRF{typeof(+)},::Base._InitialValue,::Base.Generator{Base.Iterators.Filter{var"#28#30",Array{Union{Missing, Float64},1}},var"#27#29"})::Union{Missing, Base._InitialValue, Float64}
Body::Union{Missing, Base._InitialValue, Float64}
@ reduce.jl:53 within `_foldl_impl'
┌ @ generator.jl:44 within `iterate'
│┌ @ Base.jl:33 within `getproperty'
1 ──││ %1 = Base.getfield(itr, :iter)::Base.Iterators.Filter{var"#28#30",Array{Union{Missing, Float64},1}}
│ │└
│ │ @ generator.jl:44 within `iterate' @ iterators.jl:429
│ │┌ @ Base.jl:33 within `getproperty'
│ ││ %2 = Base.getfield(%1, :itr)::Array{Union{Missing, Float64},1}
│ │└
│ │ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 @ array.jl:734
│ │┌ @ int.jl:450 within `rem'
│ ││ %3 = Base.bitcast(UInt64, 1)::UInt64
│ │└
│ │┌ @ int.jl:858 within `-'
│ ││┌ @ int.jl:450 within `rem'
│ │││ %4 = Base.bitcast(UInt64, 1)::UInt64
│ ││└
│ ││ @ int.jl:860 within `-' @ int.jl:52
│ ││ %5 = Base.sub_int(%3, %4)::UInt64
│ │└
│ │┌ @ array.jl:214 within `length'
│ ││ %6 = Base.arraylen(%2)::Int64
│ │└
│ │┌ @ int.jl:416 within `<'
│ ││┌ @ operators.jl:341 within `>='
│ │││┌ @ int.jl:410 within `<='
│ ││││ %7 = Base.sle_int(0, %6)::Bool
│ ││└└
│ ││┌ @ essentials.jl:370 within `unsigned'
│ │││┌ @ essentials.jl:415 within `reinterpret'
│ ││││ %8 = Base.bitcast(UInt64, %6)::UInt64
│ ││└└
│ ││ @ int.jl:416 within `<' @ int.jl:409
│ ││ %9 = Base.ult_int(%5, %8)::Bool
│ ││ @ int.jl:416 within `<'
│ ││┌ @ bool.jl:40 within `&'
│ │││ %10 = Base.and_int(%7, %9)::Bool
│ │└└
└───│ goto #3 if not %10
│┌ @ array.jl:758 within `getindex'
2 ──││ %12 = Base.arrayref(false, %2, 1)::Union{Missing, Float64}
│ │└
│ │┌ @ int.jl:53 within `+'
│ ││ %13 = Base.add_int(1, 1)::Int64
│ │└
└───│ goto #4
3 ──│ goto #4
│ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734
4 ┄─│ %16 = φ (#2 => false, #3 => true)::Bool
│ │ %17 = φ (#2 => %12)::Union{Missing, Float64}
│ │ %18 = φ (#2 => %13)::Int64
│ │ %19 = φ (#2 => false)::Bool
│ │ %20 = φ (#2 => %12)::Union{Missing, Float64}
│ │ %21 = φ (#2 => %13)::Int64
└───│ goto #5
5 ──│ nothing
│ @ generator.jl:44 within `iterate' @ iterators.jl:430
6 ┄─│ %24 = φ (#5 => %16, #17 => %57)::Bool
│ │ %25 = φ (#5 => %17, #17 => %58)::Union{Missing, Float64}
│ │ %26 = φ (#5 => %18, #17 => %59)::Int64
│ │ %27 = φ (#5 => %19, #17 => %60)::Bool
│ │ %28 = φ (#5 => %20, #17 => %61)::Union{Missing, Float64}
│ │ %29 = φ (#5 => %21, #17 => %62)::Int64
│ │ %30 = Core.Intrinsics.not_int(%24)::Bool
└───│ goto #18 if not %30
│ @ generator.jl:44 within `iterate' @ iterators.jl:431
7 ──│ %32 = (isa)(%25, Missing)::Bool
└───│ goto #9 if not %32
8 ──│ goto #12
9 ──│ %35 = (isa)(%25, Float64)::Bool
└───│ goto #11 if not %35
10 ─│ goto #12
11 ─│ Core.throw(ErrorException("fatal error in type inference (type bound)"))
└───│ $(Expr(:unreachable))
12 ┄│ %40 = φ (#8 => false, #10 => true)::Bool
└───│ goto #14 if not %40
│ @ generator.jl:44 within `iterate' @ iterators.jl:432
13 ─│ goto #19
│ @ generator.jl:44 within `iterate' @ iterators.jl:434
│┌ @ Base.jl:33 within `getproperty'
14 ─││ %43 = Base.getfield(%1, :itr)::Array{Union{Missing, Float64},1}
│ │└
│ │ @ generator.jl:44 within `iterate' @ iterators.jl:434 @ array.jl:734
│ │┌ @ int.jl:450 within `rem'
│ ││ %44 = Base.bitcast(UInt64, %26)::UInt64
│ │└
│ │┌ @ int.jl:858 within `-'
│ ││┌ @ int.jl:450 within `rem'
│ │││ %45 = Base.bitcast(UInt64, 1)::UInt64
│ ││└
│ ││ @ int.jl:860 within `-' @ int.jl:52
│ ││ %46 = Base.sub_int(%44, %45)::UInt64
│ │└
│ │┌ @ array.jl:214 within `length'
│ ││ %47 = Base.arraylen(%43)::Int64
│ │└
│ │┌ @ int.jl:416 within `<'
│ ││┌ @ operators.jl:341 within `>='
│ │││┌ @ int.jl:410 within `<='
│ ││││ %48 = Base.sle_int(0, %47)::Bool
│ ││└└
│ ││┌ @ essentials.jl:370 within `unsigned'
│ │││┌ @ essentials.jl:415 within `reinterpret'
│ ││││ %49 = Base.bitcast(UInt64, %47)::UInt64
│ ││└└
│ ││ @ int.jl:416 within `<' @ int.jl:409
│ ││ %50 = Base.ult_int(%46, %49)::Bool
│ ││ @ int.jl:416 within `<'
│ ││┌ @ bool.jl:40 within `&'
│ │││ %51 = Base.and_int(%48, %50)::Bool
│ │└└
└───│ goto #16 if not %51
│┌ @ array.jl:758 within `getindex'
15 ─││ %53 = Base.arrayref(false, %43, %26)::Union{Missing, Float64}
│ │└
│ │┌ @ int.jl:53 within `+'
│ ││ %54 = Base.add_int(%26, 1)::Int64
│ │└
└───│ goto #17
16 ─│ goto #17
│ @ generator.jl:44 within `iterate' @ iterators.jl:434
17 ┄│ %57 = φ (#15 => false, #16 => true)::Bool
│ │ %58 = φ (#15 => %53)::Union{Missing, Float64}
│ │ %59 = φ (#15 => %54)::Int64
│ │ %60 = φ (#15 => false)::Bool
│ │ %61 = φ (#15 => %53)::Union{Missing, Float64}
│ │ %62 = φ (#15 => %54)::Int64
└───│ goto #6
│ @ generator.jl:44 within `iterate' @ iterators.jl:436
18 ─│ goto #19
│ @ generator.jl:44 within `iterate'
19 ┄│ %65 = φ (#13 => %27, #18 => true)::Bool
│ │ %66 = φ (#13 => %28)::Union{Missing, Float64}
│ │ %67 = φ (#13 => %29)::Int64
│ │ @ generator.jl:45 within `iterate'
└───│ goto #21 if not %65
20 ─│ goto #27
│ @ generator.jl:47 within `iterate'
21 ─│ %70 = (isa)(%66, Missing)::Bool
└───│ goto #23 if not %70
22 ─│ goto #26
23 ─│ %73 = (isa)(%66, Float64)::Bool
└───│ goto #25 if not %73
24 ─│ %75 = π (%66, Float64)
└───│ goto #26
25 ─│ Core.throw(ErrorException("fatal error in type inference (type bound)"))
└───│ $(Expr(:unreachable))
26 ┄│ %79 = φ (#22 => $(QuoteNode(missing)), #24 => %75)::Union{Missing, Float64}
└───│ goto #27
27 ┄ %81 = φ (#20 => true, #26 => false)::Bool
│ %82 = φ (#26 => %79)::Union{Missing, Float64}
│ %83 = φ (#26 => %67)::Int64
│ @ reduce.jl:54 within `_foldl_impl'
└─── goto #29 if not %81
28 ─ return init
@ reduce.jl:55 within `_foldl_impl'
29 ─ %86 = (isa)(%82, Missing)::Bool
└─── goto #31 if not %86
30 ─ goto #34
31 ─ %89 = (isa)(%82, Float64)::Bool
└─── goto #33 if not %89
32 ─ %91 = π (%82, Float64)
└─── goto #34
33 ─ Core.throw(ErrorException("fatal error in type inference (type bound)"))
└─── $(Expr(:unreachable))
34 ┄ %95 = φ (#30 => $(QuoteNode(missing)), #32 => %91)::Union{Missing, Float64}
@ reduce.jl:56 within `_foldl_impl'
35 ┄ %96 = φ (#34 => %83, #71 => %176)::Int64
│ %97 = φ (#34 => %95, #71 => %206)::Union{Missing, Float64}
│ @ reduce.jl:57 within `_foldl_impl'
│ ┌ @ generator.jl:44 within `iterate'
│ │┌ @ Base.jl:33 within `getproperty'
│ ││ %98 = Base.getfield(itr, :iter)::Base.Iterators.Filter{var"#28#30",Array{Union{Missing, Float64},1}}
│ │└
│ │ @ generator.jl:44 within `iterate' @ iterators.jl:429
│ │┌ @ Base.jl:33 within `getproperty'
│ ││ %99 = Base.getfield(%98, :itr)::Array{Union{Missing, Float64},1}
│ │└
│ │ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734
│ │┌ @ int.jl:450 within `rem'
│ ││ %100 = Base.bitcast(UInt64, %96)::UInt64
│ │└
│ │┌ @ int.jl:858 within `-'
│ ││┌ @ int.jl:450 within `rem'
│ │││ %101 = Base.bitcast(UInt64, 1)::UInt64
│ ││└
│ ││ @ int.jl:860 within `-' @ int.jl:52
│ ││ %102 = Base.sub_int(%100, %101)::UInt64
│ │└
│ │┌ @ array.jl:214 within `length'
│ ││ %103 = Base.arraylen(%99)::Int64
│ │└
│ │┌ @ int.jl:416 within `<'
│ ││┌ @ operators.jl:341 within `>='
│ │││┌ @ int.jl:410 within `<='
│ ││││ %104 = Base.sle_int(0, %103)::Bool
│ ││└└
│ ││┌ @ essentials.jl:370 within `unsigned'
│ │││┌ @ essentials.jl:415 within `reinterpret'
│ ││││ %105 = Base.bitcast(UInt64, %103)::UInt64
│ ││└└
│ ││ @ int.jl:416 within `<' @ int.jl:409
│ ││ %106 = Base.ult_int(%102, %105)::Bool
│ ││ @ int.jl:416 within `<'
│ ││┌ @ bool.jl:40 within `&'
│ │││ %107 = Base.and_int(%104, %106)::Bool
│ │└└
└───│ goto #37 if not %107
│┌ @ array.jl:758 within `getindex'
36 ─││ %109 = Base.arrayref(false, %99, %96)::Union{Missing, Float64}
│ │└
│ │┌ @ int.jl:53 within `+'
│ ││ %110 = Base.add_int(%96, 1)::Int64
│ │└
└───│ goto #38
37 ─│ goto #38
│ @ generator.jl:44 within `iterate' @ iterators.jl:429
38 ┄│ %113 = φ (#36 => false, #37 => true)::Bool
│ │ %114 = φ (#36 => %109)::Union{Missing, Float64}
│ │ %115 = φ (#36 => %110)::Int64
│ │ %116 = φ (#36 => false)::Bool
│ │ %117 = φ (#36 => %109)::Union{Missing, Float64}
└───│ %118 = φ (#36 => %110)::Int64
│ @ generator.jl:44 within `iterate' @ iterators.jl:430
39 ┄│ %119 = φ (#38 => %113, #50 => %152)::Bool
│ │ %120 = φ (#38 => %114, #50 => %153)::Union{Missing, Float64}
│ │ %121 = φ (#38 => %115, #50 => %154)::Int64
│ │ %122 = φ (#38 => %116, #50 => %155)::Bool
│ │ %123 = φ (#38 => %117, #50 => %156)::Union{Missing, Float64}
│ │ %124 = φ (#38 => %118, #50 => %157)::Int64
│ │ %125 = Core.Intrinsics.not_int(%119)::Bool
└───│ goto #51 if not %125
│ @ generator.jl:44 within `iterate' @ iterators.jl:431
40 ─│ %127 = (isa)(%120, Missing)::Bool
└───│ goto #42 if not %127
41 ─│ goto #45
42 ─│ %130 = (isa)(%120, Float64)::Bool
└───│ goto #44 if not %130
43 ─│ goto #45
44 ─│ Core.throw(ErrorException("fatal error in type inference (type bound)"))
└───│ $(Expr(:unreachable))
45 ┄│ %135 = φ (#41 => false, #43 => true)::Bool
└───│ goto #47 if not %135
│ @ generator.jl:44 within `iterate' @ iterators.jl:432
46 ─│ goto #52
│ @ generator.jl:44 within `iterate' @ iterators.jl:434
│┌ @ Base.jl:33 within `getproperty'
47 ─││ %138 = Base.getfield(%98, :itr)::Array{Union{Missing, Float64},1}
│ │└
│ │ @ generator.jl:44 within `iterate' @ iterators.jl:434 @ array.jl:734
│ │┌ @ int.jl:450 within `rem'
│ ││ %139 = Base.bitcast(UInt64, %121)::UInt64
│ │└
│ │┌ @ int.jl:858 within `-'
│ ││┌ @ int.jl:450 within `rem'
│ │││ %140 = Base.bitcast(UInt64, 1)::UInt64
│ ││└
│ ││ @ int.jl:860 within `-' @ int.jl:52
│ ││ %141 = Base.sub_int(%139, %140)::UInt64
│ │└
│ │┌ @ array.jl:214 within `length'
│ ││ %142 = Base.arraylen(%138)::Int64
│ │└
│ │┌ @ int.jl:416 within `<'
│ ││┌ @ operators.jl:341 within `>='
│ │││┌ @ int.jl:410 within `<='
│ ││││ %143 = Base.sle_int(0, %142)::Bool
│ ││└└
│ ││┌ @ essentials.jl:370 within `unsigned'
│ │││┌ @ essentials.jl:415 within `reinterpret'
│ ││││ %144 = Base.bitcast(UInt64, %142)::UInt64
│ ││└└
│ ││ @ int.jl:416 within `<' @ int.jl:409
│ ││ %145 = Base.ult_int(%141, %144)::Bool
│ ││ @ int.jl:416 within `<'
│ ││┌ @ bool.jl:40 within `&'
│ │││ %146 = Base.and_int(%143, %145)::Bool
│ │└└
└───│ goto #49 if not %146
│┌ @ array.jl:758 within `getindex'
48 ─││ %148 = Base.arrayref(false, %138, %121)::Union{Missing, Float64}
│ │└
│ │┌ @ int.jl:53 within `+'
│ ││ %149 = Base.add_int(%121, 1)::Int64
│ │└
└───│ goto #50
49 ─│ goto #50
│ @ generator.jl:44 within `iterate' @ iterators.jl:434
50 ┄│ %152 = φ (#48 => false, #49 => true)::Bool
│ │ %153 = φ (#48 => %148)::Union{Missing, Float64}
│ │ %154 = φ (#48 => %149)::Int64
│ │ %155 = φ (#48 => false)::Bool
│ │ %156 = φ (#48 => %148)::Union{Missing, Float64}
│ │ %157 = φ (#48 => %149)::Int64
└───│ goto #39
│ @ generator.jl:44 within `iterate' @ iterators.jl:436
51 ─│ goto #52
│ @ generator.jl:44 within `iterate'
52 ┄│ %160 = φ (#46 => %122, #51 => true)::Bool
│ │ %161 = φ (#46 => %123)::Union{Missing, Float64}
│ │ %162 = φ (#46 => %124)::Int64
│ │ @ generator.jl:45 within `iterate'
└───│ goto #54 if not %160
53 ─│ goto #60
│ @ generator.jl:47 within `iterate'
54 ─│ %165 = (isa)(%161, Missing)::Bool
└───│ goto #56 if not %165
55 ─│ goto #59
56 ─│ %168 = (isa)(%161, Float64)::Bool
└───│ goto #58 if not %168
57 ─│ %170 = π (%161, Float64)
└───│ goto #59
58 ─│ Core.throw(ErrorException("fatal error in type inference (type bound)"))
└───│ $(Expr(:unreachable))
59 ┄│ %174 = φ (#55 => $(QuoteNode(missing)), #57 => %170)::Union{Missing, Float64}
└───│ goto #60
60 ┄ %176 = φ (#59 => %162)::Int64
│ %177 = φ (#53 => true, #59 => false)::Bool
│ %178 = φ (#59 => %174)::Union{Missing, Float64}
│ @ reduce.jl:58 within `_foldl_impl'
└─── goto #62 if not %177
61 ─ goto #72
@ reduce.jl:59 within `_foldl_impl'
62 ─ %181 = (isa)(%97, Missing)::Bool
│ %182 = (isa)(%178, Missing)::Bool
│ %183 = (Core.Intrinsics.and_int)(%181, %182)::Bool
└─── goto #64 if not %183
63 ─ goto #71
64 ─ %186 = (isa)(%97, Float64)::Bool
│ %187 = (isa)(%178, Missing)::Bool
│ %188 = (Core.Intrinsics.and_int)(%186, %187)::Bool
└─── goto #66 if not %188
65 ─ goto #71
66 ─ %191 = (isa)(%97, Missing)::Bool
│ %192 = (isa)(%178, Float64)::Bool
│ %193 = (Core.Intrinsics.and_int)(%191, %192)::Bool
└─── goto #68 if not %193
67 ─ goto #71
68 ─ %196 = (isa)(%97, Float64)::Bool
│ %197 = (isa)(%178, Float64)::Bool
│ %198 = (Core.Intrinsics.and_int)(%196, %197)::Bool
└─── goto #70 if not %198
69 ─ %200 = π (%97, Float64)
│ %201 = π (%178, Float64)
│ ┌ @ reduce.jl:78 within `BottomRF'
│ │┌ @ float.jl:401 within `+'
│ ││ %202 = Base.add_float(%200, %201)::Float64
│ └└
└─── goto #71
70 ─ Core.throw(ErrorException("fatal error in type inference (type bound)"))
└─── $(Expr(:unreachable))
71 ┄ %206 = φ (#63 => $(QuoteNode(missing)), #65 => $(QuoteNode(missing)), #67 => $(QuoteNode(missing)), #69 => %202)::Union{Missing, Float64}
└─── goto #35
@ reduce.jl:61 within `_foldl_impl'
72 ─ return %97
; @ reduce.jl:53 within `_foldl_impl'
define { %jl_value_t addrspace(10)*, i8 } @julia__foldl_impl_17515([8 x i8]* noalias nocapture align 8 dereferenceable(8), %jl_value_t addrspace(10)* nonnull align 8 dereferenceable(8)) {
top:
%2 = alloca [1 x i64], align 8
%3 = alloca [1 x i64], align 8
; ┌ @ generator.jl:44 within `iterate'
; │┌ @ Base.jl:33 within `getproperty'
%4 = addrspacecast %jl_value_t addrspace(10)* %1 to %jl_value_t addrspace(11)*
%5 = bitcast %jl_value_t addrspace(11)* %4 to %jl_value_t addrspace(10)* addrspace(11)*
%6 = load %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %5, align 8
; │└
; │ @ generator.jl:44 within `iterate' @ iterators.jl:429
; │┌ @ Base.jl:33 within `getproperty'
%7 = addrspacecast %jl_value_t addrspace(10)* %6 to %jl_value_t addrspace(11)*
%8 = bitcast %jl_value_t addrspace(11)* %7 to %jl_value_t addrspace(10)* addrspace(11)*
%9 = load %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %8, align 8
; │└
; │ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 @ array.jl:734
; │┌ @ array.jl:214 within `length'
%10 = addrspacecast %jl_value_t addrspace(10)* %9 to %jl_value_t addrspace(11)*
%11 = bitcast %jl_value_t addrspace(11)* %10 to %jl_array_t addrspace(11)*
%12 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %11, i64 0, i32 1
%13 = load i64, i64 addrspace(11)* %12, align 8
; │└
%14 = icmp slt i64 %13, 1
br i1 %14, label %L85, label %L32.lr.ph
L32.lr.ph: ; preds = %top
; │┌ @ array.jl:758 within `getindex'
%15 = bitcast %jl_value_t addrspace(11)* %10 to [1 x i64] addrspace(13)* addrspace(11)*
%16 = load [1 x i64] addrspace(13)*, [1 x i64] addrspace(13)* addrspace(11)* %15, align 8
%17 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %11, i64 0, i32 4
%18 = load i32, i32 addrspace(11)* %17, align 4
%19 = zext i32 %18 to i64
%20 = bitcast %jl_value_t addrspace(11)* %10 to %jl_value_t addrspace(10)* addrspace(11)*
%21 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %20, i64 4
%22 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %21 to i64 addrspace(11)*
%23 = load i64, i64 addrspace(11)* %22, align 8
%24 = sub i64 %23, %19
%25 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %16, i64 %24
%26 = bitcast [1 x i64] addrspace(13)* %25 to i8 addrspace(13)*
%27 = sext i32 %18 to i64
%28 = getelementptr inbounds i8, i8 addrspace(13)* %26, i64 %27
%29 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %16, i64 0, i64 0
%30 = addrspacecast %jl_value_t addrspace(10)* %9 to %jl_value_t addrspace(11)*
%31 = bitcast %jl_value_t addrspace(11)* %30 to %jl_array_t addrspace(11)*
%32 = bitcast %jl_value_t addrspace(11)* %30 to [1 x i64] addrspace(13)* addrspace(11)*
%33 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %31, i64 0, i32 4
%34 = bitcast %jl_value_t addrspace(11)* %30 to %jl_value_t addrspace(10)* addrspace(11)*
%35 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %34, i64 4
%36 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %35 to i64 addrspace(11)*
; │└
; │ @ generator.jl:44 within `iterate' @ iterators.jl:430
br label %L32
L32: ; preds = %L57, %L32.lr.ph
%.sroa.0275.0.copyload277.in = phi i64 addrspace(13)* [ %29, %L32.lr.ph ], [ %52, %L57 ]
%value_phi9425 = phi i64 [ 2, %L32.lr.ph ], [ %53, %L57 ]
%tindex_phi7424.in.in = phi i8 addrspace(13)* [ %28, %L32.lr.ph ], [ %51, %L57 ]
; │ @ generator.jl:44 within `iterate' @ iterators.jl:0
%tindex_phi7424.in = load i8, i8 addrspace(13)* %tindex_phi7424.in.in, align 1
%.sroa.0275.0.copyload277 = load i64, i64 addrspace(13)* %.sroa.0275.0.copyload277.in, align 8
; │ @ generator.jl:44 within `iterate' @ iterators.jl:431
%trunc = icmp ne i8 %tindex_phi7424.in, 0
%switch = icmp ult i1 %trunc, true
br i1 %switch, label %L43, label %L42
L42: ; preds = %L32
; │ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 @ array.jl:734
%37 = icmp eq i8 %tindex_phi7424.in, 1
br i1 %37, label %L73.thread, label %L95
L43: ; preds = %L32
; │ @ generator.jl:44 within `iterate' @ iterators.jl:434 @ array.jl:734
; │┌ @ int.jl:860 within `-' @ int.jl:52
%38 = add i64 %value_phi9425, -1
; │└
; │┌ @ int.jl:416 within `<' @ int.jl:409
%39 = icmp uge i64 %38, %13
; ││ @ int.jl:416 within `<'
; ││┌ @ bool.jl:40 within `&'
%40 = icmp slt i64 %13, 0
; │└└
%41 = or i1 %40, %39
br i1 %41, label %L85, label %L57
L57: ; preds = %L43
; │┌ @ array.jl:758 within `getindex'
%42 = load [1 x i64] addrspace(13)*, [1 x i64] addrspace(13)* addrspace(11)* %32, align 8
%43 = load i32, i32 addrspace(11)* %33, align 4
%44 = zext i32 %43 to i64
%45 = load i64, i64 addrspace(11)* %36, align 8
%46 = sub i64 %45, %44
%47 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %42, i64 %46
%48 = bitcast [1 x i64] addrspace(13)* %47 to i8 addrspace(13)*
%49 = sext i32 %43 to i64
%50 = getelementptr inbounds i8, i8 addrspace(13)* %48, i64 %49
%51 = getelementptr inbounds i8, i8 addrspace(13)* %50, i64 %38
%52 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %42, i64 %38, i64 0
; │└
; │┌ @ int.jl:53 within `+'
%53 = add i64 %value_phi9425, 1
; │└
; │ @ generator.jl:44 within `iterate' @ iterators.jl:430
br label %L32
L85: ; preds = %L43, %top, %union_move54
%merge = phi { %jl_value_t addrspace(10)*, i8 } [ { %jl_value_t addrspace(10)* addrspacecast (%jl_value_t* null to %jl_value_t addrspace(10)*), i8 3 }, %union_move54 ], [ { %jl_value_t addrspace(10)* addrspacecast (%jl_value_t* null to %jl_value_t addrspace(10)*), i8 2 }, %top ], [ { %jl_value_t addrspace(10)* addrspacecast (%jl_value_t* null to %jl_value_t addrspace(10)*), i8 2 }, %L43 ]
; └
; @ reduce.jl:54 within `_foldl_impl'
ret { %jl_value_t addrspace(10)*, i8 } %merge
L95: ; preds = %L73.thread, %L42
; @ reduce.jl:57 within `_foldl_impl'
; ┌ @ generator.jl:45 within `iterate'
%54 = bitcast [1 x i64]* %2 to double*
%55 = addrspacecast double* %54 to double addrspace(11)*
%56 = load double, double addrspace(11)* %55, align 8
%.sroa.0228.0..sroa_idx360364 = getelementptr inbounds [1 x i64], [1 x i64]* %3, i64 0, i64 0
; └
; @ reduce.jl:53 within `_foldl_impl'
; ┌ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 @ array.jl:734
br label %L96
L96: ; preds = %L207, %L95
%57 = phi double [ %56, %L95 ], [ %105, %L207 ]
%.sroa.0228.0 = phi i64 [ undef, %L95 ], [ %.sroa.0228.0.copyload230, %L207 ]
%value_phi25 = phi i64 [ %value_phi9425, %L95 ], [ %value_phi39417, %L207 ]
; └
; @ reduce.jl:57 within `_foldl_impl'
; ┌ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734
; │┌ @ int.jl:860 within `-' @ int.jl:52
%58 = add i64 %value_phi25, -1
; │└
; │┌ @ array.jl:214 within `length'
%59 = addrspacecast %jl_value_t addrspace(10)* %9 to %jl_value_t addrspace(11)*
; │└
; │┌ @ int.jl:416 within `<' @ int.jl:409
%60 = icmp uge i64 %58, %13
; ││ @ int.jl:416 within `<'
; ││┌ @ bool.jl:40 within `&'
%61 = icmp slt i64 %13, 0
; │└└
%62 = or i1 %61, %60
br i1 %62, label %union_move54, label %L128.lr.ph
L128.lr.ph: ; preds = %L96
; │┌ @ array.jl:214 within `length'
%63 = bitcast %jl_value_t addrspace(11)* %59 to %jl_array_t addrspace(11)*
; │└
; │┌ @ array.jl:758 within `getindex'
%64 = bitcast %jl_value_t addrspace(11)* %59 to [1 x i64] addrspace(13)* addrspace(11)*
%65 = load [1 x i64] addrspace(13)*, [1 x i64] addrspace(13)* addrspace(11)* %64, align 8
%66 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %63, i64 0, i32 4
%67 = load i32, i32 addrspace(11)* %66, align 4
%68 = zext i32 %67 to i64
%69 = bitcast %jl_value_t addrspace(11)* %59 to %jl_value_t addrspace(10)* addrspace(11)*
%70 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %69, i64 4
%71 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %70 to i64 addrspace(11)*
%72 = load i64, i64 addrspace(11)* %71, align 8
%73 = sub i64 %72, %68
%74 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %65, i64 %73
%75 = bitcast [1 x i64] addrspace(13)* %74 to i8 addrspace(13)*
%76 = sext i32 %67 to i64
%77 = getelementptr inbounds i8, i8 addrspace(13)* %75, i64 %76
%78 = getelementptr inbounds i8, i8 addrspace(13)* %77, i64 %58
%79 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %65, i64 %58, i64 0
%80 = addrspacecast %jl_value_t addrspace(10)* %9 to %jl_value_t addrspace(11)*
%81 = bitcast %jl_value_t addrspace(11)* %80 to %jl_array_t addrspace(11)*
%82 = bitcast %jl_value_t addrspace(11)* %80 to [1 x i64] addrspace(13)* addrspace(11)*
%83 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %81, i64 0, i32 4
%84 = bitcast %jl_value_t addrspace(11)* %80 to %jl_value_t addrspace(10)* addrspace(11)*
%85 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %84, i64 4
%86 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %85 to i64 addrspace(11)*
; │└
; │ @ generator.jl:44 within `iterate' @ iterators.jl:430
br label %L128
L128: ; preds = %L153, %L128.lr.ph
%.sroa.0228.0.copyload230.in = phi i64 addrspace(13)* [ %79, %L128.lr.ph ], [ %101, %L153 ]
%value_phi39417.in = phi i64 [ %value_phi25, %L128.lr.ph ], [ %value_phi39417, %L153 ]
%tindex_phi37416.in.in = phi i8 addrspace(13)* [ %78, %L128.lr.ph ], [ %100, %L153 ]
; │ @ generator.jl:44 within `iterate' @ iterators.jl:0
%tindex_phi37416.in = load i8, i8 addrspace(13)* %tindex_phi37416.in.in, align 1
%value_phi39417 = add i64 %value_phi39417.in, 1
%.sroa.0228.0.copyload230 = load i64, i64 addrspace(13)* %.sroa.0228.0.copyload230.in, align 8
; │ @ generator.jl:44 within `iterate' @ iterators.jl:431
%trunc478 = icmp ne i8 %tindex_phi37416.in, 0
%switch497 = icmp ult i1 %trunc478, true
br i1 %switch497, label %L139, label %L138
L138: ; preds = %L128
; └
; @ reduce.jl:53 within `_foldl_impl'
; ┌ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 @ array.jl:734
%87 = icmp eq i8 %tindex_phi37416.in, 1
br i1 %87, label %L169.thread, label %L207
L139: ; preds = %L128
; └
; @ reduce.jl:57 within `_foldl_impl'
; ┌ @ generator.jl:44 within `iterate' @ iterators.jl:434 @ array.jl:734
; │┌ @ int.jl:416 within `<' @ int.jl:409
%88 = icmp uge i64 %value_phi39417.in, %13
; ││ @ int.jl:416 within `<'
; ││┌ @ bool.jl:40 within `&'
%89 = icmp slt i64 %13, 0
; │└└
%90 = or i1 %89, %88
br i1 %90, label %union_move54, label %L153
L153: ; preds = %L139
; │┌ @ array.jl:758 within `getindex'
%91 = load [1 x i64] addrspace(13)*, [1 x i64] addrspace(13)* addrspace(11)* %82, align 8
%92 = load i32, i32 addrspace(11)* %83, align 4
%93 = zext i32 %92 to i64
%94 = load i64, i64 addrspace(11)* %86, align 8
%95 = sub i64 %94, %93
%96 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %91, i64 %95
%97 = bitcast [1 x i64] addrspace(13)* %96 to i8 addrspace(13)*
%98 = sext i32 %92 to i64
%99 = getelementptr inbounds i8, i8 addrspace(13)* %97, i64 %98
%100 = getelementptr inbounds i8, i8 addrspace(13)* %99, i64 %value_phi39417.in
%101 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %91, i64 %value_phi39417.in, i64 0
; │└
; │ @ generator.jl:44 within `iterate' @ iterators.jl:430
br label %L128
L207: ; preds = %L169.thread, %L138
; │ @ generator.jl:45 within `iterate'
%102 = bitcast [1 x i64]* %3 to double*
%103 = addrspacecast double* %102 to double addrspace(11)*
%104 = load double, double addrspace(11)* %103, align 8
; └
; @ reduce.jl:59 within `_foldl_impl'
; ┌ @ reduce.jl:78 within `BottomRF'
; │┌ @ float.jl:401 within `+'
%105 = fadd double %57, %104
; └└
; @ reduce.jl:53 within `_foldl_impl'
; ┌ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 @ array.jl:734
br label %L96
union_move54: ; preds = %L96, %L139
; └
; @ reduce.jl:57 within `_foldl_impl'
; ┌ @ generator.jl:44 within `iterate'
store i64 %.sroa.0228.0, i64* %.sroa.0228.0..sroa_idx360364, align 8
; └
; @ reduce.jl:61 within `_foldl_impl'
%106 = bitcast [8 x i8]* %0 to double*
store double %57, double* %106, align 8
br label %L85
L73.thread: ; preds = %L42
; @ reduce.jl:53 within `_foldl_impl'
; ┌ @ generator.jl:44 within `iterate'
%.sroa.0275.0..sroa_idx353355 = getelementptr inbounds [1 x i64], [1 x i64]* %2, i64 0, i64 0
store i64 %.sroa.0275.0.copyload277, i64* %.sroa.0275.0..sroa_idx353355, align 8
; │ @ generator.jl:47 within `iterate'
br label %L95
L169.thread: ; preds = %L138
; └
; @ reduce.jl:57 within `_foldl_impl'
; ┌ @ generator.jl:44 within `iterate'
store i64 %.sroa.0228.0.copyload230, i64* %.sroa.0228.0..sroa_idx360364, align 8
; │ @ generator.jl:47 within `iterate'
br label %L207
; └
}
│ ─ %-1 = invoke _foldl_impl(::Base.BottomRF{typeof(+)},::Base._InitialValue,::Base.Generator{Base.Iterators.Filter{var"#38#40",Array{Union{Missing, Float64},1}},var"#37#39"})::Union{Missing, Base._InitialValue, Float64}
Body::Union{Missing, Base._InitialValue, Float64}
@ reduce.jl:53 within `_foldl_impl'
┌ @ generator.jl:44 within `iterate'
│┌ @ Base.jl:33 within `getproperty'
1 ──││ %1 = Base.getfield(itr, :iter)::Base.Iterators.Filter{var"#38#40",Array{Union{Missing, Float64},1}}
│ │└
│ │ @ generator.jl:44 within `iterate' @ iterators.jl:429
│ │┌ @ Base.jl:33 within `getproperty'
│ ││ %2 = Base.getfield(%1, :itr)::Array{Union{Missing, Float64},1}
│ │└
│ │ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 @ array.jl:734
│ │┌ @ int.jl:450 within `rem'
│ ││ %3 = Base.bitcast(UInt64, 1)::UInt64
│ │└
│ │┌ @ int.jl:858 within `-'
│ ││┌ @ int.jl:450 within `rem'
│ │││ %4 = Base.bitcast(UInt64, 1)::UInt64
│ ││└
│ ││ @ int.jl:860 within `-' @ int.jl:52
│ ││ %5 = Base.sub_int(%3, %4)::UInt64
│ │└
│ │┌ @ array.jl:214 within `length'
│ ││ %6 = Base.arraylen(%2)::Int64
│ │└
│ │┌ @ int.jl:416 within `<'
│ ││┌ @ operators.jl:341 within `>='
│ │││┌ @ int.jl:410 within `<='
│ ││││ %7 = Base.sle_int(0, %6)::Bool
│ ││└└
│ ││┌ @ essentials.jl:368 within `unsigned'
│ │││┌ @ essentials.jl:413 within `reinterpret'
│ ││││ %8 = Base.bitcast(UInt64, %6)::UInt64
│ ││└└
│ ││ @ int.jl:416 within `<' @ int.jl:409
│ ││ %9 = Base.ult_int(%5, %8)::Bool
│ ││ @ int.jl:416 within `<'
│ ││┌ @ bool.jl:40 within `&'
│ │││ %10 = Base.and_int(%7, %9)::Bool
│ │└└
└───│ goto #3 if not %10
│┌ @ array.jl:758 within `getindex'
2 ──││ %12 = Base.arrayref(false, %2, 1)::Union{Missing, Float64}
│ │└
│ │┌ @ int.jl:53 within `+'
│ ││ %13 = Base.add_int(1, 1)::Int64
│ │└
└───│ goto #4
3 ──│ goto #4
│ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734
4 ┄─│ %16 = φ (#2 => false, #3 => true)::Bool
│ │ %17 = φ (#2 => %12)::Union{Missing, Float64}
│ │ %18 = φ (#2 => %13)::Int64
│ │ %19 = φ (#2 => false)::Bool
│ │ %20 = φ (#2 => %12)::Union{Missing, Float64}
│ │ %21 = φ (#2 => %13)::Int64
└───│ goto #5
5 ──│ nothing
│ @ generator.jl:44 within `iterate' @ iterators.jl:430
6 ┄─│ %24 = φ (#5 => %16, #17 => %57)::Bool
│ │ %25 = φ (#5 => %17, #17 => %58)::Union{Missing, Float64}
│ │ %26 = φ (#5 => %18, #17 => %59)::Int64
│ │ %27 = φ (#5 => %19, #17 => %60)::Bool
│ │ %28 = φ (#5 => %20, #17 => %61)::Union{Missing, Float64}
│ │ %29 = φ (#5 => %21, #17 => %62)::Int64
│ │ %30 = Core.Intrinsics.not_int(%24)::Bool
└───│ goto #18 if not %30
│ @ generator.jl:44 within `iterate' @ iterators.jl:431
7 ──│ %32 = (isa)(%25, Missing)::Bool
└───│ goto #9 if not %32
8 ──│ goto #12
9 ──│ %35 = (isa)(%25, Float64)::Bool
└───│ goto #11 if not %35
10 ─│ goto #12
11 ─│ Core.throw(ErrorException("fatal error in type inference (type bound)"))
└───│ $(Expr(:unreachable))
12 ┄│ %40 = φ (#8 => false, #10 => true)::Bool
└───│ goto #14 if not %40
│ @ generator.jl:44 within `iterate' @ iterators.jl:432
13 ─│ goto #19
│ @ generator.jl:44 within `iterate' @ iterators.jl:434
│┌ @ Base.jl:33 within `getproperty'
14 ─││ %43 = Base.getfield(%1, :itr)::Array{Union{Missing, Float64},1}
│ │└
│ │ @ generator.jl:44 within `iterate' @ iterators.jl:434 @ array.jl:734
│ │┌ @ int.jl:450 within `rem'
│ ││ %44 = Base.bitcast(UInt64, %26)::UInt64
│ │└
│ │┌ @ int.jl:858 within `-'
│ ││┌ @ int.jl:450 within `rem'
│ │││ %45 = Base.bitcast(UInt64, 1)::UInt64
│ ││└
│ ││ @ int.jl:860 within `-' @ int.jl:52
│ ││ %46 = Base.sub_int(%44, %45)::UInt64
│ │└
│ │┌ @ array.jl:214 within `length'
│ ││ %47 = Base.arraylen(%43)::Int64
│ │└
│ │┌ @ int.jl:416 within `<'
│ ││┌ @ operators.jl:341 within `>='
│ │││┌ @ int.jl:410 within `<='
│ ││││ %48 = Base.sle_int(0, %47)::Bool
│ ││└└
│ ││┌ @ essentials.jl:368 within `unsigned'
│ │││┌ @ essentials.jl:413 within `reinterpret'
│ ││││ %49 = Base.bitcast(UInt64, %47)::UInt64
│ ││└└
│ ││ @ int.jl:416 within `<' @ int.jl:409
│ ││ %50 = Base.ult_int(%46, %49)::Bool
│ ││ @ int.jl:416 within `<'
│ ││┌ @ bool.jl:40 within `&'
│ │││ %51 = Base.and_int(%48, %50)::Bool
│ │└└
└───│ goto #16 if not %51
│┌ @ array.jl:758 within `getindex'
15 ─││ %53 = Base.arrayref(false, %43, %26)::Union{Missing, Float64}
│ │└
│ │┌ @ int.jl:53 within `+'
│ ││ %54 = Base.add_int(%26, 1)::Int64
│ │└
└───│ goto #17
16 ─│ goto #17
│ @ generator.jl:44 within `iterate' @ iterators.jl:434
17 ┄│ %57 = φ (#15 => false, #16 => true)::Bool
│ │ %58 = φ (#15 => %53)::Union{Missing, Float64}
│ │ %59 = φ (#15 => %54)::Int64
│ │ %60 = φ (#15 => false)::Bool
│ │ %61 = φ (#15 => %53)::Union{Missing, Float64}
│ │ %62 = φ (#15 => %54)::Int64
└───│ goto #6
│ @ generator.jl:44 within `iterate' @ iterators.jl:436
18 ─│ goto #19
│ @ generator.jl:44 within `iterate'
19 ┄│ %65 = φ (#13 => %27, #18 => true)::Bool
│ │ %66 = φ (#13 => %28)::Union{Missing, Float64}
│ │ %67 = φ (#13 => %29)::Int64
│ │ @ generator.jl:45 within `iterate'
└───│ goto #21 if not %65
20 ─│ goto #27
│ @ generator.jl:47 within `iterate'
21 ─│ %70 = (isa)(%66, Missing)::Bool
└───│ goto #23 if not %70
22 ─│ goto #26
23 ─│ %73 = (isa)(%66, Float64)::Bool
└───│ goto #25 if not %73
24 ─│ %75 = π (%66, Float64)
└───│ goto #26
25 ─│ Core.throw(ErrorException("fatal error in type inference (type bound)"))
└───│ $(Expr(:unreachable))
26 ┄│ %79 = φ (#22 => $(QuoteNode(missing)), #24 => %75)::Union{Missing, Float64}
└───│ goto #27
27 ┄ %81 = φ (#20 => true, #26 => false)::Bool
│ %82 = φ (#26 => %79)::Union{Missing, Float64}
│ %83 = φ (#26 => %67)::Int64
│ @ reduce.jl:54 within `_foldl_impl'
└─── goto #29 if not %81
28 ─ return init
@ reduce.jl:55 within `_foldl_impl'
29 ─ %86 = (isa)(%82, Missing)::Bool
└─── goto #31 if not %86
30 ─ goto #34
31 ─ %89 = (isa)(%82, Float64)::Bool
└─── goto #33 if not %89
32 ─ %91 = π (%82, Float64)
└─── goto #34
33 ─ Core.throw(ErrorException("fatal error in type inference (type bound)"))
└─── $(Expr(:unreachable))
34 ┄ %95 = φ (#30 => $(QuoteNode(missing)), #32 => %91)::Union{Missing, Float64}
@ reduce.jl:56 within `_foldl_impl'
35 ┄ %96 = φ (#34 => %83, #71 => %176)::Int64
│ %97 = φ (#34 => %95, #71 => %206)::Union{Missing, Float64}
│ @ reduce.jl:57 within `_foldl_impl'
│ ┌ @ generator.jl:44 within `iterate'
│ │┌ @ Base.jl:33 within `getproperty'
│ ││ %98 = Base.getfield(itr, :iter)::Base.Iterators.Filter{var"#38#40",Array{Union{Missing, Float64},1}}
│ │└
│ │ @ generator.jl:44 within `iterate' @ iterators.jl:429
│ │┌ @ Base.jl:33 within `getproperty'
│ ││ %99 = Base.getfield(%98, :itr)::Array{Union{Missing, Float64},1}
│ │└
│ │ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734
│ │┌ @ int.jl:450 within `rem'
│ ││ %100 = Base.bitcast(UInt64, %96)::UInt64
│ │└
│ │┌ @ int.jl:858 within `-'
│ ││┌ @ int.jl:450 within `rem'
│ │││ %101 = Base.bitcast(UInt64, 1)::UInt64
│ ││└
│ ││ @ int.jl:860 within `-' @ int.jl:52
│ ││ %102 = Base.sub_int(%100, %101)::UInt64
│ │└
│ │┌ @ array.jl:214 within `length'
│ ││ %103 = Base.arraylen(%99)::Int64
│ │└
│ │┌ @ int.jl:416 within `<'
│ ││┌ @ operators.jl:341 within `>='
│ │││┌ @ int.jl:410 within `<='
│ ││││ %104 = Base.sle_int(0, %103)::Bool
│ ││└└
│ ││┌ @ essentials.jl:368 within `unsigned'
│ │││┌ @ essentials.jl:413 within `reinterpret'
│ ││││ %105 = Base.bitcast(UInt64, %103)::UInt64
│ ││└└
│ ││ @ int.jl:416 within `<' @ int.jl:409
│ ││ %106 = Base.ult_int(%102, %105)::Bool
│ ││ @ int.jl:416 within `<'
│ ││┌ @ bool.jl:40 within `&'
│ │││ %107 = Base.and_int(%104, %106)::Bool
│ │└└
└───│ goto #37 if not %107
│┌ @ array.jl:758 within `getindex'
36 ─││ %109 = Base.arrayref(false, %99, %96)::Union{Missing, Float64}
│ │└
│ │┌ @ int.jl:53 within `+'
│ ││ %110 = Base.add_int(%96, 1)::Int64
│ │└
└───│ goto #38
37 ─│ goto #38
│ @ generator.jl:44 within `iterate' @ iterators.jl:429
38 ┄│ %113 = φ (#36 => false, #37 => true)::Bool
│ │ %114 = φ (#36 => %109)::Union{Missing, Float64}
│ │ %115 = φ (#36 => %110)::Int64
│ │ %116 = φ (#36 => false)::Bool
│ │ %117 = φ (#36 => %109)::Union{Missing, Float64}
└───│ %118 = φ (#36 => %110)::Int64
│ @ generator.jl:44 within `iterate' @ iterators.jl:430
39 ┄│ %119 = φ (#38 => %113, #50 => %152)::Bool
│ │ %120 = φ (#38 => %114, #50 => %153)::Union{Missing, Float64}
│ │ %121 = φ (#38 => %115, #50 => %154)::Int64
│ │ %122 = φ (#38 => %116, #50 => %155)::Bool
│ │ %123 = φ (#38 => %117, #50 => %156)::Union{Missing, Float64}
│ │ %124 = φ (#38 => %118, #50 => %157)::Int64
│ │ %125 = Core.Intrinsics.not_int(%119)::Bool
└───│ goto #51 if not %125
│ @ generator.jl:44 within `iterate' @ iterators.jl:431
40 ─│ %127 = (isa)(%120, Missing)::Bool
└───│ goto #42 if not %127
41 ─│ goto #45
42 ─│ %130 = (isa)(%120, Float64)::Bool
└───│ goto #44 if not %130
43 ─│ goto #45
44 ─│ Core.throw(ErrorException("fatal error in type inference (type bound)"))
└───│ $(Expr(:unreachable))
45 ┄│ %135 = φ (#41 => false, #43 => true)::Bool
└───│ goto #47 if not %135
│ @ generator.jl:44 within `iterate' @ iterators.jl:432
46 ─│ goto #52
│ @ generator.jl:44 within `iterate' @ iterators.jl:434
│┌ @ Base.jl:33 within `getproperty'
47 ─││ %138 = Base.getfield(%98, :itr)::Array{Union{Missing, Float64},1}
│ │└
│ │ @ generator.jl:44 within `iterate' @ iterators.jl:434 @ array.jl:734
│ │┌ @ int.jl:450 within `rem'
│ ││ %139 = Base.bitcast(UInt64, %121)::UInt64
│ │└
│ │┌ @ int.jl:858 within `-'
│ ││┌ @ int.jl:450 within `rem'
│ │││ %140 = Base.bitcast(UInt64, 1)::UInt64
│ ││└
│ ││ @ int.jl:860 within `-' @ int.jl:52
│ ││ %141 = Base.sub_int(%139, %140)::UInt64
│ │└
│ │┌ @ array.jl:214 within `length'
│ ││ %142 = Base.arraylen(%138)::Int64
│ │└
│ │┌ @ int.jl:416 within `<'
│ ││┌ @ operators.jl:341 within `>='
│ │││┌ @ int.jl:410 within `<='
│ ││││ %143 = Base.sle_int(0, %142)::Bool
│ ││└└
│ ││┌ @ essentials.jl:368 within `unsigned'
│ │││┌ @ essentials.jl:413 within `reinterpret'
│ ││││ %144 = Base.bitcast(UInt64, %142)::UInt64
│ ││└└
│ ││ @ int.jl:416 within `<' @ int.jl:409
│ ││ %145 = Base.ult_int(%141, %144)::Bool
│ ││ @ int.jl:416 within `<'
│ ││┌ @ bool.jl:40 within `&'
│ │││ %146 = Base.and_int(%143, %145)::Bool
│ │└└
└───│ goto #49 if not %146
│┌ @ array.jl:758 within `getindex'
48 ─││ %148 = Base.arrayref(false, %138, %121)::Union{Missing, Float64}
│ │└
│ │┌ @ int.jl:53 within `+'
│ ││ %149 = Base.add_int(%121, 1)::Int64
│ │└
└───│ goto #50
49 ─│ goto #50
│ @ generator.jl:44 within `iterate' @ iterators.jl:434
50 ┄│ %152 = φ (#48 => false, #49 => true)::Bool
│ │ %153 = φ (#48 => %148)::Union{Missing, Float64}
│ │ %154 = φ (#48 => %149)::Int64
│ │ %155 = φ (#48 => false)::Bool
│ │ %156 = φ (#48 => %148)::Union{Missing, Float64}
│ │ %157 = φ (#48 => %149)::Int64
└───│ goto #39
│ @ generator.jl:44 within `iterate' @ iterators.jl:436
51 ─│ goto #52
│ @ generator.jl:44 within `iterate'
52 ┄│ %160 = φ (#46 => %122, #51 => true)::Bool
│ │ %161 = φ (#46 => %123)::Union{Missing, Float64}
│ │ %162 = φ (#46 => %124)::Int64
│ │ @ generator.jl:45 within `iterate'
└───│ goto #54 if not %160
53 ─│ goto #60
│ @ generator.jl:47 within `iterate'
54 ─│ %165 = (isa)(%161, Missing)::Bool
└───│ goto #56 if not %165
55 ─│ goto #59
56 ─│ %168 = (isa)(%161, Float64)::Bool
└───│ goto #58 if not %168
57 ─│ %170 = π (%161, Float64)
└───│ goto #59
58 ─│ Core.throw(ErrorException("fatal error in type inference (type bound)"))
└───│ $(Expr(:unreachable))
59 ┄│ %174 = φ (#55 => $(QuoteNode(missing)), #57 => %170)::Union{Missing, Float64}
└───│ goto #60
60 ┄ %176 = φ (#59 => %162)::Int64
│ %177 = φ (#53 => true, #59 => false)::Bool
│ %178 = φ (#59 => %174)::Union{Missing, Float64}
│ @ reduce.jl:58 within `_foldl_impl'
└─── goto #62 if not %177
61 ─ goto #72
@ reduce.jl:59 within `_foldl_impl'
62 ─ %181 = (isa)(%97, Missing)::Bool
│ %182 = (isa)(%178, Missing)::Bool
│ %183 = (Core.Intrinsics.and_int)(%181, %182)::Bool
└─── goto #64 if not %183
63 ─ goto #71
64 ─ %186 = (isa)(%97, Float64)::Bool
│ %187 = (isa)(%178, Missing)::Bool
│ %188 = (Core.Intrinsics.and_int)(%186, %187)::Bool
└─── goto #66 if not %188
65 ─ goto #71
66 ─ %191 = (isa)(%97, Missing)::Bool
│ %192 = (isa)(%178, Float64)::Bool
│ %193 = (Core.Intrinsics.and_int)(%191, %192)::Bool
└─── goto #68 if not %193
67 ─ goto #71
68 ─ %196 = (isa)(%97, Float64)::Bool
│ %197 = (isa)(%178, Float64)::Bool
│ %198 = (Core.Intrinsics.and_int)(%196, %197)::Bool
└─── goto #70 if not %198
69 ─ %200 = π (%97, Float64)
│ %201 = π (%178, Float64)
│ ┌ @ reduce.jl:78 within `BottomRF'
│ │┌ @ float.jl:401 within `+'
│ ││ %202 = Base.add_float(%200, %201)::Float64
│ └└
└─── goto #71
70 ─ Core.throw(ErrorException("fatal error in type inference (type bound)"))
└─── $(Expr(:unreachable))
71 ┄ %206 = φ (#63 => $(QuoteNode(missing)), #65 => $(QuoteNode(missing)), #67 => $(QuoteNode(missing)), #69 => %202)::Union{Missing, Float64}
└─── goto #35
@ reduce.jl:61 within `_foldl_impl'
72 ─ return %97
; @ reduce.jl:53 within `_foldl_impl'
define { %jl_value_t addrspace(10)*, i8 } @julia__foldl_impl_17219([8 x i8]* noalias nocapture align 8 dereferenceable(8), %jl_value_t addrspace(10)* nonnull align 8 dereferenceable(8)) {
top:
; ┌ @ generator.jl:44 within `iterate'
; │┌ @ Base.jl:33 within `getproperty'
%2 = addrspacecast %jl_value_t addrspace(10)* %1 to %jl_value_t addrspace(11)*
%3 = bitcast %jl_value_t addrspace(11)* %2 to %jl_value_t addrspace(10)* addrspace(11)*
%4 = load %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %3, align 8
; │└
; │ @ generator.jl:44 within `iterate' @ iterators.jl:429
; │┌ @ Base.jl:33 within `getproperty'
%5 = addrspacecast %jl_value_t addrspace(10)* %4 to %jl_value_t addrspace(11)*
%6 = bitcast %jl_value_t addrspace(11)* %5 to %jl_value_t addrspace(10)* addrspace(11)*
%7 = load %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %6, align 8
; │└
; │ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 @ array.jl:734
; │┌ @ array.jl:214 within `length'
%8 = addrspacecast %jl_value_t addrspace(10)* %7 to %jl_value_t addrspace(11)*
%9 = bitcast %jl_value_t addrspace(11)* %8 to %jl_array_t addrspace(11)*
%10 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %9, i64 0, i32 1
%11 = load i64, i64 addrspace(11)* %10, align 8
; │└
%12 = icmp slt i64 %11, 1
br i1 %12, label %L85, label %L32.lr.ph
L32.lr.ph: ; preds = %top
; │┌ @ array.jl:758 within `getindex'
%13 = bitcast %jl_value_t addrspace(11)* %8 to [1 x i64] addrspace(13)* addrspace(11)*
%14 = load [1 x i64] addrspace(13)*, [1 x i64] addrspace(13)* addrspace(11)* %13, align 8
%15 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %9, i64 0, i32 4
%16 = load i32, i32 addrspace(11)* %15, align 4
%17 = zext i32 %16 to i64
%18 = bitcast %jl_value_t addrspace(11)* %8 to %jl_value_t addrspace(10)* addrspace(11)*
%19 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %18, i64 4
%20 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %19 to i64 addrspace(11)*
%21 = load i64, i64 addrspace(11)* %20, align 8
%22 = sub i64 %21, %17
%23 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %14, i64 %22
%24 = bitcast [1 x i64] addrspace(13)* %23 to i8 addrspace(13)*
%25 = sext i32 %16 to i64
%26 = getelementptr inbounds i8, i8 addrspace(13)* %24, i64 %25
%27 = bitcast [1 x i64] addrspace(13)* %14 to double addrspace(13)*
%28 = addrspacecast %jl_value_t addrspace(10)* %7 to %jl_value_t addrspace(11)*
%29 = bitcast %jl_value_t addrspace(11)* %28 to %jl_array_t addrspace(11)*
%30 = bitcast %jl_value_t addrspace(11)* %28 to [1 x i64] addrspace(13)* addrspace(11)*
%31 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %29, i64 0, i32 4
%32 = bitcast %jl_value_t addrspace(11)* %28 to %jl_value_t addrspace(10)* addrspace(11)*
%33 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %32, i64 4
%34 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %33 to i64 addrspace(11)*
; │└
; │ @ generator.jl:44 within `iterate' @ iterators.jl:430
br label %L32
L32: ; preds = %L57, %L32.lr.ph
%.in = phi double addrspace(13)* [ %27, %L32.lr.ph ], [ %50, %L57 ]
%value_phi9381 = phi i64 [ 2, %L32.lr.ph ], [ %51, %L57 ]
%tindex_phi7380.in.in = phi i8 addrspace(13)* [ %26, %L32.lr.ph ], [ %48, %L57 ]
; │ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 @ array.jl:734
; │┌ @ array.jl:758 within `getindex'
%tindex_phi7380.in = load i8, i8 addrspace(13)* %tindex_phi7380.in.in, align 1
; │└
; │ @ generator.jl:44 within `iterate' @ iterators.jl:431
%trunc = icmp ne i8 %tindex_phi7380.in, 0
%switch = icmp ult i1 %trunc, true
br i1 %switch, label %L43, label %L95.L95.split_crit_edge
L43: ; preds = %L32
; │ @ generator.jl:44 within `iterate' @ iterators.jl:434 @ array.jl:734
; │┌ @ int.jl:860 within `-' @ int.jl:52
%35 = add i64 %value_phi9381, -1
; │└
; │┌ @ int.jl:416 within `<' @ int.jl:409
%36 = icmp uge i64 %35, %11
; ││ @ int.jl:416 within `<'
; ││┌ @ bool.jl:40 within `&'
%37 = icmp slt i64 %11, 0
; │└└
%38 = or i1 %37, %36
br i1 %38, label %L85, label %L57
L57: ; preds = %L43
; │┌ @ array.jl:758 within `getindex'
%39 = load [1 x i64] addrspace(13)*, [1 x i64] addrspace(13)* addrspace(11)* %30, align 8
%40 = load i32, i32 addrspace(11)* %31, align 4
%41 = zext i32 %40 to i64
%42 = load i64, i64 addrspace(11)* %34, align 8
%43 = sub i64 %42, %41
%44 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %39, i64 %43
%45 = bitcast [1 x i64] addrspace(13)* %44 to i8 addrspace(13)*
%46 = sext i32 %40 to i64
%47 = getelementptr inbounds i8, i8 addrspace(13)* %45, i64 %46
%48 = getelementptr inbounds i8, i8 addrspace(13)* %47, i64 %35
%49 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %39, i64 %35, i64 0
%50 = bitcast i64 addrspace(13)* %49 to double addrspace(13)*
; │└
; │┌ @ int.jl:53 within `+'
%51 = add i64 %value_phi9381, 1
; │└
; │ @ generator.jl:44 within `iterate' @ iterators.jl:430
br label %L32
L85: ; preds = %L43, %top, %union_move54
%merge = phi { %jl_value_t addrspace(10)*, i8 } [ { %jl_value_t addrspace(10)* addrspacecast (%jl_value_t* null to %jl_value_t addrspace(10)*), i8 3 }, %union_move54 ], [ { %jl_value_t addrspace(10)* addrspacecast (%jl_value_t* null to %jl_value_t addrspace(10)*), i8 2 }, %top ], [ { %jl_value_t addrspace(10)* addrspacecast (%jl_value_t* null to %jl_value_t addrspace(10)*), i8 2 }, %L43 ]
; └
; @ reduce.jl:54 within `_foldl_impl'
ret { %jl_value_t addrspace(10)*, i8 } %merge
L95.L95.split_crit_edge: ; preds = %L32
; @ reduce.jl:53 within `_foldl_impl'
; ┌ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 @ array.jl:734
; │┌ @ array.jl:758 within `getindex'
%52 = load double, double addrspace(13)* %.in, align 8
%53 = addrspacecast %jl_value_t addrspace(10)* %7 to %jl_value_t addrspace(11)*
%54 = bitcast %jl_value_t addrspace(11)* %53 to %jl_array_t addrspace(11)*
%55 = bitcast %jl_value_t addrspace(11)* %53 to [1 x i64] addrspace(13)* addrspace(11)*
%56 = load [1 x i64] addrspace(13)*, [1 x i64] addrspace(13)* addrspace(11)* %55, align 8
%57 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %54, i64 0, i32 4
%58 = load i32, i32 addrspace(11)* %57, align 4
%59 = zext i32 %58 to i64
%60 = bitcast %jl_value_t addrspace(11)* %53 to %jl_value_t addrspace(10)* addrspace(11)*
%61 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %60, i64 4
%62 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %61 to i64 addrspace(11)*
%63 = load i64, i64 addrspace(11)* %62, align 8
%64 = sub i64 %63, %59
%65 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %56, i64 %64
%66 = bitcast [1 x i64] addrspace(13)* %65 to i8 addrspace(13)*
%67 = sext i32 %58 to i64
%68 = getelementptr inbounds i8, i8 addrspace(13)* %66, i64 %67
; └└
; @ reduce.jl:55 within `_foldl_impl'
br label %L96
L96: ; preds = %L207, %L95.L95.split_crit_edge
%69 = phi double [ %52, %L95.L95.split_crit_edge ], [ %74, %L207 ]
%value_phi25 = phi i64 [ %value_phi9381, %L95.L95.split_crit_edge ], [ %value_phi39373, %L207 ]
; @ reduce.jl:57 within `_foldl_impl'
; ┌ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734
; │┌ @ int.jl:860 within `-' @ int.jl:52
%70 = add i64 %value_phi25, -1
; │└
; │┌ @ int.jl:416 within `<' @ int.jl:409
%71 = icmp ult i64 %70, %11
; │└
br i1 %71, label %L128.lr.ph, label %union_move54
L128.lr.ph: ; preds = %L96
; │ @ generator.jl:44 within `iterate' @ iterators.jl:430
br label %L128
L128: ; preds = %L153, %L128.lr.ph
%.pn = phi i64 [ %70, %L128.lr.ph ], [ %value_phi39373.in, %L153 ]
%value_phi39373.in = phi i64 [ %value_phi25, %L128.lr.ph ], [ %value_phi39373, %L153 ]
; │ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734
; │┌ @ array.jl:758 within `getindex'
%tindex_phi37372.in.in = getelementptr inbounds i8, i8 addrspace(13)* %68, i64 %.pn
%tindex_phi37372.in = load i8, i8 addrspace(13)* %tindex_phi37372.in.in, align 1
; │└
; │┌ @ int.jl:53 within `+'
%value_phi39373 = add i64 %value_phi39373.in, 1
; │└
; │ @ generator.jl:44 within `iterate' @ iterators.jl:431
%trunc443 = icmp ne i8 %tindex_phi37372.in, 0
%switch458 = icmp ult i1 %trunc443, true
br i1 %switch458, label %L139, label %L207
L139: ; preds = %L128
; │ @ generator.jl:44 within `iterate' @ iterators.jl:434 @ array.jl:734
; │┌ @ int.jl:416 within `<' @ int.jl:409
%72 = icmp ult i64 %value_phi39373.in, %11
; │└
br i1 %72, label %L153, label %union_move54
L153: ; preds = %L139
; │ @ generator.jl:44 within `iterate' @ iterators.jl:430
br label %L128
L207: ; preds = %L128
; │ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734
; │┌ @ array.jl:758 within `getindex'
%.sroa.0223.0.copyload225.in = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %56, i64 %.pn, i64 0
%73 = bitcast i64 addrspace(13)* %.sroa.0223.0.copyload225.in to double addrspace(13)*
%.sroa.0223.0.copyload225444 = load double, double addrspace(13)* %73, align 8
; └└
; @ reduce.jl:59 within `_foldl_impl'
; ┌ @ reduce.jl:78 within `BottomRF'
; │┌ @ float.jl:401 within `+'
%74 = fadd double %69, %.sroa.0223.0.copyload225444
; └└
br label %L96
union_move54: ; preds = %L96, %L139
; @ reduce.jl:61 within `_foldl_impl'
%75 = bitcast [8 x i8]* %0 to double*
store double %69, double* %75, align 8
br label %L85
}
--- _foldl_impl.dfcd79287d.ir 2019-12-02 23:59:13.009991656 -0800
+++ _foldl_impl.d0b1c044f6.ir 2019-12-02 23:59:13.009991656 -0800
@@ -1,9 +1,9 @@
-│ ─ %-1 = invoke _foldl_impl(::Base.BottomRF{typeof(+)},::Base._InitialValue,::Base.Generator{Base.Iterators.Filter{var"#38#40",Array{Union{Missing, Float64},1}},var"#37#39"})::Union{Missing, Base._InitialValue, Float64}
+│ ─ %-1 = invoke _foldl_impl(::Base.BottomRF{typeof(+)},::Base._InitialValue,::Base.Generator{Base.Iterators.Filter{var"#28#30",Array{Union{Missing, Float64},1}},var"#27#29"})::Union{Missing, Base._InitialValue, Float64}
Body::Union{Missing, Base._InitialValue, Float64}
@ reduce.jl:53 within `_foldl_impl'
┌ @ generator.jl:44 within `iterate'
│┌ @ Base.jl:33 within `getproperty'
-1 ──││ %1 = Base.getfield(itr, :iter)::Base.Iterators.Filter{var"#38#40",Array{Union{Missing, Float64},1}}
+1 ──││ %1 = Base.getfield(itr, :iter)::Base.Iterators.Filter{var"#28#30",Array{Union{Missing, Float64},1}}
│ │└
│ │ @ generator.jl:44 within `iterate' @ iterators.jl:429
│ │┌ @ Base.jl:33 within `getproperty'
@@ -28,8 +28,8 @@
│ │││┌ @ int.jl:410 within `<='
│ ││││ %7 = Base.sle_int(0, %6)::Bool
│ ││└└
-│ ││┌ @ essentials.jl:368 within `unsigned'
-│ │││┌ @ essentials.jl:413 within `reinterpret'
+│ ││┌ @ essentials.jl:370 within `unsigned'
+│ │││┌ @ essentials.jl:415 within `reinterpret'
│ ││││ %8 = Base.bitcast(UInt64, %6)::UInt64
│ ││└└
│ ││ @ int.jl:416 within `<' @ int.jl:409
@@ -101,8 +101,8 @@
│ │││┌ @ int.jl:410 within `<='
│ ││││ %48 = Base.sle_int(0, %47)::Bool
│ ││└└
-│ ││┌ @ essentials.jl:368 within `unsigned'
-│ │││┌ @ essentials.jl:413 within `reinterpret'
+│ ││┌ @ essentials.jl:370 within `unsigned'
+│ │││┌ @ essentials.jl:415 within `reinterpret'
│ ││││ %49 = Base.bitcast(UInt64, %47)::UInt64
│ ││└└
│ ││ @ int.jl:416 within `<' @ int.jl:409
@@ -173,7 +173,7 @@
│ @ reduce.jl:57 within `_foldl_impl'
│ ┌ @ generator.jl:44 within `iterate'
│ │┌ @ Base.jl:33 within `getproperty'
-│ ││ %98 = Base.getfield(itr, :iter)::Base.Iterators.Filter{var"#38#40",Array{Union{Missing, Float64},1}}
+│ ││ %98 = Base.getfield(itr, :iter)::Base.Iterators.Filter{var"#28#30",Array{Union{Missing, Float64},1}}
│ │└
│ │ @ generator.jl:44 within `iterate' @ iterators.jl:429
│ │┌ @ Base.jl:33 within `getproperty'
@@ -198,8 +198,8 @@
│ │││┌ @ int.jl:410 within `<='
│ ││││ %104 = Base.sle_int(0, %103)::Bool
│ ││└└
-│ ││┌ @ essentials.jl:368 within `unsigned'
-│ │││┌ @ essentials.jl:413 within `reinterpret'
+│ ││┌ @ essentials.jl:370 within `unsigned'
+│ │││┌ @ essentials.jl:415 within `reinterpret'
│ ││││ %105 = Base.bitcast(UInt64, %103)::UInt64
│ ││└└
│ ││ @ int.jl:416 within `<' @ int.jl:409
@@ -269,8 +269,8 @@
│ │││┌ @ int.jl:410 within `<='
│ ││││ %143 = Base.sle_int(0, %142)::Bool
│ ││└└
-│ ││┌ @ essentials.jl:368 within `unsigned'
-│ │││┌ @ essentials.jl:413 within `reinterpret'
+│ ││┌ @ essentials.jl:370 within `unsigned'
+│ │││┌ @ essentials.jl:415 within `reinterpret'
│ ││││ %144 = Base.bitcast(UInt64, %142)::UInt64
│ ││└└
│ ││ @ int.jl:416 within `<' @ int.jl:409
--- _foldl_impl.dfcd79287d.llvm 2019-12-02 23:59:13.009991656 -0800
+++ _foldl_impl.d0b1c044f6.llvm 2019-12-02 23:59:13.009991656 -0800
@@ -1,100 +1,105 @@
; @ reduce.jl:53 within `_foldl_impl'
-define { %jl_value_t addrspace(10)*, i8 } @julia__foldl_impl_17219([8 x i8]* noalias nocapture align 8 dereferenceable(8), %jl_value_t addrspace(10)* nonnull align 8 dereferenceable(8)) {
+define { %jl_value_t addrspace(10)*, i8 } @julia__foldl_impl_17515([8 x i8]* noalias nocapture align 8 dereferenceable(8), %jl_value_t addrspace(10)* nonnull align 8 dereferenceable(8)) {
top:
+ %2 = alloca [1 x i64], align 8
+ %3 = alloca [1 x i64], align 8
; ┌ @ generator.jl:44 within `iterate'
; │┌ @ Base.jl:33 within `getproperty'
- %2 = addrspacecast %jl_value_t addrspace(10)* %1 to %jl_value_t addrspace(11)*
- %3 = bitcast %jl_value_t addrspace(11)* %2 to %jl_value_t addrspace(10)* addrspace(11)*
- %4 = load %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %3, align 8
+ %4 = addrspacecast %jl_value_t addrspace(10)* %1 to %jl_value_t addrspace(11)*
+ %5 = bitcast %jl_value_t addrspace(11)* %4 to %jl_value_t addrspace(10)* addrspace(11)*
+ %6 = load %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %5, align 8
; │└
; │ @ generator.jl:44 within `iterate' @ iterators.jl:429
; │┌ @ Base.jl:33 within `getproperty'
- %5 = addrspacecast %jl_value_t addrspace(10)* %4 to %jl_value_t addrspace(11)*
- %6 = bitcast %jl_value_t addrspace(11)* %5 to %jl_value_t addrspace(10)* addrspace(11)*
- %7 = load %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %6, align 8
+ %7 = addrspacecast %jl_value_t addrspace(10)* %6 to %jl_value_t addrspace(11)*
+ %8 = bitcast %jl_value_t addrspace(11)* %7 to %jl_value_t addrspace(10)* addrspace(11)*
+ %9 = load %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %8, align 8
; │└
; │ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 @ array.jl:734
; │┌ @ array.jl:214 within `length'
- %8 = addrspacecast %jl_value_t addrspace(10)* %7 to %jl_value_t addrspace(11)*
- %9 = bitcast %jl_value_t addrspace(11)* %8 to %jl_array_t addrspace(11)*
- %10 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %9, i64 0, i32 1
- %11 = load i64, i64 addrspace(11)* %10, align 8
+ %10 = addrspacecast %jl_value_t addrspace(10)* %9 to %jl_value_t addrspace(11)*
+ %11 = bitcast %jl_value_t addrspace(11)* %10 to %jl_array_t addrspace(11)*
+ %12 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %11, i64 0, i32 1
+ %13 = load i64, i64 addrspace(11)* %12, align 8
; │└
- %12 = icmp slt i64 %11, 1
- br i1 %12, label %L85, label %L32.lr.ph
+ %14 = icmp slt i64 %13, 1
+ br i1 %14, label %L85, label %L32.lr.ph
L32.lr.ph: ; preds = %top
; │┌ @ array.jl:758 within `getindex'
- %13 = bitcast %jl_value_t addrspace(11)* %8 to [1 x i64] addrspace(13)* addrspace(11)*
- %14 = load [1 x i64] addrspace(13)*, [1 x i64] addrspace(13)* addrspace(11)* %13, align 8
- %15 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %9, i64 0, i32 4
- %16 = load i32, i32 addrspace(11)* %15, align 4
- %17 = zext i32 %16 to i64
- %18 = bitcast %jl_value_t addrspace(11)* %8 to %jl_value_t addrspace(10)* addrspace(11)*
- %19 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %18, i64 4
- %20 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %19 to i64 addrspace(11)*
- %21 = load i64, i64 addrspace(11)* %20, align 8
- %22 = sub i64 %21, %17
- %23 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %14, i64 %22
- %24 = bitcast [1 x i64] addrspace(13)* %23 to i8 addrspace(13)*
- %25 = sext i32 %16 to i64
- %26 = getelementptr inbounds i8, i8 addrspace(13)* %24, i64 %25
- %27 = bitcast [1 x i64] addrspace(13)* %14 to double addrspace(13)*
- %28 = addrspacecast %jl_value_t addrspace(10)* %7 to %jl_value_t addrspace(11)*
- %29 = bitcast %jl_value_t addrspace(11)* %28 to %jl_array_t addrspace(11)*
- %30 = bitcast %jl_value_t addrspace(11)* %28 to [1 x i64] addrspace(13)* addrspace(11)*
- %31 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %29, i64 0, i32 4
- %32 = bitcast %jl_value_t addrspace(11)* %28 to %jl_value_t addrspace(10)* addrspace(11)*
- %33 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %32, i64 4
- %34 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %33 to i64 addrspace(11)*
+ %15 = bitcast %jl_value_t addrspace(11)* %10 to [1 x i64] addrspace(13)* addrspace(11)*
+ %16 = load [1 x i64] addrspace(13)*, [1 x i64] addrspace(13)* addrspace(11)* %15, align 8
+ %17 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %11, i64 0, i32 4
+ %18 = load i32, i32 addrspace(11)* %17, align 4
+ %19 = zext i32 %18 to i64
+ %20 = bitcast %jl_value_t addrspace(11)* %10 to %jl_value_t addrspace(10)* addrspace(11)*
+ %21 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %20, i64 4
+ %22 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %21 to i64 addrspace(11)*
+ %23 = load i64, i64 addrspace(11)* %22, align 8
+ %24 = sub i64 %23, %19
+ %25 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %16, i64 %24
+ %26 = bitcast [1 x i64] addrspace(13)* %25 to i8 addrspace(13)*
+ %27 = sext i32 %18 to i64
+ %28 = getelementptr inbounds i8, i8 addrspace(13)* %26, i64 %27
+ %29 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %16, i64 0, i64 0
+ %30 = addrspacecast %jl_value_t addrspace(10)* %9 to %jl_value_t addrspace(11)*
+ %31 = bitcast %jl_value_t addrspace(11)* %30 to %jl_array_t addrspace(11)*
+ %32 = bitcast %jl_value_t addrspace(11)* %30 to [1 x i64] addrspace(13)* addrspace(11)*
+ %33 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %31, i64 0, i32 4
+ %34 = bitcast %jl_value_t addrspace(11)* %30 to %jl_value_t addrspace(10)* addrspace(11)*
+ %35 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %34, i64 4
+ %36 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %35 to i64 addrspace(11)*
; │└
; │ @ generator.jl:44 within `iterate' @ iterators.jl:430
br label %L32
L32: ; preds = %L57, %L32.lr.ph
- %.in = phi double addrspace(13)* [ %27, %L32.lr.ph ], [ %50, %L57 ]
- %value_phi9381 = phi i64 [ 2, %L32.lr.ph ], [ %51, %L57 ]
- %tindex_phi7380.in.in = phi i8 addrspace(13)* [ %26, %L32.lr.ph ], [ %48, %L57 ]
-; │ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 @ array.jl:734
-; │┌ @ array.jl:758 within `getindex'
- %tindex_phi7380.in = load i8, i8 addrspace(13)* %tindex_phi7380.in.in, align 1
-; │└
+ %.sroa.0275.0.copyload277.in = phi i64 addrspace(13)* [ %29, %L32.lr.ph ], [ %52, %L57 ]
+ %value_phi9425 = phi i64 [ 2, %L32.lr.ph ], [ %53, %L57 ]
+ %tindex_phi7424.in.in = phi i8 addrspace(13)* [ %28, %L32.lr.ph ], [ %51, %L57 ]
+; │ @ generator.jl:44 within `iterate' @ iterators.jl:0
+ %tindex_phi7424.in = load i8, i8 addrspace(13)* %tindex_phi7424.in.in, align 1
+ %.sroa.0275.0.copyload277 = load i64, i64 addrspace(13)* %.sroa.0275.0.copyload277.in, align 8
; │ @ generator.jl:44 within `iterate' @ iterators.jl:431
- %trunc = icmp ne i8 %tindex_phi7380.in, 0
+ %trunc = icmp ne i8 %tindex_phi7424.in, 0
%switch = icmp ult i1 %trunc, true
- br i1 %switch, label %L43, label %L95.L95.split_crit_edge
+ br i1 %switch, label %L43, label %L42
+
+L42: ; preds = %L32
+; │ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 @ array.jl:734
+ %37 = icmp eq i8 %tindex_phi7424.in, 1
+ br i1 %37, label %L73.thread, label %L95
L43: ; preds = %L32
; │ @ generator.jl:44 within `iterate' @ iterators.jl:434 @ array.jl:734
; │┌ @ int.jl:860 within `-' @ int.jl:52
- %35 = add i64 %value_phi9381, -1
+ %38 = add i64 %value_phi9425, -1
; │└
; │┌ @ int.jl:416 within `<' @ int.jl:409
- %36 = icmp uge i64 %35, %11
+ %39 = icmp uge i64 %38, %13
; ││ @ int.jl:416 within `<'
; ││┌ @ bool.jl:40 within `&'
- %37 = icmp slt i64 %11, 0
+ %40 = icmp slt i64 %13, 0
; │└└
- %38 = or i1 %37, %36
- br i1 %38, label %L85, label %L57
+ %41 = or i1 %40, %39
+ br i1 %41, label %L85, label %L57
L57: ; preds = %L43
; │┌ @ array.jl:758 within `getindex'
- %39 = load [1 x i64] addrspace(13)*, [1 x i64] addrspace(13)* addrspace(11)* %30, align 8
- %40 = load i32, i32 addrspace(11)* %31, align 4
- %41 = zext i32 %40 to i64
- %42 = load i64, i64 addrspace(11)* %34, align 8
- %43 = sub i64 %42, %41
- %44 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %39, i64 %43
- %45 = bitcast [1 x i64] addrspace(13)* %44 to i8 addrspace(13)*
- %46 = sext i32 %40 to i64
- %47 = getelementptr inbounds i8, i8 addrspace(13)* %45, i64 %46
- %48 = getelementptr inbounds i8, i8 addrspace(13)* %47, i64 %35
- %49 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %39, i64 %35, i64 0
- %50 = bitcast i64 addrspace(13)* %49 to double addrspace(13)*
+ %42 = load [1 x i64] addrspace(13)*, [1 x i64] addrspace(13)* addrspace(11)* %32, align 8
+ %43 = load i32, i32 addrspace(11)* %33, align 4
+ %44 = zext i32 %43 to i64
+ %45 = load i64, i64 addrspace(11)* %36, align 8
+ %46 = sub i64 %45, %44
+ %47 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %42, i64 %46
+ %48 = bitcast [1 x i64] addrspace(13)* %47 to i8 addrspace(13)*
+ %49 = sext i32 %43 to i64
+ %50 = getelementptr inbounds i8, i8 addrspace(13)* %48, i64 %49
+ %51 = getelementptr inbounds i8, i8 addrspace(13)* %50, i64 %38
+ %52 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %42, i64 %38, i64 0
; │└
; │┌ @ int.jl:53 within `+'
- %51 = add i64 %value_phi9381, 1
+ %53 = add i64 %value_phi9425, 1
; │└
; │ @ generator.jl:44 within `iterate' @ iterators.jl:430
br label %L32
@@ -105,92 +110,162 @@
; @ reduce.jl:54 within `_foldl_impl'
ret { %jl_value_t addrspace(10)*, i8 } %merge
-L95.L95.split_crit_edge: ; preds = %L32
+L95: ; preds = %L73.thread, %L42
+; @ reduce.jl:57 within `_foldl_impl'
+; ┌ @ generator.jl:45 within `iterate'
+ %54 = bitcast [1 x i64]* %2 to double*
+ %55 = addrspacecast double* %54 to double addrspace(11)*
+ %56 = load double, double addrspace(11)* %55, align 8
+ %.sroa.0228.0..sroa_idx360364 = getelementptr inbounds [1 x i64], [1 x i64]* %3, i64 0, i64 0
+; └
; @ reduce.jl:53 within `_foldl_impl'
; ┌ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 @ array.jl:734
-; │┌ @ array.jl:758 within `getindex'
- %52 = load double, double addrspace(13)* %.in, align 8
- %53 = addrspacecast %jl_value_t addrspace(10)* %7 to %jl_value_t addrspace(11)*
- %54 = bitcast %jl_value_t addrspace(11)* %53 to %jl_array_t addrspace(11)*
- %55 = bitcast %jl_value_t addrspace(11)* %53 to [1 x i64] addrspace(13)* addrspace(11)*
- %56 = load [1 x i64] addrspace(13)*, [1 x i64] addrspace(13)* addrspace(11)* %55, align 8
- %57 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %54, i64 0, i32 4
- %58 = load i32, i32 addrspace(11)* %57, align 4
- %59 = zext i32 %58 to i64
- %60 = bitcast %jl_value_t addrspace(11)* %53 to %jl_value_t addrspace(10)* addrspace(11)*
- %61 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %60, i64 4
- %62 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %61 to i64 addrspace(11)*
- %63 = load i64, i64 addrspace(11)* %62, align 8
- %64 = sub i64 %63, %59
- %65 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %56, i64 %64
- %66 = bitcast [1 x i64] addrspace(13)* %65 to i8 addrspace(13)*
- %67 = sext i32 %58 to i64
- %68 = getelementptr inbounds i8, i8 addrspace(13)* %66, i64 %67
-; └└
-; @ reduce.jl:55 within `_foldl_impl'
- br label %L96
+ br label %L96
-L96: ; preds = %L207, %L95.L95.split_crit_edge
- %69 = phi double [ %52, %L95.L95.split_crit_edge ], [ %74, %L207 ]
- %value_phi25 = phi i64 [ %value_phi9381, %L95.L95.split_crit_edge ], [ %value_phi39373, %L207 ]
+L96: ; preds = %L207, %L95
+ %57 = phi double [ %56, %L95 ], [ %105, %L207 ]
+ %.sroa.0228.0 = phi i64 [ undef, %L95 ], [ %.sroa.0228.0.copyload230, %L207 ]
+ %value_phi25 = phi i64 [ %value_phi9425, %L95 ], [ %value_phi39417, %L207 ]
+; └
; @ reduce.jl:57 within `_foldl_impl'
; ┌ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734
; │┌ @ int.jl:860 within `-' @ int.jl:52
- %70 = add i64 %value_phi25, -1
+ %58 = add i64 %value_phi25, -1
; │└
-; │┌ @ int.jl:416 within `<' @ int.jl:409
- %71 = icmp ult i64 %70, %11
+; │┌ @ array.jl:214 within `length'
+ %59 = addrspacecast %jl_value_t addrspace(10)* %9 to %jl_value_t addrspace(11)*
; │└
- br i1 %71, label %L128.lr.ph, label %union_move54
+; │┌ @ int.jl:416 within `<' @ int.jl:409
+ %60 = icmp uge i64 %58, %13
+; ││ @ int.jl:416 within `<'
+; ││┌ @ bool.jl:40 within `&'
+ %61 = icmp slt i64 %13, 0
+; │└└
+ %62 = or i1 %61, %60
+ br i1 %62, label %union_move54, label %L128.lr.ph
L128.lr.ph: ; preds = %L96
+; │┌ @ array.jl:214 within `length'
+ %63 = bitcast %jl_value_t addrspace(11)* %59 to %jl_array_t addrspace(11)*
+; │└
+; │┌ @ array.jl:758 within `getindex'
+ %64 = bitcast %jl_value_t addrspace(11)* %59 to [1 x i64] addrspace(13)* addrspace(11)*
+ %65 = load [1 x i64] addrspace(13)*, [1 x i64] addrspace(13)* addrspace(11)* %64, align 8
+ %66 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %63, i64 0, i32 4
+ %67 = load i32, i32 addrspace(11)* %66, align 4
+ %68 = zext i32 %67 to i64
+ %69 = bitcast %jl_value_t addrspace(11)* %59 to %jl_value_t addrspace(10)* addrspace(11)*
+ %70 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %69, i64 4
+ %71 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %70 to i64 addrspace(11)*
+ %72 = load i64, i64 addrspace(11)* %71, align 8
+ %73 = sub i64 %72, %68
+ %74 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %65, i64 %73
+ %75 = bitcast [1 x i64] addrspace(13)* %74 to i8 addrspace(13)*
+ %76 = sext i32 %67 to i64
+ %77 = getelementptr inbounds i8, i8 addrspace(13)* %75, i64 %76
+ %78 = getelementptr inbounds i8, i8 addrspace(13)* %77, i64 %58
+ %79 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %65, i64 %58, i64 0
+ %80 = addrspacecast %jl_value_t addrspace(10)* %9 to %jl_value_t addrspace(11)*
+ %81 = bitcast %jl_value_t addrspace(11)* %80 to %jl_array_t addrspace(11)*
+ %82 = bitcast %jl_value_t addrspace(11)* %80 to [1 x i64] addrspace(13)* addrspace(11)*
+ %83 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %81, i64 0, i32 4
+ %84 = bitcast %jl_value_t addrspace(11)* %80 to %jl_value_t addrspace(10)* addrspace(11)*
+ %85 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %84, i64 4
+ %86 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %85 to i64 addrspace(11)*
+; │└
; │ @ generator.jl:44 within `iterate' @ iterators.jl:430
br label %L128
L128: ; preds = %L153, %L128.lr.ph
- %.pn = phi i64 [ %70, %L128.lr.ph ], [ %value_phi39373.in, %L153 ]
- %value_phi39373.in = phi i64 [ %value_phi25, %L128.lr.ph ], [ %value_phi39373, %L153 ]
-; │ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734
-; │┌ @ array.jl:758 within `getindex'
- %tindex_phi37372.in.in = getelementptr inbounds i8, i8 addrspace(13)* %68, i64 %.pn
- %tindex_phi37372.in = load i8, i8 addrspace(13)* %tindex_phi37372.in.in, align 1
-; │└
-; │┌ @ int.jl:53 within `+'
- %value_phi39373 = add i64 %value_phi39373.in, 1
-; │└
+ %.sroa.0228.0.copyload230.in = phi i64 addrspace(13)* [ %79, %L128.lr.ph ], [ %101, %L153 ]
+ %value_phi39417.in = phi i64 [ %value_phi25, %L128.lr.ph ], [ %value_phi39417, %L153 ]
+ %tindex_phi37416.in.in = phi i8 addrspace(13)* [ %78, %L128.lr.ph ], [ %100, %L153 ]
+; │ @ generator.jl:44 within `iterate' @ iterators.jl:0
+ %tindex_phi37416.in = load i8, i8 addrspace(13)* %tindex_phi37416.in.in, align 1
+ %value_phi39417 = add i64 %value_phi39417.in, 1
+ %.sroa.0228.0.copyload230 = load i64, i64 addrspace(13)* %.sroa.0228.0.copyload230.in, align 8
; │ @ generator.jl:44 within `iterate' @ iterators.jl:431
- %trunc443 = icmp ne i8 %tindex_phi37372.in, 0
- %switch458 = icmp ult i1 %trunc443, true
- br i1 %switch458, label %L139, label %L207
+ %trunc478 = icmp ne i8 %tindex_phi37416.in, 0
+ %switch497 = icmp ult i1 %trunc478, true
+ br i1 %switch497, label %L139, label %L138
+
+L138: ; preds = %L128
+; └
+; @ reduce.jl:53 within `_foldl_impl'
+; ┌ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 @ array.jl:734
+ %87 = icmp eq i8 %tindex_phi37416.in, 1
+ br i1 %87, label %L169.thread, label %L207
L139: ; preds = %L128
-; │ @ generator.jl:44 within `iterate' @ iterators.jl:434 @ array.jl:734
+; └
+; @ reduce.jl:57 within `_foldl_impl'
+; ┌ @ generator.jl:44 within `iterate' @ iterators.jl:434 @ array.jl:734
; │┌ @ int.jl:416 within `<' @ int.jl:409
- %72 = icmp ult i64 %value_phi39373.in, %11
-; │└
- br i1 %72, label %L153, label %union_move54
+ %88 = icmp uge i64 %value_phi39417.in, %13
+; ││ @ int.jl:416 within `<'
+; ││┌ @ bool.jl:40 within `&'
+ %89 = icmp slt i64 %13, 0
+; │└└
+ %90 = or i1 %89, %88
+ br i1 %90, label %union_move54, label %L153
L153: ; preds = %L139
+; │┌ @ array.jl:758 within `getindex'
+ %91 = load [1 x i64] addrspace(13)*, [1 x i64] addrspace(13)* addrspace(11)* %82, align 8
+ %92 = load i32, i32 addrspace(11)* %83, align 4
+ %93 = zext i32 %92 to i64
+ %94 = load i64, i64 addrspace(11)* %86, align 8
+ %95 = sub i64 %94, %93
+ %96 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %91, i64 %95
+ %97 = bitcast [1 x i64] addrspace(13)* %96 to i8 addrspace(13)*
+ %98 = sext i32 %92 to i64
+ %99 = getelementptr inbounds i8, i8 addrspace(13)* %97, i64 %98
+ %100 = getelementptr inbounds i8, i8 addrspace(13)* %99, i64 %value_phi39417.in
+ %101 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %91, i64 %value_phi39417.in, i64 0
+; │└
; │ @ generator.jl:44 within `iterate' @ iterators.jl:430
br label %L128
-L207: ; preds = %L128
-; │ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734
-; │┌ @ array.jl:758 within `getindex'
- %.sroa.0223.0.copyload225.in = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %56, i64 %.pn, i64 0
- %73 = bitcast i64 addrspace(13)* %.sroa.0223.0.copyload225.in to double addrspace(13)*
- %.sroa.0223.0.copyload225444 = load double, double addrspace(13)* %73, align 8
-; └└
+L207: ; preds = %L169.thread, %L138
+; │ @ generator.jl:45 within `iterate'
+ %102 = bitcast [1 x i64]* %3 to double*
+ %103 = addrspacecast double* %102 to double addrspace(11)*
+ %104 = load double, double addrspace(11)* %103, align 8
+; └
; @ reduce.jl:59 within `_foldl_impl'
; ┌ @ reduce.jl:78 within `BottomRF'
; │┌ @ float.jl:401 within `+'
- %74 = fadd double %69, %.sroa.0223.0.copyload225444
+ %105 = fadd double %57, %104
; └└
- br label %L96
+; @ reduce.jl:53 within `_foldl_impl'
+; ┌ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 @ array.jl:734
+ br label %L96
union_move54: ; preds = %L96, %L139
+; └
+; @ reduce.jl:57 within `_foldl_impl'
+; ┌ @ generator.jl:44 within `iterate'
+ store i64 %.sroa.0228.0, i64* %.sroa.0228.0..sroa_idx360364, align 8
+; └
; @ reduce.jl:61 within `_foldl_impl'
- %75 = bitcast [8 x i8]* %0 to double*
- store double %69, double* %75, align 8
+ %106 = bitcast [8 x i8]* %0 to double*
+ store double %57, double* %106, align 8
br label %L85
+
+L73.thread: ; preds = %L42
+; @ reduce.jl:53 within `_foldl_impl'
+; ┌ @ generator.jl:44 within `iterate'
+ %.sroa.0275.0..sroa_idx353355 = getelementptr inbounds [1 x i64], [1 x i64]* %2, i64 0, i64 0
+ store i64 %.sroa.0275.0.copyload277, i64* %.sroa.0275.0..sroa_idx353355, align 8
+; │ @ generator.jl:47 within `iterate'
+ br label %L95
+
+L169.thread: ; preds = %L138
+; └
+; @ reduce.jl:57 within `_foldl_impl'
+; ┌ @ generator.jl:44 within `iterate'
+ store i64 %.sroa.0228.0.copyload230, i64* %.sroa.0228.0..sroa_idx360364, align 8
+; │ @ generator.jl:47 within `iterate'
+ br label %L207
+; └
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment