Diff
checker
文本
文本
图像
文档
Excel
文件夹
Legal
Enterprise
桌面版
定价
登录
下载 Diffchecker 桌面版
比较文本
查找两个文本文件之间的差异
工具
历史
实时编辑器
折叠未更改行
关闭换行
视图
拆分
统一
比对精度
智能
单词
字符
语法高亮
选择语法
忽略
文本转换
转到第一个差异
编辑输入
Diffchecker Desktop
运行Diffchecker最安全的方式。获取Diffchecker桌面应用:您的差异永远不会离开您的电脑!
获取桌面版
JIT vs Imaging mode
创建于
3年前
差异永不过期
清除
导出
分享
解释
66 删除
行
总计
删除
字符
总计
删除
要继续使用此功能,请升级到
Diff
checker
Pro
查看价格
161 行
全部复制
90 添加
行
总计
添加
字符
总计
添加
要继续使用此功能,请升级到
Diff
checker
Pro
查看价格
185 行
全部复制
; @ array.jl:629 within `zeros`
; @ array.jl:629 within `zeros`
复制
已复制
复制
已复制
define nonnull {}* @julia_zeros_1
3
1(i64 signext %"dims[1]::Int64") #0 {
define nonnull {}* @julia_zeros_1
5
1(i64 signext %"dims[1]::Int64") #0 {
top:
top:
%dims = alloca [1 x i64], align 8
%dims = alloca [1 x i64], align 8
%newstruct = alloca [1 x i64], align 8
%newstruct = alloca [1 x i64], align 8
%pgcstack = call {}*** @julia.get_pgcstack()
%pgcstack = call {}*** @julia.get_pgcstack()
%0 = bitcast {}*** %pgcstack to {}**
%0 = bitcast {}*** %pgcstack to {}**
%current_task = getelementptr inbounds {}*, {}** %0, i64 -14
%current_task = getelementptr inbounds {}*, {}** %0, i64 -14
%1 = bitcast {}** %current_task to i64*
%1 = bitcast {}** %current_task to i64*
%world_age = getelementptr inbounds i64, i64* %1, i64 15
%world_age = getelementptr inbounds i64, i64* %1, i64 15
%2 = getelementptr inbounds [1 x i64], [1 x i64]* %newstruct, i32 0, i32 0
%2 = getelementptr inbounds [1 x i64], [1 x i64]* %newstruct, i32 0, i32 0
store i64 %"dims[1]::Int64", i64* %2, align 8
store i64 %"dims[1]::Int64", i64* %2, align 8
%memcpy_refined_src = getelementptr inbounds [1 x i64], [1 x i64]* %newstruct, i32 0, i32 0
%memcpy_refined_src = getelementptr inbounds [1 x i64], [1 x i64]* %newstruct, i32 0, i32 0
%memcpy_refined_dst = getelementptr inbounds [1 x i64], [1 x i64]* %dims, i32 0, i32 0
%memcpy_refined_dst = getelementptr inbounds [1 x i64], [1 x i64]* %dims, i32 0, i32 0
%3 = load i64, i64* %memcpy_refined_src, align 8
%3 = load i64, i64* %memcpy_refined_src, align 8
store i64 %3, i64* %memcpy_refined_dst, align 8
store i64 %3, i64* %memcpy_refined_dst, align 8
; @ array.jl:629 within `zeros` @ array.jl:631 @ array.jl:634
; @ array.jl:629 within `zeros` @ array.jl:631 @ array.jl:634
; ┌ @ boot.jl:484 within `Array`
; ┌ @ boot.jl:484 within `Array`
复制
已复制
复制
已复制
%"*Core.getfield#1" = load {}*, {}** @"*Core.getfield#1", align 8
%4 = bitcast {}* %"*Core.getfield#1" to {}**
%5 = getelementptr inbounds {}*, {}** %4, i64 0
%"dims.<unknown field>_ptr" = getelementptr inbounds [1 x i64], [1 x i64]* %dims, i32 0, i32 0
%"dims.<unknown field>_ptr" = getelementptr inbounds [1 x i64], [1 x i64]* %dims, i32 0, i32 0
; │ @ boot.jl:484 within `Array` @ boot.jl:475
; │ @ boot.jl:484 within `Array` @ boot.jl:475
%"dims.<unknown field>_ptr.unbox" = load i64, i64* %"dims.<unknown field>_ptr", align 8
%"dims.<unknown field>_ptr.unbox" = load i64, i64* %"dims.<unknown field>_ptr", align 8
复制
已复制
复制
已复制
%
4
= call nonnull {}* inttoptr (i64
140036589843104
to {}* ({}*, i64)*)({}* inttoptr (i64
140036228716336
to {}*), i64 %"dims.<unknown field>_ptr.unbox")
%
6
= call nonnull {}* inttoptr (i64
139718400307872
to {}* ({}*, i64)*)({}* inttoptr (i64
139718039246640
to {}*), i64 %"dims.<unknown field>_ptr.unbox")
; └
; └
; @ array.jl:629 within `zeros` @ array.jl:631 @ array.jl:635
; @ array.jl:629 within `zeros` @ array.jl:631 @ array.jl:635
; ┌ @ array.jl:392 within `fill!`
; ┌ @ array.jl:392 within `fill!`
; │┌ @ abstractarray.jl:318 within `eachindex`
; │┌ @ abstractarray.jl:318 within `eachindex`
; ││┌ @ abstractarray.jl:134 within `axes1`
; ││┌ @ abstractarray.jl:134 within `axes1`
; │││┌ @ abstractarray.jl:98 within `axes`
; │││┌ @ abstractarray.jl:98 within `axes`
; ││││┌ @ array.jl:191 within `size`
; ││││┌ @ array.jl:191 within `size`
复制
已复制
复制
已复制
%5 = bitcast {}* %4
to { i8*, i64, i16, i16, i32 }*
%"*Core.arraysize#2" = load {}*, {}** @"*Core.arraysize#2", align 8
%.length_ptr = getelementptr inbounds { i8*, i64, i16, i16, i32 }, { i8*, i64, i16, i16, i32 }* %
5
, i32 0, i32 1
%7 = bitcast {}* %"*Core.arraysize#2" to {}**
%8 = getelementptr inbounds {}*, {}** %7, i64 0
%9 = bitcast {}* %6
to { i8*, i64, i16, i16, i32 }*
%.length_ptr = getelementptr inbounds { i8*, i64, i16, i16, i32 }, { i8*, i64, i16, i16, i32 }* %
9
, i32 0, i32 1
%.length = load i64, i64* %.length_ptr, align 8
%.length = load i64, i64* %.length_ptr, align 8
; │└└└└
; │└└└└
; │┌ @ range.jl:897 within `iterate`
; │┌ @ range.jl:897 within `iterate`
; ││┌ @ range.jl:674 within `isempty`
; ││┌ @ range.jl:674 within `isempty`
; │││┌ @ operators.jl:378 within `>`
; │││┌ @ operators.jl:378 within `>`
; ││││┌ @ int.jl:83 within `<`
; ││││┌ @ int.jl:83 within `<`
复制
已复制
复制
已复制
%6
= icmp slt i64 %.length, 1
%"*Core.Intrinsics.slt_int#3" = load {}*, {}** @"*Core.Intrinsics.slt_int#3", align 8
%10 = bitcast {}* %"*Core.Intrinsics.slt_int#3" to {}**
%11 = getelementptr inbounds {}*, {}** %10, i64 0
%12
= icmp slt i64 %.length, 1
; ││└└└
; ││└└└
复制
已复制
复制
已复制
%
7
= zext i1 %
6
to i8
%
13
= zext i1 %
12
to i8
%
8
= trunc i8 %
7
to i1
%
14
= trunc i8 %
13
to i1
%
9
= xor i1 %
8
, true
%
15
= xor i1 %
14
, true
br i1 %
9
, label %L7, label %L6
br i1 %
15
, label %L7, label %L6
L6: ; preds = %top
L6: ; preds = %top
br label %L8
br label %L8
L7: ; preds = %top
L7: ; preds = %top
br label %L8
br label %L8
L8: ; preds = %L7, %L6
L8: ; preds = %L7, %L6
%value_phi = phi i8 [ 1, %L6 ], [ 0, %L7 ]
%value_phi = phi i8 [ 1, %L6 ], [ 0, %L7 ]
%value_phi1 = phi i64 [ 1, %L7 ], [ undef, %L6 ]
%value_phi1 = phi i64 [ 1, %L7 ], [ undef, %L6 ]
%value_phi2 = phi i64 [ 1, %L7 ], [ undef, %L6 ]
%value_phi2 = phi i64 [ 1, %L7 ], [ undef, %L6 ]
; │└
; │└
复制
已复制
复制
已复制
%10
= trunc i8 %value_phi to i1
%"*Core.Intrinsics.not_int#4" = load {}*, {}** @"*Core.Intrinsics.not_int#4", align 8
%
11
= xor i1 %
10
, true
%16 = bitcast {}* %"*Core.Intrinsics.not_int#4" to {}**
%
12
= zext i1 %
11
to i8
%17 = getelementptr inbounds {}*, {}** %16, i64 0
%
13
= trunc i8 %
12
to i1
%18
= trunc i8 %value_phi to i1
%
14
= xor i1 %
13
, true
%
19
= xor i1 %
18
, true
br i1 %
14
, label %L27, label %L8.L13_crit_edge
%
20
= zext i1 %
19
to i8
%
21
= trunc i8 %
20
to i1
%
22
= xor i1 %
21
, true
br i1 %
22
, label %L27, label %L8.L13_crit_edge
L8.L13_crit_edge: ; preds = %L8
L8.L13_crit_edge: ; preds = %L8
; │┌ @ range.jl:897 within `iterate`
; │┌ @ range.jl:897 within `iterate`
br label %L13
br label %L13
L13: ; preds = %L26, %L8.L13_crit_edge
L13: ; preds = %L26, %L8.L13_crit_edge
%value_phi3 = phi i64 [ %value_phi1, %L8.L13_crit_edge ], [ %value_phi8, %L26 ]
%value_phi3 = phi i64 [ %value_phi1, %L8.L13_crit_edge ], [ %value_phi8, %L26 ]
%value_phi4 = phi i64 [ %value_phi2, %L8.L13_crit_edge ], [ %value_phi9, %L26 ]
%value_phi4 = phi i64 [ %value_phi2, %L8.L13_crit_edge ], [ %value_phi9, %L26 ]
; │└
; │└
; │ @ array.jl:393 within `fill!`
; │ @ array.jl:393 within `fill!`
; │┌ @ array.jl:1019 within `setindex!`
; │┌ @ array.jl:1019 within `setindex!`
复制
已复制
复制
已复制
%15
= sub i64 %value_phi3, 1
%"*Core.arrayset#5" = load {}*, {}** @"*Core.arrayset#5", align 8
%
16
= mul i64 %
15
, 1
%23 = bitcast {}* %"*Core.arrayset#5" to {}**
%
17
= add i64 0, %
16
%24 = getelementptr inbounds {}*, {}** %23, i64 0
%
18
= bitcast {}* %
4
to { i8*, i64, i16, i16, i32 }*
%25
= sub i64 %value_phi3, 1
%.length_ptr5 = getelementptr inbounds { i8*, i64, i16, i16, i32 }, { i8*, i64, i16, i16, i32 }* %
18
, i32 0, i32 1
%
26
= mul i64 %
25
, 1
%
27
= add i64 0, %
26
%
28
= bitcast {}* %
6
to { i8*, i64, i16, i16, i32 }*
%.length_ptr5 = getelementptr inbounds { i8*, i64, i16, i16, i32 }, { i8*, i64, i16, i16, i32 }* %
28
, i32 0, i32 1
%.length6 = load i64, i64* %.length_ptr5, align 8
%.length6 = load i64, i64* %.length_ptr5, align 8
复制
已复制
复制
已复制
%inbounds = icmp ult i64 %
17
, %.length6
%inbounds = icmp ult i64 %
27
, %.length6
br i1 %inbounds, label %idxend, label %oob
br i1 %inbounds, label %idxend, label %oob
L18: ; preds = %idxend
L18: ; preds = %idxend
; │└
; │└
; │ @ array.jl:394 within `fill!`
; │ @ array.jl:394 within `fill!`
; │┌ @ range.jl:901 within `iterate`
; │┌ @ range.jl:901 within `iterate`
br label %L21
br label %L21
L19: ; preds = %idxend
L19: ; preds = %idxend
; ││ @ range.jl:902 within `iterate`
; ││ @ range.jl:902 within `iterate`
; ││┌ @ int.jl:87 within `+`
; ││┌ @ int.jl:87 within `+`
复制
已复制
复制
已复制
%19 =
add i64 %value_phi4, 1
%"*Core.Intrinsics.add_int#7" = load {}*, {}** @"*Core.Intrinsics.add_int#7", align 8
%29 = bitcast {}* %"*Core.Intrinsics.add_int#7" to {}**
%30 = getelementptr inbounds {}*, {}** %29, i64 0
%31 =
add i64 %value_phi4, 1
; ││└
; ││└
; ││ @ range.jl:901 within `iterate`
; ││ @ range.jl:901 within `iterate`
br label %L21
br label %L21
L21: ; preds = %L19, %L18
L21: ; preds = %L19, %L18
复制
已复制
复制
已复制
%value_phi8 = phi i64 [ %
19
, %L19 ], [ undef, %L18 ]
%value_phi8 = phi i64 [ %
31
, %L19 ], [ undef, %L18 ]
%value_phi9 = phi i64 [ %
19
, %L19 ], [ undef, %L18 ]
%value_phi9 = phi i64 [ %
31
, %L19 ], [ undef, %L18 ]
%value_phi10 = phi i8 [ 1, %L18 ], [ 0, %L19 ]
%value_phi10 = phi i8 [ 1, %L18 ], [ 0, %L19 ]
; │└
; │└
复制
已复制
复制
已复制
%20
= trunc i8 %value_phi10 to i1
%"*Core.Intrinsics.not_int#411" = load {}*, {}** @"*Core.Intrinsics.not_int#4", align 8
%
21
= xor i1 %
20
, true
%32 = bitcast {}* %"*Core.Intrinsics.not_int#411" to {}**
%
22
= zext i1 %
21
to i8
%33 = getelementptr inbounds {}*, {}** %32, i64 0
%
23
= trunc i8 %
22
to i1
%34
= trunc i8 %value_phi10 to i1
%
24
= xor i1 %
23
, true
%
35
= xor i1 %
34
, true
br i1 %
24
, label %L27, label %L26
%
36
= zext i1 %
35
to i8
%
37
= trunc i8 %
36
to i1
%
38
= xor i1 %
37
, true
br i1 %
38
, label %L27, label %L26
L26: ; preds = %L21
L26: ; preds = %L21
; │ @ array.jl:392 within `fill!`
; │ @ array.jl:392 within `fill!`
; │┌ @ range.jl:897 within `iterate`
; │┌ @ range.jl:897 within `iterate`
br label %L13
br label %L13
L27: ; preds = %L21, %L8
L27: ; preds = %L21, %L8
; │└
; │└
; │ @ array.jl:395 within `fill!`
; │ @ array.jl:395 within `fill!`
br label %L28
br label %L28
L28: ; preds = %L27
L28: ; preds = %L27
; └
; └
; @ array.jl:629 within `zeros` @ array.jl:631 @ array.jl:636
; @ array.jl:629 within `zeros` @ array.jl:631 @ array.jl:636
br label %L29
br label %L29
L29: ; preds = %L28
L29: ; preds = %L28
; @ array.jl:629 within `zeros` @ array.jl:631
; @ array.jl:629 within `zeros` @ array.jl:631
br label %L30
br label %L30
L30: ; preds = %L29
L30: ; preds = %L29
; @ array.jl:629 within `zeros`
; @ array.jl:629 within `zeros`
复制
已复制
复制
已复制
ret {}* %
4
ret {}* %
6
oob: ; preds = %L13
oob: ; preds = %L13
; @ array.jl:629 within `zeros` @ array.jl:631 @ array.jl:635
; @ array.jl:629 within `zeros` @ array.jl:631 @ array.jl:635
; ┌ @ array.jl:393 within `fill!`
; ┌ @ array.jl:393 within `fill!`
; │┌ @ array.jl:1019 within `setindex!`
; │┌ @ array.jl:1019 within `setindex!`
%errorbox = alloca i64, i64 1, align 8
%errorbox = alloca i64, i64 1, align 8
复制
已复制
复制
已复制
%
25
= getelementptr inbounds i64, i64* %errorbox, i64 0
%
39
= getelementptr inbounds i64, i64* %errorbox, i64 0
store i64 %value_phi3, i64* %
25
, align 8
store i64 %value_phi3, i64* %
39
, align 8
call void @ijl_bounds_error_ints({}* %
4
, i64* %errorbox, i64 1)
call void @ijl_bounds_error_ints({}* %
6
, i64* %errorbox, i64 1)
unreachable
unreachable
idxend: ; preds = %L13
idxend: ; preds = %L13
复制
已复制
复制
已复制
%
26
= bitcast {}* %
4
to { i8*, i64, i16, i16, i32 }*
%
40
= bitcast {}* %
6
to { i8*, i64, i16, i16, i32 }*
%.data_ptr = getelementptr inbounds { i8*, i64, i16, i16, i32 }, { i8*, i64, i16, i16, i32 }* %
26
, i32 0, i32 0
%.data_ptr = getelementptr inbounds { i8*, i64, i16, i16, i32 }, { i8*, i64, i16, i16, i32 }* %
40
, i32 0, i32 0
%.data = load i8*, i8** %.data_ptr, align 8
%.data = load i8*, i8** %.data_ptr, align 8
复制
已复制
复制
已复制
%
27
= bitcast i8* %.data to double*
%
41
= bitcast i8* %.data to double*
%memcpy_refined_dst7 = getelementptr inbounds double, double* %
27
, i64 %
17
%memcpy_refined_dst7 = getelementptr inbounds double, double* %
41
, i64 %
27
%
28
= load double, double* @_j_const1, align 8
%
42
= load double, double* @_j_const1, align 8
store double %
28
, double* %memcpy_refined_dst7, align 8
store double %
42
, double* %memcpy_refined_dst7, align 8
; │└
; │└
; │ @ array.jl:394 within `fill!`
; │ @ array.jl:394 within `fill!`
; │┌ @ range.jl:901 within `iterate`
; │┌ @ range.jl:901 within `iterate`
; ││┌ @ promotion.jl:521 within `==`
; ││┌ @ promotion.jl:521 within `==`
复制
已复制
复制
已复制
%29
= icmp eq i64 %value_phi4, %.length
%"*Core.===#6" = load {}*, {}** @"*Core.===#6", align 8
%
30
= zext i1 %
29
to i8
%43 = bitcast {}* %"*Core.===#6" to {}**
%44 = getelementptr inbounds {}*, {}** %43, i64 0
%45
= icmp eq i64 %value_phi4, %.length
%
46
= zext i1 %
45
to i8
; ││└
; ││└
复制
已复制
复制
已复制
%
31
= trunc i8 %
30
to i1
%
47
= trunc i8 %
46
to i1
%
32
= xor i1 %
31
, true
%
48
= xor i1 %
47
, true
br i1 %
32
, label %L19, label %L18
br i1 %
48
, label %L19, label %L18
; └└
; └└
}
}
已保存差异
原始文本
打开文件
; @ array.jl:629 within `zeros` define nonnull {}* @julia_zeros_131(i64 signext %"dims[1]::Int64") #0 { top: %dims = alloca [1 x i64], align 8 %newstruct = alloca [1 x i64], align 8 %pgcstack = call {}*** @julia.get_pgcstack() %0 = bitcast {}*** %pgcstack to {}** %current_task = getelementptr inbounds {}*, {}** %0, i64 -14 %1 = bitcast {}** %current_task to i64* %world_age = getelementptr inbounds i64, i64* %1, i64 15 %2 = getelementptr inbounds [1 x i64], [1 x i64]* %newstruct, i32 0, i32 0 store i64 %"dims[1]::Int64", i64* %2, align 8 %memcpy_refined_src = getelementptr inbounds [1 x i64], [1 x i64]* %newstruct, i32 0, i32 0 %memcpy_refined_dst = getelementptr inbounds [1 x i64], [1 x i64]* %dims, i32 0, i32 0 %3 = load i64, i64* %memcpy_refined_src, align 8 store i64 %3, i64* %memcpy_refined_dst, align 8 ; @ array.jl:629 within `zeros` @ array.jl:631 @ array.jl:634 ; ┌ @ boot.jl:484 within `Array` %"dims.<unknown field>_ptr" = getelementptr inbounds [1 x i64], [1 x i64]* %dims, i32 0, i32 0 ; │ @ boot.jl:484 within `Array` @ boot.jl:475 %"dims.<unknown field>_ptr.unbox" = load i64, i64* %"dims.<unknown field>_ptr", align 8 %4 = call nonnull {}* inttoptr (i64 140036589843104 to {}* ({}*, i64)*)({}* inttoptr (i64 140036228716336 to {}*), i64 %"dims.<unknown field>_ptr.unbox") ; └ ; @ array.jl:629 within `zeros` @ array.jl:631 @ array.jl:635 ; ┌ @ array.jl:392 within `fill!` ; │┌ @ abstractarray.jl:318 within `eachindex` ; ││┌ @ abstractarray.jl:134 within `axes1` ; │││┌ @ abstractarray.jl:98 within `axes` ; ││││┌ @ array.jl:191 within `size` %5 = bitcast {}* %4 to { i8*, i64, i16, i16, i32 }* %.length_ptr = getelementptr inbounds { i8*, i64, i16, i16, i32 }, { i8*, i64, i16, i16, i32 }* %5, i32 0, i32 1 %.length = load i64, i64* %.length_ptr, align 8 ; │└└└└ ; │┌ @ range.jl:897 within `iterate` ; ││┌ @ range.jl:674 within `isempty` ; │││┌ @ operators.jl:378 within `>` ; ││││┌ @ int.jl:83 within `<` %6 = icmp slt i64 %.length, 1 ; ││└└└ %7 = zext i1 %6 to i8 %8 = trunc i8 %7 to i1 %9 = xor i1 %8, true br i1 %9, label %L7, label %L6 L6: ; preds = %top br label %L8 L7: ; preds = %top br label %L8 L8: ; preds = %L7, %L6 %value_phi = phi i8 [ 1, %L6 ], [ 0, %L7 ] %value_phi1 = phi i64 [ 1, %L7 ], [ undef, %L6 ] %value_phi2 = phi i64 [ 1, %L7 ], [ undef, %L6 ] ; │└ %10 = trunc i8 %value_phi to i1 %11 = xor i1 %10, true %12 = zext i1 %11 to i8 %13 = trunc i8 %12 to i1 %14 = xor i1 %13, true br i1 %14, label %L27, label %L8.L13_crit_edge L8.L13_crit_edge: ; preds = %L8 ; │┌ @ range.jl:897 within `iterate` br label %L13 L13: ; preds = %L26, %L8.L13_crit_edge %value_phi3 = phi i64 [ %value_phi1, %L8.L13_crit_edge ], [ %value_phi8, %L26 ] %value_phi4 = phi i64 [ %value_phi2, %L8.L13_crit_edge ], [ %value_phi9, %L26 ] ; │└ ; │ @ array.jl:393 within `fill!` ; │┌ @ array.jl:1019 within `setindex!` %15 = sub i64 %value_phi3, 1 %16 = mul i64 %15, 1 %17 = add i64 0, %16 %18 = bitcast {}* %4 to { i8*, i64, i16, i16, i32 }* %.length_ptr5 = getelementptr inbounds { i8*, i64, i16, i16, i32 }, { i8*, i64, i16, i16, i32 }* %18, i32 0, i32 1 %.length6 = load i64, i64* %.length_ptr5, align 8 %inbounds = icmp ult i64 %17, %.length6 br i1 %inbounds, label %idxend, label %oob L18: ; preds = %idxend ; │└ ; │ @ array.jl:394 within `fill!` ; │┌ @ range.jl:901 within `iterate` br label %L21 L19: ; preds = %idxend ; ││ @ range.jl:902 within `iterate` ; ││┌ @ int.jl:87 within `+` %19 = add i64 %value_phi4, 1 ; ││└ ; ││ @ range.jl:901 within `iterate` br label %L21 L21: ; preds = %L19, %L18 %value_phi8 = phi i64 [ %19, %L19 ], [ undef, %L18 ] %value_phi9 = phi i64 [ %19, %L19 ], [ undef, %L18 ] %value_phi10 = phi i8 [ 1, %L18 ], [ 0, %L19 ] ; │└ %20 = trunc i8 %value_phi10 to i1 %21 = xor i1 %20, true %22 = zext i1 %21 to i8 %23 = trunc i8 %22 to i1 %24 = xor i1 %23, true br i1 %24, label %L27, label %L26 L26: ; preds = %L21 ; │ @ array.jl:392 within `fill!` ; │┌ @ range.jl:897 within `iterate` br label %L13 L27: ; preds = %L21, %L8 ; │└ ; │ @ array.jl:395 within `fill!` br label %L28 L28: ; preds = %L27 ; └ ; @ array.jl:629 within `zeros` @ array.jl:631 @ array.jl:636 br label %L29 L29: ; preds = %L28 ; @ array.jl:629 within `zeros` @ array.jl:631 br label %L30 L30: ; preds = %L29 ; @ array.jl:629 within `zeros` ret {}* %4 oob: ; preds = %L13 ; @ array.jl:629 within `zeros` @ array.jl:631 @ array.jl:635 ; ┌ @ array.jl:393 within `fill!` ; │┌ @ array.jl:1019 within `setindex!` %errorbox = alloca i64, i64 1, align 8 %25 = getelementptr inbounds i64, i64* %errorbox, i64 0 store i64 %value_phi3, i64* %25, align 8 call void @ijl_bounds_error_ints({}* %4, i64* %errorbox, i64 1) unreachable idxend: ; preds = %L13 %26 = bitcast {}* %4 to { i8*, i64, i16, i16, i32 }* %.data_ptr = getelementptr inbounds { i8*, i64, i16, i16, i32 }, { i8*, i64, i16, i16, i32 }* %26, i32 0, i32 0 %.data = load i8*, i8** %.data_ptr, align 8 %27 = bitcast i8* %.data to double* %memcpy_refined_dst7 = getelementptr inbounds double, double* %27, i64 %17 %28 = load double, double* @_j_const1, align 8 store double %28, double* %memcpy_refined_dst7, align 8 ; │└ ; │ @ array.jl:394 within `fill!` ; │┌ @ range.jl:901 within `iterate` ; ││┌ @ promotion.jl:521 within `==` %29 = icmp eq i64 %value_phi4, %.length %30 = zext i1 %29 to i8 ; ││└ %31 = trunc i8 %30 to i1 %32 = xor i1 %31, true br i1 %32, label %L19, label %L18 ; └└ }
更改后文本
打开文件
; @ array.jl:629 within `zeros` define nonnull {}* @julia_zeros_151(i64 signext %"dims[1]::Int64") #0 { top: %dims = alloca [1 x i64], align 8 %newstruct = alloca [1 x i64], align 8 %pgcstack = call {}*** @julia.get_pgcstack() %0 = bitcast {}*** %pgcstack to {}** %current_task = getelementptr inbounds {}*, {}** %0, i64 -14 %1 = bitcast {}** %current_task to i64* %world_age = getelementptr inbounds i64, i64* %1, i64 15 %2 = getelementptr inbounds [1 x i64], [1 x i64]* %newstruct, i32 0, i32 0 store i64 %"dims[1]::Int64", i64* %2, align 8 %memcpy_refined_src = getelementptr inbounds [1 x i64], [1 x i64]* %newstruct, i32 0, i32 0 %memcpy_refined_dst = getelementptr inbounds [1 x i64], [1 x i64]* %dims, i32 0, i32 0 %3 = load i64, i64* %memcpy_refined_src, align 8 store i64 %3, i64* %memcpy_refined_dst, align 8 ; @ array.jl:629 within `zeros` @ array.jl:631 @ array.jl:634 ; ┌ @ boot.jl:484 within `Array` %"*Core.getfield#1" = load {}*, {}** @"*Core.getfield#1", align 8 %4 = bitcast {}* %"*Core.getfield#1" to {}** %5 = getelementptr inbounds {}*, {}** %4, i64 0 %"dims.<unknown field>_ptr" = getelementptr inbounds [1 x i64], [1 x i64]* %dims, i32 0, i32 0 ; │ @ boot.jl:484 within `Array` @ boot.jl:475 %"dims.<unknown field>_ptr.unbox" = load i64, i64* %"dims.<unknown field>_ptr", align 8 %6 = call nonnull {}* inttoptr (i64 139718400307872 to {}* ({}*, i64)*)({}* inttoptr (i64 139718039246640 to {}*), i64 %"dims.<unknown field>_ptr.unbox") ; └ ; @ array.jl:629 within `zeros` @ array.jl:631 @ array.jl:635 ; ┌ @ array.jl:392 within `fill!` ; │┌ @ abstractarray.jl:318 within `eachindex` ; ││┌ @ abstractarray.jl:134 within `axes1` ; │││┌ @ abstractarray.jl:98 within `axes` ; ││││┌ @ array.jl:191 within `size` %"*Core.arraysize#2" = load {}*, {}** @"*Core.arraysize#2", align 8 %7 = bitcast {}* %"*Core.arraysize#2" to {}** %8 = getelementptr inbounds {}*, {}** %7, i64 0 %9 = bitcast {}* %6 to { i8*, i64, i16, i16, i32 }* %.length_ptr = getelementptr inbounds { i8*, i64, i16, i16, i32 }, { i8*, i64, i16, i16, i32 }* %9, i32 0, i32 1 %.length = load i64, i64* %.length_ptr, align 8 ; │└└└└ ; │┌ @ range.jl:897 within `iterate` ; ││┌ @ range.jl:674 within `isempty` ; │││┌ @ operators.jl:378 within `>` ; ││││┌ @ int.jl:83 within `<` %"*Core.Intrinsics.slt_int#3" = load {}*, {}** @"*Core.Intrinsics.slt_int#3", align 8 %10 = bitcast {}* %"*Core.Intrinsics.slt_int#3" to {}** %11 = getelementptr inbounds {}*, {}** %10, i64 0 %12 = icmp slt i64 %.length, 1 ; ││└└└ %13 = zext i1 %12 to i8 %14 = trunc i8 %13 to i1 %15 = xor i1 %14, true br i1 %15, label %L7, label %L6 L6: ; preds = %top br label %L8 L7: ; preds = %top br label %L8 L8: ; preds = %L7, %L6 %value_phi = phi i8 [ 1, %L6 ], [ 0, %L7 ] %value_phi1 = phi i64 [ 1, %L7 ], [ undef, %L6 ] %value_phi2 = phi i64 [ 1, %L7 ], [ undef, %L6 ] ; │└ %"*Core.Intrinsics.not_int#4" = load {}*, {}** @"*Core.Intrinsics.not_int#4", align 8 %16 = bitcast {}* %"*Core.Intrinsics.not_int#4" to {}** %17 = getelementptr inbounds {}*, {}** %16, i64 0 %18 = trunc i8 %value_phi to i1 %19 = xor i1 %18, true %20 = zext i1 %19 to i8 %21 = trunc i8 %20 to i1 %22 = xor i1 %21, true br i1 %22, label %L27, label %L8.L13_crit_edge L8.L13_crit_edge: ; preds = %L8 ; │┌ @ range.jl:897 within `iterate` br label %L13 L13: ; preds = %L26, %L8.L13_crit_edge %value_phi3 = phi i64 [ %value_phi1, %L8.L13_crit_edge ], [ %value_phi8, %L26 ] %value_phi4 = phi i64 [ %value_phi2, %L8.L13_crit_edge ], [ %value_phi9, %L26 ] ; │└ ; │ @ array.jl:393 within `fill!` ; │┌ @ array.jl:1019 within `setindex!` %"*Core.arrayset#5" = load {}*, {}** @"*Core.arrayset#5", align 8 %23 = bitcast {}* %"*Core.arrayset#5" to {}** %24 = getelementptr inbounds {}*, {}** %23, i64 0 %25 = sub i64 %value_phi3, 1 %26 = mul i64 %25, 1 %27 = add i64 0, %26 %28 = bitcast {}* %6 to { i8*, i64, i16, i16, i32 }* %.length_ptr5 = getelementptr inbounds { i8*, i64, i16, i16, i32 }, { i8*, i64, i16, i16, i32 }* %28, i32 0, i32 1 %.length6 = load i64, i64* %.length_ptr5, align 8 %inbounds = icmp ult i64 %27, %.length6 br i1 %inbounds, label %idxend, label %oob L18: ; preds = %idxend ; │└ ; │ @ array.jl:394 within `fill!` ; │┌ @ range.jl:901 within `iterate` br label %L21 L19: ; preds = %idxend ; ││ @ range.jl:902 within `iterate` ; ││┌ @ int.jl:87 within `+` %"*Core.Intrinsics.add_int#7" = load {}*, {}** @"*Core.Intrinsics.add_int#7", align 8 %29 = bitcast {}* %"*Core.Intrinsics.add_int#7" to {}** %30 = getelementptr inbounds {}*, {}** %29, i64 0 %31 = add i64 %value_phi4, 1 ; ││└ ; ││ @ range.jl:901 within `iterate` br label %L21 L21: ; preds = %L19, %L18 %value_phi8 = phi i64 [ %31, %L19 ], [ undef, %L18 ] %value_phi9 = phi i64 [ %31, %L19 ], [ undef, %L18 ] %value_phi10 = phi i8 [ 1, %L18 ], [ 0, %L19 ] ; │└ %"*Core.Intrinsics.not_int#411" = load {}*, {}** @"*Core.Intrinsics.not_int#4", align 8 %32 = bitcast {}* %"*Core.Intrinsics.not_int#411" to {}** %33 = getelementptr inbounds {}*, {}** %32, i64 0 %34 = trunc i8 %value_phi10 to i1 %35 = xor i1 %34, true %36 = zext i1 %35 to i8 %37 = trunc i8 %36 to i1 %38 = xor i1 %37, true br i1 %38, label %L27, label %L26 L26: ; preds = %L21 ; │ @ array.jl:392 within `fill!` ; │┌ @ range.jl:897 within `iterate` br label %L13 L27: ; preds = %L21, %L8 ; │└ ; │ @ array.jl:395 within `fill!` br label %L28 L28: ; preds = %L27 ; └ ; @ array.jl:629 within `zeros` @ array.jl:631 @ array.jl:636 br label %L29 L29: ; preds = %L28 ; @ array.jl:629 within `zeros` @ array.jl:631 br label %L30 L30: ; preds = %L29 ; @ array.jl:629 within `zeros` ret {}* %6 oob: ; preds = %L13 ; @ array.jl:629 within `zeros` @ array.jl:631 @ array.jl:635 ; ┌ @ array.jl:393 within `fill!` ; │┌ @ array.jl:1019 within `setindex!` %errorbox = alloca i64, i64 1, align 8 %39 = getelementptr inbounds i64, i64* %errorbox, i64 0 store i64 %value_phi3, i64* %39, align 8 call void @ijl_bounds_error_ints({}* %6, i64* %errorbox, i64 1) unreachable idxend: ; preds = %L13 %40 = bitcast {}* %6 to { i8*, i64, i16, i16, i32 }* %.data_ptr = getelementptr inbounds { i8*, i64, i16, i16, i32 }, { i8*, i64, i16, i16, i32 }* %40, i32 0, i32 0 %.data = load i8*, i8** %.data_ptr, align 8 %41 = bitcast i8* %.data to double* %memcpy_refined_dst7 = getelementptr inbounds double, double* %41, i64 %27 %42 = load double, double* @_j_const1, align 8 store double %42, double* %memcpy_refined_dst7, align 8 ; │└ ; │ @ array.jl:394 within `fill!` ; │┌ @ range.jl:901 within `iterate` ; ││┌ @ promotion.jl:521 within `==` %"*Core.===#6" = load {}*, {}** @"*Core.===#6", align 8 %43 = bitcast {}* %"*Core.===#6" to {}** %44 = getelementptr inbounds {}*, {}** %43, i64 0 %45 = icmp eq i64 %value_phi4, %.length %46 = zext i1 %45 to i8 ; ││└ %47 = trunc i8 %46 to i1 %48 = xor i1 %47, true br i1 %48, label %L19, label %L18 ; └└ }
查找差异