numbox 0.1.2__py3-none-any.whl → 0.1.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of numbox might be problematic. Click here for more details.

@@ -0,0 +1,2270 @@
1
+ """
2
+
3
+ ; ModuleID = 'func4'
4
+ source_filename = "<string>"
5
+ target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
6
+ target triple = "arm64-apple-darwin24.3.0"
7
+
8
+ @.const.func4 = internal constant [6 x i8] c"func4\00"
9
+ @_ZN08NumbaEnv8__main__5func4B2v9B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx = common local_unnamed_addr global i8* null
10
+ @".const.missing Environment: _ZN08NumbaEnv8__main__5func4B2v9B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx" = internal constant [97 x i8] c"missing Environment: _ZN08NumbaEnv8__main__5func4B2v9B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx\00"
11
+ @".const.Error creating Python tuple from runtime exception arguments" = internal constant [61 x i8] c"Error creating Python tuple from runtime exception arguments\00"
12
+ @".const.unknown error when calling native function" = internal constant [43 x i8] c"unknown error when calling native function\00"
13
+ @".const.Error creating Python tuple from runtime exception arguments.1" = internal constant [61 x i8] c"Error creating Python tuple from runtime exception arguments\00"
14
+ @".const.unknown error when calling native function.2" = internal constant [43 x i8] c"unknown error when calling native function\00"
15
+ @".const.<numba.core.cpu.CPUContext object at 0x110f389b0>" = internal constant [50 x i8] c"<numba.core.cpu.CPUContext object at 0x110f389b0>\00"
16
+ @_ZN08NumbaEnv8__main__5func3B3v10B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx = common local_unnamed_addr global i8* null
17
+ @.const.pickledata.4575674496 = internal constant [77 x i8] c"\80\04\95B\00\00\00\00\00\00\00\8C\08builtins\94\8C\0AValueError\94\93\94\8C\1Fnegative dimensions not allowed\94\85\94N\87\94."
18
+ @.const.pickledata.4575674496.sha1 = internal constant [20 x i8] c"3\1B\85c\BD\B9\DA\C8\1B8B\22s\05,Ho\C1pk"
19
+ @.const.picklebuf.4575674496 = internal constant { i8*, i32, i8*, i8*, i32 } { i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.const.pickledata.4575674496, i32 0, i32 0), i32 77, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.const.pickledata.4575674496.sha1, i32 0, i32 0), i8* null, i32 0 }
20
+ @.const.pickledata.4575674432 = internal constant [137 x i8] c"\80\04\95~\00\00\00\00\00\00\00\8C\08builtins\94\8C\0AValueError\94\93\94\8C[array is too big; `arr.size * arr.dtype.itemsize` is larger than the maximum possible size.\94\85\94N\87\94."
21
+ @.const.pickledata.4575674432.sha1 = internal constant [20 x i8] c"X\E1N\CC\B5\07\B1\E0 i\81t\02#\E6\85\CB\8C<W"
22
+ @.const.picklebuf.4575674432 = internal constant { i8*, i32, i8*, i8*, i32 } { i8* getelementptr inbounds ([137 x i8], [137 x i8]* @.const.pickledata.4575674432, i32 0, i32 0), i32 137, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.const.pickledata.4575674432.sha1, i32 0, i32 0), i8* null, i32 0 }
23
+ @.const.pickledata.4575216064 = internal constant [86 x i8] c"\80\04\95K\00\00\00\00\00\00\00\8C\08builtins\94\8C\0BMemoryError\94\93\94\8C'Allocation failed (probably too large).\94\85\94N\87\94."
24
+ @.const.pickledata.4575216064.sha1 = internal constant [20 x i8] c"\BA(\9D\81\F0\\p \F3G|\15sH\04\DFe\AB\E2\09"
25
+ @.const.picklebuf.4575216064 = internal constant { i8*, i32, i8*, i8*, i32 } { i8* getelementptr inbounds ([86 x i8], [86 x i8]* @.const.pickledata.4575216064, i32 0, i32 0), i32 86, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.const.pickledata.4575216064.sha1, i32 0, i32 0), i8* null, i32 0 }
26
+ @.const.pickledata.4575674496.14 = internal constant [77 x i8] c"\80\04\95B\00\00\00\00\00\00\00\8C\08builtins\94\8C\0AValueError\94\93\94\8C\1Fnegative dimensions not allowed\94\85\94N\87\94."
27
+ @.const.pickledata.4575674496.sha1.15 = internal constant [20 x i8] c"3\1B\85c\BD\B9\DA\C8\1B8B\22s\05,Ho\C1pk"
28
+ @.const.picklebuf.4575674496.13 = internal constant { i8*, i32, i8*, i8*, i32 } { i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.const.pickledata.4575674496.14, i32 0, i32 0), i32 77, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.const.pickledata.4575674496.sha1.15, i32 0, i32 0), i8* null, i32 0 }
29
+ @.const.pickledata.4575674432.16 = internal constant [137 x i8] c"\80\04\95~\00\00\00\00\00\00\00\8C\08builtins\94\8C\0AValueError\94\93\94\8C[array is too big; `arr.size * arr.dtype.itemsize` is larger than the maximum possible size.\94\85\94N\87\94."
30
+ @.const.pickledata.4575674432.sha1.17 = internal constant [20 x i8] c"X\E1N\CC\B5\07\B1\E0 i\81t\02#\E6\85\CB\8C<W"
31
+ @.const.picklebuf.4575674432.12 = internal constant { i8*, i32, i8*, i8*, i32 } { i8* getelementptr inbounds ([137 x i8], [137 x i8]* @.const.pickledata.4575674432.16, i32 0, i32 0), i32 137, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.const.pickledata.4575674432.sha1.17, i32 0, i32 0), i8* null, i32 0 }
32
+ @.const.pickledata.4575216064.18 = internal constant [86 x i8] c"\80\04\95K\00\00\00\00\00\00\00\8C\08builtins\94\8C\0BMemoryError\94\93\94\8C'Allocation failed (probably too large).\94\85\94N\87\94."
33
+ @.const.pickledata.4575216064.sha1.19 = internal constant [20 x i8] c"\BA(\9D\81\F0\\p \F3G|\15sH\04\DFe\AB\E2\09"
34
+ @.const.picklebuf.4575216064.11 = internal constant { i8*, i32, i8*, i8*, i32 } { i8* getelementptr inbounds ([86 x i8], [86 x i8]* @.const.pickledata.4575216064.18, i32 0, i32 0), i32 86, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.const.pickledata.4575216064.sha1.19, i32 0, i32 0), i8* null, i32 0 }
35
+ @.const.pickledata.4575674496.16 = internal constant [77 x i8] c"\80\04\95B\00\00\00\00\00\00\00\8C\08builtins\94\8C\0AValueError\94\93\94\8C\1Fnegative dimensions not allowed\94\85\94N\87\94."
36
+ @.const.pickledata.4575674496.sha1.17 = internal constant [20 x i8] c"3\1B\85c\BD\B9\DA\C8\1B8B\22s\05,Ho\C1pk"
37
+ @.const.picklebuf.4575674496.15 = internal constant { i8*, i32, i8*, i8*, i32 } { i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.const.pickledata.4575674496.16, i32 0, i32 0), i32 77, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.const.pickledata.4575674496.sha1.17, i32 0, i32 0), i8* null, i32 0 }
38
+ @.const.pickledata.4575674432.18 = internal constant [137 x i8] c"\80\04\95~\00\00\00\00\00\00\00\8C\08builtins\94\8C\0AValueError\94\93\94\8C[array is too big; `arr.size * arr.dtype.itemsize` is larger than the maximum possible size.\94\85\94N\87\94."
39
+ @.const.pickledata.4575674432.sha1.19 = internal constant [20 x i8] c"X\E1N\CC\B5\07\B1\E0 i\81t\02#\E6\85\CB\8C<W"
40
+ @.const.picklebuf.4575674432.14 = internal constant { i8*, i32, i8*, i8*, i32 } { i8* getelementptr inbounds ([137 x i8], [137 x i8]* @.const.pickledata.4575674432.18, i32 0, i32 0), i32 137, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.const.pickledata.4575674432.sha1.19, i32 0, i32 0), i8* null, i32 0 }
41
+ @.const.pickledata.4575216064.20 = internal constant [86 x i8] c"\80\04\95K\00\00\00\00\00\00\00\8C\08builtins\94\8C\0BMemoryError\94\93\94\8C'Allocation failed (probably too large).\94\85\94N\87\94."
42
+ @.const.pickledata.4575216064.sha1.21 = internal constant [20 x i8] c"\BA(\9D\81\F0\\p \F3G|\15sH\04\DFe\AB\E2\09"
43
+ @.const.picklebuf.4575216064.13 = internal constant { i8*, i32, i8*, i8*, i32 } { i8* getelementptr inbounds ([86 x i8], [86 x i8]* @.const.pickledata.4575216064.20, i32 0, i32 0), i32 86, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.const.pickledata.4575216064.sha1.21, i32 0, i32 0), i8* null, i32 0 }
44
+ @_ZN08NumbaEnv8__main__5func2B3v11B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx = common local_unnamed_addr global i8* null
45
+ @_Py_NoneStruct = external global i8
46
+ @PyExc_StopIteration = external global i8
47
+ @_ZN08NumbaEnv5numba7cpython11old_numbers14int_power_impl12_3clocals_3e9int_powerB3v12B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAExx = common local_unnamed_addr global i8* null
48
+ @.const.pickledata.4575674496.18 = internal constant [77 x i8] c"\80\04\95B\00\00\00\00\00\00\00\8C\08builtins\94\8C\0AValueError\94\93\94\8C\1Fnegative dimensions not allowed\94\85\94N\87\94."
49
+ @.const.pickledata.4575674496.sha1.19 = internal constant [20 x i8] c"3\1B\85c\BD\B9\DA\C8\1B8B\22s\05,Ho\C1pk"
50
+ @.const.picklebuf.4575674496.17 = internal constant { i8*, i32, i8*, i8*, i32 } { i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.const.pickledata.4575674496.18, i32 0, i32 0), i32 77, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.const.pickledata.4575674496.sha1.19, i32 0, i32 0), i8* null, i32 0 }
51
+ @.const.pickledata.4575674432.20 = internal constant [137 x i8] c"\80\04\95~\00\00\00\00\00\00\00\8C\08builtins\94\8C\0AValueError\94\93\94\8C[array is too big; `arr.size * arr.dtype.itemsize` is larger than the maximum possible size.\94\85\94N\87\94."
52
+ @.const.pickledata.4575674432.sha1.21 = internal constant [20 x i8] c"X\E1N\CC\B5\07\B1\E0 i\81t\02#\E6\85\CB\8C<W"
53
+ @.const.picklebuf.4575674432.16 = internal constant { i8*, i32, i8*, i8*, i32 } { i8* getelementptr inbounds ([137 x i8], [137 x i8]* @.const.pickledata.4575674432.20, i32 0, i32 0), i32 137, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.const.pickledata.4575674432.sha1.21, i32 0, i32 0), i8* null, i32 0 }
54
+ @.const.pickledata.4575216064.22 = internal constant [86 x i8] c"\80\04\95K\00\00\00\00\00\00\00\8C\08builtins\94\8C\0BMemoryError\94\93\94\8C'Allocation failed (probably too large).\94\85\94N\87\94."
55
+ @.const.pickledata.4575216064.sha1.23 = internal constant [20 x i8] c"\BA(\9D\81\F0\\p \F3G|\15sH\04\DFe\AB\E2\09"
56
+ @.const.picklebuf.4575216064.15 = internal constant { i8*, i32, i8*, i8*, i32 } { i8* getelementptr inbounds ([86 x i8], [86 x i8]* @.const.pickledata.4575216064.22, i32 0, i32 0), i32 86, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.const.pickledata.4575216064.sha1.23, i32 0, i32 0), i8* null, i32 0 }
57
+ @_ZN08NumbaEnv8__main__5func1B2v3B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx = common local_unnamed_addr global i8* null
58
+ @PyExc_RuntimeError = external global i8
59
+ @PyExc_SystemError = external global i8
60
+ @_ZN08NumbaEnv5numba2np8arrayobj11ol_np_zeros12_3clocals_3e4implB2v4B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx48omitted_28default_3d_3cclass_20_27float_27_3e_29 = common local_unnamed_addr global i8* null
61
+ @_ZN08NumbaEnv5numba2np8arrayobj11ol_np_empty12_3clocals_3e4implB2v5B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx39Function_28_3cclass_20_27float_27_3e_29 = common local_unnamed_addr global i8* null
62
+ @_ZN08NumbaEnv5numba2np8arrayobj15_call_allocatorB2v6B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj = common local_unnamed_addr global i8* null
63
+ @_ZN08NumbaEnv5numba2np8arrayobj18_ol_array_allocate12_3clocals_3e4implB2v7B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj = common local_unnamed_addr global i8* null
64
+ @_ZN08NumbaEnv5numba2np8arrayobj18ol_array_zero_fill12_3clocals_3e4implB2v8B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dE5ArrayIdLi1E1C7mutable7alignedE = common local_unnamed_addr global i8* null
65
+ @_ZN08NumbaEnv5numba2np13old_arraymath9array_sum12_3clocals_3e14array_sum_implB3v13B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAE5ArrayIdLi1E1C7mutable7alignedE = common local_unnamed_addr global i8* null
66
+ @_ZN08NumbaEnv5numba2np8arrayobj15make_nditer_cls12_3clocals_3e6NdIter13init_specific12_3clocals_3e11check_shapeB3v14B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAE8UniTupleIxLi1EE8UniTupleIxLi1EE = common local_unnamed_addr global i8* null
67
+
68
+ define i32 @_ZN8__main__5func4B2v9B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx([5 x double]* noalias nocapture writeonly %retptr, { i8*, i32, i8*, i8*, i32 }** noalias nocapture writeonly %excinfo, i64 %arg.m) local_unnamed_addr {
69
+ B0.endif:
70
+ %.152 = alloca { double, double, i64, double, double }, align 8
71
+ %excinfo.1 = alloca { i8*, i32, i8*, i8*, i32 }*, align 8
72
+ store { i8*, i32, i8*, i8*, i32 }* null, { i8*, i32, i8*, i8*, i32 }** %excinfo.1, align 8
73
+ %.636 = alloca { double, double, i64, i64, double }, align 8
74
+ %excinfo.3 = alloca { i8*, i32, i8*, i8*, i32 }*, align 8
75
+ store { i8*, i32, i8*, i8*, i32 }* null, { i8*, i32, i8*, i8*, i32 }** %excinfo.3, align 8
76
+ %.848 = alloca { double, double, double, i64, i64 }, align 8
77
+ %excinfo.5 = alloca { i8*, i32, i8*, i8*, i32 }*, align 8
78
+ store { i8*, i32, i8*, i8*, i32 }* null, { i8*, i32, i8*, i8*, i32 }** %excinfo.5, align 8
79
+ %0 = tail call i64 @llvm.smax.i64(i64 %arg.m, i64 0)
80
+ %.10484.not = icmp slt i64 %arg.m, 1
81
+ br i1 %.10484.not, label %B228.else.if, label %B54.preheader
82
+
83
+ B54.preheader: ; preds = %B0.endif
84
+ br label %B54
85
+
86
+ B54: ; preds = %B54.preheader, %B192.else.if
87
+ %lsr.iv125 = phi i64 [ 10, %B54.preheader ], [ %lsr.iv.next126, %B192.else.if ]
88
+ %lsr.iv123 = phi i64 [ 0, %B54.preheader ], [ %lsr.iv.next124, %B192.else.if ]
89
+ %total_sum.4.090 = phi double [ %total_sum.5.1, %B192.else.if ], [ 0.000000e+00, %B54.preheader ]
90
+ %max_value.3.089 = phi double [ %max_value.4.1, %B192.else.if ], [ -1.000000e+07, %B54.preheader ]
91
+ %factorial_sum.3.088 = phi double [ %factorial_sum.4.1, %B192.else.if ], [ 0.000000e+00, %B54.preheader ]
92
+ %count_total.3.087 = phi double [ %count_total.4.1, %B192.else.if ], [ 0.000000e+00, %B54.preheader ]
93
+ %.46.085 = phi i64 [ %.117, %B192.else.if ], [ 1, %B54.preheader ]
94
+ %1 = bitcast { double, double, i64, double, double }* %.152 to i8*
95
+ %2 = udiv i64 %.46.085, 11
96
+ %3 = mul nuw nsw i64 %2, 11
97
+ %4 = add nsw i64 %3, -1
98
+ %5 = udiv i64 %.46.085, 7
99
+ %6 = mul nuw nsw i64 %5, 7
100
+ %7 = add nsw i64 %6, -1
101
+ %8 = udiv i64 %.46.085, 5
102
+ %9 = mul nuw nsw i64 %8, 5
103
+ %10 = add nsw i64 %9, -1
104
+ %11 = add i64 %lsr.iv123, 1
105
+ call void @llvm.memset.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(40) %1, i8 0, i64 40, i1 false)
106
+ %.156 = call i32 @_ZN8__main__5func3B3v10B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx({ double, double, i64, double, double }* nonnull %.152, { i8*, i32, i8*, i8*, i32 }** nonnull %excinfo.1, i64 %lsr.iv125)
107
+ switch i32 %.156, label %B54.if [
108
+ i32 -2, label %B54.endif
109
+ i32 0, label %B54.endif
110
+ ]
111
+
112
+ B270: ; preds = %B270.preheader, %B270.endif
113
+ %lsr.iv121 = phi i64 [ 5, %B270.preheader ], [ %lsr.iv.next122, %B270.endif ]
114
+ %lsr.iv119 = phi i64 [ %spec.select66, %B270.preheader ], [ %lsr.iv.next120, %B270.endif ]
115
+ %max_value.5.082 = phi double [ %.676, %B270.endif ], [ %max_value.3.0.lcssa, %B270.preheader ]
116
+ %total_sum.6.081 = phi double [ %.671, %B270.endif ], [ %total_sum.4.0.lcssa, %B270.preheader ]
117
+ %12 = bitcast { double, double, i64, i64, double }* %.636 to i8*
118
+ call void @llvm.memset.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(40) %12, i8 0, i64 40, i1 false)
119
+ %.640 = call i32 @_ZN8__main__5func2B3v11B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx({ double, double, i64, i64, double }* nonnull %.636, { i8*, i32, i8*, i8*, i32 }** nonnull %excinfo.3, i64 %lsr.iv121)
120
+ switch i32 %.640, label %B270.if [
121
+ i32 -2, label %B270.endif
122
+ i32 0, label %B270.endif
123
+ ]
124
+
125
+ B348: ; preds = %B270.endif, %B228.else.if
126
+ %total_sum.6.0.lcssa = phi double [ %total_sum.4.0.lcssa, %B228.else.if ], [ %.671, %B270.endif ]
127
+ %max_value.5.0.lcssa = phi double [ %max_value.3.0.lcssa, %B228.else.if ], [ %.676, %B270.endif ]
128
+ %.15.i.i = icmp slt i64 %arg.m, 0
129
+ br i1 %.15.i.i, label %B348.if, label %B0.endif.endif.i.i, !prof !0
130
+
131
+ B0.endif.endif.i.i: ; preds = %B348
132
+ %.29.i.i = tail call { i64, i1 } @llvm.smul.with.overflow.i64(i64 %arg.m, i64 8)
133
+ %.31.i.i = extractvalue { i64, i1 } %.29.i.i, 1
134
+ br i1 %.31.i.i, label %B348.if, label %B0.endif.endif.endif.i.i, !prof !0
135
+
136
+ B0.endif.endif.endif.i.i: ; preds = %B0.endif.endif.i.i
137
+ %.30.i.i = extractvalue { i64, i1 } %.29.i.i, 0
138
+ %.7.i.i.i.i = tail call i8* @NRT_MemInfo_alloc_aligned(i64 %.30.i.i, i32 32), !noalias !1
139
+ %.8.i.i.i.i = icmp eq i8* %.7.i.i.i.i, null
140
+ br i1 %.8.i.i.i.i, label %B348.if, label %B348.endif.endif, !prof !0
141
+
142
+ B418: ; preds = %B418.preheader, %B418.endif
143
+ %.752.076 = phi i64 [ %.847, %B418.endif ], [ 0, %B418.preheader ]
144
+ %13 = bitcast { double, double, double, i64, i64 }* %.848 to i8*
145
+ %.847 = add nuw nsw i64 %.752.076, 1
146
+ %14 = add i64 %.752.076, 1
147
+ call void @llvm.memset.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(40) %13, i8 0, i64 40, i1 false)
148
+ %.852 = call i32 @_ZN8__main__5func1B2v3B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx({ double, double, double, i64, i64 }* nonnull %.848, { i8*, i32, i8*, i8*, i32 }** nonnull %excinfo.5, i64 %14)
149
+ switch i32 %.852, label %B418.if [
150
+ i32 -2, label %B418.endif
151
+ i32 0, label %B418.endif
152
+ ]
153
+
154
+ B52.endif.i.preheader: ; preds = %B418.endif
155
+ %smax = call i64 @llvm.smax.i64(i64 %arg.m, i64 1)
156
+ br label %B52.endif.i
157
+
158
+ B52.endif.i: ; preds = %B52.endif.i.preheader, %B52.endif.i
159
+ %lsr.iv117 = phi double* [ %.6.i1.i.i, %B52.endif.i.preheader ], [ %scevgep, %B52.endif.i ]
160
+ %lsr.iv = phi i64 [ %smax, %B52.endif.i.preheader ], [ %lsr.iv.next, %B52.endif.i ]
161
+ %c.2.06.i = phi double [ %.239.i, %B52.endif.i ], [ 0.000000e+00, %B52.endif.i.preheader ]
162
+ %.236.i = load double, double* %lsr.iv117, align 8, !noalias !14
163
+ %.239.i = fadd double %c.2.06.i, %.236.i
164
+ %lsr.iv.next = add nsw i64 %lsr.iv, -1
165
+ %scevgep = getelementptr double, double* %lsr.iv117, i64 1
166
+ %exitcond.not = icmp eq i64 %lsr.iv.next, 0
167
+ br i1 %exitcond.not, label %B472.endif, label %B52.endif.i, !prof !0
168
+
169
+ common.ret: ; preds = %B418.if, %B348.if, %B270.if, %B54.if, %B472.endif
170
+ %common.ret.op = phi i32 [ 0, %B472.endif ], [ 1, %B348.if ], [ %.852, %B418.if ], [ %.640, %B270.if ], [ %.156, %B54.if ]
171
+ ret i32 %common.ret.op
172
+
173
+ B54.if: ; preds = %B54
174
+ %.164 = icmp sgt i32 %.156, 0
175
+ %.157 = load { i8*, i32, i8*, i8*, i32 }*, { i8*, i32, i8*, i8*, i32 }** %excinfo.1, align 8
176
+ %.165 = select i1 %.164, { i8*, i32, i8*, i8*, i32 }* %.157, { i8*, i32, i8*, i8*, i32 }* undef
177
+ store { i8*, i32, i8*, i8*, i32 }* %.165, { i8*, i32, i8*, i8*, i32 }** %excinfo, align 8
178
+ br label %common.ret
179
+
180
+ B54.endif: ; preds = %B54, %B54
181
+ %15 = bitcast { double, double, i64, double, double }* %.152 to double*
182
+ %16 = bitcast { double, double, i64, double, double }* %.152 to i8*
183
+ %sunkaddr = getelementptr inbounds i8, i8* %16, i64 32
184
+ %17 = bitcast i8* %sunkaddr to double*
185
+ %.166.fca.4.load = load double, double* %17, align 8
186
+ %18 = bitcast { double, double, i64, double, double }* %.152 to i8*
187
+ %sunkaddr130 = getelementptr inbounds i8, i8* %18, i64 24
188
+ %19 = bitcast i8* %sunkaddr130 to double*
189
+ %.166.fca.3.load = load double, double* %19, align 8
190
+ %20 = bitcast { double, double, i64, double, double }* %.152 to i8*
191
+ %sunkaddr131 = getelementptr inbounds i8, i8* %20, i64 8
192
+ %21 = bitcast i8* %sunkaddr131 to double*
193
+ %.166.fca.1.load = load double, double* %21, align 8
194
+ %.166.fca.0.load = load double, double* %15, align 8
195
+ %.196 = fadd double %total_sum.4.090, %.166.fca.0.load
196
+ %.204 = fcmp ogt double %.166.fca.1.load, %max_value.3.089
197
+ %max_value.4.1 = select i1 %.204, double %.166.fca.1.load, double %max_value.3.089
198
+ %.222 = fadd double %factorial_sum.3.088, %.166.fca.3.load
199
+ %.232 = fadd double %count_total.3.087, %.166.fca.4.load
200
+ %.283 = icmp eq i64 %10, %lsr.iv123
201
+ %.286 = fmul double %.196, 0x3FEE666666666666
202
+ %total_sum.5.1 = select i1 %.283, double %.286, double %.196
203
+ %.341 = icmp eq i64 %7, %lsr.iv123
204
+ br i1 %.341, label %B182.else, label %B192.else.if
205
+
206
+ B182.else: ; preds = %B54.endif
207
+ %.11.i = frem double %.222, 2.000000e+00
208
+ %.12.i = fsub double %.222, %.11.i
209
+ %.13.i = fmul double %.12.i, 5.000000e-01
210
+ %22 = fcmp olt double %.11.i, 0.000000e+00
211
+ %.22.i = fadd double %.13.i, -1.000000e+00
212
+ %.7.0.i = select i1 %22, double %.22.i, double %.13.i, !prof !17
213
+ %.32.i = fcmp ueq double %.7.0.i, 0.000000e+00
214
+ br i1 %.32.i, label %entry.endif.endif.if.i, label %entry.endif.endif.thread.i
215
+
216
+ entry.endif.endif.thread.i: ; preds = %B182.else
217
+ %.34.i = tail call double @llvm.floor.f64(double %.7.0.i)
218
+ %.35.i = fsub double %.7.0.i, %.34.i
219
+ %.36.i = fadd double %.34.i, 1.000000e+00
220
+ %.37.i = fcmp ogt double %.35.i, 5.000000e-01
221
+ %.38.i = select i1 %.37.i, double %.36.i, double %.34.i
222
+ br label %B192.else.if
223
+
224
+ entry.endif.endif.if.i: ; preds = %B182.else
225
+ %.43.i = fmul double %.7.0.i, %.7.0.i
226
+ %.45.i = fmul double %.222, %.43.i
227
+ %.46.i = fmul double %.45.i, 5.000000e-01
228
+ br label %B192.else.if
229
+
230
+ B192.else.if: ; preds = %B54.endif, %entry.endif.endif.thread.i, %entry.endif.endif.if.i
231
+ %factorial_sum.4.1 = phi double [ %.222, %B54.endif ], [ %.46.i, %entry.endif.endif.if.i ], [ %.38.i, %entry.endif.endif.thread.i ]
232
+ %.411 = icmp eq i64 %4, %lsr.iv123
233
+ %.191.i = mul nsw i64 %11, %11
234
+ %.450 = sitofp i64 %.191.i to double
235
+ %.451 = select i1 %.411, double %.450, double -0.000000e+00
236
+ %count_total.4.1 = fadd double %.232, %.451
237
+ %lsr.iv.next124 = add nuw nsw i64 %lsr.iv123, 1
238
+ %lsr.iv.next126 = add i64 %lsr.iv125, 10
239
+ %.117 = add nuw i64 %.46.085, 1
240
+ %exitcond100.not = icmp eq i64 %0, %lsr.iv.next124
241
+ br i1 %exitcond100.not, label %B228.else.if, label %B54
242
+
243
+ B228.else.if: ; preds = %B192.else.if, %B0.endif
244
+ %count_total.3.0.lcssa = phi double [ 0.000000e+00, %B0.endif ], [ %count_total.4.1, %B192.else.if ]
245
+ %factorial_sum.3.0.lcssa = phi double [ 0.000000e+00, %B0.endif ], [ %factorial_sum.4.1, %B192.else.if ]
246
+ %max_value.3.0.lcssa = phi double [ -1.000000e+07, %B0.endif ], [ %max_value.4.1, %B192.else.if ]
247
+ %total_sum.4.0.lcssa = phi double [ 0.000000e+00, %B0.endif ], [ %total_sum.5.1, %B192.else.if ]
248
+ %.494 = sdiv i64 %arg.m, 2
249
+ %23 = and i64 %arg.m, -9223372036854775807
250
+ %.497 = icmp eq i64 %23, -9223372036854775807
251
+ %.504 = sext i1 %.497 to i64
252
+ %spec.select66 = add nsw i64 %.494, %.504
253
+ %.59678.not = icmp slt i64 %spec.select66, 1
254
+ br i1 %.59678.not, label %B348, label %B270.preheader
255
+
256
+ B270.preheader: ; preds = %B228.else.if
257
+ br label %B270
258
+
259
+ B270.if: ; preds = %B270
260
+ %.648 = icmp sgt i32 %.640, 0
261
+ %.641 = load { i8*, i32, i8*, i8*, i32 }*, { i8*, i32, i8*, i8*, i32 }** %excinfo.3, align 8
262
+ %.649 = select i1 %.648, { i8*, i32, i8*, i8*, i32 }* %.641, { i8*, i32, i8*, i8*, i32 }* undef
263
+ store { i8*, i32, i8*, i8*, i32 }* %.649, { i8*, i32, i8*, i8*, i32 }** %excinfo, align 8
264
+ br label %common.ret
265
+
266
+ B270.endif: ; preds = %B270, %B270
267
+ %24 = bitcast { double, double, i64, i64, double }* %.636 to double*
268
+ %25 = bitcast { double, double, i64, i64, double }* %.636 to i8*
269
+ %sunkaddr132 = getelementptr inbounds i8, i8* %25, i64 8
270
+ %26 = bitcast i8* %sunkaddr132 to double*
271
+ %.650.fca.1.load = load double, double* %26, align 8
272
+ %.650.fca.0.load = load double, double* %24, align 8
273
+ %.671 = fadd double %total_sum.6.081, %.650.fca.0.load
274
+ %.675 = fcmp ogt double %.650.fca.1.load, %max_value.5.082
275
+ %.676 = select i1 %.675, double %.650.fca.1.load, double %max_value.5.082
276
+ %lsr.iv.next120 = add i64 %lsr.iv119, -1
277
+ %lsr.iv.next122 = add i64 %lsr.iv121, 5
278
+ %exitcond99.not = icmp eq i64 %lsr.iv.next120, 0
279
+ br i1 %exitcond99.not, label %B348, label %B270
280
+
281
+ B348.if: ; preds = %B0.endif.endif.endif.i.i, %B0.endif.endif.i.i, %B348
282
+ %excinfo.1.0.ph.i = phi { i8*, i32, i8*, i8*, i32 }* [ @.const.picklebuf.4575216064.15, %B0.endif.endif.endif.i.i ], [ @.const.picklebuf.4575674432.16, %B0.endif.endif.i.i ], [ @.const.picklebuf.4575674496.17, %B348 ]
283
+ store { i8*, i32, i8*, i8*, i32 }* %excinfo.1.0.ph.i, { i8*, i32, i8*, i8*, i32 }** %excinfo, align 8
284
+ br label %common.ret
285
+
286
+ B348.endif.endif: ; preds = %B0.endif.endif.endif.i.i
287
+ %27 = icmp slt i64 %arg.m, 1
288
+ %.5.i.i.i = getelementptr i8, i8* %.7.i.i.i.i, i64 24
289
+ %28 = bitcast i8* %.5.i.i.i to double**
290
+ %.6.i1.i.i = load double*, double** %28, align 8, !noalias !18
291
+ %.26.i.i = shl nuw nsw i64 %arg.m, 3
292
+ %.27.i.i = bitcast double* %.6.i1.i.i to i8*
293
+ tail call void @llvm.memset.p0i8.i64(i8* align 1 %.27.i.i, i8 0, i64 %.26.i.i, i1 false), !noalias !19
294
+ br i1 %27, label %B472.endif, label %B418.preheader
295
+
296
+ B418.preheader: ; preds = %B348.endif.endif
297
+ br label %B418
298
+
299
+ B418.if: ; preds = %B418
300
+ %.860 = icmp sgt i32 %.852, 0
301
+ %.853 = load { i8*, i32, i8*, i8*, i32 }*, { i8*, i32, i8*, i8*, i32 }** %excinfo.5, align 8
302
+ %.861 = select i1 %.860, { i8*, i32, i8*, i8*, i32 }* %.853, { i8*, i32, i8*, i8*, i32 }* undef
303
+ store { i8*, i32, i8*, i8*, i32 }* %.861, { i8*, i32, i8*, i8*, i32 }** %excinfo, align 8
304
+ br label %common.ret
305
+
306
+ B418.endif: ; preds = %B418, %B418
307
+ %29 = bitcast { double, double, double, i64, i64 }* %.848 to double*
308
+ %.862.fca.0.load = load double, double* %29, align 8
309
+ %scevgep118 = getelementptr double, double* %.6.i1.i.i, i64 %.752.076
310
+ store double %.862.fca.0.load, double* %scevgep118, align 8
311
+ %exitcond98.not = icmp eq i64 %0, %.847
312
+ br i1 %exitcond98.not, label %B52.endif.i.preheader, label %B418
313
+
314
+ B472.endif: ; preds = %B52.endif.i, %B348.endif.endif
315
+ %c.2.0.lcssa.i = phi double [ 0.000000e+00, %B348.endif.endif ], [ %.239.i, %B52.endif.i ]
316
+ tail call void @NRT_decref(i8* nonnull %.7.i.i.i.i)
317
+ %retptr.repack133 = bitcast [5 x double]* %retptr to double*
318
+ store double %total_sum.6.0.lcssa, double* %retptr.repack133, align 8
319
+ %retptr.repack28 = getelementptr inbounds [5 x double], [5 x double]* %retptr, i64 0, i64 1
320
+ store double %max_value.5.0.lcssa, double* %retptr.repack28, align 8
321
+ %retptr.repack30 = getelementptr inbounds [5 x double], [5 x double]* %retptr, i64 0, i64 2
322
+ store double %factorial_sum.3.0.lcssa, double* %retptr.repack30, align 8
323
+ %retptr.repack32 = getelementptr inbounds [5 x double], [5 x double]* %retptr, i64 0, i64 3
324
+ store double %count_total.3.0.lcssa, double* %retptr.repack32, align 8
325
+ %retptr.repack34 = getelementptr inbounds [5 x double], [5 x double]* %retptr, i64 0, i64 4
326
+ store double %c.2.0.lcssa.i, double* %retptr.repack34, align 8
327
+ br label %common.ret
328
+ }
329
+
330
+ define i8* @_ZN7cpython8__main__5func4B2v9B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx(i8* nocapture readnone %py_closure, i8* %py_args, i8* nocapture readnone %py_kws) local_unnamed_addr {
331
+ entry:
332
+ %.5 = alloca i8*, align 8
333
+ %.6 = call i32 (i8*, i8*, i64, i64, ...) @PyArg_UnpackTuple(i8* %py_args, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.const.func4, i64 0, i64 0), i64 1, i64 1, i8** nonnull %.5)
334
+ %.7 = icmp eq i32 %.6, 0
335
+ %.36 = alloca [5 x double], align 8
336
+ %excinfo = alloca { i8*, i32, i8*, i8*, i32 }*, align 8
337
+ store { i8*, i32, i8*, i8*, i32 }* null, { i8*, i32, i8*, i8*, i32 }** %excinfo, align 8
338
+ br i1 %.7, label %common.ret, label %entry.endif, !prof !0
339
+
340
+ common.ret: ; preds = %entry.endif.endif.endif.endif.endif.endif, %entry.endif.endif.endif.endif.endif.if.endif, %entry.endif.endif.endif.endif.endif.if.endif.if, %entry.endif.endif.endif.endif.endif.endif.if, %entry.endif.endif.endif.endif.endif.endif.endif.endif, %entry.endif.endif.endif, %entry, %entry.endif.endif.endif.endif.endif.if.if.if, %entry.endif.endif.endif.endif.if.endif, %entry.endif.endif.endif.endif.if.if, %entry.endif.if
341
+ %common.ret.op = phi i8* [ null, %entry.endif.if ], [ @_Py_NoneStruct, %entry.endif.endif.endif.endif.if.if ], [ %.55, %entry.endif.endif.endif.endif.if.endif ], [ null, %entry.endif.endif.endif.endif.endif.if.if.if ], [ null, %entry ], [ null, %entry.endif.endif.endif ], [ null, %entry.endif.endif.endif.endif.endif.endif.endif.endif ], [ null, %entry.endif.endif.endif.endif.endif.endif.if ], [ null, %entry.endif.endif.endif.endif.endif.if.endif.if ], [ null, %entry.endif.endif.endif.endif.endif.if.endif ], [ null, %entry.endif.endif.endif.endif.endif.endif ]
342
+ ret i8* %common.ret.op
343
+
344
+ entry.endif: ; preds = %entry
345
+ %.11 = load i8*, i8** @_ZN08NumbaEnv8__main__5func4B2v9B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx, align 8
346
+ %.16 = icmp eq i8* %.11, null
347
+ br i1 %.16, label %entry.endif.if, label %entry.endif.endif, !prof !0
348
+
349
+ entry.endif.if: ; preds = %entry.endif
350
+ call void @PyErr_SetString(i8* nonnull @PyExc_RuntimeError, i8* getelementptr inbounds ([97 x i8], [97 x i8]* @".const.missing Environment: _ZN08NumbaEnv8__main__5func4B2v9B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx", i64 0, i64 0))
351
+ br label %common.ret
352
+
353
+ entry.endif.endif: ; preds = %entry.endif
354
+ %.20 = load i8*, i8** %.5, align 8
355
+ %.23 = call i8* @PyNumber_Long(i8* %.20)
356
+ %.24.not = icmp eq i8* %.23, null
357
+ br i1 %.24.not, label %entry.endif.endif.endif, label %entry.endif.endif.if, !prof !0
358
+
359
+ entry.endif.endif.if: ; preds = %entry.endif.endif
360
+ %.26 = call i64 @PyLong_AsLongLong(i8* nonnull %.23)
361
+ call void @Py_DecRef(i8* nonnull %.23)
362
+ br label %entry.endif.endif.endif
363
+
364
+ entry.endif.endif.endif: ; preds = %entry.endif.endif.if, %entry.endif.endif
365
+ %.21.0 = phi i64 [ %.26, %entry.endif.endif.if ], [ 0, %entry.endif.endif ]
366
+ %.31 = call i8* @PyErr_Occurred()
367
+ %.32.not = icmp eq i8* %.31, null
368
+ br i1 %.32.not, label %entry.endif.endif.endif.endif, label %common.ret, !prof !22
369
+
370
+ entry.endif.endif.endif.endif: ; preds = %entry.endif.endif.endif
371
+ %0 = bitcast [5 x double]* %.36 to i8*
372
+ call void @llvm.memset.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(40) %0, i8 0, i64 40, i1 false)
373
+ %.40 = call i32 @_ZN8__main__5func4B2v9B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx([5 x double]* nonnull %.36, { i8*, i32, i8*, i8*, i32 }** nonnull %excinfo, i64 %.21.0) #2
374
+ %.41 = load { i8*, i32, i8*, i8*, i32 }*, { i8*, i32, i8*, i8*, i32 }** %excinfo, align 8
375
+ %.48 = icmp sgt i32 %.40, 0
376
+ %.49 = select i1 %.48, { i8*, i32, i8*, i8*, i32 }* %.41, { i8*, i32, i8*, i8*, i32 }* undef
377
+ switch i32 %.40, label %entry.endif.endif.endif.endif.endif [
378
+ i32 -2, label %entry.endif.endif.endif.endif.if.if
379
+ i32 0, label %entry.endif.endif.endif.endif.if.endif
380
+ ]
381
+
382
+ entry.endif.endif.endif.endif.endif: ; preds = %entry.endif.endif.endif.endif
383
+ %1 = icmp sgt i32 %.40, 0
384
+ br i1 %1, label %entry.endif.endif.endif.endif.endif.if, label %entry.endif.endif.endif.endif.endif.endif
385
+
386
+ entry.endif.endif.endif.endif.if.if: ; preds = %entry.endif.endif.endif.endif
387
+ call void @Py_IncRef(i8* nonnull @_Py_NoneStruct)
388
+ br label %common.ret
389
+
390
+ entry.endif.endif.endif.endif.if.endif: ; preds = %entry.endif.endif.endif.endif
391
+ %2 = bitcast [5 x double]* %.36 to double*
392
+ %3 = bitcast [5 x double]* %.36 to i8*
393
+ %sunkaddr = getelementptr inbounds i8, i8* %3, i64 32
394
+ %4 = bitcast i8* %sunkaddr to double*
395
+ %.50.fca.4.load = load double, double* %4, align 8
396
+ %5 = bitcast [5 x double]* %.36 to i8*
397
+ %sunkaddr2 = getelementptr inbounds i8, i8* %5, i64 24
398
+ %6 = bitcast i8* %sunkaddr2 to double*
399
+ %.50.fca.3.load = load double, double* %6, align 8
400
+ %7 = bitcast [5 x double]* %.36 to i8*
401
+ %sunkaddr3 = getelementptr inbounds i8, i8* %7, i64 16
402
+ %8 = bitcast i8* %sunkaddr3 to double*
403
+ %.50.fca.2.load = load double, double* %8, align 8
404
+ %9 = bitcast [5 x double]* %.36 to i8*
405
+ %sunkaddr4 = getelementptr inbounds i8, i8* %9, i64 8
406
+ %10 = bitcast i8* %sunkaddr4 to double*
407
+ %.50.fca.1.load = load double, double* %10, align 8
408
+ %.50.fca.0.load = load double, double* %2, align 8
409
+ %.55 = call i8* @PyTuple_New(i64 5)
410
+ %.57 = call i8* @PyFloat_FromDouble(double %.50.fca.0.load)
411
+ %.58 = call i32 @PyTuple_SetItem(i8* %.55, i64 0, i8* %.57)
412
+ %.60 = call i8* @PyFloat_FromDouble(double %.50.fca.1.load)
413
+ %.61 = call i32 @PyTuple_SetItem(i8* %.55, i64 1, i8* %.60)
414
+ %.63 = call i8* @PyFloat_FromDouble(double %.50.fca.2.load)
415
+ %.64 = call i32 @PyTuple_SetItem(i8* %.55, i64 2, i8* %.63)
416
+ %.66 = call i8* @PyFloat_FromDouble(double %.50.fca.3.load)
417
+ %.67 = call i32 @PyTuple_SetItem(i8* %.55, i64 3, i8* %.66)
418
+ %.69 = call i8* @PyFloat_FromDouble(double %.50.fca.4.load)
419
+ %.70 = call i32 @PyTuple_SetItem(i8* %.55, i64 4, i8* %.69)
420
+ br label %common.ret
421
+
422
+ entry.endif.endif.endif.endif.endif.if: ; preds = %entry.endif.endif.endif.endif.endif
423
+ call void @PyErr_Clear()
424
+ %.75 = load { i8*, i32, i8*, i8*, i32 }, { i8*, i32, i8*, i8*, i32 }* %.49, align 8
425
+ %.76 = extractvalue { i8*, i32, i8*, i8*, i32 } %.75, 4
426
+ %.77 = icmp sgt i32 %.76, 0
427
+ %.80 = extractvalue { i8*, i32, i8*, i8*, i32 } %.75, 0
428
+ %.82 = extractvalue { i8*, i32, i8*, i8*, i32 } %.75, 1
429
+ br i1 %.77, label %entry.endif.endif.endif.endif.endif.if.if, label %entry.endif.endif.endif.endif.endif.if.else
430
+
431
+ entry.endif.endif.endif.endif.endif.endif: ; preds = %entry.endif.endif.endif.endif.endif
432
+ switch i32 %.40, label %entry.endif.endif.endif.endif.endif.endif.endif.endif [
433
+ i32 -3, label %entry.endif.endif.endif.endif.endif.endif.if
434
+ i32 -1, label %common.ret
435
+ ]
436
+
437
+ entry.endif.endif.endif.endif.endif.if.if: ; preds = %entry.endif.endif.endif.endif.endif.if
438
+ %.83 = sext i32 %.82 to i64
439
+ %.84 = call i8* @PyBytes_FromStringAndSize(i8* %.80, i64 %.83)
440
+ %.85 = load { i8*, i32, i8*, i8*, i32 }, { i8*, i32, i8*, i8*, i32 }* %.49, align 8
441
+ %.86 = extractvalue { i8*, i32, i8*, i8*, i32 } %.85, 2
442
+ %.88 = extractvalue { i8*, i32, i8*, i8*, i32 } %.85, 3
443
+ %.89 = bitcast i8* %.88 to i8* (i8*)*
444
+ %.90 = call i8* %.89(i8* %.86)
445
+ %.91 = icmp eq i8* %.90, null
446
+ br i1 %.91, label %entry.endif.endif.endif.endif.endif.if.if.if, label %entry.endif.endif.endif.endif.endif.if.if.endif, !prof !0
447
+
448
+ entry.endif.endif.endif.endif.endif.if.else: ; preds = %entry.endif.endif.endif.endif.endif.if
449
+ %.104 = extractvalue { i8*, i32, i8*, i8*, i32 } %.75, 2
450
+ %.105 = call i8* @numba_unpickle(i8* %.80, i32 %.82, i8* %.104)
451
+ br label %entry.endif.endif.endif.endif.endif.if.endif
452
+
453
+ entry.endif.endif.endif.endif.endif.if.endif: ; preds = %entry.endif.endif.endif.endif.endif.if.if.endif, %entry.endif.endif.endif.endif.endif.if.else
454
+ %.107 = phi i8* [ %.95, %entry.endif.endif.endif.endif.endif.if.if.endif ], [ %.105, %entry.endif.endif.endif.endif.endif.if.else ]
455
+ %.108.not = icmp eq i8* %.107, null
456
+ br i1 %.108.not, label %common.ret, label %entry.endif.endif.endif.endif.endif.if.endif.if, !prof !0
457
+
458
+ entry.endif.endif.endif.endif.endif.if.if.if: ; preds = %entry.endif.endif.endif.endif.endif.if.if
459
+ call void @PyErr_SetString(i8* nonnull @PyExc_RuntimeError, i8* getelementptr inbounds ([61 x i8], [61 x i8]* @".const.Error creating Python tuple from runtime exception arguments", i64 0, i64 0))
460
+ br label %common.ret
461
+
462
+ entry.endif.endif.endif.endif.endif.if.if.endif: ; preds = %entry.endif.endif.endif.endif.endif.if.if
463
+ %.95 = call i8* @numba_runtime_build_excinfo_struct(i8* %.84, i8* nonnull %.90)
464
+ %.96 = bitcast { i8*, i32, i8*, i8*, i32 }* %.49 to i8*
465
+ call void @NRT_Free(i8* nonnull %.96)
466
+ br label %entry.endif.endif.endif.endif.endif.if.endif
467
+
468
+ entry.endif.endif.endif.endif.endif.if.endif.if: ; preds = %entry.endif.endif.endif.endif.endif.if.endif
469
+ call void @numba_do_raise(i8* nonnull %.107)
470
+ br label %common.ret
471
+
472
+ entry.endif.endif.endif.endif.endif.endif.if: ; preds = %entry.endif.endif.endif.endif.endif.endif
473
+ call void @PyErr_SetNone(i8* nonnull @PyExc_StopIteration)
474
+ br label %common.ret
475
+
476
+ entry.endif.endif.endif.endif.endif.endif.endif.endif: ; preds = %entry.endif.endif.endif.endif.endif.endif
477
+ call void @PyErr_SetString(i8* nonnull @PyExc_SystemError, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @".const.unknown error when calling native function", i64 0, i64 0))
478
+ br label %common.ret
479
+ }
480
+
481
+ declare i32 @PyArg_UnpackTuple(i8*, i8*, i64, i64, ...) local_unnamed_addr
482
+
483
+ declare void @PyErr_SetString(i8*, i8*) local_unnamed_addr
484
+
485
+ declare i8* @PyNumber_Long(i8*) local_unnamed_addr
486
+
487
+ declare i64 @PyLong_AsLongLong(i8*) local_unnamed_addr
488
+
489
+ declare void @Py_DecRef(i8*) local_unnamed_addr
490
+
491
+ declare i8* @PyErr_Occurred() local_unnamed_addr
492
+
493
+ declare void @Py_IncRef(i8*) local_unnamed_addr
494
+
495
+ declare i8* @PyTuple_New(i64) local_unnamed_addr
496
+
497
+ declare i8* @PyFloat_FromDouble(double) local_unnamed_addr
498
+
499
+ declare i32 @PyTuple_SetItem(i8*, i64, i8*) local_unnamed_addr
500
+
501
+ declare void @PyErr_Clear() local_unnamed_addr
502
+
503
+ declare i8* @PyBytes_FromStringAndSize(i8*, i64) local_unnamed_addr
504
+
505
+ declare i8* @numba_unpickle(i8*, i32, i8*) local_unnamed_addr
506
+
507
+ declare i8* @numba_runtime_build_excinfo_struct(i8*, i8*) local_unnamed_addr
508
+
509
+ declare void @NRT_Free(i8*) local_unnamed_addr
510
+
511
+ declare void @numba_do_raise(i8*) local_unnamed_addr
512
+
513
+ declare void @PyErr_SetNone(i8*) local_unnamed_addr
514
+
515
+ define [5 x double] @cfunc._ZN8__main__5func4B2v9B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx(i64 %.1) local_unnamed_addr {
516
+ entry:
517
+ %.3 = alloca [5 x double], align 8
518
+ %.fca.0.gep1 = bitcast [5 x double]* %.3 to double*
519
+ %.fca.1.gep = getelementptr inbounds [5 x double], [5 x double]* %.3, i64 0, i64 1
520
+ %.fca.2.gep = getelementptr inbounds [5 x double], [5 x double]* %.3, i64 0, i64 2
521
+ %.fca.3.gep = getelementptr inbounds [5 x double], [5 x double]* %.3, i64 0, i64 3
522
+ %.fca.4.gep = getelementptr inbounds [5 x double], [5 x double]* %.3, i64 0, i64 4
523
+ %excinfo = alloca { i8*, i32, i8*, i8*, i32 }*, align 8
524
+ %0 = bitcast [5 x double]* %.3 to i8*
525
+ call void @llvm.memset.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(40) %0, i8 0, i64 40, i1 false)
526
+ store { i8*, i32, i8*, i8*, i32 }* null, { i8*, i32, i8*, i8*, i32 }** %excinfo, align 8
527
+ %.7 = call i32 @_ZN8__main__5func4B2v9B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx([5 x double]* nonnull %.3, { i8*, i32, i8*, i8*, i32 }** nonnull %excinfo, i64 %.1) #2
528
+ %.8 = load { i8*, i32, i8*, i8*, i32 }*, { i8*, i32, i8*, i8*, i32 }** %excinfo, align 8
529
+ %.15 = icmp sgt i32 %.7, 0
530
+ %.16 = select i1 %.15, { i8*, i32, i8*, i8*, i32 }* %.8, { i8*, i32, i8*, i8*, i32 }* undef
531
+ %.17.fca.0.load = load double, double* %.fca.0.gep1, align 8
532
+ %.17.fca.0.insert = insertvalue [5 x double] poison, double %.17.fca.0.load, 0
533
+ %.17.fca.1.load = load double, double* %.fca.1.gep, align 8
534
+ %.17.fca.1.insert = insertvalue [5 x double] %.17.fca.0.insert, double %.17.fca.1.load, 1
535
+ %.17.fca.2.load = load double, double* %.fca.2.gep, align 8
536
+ %.17.fca.2.insert = insertvalue [5 x double] %.17.fca.1.insert, double %.17.fca.2.load, 2
537
+ %.17.fca.3.load = load double, double* %.fca.3.gep, align 8
538
+ %.17.fca.3.insert = insertvalue [5 x double] %.17.fca.2.insert, double %.17.fca.3.load, 3
539
+ %.17.fca.4.load = load double, double* %.fca.4.gep, align 8
540
+ %.17.fca.4.insert = insertvalue [5 x double] %.17.fca.3.insert, double %.17.fca.4.load, 4
541
+ %.19 = alloca i32, align 4
542
+ store i32 0, i32* %.19, align 4
543
+ switch i32 %.7, label %entry.if [
544
+ i32 -2, label %common.ret
545
+ i32 0, label %common.ret
546
+ ]
547
+
548
+ entry.if: ; preds = %entry
549
+ %1 = icmp sgt i32 %.7, 0
550
+ call void @numba_gil_ensure(i32* nonnull %.19)
551
+ br i1 %1, label %entry.if.if, label %entry.if.endif
552
+
553
+ common.ret: ; preds = %entry, %entry, %.22, %entry.if.if.if.if
554
+ %common.ret.op = phi [5 x double] [ zeroinitializer, %entry.if.if.if.if ], [ %.17.fca.4.insert, %.22 ], [ %.17.fca.4.insert, %entry ], [ %.17.fca.4.insert, %entry ]
555
+ ret [5 x double] %common.ret.op
556
+
557
+ .22: ; preds = %entry.if.endif, %entry.if.if.endif, %entry.if.if.endif.if, %entry.if.endif.endif.endif, %entry.if.endif.if
558
+ %.70 = call i8* @PyUnicode_FromString(i8* getelementptr inbounds ([50 x i8], [50 x i8]* @".const.<numba.core.cpu.CPUContext object at 0x110f389b0>", i64 0, i64 0))
559
+ call void @PyErr_WriteUnraisable(i8* %.70)
560
+ call void @Py_DecRef(i8* %.70)
561
+ call void @numba_gil_release(i32* nonnull %.19)
562
+ br label %common.ret
563
+
564
+ entry.if.if: ; preds = %entry.if
565
+ call void @PyErr_Clear()
566
+ %.25 = load { i8*, i32, i8*, i8*, i32 }, { i8*, i32, i8*, i8*, i32 }* %.16, align 8
567
+ %.26 = extractvalue { i8*, i32, i8*, i8*, i32 } %.25, 4
568
+ %.27 = icmp sgt i32 %.26, 0
569
+ %.30 = extractvalue { i8*, i32, i8*, i8*, i32 } %.25, 0
570
+ %.32 = extractvalue { i8*, i32, i8*, i8*, i32 } %.25, 1
571
+ br i1 %.27, label %entry.if.if.if, label %entry.if.if.else
572
+
573
+ entry.if.endif: ; preds = %entry.if
574
+ switch i32 %.7, label %entry.if.endif.endif.endif [
575
+ i32 -3, label %entry.if.endif.if
576
+ i32 -1, label %.22
577
+ ]
578
+
579
+ entry.if.if.if: ; preds = %entry.if.if
580
+ %.33 = sext i32 %.32 to i64
581
+ %.34 = call i8* @PyBytes_FromStringAndSize(i8* %.30, i64 %.33)
582
+ %.35 = load { i8*, i32, i8*, i8*, i32 }, { i8*, i32, i8*, i8*, i32 }* %.16, align 8
583
+ %.36 = extractvalue { i8*, i32, i8*, i8*, i32 } %.35, 2
584
+ %.38 = extractvalue { i8*, i32, i8*, i8*, i32 } %.35, 3
585
+ %.39 = bitcast i8* %.38 to i8* (i8*)*
586
+ %.40 = call i8* %.39(i8* %.36)
587
+ %.41 = icmp eq i8* %.40, null
588
+ br i1 %.41, label %entry.if.if.if.if, label %entry.if.if.if.endif, !prof !0
589
+
590
+ entry.if.if.else: ; preds = %entry.if.if
591
+ %.54 = extractvalue { i8*, i32, i8*, i8*, i32 } %.25, 2
592
+ %.55 = call i8* @numba_unpickle(i8* %.30, i32 %.32, i8* %.54)
593
+ br label %entry.if.if.endif
594
+
595
+ entry.if.if.endif: ; preds = %entry.if.if.if.endif, %entry.if.if.else
596
+ %.57 = phi i8* [ %.45, %entry.if.if.if.endif ], [ %.55, %entry.if.if.else ]
597
+ %.58.not = icmp eq i8* %.57, null
598
+ br i1 %.58.not, label %.22, label %entry.if.if.endif.if, !prof !0
599
+
600
+ entry.if.if.if.if: ; preds = %entry.if.if.if
601
+ call void @PyErr_SetString(i8* nonnull @PyExc_RuntimeError, i8* getelementptr inbounds ([61 x i8], [61 x i8]* @".const.Error creating Python tuple from runtime exception arguments.1", i64 0, i64 0))
602
+ br label %common.ret
603
+
604
+ entry.if.if.if.endif: ; preds = %entry.if.if.if
605
+ %.45 = call i8* @numba_runtime_build_excinfo_struct(i8* %.34, i8* nonnull %.40)
606
+ %.46 = bitcast { i8*, i32, i8*, i8*, i32 }* %.16 to i8*
607
+ call void @NRT_Free(i8* nonnull %.46)
608
+ br label %entry.if.if.endif
609
+
610
+ entry.if.if.endif.if: ; preds = %entry.if.if.endif
611
+ call void @numba_do_raise(i8* nonnull %.57)
612
+ br label %.22
613
+
614
+ entry.if.endif.if: ; preds = %entry.if.endif
615
+ call void @PyErr_SetNone(i8* nonnull @PyExc_StopIteration)
616
+ br label %.22
617
+
618
+ entry.if.endif.endif.endif: ; preds = %entry.if.endif
619
+ call void @PyErr_SetString(i8* nonnull @PyExc_SystemError, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @".const.unknown error when calling native function.2", i64 0, i64 0))
620
+ br label %.22
621
+ }
622
+
623
+ declare void @numba_gil_ensure(i32*) local_unnamed_addr
624
+
625
+ declare i8* @PyUnicode_FromString(i8*) local_unnamed_addr
626
+
627
+ declare void @PyErr_WriteUnraisable(i8*) local_unnamed_addr
628
+
629
+ declare void @numba_gil_release(i32*) local_unnamed_addr
630
+
631
+ define linkonce_odr i32 @_ZN8__main__5func3B3v10B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx({ double, double, i64, double, double }* noalias nocapture writeonly %retptr, { i8*, i32, i8*, i8*, i32 }** noalias nocapture writeonly %excinfo, i64 %arg.m) local_unnamed_addr {
632
+ B0.endif:
633
+ %.151 = alloca { double, double, i64, i64, double }, align 8
634
+ %excinfo.1 = alloca { i8*, i32, i8*, i8*, i32 }*, align 8
635
+ store { i8*, i32, i8*, i8*, i32 }* null, { i8*, i32, i8*, i8*, i32 }** %excinfo.1, align 8
636
+ %.660 = alloca { double, double, double, i64, i64 }, align 8
637
+ %excinfo.3 = alloca { i8*, i32, i8*, i8*, i32 }*, align 8
638
+ store { i8*, i32, i8*, i8*, i32 }* null, { i8*, i32, i8*, i8*, i32 }** %excinfo.3, align 8
639
+ %.872 = alloca { double, double, double, i64, i64 }, align 8
640
+ %excinfo.5 = alloca { i8*, i32, i8*, i8*, i32 }*, align 8
641
+ store { i8*, i32, i8*, i8*, i32 }* null, { i8*, i32, i8*, i8*, i32 }** %excinfo.5, align 8
642
+ %0 = tail call i64 @llvm.smax.i64(i64 %arg.m, i64 0)
643
+ %.10384.not = icmp slt i64 %arg.m, 1
644
+ br i1 %.10384.not, label %B228.else.if, label %B54.preheader
645
+
646
+ B54.preheader: ; preds = %B0.endif
647
+ br label %B54
648
+
649
+ B54: ; preds = %B54.preheader, %B192.else.if
650
+ %lsr.iv26 = phi i64 [ -2, %B54.preheader ], [ %lsr.iv.next27, %B192.else.if ]
651
+ %lsr.iv125 = phi i64 [ %lsr.iv.next126, %B192.else.if ], [ 10, %B54.preheader ]
652
+ %lsr.iv123 = phi i64 [ %13, %B192.else.if ], [ 0, %B54.preheader ]
653
+ %total_sum.4.090 = phi double [ %total_sum.5.1, %B192.else.if ], [ 0.000000e+00, %B54.preheader ]
654
+ %max_value.3.089 = phi double [ %max_value.4.1, %B192.else.if ], [ -1.000000e+07, %B54.preheader ]
655
+ %factorial_sum.3.088 = phi i64 [ %factorial_sum.4.1, %B192.else.if ], [ 0, %B54.preheader ]
656
+ %count_total.3.087 = phi double [ %count_total.4.1, %B192.else.if ], [ 0.000000e+00, %B54.preheader ]
657
+ %.45.085 = phi i64 [ %.116, %B192.else.if ], [ 1, %B54.preheader ]
658
+ %1 = bitcast { double, double, i64, i64, double }* %.151 to i8*
659
+ %2 = add i64 %lsr.iv123, 1
660
+ %3 = udiv i64 %.45.085, 5
661
+ %4 = mul nuw nsw i64 %3, 5
662
+ %5 = add i64 %lsr.iv26, %4
663
+ %6 = udiv i64 %.45.085, 7
664
+ %7 = mul nuw nsw i64 %6, 7
665
+ %8 = add i64 %lsr.iv26, %7
666
+ %9 = udiv i64 %.45.085, 11
667
+ %10 = mul nuw nsw i64 %9, 11
668
+ %11 = add i64 %lsr.iv26, %10
669
+ %12 = add i64 %2, %11
670
+ %13 = add nuw nsw i64 %lsr.iv123, 1
671
+ %14 = add i64 %lsr.iv123, 1
672
+ call void @llvm.memset.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(40) %1, i8 0, i64 40, i1 false)
673
+ %.155 = call i32 @_ZN8__main__5func2B3v11B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx({ double, double, i64, i64, double }* nonnull %.151, { i8*, i32, i8*, i8*, i32 }** nonnull %excinfo.1, i64 %lsr.iv125)
674
+ switch i32 %.155, label %B54.if [
675
+ i32 -2, label %B54.endif
676
+ i32 0, label %B54.endif
677
+ ]
678
+
679
+ B270: ; preds = %B270.preheader, %B270.endif
680
+ %lsr.iv121 = phi i64 [ %lsr.iv.next122, %B270.endif ], [ 5, %B270.preheader ]
681
+ %lsr.iv119 = phi i64 [ %lsr.iv.next120, %B270.endif ], [ %spec.select66, %B270.preheader ]
682
+ %max_value.5.082 = phi double [ %.700, %B270.endif ], [ %max_value.3.0.lcssa, %B270.preheader ]
683
+ %total_sum.6.081 = phi double [ %.695, %B270.endif ], [ %total_sum.4.0.lcssa, %B270.preheader ]
684
+ %15 = bitcast { double, double, double, i64, i64 }* %.660 to i8*
685
+ call void @llvm.memset.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(40) %15, i8 0, i64 40, i1 false)
686
+ %.664 = call i32 @_ZN8__main__5func1B2v3B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx({ double, double, double, i64, i64 }* nonnull %.660, { i8*, i32, i8*, i8*, i32 }** nonnull %excinfo.3, i64 %lsr.iv121)
687
+ switch i32 %.664, label %B270.if [
688
+ i32 -2, label %B270.endif
689
+ i32 0, label %B270.endif
690
+ ]
691
+
692
+ B348: ; preds = %B270.endif, %B228.else.if
693
+ %total_sum.6.0.lcssa = phi double [ %total_sum.4.0.lcssa, %B228.else.if ], [ %.695, %B270.endif ]
694
+ %max_value.5.0.lcssa = phi double [ %max_value.3.0.lcssa, %B228.else.if ], [ %.700, %B270.endif ]
695
+ %.15.i.i = icmp slt i64 %arg.m, 0
696
+ br i1 %.15.i.i, label %B348.if, label %B0.endif.endif.i.i, !prof !0
697
+
698
+ B0.endif.endif.i.i: ; preds = %B348
699
+ %.29.i.i = tail call { i64, i1 } @llvm.smul.with.overflow.i64(i64 %arg.m, i64 8)
700
+ %.31.i.i = extractvalue { i64, i1 } %.29.i.i, 1
701
+ br i1 %.31.i.i, label %B348.if, label %B0.endif.endif.endif.i.i, !prof !0
702
+
703
+ B0.endif.endif.endif.i.i: ; preds = %B0.endif.endif.i.i
704
+ %.30.i.i = extractvalue { i64, i1 } %.29.i.i, 0
705
+ %.7.i.i.i.i = tail call i8* @NRT_MemInfo_alloc_aligned(i64 %.30.i.i, i32 32), !noalias !23
706
+ %.8.i.i.i.i = icmp eq i8* %.7.i.i.i.i, null
707
+ br i1 %.8.i.i.i.i, label %B348.if, label %B348.endif.endif, !prof !0
708
+
709
+ B418: ; preds = %B418.preheader, %B418.endif
710
+ %.776.076 = phi i64 [ %17, %B418.endif ], [ 0, %B418.preheader ]
711
+ %16 = bitcast { double, double, double, i64, i64 }* %.872 to i8*
712
+ %17 = add nuw nsw i64 %.776.076, 1
713
+ %18 = add i64 %.776.076, 1
714
+ call void @llvm.memset.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(40) %16, i8 0, i64 40, i1 false)
715
+ %.876 = call i32 @_ZN8__main__5func1B2v3B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx({ double, double, double, i64, i64 }* nonnull %.872, { i8*, i32, i8*, i8*, i32 }** nonnull %excinfo.5, i64 %18)
716
+ switch i32 %.876, label %B418.if [
717
+ i32 -2, label %B418.endif
718
+ i32 0, label %B418.endif
719
+ ]
720
+
721
+ B52.endif.i.preheader: ; preds = %B418.endif
722
+ %smax = tail call i64 @llvm.smax.i64(i64 %arg.m, i64 1)
723
+ br label %B52.endif.i
724
+
725
+ B52.endif.i: ; preds = %B52.endif.i, %B52.endif.i.preheader
726
+ %lsr.iv117 = phi double* [ %.6.i1.i.i, %B52.endif.i.preheader ], [ %scevgep, %B52.endif.i ]
727
+ %lsr.iv = phi i64 [ %smax, %B52.endif.i.preheader ], [ %lsr.iv.next, %B52.endif.i ]
728
+ %c.2.06.i = phi double [ 0.000000e+00, %B52.endif.i.preheader ], [ %.239.i, %B52.endif.i ]
729
+ %.236.i = load double, double* %lsr.iv117, align 8, !noalias !36
730
+ %.239.i = fadd double %c.2.06.i, %.236.i
731
+ %lsr.iv.next = add nsw i64 %lsr.iv, -1
732
+ %scevgep = getelementptr double, double* %lsr.iv117, i64 1
733
+ %exitcond.not = icmp eq i64 %lsr.iv.next, 0
734
+ br i1 %exitcond.not, label %B472.endif, label %B52.endif.i, !prof !0
735
+
736
+ common.ret: ; preds = %B472.endif, %B418.if, %B348.if, %B270.if, %B54.if
737
+ %common.ret.op = phi i32 [ 0, %B472.endif ], [ 1, %B348.if ], [ %.876, %B418.if ], [ %.664, %B270.if ], [ %.155, %B54.if ]
738
+ ret i32 %common.ret.op
739
+
740
+ B54.if: ; preds = %B54
741
+ %.163 = icmp sgt i32 %.155, 0
742
+ %.156 = load { i8*, i32, i8*, i8*, i32 }*, { i8*, i32, i8*, i8*, i32 }** %excinfo.1, align 8
743
+ %.164 = select i1 %.163, { i8*, i32, i8*, i8*, i32 }* %.156, { i8*, i32, i8*, i8*, i32 }* undef
744
+ store { i8*, i32, i8*, i8*, i32 }* %.164, { i8*, i32, i8*, i8*, i32 }** %excinfo, align 8
745
+ br label %common.ret
746
+
747
+ B54.endif: ; preds = %B54, %B54
748
+ %19 = bitcast { double, double, i64, i64, double }* %.151 to double*
749
+ %20 = add i64 %2, %5
750
+ %21 = add i64 %2, %8
751
+ %22 = bitcast { double, double, i64, i64, double }* %.151 to i8*
752
+ %sunkaddr28 = getelementptr inbounds i8, i8* %22, i64 32
753
+ %23 = bitcast i8* %sunkaddr28 to double*
754
+ %.165.fca.4.load = load double, double* %23, align 8
755
+ %24 = bitcast { double, double, i64, i64, double }* %.151 to i8*
756
+ %sunkaddr = getelementptr inbounds i8, i8* %24, i64 24
757
+ %25 = bitcast i8* %sunkaddr to i64*
758
+ %.165.fca.3.load = load i64, i64* %25, align 8
759
+ %26 = bitcast { double, double, i64, i64, double }* %.151 to i8*
760
+ %sunkaddr29 = getelementptr inbounds i8, i8* %26, i64 8
761
+ %27 = bitcast i8* %sunkaddr29 to double*
762
+ %.165.fca.1.load = load double, double* %27, align 8
763
+ %.165.fca.0.load = load double, double* %19, align 8
764
+ %.195 = fadd double %total_sum.4.090, %.165.fca.0.load
765
+ %.203 = fcmp ogt double %.165.fca.1.load, %max_value.3.089
766
+ %max_value.4.1 = select i1 %.203, double %.165.fca.1.load, double %max_value.3.089
767
+ %.221 = add nsw i64 %.165.fca.3.load, %factorial_sum.3.088
768
+ %.231 = fadd double %count_total.3.087, %.165.fca.4.load
769
+ %.282 = icmp eq i64 %lsr.iv123, %20
770
+ %.285 = fmul double %.195, 0x3FEE666666666666
771
+ %total_sum.5.1 = select i1 %.282, double %.285, double %.195
772
+ %.340 = icmp eq i64 %lsr.iv123, %21
773
+ br i1 %.340, label %B182.else.if, label %B192.else.if
774
+
775
+ B182.else.if: ; preds = %B54.endif
776
+ %.363 = sdiv i64 %.221, 2
777
+ %28 = and i64 %.221, -9223372036854775807
778
+ %.366 = icmp eq i64 %28, -9223372036854775807
779
+ %.373 = sext i1 %.366 to i64
780
+ %spec.select64 = add nsw i64 %.363, %.373
781
+ br label %B192.else.if
782
+
783
+ B192.else.if: ; preds = %B182.else.if, %B54.endif
784
+ %factorial_sum.4.1 = phi i64 [ %.221, %B54.endif ], [ %spec.select64, %B182.else.if ]
785
+ %.435 = icmp eq i64 %lsr.iv123, %12
786
+ %.191.i = mul nsw i64 %14, %14
787
+ %.474 = sitofp i64 %.191.i to double
788
+ %.475 = select i1 %.435, double %.474, double -0.000000e+00
789
+ %count_total.4.1 = fadd double %.475, %.231
790
+ %lsr.iv.next126 = add i64 %lsr.iv125, 10
791
+ %.116 = add nuw i64 %.45.085, 1
792
+ %lsr.iv.next27 = add i64 %lsr.iv26, -1
793
+ %exitcond100.not = icmp eq i64 %0, %13
794
+ br i1 %exitcond100.not, label %B228.else.if, label %B54
795
+
796
+ B228.else.if: ; preds = %B192.else.if, %B0.endif
797
+ %count_total.3.0.lcssa = phi double [ 0.000000e+00, %B0.endif ], [ %count_total.4.1, %B192.else.if ]
798
+ %factorial_sum.3.0.lcssa = phi i64 [ 0, %B0.endif ], [ %factorial_sum.4.1, %B192.else.if ]
799
+ %max_value.3.0.lcssa = phi double [ -1.000000e+07, %B0.endif ], [ %max_value.4.1, %B192.else.if ]
800
+ %total_sum.4.0.lcssa = phi double [ 0.000000e+00, %B0.endif ], [ %total_sum.5.1, %B192.else.if ]
801
+ %.518 = sdiv i64 %arg.m, 2
802
+ %29 = and i64 %arg.m, -9223372036854775807
803
+ %.521 = icmp eq i64 %29, -9223372036854775807
804
+ %.528 = sext i1 %.521 to i64
805
+ %spec.select66 = add nsw i64 %.518, %.528
806
+ %.62078.not = icmp slt i64 %spec.select66, 1
807
+ br i1 %.62078.not, label %B348, label %B270.preheader
808
+
809
+ B270.preheader: ; preds = %B228.else.if
810
+ br label %B270
811
+
812
+ B270.if: ; preds = %B270
813
+ %.672 = icmp sgt i32 %.664, 0
814
+ %.665 = load { i8*, i32, i8*, i8*, i32 }*, { i8*, i32, i8*, i8*, i32 }** %excinfo.3, align 8
815
+ %.673 = select i1 %.672, { i8*, i32, i8*, i8*, i32 }* %.665, { i8*, i32, i8*, i8*, i32 }* undef
816
+ store { i8*, i32, i8*, i8*, i32 }* %.673, { i8*, i32, i8*, i8*, i32 }** %excinfo, align 8
817
+ br label %common.ret
818
+
819
+ B270.endif: ; preds = %B270, %B270
820
+ %30 = bitcast { double, double, double, i64, i64 }* %.660 to double*
821
+ %31 = bitcast { double, double, double, i64, i64 }* %.660 to i8*
822
+ %sunkaddr30 = getelementptr inbounds i8, i8* %31, i64 8
823
+ %32 = bitcast i8* %sunkaddr30 to double*
824
+ %.674.fca.1.load = load double, double* %32, align 8
825
+ %.674.fca.0.load = load double, double* %30, align 8
826
+ %.695 = fadd double %total_sum.6.081, %.674.fca.0.load
827
+ %.699 = fcmp ogt double %.674.fca.1.load, %max_value.5.082
828
+ %.700 = select i1 %.699, double %.674.fca.1.load, double %max_value.5.082
829
+ %lsr.iv.next120 = add i64 %lsr.iv119, -1
830
+ %lsr.iv.next122 = add i64 %lsr.iv121, 5
831
+ %exitcond99.not = icmp eq i64 %lsr.iv.next120, 0
832
+ br i1 %exitcond99.not, label %B348, label %B270
833
+
834
+ B348.if: ; preds = %B0.endif.endif.endif.i.i, %B0.endif.endif.i.i, %B348
835
+ %excinfo.1.0.ph.i = phi { i8*, i32, i8*, i8*, i32 }* [ @.const.picklebuf.4575216064.13, %B0.endif.endif.endif.i.i ], [ @.const.picklebuf.4575674432.14, %B0.endif.endif.i.i ], [ @.const.picklebuf.4575674496.15, %B348 ]
836
+ store { i8*, i32, i8*, i8*, i32 }* %excinfo.1.0.ph.i, { i8*, i32, i8*, i8*, i32 }** %excinfo, align 8
837
+ br label %common.ret
838
+
839
+ B348.endif.endif: ; preds = %B0.endif.endif.endif.i.i
840
+ %33 = icmp slt i64 %arg.m, 1
841
+ %.5.i.i.i = getelementptr i8, i8* %.7.i.i.i.i, i64 24
842
+ %34 = bitcast i8* %.5.i.i.i to double**
843
+ %.6.i1.i.i = load double*, double** %34, align 8, !noalias !39
844
+ %.26.i.i = shl nuw nsw i64 %arg.m, 3
845
+ %.27.i.i = bitcast double* %.6.i1.i.i to i8*
846
+ tail call void @llvm.memset.p0i8.i64(i8* align 1 %.27.i.i, i8 0, i64 %.26.i.i, i1 false), !noalias !40
847
+ br i1 %33, label %B472.endif, label %B418.preheader
848
+
849
+ B418.preheader: ; preds = %B348.endif.endif
850
+ br label %B418
851
+
852
+ B418.if: ; preds = %B418
853
+ %.884 = icmp sgt i32 %.876, 0
854
+ %.877 = load { i8*, i32, i8*, i8*, i32 }*, { i8*, i32, i8*, i8*, i32 }** %excinfo.5, align 8
855
+ %.885 = select i1 %.884, { i8*, i32, i8*, i8*, i32 }* %.877, { i8*, i32, i8*, i8*, i32 }* undef
856
+ store { i8*, i32, i8*, i8*, i32 }* %.885, { i8*, i32, i8*, i8*, i32 }** %excinfo, align 8
857
+ br label %common.ret
858
+
859
+ B418.endif: ; preds = %B418, %B418
860
+ %35 = bitcast { double, double, double, i64, i64 }* %.872 to double*
861
+ %.886.fca.0.load = load double, double* %35, align 8
862
+ %scevgep25 = getelementptr double, double* %.6.i1.i.i, i64 %.776.076
863
+ store double %.886.fca.0.load, double* %scevgep25, align 8
864
+ %exitcond98.not = icmp eq i64 %0, %17
865
+ br i1 %exitcond98.not, label %B52.endif.i.preheader, label %B418
866
+
867
+ B472.endif: ; preds = %B52.endif.i, %B348.endif.endif
868
+ %c.2.0.lcssa.i = phi double [ 0.000000e+00, %B348.endif.endif ], [ %.239.i, %B52.endif.i ]
869
+ tail call void @NRT_decref(i8* nonnull %.7.i.i.i.i)
870
+ %retptr.repack13331 = bitcast { double, double, i64, double, double }* %retptr to double*
871
+ store double %total_sum.6.0.lcssa, double* %retptr.repack13331, align 8
872
+ %retptr.repack28 = getelementptr inbounds { double, double, i64, double, double }, { double, double, i64, double, double }* %retptr, i64 0, i32 1
873
+ store double %max_value.5.0.lcssa, double* %retptr.repack28, align 8
874
+ %retptr.repack30 = getelementptr inbounds { double, double, i64, double, double }, { double, double, i64, double, double }* %retptr, i64 0, i32 2
875
+ store i64 %factorial_sum.3.0.lcssa, i64* %retptr.repack30, align 8
876
+ %retptr.repack32 = getelementptr inbounds { double, double, i64, double, double }, { double, double, i64, double, double }* %retptr, i64 0, i32 3
877
+ store double %count_total.3.0.lcssa, double* %retptr.repack32, align 8
878
+ %retptr.repack34 = getelementptr inbounds { double, double, i64, double, double }, { double, double, i64, double, double }* %retptr, i64 0, i32 4
879
+ store double %c.2.0.lcssa.i, double* %retptr.repack34, align 8
880
+ br label %common.ret
881
+ }
882
+
883
+ ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn
884
+ declare i64 @llvm.smax.i64(i64, i64) #0
885
+
886
+ ; Function Attrs: argmemonly mustprogress nocallback nofree nounwind willreturn writeonly
887
+ declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i1 immarg) #1
888
+
889
+ define linkonce_odr i32 @_ZN8__main__5func2B3v11B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx({ double, double, i64, i64, double }* noalias nocapture writeonly %retptr, { i8*, i32, i8*, i8*, i32 }** noalias nocapture writeonly %excinfo, i64 %arg.m) local_unnamed_addr {
890
+ B0.endif:
891
+ %.150 = alloca { double, double, double, i64, i64 }, align 8
892
+ %excinfo.1 = alloca { i8*, i32, i8*, i8*, i32 }*, align 8
893
+ store { i8*, i32, i8*, i8*, i32 }* null, { i8*, i32, i8*, i8*, i32 }** %excinfo.1, align 8
894
+ %.658 = alloca { double, double, double, i64, i64 }, align 8
895
+ %excinfo.3 = alloca { i8*, i32, i8*, i8*, i32 }*, align 8
896
+ store { i8*, i32, i8*, i8*, i32 }* null, { i8*, i32, i8*, i8*, i32 }** %excinfo.3, align 8
897
+ %.870 = alloca { double, double, double, i64, i64 }, align 8
898
+ %excinfo.5 = alloca { i8*, i32, i8*, i8*, i32 }*, align 8
899
+ store { i8*, i32, i8*, i8*, i32 }* null, { i8*, i32, i8*, i8*, i32 }** %excinfo.5, align 8
900
+ %0 = tail call i64 @llvm.smax.i64(i64 %arg.m, i64 0)
901
+ %.10284.not = icmp slt i64 %arg.m, 1
902
+ br i1 %.10284.not, label %B228.else.if, label %B54.preheader
903
+
904
+ B54.preheader: ; preds = %B0.endif
905
+ br label %B54
906
+
907
+ B54: ; preds = %B54.preheader, %B192.else.if
908
+ %lsr.iv125 = phi i64 [ %lsr.iv.next126, %B192.else.if ], [ 10, %B54.preheader ]
909
+ %lsr.iv123 = phi i64 [ %2, %B192.else.if ], [ 0, %B54.preheader ]
910
+ %total_sum.4.090 = phi double [ %total_sum.5.1, %B192.else.if ], [ 0.000000e+00, %B54.preheader ]
911
+ %max_value.3.089 = phi double [ %max_value.4.1, %B192.else.if ], [ -1.000000e+07, %B54.preheader ]
912
+ %factorial_sum.3.088 = phi i64 [ %factorial_sum.4.1, %B192.else.if ], [ 0, %B54.preheader ]
913
+ %count_total.3.087 = phi i64 [ %count_total.4.1, %B192.else.if ], [ 0, %B54.preheader ]
914
+ %.44.085 = phi i64 [ %.115, %B192.else.if ], [ 1, %B54.preheader ]
915
+ %1 = bitcast { double, double, double, i64, i64 }* %.150 to i8*
916
+ %2 = add nuw nsw i64 %lsr.iv123, 1
917
+ %3 = add i64 %lsr.iv123, 1
918
+ %4 = udiv i64 %.44.085, 11
919
+ %5 = mul nuw nsw i64 %4, 11
920
+ %6 = sub i64 1, %5
921
+ %7 = udiv i64 %.44.085, 7
922
+ %8 = mul nuw nsw i64 %7, 7
923
+ %9 = sub i64 1, %8
924
+ %10 = udiv i64 %.44.085, 5
925
+ %11 = mul nuw nsw i64 %10, 5
926
+ %12 = sub i64 1, %11
927
+ %13 = add i64 %lsr.iv123, %6
928
+ %14 = sub i64 %lsr.iv123, %13
929
+ call void @llvm.memset.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(40) %1, i8 0, i64 40, i1 false)
930
+ %.154 = call i32 @_ZN8__main__5func1B2v3B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx({ double, double, double, i64, i64 }* nonnull %.150, { i8*, i32, i8*, i8*, i32 }** nonnull %excinfo.1, i64 %lsr.iv125)
931
+ switch i32 %.154, label %B54.if [
932
+ i32 -2, label %B54.endif
933
+ i32 0, label %B54.endif
934
+ ]
935
+
936
+ B270: ; preds = %B270.preheader, %B270.endif
937
+ %lsr.iv121 = phi i64 [ %lsr.iv.next122, %B270.endif ], [ 5, %B270.preheader ]
938
+ %lsr.iv119 = phi i64 [ %lsr.iv.next120, %B270.endif ], [ %spec.select66, %B270.preheader ]
939
+ %max_value.5.082 = phi double [ %.698, %B270.endif ], [ %max_value.3.0.lcssa, %B270.preheader ]
940
+ %total_sum.6.081 = phi double [ %.693, %B270.endif ], [ %total_sum.4.0.lcssa, %B270.preheader ]
941
+ %15 = bitcast { double, double, double, i64, i64 }* %.658 to i8*
942
+ call void @llvm.memset.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(40) %15, i8 0, i64 40, i1 false)
943
+ %.662 = call i32 @_ZN8__main__5func1B2v3B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx({ double, double, double, i64, i64 }* nonnull %.658, { i8*, i32, i8*, i8*, i32 }** nonnull %excinfo.3, i64 %lsr.iv121)
944
+ switch i32 %.662, label %B270.if [
945
+ i32 -2, label %B270.endif
946
+ i32 0, label %B270.endif
947
+ ]
948
+
949
+ B348: ; preds = %B270.endif, %B228.else.if
950
+ %total_sum.6.0.lcssa = phi double [ %total_sum.4.0.lcssa, %B228.else.if ], [ %.693, %B270.endif ]
951
+ %max_value.5.0.lcssa = phi double [ %max_value.3.0.lcssa, %B228.else.if ], [ %.698, %B270.endif ]
952
+ %.15.i.i = icmp slt i64 %arg.m, 0
953
+ br i1 %.15.i.i, label %B348.if, label %B0.endif.endif.i.i, !prof !0
954
+
955
+ B0.endif.endif.i.i: ; preds = %B348
956
+ %.29.i.i = tail call { i64, i1 } @llvm.smul.with.overflow.i64(i64 %arg.m, i64 8)
957
+ %.31.i.i = extractvalue { i64, i1 } %.29.i.i, 1
958
+ br i1 %.31.i.i, label %B348.if, label %B0.endif.endif.endif.i.i, !prof !0
959
+
960
+ B0.endif.endif.endif.i.i: ; preds = %B0.endif.endif.i.i
961
+ %.30.i.i = extractvalue { i64, i1 } %.29.i.i, 0
962
+ %.7.i.i.i.i = tail call i8* @NRT_MemInfo_alloc_aligned(i64 %.30.i.i, i32 32), !noalias !43
963
+ %.8.i.i.i.i = icmp eq i8* %.7.i.i.i.i, null
964
+ br i1 %.8.i.i.i.i, label %B348.if, label %B348.endif.endif, !prof !0
965
+
966
+ B418: ; preds = %B418.preheader, %B418.endif
967
+ %.774.076 = phi i64 [ %17, %B418.endif ], [ 0, %B418.preheader ]
968
+ %16 = bitcast { double, double, double, i64, i64 }* %.870 to i8*
969
+ %17 = add nuw nsw i64 %.774.076, 1
970
+ %18 = add i64 %.774.076, 1
971
+ call void @llvm.memset.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(40) %16, i8 0, i64 40, i1 false)
972
+ %.874 = call i32 @_ZN8__main__5func1B2v3B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx({ double, double, double, i64, i64 }* nonnull %.870, { i8*, i32, i8*, i8*, i32 }** nonnull %excinfo.5, i64 %18)
973
+ switch i32 %.874, label %B418.if [
974
+ i32 -2, label %B418.endif
975
+ i32 0, label %B418.endif
976
+ ]
977
+
978
+ B52.endif.i.preheader: ; preds = %B418.endif
979
+ %smax = tail call i64 @llvm.smax.i64(i64 %arg.m, i64 1)
980
+ br label %B52.endif.i
981
+
982
+ B52.endif.i: ; preds = %B52.endif.i, %B52.endif.i.preheader
983
+ %lsr.iv117 = phi double* [ %.6.i1.i.i, %B52.endif.i.preheader ], [ %scevgep, %B52.endif.i ]
984
+ %lsr.iv = phi i64 [ %smax, %B52.endif.i.preheader ], [ %lsr.iv.next, %B52.endif.i ]
985
+ %c.2.06.i = phi double [ 0.000000e+00, %B52.endif.i.preheader ], [ %.239.i, %B52.endif.i ]
986
+ %.236.i = load double, double* %lsr.iv117, align 8, !noalias !56
987
+ %.239.i = fadd double %c.2.06.i, %.236.i
988
+ %lsr.iv.next = add nsw i64 %lsr.iv, -1
989
+ %scevgep = getelementptr double, double* %lsr.iv117, i64 1
990
+ %exitcond.not = icmp eq i64 %lsr.iv.next, 0
991
+ br i1 %exitcond.not, label %B472.endif, label %B52.endif.i, !prof !0
992
+
993
+ common.ret: ; preds = %B472.endif, %B418.if, %B348.if, %B270.if, %B54.if
994
+ %common.ret.op = phi i32 [ 0, %B472.endif ], [ 1, %B348.if ], [ %.874, %B418.if ], [ %.662, %B270.if ], [ %.154, %B54.if ]
995
+ ret i32 %common.ret.op
996
+
997
+ B54.if: ; preds = %B54
998
+ %.162 = icmp sgt i32 %.154, 0
999
+ %.155 = load { i8*, i32, i8*, i8*, i32 }*, { i8*, i32, i8*, i8*, i32 }** %excinfo.1, align 8
1000
+ %.163 = select i1 %.162, { i8*, i32, i8*, i8*, i32 }* %.155, { i8*, i32, i8*, i8*, i32 }* undef
1001
+ store { i8*, i32, i8*, i8*, i32 }* %.163, { i8*, i32, i8*, i8*, i32 }** %excinfo, align 8
1002
+ br label %common.ret
1003
+
1004
+ B54.endif: ; preds = %B54, %B54
1005
+ %19 = bitcast { double, double, double, i64, i64 }* %.150 to double*
1006
+ %20 = add i64 %lsr.iv123, %9
1007
+ %21 = add i64 %lsr.iv123, %12
1008
+ %22 = sub i64 %lsr.iv123, %21
1009
+ %23 = sub i64 %lsr.iv123, %20
1010
+ %24 = bitcast { double, double, double, i64, i64 }* %.150 to i8*
1011
+ %sunkaddr31 = getelementptr inbounds i8, i8* %24, i64 32
1012
+ %25 = bitcast i8* %sunkaddr31 to i64*
1013
+ %.164.fca.4.load = load i64, i64* %25, align 8
1014
+ %26 = bitcast { double, double, double, i64, i64 }* %.150 to i8*
1015
+ %sunkaddr32 = getelementptr inbounds i8, i8* %26, i64 24
1016
+ %27 = bitcast i8* %sunkaddr32 to i64*
1017
+ %.164.fca.3.load = load i64, i64* %27, align 8
1018
+ %28 = bitcast { double, double, double, i64, i64 }* %.150 to i8*
1019
+ %sunkaddr = getelementptr inbounds i8, i8* %28, i64 8
1020
+ %29 = bitcast i8* %sunkaddr to double*
1021
+ %.164.fca.1.load = load double, double* %29, align 8
1022
+ %.164.fca.0.load = load double, double* %19, align 8
1023
+ %.194 = fadd double %total_sum.4.090, %.164.fca.0.load
1024
+ %.202 = fcmp ogt double %.164.fca.1.load, %max_value.3.089
1025
+ %max_value.4.1 = select i1 %.202, double %.164.fca.1.load, double %max_value.3.089
1026
+ %.220 = add nsw i64 %.164.fca.3.load, %factorial_sum.3.088
1027
+ %.281 = icmp eq i64 %lsr.iv123, %22
1028
+ %.284 = fmul double %.194, 0x3FEE666666666666
1029
+ %total_sum.5.1 = select i1 %.281, double %.284, double %.194
1030
+ %.339 = icmp eq i64 %lsr.iv123, %23
1031
+ br i1 %.339, label %B182.else.if, label %B192.else.if
1032
+
1033
+ B182.else.if: ; preds = %B54.endif
1034
+ %.362 = sdiv i64 %.220, 2
1035
+ %30 = and i64 %.220, -9223372036854775807
1036
+ %.365 = icmp eq i64 %30, -9223372036854775807
1037
+ %.372 = sext i1 %.365 to i64
1038
+ %spec.select64 = add nsw i64 %.362, %.372
1039
+ br label %B192.else.if
1040
+
1041
+ B192.else.if: ; preds = %B182.else.if, %B54.endif
1042
+ %factorial_sum.4.1 = phi i64 [ %.220, %B54.endif ], [ %spec.select64, %B182.else.if ]
1043
+ %.434 = icmp eq i64 %lsr.iv123, %14
1044
+ %.191.i = mul nsw i64 %3, %3
1045
+ %.473 = select i1 %.434, i64 %.191.i, i64 0
1046
+ %.230 = add i64 %.473, %count_total.3.087
1047
+ %count_total.4.1 = add i64 %.230, %.164.fca.4.load
1048
+ %lsr.iv.next126 = add i64 %lsr.iv125, 10
1049
+ %.115 = add nuw i64 %.44.085, 1
1050
+ %exitcond100.not = icmp eq i64 %0, %2
1051
+ br i1 %exitcond100.not, label %B228.else.if, label %B54
1052
+
1053
+ B228.else.if: ; preds = %B192.else.if, %B0.endif
1054
+ %count_total.3.0.lcssa = phi i64 [ 0, %B0.endif ], [ %count_total.4.1, %B192.else.if ]
1055
+ %factorial_sum.3.0.lcssa = phi i64 [ 0, %B0.endif ], [ %factorial_sum.4.1, %B192.else.if ]
1056
+ %max_value.3.0.lcssa = phi double [ -1.000000e+07, %B0.endif ], [ %max_value.4.1, %B192.else.if ]
1057
+ %total_sum.4.0.lcssa = phi double [ 0.000000e+00, %B0.endif ], [ %total_sum.5.1, %B192.else.if ]
1058
+ %.516 = sdiv i64 %arg.m, 2
1059
+ %31 = and i64 %arg.m, -9223372036854775807
1060
+ %.519 = icmp eq i64 %31, -9223372036854775807
1061
+ %.526 = sext i1 %.519 to i64
1062
+ %spec.select66 = add nsw i64 %.516, %.526
1063
+ %.61878.not = icmp slt i64 %spec.select66, 1
1064
+ br i1 %.61878.not, label %B348, label %B270.preheader
1065
+
1066
+ B270.preheader: ; preds = %B228.else.if
1067
+ br label %B270
1068
+
1069
+ B270.if: ; preds = %B270
1070
+ %.670 = icmp sgt i32 %.662, 0
1071
+ %.663 = load { i8*, i32, i8*, i8*, i32 }*, { i8*, i32, i8*, i8*, i32 }** %excinfo.3, align 8
1072
+ %.671 = select i1 %.670, { i8*, i32, i8*, i8*, i32 }* %.663, { i8*, i32, i8*, i8*, i32 }* undef
1073
+ store { i8*, i32, i8*, i8*, i32 }* %.671, { i8*, i32, i8*, i8*, i32 }** %excinfo, align 8
1074
+ br label %common.ret
1075
+
1076
+ B270.endif: ; preds = %B270, %B270
1077
+ %32 = bitcast { double, double, double, i64, i64 }* %.658 to double*
1078
+ %33 = bitcast { double, double, double, i64, i64 }* %.658 to i8*
1079
+ %sunkaddr33 = getelementptr inbounds i8, i8* %33, i64 8
1080
+ %34 = bitcast i8* %sunkaddr33 to double*
1081
+ %.672.fca.1.load = load double, double* %34, align 8
1082
+ %.672.fca.0.load = load double, double* %32, align 8
1083
+ %.693 = fadd double %total_sum.6.081, %.672.fca.0.load
1084
+ %.697 = fcmp ogt double %.672.fca.1.load, %max_value.5.082
1085
+ %.698 = select i1 %.697, double %.672.fca.1.load, double %max_value.5.082
1086
+ %lsr.iv.next120 = add i64 %lsr.iv119, -1
1087
+ %lsr.iv.next122 = add i64 %lsr.iv121, 5
1088
+ %exitcond99.not = icmp eq i64 %lsr.iv.next120, 0
1089
+ br i1 %exitcond99.not, label %B348, label %B270
1090
+
1091
+ B348.if: ; preds = %B0.endif.endif.endif.i.i, %B0.endif.endif.i.i, %B348
1092
+ %excinfo.1.0.ph.i = phi { i8*, i32, i8*, i8*, i32 }* [ @.const.picklebuf.4575216064.11, %B0.endif.endif.endif.i.i ], [ @.const.picklebuf.4575674432.12, %B0.endif.endif.i.i ], [ @.const.picklebuf.4575674496.13, %B348 ]
1093
+ store { i8*, i32, i8*, i8*, i32 }* %excinfo.1.0.ph.i, { i8*, i32, i8*, i8*, i32 }** %excinfo, align 8
1094
+ br label %common.ret
1095
+
1096
+ B348.endif.endif: ; preds = %B0.endif.endif.endif.i.i
1097
+ %35 = icmp slt i64 %arg.m, 1
1098
+ %.5.i.i.i = getelementptr i8, i8* %.7.i.i.i.i, i64 24
1099
+ %36 = bitcast i8* %.5.i.i.i to double**
1100
+ %.6.i1.i.i = load double*, double** %36, align 8, !noalias !59
1101
+ %.26.i.i = shl nuw nsw i64 %arg.m, 3
1102
+ %.27.i.i = bitcast double* %.6.i1.i.i to i8*
1103
+ tail call void @llvm.memset.p0i8.i64(i8* align 1 %.27.i.i, i8 0, i64 %.26.i.i, i1 false), !noalias !60
1104
+ br i1 %35, label %B472.endif, label %B418.preheader
1105
+
1106
+ B418.preheader: ; preds = %B348.endif.endif
1107
+ br label %B418
1108
+
1109
+ B418.if: ; preds = %B418
1110
+ %.882 = icmp sgt i32 %.874, 0
1111
+ %.875 = load { i8*, i32, i8*, i8*, i32 }*, { i8*, i32, i8*, i8*, i32 }** %excinfo.5, align 8
1112
+ %.883 = select i1 %.882, { i8*, i32, i8*, i8*, i32 }* %.875, { i8*, i32, i8*, i8*, i32 }* undef
1113
+ store { i8*, i32, i8*, i8*, i32 }* %.883, { i8*, i32, i8*, i8*, i32 }** %excinfo, align 8
1114
+ br label %common.ret
1115
+
1116
+ B418.endif: ; preds = %B418, %B418
1117
+ %37 = bitcast { double, double, double, i64, i64 }* %.870 to double*
1118
+ %.884.fca.0.load = load double, double* %37, align 8
1119
+ %scevgep28 = getelementptr double, double* %.6.i1.i.i, i64 %.774.076
1120
+ store double %.884.fca.0.load, double* %scevgep28, align 8
1121
+ %exitcond98.not = icmp eq i64 %0, %17
1122
+ br i1 %exitcond98.not, label %B52.endif.i.preheader, label %B418
1123
+
1124
+ B472.endif: ; preds = %B52.endif.i, %B348.endif.endif
1125
+ %c.2.0.lcssa.i = phi double [ 0.000000e+00, %B348.endif.endif ], [ %.239.i, %B52.endif.i ]
1126
+ tail call void @NRT_decref(i8* nonnull %.7.i.i.i.i)
1127
+ %retptr.repack1333134 = bitcast { double, double, i64, i64, double }* %retptr to double*
1128
+ store double %total_sum.6.0.lcssa, double* %retptr.repack1333134, align 8
1129
+ %retptr.repack28 = getelementptr inbounds { double, double, i64, i64, double }, { double, double, i64, i64, double }* %retptr, i64 0, i32 1
1130
+ store double %max_value.5.0.lcssa, double* %retptr.repack28, align 8
1131
+ %retptr.repack30 = getelementptr inbounds { double, double, i64, i64, double }, { double, double, i64, i64, double }* %retptr, i64 0, i32 2
1132
+ store i64 %factorial_sum.3.0.lcssa, i64* %retptr.repack30, align 8
1133
+ %retptr.repack32 = getelementptr inbounds { double, double, i64, i64, double }, { double, double, i64, i64, double }* %retptr, i64 0, i32 3
1134
+ store i64 %count_total.3.0.lcssa, i64* %retptr.repack32, align 8
1135
+ %retptr.repack34 = getelementptr inbounds { double, double, i64, i64, double }, { double, double, i64, i64, double }* %retptr, i64 0, i32 4
1136
+ store double %c.2.0.lcssa.i, double* %retptr.repack34, align 8
1137
+ br label %common.ret
1138
+ }
1139
+
1140
+ define linkonce_odr i32 @_ZN8__main__5func1B2v3B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx({ double, double, double, i64, i64 }* noalias nocapture writeonly %retptr, { i8*, i32, i8*, i8*, i32 }** noalias nocapture writeonly %excinfo, i64 %arg.n) local_unnamed_addr {
1141
+ entry:
1142
+ %.15.i.i = icmp slt i64 %arg.n, 0
1143
+ br i1 %.15.i.i, label %B0.if, label %B0.endif.endif.i.i, !prof !0
1144
+
1145
+ B0.endif.endif.i.i: ; preds = %entry
1146
+ %.29.i.i = tail call { i64, i1 } @llvm.smul.with.overflow.i64(i64 %arg.n, i64 8)
1147
+ %.31.i.i = extractvalue { i64, i1 } %.29.i.i, 1
1148
+ br i1 %.31.i.i, label %B0.if, label %B0.endif.endif.endif.i.i, !prof !0
1149
+
1150
+ B0.endif.endif.endif.i.i: ; preds = %B0.endif.endif.i.i
1151
+ %.30.i.i = extractvalue { i64, i1 } %.29.i.i, 0
1152
+ %.7.i.i.i.i = tail call i8* @NRT_MemInfo_alloc_aligned(i64 %.30.i.i, i32 32), !noalias !63
1153
+ %.8.i.i.i.i = icmp eq i8* %.7.i.i.i.i, null
1154
+ br i1 %.8.i.i.i.i, label %B0.if, label %B0.endif.endif, !prof !0
1155
+
1156
+ B76: ; preds = %B76.preheader65, %B76
1157
+ %.78.0134 = phi i64 [ %.147, %B76 ], [ %.78.0134.ph, %B76.preheader65 ]
1158
+ %.147 = add nuw nsw i64 %.78.0134, 1
1159
+ %.172 = sitofp i64 %.78.0134 to double
1160
+ %.173 = fmul double %.172, 1.100000e+00
1161
+ %scevgep91 = getelementptr double, double* %.6.i1.i.i, i64 %.78.0134
1162
+ store double %.173, double* %scevgep91, align 8
1163
+ %exitcond141.not = icmp eq i64 %arg.n, %.147
1164
+ br i1 %exitcond141.not, label %B96.endif, label %B76, !llvm.loop !76
1165
+
1166
+ for.end.preheader: ; preds = %B128.preheader244.thread, %middle.block149, %B96.endif
1167
+ %total.2.0.lcssa = phi double [ 0.000000e+00, %B96.endif ], [ %36, %middle.block149 ], [ %.364, %B128.preheader244.thread ]
1168
+ br label %for.end
1169
+
1170
+ B352.preheader.thread: ; preds = %B0.endif.endif
1171
+ %.62819 = load double, double* %.6.i1.i.i, align 8
1172
+ br label %B670.sink.split
1173
+
1174
+ B356.preheader: ; preds = %B292, %B252.endif
1175
+ %max_val.2.0.lcssa = phi double [ %.628, %B252.endif ], [ %max_val.3.1, %B292 ]
1176
+ %min.iters.check165 = icmp eq i64 %arg.n, 1
1177
+ br i1 %min.iters.check165, label %B356.preheader243, label %vector.ph166
1178
+
1179
+ vector.ph166: ; preds = %B356.preheader
1180
+ %scevgep274 = getelementptr double, double* %.6.i1.i.i, i64 1
1181
+ %0 = and i64 %arg.n, -2
1182
+ %1 = lshr i64 %arg.n, 1
1183
+ %2 = mul i64 %1, -2
1184
+ br label %vector.body171
1185
+
1186
+ vector.body171: ; preds = %vector.body171, %vector.ph166
1187
+ %lsr.iv = phi i64 [ %lsr.iv.next, %vector.body171 ], [ %2, %vector.ph166 ]
1188
+ %lsr.iv275 = phi double* [ %scevgep276, %vector.body171 ], [ %scevgep274, %vector.ph166 ]
1189
+ %vec.phi173 = phi double [ %6, %vector.body171 ], [ 0.000000e+00, %vector.ph166 ]
1190
+ %scevgep83 = getelementptr double, double* %lsr.iv275, i64 -1
1191
+ %3 = load double, double* %scevgep83, align 8
1192
+ %4 = load double, double* %lsr.iv275, align 8
1193
+ %5 = fadd double %vec.phi173, %3
1194
+ %6 = fadd double %5, %4
1195
+ %scevgep276 = getelementptr double, double* %lsr.iv275, i64 2
1196
+ %lsr.iv.next = add i64 %lsr.iv, 2
1197
+ %7 = icmp eq i64 %lsr.iv.next, 0
1198
+ br i1 %7, label %middle.block163, label %vector.body171, !llvm.loop !79
1199
+
1200
+ middle.block163: ; preds = %vector.body171
1201
+ %cmp.n170 = icmp eq i64 %0, %arg.n
1202
+ br i1 %cmp.n170, label %B376.endif, label %B356.preheader243
1203
+
1204
+ B356.preheader243: ; preds = %middle.block163, %B356.preheader
1205
+ %running_sum.2.0118.ph = phi double [ %6, %middle.block163 ], [ 0.000000e+00, %B356.preheader ]
1206
+ %.865.0116.ph = phi i64 [ %0, %middle.block163 ], [ 0, %B356.preheader ]
1207
+ %scevgep = getelementptr double, double* %.6.i1.i.i, i64 %.865.0116.ph
1208
+ %8 = sub i64 %arg.n, %.865.0116.ph
1209
+ br label %B356
1210
+
1211
+ B292: ; preds = %B292.preheader, %B292
1212
+ %lsr.iv85 = phi double* [ %scevgep84, %B292.preheader ], [ %scevgep87, %B292 ]
1213
+ %lsr.iv283 = phi i64 [ %lsr.iv.next284, %B292 ], [ %.669, %B292.preheader ]
1214
+ %max_val.2.0123 = phi double [ %max_val.3.1, %B292 ], [ %.628, %B292.preheader ]
1215
+ %.783 = load double, double* %lsr.iv85, align 8
1216
+ %.785 = fcmp ogt double %.783, %max_val.2.0123
1217
+ %max_val.3.1 = select i1 %.785, double %.783, double %max_val.2.0123
1218
+ %lsr.iv.next284 = add i64 %lsr.iv283, -1
1219
+ %scevgep87 = getelementptr double, double* %lsr.iv85, i64 1
1220
+ %exitcond139.not = icmp eq i64 %lsr.iv.next284, 0
1221
+ br i1 %exitcond139.not, label %B356.preheader, label %B292
1222
+
1223
+ B356: ; preds = %B356, %B356.preheader243
1224
+ %lsr.iv81 = phi i64 [ %lsr.iv.next82, %B356 ], [ %8, %B356.preheader243 ]
1225
+ %lsr.iv270 = phi double* [ %scevgep271, %B356 ], [ %scevgep, %B356.preheader243 ]
1226
+ %running_sum.2.0118 = phi double [ %.990, %B356 ], [ %running_sum.2.0118.ph, %B356.preheader243 ]
1227
+ %.988 = load double, double* %lsr.iv270, align 8
1228
+ %.990 = fadd double %running_sum.2.0118, %.988
1229
+ %scevgep271 = getelementptr double, double* %lsr.iv270, i64 1
1230
+ %lsr.iv.next82 = add i64 %lsr.iv81, -1
1231
+ %ov = icmp eq i64 %lsr.iv.next82, 0
1232
+ br i1 %ov, label %B376.endif, label %B356, !llvm.loop !80
1233
+
1234
+ B404.loopexit: ; preds = %B404.loopexit.preheader242, %B404.loopexit
1235
+ %lsr.iv77 = phi i64 [ %49, %B404.loopexit.preheader242 ], [ %lsr.iv.next78, %B404.loopexit ]
1236
+ %count.3.0113 = phi i64 [ %count.3.0113.ph, %B404.loopexit.preheader242 ], [ %9, %B404.loopexit ]
1237
+ %.1085112 = phi i64 [ %.1085112.ph, %B404.loopexit.preheader242 ], [ %.1095, %B404.loopexit ]
1238
+ %.1095 = add nsw i64 %.1085112, -1
1239
+ %smax = tail call i64 @llvm.smax.i64(i64 %.1085112, i64 0)
1240
+ %9 = add i64 %smax, %count.3.0113
1241
+ %lsr.iv.next78 = add i64 %lsr.iv77, -1
1242
+ %ov133 = icmp eq i64 %lsr.iv.next78, 0
1243
+ br i1 %ov133, label %B456, label %B404.loopexit, !llvm.loop !81
1244
+
1245
+ B456: ; preds = %B404.loopexit, %middle.block178
1246
+ %.lcssa = phi i64 [ %48, %middle.block178 ], [ %9, %B404.loopexit ]
1247
+ %10 = icmp eq i64 %arg.n, 1
1248
+ br i1 %10, label %B506.preheader, label %vector.ph202
1249
+
1250
+ vector.ph202: ; preds = %B456
1251
+ %n.vec204 = and i64 %arg.n, -2
1252
+ br label %vector.body208
1253
+
1254
+ vector.body208: ; preds = %vector.body208, %vector.ph202
1255
+ %index209 = phi i64 [ 0, %vector.ph202 ], [ %induction214, %vector.body208 ]
1256
+ %vec.phi210 = phi i64 [ 1, %vector.ph202 ], [ %12, %vector.body208 ]
1257
+ %vec.phi211 = phi i64 [ 1, %vector.ph202 ], [ %13, %vector.body208 ]
1258
+ %induction214 = add i64 %index209, 2
1259
+ %11 = add i64 %index209, 1
1260
+ %12 = mul i64 %vec.phi210, %11
1261
+ %13 = mul i64 %vec.phi211, %induction214
1262
+ %14 = icmp eq i64 %n.vec204, %induction214
1263
+ br i1 %14, label %middle.block199, label %vector.body208, !llvm.loop !82
1264
+
1265
+ middle.block199: ; preds = %vector.body208
1266
+ %ind.end205 = or i64 %arg.n, 1
1267
+ %bin.rdx216 = mul i64 %13, %12
1268
+ %cmp.n207 = icmp eq i64 %n.vec204, %arg.n
1269
+ br i1 %cmp.n207, label %B522, label %B506.preheader
1270
+
1271
+ B506.preheader: ; preds = %middle.block199, %B456
1272
+ %factorial.2.0105.ph = phi i64 [ %bin.rdx216, %middle.block199 ], [ 1, %B456 ]
1273
+ %.1310.0103.ph = phi i64 [ %ind.end205, %middle.block199 ], [ 1, %B456 ]
1274
+ %15 = add i64 %arg.n, 1
1275
+ br label %B506
1276
+
1277
+ B506: ; preds = %B506.preheader, %B506
1278
+ %factorial.2.0105 = phi i64 [ %.1405, %B506 ], [ %factorial.2.0105.ph, %B506.preheader ]
1279
+ %.1310.0103 = phi i64 [ %.1379, %B506 ], [ %.1310.0103.ph, %B506.preheader ]
1280
+ %.1379 = add i64 %.1310.0103, 1
1281
+ %.1405 = mul nsw i64 %.1310.0103, %factorial.2.0105
1282
+ %exitcond136.not = icmp eq i64 %15, %.1379
1283
+ br i1 %exitcond136.not, label %B522, label %B506, !llvm.loop !83
1284
+
1285
+ B522: ; preds = %B506, %middle.block199
1286
+ %.1405.lcssa = phi i64 [ %bin.rdx216, %middle.block199 ], [ %.1405, %B506 ]
1287
+ %.1422 = icmp sgt i64 %arg.n, 1
1288
+ br i1 %.1422, label %B0.endif.endif.endif.i.i8, label %B670
1289
+
1290
+ B0.endif.endif.endif.i.i8: ; preds = %B522
1291
+ %.7.i.i.i.i6 = tail call i8* @NRT_MemInfo_alloc_aligned(i64 %.30.i.i, i32 32), !noalias !84
1292
+ %.8.i.i.i.i7 = icmp eq i8* %.7.i.i.i.i6, null
1293
+ br i1 %.8.i.i.i.i7, label %B532.if, label %B532.endif.endif, !prof !0
1294
+
1295
+ B624: ; preds = %B624.preheader, %B624
1296
+ %lsr.iv111 = phi i64 [ %51, %B624.preheader ], [ %lsr.iv.next112, %B624 ]
1297
+ %lsr.iv108 = phi double* [ %scevgep107, %B624.preheader ], [ %scevgep109, %B624 ]
1298
+ %store_forwarded = phi double [ 1.000000e+00, %B624.preheader ], [ %.1714, %B624 ]
1299
+ %scevgep76 = getelementptr double, double* %lsr.iv108, i64 -2
1300
+ %.1713 = load double, double* %scevgep76, align 8
1301
+ %.1714 = fadd double %store_forwarded, %.1713
1302
+ store double %.1714, double* %lsr.iv108, align 8
1303
+ %scevgep109 = getelementptr double, double* %lsr.iv108, i64 1
1304
+ %lsr.iv.next112 = add i64 %lsr.iv111, -1
1305
+ %exitcond.not = icmp eq i64 %lsr.iv.next112, 0
1306
+ br i1 %exitcond.not, label %B670.sink.split, label %B624
1307
+
1308
+ common.ret: ; preds = %B532.if, %B0.if, %B670
1309
+ %common.ret.op = phi i32 [ 0, %B670 ], [ 1, %B0.if ], [ 1, %B532.if ]
1310
+ ret i32 %common.ret.op
1311
+
1312
+ B670.sink.split: ; preds = %B624, %B532.endif.endif, %B352.preheader.thread
1313
+ %total.2.0.lcssa39 = phi double [ %total.2.0.lcssa, %B532.endif.endif ], [ 0.000000e+00, %B352.preheader.thread ], [ %total.2.0.lcssa, %B624 ]
1314
+ %max_val.2.0.lcssa24 = phi double [ %max_val.2.0.lcssa, %B532.endif.endif ], [ %.62819, %B352.preheader.thread ], [ %max_val.2.0.lcssa, %B624 ]
1315
+ %.7.i.i.i.i.sink = phi i8* [ %.7.i.i.i.i6, %B532.endif.endif ], [ %.7.i.i.i.i, %B352.preheader.thread ], [ %.7.i.i.i.i6, %B624 ]
1316
+ %running_sum.2.0.lcssa146.ph = phi double [ %.990.lcssa, %B532.endif.endif ], [ 0.000000e+00, %B352.preheader.thread ], [ %.990.lcssa, %B624 ]
1317
+ %count.3.0.lcssa144.ph = phi i64 [ %.lcssa, %B532.endif.endif ], [ 0, %B352.preheader.thread ], [ %.lcssa, %B624 ]
1318
+ %factorial.3.055.ph = phi i64 [ %.1405.lcssa, %B532.endif.endif ], [ 1, %B352.preheader.thread ], [ %.1405.lcssa, %B624 ]
1319
+ tail call void @NRT_decref(i8* nonnull %.7.i.i.i.i.sink)
1320
+ br label %B670
1321
+
1322
+ B670: ; preds = %B670.sink.split, %B522
1323
+ %total.2.0.lcssa38 = phi double [ %total.2.0.lcssa, %B522 ], [ %total.2.0.lcssa39, %B670.sink.split ]
1324
+ %max_val.2.0.lcssa23 = phi double [ %max_val.2.0.lcssa, %B522 ], [ %max_val.2.0.lcssa24, %B670.sink.split ]
1325
+ %running_sum.2.0.lcssa146 = phi double [ %.990.lcssa, %B522 ], [ %running_sum.2.0.lcssa146.ph, %B670.sink.split ]
1326
+ %count.3.0.lcssa144 = phi i64 [ %.lcssa, %B522 ], [ %count.3.0.lcssa144.ph, %B670.sink.split ]
1327
+ %factorial.3.055 = phi i64 [ %.1405.lcssa, %B522 ], [ %factorial.3.055.ph, %B670.sink.split ]
1328
+ %retptr.repack3031349395 = bitcast { double, double, double, i64, i64 }* %retptr to double*
1329
+ store double %total.2.0.lcssa38, double* %retptr.repack3031349395, align 8
1330
+ %retptr.repack30 = getelementptr inbounds { double, double, double, i64, i64 }, { double, double, double, i64, i64 }* %retptr, i64 0, i32 1
1331
+ store double %max_val.2.0.lcssa23, double* %retptr.repack30, align 8
1332
+ %retptr.repack32 = getelementptr inbounds { double, double, double, i64, i64 }, { double, double, double, i64, i64 }* %retptr, i64 0, i32 2
1333
+ store double %running_sum.2.0.lcssa146, double* %retptr.repack32, align 8
1334
+ %retptr.repack34 = getelementptr inbounds { double, double, double, i64, i64 }, { double, double, double, i64, i64 }* %retptr, i64 0, i32 3
1335
+ store i64 %factorial.3.055, i64* %retptr.repack34, align 8
1336
+ %retptr.repack36 = getelementptr inbounds { double, double, double, i64, i64 }, { double, double, double, i64, i64 }* %retptr, i64 0, i32 4
1337
+ store i64 %count.3.0.lcssa144, i64* %retptr.repack36, align 8
1338
+ br label %common.ret
1339
+
1340
+ B0.if: ; preds = %B0.endif.endif.endif.i.i, %B0.endif.endif.i.i, %entry
1341
+ %excinfo.1.0.ph.i = phi { i8*, i32, i8*, i8*, i32 }* [ @.const.picklebuf.4575216064, %B0.endif.endif.endif.i.i ], [ @.const.picklebuf.4575674432, %B0.endif.endif.i.i ], [ @.const.picklebuf.4575674496, %entry ]
1342
+ store { i8*, i32, i8*, i8*, i32 }* %excinfo.1.0.ph.i, { i8*, i32, i8*, i8*, i32 }** %excinfo, align 8
1343
+ br label %common.ret
1344
+
1345
+ B0.endif.endif: ; preds = %B0.endif.endif.endif.i.i
1346
+ %.5.i.i.i = getelementptr i8, i8* %.7.i.i.i.i, i64 24
1347
+ %16 = bitcast i8* %.5.i.i.i to double**
1348
+ %.6.i1.i.i = load double*, double** %16, align 8, !noalias !97
1349
+ %.26.i.i = shl nuw nsw i64 %arg.n, 3
1350
+ %.27.i.i = bitcast double* %.6.i1.i.i to i8*
1351
+ tail call void @llvm.memset.p0i8.i64(i8* align 1 %.27.i.i, i8 0, i64 %.26.i.i, i1 false), !noalias !98
1352
+ %.134133.not = icmp eq i64 %arg.n, 0
1353
+ br i1 %.134133.not, label %B352.preheader.thread, label %B76.preheader
1354
+
1355
+ B76.preheader: ; preds = %B0.endif.endif
1356
+ %min.iters.check = icmp ult i64 %arg.n, 4
1357
+ br i1 %min.iters.check, label %B76.preheader65, label %vector.ph
1358
+
1359
+ B76.preheader65: ; preds = %middle.block, %B76.preheader
1360
+ %.78.0134.ph = phi i64 [ %17, %middle.block ], [ 0, %B76.preheader ]
1361
+ br label %B76
1362
+
1363
+ vector.ph: ; preds = %B76.preheader
1364
+ %scevgep296 = getelementptr double, double* %.6.i1.i.i, i64 2
1365
+ %17 = and i64 %arg.n, -4
1366
+ %18 = lshr i64 %arg.n, 2
1367
+ %19 = mul i64 %18, -4
1368
+ br label %vector.body
1369
+
1370
+ vector.body: ; preds = %vector.body, %vector.ph
1371
+ %lsr.iv92 = phi i64 [ %lsr.iv.next93, %vector.body ], [ %19, %vector.ph ]
1372
+ %lsr.iv297 = phi double* [ %scevgep298, %vector.body ], [ %scevgep296, %vector.ph ]
1373
+ %vec.ind = phi <2 x i64> [ %vec.ind.next, %vector.body ], [ <i64 0, i64 1>, %vector.ph ]
1374
+ %lsr.iv297299 = bitcast double* %lsr.iv297 to <2 x double>*
1375
+ %step.add = add <2 x i64> %vec.ind, <i64 2, i64 2>
1376
+ %20 = sitofp <2 x i64> %vec.ind to <2 x double>
1377
+ %21 = sitofp <2 x i64> %step.add to <2 x double>
1378
+ %22 = fmul <2 x double> %20, <double 1.100000e+00, double 1.100000e+00>
1379
+ %23 = fmul <2 x double> %21, <double 1.100000e+00, double 1.100000e+00>
1380
+ %scevgep94 = getelementptr <2 x double>, <2 x double>* %lsr.iv297299, i64 -1
1381
+ store <2 x double> %22, <2 x double>* %scevgep94, align 8
1382
+ store <2 x double> %23, <2 x double>* %lsr.iv297299, align 8
1383
+ %vec.ind.next = add <2 x i64> %vec.ind, <i64 4, i64 4>
1384
+ %scevgep298 = getelementptr double, double* %lsr.iv297, i64 4
1385
+ %lsr.iv.next93 = add i64 %lsr.iv92, 4
1386
+ %24 = icmp eq i64 %lsr.iv.next93, 0
1387
+ br i1 %24, label %middle.block, label %vector.body, !llvm.loop !101
1388
+
1389
+ middle.block: ; preds = %vector.body
1390
+ %cmp.n = icmp eq i64 %17, %arg.n
1391
+ br i1 %cmp.n, label %B96.endif, label %B76.preheader65
1392
+
1393
+ B96.endif: ; preds = %B76, %middle.block
1394
+ %25 = and i64 %arg.n, -9223372036854775807
1395
+ %.271 = icmp eq i64 %25, 1
1396
+ %.2729498 = lshr i64 %arg.n, 1
1397
+ %.273 = zext i1 %.271 to i64
1398
+ %.274 = add nuw i64 %.2729498, %.273
1399
+ %.274.fr = freeze i64 %.274
1400
+ switch i64 %.274.fr, label %vector.ph152 [
1401
+ i64 0, label %for.end.preheader
1402
+ i64 1, label %B128.preheader244.thread
1403
+ ]
1404
+
1405
+ vector.ph152: ; preds = %B96.endif
1406
+ %uglygep2571012 = getelementptr double, double* %.6.i1.i.i, i64 2
1407
+ %26 = and i64 %.274.fr, -2
1408
+ %27 = lshr i64 %.274.fr, 1
1409
+ %28 = mul i64 %27, -2
1410
+ br label %vector.body159
1411
+
1412
+ vector.body159: ; preds = %vector.body159, %vector.ph152
1413
+ %lsr.iv89 = phi i64 [ %lsr.iv.next90, %vector.body159 ], [ %28, %vector.ph152 ]
1414
+ %lsr.iv291 = phi i64 [ %lsr.iv.next292, %vector.body159 ], [ 0, %vector.ph152 ]
1415
+ %vec.phi = phi double [ %36, %vector.body159 ], [ 0.000000e+00, %vector.ph152 ]
1416
+ %29 = icmp slt i64 %lsr.iv291, 0
1417
+ %30 = select i1 %29, i64 %arg.n, i64 0
1418
+ %31 = add i64 %30, %lsr.iv291
1419
+ %32 = getelementptr double, double* %.6.i1.i.i, i64 %31
1420
+ %uglygep25811 = getelementptr double, double* %uglygep2571012, i64 %31
1421
+ %33 = load double, double* %32, align 8
1422
+ %34 = load double, double* %uglygep25811, align 8
1423
+ %35 = fadd double %vec.phi, %33
1424
+ %36 = fadd double %35, %34
1425
+ %lsr.iv.next292 = add i64 %lsr.iv291, 4
1426
+ %lsr.iv.next90 = add i64 %lsr.iv89, 2
1427
+ %37 = icmp eq i64 %lsr.iv.next90, 0
1428
+ br i1 %37, label %middle.block149, label %vector.body159, !llvm.loop !102
1429
+
1430
+ middle.block149: ; preds = %vector.body159
1431
+ %cmp.n158 = icmp eq i64 %.274.fr, %26
1432
+ br i1 %cmp.n158, label %for.end.preheader, label %B128.preheader244
1433
+
1434
+ B128.preheader244: ; preds = %middle.block149
1435
+ %ind.end156 = shl i64 %26, 1
1436
+ %.346 = icmp slt i64 %ind.end156, 0
1437
+ %spec.select = select i1 %.346, i64 %arg.n, i64 0
1438
+ %38 = add i64 %spec.select, %ind.end156
1439
+ br label %B128.preheader244.thread
1440
+
1441
+ B128.preheader244.thread: ; preds = %B128.preheader244, %B96.endif
1442
+ %total.2.0131.ph35 = phi double [ %36, %B128.preheader244 ], [ 0.000000e+00, %B96.endif ]
1443
+ %.348 = phi i64 [ %38, %B128.preheader244 ], [ 0, %B96.endif ]
1444
+ %.361 = getelementptr double, double* %.6.i1.i.i, i64 %.348
1445
+ %.362 = load double, double* %.361, align 8
1446
+ %.364 = fadd double %total.2.0131.ph35, %.362
1447
+ br label %for.end.preheader
1448
+
1449
+ for.end: ; preds = %for.end, %for.end.preheader
1450
+ %lsr.iv123 = phi i64 [ 0, %for.end.preheader ], [ %lsr.iv.next124, %for.end ]
1451
+ %scevgep88 = getelementptr double, double* %.6.i1.i.i, i64 %lsr.iv123
1452
+ %.519 = load double, double* %scevgep88, align 8
1453
+ %.520 = tail call double @llvm.pow.f64(double %.519, double 1.500000e+00)
1454
+ %.558 = tail call double @llvm.sin.f64(double %.519)
1455
+ %.563 = fsub double %.520, %.558
1456
+ store double %.563, double* %scevgep88, align 8
1457
+ %lsr.iv.next124 = add i64 %lsr.iv123, 1
1458
+ %exitcond140.not = icmp eq i64 %arg.n, %lsr.iv.next124
1459
+ br i1 %exitcond140.not, label %B252.endif, label %for.end
1460
+
1461
+ B252.endif: ; preds = %for.end
1462
+ %.628 = load double, double* %.6.i1.i.i, align 8
1463
+ %.669 = add i64 %arg.n, -1
1464
+ %.712120.not = icmp slt i64 %.669, 1
1465
+ br i1 %.712120.not, label %B356.preheader, label %B292.preheader
1466
+
1467
+ B292.preheader: ; preds = %B252.endif
1468
+ %scevgep84 = getelementptr double, double* %.6.i1.i.i, i64 1
1469
+ br label %B292
1470
+
1471
+ B376.endif: ; preds = %B356, %middle.block163
1472
+ %.990.lcssa = phi double [ %6, %middle.block163 ], [ %.990, %B356 ]
1473
+ %39 = icmp ult i64 %arg.n, 4
1474
+ tail call void @NRT_decref(i8* nonnull %.7.i.i.i.i)
1475
+ br i1 %39, label %B404.loopexit.preheader242, label %vector.ph181
1476
+
1477
+ vector.ph181: ; preds = %B376.endif
1478
+ %.splatinsert = insertelement <2 x i64> poison, i64 %arg.n, i64 0
1479
+ %.splat = shufflevector <2 x i64> %.splatinsert, <2 x i64> poison, <2 x i32> zeroinitializer
1480
+ %induction192 = add <2 x i64> %.splat, <i64 0, i64 -1>
1481
+ %40 = and i64 %arg.n, -4
1482
+ %41 = lshr i64 %arg.n, 2
1483
+ %42 = mul i64 %41, -4
1484
+ br label %vector.body188
1485
+
1486
+ vector.body188: ; preds = %vector.body188, %vector.ph181
1487
+ %lsr.iv79 = phi i64 [ %lsr.iv.next80, %vector.body188 ], [ %42, %vector.ph181 ]
1488
+ %vec.phi190 = phi <2 x i64> [ %45, %vector.body188 ], [ zeroinitializer, %vector.ph181 ]
1489
+ %vec.phi191 = phi <2 x i64> [ %46, %vector.body188 ], [ zeroinitializer, %vector.ph181 ]
1490
+ %vec.ind193 = phi <2 x i64> [ %vec.ind.next196, %vector.body188 ], [ %induction192, %vector.ph181 ]
1491
+ %step.add194 = add <2 x i64> %vec.ind193, <i64 -2, i64 -2>
1492
+ %43 = tail call <2 x i64> @llvm.smax.v2i64(<2 x i64> %vec.ind193, <2 x i64> zeroinitializer)
1493
+ %44 = tail call <2 x i64> @llvm.smax.v2i64(<2 x i64> %step.add194, <2 x i64> zeroinitializer)
1494
+ %45 = add <2 x i64> %43, %vec.phi190
1495
+ %46 = add <2 x i64> %44, %vec.phi191
1496
+ %vec.ind.next196 = add <2 x i64> %vec.ind193, <i64 -4, i64 -4>
1497
+ %lsr.iv.next80 = add i64 %lsr.iv79, 4
1498
+ %47 = icmp eq i64 %lsr.iv.next80, 0
1499
+ br i1 %47, label %middle.block178, label %vector.body188, !llvm.loop !103
1500
+
1501
+ middle.block178: ; preds = %vector.body188
1502
+ %ind.end184 = and i64 %arg.n, 3
1503
+ %bin.rdx = add <2 x i64> %46, %45
1504
+ %48 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx)
1505
+ %cmp.n187 = icmp eq i64 %40, %arg.n
1506
+ br i1 %cmp.n187, label %B456, label %B404.loopexit.preheader242
1507
+
1508
+ B404.loopexit.preheader242: ; preds = %middle.block178, %B376.endif
1509
+ %count.3.0113.ph = phi i64 [ %48, %middle.block178 ], [ 0, %B376.endif ]
1510
+ %.1085112.ph = phi i64 [ %ind.end184, %middle.block178 ], [ %arg.n, %B376.endif ]
1511
+ %.1030.0111.ph = phi i64 [ %40, %middle.block178 ], [ 0, %B376.endif ]
1512
+ %49 = sub i64 %arg.n, %.1030.0111.ph
1513
+ br label %B404.loopexit
1514
+
1515
+ B532.if: ; preds = %B0.endif.endif.endif.i.i8
1516
+ store { i8*, i32, i8*, i8*, i32 }* @.const.picklebuf.4575216064, { i8*, i32, i8*, i8*, i32 }** %excinfo, align 8
1517
+ br label %common.ret
1518
+
1519
+ B532.endif.endif: ; preds = %B0.endif.endif.endif.i.i8
1520
+ %.5.i.i.i12 = getelementptr i8, i8* %.7.i.i.i.i6, i64 24
1521
+ %50 = bitcast i8* %.5.i.i.i12 to double**
1522
+ %.6.i1.i.i13 = load double*, double** %50, align 8, !noalias !104
1523
+ %.27.i.i15 = bitcast double* %.6.i1.i.i13 to i8*
1524
+ tail call void @llvm.memset.p0i8.i64(i8* align 1 %.27.i.i15, i8 0, i64 %.26.i.i, i1 false), !noalias !105
1525
+ store double 0.000000e+00, double* %.6.i1.i.i13, align 8
1526
+ %.1529 = getelementptr double, double* %.6.i1.i.i13, i64 1
1527
+ store double 1.000000e+00, double* %.1529, align 8
1528
+ %.161499 = icmp ugt i64 %arg.n, 2
1529
+ br i1 %.161499, label %B624.preheader, label %B670.sink.split
1530
+
1531
+ B624.preheader: ; preds = %B532.endif.endif
1532
+ %scevgep107 = getelementptr double, double* %.6.i1.i.i13, i64 2
1533
+ %51 = add nsw i64 %arg.n, -2
1534
+ br label %B624
1535
+ }
1536
+
1537
+ ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn
1538
+ declare { i64, i1 } @llvm.smul.with.overflow.i64(i64, i64) #0
1539
+
1540
+ declare noalias i8* @NRT_MemInfo_alloc_aligned(i64, i32) local_unnamed_addr
1541
+
1542
+ ; Function Attrs: noinline
1543
+ define linkonce_odr void @NRT_decref(i8* %.1) local_unnamed_addr #2 {
1544
+ .3:
1545
+ %.4 = icmp eq i8* %.1, null
1546
+ br i1 %.4, label %common.ret, label %.3.endif, !prof !0
1547
+
1548
+ common.ret: ; preds = %.3, %.3.endif
1549
+ ret void
1550
+
1551
+ .3.endif: ; preds = %.3
1552
+ fence release
1553
+ %.8 = bitcast i8* %.1 to i64*
1554
+ %.4.i = atomicrmw sub i64* %.8, i64 1 monotonic, align 8
1555
+ %.10 = icmp eq i64 %.4.i, 1
1556
+ br i1 %.10, label %.3.endif.if, label %common.ret, !prof !0
1557
+
1558
+ .3.endif.if: ; preds = %.3.endif
1559
+ fence acquire
1560
+ tail call void @NRT_MemInfo_call_dtor(i8* nonnull %.1)
1561
+ ret void
1562
+ }
1563
+
1564
+ declare void @NRT_MemInfo_call_dtor(i8*) local_unnamed_addr
1565
+
1566
+ ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn
1567
+ declare double @llvm.pow.f64(double, double) #0
1568
+
1569
+ ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn
1570
+ declare double @llvm.sin.f64(double) #0
1571
+
1572
+ ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn
1573
+ declare <2 x i64> @llvm.smax.v2i64(<2 x i64>, <2 x i64>) #0
1574
+
1575
+ ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone willreturn
1576
+ declare i64 @llvm.vector.reduce.add.v2i64(<2 x i64>) #3
1577
+
1578
+ ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn
1579
+ declare double @llvm.floor.f64(double) #0
1580
+
1581
+ attributes #0 = { mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn }
1582
+ attributes #1 = { argmemonly mustprogress nocallback nofree nounwind willreturn writeonly }
1583
+ attributes #2 = { noinline }
1584
+ attributes #3 = { mustprogress nocallback nofree nosync nounwind readnone willreturn }
1585
+
1586
+ !0 = !{!"branch_weights", i32 1, i32 99}
1587
+ !1 = !{!2, !4, !5, !7, !8, !10, !11, !13}
1588
+ !2 = distinct !{!2, !3, !"_ZN5numba2np8arrayobj18_ol_array_allocate12_3clocals_3e4implB2v7B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj: %retptr"}
1589
+ !3 = distinct !{!3, !"_ZN5numba2np8arrayobj18_ol_array_allocate12_3clocals_3e4implB2v7B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj"}
1590
+ !4 = distinct !{!4, !3, !"_ZN5numba2np8arrayobj18_ol_array_allocate12_3clocals_3e4implB2v7B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj: %excinfo"}
1591
+ !5 = distinct !{!5, !6, !"_ZN5numba2np8arrayobj15_call_allocatorB2v6B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj: %retptr"}
1592
+ !6 = distinct !{!6, !"_ZN5numba2np8arrayobj15_call_allocatorB2v6B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj"}
1593
+ !7 = distinct !{!7, !6, !"_ZN5numba2np8arrayobj15_call_allocatorB2v6B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj: %excinfo"}
1594
+ !8 = distinct !{!8, !9, !"_ZN5numba2np8arrayobj11ol_np_empty12_3clocals_3e4implB2v5B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx39Function_28_3cclass_20_27float_27_3e_29: %retptr"}
1595
+ !9 = distinct !{!9, !"_ZN5numba2np8arrayobj11ol_np_empty12_3clocals_3e4implB2v5B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx39Function_28_3cclass_20_27float_27_3e_29"}
1596
+ !10 = distinct !{!10, !9, !"_ZN5numba2np8arrayobj11ol_np_empty12_3clocals_3e4implB2v5B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx39Function_28_3cclass_20_27float_27_3e_29: %excinfo"}
1597
+ !11 = distinct !{!11, !12, !"_ZN5numba2np8arrayobj11ol_np_zeros12_3clocals_3e4implB2v4B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx48omitted_28default_3d_3cclass_20_27float_27_3e_29: %retptr"}
1598
+ !12 = distinct !{!12, !"_ZN5numba2np8arrayobj11ol_np_zeros12_3clocals_3e4implB2v4B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx48omitted_28default_3d_3cclass_20_27float_27_3e_29"}
1599
+ !13 = distinct !{!13, !12, !"_ZN5numba2np8arrayobj11ol_np_zeros12_3clocals_3e4implB2v4B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx48omitted_28default_3d_3cclass_20_27float_27_3e_29: %excinfo"}
1600
+ !14 = !{!15}
1601
+ !15 = distinct !{!15, !16, !"_ZN5numba2np13old_arraymath9array_sum12_3clocals_3e14array_sum_implB3v13B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAE5ArrayIdLi1E1C7mutable7alignedE: %retptr"}
1602
+ !16 = distinct !{!16, !"_ZN5numba2np13old_arraymath9array_sum12_3clocals_3e14array_sum_implB3v13B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAE5ArrayIdLi1E1C7mutable7alignedE"}
1603
+ !17 = !{!"branch_weights", i32 99, i32 101}
1604
+ !18 = !{!8, !10, !11, !13}
1605
+ !19 = !{!20, !11, !13}
1606
+ !20 = distinct !{!20, !21, !"_ZN5numba2np8arrayobj18ol_array_zero_fill12_3clocals_3e4implB2v8B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dE5ArrayIdLi1E1C7mutable7alignedE: %retptr"}
1607
+ !21 = distinct !{!21, !"_ZN5numba2np8arrayobj18ol_array_zero_fill12_3clocals_3e4implB2v8B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dE5ArrayIdLi1E1C7mutable7alignedE"}
1608
+ !22 = !{!"branch_weights", i32 99, i32 1}
1609
+ !23 = !{!24, !26, !27, !29, !30, !32, !33, !35}
1610
+ !24 = distinct !{!24, !25, !"_ZN5numba2np8arrayobj18_ol_array_allocate12_3clocals_3e4implB2v7B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj: %retptr"}
1611
+ !25 = distinct !{!25, !"_ZN5numba2np8arrayobj18_ol_array_allocate12_3clocals_3e4implB2v7B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj"}
1612
+ !26 = distinct !{!26, !25, !"_ZN5numba2np8arrayobj18_ol_array_allocate12_3clocals_3e4implB2v7B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj: %excinfo"}
1613
+ !27 = distinct !{!27, !28, !"_ZN5numba2np8arrayobj15_call_allocatorB2v6B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj: %retptr"}
1614
+ !28 = distinct !{!28, !"_ZN5numba2np8arrayobj15_call_allocatorB2v6B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj"}
1615
+ !29 = distinct !{!29, !28, !"_ZN5numba2np8arrayobj15_call_allocatorB2v6B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj: %excinfo"}
1616
+ !30 = distinct !{!30, !31, !"_ZN5numba2np8arrayobj11ol_np_empty12_3clocals_3e4implB2v5B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx39Function_28_3cclass_20_27float_27_3e_29: %retptr"}
1617
+ !31 = distinct !{!31, !"_ZN5numba2np8arrayobj11ol_np_empty12_3clocals_3e4implB2v5B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx39Function_28_3cclass_20_27float_27_3e_29"}
1618
+ !32 = distinct !{!32, !31, !"_ZN5numba2np8arrayobj11ol_np_empty12_3clocals_3e4implB2v5B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx39Function_28_3cclass_20_27float_27_3e_29: %excinfo"}
1619
+ !33 = distinct !{!33, !34, !"_ZN5numba2np8arrayobj11ol_np_zeros12_3clocals_3e4implB2v4B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx48omitted_28default_3d_3cclass_20_27float_27_3e_29: %retptr"}
1620
+ !34 = distinct !{!34, !"_ZN5numba2np8arrayobj11ol_np_zeros12_3clocals_3e4implB2v4B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx48omitted_28default_3d_3cclass_20_27float_27_3e_29"}
1621
+ !35 = distinct !{!35, !34, !"_ZN5numba2np8arrayobj11ol_np_zeros12_3clocals_3e4implB2v4B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx48omitted_28default_3d_3cclass_20_27float_27_3e_29: %excinfo"}
1622
+ !36 = !{!37}
1623
+ !37 = distinct !{!37, !38, !"_ZN5numba2np13old_arraymath9array_sum12_3clocals_3e14array_sum_implB3v13B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAE5ArrayIdLi1E1C7mutable7alignedE: %retptr"}
1624
+ !38 = distinct !{!38, !"_ZN5numba2np13old_arraymath9array_sum12_3clocals_3e14array_sum_implB3v13B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAE5ArrayIdLi1E1C7mutable7alignedE"}
1625
+ !39 = !{!30, !32, !33, !35}
1626
+ !40 = !{!41, !33, !35}
1627
+ !41 = distinct !{!41, !42, !"_ZN5numba2np8arrayobj18ol_array_zero_fill12_3clocals_3e4implB2v8B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dE5ArrayIdLi1E1C7mutable7alignedE: %retptr"}
1628
+ !42 = distinct !{!42, !"_ZN5numba2np8arrayobj18ol_array_zero_fill12_3clocals_3e4implB2v8B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dE5ArrayIdLi1E1C7mutable7alignedE"}
1629
+ !43 = !{!44, !46, !47, !49, !50, !52, !53, !55}
1630
+ !44 = distinct !{!44, !45, !"_ZN5numba2np8arrayobj18_ol_array_allocate12_3clocals_3e4implB2v7B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj: %retptr"}
1631
+ !45 = distinct !{!45, !"_ZN5numba2np8arrayobj18_ol_array_allocate12_3clocals_3e4implB2v7B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj"}
1632
+ !46 = distinct !{!46, !45, !"_ZN5numba2np8arrayobj18_ol_array_allocate12_3clocals_3e4implB2v7B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj: %excinfo"}
1633
+ !47 = distinct !{!47, !48, !"_ZN5numba2np8arrayobj15_call_allocatorB2v6B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj: %retptr"}
1634
+ !48 = distinct !{!48, !"_ZN5numba2np8arrayobj15_call_allocatorB2v6B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj"}
1635
+ !49 = distinct !{!49, !48, !"_ZN5numba2np8arrayobj15_call_allocatorB2v6B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj: %excinfo"}
1636
+ !50 = distinct !{!50, !51, !"_ZN5numba2np8arrayobj11ol_np_empty12_3clocals_3e4implB2v5B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx39Function_28_3cclass_20_27float_27_3e_29: %retptr"}
1637
+ !51 = distinct !{!51, !"_ZN5numba2np8arrayobj11ol_np_empty12_3clocals_3e4implB2v5B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx39Function_28_3cclass_20_27float_27_3e_29"}
1638
+ !52 = distinct !{!52, !51, !"_ZN5numba2np8arrayobj11ol_np_empty12_3clocals_3e4implB2v5B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx39Function_28_3cclass_20_27float_27_3e_29: %excinfo"}
1639
+ !53 = distinct !{!53, !54, !"_ZN5numba2np8arrayobj11ol_np_zeros12_3clocals_3e4implB2v4B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx48omitted_28default_3d_3cclass_20_27float_27_3e_29: %retptr"}
1640
+ !54 = distinct !{!54, !"_ZN5numba2np8arrayobj11ol_np_zeros12_3clocals_3e4implB2v4B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx48omitted_28default_3d_3cclass_20_27float_27_3e_29"}
1641
+ !55 = distinct !{!55, !54, !"_ZN5numba2np8arrayobj11ol_np_zeros12_3clocals_3e4implB2v4B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx48omitted_28default_3d_3cclass_20_27float_27_3e_29: %excinfo"}
1642
+ !56 = !{!57}
1643
+ !57 = distinct !{!57, !58, !"_ZN5numba2np13old_arraymath9array_sum12_3clocals_3e14array_sum_implB3v13B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAE5ArrayIdLi1E1C7mutable7alignedE: %retptr"}
1644
+ !58 = distinct !{!58, !"_ZN5numba2np13old_arraymath9array_sum12_3clocals_3e14array_sum_implB3v13B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAE5ArrayIdLi1E1C7mutable7alignedE"}
1645
+ !59 = !{!50, !52, !53, !55}
1646
+ !60 = !{!61, !53, !55}
1647
+ !61 = distinct !{!61, !62, !"_ZN5numba2np8arrayobj18ol_array_zero_fill12_3clocals_3e4implB2v8B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dE5ArrayIdLi1E1C7mutable7alignedE: %retptr"}
1648
+ !62 = distinct !{!62, !"_ZN5numba2np8arrayobj18ol_array_zero_fill12_3clocals_3e4implB2v8B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dE5ArrayIdLi1E1C7mutable7alignedE"}
1649
+ !63 = !{!64, !66, !67, !69, !70, !72, !73, !75}
1650
+ !64 = distinct !{!64, !65, !"_ZN5numba2np8arrayobj18_ol_array_allocate12_3clocals_3e4implB2v7B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj: %retptr"}
1651
+ !65 = distinct !{!65, !"_ZN5numba2np8arrayobj18_ol_array_allocate12_3clocals_3e4implB2v7B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj"}
1652
+ !66 = distinct !{!66, !65, !"_ZN5numba2np8arrayobj18_ol_array_allocate12_3clocals_3e4implB2v7B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj: %excinfo"}
1653
+ !67 = distinct !{!67, !68, !"_ZN5numba2np8arrayobj15_call_allocatorB2v6B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj: %retptr"}
1654
+ !68 = distinct !{!68, !"_ZN5numba2np8arrayobj15_call_allocatorB2v6B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj"}
1655
+ !69 = distinct !{!69, !68, !"_ZN5numba2np8arrayobj15_call_allocatorB2v6B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj: %excinfo"}
1656
+ !70 = distinct !{!70, !71, !"_ZN5numba2np8arrayobj11ol_np_empty12_3clocals_3e4implB2v5B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx39Function_28_3cclass_20_27float_27_3e_29: %retptr"}
1657
+ !71 = distinct !{!71, !"_ZN5numba2np8arrayobj11ol_np_empty12_3clocals_3e4implB2v5B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx39Function_28_3cclass_20_27float_27_3e_29"}
1658
+ !72 = distinct !{!72, !71, !"_ZN5numba2np8arrayobj11ol_np_empty12_3clocals_3e4implB2v5B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx39Function_28_3cclass_20_27float_27_3e_29: %excinfo"}
1659
+ !73 = distinct !{!73, !74, !"_ZN5numba2np8arrayobj11ol_np_zeros12_3clocals_3e4implB2v4B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx48omitted_28default_3d_3cclass_20_27float_27_3e_29: %retptr"}
1660
+ !74 = distinct !{!74, !"_ZN5numba2np8arrayobj11ol_np_zeros12_3clocals_3e4implB2v4B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx48omitted_28default_3d_3cclass_20_27float_27_3e_29"}
1661
+ !75 = distinct !{!75, !74, !"_ZN5numba2np8arrayobj11ol_np_zeros12_3clocals_3e4implB2v4B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx48omitted_28default_3d_3cclass_20_27float_27_3e_29: %excinfo"}
1662
+ !76 = distinct !{!76, !77, !78}
1663
+ !77 = !{!"llvm.loop.unroll.runtime.disable"}
1664
+ !78 = !{!"llvm.loop.isvectorized", i32 1}
1665
+ !79 = distinct !{!79, !78}
1666
+ !80 = distinct !{!80, !78}
1667
+ !81 = distinct !{!81, !77, !78}
1668
+ !82 = distinct !{!82, !78}
1669
+ !83 = distinct !{!83, !78}
1670
+ !84 = !{!85, !87, !88, !90, !91, !93, !94, !96}
1671
+ !85 = distinct !{!85, !86, !"_ZN5numba2np8arrayobj18_ol_array_allocate12_3clocals_3e4implB2v7B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj: %retptr"}
1672
+ !86 = distinct !{!86, !"_ZN5numba2np8arrayobj18_ol_array_allocate12_3clocals_3e4implB2v7B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj"}
1673
+ !87 = distinct !{!87, !86, !"_ZN5numba2np8arrayobj18_ol_array_allocate12_3clocals_3e4implB2v7B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj: %excinfo"}
1674
+ !88 = distinct !{!88, !89, !"_ZN5numba2np8arrayobj15_call_allocatorB2v6B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj: %retptr"}
1675
+ !89 = distinct !{!89, !"_ZN5numba2np8arrayobj15_call_allocatorB2v6B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj"}
1676
+ !90 = distinct !{!90, !89, !"_ZN5numba2np8arrayobj15_call_allocatorB2v6B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj: %excinfo"}
1677
+ !91 = distinct !{!91, !92, !"_ZN5numba2np8arrayobj11ol_np_empty12_3clocals_3e4implB2v5B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx39Function_28_3cclass_20_27float_27_3e_29: %retptr"}
1678
+ !92 = distinct !{!92, !"_ZN5numba2np8arrayobj11ol_np_empty12_3clocals_3e4implB2v5B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx39Function_28_3cclass_20_27float_27_3e_29"}
1679
+ !93 = distinct !{!93, !92, !"_ZN5numba2np8arrayobj11ol_np_empty12_3clocals_3e4implB2v5B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx39Function_28_3cclass_20_27float_27_3e_29: %excinfo"}
1680
+ !94 = distinct !{!94, !95, !"_ZN5numba2np8arrayobj11ol_np_zeros12_3clocals_3e4implB2v4B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx48omitted_28default_3d_3cclass_20_27float_27_3e_29: %retptr"}
1681
+ !95 = distinct !{!95, !"_ZN5numba2np8arrayobj11ol_np_zeros12_3clocals_3e4implB2v4B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx48omitted_28default_3d_3cclass_20_27float_27_3e_29"}
1682
+ !96 = distinct !{!96, !95, !"_ZN5numba2np8arrayobj11ol_np_zeros12_3clocals_3e4implB2v4B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx48omitted_28default_3d_3cclass_20_27float_27_3e_29: %excinfo"}
1683
+ !97 = !{!70, !72, !73, !75}
1684
+ !98 = !{!99, !73, !75}
1685
+ !99 = distinct !{!99, !100, !"_ZN5numba2np8arrayobj18ol_array_zero_fill12_3clocals_3e4implB2v8B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dE5ArrayIdLi1E1C7mutable7alignedE: %retptr"}
1686
+ !100 = distinct !{!100, !"_ZN5numba2np8arrayobj18ol_array_zero_fill12_3clocals_3e4implB2v8B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dE5ArrayIdLi1E1C7mutable7alignedE"}
1687
+ !101 = distinct !{!101, !78}
1688
+ !102 = distinct !{!102, !78}
1689
+ !103 = distinct !{!103, !78}
1690
+ !104 = !{!91, !93, !94, !96}
1691
+ !105 = !{!106, !94, !96}
1692
+ !106 = distinct !{!106, !107, !"_ZN5numba2np8arrayobj18ol_array_zero_fill12_3clocals_3e4implB2v8B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dE5ArrayIdLi1E1C7mutable7alignedE: %retptr"}
1693
+ !107 = distinct !{!107, !"_ZN5numba2np8arrayobj18ol_array_zero_fill12_3clocals_3e4implB2v8B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dE5ArrayIdLi1E1C7mutable7alignedE"}
1694
+
1695
+ (venv) mikhailgoykhman@Mikhails-MacBook-Pro-2 core %
1696
+
1697
+
1698
+ """
1699
+
1700
+ """
1701
+ ; ModuleID = 'func4'
1702
+ source_filename = "<string>"
1703
+ target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
1704
+ target triple = "arm64-apple-darwin24.3.0"
1705
+
1706
+ @.const.func4 = internal constant [6 x i8] c"func4\00"
1707
+ @_ZN08NumbaEnv8__main__5func4B3v17B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx = common local_unnamed_addr global i8* null
1708
+ @".const.missing Environment: _ZN08NumbaEnv8__main__5func4B3v17B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx" = internal constant [98 x i8] c"missing Environment: _ZN08NumbaEnv8__main__5func4B3v17B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx\00"
1709
+ @".const.Error creating Python tuple from runtime exception arguments" = internal constant [61 x i8] c"Error creating Python tuple from runtime exception arguments\00"
1710
+ @".const.unknown error when calling native function" = internal constant [43 x i8] c"unknown error when calling native function\00"
1711
+ @".const.Error creating Python tuple from runtime exception arguments.1" = internal constant [61 x i8] c"Error creating Python tuple from runtime exception arguments\00"
1712
+ @PyExc_SystemError = external global i8
1713
+ @".const.unknown error when calling native function.2" = internal constant [43 x i8] c"unknown error when calling native function\00"
1714
+ @".const.<numba.core.cpu.CPUContext object at 0x1089cca10>" = internal constant [50 x i8] c"<numba.core.cpu.CPUContext object at 0x1089cca10>\00"
1715
+ @_ZN08NumbaEnv8__main__7__func3B3v16B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx = common local_unnamed_addr global i8* null
1716
+ @_ZN08NumbaEnv5numba7cpython11old_numbers14int_power_impl12_3clocals_3e9int_powerB3v11B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAExx = common local_unnamed_addr global i8* null
1717
+ @_ZN08NumbaEnv8__main__7__func2B3v14B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx = common local_unnamed_addr global i8* null
1718
+ @_ZN08NumbaEnv5numba2np8arrayobj11ol_np_zeros12_3clocals_3e4implB2v4B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx48omitted_28default_3d_3cclass_20_27float_27_3e_29 = common local_unnamed_addr global i8* null
1719
+ @_ZN08NumbaEnv5numba2np8arrayobj11ol_np_empty12_3clocals_3e4implB2v5B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx39Function_28_3cclass_20_27float_27_3e_29 = common local_unnamed_addr global i8* null
1720
+ @.const.pickledata.4433068544 = internal constant [77 x i8] c"\80\04\95B\00\00\00\00\00\00\00\8C\08builtins\94\8C\0AValueError\94\93\94\8C\1Fnegative dimensions not allowed\94\85\94N\87\94."
1721
+ @.const.pickledata.4433068544.sha1 = internal constant [20 x i8] c"3\1B\85c\BD\B9\DA\C8\1B8B\22s\05,Ho\C1pk"
1722
+ @.const.picklebuf.4433068544 = internal constant { i8*, i32, i8*, i8*, i32 } { i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.const.pickledata.4433068544, i32 0, i32 0), i32 77, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.const.pickledata.4433068544.sha1, i32 0, i32 0), i8* null, i32 0 }
1723
+ @.const.pickledata.4433068480 = internal constant [137 x i8] c"\80\04\95~\00\00\00\00\00\00\00\8C\08builtins\94\8C\0AValueError\94\93\94\8C[array is too big; `arr.size * arr.dtype.itemsize` is larger than the maximum possible size.\94\85\94N\87\94."
1724
+ @.const.pickledata.4433068480.sha1 = internal constant [20 x i8] c"X\E1N\CC\B5\07\B1\E0 i\81t\02#\E6\85\CB\8C<W"
1725
+ @.const.picklebuf.4433068480 = internal constant { i8*, i32, i8*, i8*, i32 } { i8* getelementptr inbounds ([137 x i8], [137 x i8]* @.const.pickledata.4433068480, i32 0, i32 0), i32 137, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.const.pickledata.4433068480.sha1, i32 0, i32 0), i8* null, i32 0 }
1726
+ @_ZN08NumbaEnv5numba2np8arrayobj15_call_allocatorB2v6B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj = common local_unnamed_addr global i8* null
1727
+ @_ZN08NumbaEnv5numba2np8arrayobj18_ol_array_allocate12_3clocals_3e4implB2v7B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj = common local_unnamed_addr global i8* null
1728
+ @.const.pickledata.4432610432 = internal constant [86 x i8] c"\80\04\95K\00\00\00\00\00\00\00\8C\08builtins\94\8C\0BMemoryError\94\93\94\8C'Allocation failed (probably too large).\94\85\94N\87\94."
1729
+ @.const.pickledata.4432610432.sha1 = internal constant [20 x i8] c"\BA(\9D\81\F0\\p \F3G|\15sH\04\DFe\AB\E2\09"
1730
+ @.const.picklebuf.4432610432 = internal constant { i8*, i32, i8*, i8*, i32 } { i8* getelementptr inbounds ([86 x i8], [86 x i8]* @.const.pickledata.4432610432, i32 0, i32 0), i32 86, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.const.pickledata.4432610432.sha1, i32 0, i32 0), i8* null, i32 0 }
1731
+ @_ZN08NumbaEnv5numba2np8arrayobj18ol_array_zero_fill12_3clocals_3e4implB2v8B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dE5ArrayIdLi1E1C7mutable7alignedE = common local_unnamed_addr global i8* null
1732
+ @_ZN08NumbaEnv8__main__7__func1B2v9B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx = common local_unnamed_addr global i8* null
1733
+ @PyExc_RuntimeError = external global i8
1734
+ @_ZN08NumbaEnv5numba2np13old_arraymath9array_sum12_3clocals_3e14array_sum_implB3v12B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAE5ArrayIdLi1E1C7mutable7alignedE = common local_unnamed_addr global i8* null
1735
+ @_ZN08NumbaEnv5numba2np8arrayobj15make_nditer_cls12_3clocals_3e6NdIter13init_specific12_3clocals_3e11check_shapeB3v13B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAE8UniTupleIxLi1EE8UniTupleIxLi1EE = common local_unnamed_addr global i8* null
1736
+
1737
+ define i32 @_ZN8__main__5func4B3v17B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx({ double, double, double, i64, i64 }* noalias nocapture writeonly %retptr, { i8*, i32, i8*, i8*, i32 }** noalias nocapture writeonly %excinfo, i64 %arg.m) local_unnamed_addr {
1738
+ B0.endif:
1739
+ %0 = tail call i64 @llvm.smax.i64(i64 %arg.m, i64 0)
1740
+ %.102106.not = icmp slt i64 %arg.m, 1
1741
+ br i1 %.102106.not, label %B228.else.if, label %B54.endif.preheader
1742
+
1743
+ B54.endif.preheader: ; preds = %B0.endif
1744
+ br label %B54.endif
1745
+
1746
+ B348: ; preds = %B270.endif, %B228.else.if
1747
+ %total_sum.6.0.lcssa = phi double [ %total_sum.4.0.lcssa, %B228.else.if ], [ %.693, %B270.endif ]
1748
+ %max_value.5.0.lcssa = phi double [ %max_value.3.0.lcssa, %B228.else.if ], [ %.698, %B270.endif ]
1749
+ %.15.i.i = icmp slt i64 %arg.m, 0
1750
+ br i1 %.15.i.i, label %B348.if, label %B0.endif.endif.i.i, !prof !0
1751
+
1752
+ B0.endif.endif.i.i: ; preds = %B348
1753
+ %.29.i.i = tail call { i64, i1 } @llvm.smul.with.overflow.i64(i64 %arg.m, i64 8)
1754
+ %.31.i.i = extractvalue { i64, i1 } %.29.i.i, 1
1755
+ br i1 %.31.i.i, label %B348.if, label %B0.endif.endif.endif.i.i, !prof !0
1756
+
1757
+ B0.endif.endif.endif.i.i: ; preds = %B0.endif.endif.i.i
1758
+ %.30.i.i = extractvalue { i64, i1 } %.29.i.i, 0
1759
+ %.7.i.i.i.i = tail call i8* @NRT_MemInfo_alloc_aligned(i64 %.30.i.i, i32 32), !noalias !1
1760
+ %.8.i.i.i.i = icmp eq i8* %.7.i.i.i.i, null
1761
+ br i1 %.8.i.i.i.i, label %B348.if, label %B348.endif.endif, !prof !0
1762
+
1763
+ B52.endif.i.preheader: ; preds = %B418.endif
1764
+ %smax = call i64 @llvm.smax.i64(i64 %arg.m, i64 1)
1765
+ br label %B52.endif.i
1766
+
1767
+ B52.endif.i: ; preds = %B52.endif.i.preheader, %B52.endif.i
1768
+ %lsr.iv121 = phi double* [ %.6.i1.i.i, %B52.endif.i.preheader ], [ %scevgep, %B52.endif.i ]
1769
+ %lsr.iv = phi i64 [ %smax, %B52.endif.i.preheader ], [ %lsr.iv.next, %B52.endif.i ]
1770
+ %c.2.06.i = phi double [ %.239.i, %B52.endif.i ], [ 0.000000e+00, %B52.endif.i.preheader ]
1771
+ %.236.i = load double, double* %lsr.iv121, align 8, !noalias !14
1772
+ %.239.i = fadd double %c.2.06.i, %.236.i
1773
+ %lsr.iv.next = add nsw i64 %lsr.iv, -1
1774
+ %scevgep = getelementptr double, double* %lsr.iv121, i64 1
1775
+ %exitcond.not = icmp eq i64 %lsr.iv.next, 0
1776
+ br i1 %exitcond.not, label %_ZN5numba2np13old_arraymath9array_sum12_3clocals_3e14array_sum_implB3v12B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAE5ArrayIdLi1E1C7mutable7alignedE.exit.loopexit, label %B52.endif.i, !prof !0
1777
+
1778
+ _ZN5numba2np13old_arraymath9array_sum12_3clocals_3e14array_sum_implB3v12B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAE5ArrayIdLi1E1C7mutable7alignedE.exit.loopexit: ; preds = %B52.endif.i
1779
+ %phi.cast = fptosi double %.239.i to i64
1780
+ br label %B472.endif
1781
+
1782
+ common.ret: ; preds = %B348.if, %B472.endif
1783
+ %common.ret.op = phi i32 [ 0, %B472.endif ], [ 1, %B348.if ]
1784
+ ret i32 %common.ret.op
1785
+
1786
+ B54.endif: ; preds = %B54.endif.preheader, %B192.else.if
1787
+ %lsr.iv129 = phi i64 [ 10, %B54.endif.preheader ], [ %lsr.iv.next130, %B192.else.if ]
1788
+ %lsr.iv127 = phi i64 [ 0, %B54.endif.preheader ], [ %lsr.iv.next128, %B192.else.if ]
1789
+ %total_sum.4.0112 = phi double [ %total_sum.5.1, %B192.else.if ], [ 0.000000e+00, %B54.endif.preheader ]
1790
+ %max_value.3.0111 = phi double [ %max_value.4.1, %B192.else.if ], [ -1.000000e+07, %B54.endif.preheader ]
1791
+ %factorial_sum.3.0110 = phi i64 [ %factorial_sum.4.1, %B192.else.if ], [ 0, %B54.endif.preheader ]
1792
+ %count_total.3.0109 = phi i64 [ %count_total.4.1, %B192.else.if ], [ 0, %B54.endif.preheader ]
1793
+ %.44.0107 = phi i64 [ %.115, %B192.else.if ], [ 1, %B54.endif.preheader ]
1794
+ %1 = udiv i64 %.44.0107, 11
1795
+ %2 = mul nuw nsw i64 %1, 11
1796
+ %3 = add nsw i64 %2, -1
1797
+ %4 = udiv i64 %.44.0107, 7
1798
+ %5 = mul nuw nsw i64 %4, 7
1799
+ %6 = add nsw i64 %5, -1
1800
+ %7 = udiv i64 %.44.0107, 5
1801
+ %8 = mul nuw nsw i64 %7, 5
1802
+ %9 = add nsw i64 %8, -1
1803
+ %10 = add i64 %lsr.iv127, 1
1804
+ %.5.i = tail call { double, double, double, i64, i64 } @cfunc._ZN8__main__5func3B3v15B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx(i64 %lsr.iv129), !noalias !17
1805
+ %.5.elt.i = extractvalue { double, double, double, i64, i64 } %.5.i, 0
1806
+ %.5.elt2.i = extractvalue { double, double, double, i64, i64 } %.5.i, 1
1807
+ %.5.elt6.i = extractvalue { double, double, double, i64, i64 } %.5.i, 3
1808
+ %.5.elt8.i = extractvalue { double, double, double, i64, i64 } %.5.i, 4
1809
+ %.194 = fadd double %total_sum.4.0112, %.5.elt.i
1810
+ %.202 = fcmp ogt double %.5.elt2.i, %max_value.3.0111
1811
+ %max_value.4.1 = select i1 %.202, double %.5.elt2.i, double %max_value.3.0111
1812
+ %.220 = add nsw i64 %.5.elt6.i, %factorial_sum.3.0110
1813
+ %.230 = add nsw i64 %.5.elt8.i, %count_total.3.0109
1814
+ %.281 = icmp eq i64 %9, %lsr.iv127
1815
+ %.284 = fmul double %.194, 0x3FEE666666666666
1816
+ %total_sum.5.1 = select i1 %.281, double %.284, double %.194
1817
+ %.339 = icmp eq i64 %6, %lsr.iv127
1818
+ br i1 %.339, label %B182.else.if, label %B192.else.if
1819
+
1820
+ B182.else.if: ; preds = %B54.endif
1821
+ %.362 = sdiv i64 %.220, 2
1822
+ %11 = and i64 %.220, -9223372036854775807
1823
+ %.365 = icmp eq i64 %11, -9223372036854775807
1824
+ %.372 = sext i1 %.365 to i64
1825
+ %spec.select92 = add nsw i64 %.362, %.372
1826
+ br label %B192.else.if
1827
+
1828
+ B192.else.if: ; preds = %B182.else.if, %B54.endif
1829
+ %factorial_sum.4.1 = phi i64 [ %.220, %B54.endif ], [ %spec.select92, %B182.else.if ]
1830
+ %.434 = icmp eq i64 %3, %lsr.iv127
1831
+ %.191.i = mul nsw i64 %10, %10
1832
+ %.473 = select i1 %.434, i64 %.191.i, i64 0
1833
+ %count_total.4.1 = add nsw i64 %.230, %.473
1834
+ %lsr.iv.next128 = add nuw nsw i64 %lsr.iv127, 1
1835
+ %lsr.iv.next130 = add i64 %lsr.iv129, 10
1836
+ %.115 = add nuw i64 %.44.0107, 1
1837
+ %exitcond119.not = icmp eq i64 %0, %lsr.iv.next128
1838
+ br i1 %exitcond119.not, label %B228.else.if, label %B54.endif
1839
+
1840
+ B228.else.if: ; preds = %B192.else.if, %B0.endif
1841
+ %count_total.3.0.lcssa = phi i64 [ 0, %B0.endif ], [ %count_total.4.1, %B192.else.if ]
1842
+ %factorial_sum.3.0.lcssa = phi i64 [ 0, %B0.endif ], [ %factorial_sum.4.1, %B192.else.if ]
1843
+ %max_value.3.0.lcssa = phi double [ -1.000000e+07, %B0.endif ], [ %max_value.4.1, %B192.else.if ]
1844
+ %total_sum.4.0.lcssa = phi double [ 0.000000e+00, %B0.endif ], [ %total_sum.5.1, %B192.else.if ]
1845
+ %.516 = sdiv i64 %arg.m, 2
1846
+ %12 = and i64 %arg.m, -9223372036854775807
1847
+ %.519 = icmp eq i64 %12, -9223372036854775807
1848
+ %.526 = sext i1 %.519 to i64
1849
+ %spec.select94 = add nsw i64 %.516, %.526
1850
+ %.618100.not = icmp slt i64 %spec.select94, 1
1851
+ br i1 %.618100.not, label %B348, label %B270.endif.preheader
1852
+
1853
+ B270.endif.preheader: ; preds = %B228.else.if
1854
+ br label %B270.endif
1855
+
1856
+ B270.endif: ; preds = %B270.endif.preheader, %B270.endif
1857
+ %lsr.iv125 = phi i64 [ 5, %B270.endif.preheader ], [ %lsr.iv.next126, %B270.endif ]
1858
+ %lsr.iv123 = phi i64 [ %spec.select94, %B270.endif.preheader ], [ %lsr.iv.next124, %B270.endif ]
1859
+ %max_value.5.0104 = phi double [ %.698, %B270.endif ], [ %max_value.3.0.lcssa, %B270.endif.preheader ]
1860
+ %total_sum.6.0103 = phi double [ %.693, %B270.endif ], [ %total_sum.4.0.lcssa, %B270.endif.preheader ]
1861
+ %.5.i1 = tail call { double, double, double, i64, i64 } @cfunc._ZN8__main__5func2B3v10B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx(i64 %lsr.iv125), !noalias !20
1862
+ %.5.elt.i3 = extractvalue { double, double, double, i64, i64 } %.5.i1, 0
1863
+ %.5.elt2.i5 = extractvalue { double, double, double, i64, i64 } %.5.i1, 1
1864
+ %.693 = fadd double %total_sum.6.0103, %.5.elt.i3
1865
+ %.697 = fcmp ogt double %.5.elt2.i5, %max_value.5.0104
1866
+ %.698 = select i1 %.697, double %.5.elt2.i5, double %max_value.5.0104
1867
+ %lsr.iv.next124 = add i64 %lsr.iv123, -1
1868
+ %lsr.iv.next126 = add i64 %lsr.iv125, 5
1869
+ %exitcond118.not = icmp eq i64 %lsr.iv.next124, 0
1870
+ br i1 %exitcond118.not, label %B348, label %B270.endif
1871
+
1872
+ B348.if: ; preds = %B0.endif.endif.endif.i.i, %B0.endif.endif.i.i, %B348
1873
+ %excinfo.1.0.ph.i = phi { i8*, i32, i8*, i8*, i32 }* [ @.const.picklebuf.4432610432, %B0.endif.endif.endif.i.i ], [ @.const.picklebuf.4433068480, %B0.endif.endif.i.i ], [ @.const.picklebuf.4433068544, %B348 ]
1874
+ store { i8*, i32, i8*, i8*, i32 }* %excinfo.1.0.ph.i, { i8*, i32, i8*, i8*, i32 }** %excinfo, align 8
1875
+ br label %common.ret
1876
+
1877
+ B348.endif.endif: ; preds = %B0.endif.endif.endif.i.i
1878
+ %13 = icmp slt i64 %arg.m, 1
1879
+ %.5.i.i.i = getelementptr i8, i8* %.7.i.i.i.i, i64 24
1880
+ %14 = bitcast i8* %.5.i.i.i to double**
1881
+ %.6.i1.i.i = load double*, double** %14, align 8, !noalias !23
1882
+ %.26.i.i = shl nuw nsw i64 %arg.m, 3
1883
+ %.27.i.i = bitcast double* %.6.i1.i.i to i8*
1884
+ tail call void @llvm.memset.p0i8.i64(i8* align 1 %.27.i.i, i8 0, i64 %.26.i.i, i1 false), !noalias !24
1885
+ br i1 %13, label %B472.endif, label %B418.endif.preheader
1886
+
1887
+ B418.endif.preheader: ; preds = %B348.endif.endif
1888
+ br label %B418.endif
1889
+
1890
+ B418.endif: ; preds = %B418.endif.preheader, %B418.endif
1891
+ %.774.098 = phi i64 [ %.843, %B418.endif ], [ 0, %B418.endif.preheader ]
1892
+ %.843 = add nuw nsw i64 %.774.098, 1
1893
+ %15 = add i64 %.774.098, 1
1894
+ %.5.i16 = tail call { double, double, double, i64, i64 } @cfunc._ZN8__main__5func1B2v3B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx(i64 %15), !noalias !27
1895
+ %.5.elt.i18 = extractvalue { double, double, double, i64, i64 } %.5.i16, 0
1896
+ %scevgep122 = getelementptr double, double* %.6.i1.i.i, i64 %.774.098
1897
+ store double %.5.elt.i18, double* %scevgep122, align 8
1898
+ %exitcond117.not = icmp eq i64 %0, %.843
1899
+ br i1 %exitcond117.not, label %B52.endif.i.preheader, label %B418.endif
1900
+
1901
+ B472.endif: ; preds = %B348.endif.endif, %_ZN5numba2np13old_arraymath9array_sum12_3clocals_3e14array_sum_implB3v12B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAE5ArrayIdLi1E1C7mutable7alignedE.exit.loopexit
1902
+ %c.2.0.lcssa.i = phi i64 [ %phi.cast, %_ZN5numba2np13old_arraymath9array_sum12_3clocals_3e14array_sum_implB3v12B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAE5ArrayIdLi1E1C7mutable7alignedE.exit.loopexit ], [ 0, %B348.endif.endif ]
1903
+ tail call void @NRT_decref(i8* nonnull %.7.i.i.i.i)
1904
+ %.993 = sitofp i64 %factorial_sum.3.0.lcssa to double
1905
+ %retptr.repack131 = bitcast { double, double, double, i64, i64 }* %retptr to double*
1906
+ store double %total_sum.6.0.lcssa, double* %retptr.repack131, align 8
1907
+ %retptr.repack54 = getelementptr inbounds { double, double, double, i64, i64 }, { double, double, double, i64, i64 }* %retptr, i64 0, i32 1
1908
+ store double %max_value.5.0.lcssa, double* %retptr.repack54, align 8
1909
+ %retptr.repack56 = getelementptr inbounds { double, double, double, i64, i64 }, { double, double, double, i64, i64 }* %retptr, i64 0, i32 2
1910
+ store double %.993, double* %retptr.repack56, align 8
1911
+ %retptr.repack58 = getelementptr inbounds { double, double, double, i64, i64 }, { double, double, double, i64, i64 }* %retptr, i64 0, i32 3
1912
+ store i64 %count_total.3.0.lcssa, i64* %retptr.repack58, align 8
1913
+ %retptr.repack60 = getelementptr inbounds { double, double, double, i64, i64 }, { double, double, double, i64, i64 }* %retptr, i64 0, i32 4
1914
+ store i64 %c.2.0.lcssa.i, i64* %retptr.repack60, align 8
1915
+ br label %common.ret
1916
+ }
1917
+
1918
+ define i8* @_ZN7cpython8__main__5func4B3v17B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx(i8* nocapture readnone %py_closure, i8* %py_args, i8* nocapture readnone %py_kws) local_unnamed_addr {
1919
+ entry:
1920
+ %.5 = alloca i8*, align 8
1921
+ %.6 = call i32 (i8*, i8*, i64, i64, ...) @PyArg_UnpackTuple(i8* %py_args, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.const.func4, i64 0, i64 0), i64 1, i64 1, i8** nonnull %.5)
1922
+ %.7 = icmp eq i32 %.6, 0
1923
+ %.36 = alloca { double, double, double, i64, i64 }, align 8
1924
+ %excinfo = alloca { i8*, i32, i8*, i8*, i32 }*, align 8
1925
+ store { i8*, i32, i8*, i8*, i32 }* null, { i8*, i32, i8*, i8*, i32 }** %excinfo, align 8
1926
+ br i1 %.7, label %common.ret, label %entry.endif, !prof !0
1927
+
1928
+ common.ret: ; preds = %entry.endif.endif.endif.endif.endif.if.endif, %entry.endif.endif.endif.endif.endif.if.endif.if, %entry.endif.endif.endif.endif.endif.endif.endif.endif, %entry.endif.endif.endif, %entry, %entry.endif.endif.endif.endif.endif.if.if.if, %entry.endif.endif.endif.endif.if.endif, %entry.endif.if
1929
+ %common.ret.op = phi i8* [ null, %entry.endif.if ], [ %.60, %entry.endif.endif.endif.endif.if.endif ], [ null, %entry.endif.endif.endif.endif.endif.if.if.if ], [ null, %entry ], [ null, %entry.endif.endif.endif ], [ null, %entry.endif.endif.endif.endif.endif.endif.endif.endif ], [ null, %entry.endif.endif.endif.endif.endif.if.endif.if ], [ null, %entry.endif.endif.endif.endif.endif.if.endif ]
1930
+ ret i8* %common.ret.op
1931
+
1932
+ entry.endif: ; preds = %entry
1933
+ %.11 = load i8*, i8** @_ZN08NumbaEnv8__main__5func4B3v17B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx, align 8
1934
+ %.16 = icmp eq i8* %.11, null
1935
+ br i1 %.16, label %entry.endif.if, label %entry.endif.endif, !prof !0
1936
+
1937
+ entry.endif.if: ; preds = %entry.endif
1938
+ call void @PyErr_SetString(i8* nonnull @PyExc_RuntimeError, i8* getelementptr inbounds ([98 x i8], [98 x i8]* @".const.missing Environment: _ZN08NumbaEnv8__main__5func4B3v17B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx", i64 0, i64 0))
1939
+ br label %common.ret
1940
+
1941
+ entry.endif.endif: ; preds = %entry.endif
1942
+ %.20 = load i8*, i8** %.5, align 8
1943
+ %.23 = call i8* @PyNumber_Long(i8* %.20)
1944
+ %.24.not = icmp eq i8* %.23, null
1945
+ br i1 %.24.not, label %entry.endif.endif.endif, label %entry.endif.endif.if, !prof !0
1946
+
1947
+ entry.endif.endif.if: ; preds = %entry.endif.endif
1948
+ %.26 = call i64 @PyLong_AsLongLong(i8* nonnull %.23)
1949
+ call void @Py_DecRef(i8* nonnull %.23)
1950
+ br label %entry.endif.endif.endif
1951
+
1952
+ entry.endif.endif.endif: ; preds = %entry.endif.endif.if, %entry.endif.endif
1953
+ %.21.0 = phi i64 [ %.26, %entry.endif.endif.if ], [ 0, %entry.endif.endif ]
1954
+ %.31 = call i8* @PyErr_Occurred()
1955
+ %.32.not = icmp eq i8* %.31, null
1956
+ br i1 %.32.not, label %entry.endif.endif.endif.endif, label %common.ret, !prof !30
1957
+
1958
+ entry.endif.endif.endif.endif: ; preds = %entry.endif.endif.endif
1959
+ %0 = bitcast { double, double, double, i64, i64 }* %.36 to i8*
1960
+ call void @llvm.memset.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(40) %0, i8 0, i64 40, i1 false)
1961
+ %.40 = call i32 @_ZN8__main__5func4B3v17B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx({ double, double, double, i64, i64 }* nonnull %.36, { i8*, i32, i8*, i8*, i32 }** nonnull %excinfo, i64 %.21.0) #2
1962
+ %.41 = load { i8*, i32, i8*, i8*, i32 }*, { i8*, i32, i8*, i8*, i32 }** %excinfo, align 8
1963
+ %.48 = icmp sgt i32 %.40, 0
1964
+ %.49 = select i1 %.48, { i8*, i32, i8*, i8*, i32 }* %.41, { i8*, i32, i8*, i8*, i32 }* undef
1965
+ switch i32 %.40, label %entry.endif.endif.endif.endif.endif [
1966
+ i32 -2, label %entry.endif.endif.endif.endif.if.endif
1967
+ i32 0, label %entry.endif.endif.endif.endif.if.endif
1968
+ ]
1969
+
1970
+ entry.endif.endif.endif.endif.endif: ; preds = %entry.endif.endif.endif.endif
1971
+ %1 = icmp sgt i32 %.40, 0
1972
+ br i1 %1, label %entry.endif.endif.endif.endif.endif.if, label %entry.endif.endif.endif.endif.endif.endif.endif.endif
1973
+
1974
+ entry.endif.endif.endif.endif.if.endif: ; preds = %entry.endif.endif.endif.endif, %entry.endif.endif.endif.endif
1975
+ %2 = bitcast { double, double, double, i64, i64 }* %.36 to double*
1976
+ %3 = bitcast { double, double, double, i64, i64 }* %.36 to i8*
1977
+ %sunkaddr = getelementptr inbounds i8, i8* %3, i64 32
1978
+ %4 = bitcast i8* %sunkaddr to i64*
1979
+ %.50.fca.4.load = load i64, i64* %4, align 8
1980
+ %5 = bitcast { double, double, double, i64, i64 }* %.36 to i8*
1981
+ %sunkaddr2 = getelementptr inbounds i8, i8* %5, i64 24
1982
+ %6 = bitcast i8* %sunkaddr2 to i64*
1983
+ %.50.fca.3.load = load i64, i64* %6, align 8
1984
+ %7 = bitcast { double, double, double, i64, i64 }* %.36 to i8*
1985
+ %sunkaddr3 = getelementptr inbounds i8, i8* %7, i64 16
1986
+ %8 = bitcast i8* %sunkaddr3 to double*
1987
+ %.50.fca.2.load = load double, double* %8, align 8
1988
+ %9 = bitcast { double, double, double, i64, i64 }* %.36 to i8*
1989
+ %sunkaddr4 = getelementptr inbounds i8, i8* %9, i64 8
1990
+ %10 = bitcast i8* %sunkaddr4 to double*
1991
+ %.50.fca.1.load = load double, double* %10, align 8
1992
+ %.50.fca.0.load = load double, double* %2, align 8
1993
+ %.60 = call i8* @PyTuple_New(i64 5)
1994
+ %.62 = call i8* @PyFloat_FromDouble(double %.50.fca.0.load)
1995
+ %.63 = call i32 @PyTuple_SetItem(i8* %.60, i64 0, i8* %.62)
1996
+ %.65 = call i8* @PyFloat_FromDouble(double %.50.fca.1.load)
1997
+ %.66 = call i32 @PyTuple_SetItem(i8* %.60, i64 1, i8* %.65)
1998
+ %.68 = call i8* @PyFloat_FromDouble(double %.50.fca.2.load)
1999
+ %.69 = call i32 @PyTuple_SetItem(i8* %.60, i64 2, i8* %.68)
2000
+ %.73 = call i8* @PyLong_FromLongLong(i64 %.50.fca.3.load)
2001
+ %.76 = call i32 @PyTuple_SetItem(i8* %.60, i64 3, i8* %.73)
2002
+ %.80 = call i8* @PyLong_FromLongLong(i64 %.50.fca.4.load)
2003
+ %.83 = call i32 @PyTuple_SetItem(i8* %.60, i64 4, i8* %.80)
2004
+ br label %common.ret
2005
+
2006
+ entry.endif.endif.endif.endif.endif.if: ; preds = %entry.endif.endif.endif.endif.endif
2007
+ call void @PyErr_Clear()
2008
+ %.88 = load { i8*, i32, i8*, i8*, i32 }, { i8*, i32, i8*, i8*, i32 }* %.49, align 8
2009
+ %.89 = extractvalue { i8*, i32, i8*, i8*, i32 } %.88, 4
2010
+ %.90 = icmp sgt i32 %.89, 0
2011
+ %.93 = extractvalue { i8*, i32, i8*, i8*, i32 } %.88, 0
2012
+ %.95 = extractvalue { i8*, i32, i8*, i8*, i32 } %.88, 1
2013
+ br i1 %.90, label %entry.endif.endif.endif.endif.endif.if.if, label %entry.endif.endif.endif.endif.endif.if.else
2014
+
2015
+ entry.endif.endif.endif.endif.endif.if.if: ; preds = %entry.endif.endif.endif.endif.endif.if
2016
+ %.96 = sext i32 %.95 to i64
2017
+ %.97 = call i8* @PyBytes_FromStringAndSize(i8* %.93, i64 %.96)
2018
+ %.98 = load { i8*, i32, i8*, i8*, i32 }, { i8*, i32, i8*, i8*, i32 }* %.49, align 8
2019
+ %.99 = extractvalue { i8*, i32, i8*, i8*, i32 } %.98, 2
2020
+ %.101 = extractvalue { i8*, i32, i8*, i8*, i32 } %.98, 3
2021
+ %.102 = bitcast i8* %.101 to i8* (i8*)*
2022
+ %.103 = call i8* %.102(i8* %.99)
2023
+ %.104 = icmp eq i8* %.103, null
2024
+ br i1 %.104, label %entry.endif.endif.endif.endif.endif.if.if.if, label %entry.endif.endif.endif.endif.endif.if.if.endif, !prof !0
2025
+
2026
+ entry.endif.endif.endif.endif.endif.if.else: ; preds = %entry.endif.endif.endif.endif.endif.if
2027
+ %.117 = extractvalue { i8*, i32, i8*, i8*, i32 } %.88, 2
2028
+ %.118 = call i8* @numba_unpickle(i8* %.93, i32 %.95, i8* %.117)
2029
+ br label %entry.endif.endif.endif.endif.endif.if.endif
2030
+
2031
+ entry.endif.endif.endif.endif.endif.if.endif: ; preds = %entry.endif.endif.endif.endif.endif.if.if.endif, %entry.endif.endif.endif.endif.endif.if.else
2032
+ %.120 = phi i8* [ %.108, %entry.endif.endif.endif.endif.endif.if.if.endif ], [ %.118, %entry.endif.endif.endif.endif.endif.if.else ]
2033
+ %.121.not = icmp eq i8* %.120, null
2034
+ br i1 %.121.not, label %common.ret, label %entry.endif.endif.endif.endif.endif.if.endif.if, !prof !0
2035
+
2036
+ entry.endif.endif.endif.endif.endif.if.if.if: ; preds = %entry.endif.endif.endif.endif.endif.if.if
2037
+ call void @PyErr_SetString(i8* nonnull @PyExc_RuntimeError, i8* getelementptr inbounds ([61 x i8], [61 x i8]* @".const.Error creating Python tuple from runtime exception arguments", i64 0, i64 0))
2038
+ br label %common.ret
2039
+
2040
+ entry.endif.endif.endif.endif.endif.if.if.endif: ; preds = %entry.endif.endif.endif.endif.endif.if.if
2041
+ %.108 = call i8* @numba_runtime_build_excinfo_struct(i8* %.97, i8* nonnull %.103)
2042
+ %.109 = bitcast { i8*, i32, i8*, i8*, i32 }* %.49 to i8*
2043
+ call void @NRT_Free(i8* nonnull %.109)
2044
+ br label %entry.endif.endif.endif.endif.endif.if.endif
2045
+
2046
+ entry.endif.endif.endif.endif.endif.if.endif.if: ; preds = %entry.endif.endif.endif.endif.endif.if.endif
2047
+ call void @numba_do_raise(i8* nonnull %.120)
2048
+ br label %common.ret
2049
+
2050
+ entry.endif.endif.endif.endif.endif.endif.endif.endif: ; preds = %entry.endif.endif.endif.endif.endif
2051
+ call void @PyErr_SetString(i8* nonnull @PyExc_SystemError, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @".const.unknown error when calling native function", i64 0, i64 0))
2052
+ br label %common.ret
2053
+ }
2054
+
2055
+ declare i32 @PyArg_UnpackTuple(i8*, i8*, i64, i64, ...) local_unnamed_addr
2056
+
2057
+ declare void @PyErr_SetString(i8*, i8*) local_unnamed_addr
2058
+
2059
+ declare i8* @PyNumber_Long(i8*) local_unnamed_addr
2060
+
2061
+ declare i64 @PyLong_AsLongLong(i8*) local_unnamed_addr
2062
+
2063
+ declare void @Py_DecRef(i8*) local_unnamed_addr
2064
+
2065
+ declare i8* @PyErr_Occurred() local_unnamed_addr
2066
+
2067
+ declare i8* @PyTuple_New(i64) local_unnamed_addr
2068
+
2069
+ declare i8* @PyFloat_FromDouble(double) local_unnamed_addr
2070
+
2071
+ declare i32 @PyTuple_SetItem(i8*, i64, i8*) local_unnamed_addr
2072
+
2073
+ declare i8* @PyLong_FromLongLong(i64) local_unnamed_addr
2074
+
2075
+ declare void @PyErr_Clear() local_unnamed_addr
2076
+
2077
+ declare i8* @PyBytes_FromStringAndSize(i8*, i64) local_unnamed_addr
2078
+
2079
+ declare i8* @numba_unpickle(i8*, i32, i8*) local_unnamed_addr
2080
+
2081
+ declare i8* @numba_runtime_build_excinfo_struct(i8*, i8*) local_unnamed_addr
2082
+
2083
+ declare void @NRT_Free(i8*) local_unnamed_addr
2084
+
2085
+ declare void @numba_do_raise(i8*) local_unnamed_addr
2086
+
2087
+ define { double, double, double, i64, i64 } @cfunc._ZN8__main__5func4B3v17B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx(i64 %.1) local_unnamed_addr {
2088
+ entry:
2089
+ %.3 = alloca { double, double, double, i64, i64 }, align 8
2090
+ %.fca.0.gep1 = bitcast { double, double, double, i64, i64 }* %.3 to double*
2091
+ %.fca.1.gep = getelementptr inbounds { double, double, double, i64, i64 }, { double, double, double, i64, i64 }* %.3, i64 0, i32 1
2092
+ %.fca.2.gep = getelementptr inbounds { double, double, double, i64, i64 }, { double, double, double, i64, i64 }* %.3, i64 0, i32 2
2093
+ %.fca.3.gep = getelementptr inbounds { double, double, double, i64, i64 }, { double, double, double, i64, i64 }* %.3, i64 0, i32 3
2094
+ %.fca.4.gep = getelementptr inbounds { double, double, double, i64, i64 }, { double, double, double, i64, i64 }* %.3, i64 0, i32 4
2095
+ %excinfo = alloca { i8*, i32, i8*, i8*, i32 }*, align 8
2096
+ %0 = bitcast { double, double, double, i64, i64 }* %.3 to i8*
2097
+ call void @llvm.memset.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(40) %0, i8 0, i64 40, i1 false)
2098
+ store { i8*, i32, i8*, i8*, i32 }* null, { i8*, i32, i8*, i8*, i32 }** %excinfo, align 8
2099
+ %.7 = call i32 @_ZN8__main__5func4B3v17B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx({ double, double, double, i64, i64 }* nonnull %.3, { i8*, i32, i8*, i8*, i32 }** nonnull %excinfo, i64 %.1) #2
2100
+ %.8 = load { i8*, i32, i8*, i8*, i32 }*, { i8*, i32, i8*, i8*, i32 }** %excinfo, align 8
2101
+ %.9.not = icmp eq i32 %.7, 0
2102
+ %.15 = icmp sgt i32 %.7, 0
2103
+ %.16 = select i1 %.15, { i8*, i32, i8*, i8*, i32 }* %.8, { i8*, i32, i8*, i8*, i32 }* undef
2104
+ %.17.fca.0.load = load double, double* %.fca.0.gep1, align 8
2105
+ %.17.fca.1.load = load double, double* %.fca.1.gep, align 8
2106
+ %.17.fca.2.load = load double, double* %.fca.2.gep, align 8
2107
+ %.17.fca.3.load = load i64, i64* %.fca.3.gep, align 8
2108
+ %.17.fca.4.load = load i64, i64* %.fca.4.gep, align 8
2109
+ %inserted.f0 = insertvalue { double, double, double, i64, i64 } undef, double %.17.fca.0.load, 0
2110
+ %inserted.f1 = insertvalue { double, double, double, i64, i64 } %inserted.f0, double %.17.fca.1.load, 1
2111
+ %inserted.f2 = insertvalue { double, double, double, i64, i64 } %inserted.f1, double %.17.fca.2.load, 2
2112
+ %inserted.f3 = insertvalue { double, double, double, i64, i64 } %inserted.f2, i64 %.17.fca.3.load, 3
2113
+ %inserted.f4 = insertvalue { double, double, double, i64, i64 } %inserted.f3, i64 %.17.fca.4.load, 4
2114
+ %.24 = alloca i32, align 4
2115
+ store i32 0, i32* %.24, align 4
2116
+ br i1 %.9.not, label %common.ret, label %entry.if, !prof !30
2117
+
2118
+ entry.if: ; preds = %entry
2119
+ %1 = icmp sgt i32 %.7, 0
2120
+ call void @numba_gil_ensure(i32* nonnull %.24)
2121
+ br i1 %1, label %entry.if.if, label %entry.if.endif.endif.endif
2122
+
2123
+ common.ret: ; preds = %entry, %.27, %entry.if.if.if.if
2124
+ %common.ret.op = phi { double, double, double, i64, i64 } [ zeroinitializer, %entry.if.if.if.if ], [ %inserted.f4, %.27 ], [ %inserted.f4, %entry ]
2125
+ ret { double, double, double, i64, i64 } %common.ret.op
2126
+
2127
+ .27: ; preds = %entry.if.if.endif, %entry.if.if.endif.if, %entry.if.endif.endif.endif
2128
+ %.75 = call i8* @PyUnicode_FromString(i8* getelementptr inbounds ([50 x i8], [50 x i8]* @".const.<numba.core.cpu.CPUContext object at 0x1089cca10>", i64 0, i64 0))
2129
+ call void @PyErr_WriteUnraisable(i8* %.75)
2130
+ call void @Py_DecRef(i8* %.75)
2131
+ call void @numba_gil_release(i32* nonnull %.24)
2132
+ br label %common.ret
2133
+
2134
+ entry.if.if: ; preds = %entry.if
2135
+ call void @PyErr_Clear()
2136
+ %.30 = load { i8*, i32, i8*, i8*, i32 }, { i8*, i32, i8*, i8*, i32 }* %.16, align 8
2137
+ %.31 = extractvalue { i8*, i32, i8*, i8*, i32 } %.30, 4
2138
+ %.32 = icmp sgt i32 %.31, 0
2139
+ %.35 = extractvalue { i8*, i32, i8*, i8*, i32 } %.30, 0
2140
+ %.37 = extractvalue { i8*, i32, i8*, i8*, i32 } %.30, 1
2141
+ br i1 %.32, label %entry.if.if.if, label %entry.if.if.else
2142
+
2143
+ entry.if.if.if: ; preds = %entry.if.if
2144
+ %.38 = sext i32 %.37 to i64
2145
+ %.39 = call i8* @PyBytes_FromStringAndSize(i8* %.35, i64 %.38)
2146
+ %.40 = load { i8*, i32, i8*, i8*, i32 }, { i8*, i32, i8*, i8*, i32 }* %.16, align 8
2147
+ %.41 = extractvalue { i8*, i32, i8*, i8*, i32 } %.40, 2
2148
+ %.43 = extractvalue { i8*, i32, i8*, i8*, i32 } %.40, 3
2149
+ %.44 = bitcast i8* %.43 to i8* (i8*)*
2150
+ %.45 = call i8* %.44(i8* %.41)
2151
+ %.46 = icmp eq i8* %.45, null
2152
+ br i1 %.46, label %entry.if.if.if.if, label %entry.if.if.if.endif, !prof !0
2153
+
2154
+ entry.if.if.else: ; preds = %entry.if.if
2155
+ %.59 = extractvalue { i8*, i32, i8*, i8*, i32 } %.30, 2
2156
+ %.60 = call i8* @numba_unpickle(i8* %.35, i32 %.37, i8* %.59)
2157
+ br label %entry.if.if.endif
2158
+
2159
+ entry.if.if.endif: ; preds = %entry.if.if.if.endif, %entry.if.if.else
2160
+ %.62 = phi i8* [ %.50, %entry.if.if.if.endif ], [ %.60, %entry.if.if.else ]
2161
+ %.63.not = icmp eq i8* %.62, null
2162
+ br i1 %.63.not, label %.27, label %entry.if.if.endif.if, !prof !0
2163
+
2164
+ entry.if.if.if.if: ; preds = %entry.if.if.if
2165
+ call void @PyErr_SetString(i8* nonnull @PyExc_RuntimeError, i8* getelementptr inbounds ([61 x i8], [61 x i8]* @".const.Error creating Python tuple from runtime exception arguments.1", i64 0, i64 0))
2166
+ br label %common.ret
2167
+
2168
+ entry.if.if.if.endif: ; preds = %entry.if.if.if
2169
+ %.50 = call i8* @numba_runtime_build_excinfo_struct(i8* %.39, i8* nonnull %.45)
2170
+ %.51 = bitcast { i8*, i32, i8*, i8*, i32 }* %.16 to i8*
2171
+ call void @NRT_Free(i8* nonnull %.51)
2172
+ br label %entry.if.if.endif
2173
+
2174
+ entry.if.if.endif.if: ; preds = %entry.if.if.endif
2175
+ call void @numba_do_raise(i8* nonnull %.62)
2176
+ br label %.27
2177
+
2178
+ entry.if.endif.endif.endif: ; preds = %entry.if
2179
+ call void @PyErr_SetString(i8* nonnull @PyExc_SystemError, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @".const.unknown error when calling native function.2", i64 0, i64 0))
2180
+ br label %.27
2181
+ }
2182
+
2183
+ declare void @numba_gil_ensure(i32*) local_unnamed_addr
2184
+
2185
+ declare i8* @PyUnicode_FromString(i8*) local_unnamed_addr
2186
+
2187
+ declare void @PyErr_WriteUnraisable(i8*) local_unnamed_addr
2188
+
2189
+ declare void @numba_gil_release(i32*) local_unnamed_addr
2190
+
2191
+ declare { double, double, double, i64, i64 } @cfunc._ZN8__main__5func3B3v15B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx(i64) local_unnamed_addr
2192
+
2193
+ declare { double, double, double, i64, i64 } @cfunc._ZN8__main__5func2B3v10B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx(i64) local_unnamed_addr
2194
+
2195
+ ; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn
2196
+ declare { i64, i1 } @llvm.smul.with.overflow.i64(i64, i64) #0
2197
+
2198
+ declare noalias i8* @NRT_MemInfo_alloc_aligned(i64, i32) local_unnamed_addr
2199
+
2200
+ ; Function Attrs: argmemonly mustprogress nocallback nofree nounwind willreturn writeonly
2201
+ declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i1 immarg) #1
2202
+
2203
+ declare { double, double, double, i64, i64 } @cfunc._ZN8__main__5func1B2v3B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx(i64) local_unnamed_addr
2204
+
2205
+ ; Function Attrs: noinline
2206
+ define linkonce_odr void @NRT_decref(i8* %.1) local_unnamed_addr #2 {
2207
+ .3:
2208
+ %.4 = icmp eq i8* %.1, null
2209
+ br i1 %.4, label %common.ret1, label %.3.endif, !prof !0
2210
+
2211
+ common.ret1: ; preds = %.3, %.3.endif
2212
+ ret void
2213
+
2214
+ .3.endif: ; preds = %.3
2215
+ fence release
2216
+ %.8 = bitcast i8* %.1 to i64*
2217
+ %.4.i = atomicrmw sub i64* %.8, i64 1 monotonic, align 8
2218
+ %.10 = icmp eq i64 %.4.i, 1
2219
+ br i1 %.10, label %.3.endif.if, label %common.ret1, !prof !0
2220
+
2221
+ .3.endif.if: ; preds = %.3.endif
2222
+ fence acquire
2223
+ tail call void @NRT_MemInfo_call_dtor(i8* nonnull %.1)
2224
+ ret void
2225
+ }
2226
+
2227
+ declare void @NRT_MemInfo_call_dtor(i8*) local_unnamed_addr
2228
+
2229
+ ; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn
2230
+ declare i64 @llvm.smax.i64(i64, i64) #3
2231
+
2232
+ attributes #0 = { mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn }
2233
+ attributes #1 = { argmemonly mustprogress nocallback nofree nounwind willreturn writeonly }
2234
+ attributes #2 = { noinline }
2235
+ attributes #3 = { nocallback nofree nosync nounwind readnone speculatable willreturn }
2236
+
2237
+ !0 = !{!"branch_weights", i32 1, i32 99}
2238
+ !1 = !{!2, !4, !5, !7, !8, !10, !11, !13}
2239
+ !2 = distinct !{!2, !3, !"_ZN5numba2np8arrayobj18_ol_array_allocate12_3clocals_3e4implB2v7B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj: %retptr"}
2240
+ !3 = distinct !{!3, !"_ZN5numba2np8arrayobj18_ol_array_allocate12_3clocals_3e4implB2v7B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj"}
2241
+ !4 = distinct !{!4, !3, !"_ZN5numba2np8arrayobj18_ol_array_allocate12_3clocals_3e4implB2v7B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj: %excinfo"}
2242
+ !5 = distinct !{!5, !6, !"_ZN5numba2np8arrayobj15_call_allocatorB2v6B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj: %retptr"}
2243
+ !6 = distinct !{!6, !"_ZN5numba2np8arrayobj15_call_allocatorB2v6B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj"}
2244
+ !7 = distinct !{!7, !6, !"_ZN5numba2np8arrayobj15_call_allocatorB2v6B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj: %excinfo"}
2245
+ !8 = distinct !{!8, !9, !"_ZN5numba2np8arrayobj11ol_np_empty12_3clocals_3e4implB2v5B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx39Function_28_3cclass_20_27float_27_3e_29: %retptr"}
2246
+ !9 = distinct !{!9, !"_ZN5numba2np8arrayobj11ol_np_empty12_3clocals_3e4implB2v5B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx39Function_28_3cclass_20_27float_27_3e_29"}
2247
+ !10 = distinct !{!10, !9, !"_ZN5numba2np8arrayobj11ol_np_empty12_3clocals_3e4implB2v5B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx39Function_28_3cclass_20_27float_27_3e_29: %excinfo"}
2248
+ !11 = distinct !{!11, !12, !"_ZN5numba2np8arrayobj11ol_np_zeros12_3clocals_3e4implB2v4B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx48omitted_28default_3d_3cclass_20_27float_27_3e_29: %retptr"}
2249
+ !12 = distinct !{!12, !"_ZN5numba2np8arrayobj11ol_np_zeros12_3clocals_3e4implB2v4B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx48omitted_28default_3d_3cclass_20_27float_27_3e_29"}
2250
+ !13 = distinct !{!13, !12, !"_ZN5numba2np8arrayobj11ol_np_zeros12_3clocals_3e4implB2v4B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEx48omitted_28default_3d_3cclass_20_27float_27_3e_29: %excinfo"}
2251
+ !14 = !{!15}
2252
+ !15 = distinct !{!15, !16, !"_ZN5numba2np13old_arraymath9array_sum12_3clocals_3e14array_sum_implB3v12B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAE5ArrayIdLi1E1C7mutable7alignedE: %retptr"}
2253
+ !16 = distinct !{!16, !"_ZN5numba2np13old_arraymath9array_sum12_3clocals_3e14array_sum_implB3v12B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAE5ArrayIdLi1E1C7mutable7alignedE"}
2254
+ !17 = !{!18}
2255
+ !18 = distinct !{!18, !19, !"_ZN8__main__7__func3B3v16B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx: %retptr"}
2256
+ !19 = distinct !{!19, !"_ZN8__main__7__func3B3v16B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx"}
2257
+ !20 = !{!21}
2258
+ !21 = distinct !{!21, !22, !"_ZN8__main__7__func2B3v14B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx: %retptr"}
2259
+ !22 = distinct !{!22, !"_ZN8__main__7__func2B3v14B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx"}
2260
+ !23 = !{!8, !10, !11, !13}
2261
+ !24 = !{!25, !11, !13}
2262
+ !25 = distinct !{!25, !26, !"_ZN5numba2np8arrayobj18ol_array_zero_fill12_3clocals_3e4implB2v8B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dE5ArrayIdLi1E1C7mutable7alignedE: %retptr"}
2263
+ !26 = distinct !{!26, !"_ZN5numba2np8arrayobj18ol_array_zero_fill12_3clocals_3e4implB2v8B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dE5ArrayIdLi1E1C7mutable7alignedE"}
2264
+ !27 = !{!28}
2265
+ !28 = distinct !{!28, !29, !"_ZN8__main__7__func1B2v9B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx: %retptr"}
2266
+ !29 = distinct !{!29, !"_ZN8__main__7__func1B2v9B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dEx"}
2267
+ !30 = !{!"branch_weights", i32 99, i32 1}
2268
+
2269
+
2270
+ """