Specifically when get_tmp(cache::PreallocationTools.DiffCache, u:LArray{T, ...} where T is not a ForwardDiff.Dual, the method defined for Duals is used (which uses ArrayInterfaceCore.restructure --> allocations, even though we should just get the normal cache back, not the dual cache).
Specifically when
get_tmp(cache::PreallocationTools.DiffCache, u:LArray{T, ...}
where T is not a ForwardDiff.Dual, the method defined for Duals is used (which uses ArrayInterfaceCore.restructure --> allocations, even though we should just get the normal cache back, not the dual cache).The changes introduced dispatch the present
get_tmp
only on Duals, so that for T <: Number the fallback method for u::AbstractArray in PreallocationTools is used (https://github.com/SciML/PreallocationTools.jl/blob/addfd170cb69f98778f7e5f40a3d9ab352c99b10/src/PreallocationTools.jl#L61)