ForwardDiff2.jl
ForwardDiff2.jl copied to clipboard
Inference failure on nested differentiation
julia> @code_warntype D(D(+))(1)
Variables
#self#::Core.Compiler.Const(ForwardDiff2.var"#deriv#31"{ForwardDiff2.var"#deriv#31"{typeof(+)}}(ForwardDiff2.var"#deriv#31"{typeof(+)}(+)), false)
arg::Int64
#29::ForwardDiff2.var"#29#34"{Int64,ForwardDiff2.var"#deriv#31"{typeof(+)}}
Body::Any
1 ─ %1 = ForwardDiff2.:(var"#29#34")::Core.Compiler.Const(ForwardDiff2.var"#29#34", false)
│ %2 = Core.typeof(arg)::Core.Compiler.Const(Int64, false)
│ %3 = Core.getfield(#self#, :f)::Core.Compiler.Const(ForwardDiff2.var"#deriv#31"{typeof(+)}(+), false)
│ %4 = Core.typeof(%3)::Core.Compiler.Const(ForwardDiff2.var"#deriv#31"{typeof(+)}, false)
│ %5 = Core.apply_type(%1, %2, %4)::Core.Compiler.Const(ForwardDiff2.var"#29#34"{Int64,ForwardDiff2.var"#deriv#31"{typeof(+)}}, false)
│ %6 = Core.getfield(#self#, :f)::Core.Compiler.Const(ForwardDiff2.var"#deriv#31"{typeof(+)}(+), false)
│ (#29 = %new(%5, arg, %6))
│ %8 = #29::ForwardDiff2.var"#29#34"{Int64,ForwardDiff2.var"#deriv#31"{typeof(+)}}
│ %9 = ForwardDiff2.dualrun(%8)::Any
└── return %9
Caused by https://github.com/jrevels/Cassette.jl/issues/155