Setting cache=True with a recursive function results in Segmentation fault
See original GitHub issue- I have tried using the latest released version of Numba
- I have included below a minimal working reproducer
When using numba with a function that calls itself and caching is set to True, numba crashes hard when the cache is not empty (i.e. if the same file is ran twice). In the minimal example below, the recursion can only ever happen to a depth of 1. I am happy with the workaround of disabling caching on functions with this issue, but I hope this is a bug report that the numba project finds useful.
import numba
@numba.njit(cache=True)
def temperature_effectiveness_plate(R1, NTU1, Np1, Np2, reverse=False):
if Np1 == 1 and Np2 == 1:
return 1.1
if not reverse:
R2 = 1./R1
NTU2 = NTU1*R1
P2 = temperature_effectiveness_plate(R1=R2, NTU1=NTU2, Np1=Np2, Np2=Np1,
reverse=True)
return 1.3
raise ValueError('Supported number of passes does not have a formula available')
print(temperature_effectiveness_plate(R1=1/3., NTU1=1., Np1=1, Np2=1))
Full output with NUMBA_DEBUG=1 on the second run (with the crash):
/home/caleb/.local/lib/python3.7/site-packages/numba/__init__.py:188: UserWarning: SVML was not found/could not be loaded.
warnings.warn("SVML was not found/could not be loaded.")
================================================================================
--------------------------FUNCTION OPTIMIZED DUMP nrt---------------------------
; ModuleID = 'nrt'
source_filename = "<string>"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
@.const.picklebuf.139700511148704 = internal constant { i8*, i32 } { i8* getelementptr inbounds ([102 x i8], [102 x i8]* @.const.pickledata.139700511148704, i32 0, i32 0), i32 102 }
@.const.pickledata.139700511148704 = internal constant [102 x i8] c"\80\04\95[\00\00\00\00\00\00\00\8C\08builtins\94\8C\0CRuntimeError\94\93\94\8C6numba jitted function aborted due to unresolved symbol\94\85\94N\87\94."
define i64 @nrt_atomic_add(i64* %.1) {
.3:
%.4 = atomicrmw add i64* %.1, i64 1 monotonic
%.5 = add i64 %.4, 1
ret i64 %.5
}
define i64 @nrt_atomic_sub(i64* %.1) {
.3:
%.4 = atomicrmw sub i64* %.1, i64 1 monotonic
%.5 = sub i64 %.4, 1
ret i64 %.5
}
define i32 @nrt_atomic_cas(i64* %.1, i64 %.2, i64 %.3, i64* %.4) {
.6:
%.7 = cmpxchg i64* %.1, i64 %.2, i64 %.3 monotonic monotonic
%.8 = extractvalue { i64, i1 } %.7, 0
%.9 = extractvalue { i64, i1 } %.7, 1
store i64 %.8, i64* %.4
%.11 = zext i1 %.9 to i32
ret i32 %.11
}
define i8* @NRT_MemInfo_data_fast(i8* %.1) {
.3:
%.4 = bitcast i8* %.1 to { i64, i8*, i8*, i8*, i64 }*
%.5 = getelementptr { i64, i8*, i8*, i8*, i64 }, { i64, i8*, i8*, i8*, i64 }* %.4, i32 0, i32 3
%.6 = load i8*, i8** %.5
ret i8* %.6
}
; Function Attrs: noinline
define void @NRT_incref(i8* %.1) #0 {
.3:
%.4 = icmp eq i8* %.1, null
br i1 %.4, label %.3.if, label %.3.endif, !prof !0
.3.if: ; preds = %.3
ret void
.3.endif: ; preds = %.3
%.7 = bitcast i8* %.1 to i64*
%.8 = call i64 @nrt_atomic_add(i64* %.7)
ret void
}
; Function Attrs: noinline
define void @NRT_decref(i8* %.1) #0 {
.3:
%.4 = icmp eq i8* %.1, null
br i1 %.4, label %.3.if, label %.3.endif, !prof !0
.3.if: ; preds = %.3.endif.if, %.3.endif, %.3
ret void
.3.endif: ; preds = %.3
fence release
%.8 = bitcast i8* %.1 to i64*
%.9 = call i64 @nrt_atomic_sub(i64* %.8)
%.10 = icmp eq i64 %.9, 0
br i1 %.10, label %.3.endif.if, label %.3.if, !prof !0
.3.endif.if: ; preds = %.3.endif
fence acquire
call void @NRT_MemInfo_call_dtor(i8* %.1)
br label %.3.if
}
declare void @NRT_MemInfo_call_dtor(i8*)
define i32 @nrt_unresolved_abort(i8** %.1, { i8*, i32 }** %.2) {
.4:
store { i8*, i32 }* @.const.picklebuf.139700511148704, { i8*, i32 }** %.2
ret i32 1
}
attributes #0 = { noinline }
!0 = !{!"branch_weights", i32 1, i32 99}
================================================================================
================================================================================
-------------------------------OPTIMIZED DUMP nrt-------------------------------
; ModuleID = 'nrt'
source_filename = "<string>"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
@.const.picklebuf.139700511148704 = internal constant { i8*, i32 } { i8* getelementptr inbounds ([102 x i8], [102 x i8]* @.const.pickledata.139700511148704, i32 0, i32 0), i32 102 }
@.const.pickledata.139700511148704 = internal constant [102 x i8] c"\80\04\95[\00\00\00\00\00\00\00\8C\08builtins\94\8C\0CRuntimeError\94\93\94\8C6numba jitted function aborted due to unresolved symbol\94\85\94N\87\94."
; Function Attrs: nofree norecurse nounwind
define i64 @nrt_atomic_add(i64* nocapture %.1) local_unnamed_addr #0 {
.3:
%.4 = atomicrmw add i64* %.1, i64 1 monotonic
%.5 = add i64 %.4, 1
ret i64 %.5
}
; Function Attrs: nofree norecurse nounwind
define i64 @nrt_atomic_sub(i64* nocapture %.1) local_unnamed_addr #0 {
.3:
%.4 = atomicrmw sub i64* %.1, i64 1 monotonic
%.5 = add i64 %.4, -1
ret i64 %.5
}
; Function Attrs: nofree norecurse nounwind
define i32 @nrt_atomic_cas(i64* nocapture %.1, i64 %.2, i64 %.3, i64* nocapture %.4) local_unnamed_addr #0 {
.6:
%.7 = cmpxchg i64* %.1, i64 %.2, i64 %.3 monotonic monotonic
%.8 = extractvalue { i64, i1 } %.7, 0
%.9 = extractvalue { i64, i1 } %.7, 1
store i64 %.8, i64* %.4, align 8
%.11 = zext i1 %.9 to i32
ret i32 %.11
}
; Function Attrs: norecurse nounwind readonly
define i8* @NRT_MemInfo_data_fast(i8* nocapture readonly %.1) local_unnamed_addr #1 {
.3:
%.5 = getelementptr i8, i8* %.1, i64 24
%0 = bitcast i8* %.5 to i8**
%.6 = load i8*, i8** %0, align 8
ret i8* %.6
}
; Function Attrs: nofree noinline norecurse nounwind
define void @NRT_incref(i8* %.1) local_unnamed_addr #2 {
.3:
%.4 = icmp eq i8* %.1, null
br i1 %.4, label %.3.if, label %.3.endif, !prof !0
.3.if: ; preds = %.3
ret void
.3.endif: ; preds = %.3
%.7 = bitcast i8* %.1 to i64*
%.4.i = atomicrmw add i64* %.7, i64 1 monotonic
ret void
}
; Function Attrs: noinline
define void @NRT_decref(i8* %.1) local_unnamed_addr #3 {
.3:
%.4 = icmp eq i8* %.1, null
br i1 %.4, label %.3.if, label %.3.endif, !prof !0
.3.if: ; preds = %.3.endif, %.3
ret void
.3.endif: ; preds = %.3
fence release
%.8 = bitcast i8* %.1 to i64*
%.4.i = atomicrmw sub i64* %.8, i64 1 monotonic
%.10 = icmp eq i64 %.4.i, 1
br i1 %.10, label %.3.endif.if, label %.3.if, !prof !0
.3.endif.if: ; preds = %.3.endif
fence acquire
tail call void @NRT_MemInfo_call_dtor(i8* nonnull %.1)
ret void
}
declare void @NRT_MemInfo_call_dtor(i8*) local_unnamed_addr
; Function Attrs: nofree norecurse nounwind writeonly
define i32 @nrt_unresolved_abort(i8** nocapture readnone %.1, { i8*, i32 }** nocapture %.2) local_unnamed_addr #4 {
.4:
store { i8*, i32 }* @.const.picklebuf.139700511148704, { i8*, i32 }** %.2, align 8
ret i32 1
}
; Function Attrs: nounwind
declare void @llvm.stackprotector(i8*, i8**) #5
attributes #0 = { nofree norecurse nounwind }
attributes #1 = { norecurse nounwind readonly }
attributes #2 = { nofree noinline norecurse nounwind }
attributes #3 = { noinline }
attributes #4 = { nofree norecurse nounwind writeonly }
attributes #5 = { nounwind }
!0 = !{!"branch_weights", i32 1, i32 99}
================================================================================
================================================================================
----------------------------------ASSEMBLY nrt----------------------------------
.text
.file "<string>"
.globl nrt_atomic_add
.p2align 4, 0x90
.type nrt_atomic_add,@function
nrt_atomic_add:
movl $1, %eax
lock xaddq %rax, (%rdi)
incq %rax
retq
.Lfunc_end0:
.size nrt_atomic_add, .Lfunc_end0-nrt_atomic_add
.globl nrt_atomic_sub
.p2align 4, 0x90
.type nrt_atomic_sub,@function
nrt_atomic_sub:
movq $-1, %rax
lock xaddq %rax, (%rdi)
decq %rax
retq
.Lfunc_end1:
.size nrt_atomic_sub, .Lfunc_end1-nrt_atomic_sub
.globl nrt_atomic_cas
.p2align 4, 0x90
.type nrt_atomic_cas,@function
nrt_atomic_cas:
movq %rsi, %rax
xorl %esi, %esi
lock cmpxchgq %rdx, (%rdi)
sete %sil
movq %rax, (%rcx)
movl %esi, %eax
retq
.Lfunc_end2:
.size nrt_atomic_cas, .Lfunc_end2-nrt_atomic_cas
.globl NRT_MemInfo_data_fast
.p2align 4, 0x90
.type NRT_MemInfo_data_fast,@function
NRT_MemInfo_data_fast:
movq 24(%rdi), %rax
retq
.Lfunc_end3:
.size NRT_MemInfo_data_fast, .Lfunc_end3-NRT_MemInfo_data_fast
.globl NRT_incref
.p2align 4, 0x90
.type NRT_incref,@function
NRT_incref:
testq %rdi, %rdi
je .LBB4_1
lock incq (%rdi)
retq
.LBB4_1:
retq
.Lfunc_end4:
.size NRT_incref, .Lfunc_end4-NRT_incref
.globl NRT_decref
.p2align 4, 0x90
.type NRT_decref,@function
NRT_decref:
.cfi_startproc
testq %rdi, %rdi
je .LBB5_2
#MEMBARRIER
lock decq (%rdi)
je .LBB5_3
.LBB5_2:
retq
.LBB5_3:
#MEMBARRIER
movabsq $NRT_MemInfo_call_dtor, %rax
jmpq *%rax
.Lfunc_end5:
.size NRT_decref, .Lfunc_end5-NRT_decref
.cfi_endproc
.globl nrt_unresolved_abort
.p2align 4, 0x90
.type nrt_unresolved_abort,@function
nrt_unresolved_abort:
movabsq $.const.picklebuf.139700511148704, %rax
movq %rax, (%rsi)
movl $1, %eax
retq
.Lfunc_end6:
.size nrt_unresolved_abort, .Lfunc_end6-nrt_unresolved_abort
.type .const.picklebuf.139700511148704,@object
.section .rodata,"a",@progbits
.p2align 3
.const.picklebuf.139700511148704:
.quad .const.pickledata.139700511148704
.long 102
.zero 4
.size .const.picklebuf.139700511148704, 16
.type .const.pickledata.139700511148704,@object
.p2align 4
.const.pickledata.139700511148704:
.ascii "\200\004\225[\000\000\000\000\000\000\000\214\bbuiltins\224\214\fRuntimeError\224\223\224\2146numba jitted function aborted due to unresolved symbol\224\205\224N\207\224."
.size .const.pickledata.139700511148704, 102
.section ".note.GNU-stack","",@progbits
================================================================================
[cache] index loaded from '__pycache__/issue2_minimal.temperature_effectiveness_plate-3.py37m.nbi'
[cache] data loaded from '__pycache__/issue2_minimal.temperature_effectiveness_plate-3.py37m.2.nbc'
/home/caleb/.local/lib/python3.7/site-packages/numba/core/codegen.py:309: UserWarning: Inspection disabled for cached code. Invalid result is returned.
warnings.warn('Inspection disabled for cached code. '
================================================================================
-----------------OPTIMIZED DUMP temperature_effectiveness_plate-----------------
; ModuleID = 'temperature_effectiveness_plate'
source_filename = "<string>"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
================================================================================
================================================================================
--------------------ASSEMBLY temperature_effectiveness_plate--------------------
.text
.file "<string>"
.section ".note.GNU-stack","",@progbits
================================================================================
Segmentation fault
Full output with NUMBA_DEBUG=1 on the first run (without the crash):
/home/caleb/.local/lib/python3.7/site-packages/numba/__init__.py:188: UserWarning: SVML was not found/could not be loaded.
warnings.warn("SVML was not found/could not be loaded.")
================================================================================
--------------------------FUNCTION OPTIMIZED DUMP nrt---------------------------
; ModuleID = 'nrt'
source_filename = "<string>"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
@.const.picklebuf.140612176063216 = internal constant { i8*, i32 } { i8* getelementptr inbounds ([102 x i8], [102 x i8]* @.const.pickledata.140612176063216, i32 0, i32 0), i32 102 }
@.const.pickledata.140612176063216 = internal constant [102 x i8] c"\80\04\95[\00\00\00\00\00\00\00\8C\08builtins\94\8C\0CRuntimeError\94\93\94\8C6numba jitted function aborted due to unresolved symbol\94\85\94N\87\94."
define i64 @nrt_atomic_add(i64* %.1) {
.3:
%.4 = atomicrmw add i64* %.1, i64 1 monotonic
%.5 = add i64 %.4, 1
ret i64 %.5
}
define i64 @nrt_atomic_sub(i64* %.1) {
.3:
%.4 = atomicrmw sub i64* %.1, i64 1 monotonic
%.5 = sub i64 %.4, 1
ret i64 %.5
}
define i32 @nrt_atomic_cas(i64* %.1, i64 %.2, i64 %.3, i64* %.4) {
.6:
%.7 = cmpxchg i64* %.1, i64 %.2, i64 %.3 monotonic monotonic
%.8 = extractvalue { i64, i1 } %.7, 0
%.9 = extractvalue { i64, i1 } %.7, 1
store i64 %.8, i64* %.4
%.11 = zext i1 %.9 to i32
ret i32 %.11
}
define i8* @NRT_MemInfo_data_fast(i8* %.1) {
.3:
%.4 = bitcast i8* %.1 to { i64, i8*, i8*, i8*, i64 }*
%.5 = getelementptr { i64, i8*, i8*, i8*, i64 }, { i64, i8*, i8*, i8*, i64 }* %.4, i32 0, i32 3
%.6 = load i8*, i8** %.5
ret i8* %.6
}
; Function Attrs: noinline
define void @NRT_incref(i8* %.1) #0 {
.3:
%.4 = icmp eq i8* %.1, null
br i1 %.4, label %.3.if, label %.3.endif, !prof !0
.3.if: ; preds = %.3
ret void
.3.endif: ; preds = %.3
%.7 = bitcast i8* %.1 to i64*
%.8 = call i64 @nrt_atomic_add(i64* %.7)
ret void
}
; Function Attrs: noinline
define void @NRT_decref(i8* %.1) #0 {
.3:
%.4 = icmp eq i8* %.1, null
br i1 %.4, label %.3.if, label %.3.endif, !prof !0
.3.if: ; preds = %.3.endif.if, %.3.endif, %.3
ret void
.3.endif: ; preds = %.3
fence release
%.8 = bitcast i8* %.1 to i64*
%.9 = call i64 @nrt_atomic_sub(i64* %.8)
%.10 = icmp eq i64 %.9, 0
br i1 %.10, label %.3.endif.if, label %.3.if, !prof !0
.3.endif.if: ; preds = %.3.endif
fence acquire
call void @NRT_MemInfo_call_dtor(i8* %.1)
br label %.3.if
}
declare void @NRT_MemInfo_call_dtor(i8*)
define i32 @nrt_unresolved_abort(i8** %.1, { i8*, i32 }** %.2) {
.4:
store { i8*, i32 }* @.const.picklebuf.140612176063216, { i8*, i32 }** %.2
ret i32 1
}
attributes #0 = { noinline }
!0 = !{!"branch_weights", i32 1, i32 99}
================================================================================
================================================================================
-------------------------------OPTIMIZED DUMP nrt-------------------------------
; ModuleID = 'nrt'
source_filename = "<string>"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
@.const.picklebuf.140612176063216 = internal constant { i8*, i32 } { i8* getelementptr inbounds ([102 x i8], [102 x i8]* @.const.pickledata.140612176063216, i32 0, i32 0), i32 102 }
@.const.pickledata.140612176063216 = internal constant [102 x i8] c"\80\04\95[\00\00\00\00\00\00\00\8C\08builtins\94\8C\0CRuntimeError\94\93\94\8C6numba jitted function aborted due to unresolved symbol\94\85\94N\87\94."
; Function Attrs: nofree norecurse nounwind
define i64 @nrt_atomic_add(i64* nocapture %.1) local_unnamed_addr #0 {
.3:
%.4 = atomicrmw add i64* %.1, i64 1 monotonic
%.5 = add i64 %.4, 1
ret i64 %.5
}
; Function Attrs: nofree norecurse nounwind
define i64 @nrt_atomic_sub(i64* nocapture %.1) local_unnamed_addr #0 {
.3:
%.4 = atomicrmw sub i64* %.1, i64 1 monotonic
%.5 = add i64 %.4, -1
ret i64 %.5
}
; Function Attrs: nofree norecurse nounwind
define i32 @nrt_atomic_cas(i64* nocapture %.1, i64 %.2, i64 %.3, i64* nocapture %.4) local_unnamed_addr #0 {
.6:
%.7 = cmpxchg i64* %.1, i64 %.2, i64 %.3 monotonic monotonic
%.8 = extractvalue { i64, i1 } %.7, 0
%.9 = extractvalue { i64, i1 } %.7, 1
store i64 %.8, i64* %.4, align 8
%.11 = zext i1 %.9 to i32
ret i32 %.11
}
; Function Attrs: norecurse nounwind readonly
define i8* @NRT_MemInfo_data_fast(i8* nocapture readonly %.1) local_unnamed_addr #1 {
.3:
%.5 = getelementptr i8, i8* %.1, i64 24
%0 = bitcast i8* %.5 to i8**
%.6 = load i8*, i8** %0, align 8
ret i8* %.6
}
; Function Attrs: nofree noinline norecurse nounwind
define void @NRT_incref(i8* %.1) local_unnamed_addr #2 {
.3:
%.4 = icmp eq i8* %.1, null
br i1 %.4, label %.3.if, label %.3.endif, !prof !0
.3.if: ; preds = %.3
ret void
.3.endif: ; preds = %.3
%.7 = bitcast i8* %.1 to i64*
%.4.i = atomicrmw add i64* %.7, i64 1 monotonic
ret void
}
; Function Attrs: noinline
define void @NRT_decref(i8* %.1) local_unnamed_addr #3 {
.3:
%.4 = icmp eq i8* %.1, null
br i1 %.4, label %.3.if, label %.3.endif, !prof !0
.3.if: ; preds = %.3.endif, %.3
ret void
.3.endif: ; preds = %.3
fence release
%.8 = bitcast i8* %.1 to i64*
%.4.i = atomicrmw sub i64* %.8, i64 1 monotonic
%.10 = icmp eq i64 %.4.i, 1
br i1 %.10, label %.3.endif.if, label %.3.if, !prof !0
.3.endif.if: ; preds = %.3.endif
fence acquire
tail call void @NRT_MemInfo_call_dtor(i8* nonnull %.1)
ret void
}
declare void @NRT_MemInfo_call_dtor(i8*) local_unnamed_addr
; Function Attrs: nofree norecurse nounwind writeonly
define i32 @nrt_unresolved_abort(i8** nocapture readnone %.1, { i8*, i32 }** nocapture %.2) local_unnamed_addr #4 {
.4:
store { i8*, i32 }* @.const.picklebuf.140612176063216, { i8*, i32 }** %.2, align 8
ret i32 1
}
; Function Attrs: nounwind
declare void @llvm.stackprotector(i8*, i8**) #5
attributes #0 = { nofree norecurse nounwind }
attributes #1 = { norecurse nounwind readonly }
attributes #2 = { nofree noinline norecurse nounwind }
attributes #3 = { noinline }
attributes #4 = { nofree norecurse nounwind writeonly }
attributes #5 = { nounwind }
!0 = !{!"branch_weights", i32 1, i32 99}
================================================================================
================================================================================
----------------------------------ASSEMBLY nrt----------------------------------
.text
.file "<string>"
.globl nrt_atomic_add
.p2align 4, 0x90
.type nrt_atomic_add,@function
nrt_atomic_add:
movl $1, %eax
lock xaddq %rax, (%rdi)
incq %rax
retq
.Lfunc_end0:
.size nrt_atomic_add, .Lfunc_end0-nrt_atomic_add
.globl nrt_atomic_sub
.p2align 4, 0x90
.type nrt_atomic_sub,@function
nrt_atomic_sub:
movq $-1, %rax
lock xaddq %rax, (%rdi)
decq %rax
retq
.Lfunc_end1:
.size nrt_atomic_sub, .Lfunc_end1-nrt_atomic_sub
.globl nrt_atomic_cas
.p2align 4, 0x90
.type nrt_atomic_cas,@function
nrt_atomic_cas:
movq %rsi, %rax
xorl %esi, %esi
lock cmpxchgq %rdx, (%rdi)
sete %sil
movq %rax, (%rcx)
movl %esi, %eax
retq
.Lfunc_end2:
.size nrt_atomic_cas, .Lfunc_end2-nrt_atomic_cas
.globl NRT_MemInfo_data_fast
.p2align 4, 0x90
.type NRT_MemInfo_data_fast,@function
NRT_MemInfo_data_fast:
movq 24(%rdi), %rax
retq
.Lfunc_end3:
.size NRT_MemInfo_data_fast, .Lfunc_end3-NRT_MemInfo_data_fast
.globl NRT_incref
.p2align 4, 0x90
.type NRT_incref,@function
NRT_incref:
testq %rdi, %rdi
je .LBB4_1
lock incq (%rdi)
retq
.LBB4_1:
retq
.Lfunc_end4:
.size NRT_incref, .Lfunc_end4-NRT_incref
.globl NRT_decref
.p2align 4, 0x90
.type NRT_decref,@function
NRT_decref:
.cfi_startproc
testq %rdi, %rdi
je .LBB5_2
#MEMBARRIER
lock decq (%rdi)
je .LBB5_3
.LBB5_2:
retq
.LBB5_3:
#MEMBARRIER
movabsq $NRT_MemInfo_call_dtor, %rax
jmpq *%rax
.Lfunc_end5:
.size NRT_decref, .Lfunc_end5-NRT_decref
.cfi_endproc
.globl nrt_unresolved_abort
.p2align 4, 0x90
.type nrt_unresolved_abort,@function
nrt_unresolved_abort:
movabsq $.const.picklebuf.140612176063216, %rax
movq %rax, (%rsi)
movl $1, %eax
retq
.Lfunc_end6:
.size nrt_unresolved_abort, .Lfunc_end6-nrt_unresolved_abort
.type .const.picklebuf.140612176063216,@object
.section .rodata,"a",@progbits
.p2align 3
.const.picklebuf.140612176063216:
.quad .const.pickledata.140612176063216
.long 102
.zero 4
.size .const.picklebuf.140612176063216, 16
.type .const.pickledata.140612176063216,@object
.p2align 4
.const.pickledata.140612176063216:
.ascii "\200\004\225[\000\000\000\000\000\000\000\214\bbuiltins\224\214\fRuntimeError\224\223\224\2146numba jitted function aborted due to unresolved symbol\224\205\224N\207\224."
.size .const.pickledata.140612176063216, 102
.section ".note.GNU-stack","",@progbits
================================================================================
[cache] index loaded from '__pycache__/issue2_minimal.temperature_effectiveness_plate-3.py37m.nbi'
--------------------IR DUMP: temperature_effectiveness_plate--------------------
label 0:
R1 = arg(0, name=R1) ['R1']
NTU1 = arg(1, name=NTU1) ['NTU1']
Np1 = arg(2, name=Np1) ['Np1']
Np2 = arg(3, name=Np2) ['Np2']
reverse = arg(4, name=reverse) ['reverse']
$const4.1 = const(int, 1) ['$const4.1']
$6compare_op.2 = Np1 == $const4.1 ['$6compare_op.2', '$const4.1', 'Np1']
bool8 = global(bool: <class 'bool'>) ['bool8']
$8pred = call bool8($6compare_op.2, func=bool8, args=(Var($6compare_op.2, issue2_minimal.py:5),), kws=(), vararg=None) ['$6compare_op.2', '$8pred', 'bool8']
branch $8pred, 10, 22 ['$8pred']
label 10:
$const12.1 = const(int, 1) ['$const12.1']
$14compare_op.2 = Np2 == $const12.1 ['$14compare_op.2', '$const12.1', 'Np2']
bool16 = global(bool: <class 'bool'>) ['bool16']
$16pred = call bool16($14compare_op.2, func=bool16, args=(Var($14compare_op.2, issue2_minimal.py:5),), kws=(), vararg=None) ['$14compare_op.2', '$16pred', 'bool16']
branch $16pred, 18, 22 ['$16pred']
label 18:
$const18.0 = const(float, 1.1) ['$const18.0']
$20return_value.1 = cast(value=$const18.0) ['$20return_value.1', '$const18.0']
return $20return_value.1 ['$20return_value.1']
label 22:
bool24 = global(bool: <class 'bool'>) ['bool24']
$24pred = call bool24(reverse, func=bool24, args=(Var(reverse, issue2_minimal.py:5),), kws=(), vararg=None) ['$24pred', 'bool24', 'reverse']
branch $24pred, 64, 26 ['$24pred']
label 26:
$const26.0 = const(float, 1.0) ['$const26.0']
$30binary_true_divide.2 = $const26.0 / R1 ['$30binary_true_divide.2', '$const26.0', 'R1']
R2 = $30binary_true_divide.2 ['$30binary_true_divide.2', 'R2']
$38binary_multiply.5 = NTU1 * R1 ['$38binary_multiply.5', 'NTU1', 'R1']
NTU2 = $38binary_multiply.5 ['$38binary_multiply.5', 'NTU2']
$42load_global.6 = global(temperature_effectiveness_plate: CPUDispatcher(<function temperature_effectiveness_plate at 0x7fe2e32c4ef0>)) ['$42load_global.6']
$const52.11 = const(bool, True) ['$const52.11']
$56call_function_kw.13 = call $42load_global.6(func=$42load_global.6, args=[], kws=[('R1', Var(R2, issue2_minimal.py:8)), ('NTU1', Var(NTU2, issue2_minimal.py:9)), ('Np1', Var(Np2, issue2_minimal.py:5)), ('Np2', Var(Np1, issue2_minimal.py:5)), ('reverse', Var($const52.11, issue2_minimal.py:11))], vararg=None) ['$42load_global.6', '$56call_function_kw.13', '$const52.11', 'NTU2', 'Np1', 'Np2', 'R2']
P2 = $56call_function_kw.13 ['$56call_function_kw.13', 'P2']
$const60.14 = const(float, 1.3) ['$const60.14']
$62return_value.15 = cast(value=$const60.14) ['$62return_value.15', '$const60.14']
return $62return_value.15 ['$62return_value.15']
label 64:
$64load_global.0 = global(ValueError: <class 'ValueError'>) ['$64load_global.0']
$const66.1 = const(str, Supported number of passes does not have a formula available) ['$const66.1']
$68call_function.2 = call $64load_global.0($const66.1, func=$64load_global.0, args=[Var($const66.1, issue2_minimal.py:13)], kws=(), vararg=None) ['$64load_global.0', '$68call_function.2', '$const66.1']
raise $68call_function.2 ['$68call_function.2']
______________________________________________________________________
REWRITING (RewriteConstRaises):
$64load_global.0 = global(ValueError: <class 'ValueError'>) ['$64load_global.0']
$const66.1 = const(str, Supported number of passes does not have a formula available) ['$const66.1']
$68call_function.2 = call $64load_global.0($const66.1, func=$64load_global.0, args=[Var($const66.1, issue2_minimal.py:13)], kws=(), vararg=None) ['$64load_global.0', '$68call_function.2', '$const66.1']
raise $68call_function.2 ['$68call_function.2']
____________________________________________________________
$64load_global.0 = global(ValueError: <class 'ValueError'>) ['$64load_global.0']
$const66.1 = const(str, Supported number of passes does not have a formula available) ['$const66.1']
$68call_function.2 = call $64load_global.0($const66.1, func=$64load_global.0, args=[Var($const66.1, issue2_minimal.py:13)], kws=(), vararg=None) ['$64load_global.0', '$68call_function.2', '$const66.1']
<static> raise <class 'ValueError'>('Supported number of passes does not have a formula available') []
______________________________________________________________________
--------------------IR DUMP: temperature_effectiveness_plate--------------------
label 0:
R1 = arg(0, name=R1) ['R1']
NTU1 = arg(1, name=NTU1) ['NTU1']
Np1 = arg(2, name=Np1) ['Np1']
Np2 = arg(3, name=Np2) ['Np2']
reverse = arg(4, name=reverse) ['reverse']
$const4.1 = const(int, 1) ['$const4.1']
$6compare_op.2 = Np1 == $const4.1 ['$6compare_op.2', '$const4.1', 'Np1']
bool8 = global(bool: <class 'bool'>) ['bool8']
$8pred = call bool8($6compare_op.2, func=bool8, args=(Var($6compare_op.2, issue2_minimal.py:5),), kws=(), vararg=None) ['$6compare_op.2', '$8pred', 'bool8']
branch $8pred, 10, 22 ['$8pred']
label 10:
$const12.1 = const(int, 1) ['$const12.1']
$14compare_op.2 = Np2 == $const12.1 ['$14compare_op.2', '$const12.1', 'Np2']
bool16 = global(bool: <class 'bool'>) ['bool16']
$16pred = call bool16($14compare_op.2, func=bool16, args=(Var($14compare_op.2, issue2_minimal.py:5),), kws=(), vararg=None) ['$14compare_op.2', '$16pred', 'bool16']
branch $16pred, 18, 22 ['$16pred']
label 18:
$const18.0 = const(float, 1.1) ['$const18.0']
$20return_value.1 = cast(value=$const18.0) ['$20return_value.1', '$const18.0']
return $20return_value.1 ['$20return_value.1']
label 22:
bool24 = global(bool: <class 'bool'>) ['bool24']
$24pred = call bool24(reverse, func=bool24, args=(Var(reverse, issue2_minimal.py:5),), kws=(), vararg=None) ['$24pred', 'bool24', 'reverse']
branch $24pred, 64, 26 ['$24pred']
label 26:
$const26.0 = const(float, 1.0) ['$const26.0']
$30binary_true_divide.2 = $const26.0 / R1 ['$30binary_true_divide.2', '$const26.0', 'R1']
R2 = $30binary_true_divide.2 ['$30binary_true_divide.2', 'R2']
$38binary_multiply.5 = NTU1 * R1 ['$38binary_multiply.5', 'NTU1', 'R1']
NTU2 = $38binary_multiply.5 ['$38binary_multiply.5', 'NTU2']
$42load_global.6 = global(temperature_effectiveness_plate: CPUDispatcher(<function temperature_effectiveness_plate at 0x7fe2e32c4ef0>)) ['$42load_global.6']
$const52.11 = const(bool, True) ['$const52.11']
$56call_function_kw.13 = call $42load_global.6(func=$42load_global.6, args=[], kws=[('R1', Var(R2, issue2_minimal.py:8)), ('NTU1', Var(NTU2, issue2_minimal.py:9)), ('Np1', Var(Np2, issue2_minimal.py:5)), ('Np2', Var(Np1, issue2_minimal.py:5)), ('reverse', Var($const52.11, issue2_minimal.py:11))], vararg=None) ['$42load_global.6', '$56call_function_kw.13', '$const52.11', 'NTU2', 'Np1', 'Np2', 'R2']
P2 = $56call_function_kw.13 ['$56call_function_kw.13', 'P2']
$const60.14 = const(float, 1.3) ['$const60.14']
$62return_value.15 = cast(value=$const60.14) ['$62return_value.15', '$const60.14']
return $62return_value.15 ['$62return_value.15']
label 64:
$64load_global.0 = global(ValueError: <class 'ValueError'>) ['$64load_global.0']
$const66.1 = const(str, Supported number of passes does not have a formula available) ['$const66.1']
$68call_function.2 = call $64load_global.0($const66.1, func=$64load_global.0, args=[Var($const66.1, issue2_minimal.py:13)], kws=(), vararg=None) ['$64load_global.0', '$68call_function.2', '$const66.1']
<static> raise <class 'ValueError'>('Supported number of passes does not have a formula available') []
------------------SSA IR DUMP: temperature_effectiveness_plate------------------
label 0:
R1 = arg(0, name=R1) ['R1']
NTU1 = arg(1, name=NTU1) ['NTU1']
Np1 = arg(2, name=Np1) ['Np1']
Np2 = arg(3, name=Np2) ['Np2']
reverse = arg(4, name=reverse) ['reverse']
$const4.1 = const(int, 1) ['$const4.1']
$6compare_op.2 = Np1 == $const4.1 ['$6compare_op.2', '$const4.1', 'Np1']
bool8 = global(bool: <class 'bool'>) ['bool8']
$8pred = call bool8($6compare_op.2, func=bool8, args=(Var($6compare_op.2, issue2_minimal.py:5),), kws=(), vararg=None) ['$6compare_op.2', '$8pred', 'bool8']
branch $8pred, 10, 22 ['$8pred']
label 10:
$const12.1 = const(int, 1) ['$const12.1']
$14compare_op.2 = Np2 == $const12.1 ['$14compare_op.2', '$const12.1', 'Np2']
bool16 = global(bool: <class 'bool'>) ['bool16']
$16pred = call bool16($14compare_op.2, func=bool16, args=(Var($14compare_op.2, issue2_minimal.py:5),), kws=(), vararg=None) ['$14compare_op.2', '$16pred', 'bool16']
branch $16pred, 18, 22 ['$16pred']
label 18:
$const18.0 = const(float, 1.1) ['$const18.0']
$20return_value.1 = cast(value=$const18.0) ['$20return_value.1', '$const18.0']
return $20return_value.1 ['$20return_value.1']
label 22:
bool24 = global(bool: <class 'bool'>) ['bool24']
$24pred = call bool24(reverse, func=bool24, args=(Var(reverse, issue2_minimal.py:5),), kws=(), vararg=None) ['$24pred', 'bool24', 'reverse']
branch $24pred, 64, 26 ['$24pred']
label 26:
$const26.0 = const(float, 1.0) ['$const26.0']
$30binary_true_divide.2 = $const26.0 / R1 ['$30binary_true_divide.2', '$const26.0', 'R1']
R2 = $30binary_true_divide.2 ['$30binary_true_divide.2', 'R2']
$38binary_multiply.5 = NTU1 * R1 ['$38binary_multiply.5', 'NTU1', 'R1']
NTU2 = $38binary_multiply.5 ['$38binary_multiply.5', 'NTU2']
$42load_global.6 = global(temperature_effectiveness_plate: CPUDispatcher(<function temperature_effectiveness_plate at 0x7fe2e32c4ef0>)) ['$42load_global.6']
$const52.11 = const(bool, True) ['$const52.11']
$56call_function_kw.13 = call $42load_global.6(func=$42load_global.6, args=[], kws=[('R1', Var(R2, issue2_minimal.py:8)), ('NTU1', Var(NTU2, issue2_minimal.py:9)), ('Np1', Var(Np2, issue2_minimal.py:5)), ('Np2', Var(Np1, issue2_minimal.py:5)), ('reverse', Var($const52.11, issue2_minimal.py:11))], vararg=None) ['$42load_global.6', '$56call_function_kw.13', '$const52.11', 'NTU2', 'Np1', 'Np2', 'R2']
P2 = $56call_function_kw.13 ['$56call_function_kw.13', 'P2']
$const60.14 = const(float, 1.3) ['$const60.14']
$62return_value.15 = cast(value=$const60.14) ['$62return_value.15', '$const60.14']
return $62return_value.15 ['$62return_value.15']
label 64:
$64load_global.0 = global(ValueError: <class 'ValueError'>) ['$64load_global.0']
$const66.1 = const(str, Supported number of passes does not have a formula available) ['$const66.1']
$68call_function.2 = call $64load_global.0($const66.1, func=$64load_global.0, args=[Var($const66.1, issue2_minimal.py:13)], kws=(), vararg=None) ['$64load_global.0', '$68call_function.2', '$const66.1']
<static> raise <class 'ValueError'>('Supported number of passes does not have a formula available') []
-----------------------------------propagate------------------------------------
[cache] index loaded from '__pycache__/issue2_minimal.temperature_effectiveness_plate-3.py37m.nbi'
--------------------IR DUMP: temperature_effectiveness_plate--------------------
label 0:
R1 = arg(0, name=R1) ['R1']
NTU1 = arg(1, name=NTU1) ['NTU1']
Np1 = arg(2, name=Np1) ['Np1']
Np2 = arg(3, name=Np2) ['Np2']
reverse = arg(4, name=reverse) ['reverse']
$const4.1 = const(int, 1) ['$const4.1']
$6compare_op.2 = Np1 == $const4.1 ['$6compare_op.2', '$const4.1', 'Np1']
bool8 = global(bool: <class 'bool'>) ['bool8']
$8pred = call bool8($6compare_op.2, func=bool8, args=(Var($6compare_op.2, issue2_minimal.py:5),), kws=(), vararg=None) ['$6compare_op.2', '$8pred', 'bool8']
branch $8pred, 10, 22 ['$8pred']
label 10:
$const12.1 = const(int, 1) ['$const12.1']
$14compare_op.2 = Np2 == $const12.1 ['$14compare_op.2', '$const12.1', 'Np2']
bool16 = global(bool: <class 'bool'>) ['bool16']
$16pred = call bool16($14compare_op.2, func=bool16, args=(Var($14compare_op.2, issue2_minimal.py:5),), kws=(), vararg=None) ['$14compare_op.2', '$16pred', 'bool16']
branch $16pred, 18, 22 ['$16pred']
label 18:
$const18.0 = const(float, 1.1) ['$const18.0']
$20return_value.1 = cast(value=$const18.0) ['$20return_value.1', '$const18.0']
return $20return_value.1 ['$20return_value.1']
label 22:
bool24 = global(bool: <class 'bool'>) ['bool24']
$24pred = call bool24(reverse, func=bool24, args=(Var(reverse, issue2_minimal.py:5),), kws=(), vararg=None) ['$24pred', 'bool24', 'reverse']
branch $24pred, 64, 26 ['$24pred']
label 26:
$const26.0 = const(float, 1.0) ['$const26.0']
$30binary_true_divide.2 = $const26.0 / R1 ['$30binary_true_divide.2', '$const26.0', 'R1']
R2 = $30binary_true_divide.2 ['$30binary_true_divide.2', 'R2']
$38binary_multiply.5 = NTU1 * R1 ['$38binary_multiply.5', 'NTU1', 'R1']
NTU2 = $38binary_multiply.5 ['$38binary_multiply.5', 'NTU2']
$42load_global.6 = global(temperature_effectiveness_plate: CPUDispatcher(<function temperature_effectiveness_plate at 0x7fe2e32c4ef0>)) ['$42load_global.6']
$const52.11 = const(bool, True) ['$const52.11']
$56call_function_kw.13 = call $42load_global.6(func=$42load_global.6, args=[], kws=[('R1', Var(R2, issue2_minimal.py:8)), ('NTU1', Var(NTU2, issue2_minimal.py:9)), ('Np1', Var(Np2, issue2_minimal.py:5)), ('Np2', Var(Np1, issue2_minimal.py:5)), ('reverse', Var($const52.11, issue2_minimal.py:11))], vararg=None) ['$42load_global.6', '$56call_function_kw.13', '$const52.11', 'NTU2', 'Np1', 'Np2', 'R2']
P2 = $56call_function_kw.13 ['$56call_function_kw.13', 'P2']
$const60.14 = const(float, 1.3) ['$const60.14']
$62return_value.15 = cast(value=$const60.14) ['$62return_value.15', '$const60.14']
return $62return_value.15 ['$62return_value.15']
label 64:
$64load_global.0 = global(ValueError: <class 'ValueError'>) ['$64load_global.0']
$const66.1 = const(str, Supported number of passes does not have a formula available) ['$const66.1']
$68call_function.2 = call $64load_global.0($const66.1, func=$64load_global.0, args=[Var($const66.1, issue2_minimal.py:13)], kws=(), vararg=None) ['$64load_global.0', '$68call_function.2', '$const66.1']
raise $68call_function.2 ['$68call_function.2']
______________________________________________________________________
REWRITING (RewriteConstRaises):
$64load_global.0 = global(ValueError: <class 'ValueError'>) ['$64load_global.0']
$const66.1 = const(str, Supported number of passes does not have a formula available) ['$const66.1']
$68call_function.2 = call $64load_global.0($const66.1, func=$64load_global.0, args=[Var($const66.1, issue2_minimal.py:13)], kws=(), vararg=None) ['$64load_global.0', '$68call_function.2', '$const66.1']
raise $68call_function.2 ['$68call_function.2']
____________________________________________________________
$64load_global.0 = global(ValueError: <class 'ValueError'>) ['$64load_global.0']
$const66.1 = const(str, Supported number of passes does not have a formula available) ['$const66.1']
$68call_function.2 = call $64load_global.0($const66.1, func=$64load_global.0, args=[Var($const66.1, issue2_minimal.py:13)], kws=(), vararg=None) ['$64load_global.0', '$68call_function.2', '$const66.1']
<static> raise <class 'ValueError'>('Supported number of passes does not have a formula available') []
______________________________________________________________________
--------------------IR DUMP: temperature_effectiveness_plate--------------------
label 0:
R1 = arg(0, name=R1) ['R1']
NTU1 = arg(1, name=NTU1) ['NTU1']
Np1 = arg(2, name=Np1) ['Np1']
Np2 = arg(3, name=Np2) ['Np2']
reverse = arg(4, name=reverse) ['reverse']
$const4.1 = const(int, 1) ['$const4.1']
$6compare_op.2 = Np1 == $const4.1 ['$6compare_op.2', '$const4.1', 'Np1']
bool8 = global(bool: <class 'bool'>) ['bool8']
$8pred = call bool8($6compare_op.2, func=bool8, args=(Var($6compare_op.2, issue2_minimal.py:5),), kws=(), vararg=None) ['$6compare_op.2', '$8pred', 'bool8']
branch $8pred, 10, 22 ['$8pred']
label 10:
$const12.1 = const(int, 1) ['$const12.1']
$14compare_op.2 = Np2 == $const12.1 ['$14compare_op.2', '$const12.1', 'Np2']
bool16 = global(bool: <class 'bool'>) ['bool16']
$16pred = call bool16($14compare_op.2, func=bool16, args=(Var($14compare_op.2, issue2_minimal.py:5),), kws=(), vararg=None) ['$14compare_op.2', '$16pred', 'bool16']
branch $16pred, 18, 22 ['$16pred']
label 18:
$const18.0 = const(float, 1.1) ['$const18.0']
$20return_value.1 = cast(value=$const18.0) ['$20return_value.1', '$const18.0']
return $20return_value.1 ['$20return_value.1']
label 22:
bool24 = global(bool: <class 'bool'>) ['bool24']
$24pred = call bool24(reverse, func=bool24, args=(Var(reverse, issue2_minimal.py:5),), kws=(), vararg=None) ['$24pred', 'bool24', 'reverse']
branch $24pred, 64, 26 ['$24pred']
label 26:
$const26.0 = const(float, 1.0) ['$const26.0']
$30binary_true_divide.2 = $const26.0 / R1 ['$30binary_true_divide.2', '$const26.0', 'R1']
R2 = $30binary_true_divide.2 ['$30binary_true_divide.2', 'R2']
$38binary_multiply.5 = NTU1 * R1 ['$38binary_multiply.5', 'NTU1', 'R1']
NTU2 = $38binary_multiply.5 ['$38binary_multiply.5', 'NTU2']
$42load_global.6 = global(temperature_effectiveness_plate: CPUDispatcher(<function temperature_effectiveness_plate at 0x7fe2e32c4ef0>)) ['$42load_global.6']
$const52.11 = const(bool, True) ['$const52.11']
$56call_function_kw.13 = call $42load_global.6(func=$42load_global.6, args=[], kws=[('R1', Var(R2, issue2_minimal.py:8)), ('NTU1', Var(NTU2, issue2_minimal.py:9)), ('Np1', Var(Np2, issue2_minimal.py:5)), ('Np2', Var(Np1, issue2_minimal.py:5)), ('reverse', Var($const52.11, issue2_minimal.py:11))], vararg=None) ['$42load_global.6', '$56call_function_kw.13', '$const52.11', 'NTU2', 'Np1', 'Np2', 'R2']
P2 = $56call_function_kw.13 ['$56call_function_kw.13', 'P2']
$const60.14 = const(float, 1.3) ['$const60.14']
$62return_value.15 = cast(value=$const60.14) ['$62return_value.15', '$const60.14']
return $62return_value.15 ['$62return_value.15']
label 64:
$64load_global.0 = global(ValueError: <class 'ValueError'>) ['$64load_global.0']
$const66.1 = const(str, Supported number of passes does not have a formula available) ['$const66.1']
$68call_function.2 = call $64load_global.0($const66.1, func=$64load_global.0, args=[Var($const66.1, issue2_minimal.py:13)], kws=(), vararg=None) ['$64load_global.0', '$68call_function.2', '$const66.1']
<static> raise <class 'ValueError'>('Supported number of passes does not have a formula available') []
------------------SSA IR DUMP: temperature_effectiveness_plate------------------
label 0:
R1 = arg(0, name=R1) ['R1']
NTU1 = arg(1, name=NTU1) ['NTU1']
Np1 = arg(2, name=Np1) ['Np1']
Np2 = arg(3, name=Np2) ['Np2']
reverse = arg(4, name=reverse) ['reverse']
$const4.1 = const(int, 1) ['$const4.1']
$6compare_op.2 = Np1 == $const4.1 ['$6compare_op.2', '$const4.1', 'Np1']
bool8 = global(bool: <class 'bool'>) ['bool8']
$8pred = call bool8($6compare_op.2, func=bool8, args=(Var($6compare_op.2, issue2_minimal.py:5),), kws=(), vararg=None) ['$6compare_op.2', '$8pred', 'bool8']
branch $8pred, 10, 22 ['$8pred']
label 10:
$const12.1 = const(int, 1) ['$const12.1']
$14compare_op.2 = Np2 == $const12.1 ['$14compare_op.2', '$const12.1', 'Np2']
bool16 = global(bool: <class 'bool'>) ['bool16']
$16pred = call bool16($14compare_op.2, func=bool16, args=(Var($14compare_op.2, issue2_minimal.py:5),), kws=(), vararg=None) ['$14compare_op.2', '$16pred', 'bool16']
branch $16pred, 18, 22 ['$16pred']
label 18:
$const18.0 = const(float, 1.1) ['$const18.0']
$20return_value.1 = cast(value=$const18.0) ['$20return_value.1', '$const18.0']
return $20return_value.1 ['$20return_value.1']
label 22:
bool24 = global(bool: <class 'bool'>) ['bool24']
$24pred = call bool24(reverse, func=bool24, args=(Var(reverse, issue2_minimal.py:5),), kws=(), vararg=None) ['$24pred', 'bool24', 'reverse']
branch $24pred, 64, 26 ['$24pred']
label 26:
$const26.0 = const(float, 1.0) ['$const26.0']
$30binary_true_divide.2 = $const26.0 / R1 ['$30binary_true_divide.2', '$const26.0', 'R1']
R2 = $30binary_true_divide.2 ['$30binary_true_divide.2', 'R2']
$38binary_multiply.5 = NTU1 * R1 ['$38binary_multiply.5', 'NTU1', 'R1']
NTU2 = $38binary_multiply.5 ['$38binary_multiply.5', 'NTU2']
$42load_global.6 = global(temperature_effectiveness_plate: CPUDispatcher(<function temperature_effectiveness_plate at 0x7fe2e32c4ef0>)) ['$42load_global.6']
$const52.11 = const(bool, True) ['$const52.11']
$56call_function_kw.13 = call $42load_global.6(func=$42load_global.6, args=[], kws=[('R1', Var(R2, issue2_minimal.py:8)), ('NTU1', Var(NTU2, issue2_minimal.py:9)), ('Np1', Var(Np2, issue2_minimal.py:5)), ('Np2', Var(Np1, issue2_minimal.py:5)), ('reverse', Var($const52.11, issue2_minimal.py:11))], vararg=None) ['$42load_global.6', '$56call_function_kw.13', '$const52.11', 'NTU2', 'Np1', 'Np2', 'R2']
P2 = $56call_function_kw.13 ['$56call_function_kw.13', 'P2']
$const60.14 = const(float, 1.3) ['$const60.14']
$62return_value.15 = cast(value=$const60.14) ['$62return_value.15', '$const60.14']
return $62return_value.15 ['$62return_value.15']
label 64:
$64load_global.0 = global(ValueError: <class 'ValueError'>) ['$64load_global.0']
$const66.1 = const(str, Supported number of passes does not have a formula available) ['$const66.1']
$68call_function.2 = call $64load_global.0($const66.1, func=$64load_global.0, args=[Var($const66.1, issue2_minimal.py:13)], kws=(), vararg=None) ['$64load_global.0', '$68call_function.2', '$const66.1']
<static> raise <class 'ValueError'>('Supported number of passes does not have a formula available') []
-----------------------------------propagate------------------------------------
-----------------------------------propagate------------------------------------
---- type variables ----
[$14compare_op.2 := bool,
$16pred := bool,
$20return_value.1 := float64,
$24pred := bool,
$30binary_true_divide.2 := float64,
$38binary_multiply.5 := float64,
$42load_global.6 := recursive(type(CPUDispatcher(<function temperature_effectiveness_plate at 0x7fe2e32c4ef0>))),
$56call_function_kw.13 := <undecided>,
$62return_value.15 := float64,
$64load_global.0 := ValueError,
$68call_function.2 := ValueError(...),
$6compare_op.2 := bool,
$8pred := bool,
$const12.1 := Literal[int](1),
$const18.0 := float64,
$const26.0 := float64,
$const4.1 := Literal[int](1),
$const52.11 := bool,
$const60.14 := float64,
$const66.1 := Literal[str](Supported number of passes does not have a formula available),
NTU1 := float64,
NTU2 := float64,
Np1 := int64,
Np2 := int64,
P2 := <undecided>,
R1 := float64,
R2 := float64,
arg.NTU1 := <undecided>,
arg.Np1 := <undecided>,
arg.Np2 := <undecided>,
arg.R1 := <undecided>,
arg.reverse := <undecided>,
bool16 := Function(<class 'bool'>),
bool24 := Function(<class 'bool'>),
bool8 := Function(<class 'bool'>),
reverse := bool]
-----------------------------------propagate------------------------------------
---- type variables ----
[$14compare_op.2 := bool,
$16pred := bool,
$20return_value.1 := float64,
$24pred := bool,
$30binary_true_divide.2 := float64,
$38binary_multiply.5 := float64,
$42load_global.6 := recursive(type(CPUDispatcher(<function temperature_effectiveness_plate at 0x7fe2e32c4ef0>))),
$56call_function_kw.13 := <undecided>,
$62return_value.15 := float64,
$64load_global.0 := ValueError,
$68call_function.2 := ValueError(...),
$6compare_op.2 := bool,
$8pred := bool,
$const12.1 := Literal[int](1),
$const18.0 := float64,
$const26.0 := float64,
$const4.1 := Literal[int](1),
$const52.11 := bool,
$const60.14 := float64,
$const66.1 := Literal[str](Supported number of passes does not have a formula available),
NTU1 := float64,
NTU2 := float64,
Np1 := int64,
Np2 := int64,
P2 := <undecided>,
R1 := float64,
R2 := float64,
arg.NTU1 := <undecided>,
arg.Np1 := <undecided>,
arg.Np2 := <undecided>,
arg.R1 := <undecided>,
arg.reverse := <undecided>,
bool16 := Function(<class 'bool'>),
bool24 := Function(<class 'bool'>),
bool8 := Function(<class 'bool'>),
reverse := bool]
---- type variables ----
[$14compare_op.2 := bool,
$16pred := bool,
$20return_value.1 := float64,
$24pred := bool,
$30binary_true_divide.2 := float64,
$38binary_multiply.5 := float64,
$42load_global.6 := recursive(type(CPUDispatcher(<function temperature_effectiveness_plate at 0x7fe2e32c4ef0>))),
$56call_function_kw.13 := float64,
$62return_value.15 := float64,
$64load_global.0 := ValueError,
$68call_function.2 := ValueError(...),
$6compare_op.2 := bool,
$8pred := bool,
$const12.1 := Literal[int](1),
$const18.0 := float64,
$const26.0 := float64,
$const4.1 := Literal[int](1),
$const52.11 := bool,
$const60.14 := float64,
$const66.1 := Literal[str](Supported number of passes does not have a formula available),
NTU1 := float64,
NTU2 := float64,
Np1 := int64,
Np2 := int64,
P2 := float64,
R1 := float64,
R2 := float64,
arg.NTU1 := float64,
arg.Np1 := int64,
arg.Np2 := int64,
arg.R1 := float64,
arg.reverse := bool,
bool16 := Function(<class 'bool'>),
bool24 := Function(<class 'bool'>),
bool8 := Function(<class 'bool'>),
reverse := bool]
-----------------------------------propagate------------------------------------
-----------------------------------propagate------------------------------------
---- type variables ----
[$14compare_op.2 := bool,
$16pred := bool,
$20return_value.1 := float64,
$24pred := bool,
$30binary_true_divide.2 := float64,
$38binary_multiply.5 := float64,
$42load_global.6 := recursive(type(CPUDispatcher(<function temperature_effectiveness_plate at 0x7fe2e32c4ef0>))),
$56call_function_kw.13 := float64,
$62return_value.15 := float64,
$64load_global.0 := ValueError,
$68call_function.2 := ValueError(...),
$6compare_op.2 := bool,
$8pred := bool,
$const12.1 := Literal[int](1),
$const18.0 := float64,
$const26.0 := float64,
$const4.1 := Literal[int](1),
$const52.11 := bool,
$const60.14 := float64,
$const66.1 := Literal[str](Supported number of passes does not have a formula available),
NTU1 := float64,
NTU2 := float64,
Np1 := int64,
Np2 := int64,
P2 := float64,
R1 := float64,
R2 := float64,
arg.NTU1 := <undecided>,
arg.Np1 := <undecided>,
arg.Np2 := <undecided>,
arg.R1 := <undecided>,
arg.reverse := <undecided>,
bool16 := Function(<class 'bool'>),
bool24 := Function(<class 'bool'>),
bool8 := Function(<class 'bool'>),
reverse := bool]
-----------------------------------propagate------------------------------------
---- type variables ----
[$14compare_op.2 := bool,
$16pred := bool,
$20return_value.1 := float64,
$24pred := bool,
$30binary_true_divide.2 := float64,
$38binary_multiply.5 := float64,
$42load_global.6 := recursive(type(CPUDispatcher(<function temperature_effectiveness_plate at 0x7fe2e32c4ef0>))),
$56call_function_kw.13 := float64,
$62return_value.15 := float64,
$64load_global.0 := ValueError,
$68call_function.2 := ValueError(...),
$6compare_op.2 := bool,
$8pred := bool,
$const12.1 := Literal[int](1),
$const18.0 := float64,
$const26.0 := float64,
$const4.1 := Literal[int](1),
$const52.11 := bool,
$const60.14 := float64,
$const66.1 := Literal[str](Supported number of passes does not have a formula available),
NTU1 := float64,
NTU2 := float64,
Np1 := int64,
Np2 := int64,
P2 := float64,
R1 := float64,
R2 := float64,
arg.NTU1 := <undecided>,
arg.Np1 := <undecided>,
arg.Np2 := <undecided>,
arg.R1 := <undecided>,
arg.reverse := <undecided>,
bool16 := Function(<class 'bool'>),
bool24 := Function(<class 'bool'>),
bool8 := Function(<class 'bool'>),
reverse := bool]
---- type variables ----
[$14compare_op.2 := bool,
$16pred := bool,
$20return_value.1 := float64,
$24pred := bool,
$30binary_true_divide.2 := float64,
$38binary_multiply.5 := float64,
$42load_global.6 := recursive(type(CPUDispatcher(<function temperature_effectiveness_plate at 0x7fe2e32c4ef0>))),
$56call_function_kw.13 := float64,
$62return_value.15 := float64,
$64load_global.0 := ValueError,
$68call_function.2 := ValueError(...),
$6compare_op.2 := bool,
$8pred := bool,
$const12.1 := Literal[int](1),
$const18.0 := float64,
$const26.0 := float64,
$const4.1 := Literal[int](1),
$const52.11 := bool,
$const60.14 := float64,
$const66.1 := Literal[str](Supported number of passes does not have a formula available),
NTU1 := float64,
NTU2 := float64,
Np1 := int64,
Np2 := int64,
P2 := float64,
R1 := float64,
R2 := float64,
arg.NTU1 := float64,
arg.Np1 := int64,
arg.Np2 := int64,
arg.R1 := float64,
arg.reverse := bool,
bool16 := Function(<class 'bool'>),
bool24 := Function(<class 'bool'>),
bool8 := Function(<class 'bool'>),
reverse := bool]
---------------------------------Variable types---------------------------------
{'$14compare_op.2': bool,
'$16pred': bool,
'$20return_value.1': float64,
'$24pred': bool,
'$30binary_true_divide.2': float64,
'$38binary_multiply.5': float64,
'$42load_global.6': recursive(type(CPUDispatcher(<function temperature_effectiveness_plate at 0x7fe2e32c4ef0>))),
'$56call_function_kw.13': float64,
'$62return_value.15': float64,
'$64load_global.0': ValueError,
'$68call_function.2': ValueError(...),
'$6compare_op.2': bool,
'$8pred': bool,
'$const12.1': Literal[int](1),
'$const18.0': float64,
'$const26.0': float64,
'$const4.1': Literal[int](1),
'$const52.11': bool,
'$const60.14': float64,
'$const66.1': Literal[str](Supported number of passes does not have a formula available),
'NTU1': float64,
'NTU2': float64,
'Np1': int64,
'Np2': int64,
'P2': float64,
'R1': float64,
'R2': float64,
'arg.NTU1': float64,
'arg.Np1': int64,
'arg.Np2': int64,
'arg.R1': float64,
'arg.reverse': bool,
'bool16': Function(<class 'bool'>),
'bool24': Function(<class 'bool'>),
'bool8': Function(<class 'bool'>),
'reverse': bool}
----------------------------------Return type-----------------------------------
float64
-----------------------------------Call types-----------------------------------
{$const26.0 / R1: (float64, float64) -> float64,
NTU1 * R1: (float64, float64) -> float64,
Np1 == $const4.1: (int64, int64) -> bool,
Np2 == $const12.1: (int64, int64) -> bool,
call $42load_global.6(func=$42load_global.6, args=[], kws=[('R1', Var(R2, issue2_minimal.py:8)), ('NTU1', Var(NTU2, issue2_minimal.py:9)), ('Np1', Var(Np2, issue2_minimal.py:5)), ('Np2', Var(Np1, issue2_minimal.py:5)), ('reverse', Var($const52.11, issue2_minimal.py:11))], vararg=None): (float64, float64, int64, int64, bool) -> float64,
call $64load_global.0($const66.1, func=$64load_global.0, args=[Var($const66.1, issue2_minimal.py:13)], kws=(), vararg=None): () -> ValueError(...),
call bool16($14compare_op.2, func=bool16, args=(Var($14compare_op.2, issue2_minimal.py:5),), kws=(), vararg=None): (bool,) -> bool,
call bool24(reverse, func=bool24, args=(Var(reverse, issue2_minimal.py:5),), kws=(), vararg=None): (bool,) -> bool,
call bool8($6compare_op.2, func=bool8, args=(Var($6compare_op.2, issue2_minimal.py:5),), kws=(), vararg=None): (bool,) -> bool}
------LLVM DUMP <function descriptor 'temperature_effectiveness_plate$2'>-------
; ModuleID = "temperature_effectiveness_plate$2"
target triple = "x86_64-unknown-linux-gnu"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
@"_ZN08NumbaEnv8__main__35temperature_effectiveness_plate$242Eddxxb" = common global i8* null
define i32 @"_ZN8__main__35temperature_effectiveness_plate$242Eddxxb"(double* noalias nocapture %"retptr.1", {i8*, i32}** noalias nocapture %"excinfo.1", double %"arg.R1.1", double %"arg.NTU1.1", i64 %"arg.Np1.1", i64 %"arg.Np2.1", i8 %"arg.reverse.1")
{
entry:
%".9" = alloca i1
store i1 0, i1* %".9"
%".11" = icmp eq i8 %"arg.reverse.1", 0
%"R1" = alloca double
store double 0.0, double* %"R1"
%"NTU1" = alloca double
store double 0.0, double* %"NTU1"
%"Np1" = alloca i64
store i64 0, i64* %"Np1"
%"Np2" = alloca i64
store i64 0, i64* %"Np2"
%"reverse" = alloca i1
store i1 0, i1* %"reverse"
%"$const4.1" = alloca i64
store i64 0, i64* %"$const4.1"
%"$6compare_op.2" = alloca i1
store i1 0, i1* %"$6compare_op.2"
%"bool8" = alloca i8*
store i8* null, i8** %"bool8"
%"$8pred" = alloca i1
store i1 0, i1* %"$8pred"
%"$const12.1" = alloca i64
store i64 0, i64* %"$const12.1"
%"$14compare_op.2" = alloca i1
store i1 0, i1* %"$14compare_op.2"
%"bool16" = alloca i8*
store i8* null, i8** %"bool16"
%"$16pred" = alloca i1
store i1 0, i1* %"$16pred"
%"$const18.0" = alloca double
store double 0.0, double* %"$const18.0"
%"$20return_value.1" = alloca double
store double 0.0, double* %"$20return_value.1"
%"bool24" = alloca i8*
store i8* null, i8** %"bool24"
%"$24pred" = alloca i1
store i1 0, i1* %"$24pred"
%"$const26.0" = alloca double
store double 0.0, double* %"$const26.0"
%"try_state" = alloca i64
store i64 0, i64* %"try_state"
%"$30binary_true_divide.2" = alloca double
store double 0.0, double* %"$30binary_true_divide.2"
%"R2" = alloca double
store double 0.0, double* %"R2"
%"$38binary_multiply.5" = alloca double
store double 0.0, double* %"$38binary_multiply.5"
%"NTU2" = alloca double
store double 0.0, double* %"NTU2"
%"$42load_global.6" = alloca i8*
store i8* null, i8** %"$42load_global.6"
%"$const52.11" = alloca i1
store i1 0, i1* %"$const52.11"
%".179" = alloca double
store double 0.0, double* %".179"
%"excinfo.2" = alloca {i8*, i32}*
store {i8*, i32}* null, {i8*, i32}** %"excinfo.2"
%"$56call_function_kw.13" = alloca double
store double 0.0, double* %"$56call_function_kw.13"
%"P2" = alloca double
store double 0.0, double* %"P2"
%"$const60.14" = alloca double
store double 0.0, double* %"$const60.14"
%"$62return_value.15" = alloca double
store double 0.0, double* %"$62return_value.15"
%"$64load_global.0" = alloca i8*
store i8* null, i8** %"$64load_global.0"
%"$const66.1" = alloca i8*
store i8* null, i8** %"$const66.1"
%"$68call_function.2" = alloca i8*
store i8* null, i8** %"$68call_function.2"
br i1 %".11", label %"entry.if", label %"entry.else"
entry.if:
store i1 0, i1* %".9"
br label %"entry.endif"
entry.else:
store i1 1, i1* %".9"
br label %"entry.endif"
entry.endif:
%".17" = load i1, i1* %".9"
br label %"B0"
B0:
%".19" = load double, double* %"R1"
store double %"arg.R1.1", double* %"R1"
%".22" = load double, double* %"NTU1"
store double %"arg.NTU1.1", double* %"NTU1"
%".25" = load i64, i64* %"Np1"
store i64 %"arg.Np1.1", i64* %"Np1"
%".28" = load i64, i64* %"Np2"
store i64 %"arg.Np2.1", i64* %"Np2"
%".31" = load i1, i1* %"reverse"
store i1 %".17", i1* %"reverse"
%".34" = load i64, i64* %"$const4.1"
store i64 1, i64* %"$const4.1"
%".36" = load i64, i64* %"Np1"
%".37" = load i64, i64* %"$const4.1"
%".38" = icmp eq i64 %".36", 1
%".40" = load i1, i1* %"$6compare_op.2"
store i1 %".38", i1* %"$6compare_op.2"
%".42" = load i64, i64* %"$const4.1"
store i64 0, i64* %"$const4.1"
%".45" = load i8*, i8** %"bool8"
store i8* null, i8** %"bool8"
%".47" = load i1, i1* %"$6compare_op.2"
%".49" = load i1, i1* %"$8pred"
store i1 %".47", i1* %"$8pred"
%".51" = load i8*, i8** %"bool8"
store i8* null, i8** %"bool8"
%".53" = load i1, i1* %"$6compare_op.2"
store i1 0, i1* %"$6compare_op.2"
%".55" = load i1, i1* %"$8pred"
br i1 %".55", label %"B10", label %"B22"
B10:
%".57" = load i1, i1* %"$8pred"
store i1 0, i1* %"$8pred"
%".60" = load i64, i64* %"$const12.1"
store i64 1, i64* %"$const12.1"
%".62" = load i64, i64* %"Np2"
%".63" = load i64, i64* %"$const12.1"
%".64" = icmp eq i64 %".62", 1
%".66" = load i1, i1* %"$14compare_op.2"
store i1 %".64", i1* %"$14compare_op.2"
%".68" = load i64, i64* %"$const12.1"
store i64 0, i64* %"$const12.1"
%".71" = load i8*, i8** %"bool16"
store i8* null, i8** %"bool16"
%".73" = load i1, i1* %"$14compare_op.2"
%".75" = load i1, i1* %"$16pred"
store i1 %".73", i1* %"$16pred"
%".77" = load i8*, i8** %"bool16"
store i8* null, i8** %"bool16"
%".79" = load i1, i1* %"$14compare_op.2"
store i1 0, i1* %"$14compare_op.2"
%".81" = load i1, i1* %"$16pred"
br i1 %".81", label %"B18", label %"B22"
B18:
%".83" = load i1, i1* %"reverse"
store i1 0, i1* %"reverse"
%".85" = load double, double* %"R1"
store double 0.0, double* %"R1"
%".87" = load i64, i64* %"Np2"
store i64 0, i64* %"Np2"
%".89" = load i64, i64* %"Np1"
store i64 0, i64* %"Np1"
%".91" = load double, double* %"NTU1"
store double 0.0, double* %"NTU1"
%".93" = load i1, i1* %"$16pred"
store i1 0, i1* %"$16pred"
%".96" = load double, double* %"$const18.0"
store double 0x3ff199999999999a, double* %"$const18.0"
%".98" = load double, double* %"$const18.0"
%".100" = load double, double* %"$20return_value.1"
store double %".98", double* %"$20return_value.1"
%".102" = load double, double* %"$const18.0"
store double 0.0, double* %"$const18.0"
%".104" = load double, double* %"$20return_value.1"
store double %".104", double* %"retptr.1"
ret i32 0
B22:
%".107" = load i1, i1* %"$8pred"
store i1 0, i1* %"$8pred"
%".109" = load i1, i1* %"$16pred"
store i1 0, i1* %"$16pred"
%".112" = load i8*, i8** %"bool24"
store i8* null, i8** %"bool24"
%".114" = load i1, i1* %"reverse"
%".116" = load i1, i1* %"$24pred"
store i1 %".114", i1* %"$24pred"
%".118" = load i1, i1* %"reverse"
store i1 0, i1* %"reverse"
%".120" = load i8*, i8** %"bool24"
store i8* null, i8** %"bool24"
%".122" = load i1, i1* %"$24pred"
br i1 %".122", label %"B64", label %"B26"
B26:
%".124" = load i1, i1* %"$24pred"
store i1 0, i1* %"$24pred"
%".127" = load double, double* %"$const26.0"
store double 0x3ff0000000000000, double* %"$const26.0"
%".129" = load double, double* %"$const26.0"
%".130" = load double, double* %"R1"
%".131" = fcmp oeq double %".130", 0x0
br i1 %".131", label %"B26.if", label %"B26.endif", !prof !0
B64:
%".239" = load double, double* %"R1"
store double 0.0, double* %"R1"
%".241" = load i64, i64* %"Np2"
store i64 0, i64* %"Np2"
%".243" = load i64, i64* %"Np1"
store i64 0, i64* %"Np1"
%".245" = load double, double* %"NTU1"
store double 0.0, double* %"NTU1"
%".247" = load i1, i1* %"$24pred"
store i1 0, i1* %"$24pred"
%".250" = load i8*, i8** %"$64load_global.0"
store i8* null, i8** %"$64load_global.0"
%".253" = load i8*, i8** %"$const66.1"
store i8* null, i8** %"$const66.1"
%".256" = load i8*, i8** %"$68call_function.2"
store i8* null, i8** %"$68call_function.2"
%".258" = load i8*, i8** %"$const66.1"
store i8* null, i8** %"$const66.1"
%".260" = load i8*, i8** %"$68call_function.2"
store i8* null, i8** %"$68call_function.2"
%".262" = load i8*, i8** %"$64load_global.0"
store i8* null, i8** %"$64load_global.0"
store {i8*, i32}* @".const.picklebuf.140612147179104", {i8*, i32}** %"excinfo.1"
%".265" = load i64, i64* %"try_state"
%".266" = icmp ugt i64 %".265", 0
%".267" = load {i8*, i32}*, {i8*, i32}** %"excinfo.1"
ret i32 1
B26.if:
store {i8*, i32}* @".const.picklebuf.140612147179184", {i8*, i32}** %"excinfo.1"
store i64 0, i64* %"try_state"
%".136" = load i64, i64* %"try_state"
%".137" = icmp ugt i64 %".136", 0
%".138" = load {i8*, i32}*, {i8*, i32}** %"excinfo.1"
ret i32 1
B26.endif:
%".140" = fdiv double %".129", %".130"
%".142" = load double, double* %"$30binary_true_divide.2"
store double %".140", double* %"$30binary_true_divide.2"
%".144" = load double, double* %"$const26.0"
store double 0.0, double* %"$const26.0"
%".146" = load double, double* %"$30binary_true_divide.2"
%".148" = load double, double* %"R2"
store double %".146", double* %"R2"
%".150" = load double, double* %"$30binary_true_divide.2"
store double 0.0, double* %"$30binary_true_divide.2"
%".152" = load double, double* %"NTU1"
%".153" = load double, double* %"R1"
%".154" = fmul double %".152", %".153"
%".156" = load double, double* %"$38binary_multiply.5"
store double %".154", double* %"$38binary_multiply.5"
%".158" = load double, double* %"R1"
store double 0.0, double* %"R1"
%".160" = load double, double* %"NTU1"
store double 0.0, double* %"NTU1"
%".162" = load double, double* %"$38binary_multiply.5"
%".164" = load double, double* %"NTU2"
store double %".162", double* %"NTU2"
%".166" = load double, double* %"$38binary_multiply.5"
store double 0.0, double* %"$38binary_multiply.5"
%".169" = load i8*, i8** %"$42load_global.6"
store i8* null, i8** %"$42load_global.6"
%".172" = load i1, i1* %"$const52.11"
store i1 true, i1* %"$const52.11"
%".174" = load double, double* %"R2"
%".175" = load double, double* %"NTU2"
%".176" = load i64, i64* %"Np2"
%".177" = load i64, i64* %"Np1"
%".178" = load i1, i1* %"$const52.11"
store double 0.0, double* %".179"
%".183" = zext i1 %".178" to i8
%".184" = call i32 @"_ZN8__main__35temperature_effectiveness_plate$242Eddxxb"(double* %".179", {i8*, i32}** %"excinfo.2", double %".174", double %".175", i64 %".176", i64 %".177", i8 %".183")
%".185" = load {i8*, i32}*, {i8*, i32}** %"excinfo.2"
%".186" = icmp eq i32 %".184", 0
%".187" = icmp eq i32 %".184", -2
%".188" = icmp eq i32 %".184", -1
%".189" = icmp eq i32 %".184", -3
%".190" = or i1 %".186", %".187"
%".191" = xor i1 %".190", -1
%".192" = icmp sge i32 %".184", 1
%".193" = select i1 %".192", {i8*, i32}* %".185", {i8*, i32}* undef
%".194" = load double, double* %".179"
br i1 %".191", label %"B26.endif.if", label %"B26.endif.endif", !prof !0
B26.endif.if:
%".196" = load i64, i64* %"try_state"
%".197" = icmp ugt i64 %".196", 0
%".198" = load {i8*, i32}*, {i8*, i32}** %"excinfo.1"
store {i8*, i32}* %".193", {i8*, i32}** %"excinfo.1"
%".200" = xor i1 %".197", -1
br i1 %".200", label %"B26.endif.if.if", label %"B26.endif.if.endif"
B26.endif.endif:
%".205" = load double, double* %"$56call_function_kw.13"
store double %".194", double* %"$56call_function_kw.13"
%".207" = load double, double* %"R2"
store double 0.0, double* %"R2"
%".209" = load i64, i64* %"Np2"
store i64 0, i64* %"Np2"
%".211" = load i64, i64* %"Np1"
store i64 0, i64* %"Np1"
%".213" = load double, double* %"NTU2"
store double 0.0, double* %"NTU2"
%".215" = load i1, i1* %"$const52.11"
store i1 0, i1* %"$const52.11"
%".217" = load i8*, i8** %"$42load_global.6"
store i8* null, i8** %"$42load_global.6"
%".219" = load double, double* %"$56call_function_kw.13"
%".221" = load double, double* %"P2"
store double %".219", double* %"P2"
%".223" = load double, double* %"P2"
store double 0.0, double* %"P2"
%".225" = load double, double* %"$56call_function_kw.13"
store double 0.0, double* %"$56call_function_kw.13"
%".228" = load double, double* %"$const60.14"
store double 0x3ff4cccccccccccd, double* %"$const60.14"
%".230" = load double, double* %"$const60.14"
%".232" = load double, double* %"$62return_value.15"
store double %".230", double* %"$62return_value.15"
%".234" = load double, double* %"$const60.14"
store double 0.0, double* %"$const60.14"
%".236" = load double, double* %"$62return_value.15"
store double %".236", double* %"retptr.1"
ret i32 0
B26.endif.if.if:
ret i32 %".184"
B26.endif.if.endif:
br label %"B26.endif.endif"
}
@".const.pickledata.140612147179184" = internal constant [69 x i8] c"\80\04\95:\00\00\00\00\00\00\00\8c\08builtins\94\8c\11ZeroDivisionError\94\93\94\8c\10division by zero\94\85\94N\87\94."
@".const.picklebuf.140612147179184" = internal constant {i8*, i32} {i8* bitcast ([69 x i8]* @".const.pickledata.140612147179184" to i8*), i32 69}
@".const.pickledata.140612147179104" = internal constant [163 x i8] c"\80\04\95\98\00\00\00\00\00\00\00\8c\08builtins\94\8c\0aValueError\94\93\94\8c<Supported number of passes does not have a formula available\94\85\94\8c\1ftemperature_effectiveness_plate\94\8c\11issue2_minimal.py\94K\0d\87\94\87\94."
@".const.picklebuf.140612147179104" = internal constant {i8*, i32} {i8* bitcast ([163 x i8]* @".const.pickledata.140612147179104" to i8*), i32 163}
!0 = !{ !"branch_weights", i32 1, i32 99 }
================================================================================
================================================================================
------------FUNCTION OPTIMIZED DUMP temperature_effectiveness_plate-------------
; ModuleID = 'temperature_effectiveness_plate'
source_filename = "<string>"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
@"_ZN08NumbaEnv8__main__35temperature_effectiveness_plate$242Eddxxb" = common global i8* null
@.const.picklebuf.140612147179104 = internal constant { i8*, i32 } { i8* getelementptr inbounds ([163 x i8], [163 x i8]* @.const.pickledata.140612147179104, i32 0, i32 0), i32 163 }
@.const.picklebuf.140612147179184 = internal constant { i8*, i32 } { i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.const.pickledata.140612147179184, i32 0, i32 0), i32 69 }
@.const.pickledata.140612147179184 = internal constant [69 x i8] c"\80\04\95:\00\00\00\00\00\00\00\8C\08builtins\94\8C\11ZeroDivisionError\94\93\94\8C\10division by zero\94\85\94N\87\94."
@.const.pickledata.140612147179104 = internal constant [163 x i8] c"\80\04\95\98\00\00\00\00\00\00\00\8C\08builtins\94\8C\0AValueError\94\93\94\8C<Supported number of passes does not have a formula available\94\85\94\8C\1Ftemperature_effectiveness_plate\94\8C\11issue2_minimal.py\94K\0D\87\94\87\94."
@.const.temperature_effectiveness_plate = internal constant [32 x i8] c"temperature_effectiveness_plate\00"
@PyExc_RuntimeError = external global i8
@".const.missing Environment" = internal constant [20 x i8] c"missing Environment\00"
@_Py_NoneStruct = external global i8
@PyExc_StopIteration = external global i8
@PyExc_SystemError = external global i8
@".const.unknown error when calling native function" = internal constant [43 x i8] c"unknown error when calling native function\00"
@".const.<numba.core.cpu.CPUContext object at 0x7fe2d115e6d0>" = internal constant [53 x i8] c"<numba.core.cpu.CPUContext object at 0x7fe2d115e6d0>\00"
@".const.unknown error when calling native function.1" = internal constant [43 x i8] c"unknown error when calling native function\00"
define i32 @"_ZN8__main__35temperature_effectiveness_plate$242Eddxxb"(double* noalias nocapture %retptr.1, { i8*, i32 }** noalias nocapture %excinfo.1, double %arg.R1.1, double %arg.NTU1.1, i64 %arg.Np1.1, i64 %arg.Np2.1, i8 %arg.reverse.1) {
entry:
%.11 = icmp eq i8 %arg.reverse.1, 0
%.179 = alloca double
store double 0.000000e+00, double* %.179
%excinfo.2 = alloca { i8*, i32 }*
store { i8*, i32 }* null, { i8*, i32 }** %excinfo.2
br i1 %.11, label %entry.if, label %entry.else
entry.if: ; preds = %entry
br label %entry.endif
entry.else: ; preds = %entry
br label %entry.endif
entry.endif: ; preds = %entry.else, %entry.if
%.9.0 = phi i1 [ false, %entry.if ], [ true, %entry.else ]
%.38 = icmp eq i64 %arg.Np1.1, 1
br i1 %.38, label %B10, label %B22
B10: ; preds = %entry.endif
%.64 = icmp eq i64 %arg.Np2.1, 1
br i1 %.64, label %B18, label %B22
B18: ; preds = %B10
store double 1.100000e+00, double* %retptr.1
ret i32 0
B22: ; preds = %B10, %entry.endif
br i1 %.9.0, label %B64, label %B26
B26: ; preds = %B22
%.131 = fcmp oeq double %arg.R1.1, 0.000000e+00
br i1 %.131, label %B26.if, label %B26.endif, !prof !0
B64: ; preds = %B22
store { i8*, i32 }* @.const.picklebuf.140612147179104, { i8*, i32 }** %excinfo.1
ret i32 1
B26.if: ; preds = %B26
store { i8*, i32 }* @.const.picklebuf.140612147179184, { i8*, i32 }** %excinfo.1
ret i32 1
B26.endif: ; preds = %B26
%.140 = fdiv double 1.000000e+00, %arg.R1.1
%.154 = fmul double %arg.NTU1.1, %arg.R1.1
store double 0.000000e+00, double* %.179
%.184 = call i32 @"_ZN8__main__35temperature_effectiveness_plate$242Eddxxb"(double* %.179, { i8*, i32 }** %excinfo.2, double %.140, double %.154, i64 %arg.Np2.1, i64 %arg.Np1.1, i8 1)
%.185 = load { i8*, i32 }*, { i8*, i32 }** %excinfo.2
%.186 = icmp eq i32 %.184, 0
%.187 = icmp eq i32 %.184, -2
%.190 = or i1 %.186, %.187
%.191 = xor i1 %.190, true
%.192 = icmp sge i32 %.184, 1
br i1 %.191, label %B26.endif.if, label %B26.endif.endif, !prof !0
B26.endif.if: ; preds = %B26.endif
store { i8*, i32 }* %.185, { i8*, i32 }** %excinfo.1
br i1 true, label %B26.endif.if.if, label %B26.endif.endif
B26.endif.endif: ; preds = %B26.endif.if, %B26.endif
store double 1.300000e+00, double* %retptr.1
ret i32 0
B26.endif.if.if: ; preds = %B26.endif.if
ret i32 %.184
}
define i8* @"_ZN7cpython8__main__35temperature_effectiveness_plate$242Eddxxb"(i8* %py_closure, i8* %py_args, i8* %py_kws) {
entry:
%.5 = alloca i8*
%.6 = alloca i8*
%.7 = alloca i8*
%.8 = alloca i8*
%.9 = alloca i8*
%.10 = call i32 (i8*, i8*, i64, i64, ...) @PyArg_UnpackTuple(i8* %py_args, i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.const.temperature_effectiveness_plate, i32 0, i32 0), i64 5, i64 5, i8** %.5, i8** %.6, i8** %.7, i8** %.8, i8** %.9)
%.11 = icmp eq i32 %.10, 0
%.82 = alloca double
store double 0.000000e+00, double* %.82
%excinfo = alloca { i8*, i32 }*
store { i8*, i32 }* null, { i8*, i32 }** %excinfo
br i1 %.11, label %entry.if, label %entry.endif, !prof !0
entry.if: ; preds = %entry.endif.endif.endif.e...endif.endif.endif, %entry.endif.endif.endif.e...endif.endif.if, %entry.endif.endif.endif.e...endif.endif.if.if, %entry.endif.endif.endif.endif.endif.endif.endif.endif, %entry.endif.endif.endif.endif.endif.endif.endif, %entry.endif.endif.endif.endif.endif, %entry.endif.endif.endif, %entry.endif.endif, %entry.endif.endif.endif.e...endif.endif.endif.if, %entry.endif.endif.endif.e...endif.1, %entry
ret i8* null
entry.endif: ; preds = %entry
%.15 = load i8*, i8** @"_ZN08NumbaEnv8__main__35temperature_effectiveness_plate$242Eddxxb"
%.16 = ptrtoint i8* %.15 to i64
%.17 = add i64 %.16, 16
%.18 = inttoptr i64 %.17 to i8*
%.20 = icmp eq i8* null, %.15
br i1 %.20, label %entry.endif.if, label %entry.endif.endif, !prof !0
entry.endif.if: ; preds = %entry.endif
call void @PyErr_SetString(i8* @PyExc_RuntimeError, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @".const.missing Environment", i32 0, i32 0))
ret i8* null
entry.endif.endif: ; preds = %entry.endif
%.24 = load i8*, i8** %.5
%.25 = call i8* @PyNumber_Float(i8* %.24)
%.26 = call double @PyFloat_AsDouble(i8* %.25)
call void @Py_DecRef(i8* %.25)
%.28 = call i8* @PyErr_Occurred()
%.29 = icmp ne i8* null, %.28
br i1 %.29, label %entry.if, label %entry.endif.endif.endif, !prof !0
entry.endif.endif.endif: ; preds = %entry.endif.endif
%.33 = load i8*, i8** %.6
%.34 = call i8* @PyNumber_Float(i8* %.33)
%.35 = call double @PyFloat_AsDouble(i8* %.34)
call void @Py_DecRef(i8* %.34)
%.37 = call i8* @PyErr_Occurred()
%.38 = icmp ne i8* null, %.37
br i1 %.38, label %entry.if, label %entry.endif.endif.endif.endif, !prof !0
entry.endif.endif.endif.endif: ; preds = %entry.endif.endif.endif
%.42 = load i8*, i8** %.7
%.45 = call i8* @PyNumber_Long(i8* %.42)
%.46 = icmp ne i8* null, %.45
br i1 %.46, label %entry.endif.endif.endif.endif.if, label %entry.endif.endif.endif.endif.endif, !prof !1
entry.endif.endif.endif.endif.if: ; preds = %entry.endif.endif.endif.endif
%.48 = call i64 @PyLong_AsLongLong(i8* %.45)
call void @Py_DecRef(i8* %.45)
br label %entry.endif.endif.endif.endif.endif
entry.endif.endif.endif.endif.endif: ; preds = %entry.endif.endif.endif.endif.if, %entry.endif.endif.endif.endif
%.43.0 = phi i64 [ %.48, %entry.endif.endif.endif.endif.if ], [ 0, %entry.endif.endif.endif.endif ]
%.53 = call i8* @PyErr_Occurred()
%.54 = icmp ne i8* null, %.53
br i1 %.54, label %entry.if, label %entry.endif.endif.endif.endif.endif.endif, !prof !0
entry.endif.endif.endif.endif.endif.endif: ; preds = %entry.endif.endif.endif.endif.endif
%.58 = load i8*, i8** %.8
%.61 = call i8* @PyNumber_Long(i8* %.58)
%.62 = icmp ne i8* null, %.61
br i1 %.62, label %entry.endif.endif.endif.endif.endif.endif.if, label %entry.endif.endif.endif.endif.endif.endif.endif, !prof !1
entry.endif.endif.endif.endif.endif.endif.if: ; preds = %entry.endif.endif.endif.endif.endif.endif
%.64 = call i64 @PyLong_AsLongLong(i8* %.61)
call void @Py_DecRef(i8* %.61)
br label %entry.endif.endif.endif.endif.endif.endif.endif
entry.endif.endif.endif.endif.endif.endif.endif: ; preds = %entry.endif.endif.endif.endif.endif.endif.if, %entry.endif.endif.endif.endif.endif.endif
%.59.0 = phi i64 [ %.64, %entry.endif.endif.endif.endif.endif.endif.if ], [ 0, %entry.endif.endif.endif.endif.endif.endif ]
%.69 = call i8* @PyErr_Occurred()
%.70 = icmp ne i8* null, %.69
br i1 %.70, label %entry.if, label %entry.endif.endif.endif.endif.endif.endif.endif.endif, !prof !0
entry.endif.endif.endif.endif.endif.endif.endif.endif: ; preds = %entry.endif.endif.endif.endif.endif.endif.endif
%.74 = load i8*, i8** %.9
%.75 = call i32 @PyObject_IsTrue(i8* %.74)
%.76 = icmp ne i32 %.75, 0
%.77 = call i8* @PyErr_Occurred()
%.78 = icmp ne i8* null, %.77
br i1 %.78, label %entry.if, label %entry.endif.endif.endif.e...endif, !prof !0
entry.endif.endif.endif.e...endif: ; preds = %entry.endif.endif.endif.endif.endif.endif.endif.endif
store double 0.000000e+00, double* %.82
%.86 = zext i1 %.76 to i8
%.87 = call i32 @"_ZN8__main__35temperature_effectiveness_plate$242Eddxxb"(double* %.82, { i8*, i32 }** %excinfo, double %.26, double %.35, i64 %.43.0, i64 %.59.0, i8 %.86)
%.88 = load { i8*, i32 }*, { i8*, i32 }** %excinfo
%.89 = icmp eq i32 %.87, 0
%.90 = icmp eq i32 %.87, -2
%.93 = or i1 %.89, %.90
%.95 = icmp sge i32 %.87, 1
%.97 = load double, double* %.82
switch i32 %.87, label %entry.endif.endif.endif.e...endif.endif [
i32 -2, label %entry.endif.endif.endif.e...endif.if
i32 0, label %entry.endif.endif.endif.e...endif.if
]
entry.endif.endif.endif.e...endif.if: ; preds = %entry.endif.endif.endif.e...endif, %entry.endif.endif.endif.e...endif
br i1 %.90, label %entry.endif.endif.endif.e...endif.if.if, label %entry.endif.endif.endif.e...endif.if.endif
entry.endif.endif.endif.e...endif.endif: ; preds = %entry.endif.endif.endif.e...endif
br i1 %.95, label %entry.endif.endif.endif.e...endif.endif.if, label %entry.endif.endif.endif.e...endif.endif.endif
entry.endif.endif.endif.e...endif.if.if: ; preds = %entry.endif.endif.endif.e...endif.if
call void @Py_IncRef(i8* @_Py_NoneStruct)
ret i8* @_Py_NoneStruct
entry.endif.endif.endif.e...endif.if.endif: ; preds = %entry.endif.endif.endif.e...endif.if
%.102 = call i8* @PyFloat_FromDouble(double %.97)
ret i8* %.102
entry.endif.endif.endif.e...endif.endif.if: ; preds = %entry.endif.endif.endif.e...endif.endif
call void @PyErr_Clear()
%.107 = load { i8*, i32 }, { i8*, i32 }* %.88
%.108 = extractvalue { i8*, i32 } %.107, 0
%.110 = extractvalue { i8*, i32 } %.107, 1
%.111 = call i8* @numba_unpickle(i8* %.108, i32 %.110)
%.112 = icmp ne i8* null, %.111
br i1 %.112, label %entry.endif.endif.endif.e...endif.endif.if.if, label %entry.if, !prof !1
entry.endif.endif.endif.e...endif.endif.endif: ; preds = %entry.endif.endif.endif.e...endif.endif
switch i32 %.87, label %entry.endif.endif.endif.e...endif.1 [
i32 -3, label %entry.endif.endif.endif.e...endif.endif.endif.if
i32 -1, label %entry.if
]
entry.endif.endif.endif.e...endif.endif.if.if: ; preds = %entry.endif.endif.endif.e...endif.endif.if
call void @numba_do_raise(i8* %.111)
br label %entry.if
entry.endif.endif.endif.e...endif.endif.endif.if: ; preds = %entry.endif.endif.endif.e...endif.endif.endif
call void @PyErr_SetNone(i8* @PyExc_StopIteration)
br label %entry.if
entry.endif.endif.endif.e...endif.1: ; preds = %entry.endif.endif.endif.e...endif.endif.endif
call void @PyErr_SetString(i8* @PyExc_SystemError, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @".const.unknown error when calling native function", i32 0, i32 0))
br label %entry.if
}
declare i32 @PyArg_UnpackTuple(i8*, i8*, i64, i64, ...)
declare void @PyErr_SetString(i8*, i8*)
declare i8* @PyNumber_Float(i8*)
declare double @PyFloat_AsDouble(i8*)
declare void @Py_DecRef(i8*)
declare i8* @PyErr_Occurred()
declare i8* @PyNumber_Long(i8*)
declare i64 @PyLong_AsLongLong(i8*)
declare i32 @PyObject_IsTrue(i8*)
declare void @Py_IncRef(i8*)
declare i8* @PyFloat_FromDouble(double)
declare void @PyErr_Clear()
declare i8* @numba_unpickle(i8*, i32)
declare void @numba_do_raise(i8*)
declare void @PyErr_SetNone(i8*)
define double @"cfunc._ZN8__main__35temperature_effectiveness_plate$242Eddxxb"(double %.1, double %.2, i64 %.3, i64 %.4, i1 %.5) {
entry:
%.7 = alloca double
store double 0.000000e+00, double* %.7
%excinfo = alloca { i8*, i32 }*
store { i8*, i32 }* null, { i8*, i32 }** %excinfo
%.11 = zext i1 %.5 to i8
%.12 = call i32 @"_ZN8__main__35temperature_effectiveness_plate$242Eddxxb"(double* %.7, { i8*, i32 }** %excinfo, double %.1, double %.2, i64 %.3, i64 %.4, i8 %.11)
%.13 = load { i8*, i32 }*, { i8*, i32 }** %excinfo
%.14 = icmp eq i32 %.12, 0
%.15 = icmp eq i32 %.12, -2
%.18 = or i1 %.14, %.15
%.19 = xor i1 %.18, true
%.20 = icmp sge i32 %.12, 1
%.22 = load double, double* %.7
%.24 = alloca i32
store i32 0, i32* %.24
br i1 %.19, label %entry.if, label %entry.endif, !prof !0
entry.if: ; preds = %entry
call void @numba_gil_ensure(i32* %.24)
br i1 %.20, label %entry.if.if, label %entry.if.endif
entry.endif: ; preds = %.27, %entry
ret double %.22
.27: ; preds = %entry.if.endif, %entry.if.if, %entry.if.if.if, %entry.if.endif.endif.endif, %entry.if.endif.if
%.47 = call i8* @PyUnicode_FromString(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @".const.<numba.core.cpu.CPUContext object at 0x7fe2d115e6d0>", i32 0, i32 0))
call void @PyErr_WriteUnraisable(i8* %.47)
call void @Py_DecRef(i8* %.47)
call void @numba_gil_release(i32* %.24)
br label %entry.endif
entry.if.if: ; preds = %entry.if
call void @PyErr_Clear()
%.30 = load { i8*, i32 }, { i8*, i32 }* %.13
%.31 = extractvalue { i8*, i32 } %.30, 0
%.33 = extractvalue { i8*, i32 } %.30, 1
%.34 = call i8* @numba_unpickle(i8* %.31, i32 %.33)
%.35 = icmp ne i8* null, %.34
br i1 %.35, label %entry.if.if.if, label %.27, !prof !1
entry.if.endif: ; preds = %entry.if
switch i32 %.12, label %entry.if.endif.endif.endif [
i32 -3, label %entry.if.endif.if
i32 -1, label %.27
]
entry.if.if.if: ; preds = %entry.if.if
call void @numba_do_raise(i8* %.34)
br label %.27
entry.if.endif.if: ; preds = %entry.if.endif
call void @PyErr_SetNone(i8* @PyExc_StopIteration)
br label %.27
entry.if.endif.endif.endif: ; preds = %entry.if.endif
call void @PyErr_SetString(i8* @PyExc_SystemError, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @".const.unknown error when calling native function.1", i32 0, i32 0))
br label %.27
}
declare void @numba_gil_ensure(i32*)
declare i8* @PyUnicode_FromString(i8*)
declare void @PyErr_WriteUnraisable(i8*)
declare void @numba_gil_release(i32*)
!0 = !{!"branch_weights", i32 1, i32 99}
!1 = !{!"branch_weights", i32 99, i32 1}
================================================================================
================================================================================
-----------------OPTIMIZED DUMP temperature_effectiveness_plate-----------------
; ModuleID = 'temperature_effectiveness_plate'
source_filename = "<string>"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
@"_ZN08NumbaEnv8__main__35temperature_effectiveness_plate$242Eddxxb" = common local_unnamed_addr global i8* null
@.const.picklebuf.140612147179104 = internal constant { i8*, i32 } { i8* getelementptr inbounds ([163 x i8], [163 x i8]* @.const.pickledata.140612147179104, i32 0, i32 0), i32 163 }
@.const.picklebuf.140612147179184 = internal constant { i8*, i32 } { i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.const.pickledata.140612147179184, i32 0, i32 0), i32 69 }
@.const.pickledata.140612147179184 = internal constant [69 x i8] c"\80\04\95:\00\00\00\00\00\00\00\8C\08builtins\94\8C\11ZeroDivisionError\94\93\94\8C\10division by zero\94\85\94N\87\94."
@.const.pickledata.140612147179104 = internal constant [163 x i8] c"\80\04\95\98\00\00\00\00\00\00\00\8C\08builtins\94\8C\0AValueError\94\93\94\8C<Supported number of passes does not have a formula available\94\85\94\8C\1Ftemperature_effectiveness_plate\94\8C\11issue2_minimal.py\94K\0D\87\94\87\94."
@.const.temperature_effectiveness_plate = internal constant [32 x i8] c"temperature_effectiveness_plate\00"
@PyExc_RuntimeError = external global i8
@".const.missing Environment" = internal constant [20 x i8] c"missing Environment\00"
@".const.<numba.core.cpu.CPUContext object at 0x7fe2d115e6d0>" = internal constant [53 x i8] c"<numba.core.cpu.CPUContext object at 0x7fe2d115e6d0>\00"
; Function Attrs: nounwind writeonly
define i32 @"_ZN8__main__35temperature_effectiveness_plate$242Eddxxb"(double* noalias nocapture %retptr.1, { i8*, i32 }** noalias nocapture %excinfo.1, double %arg.R1.1, double %arg.NTU1.1, i64 %arg.Np1.1, i64 %arg.Np2.1, i8 %arg.reverse.1) local_unnamed_addr #0 {
entry:
%.38 = icmp eq i64 %arg.Np1.1, 1
%.64 = icmp eq i64 %arg.Np2.1, 1
%or.cond = and i1 %.38, %.64
br i1 %or.cond, label %B18, label %B22
B18: ; preds = %entry
store double 1.100000e+00, double* %retptr.1, align 8
ret i32 0
B22: ; preds = %entry
%.11 = icmp eq i8 %arg.reverse.1, 0
br i1 %.11, label %B26, label %B64
B26: ; preds = %B22
%.131 = fcmp oeq double %arg.R1.1, 0.000000e+00
br i1 %.131, label %B26.if, label %B26.endif.if, !prof !0
B64: ; preds = %B22
store { i8*, i32 }* @.const.picklebuf.140612147179104, { i8*, i32 }** %excinfo.1, align 8
ret i32 1
B26.if: ; preds = %B26
store { i8*, i32 }* @.const.picklebuf.140612147179184, { i8*, i32 }** %excinfo.1, align 8
ret i32 1
B26.endif.if: ; preds = %B26
%0 = bitcast { i8*, i32 }** %excinfo.1 to i64*
store i64 ptrtoint ({ i8*, i32 }* @.const.picklebuf.140612147179104 to i64), i64* %0, align 8
ret i32 1
}
define i8* @"_ZN7cpython8__main__35temperature_effectiveness_plate$242Eddxxb"(i8* nocapture readnone %py_closure, i8* %py_args, i8* nocapture readnone %py_kws) local_unnamed_addr {
entry:
%.5 = alloca i8*, align 8
%.6 = alloca i8*, align 8
%.7 = alloca i8*, align 8
%.8 = alloca i8*, align 8
%.9 = alloca i8*, align 8
%.10 = call i32 (i8*, i8*, i64, i64, ...) @PyArg_UnpackTuple(i8* %py_args, i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.const.temperature_effectiveness_plate, i64 0, i64 0), i64 5, i64 5, i8** nonnull %.5, i8** nonnull %.6, i8** nonnull %.7, i8** nonnull %.8, i8** nonnull %.9)
%.11 = icmp eq i32 %.10, 0
br i1 %.11, label %entry.if, label %entry.endif, !prof !0
entry.if: ; preds = %entry.endif.endif.endif.e...endif.endif.if, %entry.endif.endif.endif.endif.endif.endif.endif.endif, %entry.endif.endif.endif.endif.endif.endif.endif, %entry.endif.endif.endif.endif.endif, %entry.endif.endif.endif, %entry.endif.endif, %entry.endif.endif.endif.e...endif.endif.if.if, %entry
ret i8* null
entry.endif: ; preds = %entry
%.15 = load i8*, i8** @"_ZN08NumbaEnv8__main__35temperature_effectiveness_plate$242Eddxxb", align 8
%.20 = icmp eq i8* %.15, null
br i1 %.20, label %entry.endif.if, label %entry.endif.endif, !prof !0
entry.endif.if: ; preds = %entry.endif
call void @PyErr_SetString(i8* nonnull @PyExc_RuntimeError, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @".const.missing Environment", i64 0, i64 0))
ret i8* null
entry.endif.endif: ; preds = %entry.endif
%.24 = load i8*, i8** %.5, align 8
%.25 = call i8* @PyNumber_Float(i8* %.24)
%.26 = call double @PyFloat_AsDouble(i8* %.25)
call void @Py_DecRef(i8* %.25)
%.28 = call i8* @PyErr_Occurred()
%.29 = icmp eq i8* %.28, null
br i1 %.29, label %entry.endif.endif.endif, label %entry.if, !prof !1
entry.endif.endif.endif: ; preds = %entry.endif.endif
%.33 = load i8*, i8** %.6, align 8
%.34 = call i8* @PyNumber_Float(i8* %.33)
%.35 = call double @PyFloat_AsDouble(i8* %.34)
call void @Py_DecRef(i8* %.34)
%.37 = call i8* @PyErr_Occurred()
%.38 = icmp eq i8* %.37, null
br i1 %.38, label %entry.endif.endif.endif.endif, label %entry.if, !prof !1
entry.endif.endif.endif.endif: ; preds = %entry.endif.endif.endif
%.42 = load i8*, i8** %.7, align 8
%.45 = call i8* @PyNumber_Long(i8* %.42)
%.46 = icmp eq i8* %.45, null
br i1 %.46, label %entry.endif.endif.endif.endif.endif, label %entry.endif.endif.endif.endif.if, !prof !0
entry.endif.endif.endif.endif.if: ; preds = %entry.endif.endif.endif.endif
%.48 = call i64 @PyLong_AsLongLong(i8* nonnull %.45)
call void @Py_DecRef(i8* nonnull %.45)
br label %entry.endif.endif.endif.endif.endif
entry.endif.endif.endif.endif.endif: ; preds = %entry.endif.endif.endif.endif, %entry.endif.endif.endif.endif.if
%.43.0 = phi i64 [ %.48, %entry.endif.endif.endif.endif.if ], [ 0, %entry.endif.endif.endif.endif ]
%.53 = call i8* @PyErr_Occurred()
%.54 = icmp eq i8* %.53, null
br i1 %.54, label %entry.endif.endif.endif.endif.endif.endif, label %entry.if, !prof !1
entry.endif.endif.endif.endif.endif.endif: ; preds = %entry.endif.endif.endif.endif.endif
%.58 = load i8*, i8** %.8, align 8
%.61 = call i8* @PyNumber_Long(i8* %.58)
%.62 = icmp eq i8* %.61, null
br i1 %.62, label %entry.endif.endif.endif.endif.endif.endif.endif, label %entry.endif.endif.endif.endif.endif.endif.if, !prof !0
entry.endif.endif.endif.endif.endif.endif.if: ; preds = %entry.endif.endif.endif.endif.endif.endif
%.64 = call i64 @PyLong_AsLongLong(i8* nonnull %.61)
call void @Py_DecRef(i8* nonnull %.61)
br label %entry.endif.endif.endif.endif.endif.endif.endif
entry.endif.endif.endif.endif.endif.endif.endif: ; preds = %entry.endif.endif.endif.endif.endif.endif, %entry.endif.endif.endif.endif.endif.endif.if
%.59.0 = phi i64 [ %.64, %entry.endif.endif.endif.endif.endif.endif.if ], [ 0, %entry.endif.endif.endif.endif.endif.endif ]
%.69 = call i8* @PyErr_Occurred()
%.70 = icmp eq i8* %.69, null
br i1 %.70, label %entry.endif.endif.endif.endif.endif.endif.endif.endif, label %entry.if, !prof !1
entry.endif.endif.endif.endif.endif.endif.endif.endif: ; preds = %entry.endif.endif.endif.endif.endif.endif.endif
%.74 = load i8*, i8** %.9, align 8
%.75 = call i32 @PyObject_IsTrue(i8* %.74)
%.77 = call i8* @PyErr_Occurred()
%.78 = icmp eq i8* %.77, null
br i1 %.78, label %entry.endif.endif.endif.e...endif, label %entry.if, !prof !1
entry.endif.endif.endif.e...endif: ; preds = %entry.endif.endif.endif.endif.endif.endif.endif.endif
%.38.i = icmp eq i64 %.43.0, 1
%.64.i = icmp eq i64 %.59.0, 1
%or.cond.i = and i1 %.38.i, %.64.i
br i1 %or.cond.i, label %entry.endif.endif.endif.e...endif.if.endif, label %B22.i
B22.i: ; preds = %entry.endif.endif.endif.e...endif
%.76 = icmp eq i32 %.75, 0
br i1 %.76, label %B26.i, label %entry.endif.endif.endif.e...endif.endif.if
B26.i: ; preds = %B22.i
%.131.i = fcmp oeq double %.26, 0.000000e+00
br i1 %.131.i, label %entry.endif.endif.endif.e...endif.endif.if, label %B26.endif.if.i, !prof !0
B26.endif.if.i: ; preds = %B26.i
br label %entry.endif.endif.endif.e...endif.endif.if
entry.endif.endif.endif.e...endif.if.endif: ; preds = %entry.endif.endif.endif.e...endif
%.102 = call i8* @PyFloat_FromDouble(double 1.100000e+00)
ret i8* %.102
entry.endif.endif.endif.e...endif.endif.if: ; preds = %B26.i, %B22.i, %B26.endif.if.i
%excinfo.sroa.0.0.ph = phi i64 [ ptrtoint ({ i8*, i32 }* @.const.picklebuf.140612147179184 to i64), %B26.i ], [ ptrtoint ({ i8*, i32 }* @.const.picklebuf.140612147179104 to i64), %B22.i ], [ ptrtoint ({ i8*, i32 }* @.const.picklebuf.140612147179104 to i64), %B26.endif.if.i ]
%0 = inttoptr i64 %excinfo.sroa.0.0.ph to { i8*, i32 }*
call void @PyErr_Clear()
%.107 = load { i8*, i32 }, { i8*, i32 }* %0, align 8
%.108 = extractvalue { i8*, i32 } %.107, 0
%.110 = extractvalue { i8*, i32 } %.107, 1
%.111 = call i8* @numba_unpickle(i8* %.108, i32 %.110)
%.112 = icmp eq i8* %.111, null
br i1 %.112, label %entry.if, label %entry.endif.endif.endif.e...endif.endif.if.if, !prof !0
entry.endif.endif.endif.e...endif.endif.if.if: ; preds = %entry.endif.endif.endif.e...endif.endif.if
call void @numba_do_raise(i8* nonnull %.111)
br label %entry.if
}
declare i32 @PyArg_UnpackTuple(i8*, i8*, i64, i64, ...) local_unnamed_addr
declare void @PyErr_SetString(i8*, i8*) local_unnamed_addr
declare i8* @PyNumber_Float(i8*) local_unnamed_addr
declare double @PyFloat_AsDouble(i8*) local_unnamed_addr
declare void @Py_DecRef(i8*) local_unnamed_addr
declare i8* @PyErr_Occurred() local_unnamed_addr
declare i8* @PyNumber_Long(i8*) local_unnamed_addr
declare i64 @PyLong_AsLongLong(i8*) local_unnamed_addr
declare i32 @PyObject_IsTrue(i8*) local_unnamed_addr
declare i8* @PyFloat_FromDouble(double) local_unnamed_addr
declare void @PyErr_Clear() local_unnamed_addr
declare i8* @numba_unpickle(i8*, i32) local_unnamed_addr
declare void @numba_do_raise(i8*) local_unnamed_addr
define double @"cfunc._ZN8__main__35temperature_effectiveness_plate$242Eddxxb"(double %.1, double %.2, i64 %.3, i64 %.4, i1 %.5) local_unnamed_addr {
entry:
%.38.i = icmp eq i64 %.3, 1
%.64.i = icmp eq i64 %.4, 1
%or.cond.i = and i1 %.38.i, %.64.i
br i1 %or.cond.i, label %entry.endif, label %B22.i
B22.i: ; preds = %entry
br i1 %.5, label %entry.if.if, label %B26.i
B26.i: ; preds = %B22.i
%.131.i = fcmp oeq double %.1, 0.000000e+00
br i1 %.131.i, label %entry.if.if, label %B26.endif.if.i, !prof !0
B26.endif.if.i: ; preds = %B26.i
br label %entry.if.if
entry.endif: ; preds = %entry, %.27
%.7.06 = phi double [ 0.000000e+00, %.27 ], [ 1.100000e+00, %entry ]
ret double %.7.06
.27: ; preds = %entry.if.if, %entry.if.if.if
%.47 = call i8* @PyUnicode_FromString(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @".const.<numba.core.cpu.CPUContext object at 0x7fe2d115e6d0>", i64 0, i64 0))
call void @PyErr_WriteUnraisable(i8* %.47)
call void @Py_DecRef(i8* %.47)
call void @numba_gil_release(i32* nonnull %.245)
br label %entry.endif
entry.if.if: ; preds = %B22.i, %B26.i, %B26.endif.if.i
%excinfo.sroa.0.0.ph = phi i64 [ ptrtoint ({ i8*, i32 }* @.const.picklebuf.140612147179184 to i64), %B26.i ], [ ptrtoint ({ i8*, i32 }* @.const.picklebuf.140612147179104 to i64), %B22.i ], [ ptrtoint ({ i8*, i32 }* @.const.picklebuf.140612147179104 to i64), %B26.endif.if.i ]
%0 = inttoptr i64 %excinfo.sroa.0.0.ph to { i8*, i32 }*
%.245 = alloca i32, align 4
store i32 0, i32* %.245, align 4
call void @numba_gil_ensure(i32* nonnull %.245)
call void @PyErr_Clear()
%.30 = load { i8*, i32 }, { i8*, i32 }* %0, align 8
%.31 = extractvalue { i8*, i32 } %.30, 0
%.33 = extractvalue { i8*, i32 } %.30, 1
%.34 = call i8* @numba_unpickle(i8* %.31, i32 %.33)
%.35 = icmp eq i8* %.34, null
br i1 %.35, label %.27, label %entry.if.if.if, !prof !0
entry.if.if.if: ; preds = %entry.if.if
call void @numba_do_raise(i8* nonnull %.34)
br label %.27
}
declare void @numba_gil_ensure(i32*) local_unnamed_addr
declare i8* @PyUnicode_FromString(i8*) local_unnamed_addr
declare void @PyErr_WriteUnraisable(i8*) local_unnamed_addr
declare void @numba_gil_release(i32*) local_unnamed_addr
; Function Attrs: nounwind
declare void @llvm.stackprotector(i8*, i8**) #1
attributes #0 = { nounwind writeonly }
attributes #1 = { nounwind }
!0 = !{!"branch_weights", i32 1, i32 99}
!1 = !{!"branch_weights", i32 99, i32 1}
================================================================================
================================================================================
--------------------ASSEMBLY temperature_effectiveness_plate--------------------
.text
.file "<string>"
.globl _ZN8__main__35temperature_effectiveness_plate$242Eddxxb
.p2align 4, 0x90
.type _ZN8__main__35temperature_effectiveness_plate$242Eddxxb,@function
_ZN8__main__35temperature_effectiveness_plate$242Eddxxb:
cmpq $1, %rdx
jne .LBB0_2
cmpq $1, %rcx
jne .LBB0_2
movabsq $4607632778762754458, %rax
movq %rax, (%rdi)
xorl %eax, %eax
retq
.LBB0_2:
testb %r8b, %r8b
jne .LBB0_5
vxorps %xmm1, %xmm1, %xmm1
vucomisd %xmm1, %xmm0
jne .LBB0_5
jnp .LBB0_4
.LBB0_5:
movabsq $.const.picklebuf.140612147179104, %rax
movq %rax, (%rsi)
movl $1, %eax
retq
.LBB0_4:
movabsq $.const.picklebuf.140612147179184, %rax
movq %rax, (%rsi)
movl $1, %eax
retq
.Lfunc_end0:
.size _ZN8__main__35temperature_effectiveness_plate$242Eddxxb, .Lfunc_end0-_ZN8__main__35temperature_effectiveness_plate$242Eddxxb
.section .rodata.cst8,"aM",@progbits,8
.p2align 3
.LCPI1_0:
.quad 4607632778762754458
.text
.globl _ZN7cpython8__main__35temperature_effectiveness_plate$242Eddxxb
.p2align 4, 0x90
.type _ZN7cpython8__main__35temperature_effectiveness_plate$242Eddxxb,@function
_ZN7cpython8__main__35temperature_effectiveness_plate$242Eddxxb:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
pushq %r15
.cfi_def_cfa_offset 24
pushq %r14
.cfi_def_cfa_offset 32
pushq %r13
.cfi_def_cfa_offset 40
pushq %r12
.cfi_def_cfa_offset 48
pushq %rbx
.cfi_def_cfa_offset 56
subq $56, %rsp
.cfi_def_cfa_offset 112
.cfi_offset %rbx, -56
.cfi_offset %r12, -48
.cfi_offset %r13, -40
.cfi_offset %r14, -32
.cfi_offset %r15, -24
.cfi_offset %rbp, -16
movq %rsi, %rdi
subq $8, %rsp
.cfi_adjust_cfa_offset 8
leaq 24(%rsp), %rbp
leaq 32(%rsp), %rbx
leaq 40(%rsp), %r10
movabsq $.const.temperature_effectiveness_plate, %rsi
movabsq $PyArg_UnpackTuple, %r11
leaq 56(%rsp), %r8
leaq 48(%rsp), %r9
movl $5, %edx
movl $5, %ecx
movl $0, %eax
pushq %rbp
.cfi_adjust_cfa_offset 8
pushq %rbx
.cfi_adjust_cfa_offset 8
pushq %r10
.cfi_adjust_cfa_offset 8
callq *%r11
addq $32, %rsp
.cfi_adjust_cfa_offset -32
testl %eax, %eax
je .LBB1_1
movabsq $_ZN08NumbaEnv8__main__35temperature_effectiveness_plate$242Eddxxb, %rax
cmpq $0, (%rax)
je .LBB1_4
movq 48(%rsp), %rdi
movabsq $PyNumber_Float, %r14
callq *%r14
movq %rax, %rbx
movabsq $PyFloat_AsDouble, %rbp
movq %rax, %rdi
callq *%rbp
vmovsd %xmm0, 8(%rsp)
movabsq $Py_DecRef, %r12
movq %rbx, %rdi
callq *%r12
movabsq $PyErr_Occurred, %r15
callq *%r15
testq %rax, %rax
jne .LBB1_1
movq 40(%rsp), %rdi
callq *%r14
movq %rax, %rbx
movq %rax, %rdi
callq *%rbp
movq %rbx, %rdi
callq *%r12
callq *%r15
testq %rax, %rax
jne .LBB1_1
movq 32(%rsp), %rdi
movabsq $PyNumber_Long, %rbp
callq *%rbp
movabsq $PyLong_AsLongLong, %r13
testq %rax, %rax
je .LBB1_8
movq %rax, %rbx
movq %rax, %rdi
callq *%r13
movq %rax, %r14
movq %rbx, %rdi
callq *%r12
callq *%r15
testq %rax, %rax
jne .LBB1_1
.LBB1_11:
movq 24(%rsp), %rdi
callq *%rbp
testq %rax, %rax
je .LBB1_12
movq %rax, %rbp
movq %rax, %rdi
callq *%r13
movq %rax, %rbx
movq %rbp, %rdi
callq *%r12
callq *%r15
testq %rax, %rax
jne .LBB1_1
.LBB1_15:
movq 16(%rsp), %rdi
movabsq $PyObject_IsTrue, %rax
callq *%rax
movl %eax, %ebp
callq *%r15
testq %rax, %rax
jne .LBB1_1
cmpq $1, %r14
jne .LBB1_18
cmpq $1, %rbx
jne .LBB1_18
movabsq $PyFloat_FromDouble, %rax
movabsq $.LCPI1_0, %rcx
vmovsd (%rcx), %xmm0
callq *%rax
jmp .LBB1_2
.LBB1_18:
movabsq $.const.picklebuf.140612147179104, %rbx
testl %ebp, %ebp
jne .LBB1_21
vxorps %xmm0, %xmm0, %xmm0
vmovsd 8(%rsp), %xmm1
vucomisd %xmm0, %xmm1
jne .LBB1_21
jnp .LBB1_20
.LBB1_21:
movabsq $PyErr_Clear, %rax
callq *%rax
movl 8(%rbx), %esi
movq (%rbx), %rdi
movabsq $numba_unpickle, %rax
callq *%rax
testq %rax, %rax
je .LBB1_1
movabsq $numba_do_raise, %rcx
movq %rax, %rdi
callq *%rcx
.LBB1_1:
xorl %eax, %eax
.LBB1_2:
addq $56, %rsp
.cfi_def_cfa_offset 56
popq %rbx
.cfi_def_cfa_offset 48
popq %r12
.cfi_def_cfa_offset 40
popq %r13
.cfi_def_cfa_offset 32
popq %r14
.cfi_def_cfa_offset 24
popq %r15
.cfi_def_cfa_offset 16
popq %rbp
.cfi_def_cfa_offset 8
retq
.LBB1_4:
.cfi_def_cfa_offset 112
movabsq $PyExc_RuntimeError, %rdi
movabsq $".const.missing Environment", %rsi
movabsq $PyErr_SetString, %rax
callq *%rax
jmp .LBB1_1
.LBB1_8:
xorl %r14d, %r14d
callq *%r15
testq %rax, %rax
je .LBB1_11
jmp .LBB1_1
.LBB1_12:
xorl %ebx, %ebx
callq *%r15
testq %rax, %rax
je .LBB1_15
jmp .LBB1_1
.LBB1_20:
movabsq $.const.picklebuf.140612147179184, %rbx
jmp .LBB1_21
.Lfunc_end1:
.size _ZN7cpython8__main__35temperature_effectiveness_plate$242Eddxxb, .Lfunc_end1-_ZN7cpython8__main__35temperature_effectiveness_plate$242Eddxxb
.cfi_endproc
.section .rodata.cst8,"aM",@progbits,8
.p2align 3
.LCPI2_0:
.quad 4607632778762754458
.text
.globl cfunc._ZN8__main__35temperature_effectiveness_plate$242Eddxxb
.p2align 4, 0x90
.type cfunc._ZN8__main__35temperature_effectiveness_plate$242Eddxxb,@function
cfunc._ZN8__main__35temperature_effectiveness_plate$242Eddxxb:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset %rbp, -16
movq %rsp, %rbp
.cfi_def_cfa_register %rbp
pushq %r14
pushq %rbx
.cfi_offset %rbx, -32
.cfi_offset %r14, -24
cmpq $1, %rdi
jne .LBB2_3
cmpq $1, %rsi
jne .LBB2_3
movabsq $.LCPI2_0, %rax
vmovsd (%rax), %xmm0
jmp .LBB2_8
.LBB2_3:
movabsq $.const.picklebuf.140612147179104, %rbx
testb $1, %dl
jne .LBB2_6
vxorps %xmm1, %xmm1, %xmm1
vucomisd %xmm1, %xmm0
jne .LBB2_6
jnp .LBB2_5
.LBB2_6:
movq %rsp, %rax
leaq -16(%rax), %r14
movq %r14, %rsp
movl $0, -16(%rax)
movabsq $numba_gil_ensure, %rax
movq %r14, %rdi
callq *%rax
movabsq $PyErr_Clear, %rax
callq *%rax
movl 8(%rbx), %esi
movq (%rbx), %rdi
movabsq $numba_unpickle, %rax
callq *%rax
testq %rax, %rax
je .LBB2_7
movabsq $numba_do_raise, %rcx
movq %rax, %rdi
callq *%rcx
.LBB2_7:
movabsq $".const.<numba.core.cpu.CPUContext object at 0x7fe2d115e6d0>", %rdi
movabsq $PyUnicode_FromString, %rax
callq *%rax
movq %rax, %rbx
movabsq $PyErr_WriteUnraisable, %rax
movq %rbx, %rdi
callq *%rax
movabsq $Py_DecRef, %rax
movq %rbx, %rdi
callq *%rax
movabsq $numba_gil_release, %rax
movq %r14, %rdi
callq *%rax
vxorps %xmm0, %xmm0, %xmm0
.LBB2_8:
leaq -16(%rbp), %rsp
popq %rbx
popq %r14
popq %rbp
.cfi_def_cfa %rsp, 8
retq
.LBB2_5:
.cfi_def_cfa %rbp, 16
movabsq $.const.picklebuf.140612147179184, %rbx
jmp .LBB2_6
.Lfunc_end2:
.size cfunc._ZN8__main__35temperature_effectiveness_plate$242Eddxxb, .Lfunc_end2-cfunc._ZN8__main__35temperature_effectiveness_plate$242Eddxxb
.cfi_endproc
.type _ZN08NumbaEnv8__main__35temperature_effectiveness_plate$242Eddxxb,@object
.comm _ZN08NumbaEnv8__main__35temperature_effectiveness_plate$242Eddxxb,8,8
.type .const.picklebuf.140612147179104,@object
.section .rodata,"a",@progbits
.p2align 3
.const.picklebuf.140612147179104:
.quad .const.pickledata.140612147179104
.long 163
.zero 4
.size .const.picklebuf.140612147179104, 16
.type .const.picklebuf.140612147179184,@object
.p2align 3
.const.picklebuf.140612147179184:
.quad .const.pickledata.140612147179184
.long 69
.zero 4
.size .const.picklebuf.140612147179184, 16
.type .const.pickledata.140612147179184,@object
.p2align 4
.const.pickledata.140612147179184:
.ascii "\200\004\225:\000\000\000\000\000\000\000\214\bbuiltins\224\214\021ZeroDivisionError\224\223\224\214\020division by zero\224\205\224N\207\224."
.size .const.pickledata.140612147179184, 69
.type .const.pickledata.140612147179104,@object
.p2align 4
.const.pickledata.140612147179104:
.ascii "\200\004\225\230\000\000\000\000\000\000\000\214\bbuiltins\224\214\nValueError\224\223\224\214<Supported number of passes does not have a formula available\224\205\224\214\037temperature_effectiveness_plate\224\214\021issue2_minimal.py\224K\r\207\224\207\224."
.size .const.pickledata.140612147179104, 163
.type .const.temperature_effectiveness_plate,@object
.p2align 4
.const.temperature_effectiveness_plate:
.asciz "temperature_effectiveness_plate"
.size .const.temperature_effectiveness_plate, 32
.type ".const.missing Environment",@object
.p2align 4
".const.missing Environment":
.asciz "missing Environment"
.size ".const.missing Environment", 20
.type ".const.<numba.core.cpu.CPUContext object at 0x7fe2d115e6d0>",@object
.p2align 4
".const.<numba.core.cpu.CPUContext object at 0x7fe2d115e6d0>":
.asciz "<numba.core.cpu.CPUContext object at 0x7fe2d115e6d0>"
.size ".const.<numba.core.cpu.CPUContext object at 0x7fe2d115e6d0>", 53
.section ".note.GNU-stack","",@progbits
================================================================================
[cache] index loaded from '__pycache__/issue2_minimal.temperature_effectiveness_plate-3.py37m.nbi'
[cache] index saved to '__pycache__/issue2_minimal.temperature_effectiveness_plate-3.py37m.nbi'
[cache] data saved to '__pycache__/issue2_minimal.temperature_effectiveness_plate-3.py37m.1.nbc'
---- type variables ----
[$14compare_op.2 := bool,
$16pred := bool,
$20return_value.1 := float64,
$24pred := bool,
$30binary_true_divide.2 := float64,
$38binary_multiply.5 := float64,
$42load_global.6 := recursive(type(CPUDispatcher(<function temperature_effectiveness_plate at 0x7fe2e32c4ef0>))),
$56call_function_kw.13 := float64,
$62return_value.15 := float64,
$64load_global.0 := ValueError,
$68call_function.2 := ValueError(...),
$6compare_op.2 := bool,
$8pred := bool,
$const12.1 := Literal[int](1),
$const18.0 := float64,
$const26.0 := float64,
$const4.1 := Literal[int](1),
$const52.11 := bool,
$const60.14 := float64,
$const66.1 := Literal[str](Supported number of passes does not have a formula available),
NTU1 := float64,
NTU2 := float64,
Np1 := int64,
Np2 := int64,
P2 := float64,
R1 := float64,
R2 := float64,
arg.NTU1 := float64,
arg.Np1 := int64,
arg.Np2 := int64,
arg.R1 := float64,
arg.reverse := omitted(default=False),
bool16 := Function(<class 'bool'>),
bool24 := Function(<class 'bool'>),
bool8 := Function(<class 'bool'>),
reverse := bool]
-----------------------------------propagate------------------------------------
---- type variables ----
[$14compare_op.2 := bool,
$16pred := bool,
$20return_value.1 := float64,
$24pred := bool,
$30binary_true_divide.2 := float64,
$38binary_multiply.5 := float64,
$42load_global.6 := recursive(type(CPUDispatcher(<function temperature_effectiveness_plate at 0x7fe2e32c4ef0>))),
$56call_function_kw.13 := float64,
$62return_value.15 := float64,
$64load_global.0 := ValueError,
$68call_function.2 := ValueError(...),
$6compare_op.2 := bool,
$8pred := bool,
$const12.1 := Literal[int](1),
$const18.0 := float64,
$const26.0 := float64,
$const4.1 := Literal[int](1),
$const52.11 := bool,
$const60.14 := float64,
$const66.1 := Literal[str](Supported number of passes does not have a formula available),
NTU1 := float64,
NTU2 := float64,
Np1 := int64,
Np2 := int64,
P2 := float64,
R1 := float64,
R2 := float64,
arg.NTU1 := float64,
arg.Np1 := int64,
arg.Np2 := int64,
arg.R1 := float64,
arg.reverse := omitted(default=False),
bool16 := Function(<class 'bool'>),
bool24 := Function(<class 'bool'>),
bool8 := Function(<class 'bool'>),
reverse := bool]
---------------------------------Variable types---------------------------------
{'$14compare_op.2': bool,
'$16pred': bool,
'$20return_value.1': float64,
'$24pred': bool,
'$30binary_true_divide.2': float64,
'$38binary_multiply.5': float64,
'$42load_global.6': recursive(type(CPUDispatcher(<function temperature_effectiveness_plate at 0x7fe2e32c4ef0>))),
'$56call_function_kw.13': float64,
'$62return_value.15': float64,
'$64load_global.0': ValueError,
'$68call_function.2': ValueError(...),
'$6compare_op.2': bool,
'$8pred': bool,
'$const12.1': Literal[int](1),
'$const18.0': float64,
'$const26.0': float64,
'$const4.1': Literal[int](1),
'$const52.11': bool,
'$const60.14': float64,
'$const66.1': Literal[str](Supported number of passes does not have a formula available),
'NTU1': float64,
'NTU2': float64,
'Np1': int64,
'Np2': int64,
'P2': float64,
'R1': float64,
'R2': float64,
'arg.NTU1': float64,
'arg.Np1': int64,
'arg.Np2': int64,
'arg.R1': float64,
'arg.reverse': omitted(default=False),
'bool16': Function(<class 'bool'>),
'bool24': Function(<class 'bool'>),
'bool8': Function(<class 'bool'>),
'reverse': bool}
----------------------------------Return type-----------------------------------
float64
-----------------------------------Call types-----------------------------------
{$const26.0 / R1: (float64, float64) -> float64,
NTU1 * R1: (float64, float64) -> float64,
Np1 == $const4.1: (int64, int64) -> bool,
Np2 == $const12.1: (int64, int64) -> bool,
call $42load_global.6(func=$42load_global.6, args=[], kws=[('R1', Var(R2, issue2_minimal.py:8)), ('NTU1', Var(NTU2, issue2_minimal.py:9)), ('Np1', Var(Np2, issue2_minimal.py:5)), ('Np2', Var(Np1, issue2_minimal.py:5)), ('reverse', Var($const52.11, issue2_minimal.py:11))], vararg=None): (float64, float64, int64, int64, bool) -> float64,
call $64load_global.0($const66.1, func=$64load_global.0, args=[Var($const66.1, issue2_minimal.py:13)], kws=(), vararg=None): () -> ValueError(...),
call bool16($14compare_op.2, func=bool16, args=(Var($14compare_op.2, issue2_minimal.py:5),), kws=(), vararg=None): (bool,) -> bool,
call bool24(reverse, func=bool24, args=(Var(reverse, issue2_minimal.py:5),), kws=(), vararg=None): (bool,) -> bool,
call bool8($6compare_op.2, func=bool8, args=(Var($6compare_op.2, issue2_minimal.py:5),), kws=(), vararg=None): (bool,) -> bool}
------LLVM DUMP <function descriptor 'temperature_effectiveness_plate$1'>-------
; ModuleID = "temperature_effectiveness_plate$1"
target triple = "x86_64-unknown-linux-gnu"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
@"_ZN08NumbaEnv8__main__35temperature_effectiveness_plate$241Eddxx28omitted$28default$3dFalse$29" = common global i8* null
define i32 @"_ZN8__main__35temperature_effectiveness_plate$241Eddxx28omitted$28default$3dFalse$29"(double* noalias nocapture %"retptr", {i8*, i32}** noalias nocapture %"excinfo", double %"arg.R1", double %"arg.NTU1", i64 %"arg.Np1", i64 %"arg.Np2")
{
entry:
%"R1" = alloca double
store double 0.0, double* %"R1"
%"NTU1" = alloca double
store double 0.0, double* %"NTU1"
%"Np1" = alloca i64
store i64 0, i64* %"Np1"
%"Np2" = alloca i64
store i64 0, i64* %"Np2"
%"reverse" = alloca i1
store i1 0, i1* %"reverse"
%"$const4.1" = alloca i64
store i64 0, i64* %"$const4.1"
%"$6compare_op.2" = alloca i1
store i1 0, i1* %"$6compare_op.2"
%"bool8" = alloca i8*
store i8* null, i8** %"bool8"
%"$8pred" = alloca i1
store i1 0, i1* %"$8pred"
%"$const12.1" = alloca i64
store i64 0, i64* %"$const12.1"
%"$14compare_op.2" = alloca i1
store i1 0, i1* %"$14compare_op.2"
%"bool16" = alloca i8*
store i8* null, i8** %"bool16"
%"$16pred" = alloca i1
store i1 0, i1* %"$16pred"
%"$const18.0" = alloca double
store double 0.0, double* %"$const18.0"
%"$20return_value.1" = alloca double
store double 0.0, double* %"$20return_value.1"
%"bool24" = alloca i8*
store i8* null, i8** %"bool24"
%"$24pred" = alloca i1
store i1 0, i1* %"$24pred"
%"$const26.0" = alloca double
store double 0.0, double* %"$const26.0"
%"try_state" = alloca i64
store i64 0, i64* %"try_state"
%"$30binary_true_divide.2" = alloca double
store double 0.0, double* %"$30binary_true_divide.2"
%"R2" = alloca double
store double 0.0, double* %"R2"
%"$38binary_multiply.5" = alloca double
store double 0.0, double* %"$38binary_multiply.5"
%"NTU2" = alloca double
store double 0.0, double* %"NTU2"
%"$42load_global.6" = alloca i8*
store i8* null, i8** %"$42load_global.6"
%"$const52.11" = alloca i1
store i1 0, i1* %"$const52.11"
%".171" = alloca double
store double 0.0, double* %".171"
%"excinfo.1" = alloca {i8*, i32}*
store {i8*, i32}* null, {i8*, i32}** %"excinfo.1"
%"$56call_function_kw.13" = alloca double
store double 0.0, double* %"$56call_function_kw.13"
%"P2" = alloca double
store double 0.0, double* %"P2"
%"$const60.14" = alloca double
store double 0.0, double* %"$const60.14"
%"$62return_value.15" = alloca double
store double 0.0, double* %"$62return_value.15"
%"$64load_global.0" = alloca i8*
store i8* null, i8** %"$64load_global.0"
%"$const66.1" = alloca i8*
store i8* null, i8** %"$const66.1"
%"$68call_function.2" = alloca i8*
store i8* null, i8** %"$68call_function.2"
br label %"B0"
B0:
%".9" = load double, double* %"R1"
store double %"arg.R1", double* %"R1"
%".12" = load double, double* %"NTU1"
store double %"arg.NTU1", double* %"NTU1"
%".15" = load i64, i64* %"Np1"
store i64 %"arg.Np1", i64* %"Np1"
%".18" = load i64, i64* %"Np2"
store i64 %"arg.Np2", i64* %"Np2"
%".21" = load i1, i1* %"reverse"
store i1 false, i1* %"reverse"
%".24" = load i64, i64* %"$const4.1"
store i64 1, i64* %"$const4.1"
%".26" = load i64, i64* %"Np1"
%".27" = load i64, i64* %"$const4.1"
%".28" = icmp eq i64 %".26", 1
%".30" = load i1, i1* %"$6compare_op.2"
store i1 %".28", i1* %"$6compare_op.2"
%".32" = load i64, i64* %"$const4.1"
store i64 0, i64* %"$const4.1"
%".35" = load i8*, i8** %"bool8"
store i8* null, i8** %"bool8"
%".37" = load i1, i1* %"$6compare_op.2"
%".39" = load i1, i1* %"$8pred"
store i1 %".37", i1* %"$8pred"
%".41" = load i8*, i8** %"bool8"
store i8* null, i8** %"bool8"
%".43" = load i1, i1* %"$6compare_op.2"
store i1 0, i1* %"$6compare_op.2"
%".45" = load i1, i1* %"$8pred"
br i1 %".45", label %"B10", label %"B22"
B10:
%".47" = load i1, i1* %"$8pred"
store i1 0, i1* %"$8pred"
%".50" = load i64, i64* %"$const12.1"
store i64 1, i64* %"$const12.1"
%".52" = load i64, i64* %"Np2"
%".53" = load i64, i64* %"$const12.1"
%".54" = icmp eq i64 %".52", 1
%".56" = load i1, i1* %"$14compare_op.2"
store i1 %".54", i1* %"$14compare_op.2"
%".58" = load i64, i64* %"$const12.1"
store i64 0, i64* %"$const12.1"
%".61" = load i8*, i8** %"bool16"
store i8* null, i8** %"bool16"
%".63" = load i1, i1* %"$14compare_op.2"
%".65" = load i1, i1* %"$16pred"
store i1 %".63", i1* %"$16pred"
%".67" = load i8*, i8** %"bool16"
store i8* null, i8** %"bool16"
%".69" = load i1, i1* %"$14compare_op.2"
store i1 0, i1* %"$14compare_op.2"
%".71" = load i1, i1* %"$16pred"
br i1 %".71", label %"B18", label %"B22"
B18:
%".73" = load i1, i1* %"reverse"
store i1 0, i1* %"reverse"
%".75" = load double, double* %"R1"
store double 0.0, double* %"R1"
%".77" = load i64, i64* %"Np2"
store i64 0, i64* %"Np2"
%".79" = load i64, i64* %"Np1"
store i64 0, i64* %"Np1"
%".81" = load double, double* %"NTU1"
store double 0.0, double* %"NTU1"
%".83" = load i1, i1* %"$16pred"
store i1 0, i1* %"$16pred"
%".86" = load double, double* %"$const18.0"
store double 0x3ff199999999999a, double* %"$const18.0"
%".88" = load double, double* %"$const18.0"
%".90" = load double, double* %"$20return_value.1"
store double %".88", double* %"$20return_value.1"
%".92" = load double, double* %"$const18.0"
store double 0.0, double* %"$const18.0"
%".94" = load double, double* %"$20return_value.1"
store double %".94", double* %"retptr"
ret i32 0
B22:
%".97" = load i1, i1* %"$8pred"
store i1 0, i1* %"$8pred"
%".99" = load i1, i1* %"$16pred"
store i1 0, i1* %"$16pred"
%".102" = load i8*, i8** %"bool24"
store i8* null, i8** %"bool24"
%".104" = load i1, i1* %"reverse"
%".106" = load i1, i1* %"$24pred"
store i1 %".104", i1* %"$24pred"
%".108" = load i1, i1* %"reverse"
store i1 0, i1* %"reverse"
%".110" = load i8*, i8** %"bool24"
store i8* null, i8** %"bool24"
%".112" = load i1, i1* %"$24pred"
br i1 %".112", label %"B64", label %"B26"
B26:
%".114" = load i1, i1* %"$24pred"
store i1 0, i1* %"$24pred"
%".117" = load double, double* %"$const26.0"
store double 0x3ff0000000000000, double* %"$const26.0"
%".119" = load double, double* %"$const26.0"
%".120" = load double, double* %"R1"
%".121" = fcmp oeq double %".120", 0x0
br i1 %".121", label %"B26.if", label %"B26.endif", !prof !0
B64:
%".231" = load double, double* %"R1"
store double 0.0, double* %"R1"
%".233" = load i64, i64* %"Np2"
store i64 0, i64* %"Np2"
%".235" = load i64, i64* %"Np1"
store i64 0, i64* %"Np1"
%".237" = load double, double* %"NTU1"
store double 0.0, double* %"NTU1"
%".239" = load i1, i1* %"$24pred"
store i1 0, i1* %"$24pred"
%".242" = load i8*, i8** %"$64load_global.0"
store i8* null, i8** %"$64load_global.0"
%".245" = load i8*, i8** %"$const66.1"
store i8* null, i8** %"$const66.1"
%".248" = load i8*, i8** %"$68call_function.2"
store i8* null, i8** %"$68call_function.2"
%".250" = load i8*, i8** %"$const66.1"
store i8* null, i8** %"$const66.1"
%".252" = load i8*, i8** %"$68call_function.2"
store i8* null, i8** %"$68call_function.2"
%".254" = load i8*, i8** %"$64load_global.0"
store i8* null, i8** %"$64load_global.0"
store {i8*, i32}* @".const.picklebuf.140612146881952", {i8*, i32}** %"excinfo"
%".257" = load i64, i64* %"try_state"
%".258" = icmp ugt i64 %".257", 0
%".259" = load {i8*, i32}*, {i8*, i32}** %"excinfo"
ret i32 1
B26.if:
store {i8*, i32}* @".const.picklebuf.140612146880992", {i8*, i32}** %"excinfo"
store i64 0, i64* %"try_state"
%".126" = load i64, i64* %"try_state"
%".127" = icmp ugt i64 %".126", 0
%".128" = load {i8*, i32}*, {i8*, i32}** %"excinfo"
ret i32 1
B26.endif:
%".130" = fdiv double %".119", %".120"
%".132" = load double, double* %"$30binary_true_divide.2"
store double %".130", double* %"$30binary_true_divide.2"
%".134" = load double, double* %"$const26.0"
store double 0.0, double* %"$const26.0"
%".136" = load double, double* %"$30binary_true_divide.2"
%".138" = load double, double* %"R2"
store double %".136", double* %"R2"
%".140" = load double, double* %"$30binary_true_divide.2"
store double 0.0, double* %"$30binary_true_divide.2"
%".142" = load double, double* %"NTU1"
%".143" = load double, double* %"R1"
%".144" = fmul double %".142", %".143"
%".146" = load double, double* %"$38binary_multiply.5"
store double %".144", double* %"$38binary_multiply.5"
%".148" = load double, double* %"R1"
store double 0.0, double* %"R1"
%".150" = load double, double* %"NTU1"
store double 0.0, double* %"NTU1"
%".152" = load double, double* %"$38binary_multiply.5"
%".154" = load double, double* %"NTU2"
store double %".152", double* %"NTU2"
%".156" = load double, double* %"$38binary_multiply.5"
store double 0.0, double* %"$38binary_multiply.5"
%".159" = load i8*, i8** %"$42load_global.6"
store i8* null, i8** %"$42load_global.6"
%".162" = load i1, i1* %"$const52.11"
store i1 true, i1* %"$const52.11"
%".164" = load double, double* %"R2"
%".165" = load double, double* %"NTU2"
%".166" = load i64, i64* %"Np2"
%".167" = load i64, i64* %"Np1"
%".168" = load i1, i1* %"$const52.11"
%".169" = load i8*, i8** @".numba.unresolved$_ZN8__main__35temperature_effectiveness_plate$242Eddxxb"
%".170" = bitcast i8* %".169" to i32 (double*, {i8*, i32}**, double, double, i64, i64, i8)*
store double 0.0, double* %".171"
%".175" = zext i1 %".168" to i8
%".176" = call i32 %".170"(double* %".171", {i8*, i32}** %"excinfo.1", double %".164", double %".165", i64 %".166", i64 %".167", i8 %".175")
%".177" = load {i8*, i32}*, {i8*, i32}** %"excinfo.1"
%".178" = icmp eq i32 %".176", 0
%".179" = icmp eq i32 %".176", -2
%".180" = icmp eq i32 %".176", -1
%".181" = icmp eq i32 %".176", -3
%".182" = or i1 %".178", %".179"
%".183" = xor i1 %".182", -1
%".184" = icmp sge i32 %".176", 1
%".185" = select i1 %".184", {i8*, i32}* %".177", {i8*, i32}* undef
%".186" = load double, double* %".171"
br i1 %".183", label %"B26.endif.if", label %"B26.endif.endif", !prof !0
B26.endif.if:
%".188" = load i64, i64* %"try_state"
%".189" = icmp ugt i64 %".188", 0
%".190" = load {i8*, i32}*, {i8*, i32}** %"excinfo"
store {i8*, i32}* %".185", {i8*, i32}** %"excinfo"
%".192" = xor i1 %".189", -1
br i1 %".192", label %"B26.endif.if.if", label %"B26.endif.if.endif"
B26.endif.endif:
%".197" = load double, double* %"$56call_function_kw.13"
store double %".186", double* %"$56call_function_kw.13"
%".199" = load double, double* %"R2"
store double 0.0, double* %"R2"
%".201" = load i64, i64* %"Np2"
store i64 0, i64* %"Np2"
%".203" = load i64, i64* %"Np1"
store i64 0, i64* %"Np1"
%".205" = load double, double* %"NTU2"
store double 0.0, double* %"NTU2"
%".207" = load i1, i1* %"$const52.11"
store i1 0, i1* %"$const52.11"
%".209" = load i8*, i8** %"$42load_global.6"
store i8* null, i8** %"$42load_global.6"
%".211" = load double, double* %"$56call_function_kw.13"
%".213" = load double, double* %"P2"
store double %".211", double* %"P2"
%".215" = load double, double* %"P2"
store double 0.0, double* %"P2"
%".217" = load double, double* %"$56call_function_kw.13"
store double 0.0, double* %"$56call_function_kw.13"
%".220" = load double, double* %"$const60.14"
store double 0x3ff4cccccccccccd, double* %"$const60.14"
%".222" = load double, double* %"$const60.14"
%".224" = load double, double* %"$62return_value.15"
store double %".222", double* %"$62return_value.15"
%".226" = load double, double* %"$const60.14"
store double 0.0, double* %"$const60.14"
%".228" = load double, double* %"$62return_value.15"
store double %".228", double* %"retptr"
ret i32 0
B26.endif.if.if:
ret i32 %".176"
B26.endif.if.endif:
br label %"B26.endif.endif"
}
@".const.pickledata.140612146880992" = internal constant [69 x i8] c"\80\04\95:\00\00\00\00\00\00\00\8c\08builtins\94\8c\11ZeroDivisionError\94\93\94\8c\10division by zero\94\85\94N\87\94."
@".const.picklebuf.140612146880992" = internal constant {i8*, i32} {i8* bitcast ([69 x i8]* @".const.pickledata.140612146880992" to i8*), i32 69}
@".numba.unresolved$_ZN8__main__35temperature_effectiveness_plate$242Eddxxb" = external global i8*
@".const.pickledata.140612146881952" = internal constant [163 x i8] c"\80\04\95\98\00\00\00\00\00\00\00\8c\08builtins\94\8c\0aValueError\94\93\94\8c<Supported number of passes does not have a formula available\94\85\94\8c\1ftemperature_effectiveness_plate\94\8c\11issue2_minimal.py\94K\0d\87\94\87\94."
@".const.picklebuf.140612146881952" = internal constant {i8*, i32} {i8* bitcast ([163 x i8]* @".const.pickledata.140612146881952" to i8*), i32 163}
!0 = !{ !"branch_weights", i32 1, i32 99 }
================================================================================
================================================================================
------------FUNCTION OPTIMIZED DUMP temperature_effectiveness_plate-------------
; ModuleID = 'temperature_effectiveness_plate'
source_filename = "<string>"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
@"_ZN08NumbaEnv8__main__35temperature_effectiveness_plate$241Eddxx28omitted$28default$3dFalse$29" = common global i8* null
@.const.picklebuf.140612146881952 = internal constant { i8*, i32 } { i8* getelementptr inbounds ([163 x i8], [163 x i8]* @.const.pickledata.140612146881952, i32 0, i32 0), i32 163 }
@.const.picklebuf.140612146880992 = internal constant { i8*, i32 } { i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.const.pickledata.140612146880992, i32 0, i32 0), i32 69 }
@".numba.unresolved$_ZN8__main__35temperature_effectiveness_plate$242Eddxxb" = external global i8*
@.const.pickledata.140612146880992 = internal constant [69 x i8] c"\80\04\95:\00\00\00\00\00\00\00\8C\08builtins\94\8C\11ZeroDivisionError\94\93\94\8C\10division by zero\94\85\94N\87\94."
@.const.pickledata.140612146881952 = internal constant [163 x i8] c"\80\04\95\98\00\00\00\00\00\00\00\8C\08builtins\94\8C\0AValueError\94\93\94\8C<Supported number of passes does not have a formula available\94\85\94\8C\1Ftemperature_effectiveness_plate\94\8C\11issue2_minimal.py\94K\0D\87\94\87\94."
@.const.temperature_effectiveness_plate = internal constant [32 x i8] c"temperature_effectiveness_plate\00"
@PyExc_RuntimeError = external global i8
@".const.missing Environment" = internal constant [20 x i8] c"missing Environment\00"
@_Py_NoneStruct = external global i8
@PyExc_StopIteration = external global i8
@PyExc_SystemError = external global i8
@".const.unknown error when calling native function" = internal constant [43 x i8] c"unknown error when calling native function\00"
define i32 @"_ZN8__main__35temperature_effectiveness_plate$241Eddxx28omitted$28default$3dFalse$29"(double* noalias nocapture %retptr, { i8*, i32 }** noalias nocapture %excinfo, double %arg.R1, double %arg.NTU1, i64 %arg.Np1, i64 %arg.Np2) {
entry:
%.171 = alloca double
store double 0.000000e+00, double* %.171
%excinfo.1 = alloca { i8*, i32 }*
store { i8*, i32 }* null, { i8*, i32 }** %excinfo.1
%.28 = icmp eq i64 %arg.Np1, 1
br i1 %.28, label %B10, label %B22
B10: ; preds = %entry
%.54 = icmp eq i64 %arg.Np2, 1
br i1 %.54, label %B18, label %B22
B18: ; preds = %B10
store double 1.100000e+00, double* %retptr
ret i32 0
B22: ; preds = %B10, %entry
br i1 false, label %B64, label %B26
B26: ; preds = %B22
%.121 = fcmp oeq double %arg.R1, 0.000000e+00
br i1 %.121, label %B26.if, label %B26.endif, !prof !0
B64: ; preds = %B22
store { i8*, i32 }* @.const.picklebuf.140612146881952, { i8*, i32 }** %excinfo
ret i32 1
B26.if: ; preds = %B26
store { i8*, i32 }* @.const.picklebuf.140612146880992, { i8*, i32 }** %excinfo
ret i32 1
B26.endif: ; preds = %B26
%.130 = fdiv double 1.000000e+00, %arg.R1
%.144 = fmul double %arg.NTU1, %arg.R1
%.169 = load i8*, i8** @".numba.unresolved$_ZN8__main__35temperature_effectiveness_plate$242Eddxxb"
%.170 = bitcast i8* %.169 to i32 (double*, { i8*, i32 }**, double, double, i64, i64, i8)*
store double 0.000000e+00, double* %.171
%.176 = call i32 %.170(double* %.171, { i8*, i32 }** %excinfo.1, double %.130, double %.144, i64 %arg.Np2, i64 %arg.Np1, i8 1)
%.177 = load { i8*, i32 }*, { i8*, i32 }** %excinfo.1
%.178 = icmp eq i32 %.176, 0
%.179 = icmp eq i32 %.176, -2
%.182 = or i1 %.178, %.179
%.183 = xor i1 %.182, true
%.184 = icmp sge i32 %.176, 1
br i1 %.183, label %B26.endif.if, label %B26.endif.endif, !prof !0
B26.endif.if: ; preds = %B26.endif
store { i8*, i32 }* %.177, { i8*, i32 }** %excinfo
br i1 true, label %B26.endif.if.if, label %B26.endif.endif
B26.endif.endif: ; preds = %B26.endif.if, %B26.endif
store double 1.300000e+00, double* %retptr
ret i32 0
B26.endif.if.if: ; preds = %B26.endif.if
ret i32 %.176
}
define i8* @"_ZN7cpython8__main__35temperature_effectiveness_plate$241Eddxx28omitted$28default$3dFalse$29"(i8* %py_closure, i8* %py_args, i8* %py_kws) {
entry:
%.5 = alloca i8*
%.6 = alloca i8*
%.7 = alloca i8*
%.8 = alloca i8*
%.9 = alloca i8*
%.10 = call i32 (i8*, i8*, i64, i64, ...) @PyArg_UnpackTuple(i8* %py_args, i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.const.temperature_effectiveness_plate, i32 0, i32 0), i64 5, i64 5, i8** %.5, i8** %.6, i8** %.7, i8** %.8, i8** %.9)
%.11 = icmp eq i32 %.10, 0
%.74 = alloca double
store double 0.000000e+00, double* %.74
%excinfo = alloca { i8*, i32 }*
store { i8*, i32 }* null, { i8*, i32 }** %excinfo
br i1 %.11, label %entry.if, label %entry.endif, !prof !0
entry.if: ; preds = %entry.endif.endif.endif.e...endif.endif, %entry.endif.endif.endif.e...endif.if, %entry.endif.endif.endif.e...endif.if.if, %entry.endif.endif.endif.endif.endif.endif.endif, %entry.endif.endif.endif.endif.endif, %entry.endif.endif.endif, %entry.endif.endif, %entry.endif.endif.endif.e...endif.endif.if, %entry.endif.endif.endif.e...endif.endif.endif.endif, %entry
ret i8* null
entry.endif: ; preds = %entry
%.15 = load i8*, i8** @"_ZN08NumbaEnv8__main__35temperature_effectiveness_plate$241Eddxx28omitted$28default$3dFalse$29"
%.16 = ptrtoint i8* %.15 to i64
%.17 = add i64 %.16, 16
%.18 = inttoptr i64 %.17 to i8*
%.20 = icmp eq i8* null, %.15
br i1 %.20, label %entry.endif.if, label %entry.endif.endif, !prof !0
entry.endif.if: ; preds = %entry.endif
call void @PyErr_SetString(i8* @PyExc_RuntimeError, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @".const.missing Environment", i32 0, i32 0))
ret i8* null
entry.endif.endif: ; preds = %entry.endif
%.24 = load i8*, i8** %.5
%.25 = call i8* @PyNumber_Float(i8* %.24)
%.26 = call double @PyFloat_AsDouble(i8* %.25)
call void @Py_DecRef(i8* %.25)
%.28 = call i8* @PyErr_Occurred()
%.29 = icmp ne i8* null, %.28
br i1 %.29, label %entry.if, label %entry.endif.endif.endif, !prof !0
entry.endif.endif.endif: ; preds = %entry.endif.endif
%.33 = load i8*, i8** %.6
%.34 = call i8* @PyNumber_Float(i8* %.33)
%.35 = call double @PyFloat_AsDouble(i8* %.34)
call void @Py_DecRef(i8* %.34)
%.37 = call i8* @PyErr_Occurred()
%.38 = icmp ne i8* null, %.37
br i1 %.38, label %entry.if, label %entry.endif.endif.endif.endif, !prof !0
entry.endif.endif.endif.endif: ; preds = %entry.endif.endif.endif
%.42 = load i8*, i8** %.7
%.45 = call i8* @PyNumber_Long(i8* %.42)
%.46 = icmp ne i8* null, %.45
br i1 %.46, label %entry.endif.endif.endif.endif.if, label %entry.endif.endif.endif.endif.endif, !prof !1
entry.endif.endif.endif.endif.if: ; preds = %entry.endif.endif.endif.endif
%.48 = call i64 @PyLong_AsLongLong(i8* %.45)
call void @Py_DecRef(i8* %.45)
br label %entry.endif.endif.endif.endif.endif
entry.endif.endif.endif.endif.endif: ; preds = %entry.endif.endif.endif.endif.if, %entry.endif.endif.endif.endif
%.43.0 = phi i64 [ %.48, %entry.endif.endif.endif.endif.if ], [ 0, %entry.endif.endif.endif.endif ]
%.53 = call i8* @PyErr_Occurred()
%.54 = icmp ne i8* null, %.53
br i1 %.54, label %entry.if, label %entry.endif.endif.endif.endif.endif.endif, !prof !0
entry.endif.endif.endif.endif.endif.endif: ; preds = %entry.endif.endif.endif.endif.endif
%.58 = load i8*, i8** %.8
%.61 = call i8* @PyNumber_Long(i8* %.58)
%.62 = icmp ne i8* null, %.61
br i1 %.62, label %entry.endif.endif.endif.endif.endif.endif.if, label %entry.endif.endif.endif.endif.endif.endif.endif, !prof !1
entry.endif.endif.endif.endif.endif.endif.if: ; preds = %entry.endif.endif.endif.endif.endif.endif
%.64 = call i64 @PyLong_AsLongLong(i8* %.61)
call void @Py_DecRef(i8* %.61)
br label %entry.endif.endif.endif.endif.endif.endif.endif
entry.endif.endif.endif.endif.endif.endif.endif: ; preds = %entry.endif.endif.endif.endif.endif.endif.if, %entry.endif.endif.endif.endif.endif.endif
%.59.0 = phi i64 [ %.64, %entry.endif.endif.endif.endif.endif.endif.if ], [ 0, %entry.endif.endif.endif.endif.endif.endif ]
%.69 = call i8* @PyErr_Occurred()
%.70 = icmp ne i8* null, %.69
br i1 %.70, label %entry.if, label %entry.endif.endif.endif.endif.endif.endif.endif.endif, !prof !0
entry.endif.endif.endif.endif.endif.endif.endif.endif: ; preds = %entry.endif.endif.endif.endif.endif.endif.endif
store double 0.000000e+00, double* %.74
%.78 = call i32 @"_ZN8__main__35temperature_effectiveness_plate$241Eddxx28omitted$28default$3dFalse$29"(double* %.74, { i8*, i32 }** %excinfo, double %.26, double %.35, i64 %.43.0, i64 %.59.0)
%.79 = load { i8*, i32 }*, { i8*, i32 }** %excinfo
%.80 = icmp eq i32 %.78, 0
%.81 = icmp eq i32 %.78, -2
%.84 = or i1 %.80, %.81
%.86 = icmp sge i32 %.78, 1
%.88 = load double, double* %.74
switch i32 %.78, label %entry.endif.endif.endif.e...endif [
i32 -2, label %entry.endif.endif.endif.e...if
i32 0, label %entry.endif.endif.endif.e...if
]
entry.endif.endif.endif.e...if: ; preds = %entry.endif.endif.endif.endif.endif.endif.endif.endif, %entry.endif.endif.endif.endif.endif.endif.endif.endif
br i1 %.81, label %entry.endif.endif.endif.e...if.if, label %entry.endif.endif.endif.e...if.endif
entry.endif.endif.endif.e...endif: ; preds = %entry.endif.endif.endif.endif.endif.endif.endif.endif
br i1 %.86, label %entry.endif.endif.endif.e...endif.if, label %entry.endif.endif.endif.e...endif.endif
entry.endif.endif.endif.e...if.if: ; preds = %entry.endif.endif.endif.e...if
call void @Py_IncRef(i8* @_Py_NoneStruct)
ret i8* @_Py_NoneStruct
entry.endif.endif.endif.e...if.endif: ; preds = %entry.endif.endif.endif.e...if
%.93 = call i8* @PyFloat_FromDouble(double %.88)
ret i8* %.93
entry.endif.endif.endif.e...endif.if: ; preds = %entry.endif.endif.endif.e...endif
call void @PyErr_Clear()
%.98 = load { i8*, i32 }, { i8*, i32 }* %.79
%.99 = extractvalue { i8*, i32 } %.98, 0
%.101 = extractvalue { i8*, i32 } %.98, 1
%.102 = call i8* @numba_unpickle(i8* %.99, i32 %.101)
%.103 = icmp ne i8* null, %.102
br i1 %.103, label %entry.endif.endif.endif.e...endif.if.if, label %entry.if, !prof !1
entry.endif.endif.endif.e...endif.endif: ; preds = %entry.endif.endif.endif.e...endif
switch i32 %.78, label %entry.endif.endif.endif.e...endif.endif.endif.endif [
i32 -3, label %entry.endif.endif.endif.e...endif.endif.if
i32 -1, label %entry.if
]
entry.endif.endif.endif.e...endif.if.if: ; preds = %entry.endif.endif.endif.e...endif.if
call void @numba_do_raise(i8* %.102)
br label %entry.if
entry.endif.endif.endif.e...endif.endif.if: ; preds = %entry.endif.endif.endif.e...endif.endif
call void @PyErr_SetNone(i8* @PyExc_StopIteration)
br label %entry.if
entry.endif.endif.endif.e...endif.endif.endif.endif: ; preds = %entry.endif.endif.endif.e...endif.endif
call void @PyErr_SetString(i8* @PyExc_SystemError, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @".const.unknown error when calling native function", i32 0, i32 0))
br label %entry.if
}
declare i32 @PyArg_UnpackTuple(i8*, i8*, i64, i64, ...)
declare void @PyErr_SetString(i8*, i8*)
declare i8* @PyNumber_Float(i8*)
declare double @PyFloat_AsDouble(i8*)
declare void @Py_DecRef(i8*)
declare i8* @PyErr_Occurred()
declare i8* @PyNumber_Long(i8*)
declare i64 @PyLong_AsLongLong(i8*)
declare void @Py_IncRef(i8*)
declare i8* @PyFloat_FromDouble(double)
declare void @PyErr_Clear()
declare i8* @numba_unpickle(i8*, i32)
declare void @numba_do_raise(i8*)
declare void @PyErr_SetNone(i8*)
!0 = !{!"branch_weights", i32 1, i32 99}
!1 = !{!"branch_weights", i32 99, i32 1}
================================================================================
================================================================================
-----------------OPTIMIZED DUMP temperature_effectiveness_plate-----------------
; ModuleID = 'temperature_effectiveness_plate'
source_filename = "<string>"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
@"_ZN08NumbaEnv8__main__35temperature_effectiveness_plate$241Eddxx28omitted$28default$3dFalse$29" = common local_unnamed_addr global i8* null
@.const.picklebuf.140612146880992 = internal constant { i8*, i32 } { i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.const.pickledata.140612146880992, i32 0, i32 0), i32 69 }
@".numba.unresolved$_ZN8__main__35temperature_effectiveness_plate$242Eddxxb" = external local_unnamed_addr global i8*
@.const.pickledata.140612146880992 = internal constant [69 x i8] c"\80\04\95:\00\00\00\00\00\00\00\8C\08builtins\94\8C\11ZeroDivisionError\94\93\94\8C\10division by zero\94\85\94N\87\94."
@.const.temperature_effectiveness_plate = internal constant [32 x i8] c"temperature_effectiveness_plate\00"
@PyExc_RuntimeError = external global i8
@".const.missing Environment" = internal constant [20 x i8] c"missing Environment\00"
@PyExc_StopIteration = external global i8
@PyExc_SystemError = external global i8
@".const.unknown error when calling native function" = internal constant [43 x i8] c"unknown error when calling native function\00"
define i32 @"_ZN8__main__35temperature_effectiveness_plate$241Eddxx28omitted$28default$3dFalse$29"(double* noalias nocapture %retptr, { i8*, i32 }** noalias nocapture %excinfo, double %arg.R1, double %arg.NTU1, i64 %arg.Np1, i64 %arg.Np2) local_unnamed_addr {
entry:
%.171 = alloca double, align 8
store double 0.000000e+00, double* %.171, align 8
%excinfo.1 = alloca { i8*, i32 }*, align 8
store { i8*, i32 }* null, { i8*, i32 }** %excinfo.1, align 8
%.28 = icmp eq i64 %arg.Np1, 1
%.54 = icmp eq i64 %arg.Np2, 1
%or.cond = and i1 %.28, %.54
br i1 %or.cond, label %B18, label %B26
B18: ; preds = %entry
store double 1.100000e+00, double* %retptr, align 8
ret i32 0
B26: ; preds = %entry
%.121 = fcmp oeq double %arg.R1, 0.000000e+00
br i1 %.121, label %B26.if, label %B26.endif, !prof !0
B26.if: ; preds = %B26
store { i8*, i32 }* @.const.picklebuf.140612146880992, { i8*, i32 }** %excinfo, align 8
ret i32 1
B26.endif: ; preds = %B26
%.130 = fdiv double 1.000000e+00, %arg.R1
%.144 = fmul double %arg.R1, %arg.NTU1
%.1691 = load i32 (double*, { i8*, i32 }**, double, double, i64, i64, i8)*, i32 (double*, { i8*, i32 }**, double, double, i64, i64, i8)** bitcast (i8** @".numba.unresolved$_ZN8__main__35temperature_effectiveness_plate$242Eddxxb" to i32 (double*, { i8*, i32 }**, double, double, i64, i64, i8)**), align 8
store double 0.000000e+00, double* %.171, align 8
%.176 = call i32 %.1691(double* nonnull %.171, { i8*, i32 }** nonnull %excinfo.1, double %.130, double %.144, i64 %arg.Np2, i64 %arg.Np1, i8 1)
switch i32 %.176, label %B26.endif.if [
i32 -2, label %B26.endif.endif
i32 0, label %B26.endif.endif
]
B26.endif.if: ; preds = %B26.endif
%0 = bitcast { i8*, i32 }** %excinfo.1 to i64*
%.1772 = load i64, i64* %0, align 8
%1 = bitcast { i8*, i32 }** %excinfo to i64*
store i64 %.1772, i64* %1, align 8
ret i32 %.176
B26.endif.endif: ; preds = %B26.endif, %B26.endif
store double 1.300000e+00, double* %retptr, align 8
ret i32 0
}
define i8* @"_ZN7cpython8__main__35temperature_effectiveness_plate$241Eddxx28omitted$28default$3dFalse$29"(i8* nocapture readnone %py_closure, i8* %py_args, i8* nocapture readnone %py_kws) local_unnamed_addr {
entry:
%.171.i = alloca double, align 8
%excinfo.1.i = alloca { i8*, i32 }*, align 8
%.5 = alloca i8*, align 8
%.6 = alloca i8*, align 8
%.7 = alloca i8*, align 8
%.8 = alloca i8*, align 8
%.9 = alloca i8*, align 8
%.10 = call i32 (i8*, i8*, i64, i64, ...) @PyArg_UnpackTuple(i8* %py_args, i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.const.temperature_effectiveness_plate, i64 0, i64 0), i64 5, i64 5, i8** nonnull %.5, i8** nonnull %.6, i8** nonnull %.7, i8** nonnull %.8, i8** nonnull %.9)
%.11 = icmp eq i32 %.10, 0
br i1 %.11, label %entry.if, label %entry.endif, !prof !0
entry.if: ; preds = %entry.endif.endif.endif.e...endif.if, %entry.endif.endif.endif.endif.endif.endif.endif, %entry.endif.endif.endif.endif.endif, %entry.endif.endif.endif, %entry.endif.endif, %entry.endif.endif.endif.e...endif.endif, %entry.endif.endif.endif.e...endif.if.if, %entry.endif.endif.endif.e...endif.endif.if, %entry.endif.endif.endif.e...endif.endif.endif.endif, %entry
ret i8* null
entry.endif: ; preds = %entry
%.15 = load i8*, i8** @"_ZN08NumbaEnv8__main__35temperature_effectiveness_plate$241Eddxx28omitted$28default$3dFalse$29", align 8
%.20 = icmp eq i8* %.15, null
br i1 %.20, label %entry.endif.if, label %entry.endif.endif, !prof !0
entry.endif.if: ; preds = %entry.endif
call void @PyErr_SetString(i8* nonnull @PyExc_RuntimeError, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @".const.missing Environment", i64 0, i64 0))
ret i8* null
entry.endif.endif: ; preds = %entry.endif
%.24 = load i8*, i8** %.5, align 8
%.25 = call i8* @PyNumber_Float(i8* %.24)
%.26 = call double @PyFloat_AsDouble(i8* %.25)
call void @Py_DecRef(i8* %.25)
%.28 = call i8* @PyErr_Occurred()
%.29 = icmp eq i8* %.28, null
br i1 %.29, label %entry.endif.endif.endif, label %entry.if, !prof !1
entry.endif.endif.endif: ; preds = %entry.endif.endif
%.33 = load i8*, i8** %.6, align 8
%.34 = call i8* @PyNumber_Float(i8* %.33)
%.35 = call double @PyFloat_AsDouble(i8* %.34)
call void @Py_DecRef(i8* %.34)
%.37 = call i8* @PyErr_Occurred()
%.38 = icmp eq i8* %.37, null
br i1 %.38, label %entry.endif.endif.endif.endif, label %entry.if, !prof !1
entry.endif.endif.endif.endif: ; preds = %entry.endif.endif.endif
%.42 = load i8*, i8** %.7, align 8
%.45 = call i8* @PyNumber_Long(i8* %.42)
%.46 = icmp eq i8* %.45, null
br i1 %.46, label %entry.endif.endif.endif.endif.endif, label %entry.endif.endif.endif.endif.if, !prof !0
entry.endif.endif.endif.endif.if: ; preds = %entry.endif.endif.endif.endif
%.48 = call i64 @PyLong_AsLongLong(i8* nonnull %.45)
call void @Py_DecRef(i8* nonnull %.45)
br label %entry.endif.endif.endif.endif.endif
entry.endif.endif.endif.endif.endif: ; preds = %entry.endif.endif.endif.endif, %entry.endif.endif.endif.endif.if
%.43.0 = phi i64 [ %.48, %entry.endif.endif.endif.endif.if ], [ 0, %entry.endif.endif.endif.endif ]
%.53 = call i8* @PyErr_Occurred()
%.54 = icmp eq i8* %.53, null
br i1 %.54, label %entry.endif.endif.endif.endif.endif.endif, label %entry.if, !prof !1
entry.endif.endif.endif.endif.endif.endif: ; preds = %entry.endif.endif.endif.endif.endif
%.58 = load i8*, i8** %.8, align 8
%.61 = call i8* @PyNumber_Long(i8* %.58)
%.62 = icmp eq i8* %.61, null
br i1 %.62, label %entry.endif.endif.endif.endif.endif.endif.endif, label %entry.endif.endif.endif.endif.endif.endif.if, !prof !0
entry.endif.endif.endif.endif.endif.endif.if: ; preds = %entry.endif.endif.endif.endif.endif.endif
%.64 = call i64 @PyLong_AsLongLong(i8* nonnull %.61)
call void @Py_DecRef(i8* nonnull %.61)
br label %entry.endif.endif.endif.endif.endif.endif.endif
entry.endif.endif.endif.endif.endif.endif.endif: ; preds = %entry.endif.endif.endif.endif.endif.endif, %entry.endif.endif.endif.endif.endif.endif.if
%.59.0 = phi i64 [ %.64, %entry.endif.endif.endif.endif.endif.endif.if ], [ 0, %entry.endif.endif.endif.endif.endif.endif ]
%.69 = call i8* @PyErr_Occurred()
%.70 = icmp eq i8* %.69, null
br i1 %.70, label %entry.endif.endif.endif.endif.endif.endif.endif.endif, label %entry.if, !prof !1
entry.endif.endif.endif.endif.endif.endif.endif.endif: ; preds = %entry.endif.endif.endif.endif.endif.endif.endif
%0 = bitcast double* %.171.i to i8*
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %0)
%1 = bitcast { i8*, i32 }** %excinfo.1.i to i8*
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %1)
store double 0.000000e+00, double* %.171.i, align 8, !noalias !2
store { i8*, i32 }* null, { i8*, i32 }** %excinfo.1.i, align 8, !noalias !2
%.28.i = icmp eq i64 %.43.0, 1
%.54.i = icmp eq i64 %.59.0, 1
%or.cond.i = and i1 %.28.i, %.54.i
br i1 %or.cond.i, label %entry.endif.endif.endif.e...if.endif, label %B26.i
B26.i: ; preds = %entry.endif.endif.endif.endif.endif.endif.endif.endif
%.121.i = fcmp oeq double %.26, 0.000000e+00
br i1 %.121.i, label %entry.endif.endif.endif.e...endif.thread, label %B26.endif.i, !prof !0
entry.endif.endif.endif.e...endif.thread: ; preds = %B26.i
%2 = bitcast { i8*, i32 }** %excinfo.1.i to i8*
%3 = bitcast double* %.171.i to i8*
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %3)
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %2)
br label %entry.endif.endif.endif.e...endif.if
B26.endif.i: ; preds = %B26.i
%.130.i = fdiv double 1.000000e+00, %.26
%.144.i = fmul double %.26, %.35
%.1691.i = load i32 (double*, { i8*, i32 }**, double, double, i64, i64, i8)*, i32 (double*, { i8*, i32 }**, double, double, i64, i64, i8)** bitcast (i8** @".numba.unresolved$_ZN8__main__35temperature_effectiveness_plate$242Eddxxb" to i32 (double*, { i8*, i32 }**, double, double, i64, i64, i8)**), align 8, !noalias !2
store double 0.000000e+00, double* %.171.i, align 8, !noalias !2
%.176.i = call i32 %.1691.i(double* nonnull %.171.i, { i8*, i32 }** nonnull %excinfo.1.i, double %.130.i, double %.144.i, i64 %.59.0, i64 %.43.0, i8 1), !noalias !2
switch i32 %.176.i, label %"_ZN8__main__35temperature_effectiveness_plate$241Eddxx28omitted$28default$3dFalse$29.exit" [
i32 -2, label %entry.endif.endif.endif.e...if.endif
i32 0, label %entry.endif.endif.endif.e...if.endif
]
"_ZN8__main__35temperature_effectiveness_plate$241Eddxx28omitted$28default$3dFalse$29.exit": ; preds = %B26.endif.i
%4 = bitcast { i8*, i32 }** %excinfo.1.i to i8*
%5 = bitcast double* %.171.i to i8*
%.1772.i13 = load { i8*, i32 }*, { i8*, i32 }** %excinfo.1.i, align 8, !noalias !2
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %5)
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %4)
%.86 = icmp sgt i32 %.176.i, 0
br i1 %.86, label %entry.endif.endif.endif.e...endif.if, label %entry.endif.endif.endif.e...endif.endif
entry.endif.endif.endif.e...if.endif: ; preds = %B26.endif.i, %B26.endif.i, %entry.endif.endif.endif.endif.endif.endif.endif.endif
%.74.05 = phi double [ 1.100000e+00, %entry.endif.endif.endif.endif.endif.endif.endif.endif ], [ 1.300000e+00, %B26.endif.i ], [ 1.300000e+00, %B26.endif.i ]
%6 = bitcast { i8*, i32 }** %excinfo.1.i to i8*
%7 = bitcast double* %.171.i to i8*
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %7)
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %6)
%.93 = call i8* @PyFloat_FromDouble(double %.74.05)
ret i8* %.93
entry.endif.endif.endif.e...endif.if: ; preds = %entry.endif.endif.endif.e...endif.thread, %"_ZN8__main__35temperature_effectiveness_plate$241Eddxx28omitted$28default$3dFalse$29.exit"
%8 = phi { i8*, i32 }* [ @.const.picklebuf.140612146880992, %entry.endif.endif.endif.e...endif.thread ], [ %.1772.i13, %"_ZN8__main__35temperature_effectiveness_plate$241Eddxx28omitted$28default$3dFalse$29.exit" ]
call void @PyErr_Clear()
%.98 = load { i8*, i32 }, { i8*, i32 }* %8, align 8
%.99 = extractvalue { i8*, i32 } %.98, 0
%.101 = extractvalue { i8*, i32 } %.98, 1
%.102 = call i8* @numba_unpickle(i8* %.99, i32 %.101)
%.103 = icmp eq i8* %.102, null
br i1 %.103, label %entry.if, label %entry.endif.endif.endif.e...endif.if.if, !prof !0
entry.endif.endif.endif.e...endif.endif: ; preds = %"_ZN8__main__35temperature_effectiveness_plate$241Eddxx28omitted$28default$3dFalse$29.exit"
switch i32 %.176.i, label %entry.endif.endif.endif.e...endif.endif.endif.endif [
i32 -3, label %entry.endif.endif.endif.e...endif.endif.if
i32 -1, label %entry.if
]
entry.endif.endif.endif.e...endif.if.if: ; preds = %entry.endif.endif.endif.e...endif.if
call void @numba_do_raise(i8* nonnull %.102)
br label %entry.if
entry.endif.endif.endif.e...endif.endif.if: ; preds = %entry.endif.endif.endif.e...endif.endif
call void @PyErr_SetNone(i8* nonnull @PyExc_StopIteration)
br label %entry.if
entry.endif.endif.endif.e...endif.endif.endif.endif: ; preds = %entry.endif.endif.endif.e...endif.endif
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))
br label %entry.if
}
declare i32 @PyArg_UnpackTuple(i8*, i8*, i64, i64, ...) local_unnamed_addr
declare void @PyErr_SetString(i8*, i8*) local_unnamed_addr
declare i8* @PyNumber_Float(i8*) local_unnamed_addr
declare double @PyFloat_AsDouble(i8*) local_unnamed_addr
declare void @Py_DecRef(i8*) local_unnamed_addr
declare i8* @PyErr_Occurred() local_unnamed_addr
declare i8* @PyNumber_Long(i8*) local_unnamed_addr
declare i64 @PyLong_AsLongLong(i8*) local_unnamed_addr
declare i8* @PyFloat_FromDouble(double) local_unnamed_addr
declare void @PyErr_Clear() local_unnamed_addr
declare i8* @numba_unpickle(i8*, i32) local_unnamed_addr
declare void @numba_do_raise(i8*) local_unnamed_addr
declare void @PyErr_SetNone(i8*) local_unnamed_addr
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #0
; Function Attrs: nounwind
declare void @llvm.stackprotector(i8*, i8**) #1
attributes #0 = { argmemonly nounwind }
attributes #1 = { nounwind }
!0 = !{!"branch_weights", i32 1, i32 99}
!1 = !{!"branch_weights", i32 99, i32 1}
!2 = !{!3, !5}
!3 = distinct !{!3, !4, !"_ZN8__main__35temperature_effectiveness_plate$241Eddxx28omitted$28default$3dFalse$29: %retptr"}
!4 = distinct !{!4, !"_ZN8__main__35temperature_effectiveness_plate$241Eddxx28omitted$28default$3dFalse$29"}
!5 = distinct !{!5, !4, !"_ZN8__main__35temperature_effectiveness_plate$241Eddxx28omitted$28default$3dFalse$29: %excinfo"}
================================================================================
================================================================================
--------------------ASSEMBLY temperature_effectiveness_plate--------------------
.text
.file "<string>"
.section .rodata.cst8,"aM",@progbits,8
.p2align 3
.LCPI0_0:
.quad 4607182418800017408
.text
.globl _ZN8__main__35temperature_effectiveness_plate$241Eddxx28omitted$28default$3dFalse$29
.p2align 4, 0x90
.type _ZN8__main__35temperature_effectiveness_plate$241Eddxx28omitted$28default$3dFalse$29,@function
_ZN8__main__35temperature_effectiveness_plate$241Eddxx28omitted$28default$3dFalse$29:
.cfi_startproc
pushq %r14
.cfi_def_cfa_offset 16
pushq %rbx
.cfi_def_cfa_offset 24
subq $24, %rsp
.cfi_def_cfa_offset 48
.cfi_offset %rbx, -24
.cfi_offset %r14, -16
movq %rdx, %rax
movq %rsi, %r14
movq %rdi, %rbx
movq $0, 16(%rsp)
movq $0, 8(%rsp)
cmpq $1, %rdx
jne .LBB0_5
cmpq $1, %rcx
jne .LBB0_5
movabsq $4607632778762754458, %rax
jmp .LBB0_3
.LBB0_5:
vxorps %xmm2, %xmm2, %xmm2
vucomisd %xmm2, %xmm0
jne .LBB0_7
jnp .LBB0_6
.LBB0_7:
movabsq $.LCPI0_0, %rdx
vmovsd (%rdx), %xmm2
vdivsd %xmm0, %xmm2, %xmm2
vmulsd %xmm1, %xmm0, %xmm1
movabsq $.numba.unresolved$_ZN8__main__35temperature_effectiveness_plate$242Eddxxb, %r9
movq $0, 16(%rsp)
leaq 16(%rsp), %rdi
leaq 8(%rsp), %rsi
vmovapd %xmm2, %xmm0
movq %rcx, %rdx
movq %rax, %rcx
movl $1, %r8d
callq *(%r9)
cmpl $-2, %eax
je .LBB0_10
testl %eax, %eax
jne .LBB0_9
.LBB0_10:
movabsq $4608533498688228557, %rax
.LBB0_3:
movq %rax, (%rbx)
xorl %eax, %eax
addq $24, %rsp
.cfi_def_cfa_offset 24
popq %rbx
.cfi_def_cfa_offset 16
popq %r14
.cfi_def_cfa_offset 8
retq
.LBB0_9:
.cfi_def_cfa_offset 48
movq 8(%rsp), %rcx
movq %rcx, (%r14)
addq $24, %rsp
.cfi_def_cfa_offset 24
popq %rbx
.cfi_def_cfa_offset 16
popq %r14
.cfi_def_cfa_offset 8
retq
.LBB0_6:
.cfi_def_cfa_offset 48
movabsq $.const.picklebuf.140612146880992, %rax
movq %rax, (%r14)
movl $1, %eax
addq $24, %rsp
.cfi_def_cfa_offset 24
popq %rbx
.cfi_def_cfa_offset 16
popq %r14
.cfi_def_cfa_offset 8
retq
.Lfunc_end0:
.size _ZN8__main__35temperature_effectiveness_plate$241Eddxx28omitted$28default$3dFalse$29, .Lfunc_end0-_ZN8__main__35temperature_effectiveness_plate$241Eddxx28omitted$28default$3dFalse$29
.cfi_endproc
.section .rodata.cst8,"aM",@progbits,8
.p2align 3
.LCPI1_0:
.quad 4607632778762754458
.LCPI1_1:
.quad 4607182418800017408
.LCPI1_2:
.quad 4608533498688228557
.text
.globl _ZN7cpython8__main__35temperature_effectiveness_plate$241Eddxx28omitted$28default$3dFalse$29
.p2align 4, 0x90
.type _ZN7cpython8__main__35temperature_effectiveness_plate$241Eddxx28omitted$28default$3dFalse$29,@function
_ZN7cpython8__main__35temperature_effectiveness_plate$241Eddxx28omitted$28default$3dFalse$29:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
pushq %r15
.cfi_def_cfa_offset 24
pushq %r14
.cfi_def_cfa_offset 32
pushq %r13
.cfi_def_cfa_offset 40
pushq %r12
.cfi_def_cfa_offset 48
pushq %rbx
.cfi_def_cfa_offset 56
subq $72, %rsp
.cfi_def_cfa_offset 128
.cfi_offset %rbx, -56
.cfi_offset %r12, -48
.cfi_offset %r13, -40
.cfi_offset %r14, -32
.cfi_offset %r15, -24
.cfi_offset %rbp, -16
movq %rsi, %rdi
subq $8, %rsp
.cfi_adjust_cfa_offset 8
leaq 72(%rsp), %rbp
leaq 40(%rsp), %rbx
leaq 48(%rsp), %r10
movabsq $.const.temperature_effectiveness_plate, %rsi
movabsq $PyArg_UnpackTuple, %r11
leaq 64(%rsp), %r8
leaq 56(%rsp), %r9
movl $5, %edx
movl $5, %ecx
movl $0, %eax
pushq %rbp
.cfi_adjust_cfa_offset 8
pushq %rbx
.cfi_adjust_cfa_offset 8
pushq %r10
.cfi_adjust_cfa_offset 8
callq *%r11
addq $32, %rsp
.cfi_adjust_cfa_offset -32
testl %eax, %eax
je .LBB1_1
movabsq $_ZN08NumbaEnv8__main__35temperature_effectiveness_plate$241Eddxx28omitted$28default$3dFalse$29, %rax
cmpq $0, (%rax)
je .LBB1_4
movq 56(%rsp), %rdi
movabsq $PyNumber_Float, %r14
callq *%r14
movq %rax, %rbx
movabsq $PyFloat_AsDouble, %rbp
movq %rax, %rdi
callq *%rbp
vmovsd %xmm0, 24(%rsp)
movabsq $Py_DecRef, %r13
movq %rbx, %rdi
callq *%r13
movabsq $PyErr_Occurred, %r12
callq *%r12
testq %rax, %rax
jne .LBB1_1
movq 48(%rsp), %rdi
callq *%r14
movq %rax, %rbx
movq %rax, %rdi
callq *%rbp
vmovsd %xmm0, 16(%rsp)
movq %rbx, %rdi
callq *%r13
callq *%r12
testq %rax, %rax
jne .LBB1_1
movq 40(%rsp), %rdi
movabsq $PyNumber_Long, %rbp
callq *%rbp
movabsq $PyLong_AsLongLong, %r15
testq %rax, %rax
je .LBB1_9
movq %rax, %rbx
movq %rax, %rdi
callq *%r15
movq %rax, %r14
movq %rbx, %rdi
callq *%r13
callq *%r12
testq %rax, %rax
jne .LBB1_1
.LBB1_12:
movq 32(%rsp), %rdi
callq *%rbp
testq %rax, %rax
je .LBB1_13
movq %rax, %rbx
movq %rax, %rdi
callq *%r15
movq %rax, %r15
movq %rbx, %rdi
callq *%r13
callq *%r12
testq %rax, %rax
jne .LBB1_1
.LBB1_16:
movq $0, 8(%rsp)
movq $0, (%rsp)
cmpq $1, %r14
jne .LBB1_20
cmpq $1, %r15
jne .LBB1_20
movabsq $.LCPI1_0, %rax
vmovsd (%rax), %xmm0
jmp .LBB1_19
.LBB1_20:
vxorps %xmm0, %xmm0, %xmm0
vmovsd 24(%rsp), %xmm1
vucomisd %xmm0, %xmm1
jne .LBB1_22
jnp .LBB1_21
.LBB1_22:
movabsq $.LCPI1_1, %rax
vmovsd (%rax), %xmm0
vdivsd %xmm1, %xmm0, %xmm0
vmulsd 16(%rsp), %xmm1, %xmm1
movabsq $.numba.unresolved$_ZN8__main__35temperature_effectiveness_plate$242Eddxxb, %rax
movq $0, 8(%rsp)
leaq 8(%rsp), %rdi
movq %rsp, %rsi
movq %r15, %rdx
movq %r14, %rcx
movl $1, %r8d
callq *(%rax)
movabsq $.LCPI1_2, %rcx
vmovsd (%rcx), %xmm0
cmpl $-2, %eax
je .LBB1_19
testl %eax, %eax
jne .LBB1_24
.LBB1_19:
movabsq $PyFloat_FromDouble, %rax
callq *%rax
jmp .LBB1_2
.LBB1_24:
jle .LBB1_28
movq (%rsp), %rbx
.LBB1_26:
movabsq $PyErr_Clear, %rax
callq *%rax
movl 8(%rbx), %esi
movq (%rbx), %rdi
movabsq $numba_unpickle, %rax
callq *%rax
testq %rax, %rax
je .LBB1_1
movabsq $numba_do_raise, %rcx
movq %rax, %rdi
callq *%rcx
jmp .LBB1_1
.LBB1_28:
cmpl $-3, %eax
je .LBB1_31
cmpl $-1, %eax
je .LBB1_1
movabsq $PyExc_SystemError, %rdi
movabsq $".const.unknown error when calling native function", %rsi
jmp .LBB1_5
.LBB1_31:
movabsq $PyExc_StopIteration, %rdi
movabsq $PyErr_SetNone, %rax
callq *%rax
jmp .LBB1_1
.LBB1_4:
movabsq $PyExc_RuntimeError, %rdi
movabsq $".const.missing Environment", %rsi
.LBB1_5:
movabsq $PyErr_SetString, %rax
callq *%rax
.LBB1_1:
xorl %eax, %eax
.LBB1_2:
addq $72, %rsp
.cfi_def_cfa_offset 56
popq %rbx
.cfi_def_cfa_offset 48
popq %r12
.cfi_def_cfa_offset 40
popq %r13
.cfi_def_cfa_offset 32
popq %r14
.cfi_def_cfa_offset 24
popq %r15
.cfi_def_cfa_offset 16
popq %rbp
.cfi_def_cfa_offset 8
retq
.LBB1_9:
.cfi_def_cfa_offset 128
xorl %r14d, %r14d
callq *%r12
testq %rax, %rax
je .LBB1_12
jmp .LBB1_1
.LBB1_13:
xorl %r15d, %r15d
callq *%r12
testq %rax, %rax
je .LBB1_16
jmp .LBB1_1
.LBB1_21:
movabsq $.const.picklebuf.140612146880992, %rbx
jmp .LBB1_26
.Lfunc_end1:
.size _ZN7cpython8__main__35temperature_effectiveness_plate$241Eddxx28omitted$28default$3dFalse$29, .Lfunc_end1-_ZN7cpython8__main__35temperature_effectiveness_plate$241Eddxx28omitted$28default$3dFalse$29
.cfi_endproc
.type _ZN08NumbaEnv8__main__35temperature_effectiveness_plate$241Eddxx28omitted$28default$3dFalse$29,@object
.comm _ZN08NumbaEnv8__main__35temperature_effectiveness_plate$241Eddxx28omitted$28default$3dFalse$29,8,8
.type .const.picklebuf.140612146880992,@object
.section .rodata,"a",@progbits
.p2align 3
.const.picklebuf.140612146880992:
.quad .const.pickledata.140612146880992
.long 69
.zero 4
.size .const.picklebuf.140612146880992, 16
.type .const.pickledata.140612146880992,@object
.p2align 4
.const.pickledata.140612146880992:
.ascii "\200\004\225:\000\000\000\000\000\000\000\214\bbuiltins\224\214\021ZeroDivisionError\224\223\224\214\020division by zero\224\205\224N\207\224."
.size .const.pickledata.140612146880992, 69
.type .const.temperature_effectiveness_plate,@object
.p2align 4
.const.temperature_effectiveness_plate:
.asciz "temperature_effectiveness_plate"
.size .const.temperature_effectiveness_plate, 32
.type ".const.missing Environment",@object
.p2align 4
".const.missing Environment":
.asciz "missing Environment"
.size ".const.missing Environment", 20
.type ".const.unknown error when calling native function",@object
.p2align 4
".const.unknown error when calling native function":
.asciz "unknown error when calling native function"
.size ".const.unknown error when calling native function", 43
.section ".note.GNU-stack","",@progbits
================================================================================
[cache] index loaded from '__pycache__/issue2_minimal.temperature_effectiveness_plate-3.py37m.nbi'
[cache] index saved to '__pycache__/issue2_minimal.temperature_effectiveness_plate-3.py37m.nbi'
[cache] data saved to '__pycache__/issue2_minimal.temperature_effectiveness_plate-3.py37m.2.nbc'
1.1
Issue Analytics
- State:
- Created 3 years ago
- Comments:7 (3 by maintainers)
Top Results From Across the Web
Segmentation fault due to recursion - Stack Overflow
I'd make your rearange function iterative - do while added, and recursive call removed:
Read more >Cacheing specific Numba function causes SIGABRT - Support
I just found this Setting cache=True with a recursive function results in Segmentation fault · Issue #6061 · numba/numba · GitHub.
Read more >Segmentation fault on recursive function - C Board
Hey guys, I am having segmentation fault on recursive function @ int fill_array(). If I enter number like 0 to 16100, the program...
Read more >Getting segmentation fault on recursive function - Reddit
I'm trying to write this memoized version of the Ackermann function but when I pass in m = 3 and n = 16,...
Read more >Release Notes — Numba 0.56.4+0.g288a38bbd.dirty-py3.7 ...
Self-recursive device functions. ... PR #8037: CUDA self-recursion tests (Graham Markall) ... PR #5602: Fix segfault caused by pop from numba.typed.List.
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
found a workaround if you don’t want to turn your recursive function into iterative one - use inline. unfortunately it is not always applicable, only works if you know the max depth the inline function will need. (limit inline depth)
this worked fine for me as long as inline depth wasn’t more than 5:
@numba.njit(cache=True, inline=CostModel(5))
From https://numba.discourse.group/t/cacheing-specific-numba-function-causes-sigabrt/1497, it looks like the problem is with the unresolved symbols generated during the compilation of mutual / type-varying recursion. For example, the error there is: