SciML / SciMLSensitivity.jl

A component of the DiffEq ecosystem for enabling sensitivity analysis for scientific machine learning (SciML). Optimize-then-discretize, discretize-then-optimize, adjoint methods, and more for ODEs, SDEs, DDEs, DAEs, etc.
https://docs.sciml.ai/SciMLSensitivity/stable/
Other
329 stars 71 forks source link

`Enzyme` and `ReverseDiff` take too much time in loading #926

Open prbzrg opened 10 months ago

prbzrg commented 10 months ago
julia> @time_imports using SciMLSensitivity
    293.5 ms  Preferences
      0.5 ms  PrecompileTools
      0.3 ms  SuiteSparse
      0.4 ms  Requires
      2.2 ms  ArrayInterface
      2.5 ms  StaticArraysCore
      0.5 ms  ArrayInterface → ArrayInterfaceStaticArraysCoreExt
      1.3 ms  DocStringExtensions
     13.1 ms  FunctionWrappers
      0.5 ms  MuladdMacro
      5.7 ms  OrderedCollections
      0.5 ms  UnPack
      0.5 ms  Parameters
      0.9 ms  Statistics
      0.3 ms  IfElse
     23.0 ms  Static
      0.4 ms  Compat
      0.3 ms  Compat → CompatLinearAlgebraExt
      5.4 ms  StaticArrayInterface
      1.3 ms  ManualMemory
     34.2 ms  ThreadingUtilities
      0.3 ms  SIMDTypes
      4.2 ms  LayoutPointers
      3.3 ms  CloseOpenIntervals
    324.7 ms  StrideArraysCore
      0.4 ms  BitTwiddlingConvenienceFunctions
      1.0 ms  CpuId
    121.8 ms  CPUSummary 95.36% compilation time
      7.1 ms  PolyesterWeave
      1.0 ms  Polyester
      0.6 ms  FastBroadcast
     24.6 ms  ChainRulesCore
      0.5 ms  ChainRulesCore → ChainRulesCoreSparseArraysExt
     16.1 ms  RecipesBase
      0.8 ms  SymbolicIndexingInterface
      0.7 ms  Adapt
      0.2 ms  DataValueInterfaces
      0.8 ms  DataAPI
      0.2 ms  IteratorInterfaceExtensions
      0.3 ms  TableTraits
     29.6 ms  Tables
      2.2 ms  GPUArraysCore
      0.3 ms  ArrayInterface → ArrayInterfaceGPUArraysCoreExt
     12.6 ms  RecursiveArrayTools
      9.4 ms  MacroTools
      0.3 ms  TruncatedStacktraces
      0.8 ms  ZygoteRules
      1.0 ms  ConstructionBase
     14.3 ms  Setfield
      5.2 ms  IrrationalConstants
      0.8 ms  DiffRules
      2.6 ms  DiffResults
      0.3 ms  OpenLibm_jll
      0.3 ms  NaNMath
      0.4 ms  LogExpFunctions
      0.5 ms  LogExpFunctions → LogExpFunctionsChainRulesCoreExt
      0.4 ms  JLLWrappers
      7.8 ms  CompilerSupportLibraries_jll 90.83% compilation time
      7.9 ms  OpenSpecFun_jll 83.80% compilation time
     11.6 ms  SpecialFunctions
      0.8 ms  SpecialFunctions → SpecialFunctionsChainRulesCoreExt
      0.3 ms  CommonSubexpressions
     57.1 ms  ForwardDiff
      0.5 ms  EnumX
      1.1 ms  PreallocationTools
      0.6 ms  FunctionWrappersWrappers
      0.3 ms  CommonSolve
      0.4 ms  ExprTools
      1.0 ms  RuntimeGeneratedFunctions
      1.9 ms  ADTypes
     71.2 ms  FillArrays
      4.3 ms  FillArrays → FillArraysSparseArraysExt
      0.5 ms  FillArrays → FillArraysStatisticsExt
      0.3 ms  Reexport
      0.3 ms  Tricks
     16.7 ms  Lazy
     13.7 ms  SciMLOperators
    151.0 ms  SciMLBase
    213.6 ms  DiffEqBase
      4.8 ms  UnsafeAtomics
     13.5 ms  Atomix
    365.6 ms  StaticArrays
      1.3 ms  StaticArrayInterface → StaticArrayInterfaceStaticArraysExt
      0.2 ms  Adapt → AdaptStaticArraysExt
      1.8 ms  ConstructionBase → ConstructionBaseStaticArraysExt
      0.6 ms  ForwardDiff → ForwardDiffStaticArraysExt
      0.3 ms  StaticArrays → StaticArraysStatisticsExt
      3.4 ms  CEnum
      2.3 ms  LLVMExtra_jll
     39.0 ms  LLVM
      3.6 ms  UnsafeAtomicsLLVM
     21.0 ms  KernelAbstractions
     88.6 ms  NNlib 85.82% compilation time
      3.4 ms  Functors
      4.9 ms  Optimisers
     42.2 ms  Tracker
      0.7 ms  ArrayInterface → ArrayInterfaceTrackerExt
      0.5 ms  RecursiveArrayTools → RecursiveArrayToolsTrackerExt
      0.9 ms  DiffEqBase → DiffEqBaseTrackerExt
      2.5 ms  FiniteDiff
      0.3 ms  FiniteDiff → FiniteDiffStaticArraysExt
     63.3 ms  DataStructures
      0.6 ms  StatsAPI
      4.3 ms  Distances
      0.2 ms  Distances → DistancesSparseArraysExt
      0.4 ms  Distances → DistancesChainRulesCoreExt
      5.2 ms  NLSolversBase
      6.1 ms  LineSearches
      2.1 ms  NLsolve
      5.2 ms  DiffEqCallbacks
      4.8 ms  QuadGK
      0.4 ms  SnoopPrecompile
      3.9 ms  ArrayInterfaceCore
     11.4 ms  HostCPUFeatures
    200.7 ms  VectorizationBase
      4.3 ms  SLEEFPirates
     49.5 ms  OffsetArrays
      0.9 ms  StaticArrayInterface → StaticArrayInterfaceOffsetArraysExt
    131.6 ms  LoopVectorization
      0.4 ms  LoopVectorization → SpecialFunctionsExt
      3.8 ms  LoopVectorization → ForwardDiffExt
      4.5 ms  TriangularSolve
    186.2 ms  RecursiveFactorization
     17.0 ms  KLU
      3.1 ms  Sparspak
      6.6 ms  FastLapackInterface
      0.4 ms  ConcreteStructs
     20.3 ms  Krylov
    253.6 ms  IntelOpenMP_jll 99.51% compilation time (100% recompilation)
      1.5 ms  MKL_jll
    572.0 ms  LinearSolve
      0.4 ms  LinearSolve → LinearSolveRecursiveArrayToolsExt
      0.5 ms  LinearSolve → LinearSolveKernelAbstractionsExt
     11.6 ms  RandomNumbers
      0.5 ms  FastClosures
      0.3 ms  PackageExtensionCompat
      6.1 ms  SimpleNonlinearSolve
      0.5 ms  SimpleNonlinearSolve → SimpleNonlinearSolveNNlibExt
      0.2 ms  SimpleUnPack
     21.8 ms  GenericSchur
      6.0 ms  ExponentialUtilities
      2.8 ms  SimpleTraits
      4.3 ms  ArnoldiMethod
      1.4 ms  Inflate
     36.7 ms  Graphs
      0.5 ms  VertexSafeGraphs
      6.6 ms  SparseDiffTools
    836.8 ms  NonlinearSolve
      1.2 ms  SciMLNLSolve
    667.4 ms  OrdinaryDiffEq
      1.6 ms  ResettableStacks
      3.9 ms  Random123
      0.4 ms  PoissonRandom
      1.6 ms  SortingAlgorithms
     14.9 ms  Missings
     22.5 ms  StatsBase
     37.9 ms  PDMats
      0.8 ms  Tracker → TrackerPDMatsExt
      0.8 ms  Rmath_jll
      0.8 ms  Rmath
      1.5 ms  Calculus
     15.1 ms  DualNumbers
      1.5 ms  HypergeometricFunctions
      4.8 ms  StatsFuns
      0.3 ms  StatsFuns → StatsFunsChainRulesCoreExt
    356.7 ms  Distributions
      1.1 ms  Distributions → DistributionsChainRulesCoreExt
      0.3 ms  DiffEqBase → DiffEqBaseDistributionsExt
      1.0 ms  PositiveFactorizations
     25.2 ms  Optim
     14.8 ms  DiffEqNoiseProcess
      3.8 ms  LevyArea
      0.4 ms  TreeViews
     30.8 ms  JumpProcesses
      0.9 ms  JumpProcesses → JumpProcessFastBroadcastExt
     55.5 ms  StochasticDiffEq
      0.3 ms  RealDot
     40.9 ms  StructArrays
      0.6 ms  SparseInverseSubset
     18.4 ms  ChainRules
     19.9 ms  IRTools
     18.3 ms  AbstractFFTs 43.79% compilation time (100% recompilation)
      0.6 ms  AbstractFFTs → AbstractFFTsTestExt
      0.5 ms  AbstractFFTs → AbstractFFTsChainRulesCoreExt
     40.2 ms  Zygote 20.84% compilation time
      1.2 ms  RecursiveArrayTools → RecursiveArrayToolsZygoteExt
      0.5 ms  SciMLBase → SciMLBaseZygoteExt
      0.4 ms  DiffEqBase → DiffEqBaseZygoteExt
      1.3 ms  SparseDiffTools → SparseDiffToolsZygoteExt
      0.3 ms  Zygote → ZygoteTrackerExt
      0.4 ms  Zygote → ZygoteDistancesExt
   4653.8 ms  ReverseDiff
      0.5 ms  PreallocationTools → PreallocationToolsReverseDiffExt
      2.9 ms  DiffEqBase → DiffEqBaseReverseDiffExt
      0.4 ms  DiffEqNoiseProcess → DiffEqNoiseProcessReverseDiffExt
      6.2 ms  EnzymeCore
      0.4 ms  KernelAbstractions → EnzymeExt
      1.0 ms  NNlib → NNlibEnzymeCoreExt
      3.0 ms  Enzyme_jll
     37.8 ms  TimerOutputs
      0.5 ms  Scratch
    338.0 ms  GPUCompiler 2.91% compilation time
      0.5 ms  StructIO
     49.7 ms  ObjectFile
  24687.6 ms  Enzyme 97.83% compilation time (100% recompilation)
      0.6 ms  DiffEqBase → DiffEqBaseEnzymeExt
      0.7 ms  LinearSolve → LinearSolveEnzymeExt
      0.4 ms  SparseDiffTools → SparseDiffToolsEnzymeExt
      0.7 ms  EllipsisNotation
     28.3 ms  Cassette
      2.6 ms  FunctionProperties
     31.1 ms  SciMLSensitivity
prbzrg commented 10 months ago
julia> @time_imports using Enzyme
      0.4 ms  Adapt
      3.7 ms  EnzymeCore
      2.9 ms  CEnum
    303.9 ms  Preferences
      0.4 ms  JLLWrappers
      8.9 ms  LLVMExtra_jll 71.13% compilation time
     61.2 ms  LLVM
      3.1 ms  Enzyme_jll
      0.4 ms  ExprTools
     25.4 ms  TimerOutputs
      0.3 ms  Scratch
    263.1 ms  GPUCompiler 3.54% compilation time
      0.3 ms  Reexport
      0.4 ms  StructIO
     33.6 ms  ObjectFile
    306.7 ms  Enzyme 3.16% compilation time
julia> @time_imports using ReverseDiff
      0.8 ms  Statistics
     13.1 ms  FunctionWrappers
      3.1 ms  StaticArraysCore
      3.6 ms  DiffResults
      5.1 ms  IrrationalConstants
      0.9 ms  DiffRules
      1.2 ms  DocStringExtensions
      0.5 ms  LogExpFunctions
      0.4 ms  OpenLibm_jll
    320.4 ms  Preferences
      0.5 ms  JLLWrappers
      7.0 ms  CompilerSupportLibraries_jll 90.46% compilation time
      8.8 ms  OpenSpecFun_jll 83.69% compilation time
     12.5 ms  SpecialFunctions
      0.5 ms  NaNMath
     11.4 ms  MacroTools
      0.5 ms  CommonSubexpressions
    148.4 ms  ForwardDiff
    360.6 ms  StaticArrays
      0.8 ms  ForwardDiff → ForwardDiffStaticArraysExt
      0.3 ms  StaticArrays → StaticArraysStatisticsExt
      0.3 ms  Compat
      0.2 ms  Compat → CompatLinearAlgebraExt
     25.0 ms  ChainRulesCore
      0.5 ms  ChainRulesCore → ChainRulesCoreSparseArraysExt
      0.5 ms  LogExpFunctions → LogExpFunctionsChainRulesCoreExt
      0.8 ms  SpecialFunctions → SpecialFunctionsChainRulesCoreExt
   3880.1 ms  ReverseDiff
devmotion commented 10 months ago

One (main?) factor contributing to the ReverseDiff timings might be https://github.com/JuliaDiff/ReverseDiff.jl/issues/226.

ChrisRackauckas commented 10 months ago

On v1.10? v1.10 has dramatic load time differences and is just about to be released that I want to just focus on timings for that.

24687.6 ms Enzyme 97.83% compilation time (100% recompilation)

That's all invalidations. Can you make an invalidation report like is done in https://sciml.ai/news/2022/09/21/compile_time/#profiling_and_fixing_sources_of_invalidations ?

prbzrg commented 10 months ago

on v1.9:

Julia Version 1.9.3
Commit bed2cd540a (2023-08-24 14:43 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: Windows (x86_64-w64-mingw32)
  CPU: 12 × Intel(R) Core(TM) i7-10750H CPU @ 2.60GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-14.0.6 (ORCJIT, skylake)
  Threads: 1 on 12 virtual cores
KristofferC commented 10 months ago

Enzyme invalidation is tracked at https://github.com/EnzymeAD/Enzyme.jl/issues/776

prbzrg commented 10 months ago
julia> using SnoopCompile

julia> invalidations = @snoopr using SciMLSensitivity
WARNING: Method definition adjoint(ZygoteRules.AContext, typeof(ZygoteRules.literal_getproperty), SciMLBase.EnsembleSolution{T, N, S} where S where N where T, Base.Val{:u}) in module DiffEqBase overwritten in module SciMLBaseZygoteExt.
WARNING: Method definition _pullback(ZygoteRules.AContext, typeof(Core.kwcall), Any, typeof(ZygoteRules.literal_getproperty), SciMLBase.EnsembleSolution{T, N, S} where S where N where T, Base.Val{:u}) in module DiffEqBase at C:\Users\Hossein Pourbozorg\.julia\packages\ZygoteRules\4nXuu\src\adjoint.jl:74 overwritten in module SciMLBaseZygoteExt on the same line (check for duplicate calls to `include`).
WARNING: Method definition _pullback(ZygoteRules.AContext, typeof(ZygoteRules.literal_getproperty), SciMLBase.EnsembleSolution{T, N, S} where S where N where T, Base.Val{:u}) in module DiffEqBase at C:\Users\Hossein Pourbozorg\.julia\packages\ZygoteRules\4nXuu\src\adjoint.jl:65 overwritten in module SciMLBaseZygoteExt on the same line (check for duplicate calls to `include`).
53566-element Vector{Any}:
 MethodInstance for show(::IOBuffer, ::Any)
 "jl_method_table_insert"
 MethodInstance for show(::IOContext{IOBuffer}, ::Any)
 "jl_method_table_insert"
 MethodInstance for Base.Docs.formatdoc(::IOBuffer, ::Base.Docs.DocStr, ::Any)
 "jl_method_table_insert"
 MethodInstance for convert(::Type{_A} where _A<:Tuple{Vector, Bool}, ::Tuple{Vector, Bool})
 "jl_method_table_insert"
 MethodInstance for convert(::Type{_A} where _A<:Tuple{Union{Core.Compiler.InternalMethodTable, Core.Compiler.CachedMethodTable{Core.Compiler.OverlayMethodTable}}, UInt64, Bool}, ::Tuple{Union{Core.Compiler.InternalMethodTable, Core.Compiler.CachedMethodTable{Core.Compiler.OverlayMethodTable}}, UInt64, Bool})
 "jl_method_table_insert"
 MethodInstance for convert(::Type{_A} where _A<:Tuple{Any, Bool, Any, Int64}, ::Tuple{Any, Bool, Any, Int64})
 "jl_method_table_insert"
 MethodInstance for convert(::Type{_A} where _A<:Tuple{Union{typeof(Cthulhu.is_type_unstable), Returns{Bool}}, Symbol}, ::Tuple{Union{typeof(Cthulhu.is_type_unstable), Returns{Bool}}, Symbol})
 "jl_method_table_insert"
 MethodInstance for convert(::Type{_A} where _A<:Tuple{Any, Any, Any, Union{Nothing, Vector{Pair{Int64, String}}}, Union{Nothing, Dict{Int64, Core.Compiler.Effects}}, Any, Any, Any, Any, Any, Any, Cthulhu.CthulhuInterpreter}, ::Tuple{Any, Any, Any, Union{Nothing, Vector{Pair{Int64, String}}}, Union{Nothing, Dict{Int64, Core.Compiler.Effects}}, Any, Any, Any, Any, Any, Any, Cthulhu.CthulhuInterpreter})
 "jl_method_table_insert"
 MethodInstance for convert(::Type{_A} where _A<:Tuple{Union{Nothing, Core.Compiler.InferenceResult, Cthulhu.SemiConcreteCallInfo}, Any, Any, Bool, Vararg{Any, 10}}, ::Tuple{Union{Nothing, Core.Compiler.InferenceResult, Cthulhu.SemiConcreteCallInfo}, Any, Any, Bool, Vararg{Any, 10}})
 "jl_method_table_insert"
 MethodInstance for convert(::Type{_A} where _A<:Tuple{Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Cthulhu.CthulhuInterpreter}, ::Tuple{Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Cthulhu.CthulhuInterpreter})
 "jl_method_table_insert"
 MethodInstance for convert(::Type{_A} where _A<:Tuple{Bool, Any, Bool, Nothing, Nothing, Bool, Bool, Any, Any, Any, Any, Cthulhu.CthulhuInterpreter}, ::Tuple{Bool, Any, Bool, Nothing, Nothing, Bool, Bool, Any, Any, Any, Any, Cthulhu.CthulhuInterpreter})
 "jl_method_table_insert"
 MethodInstance for convert(::Type{_A} where _A<:Tuple{Core.Compiler.IRCode, Any, Vector{Core.Compiler.CallInfo}, Vector{Any}, Any, Any}, ::Tuple{Core.Compiler.IRCode, Any, Vector{Core.Compiler.CallInfo}, Vector{Any}, Any, Any})
 ⋮
 "jl_method_table_insert"
 MethodInstance for show(::IOContext, ::Type)
 "jl_method_table_insert"
 MethodInstance for show(::IOContext, ::DataType)
 "jl_method_table_insert"
 MethodInstance for show(::IOBuffer, ::Any)
 "jl_method_table_insert"
 MethodInstance for show(::IOContext{IOBuffer}, ::Any)
 "jl_method_table_insert"
 MethodInstance for show(::IOBuffer, ::Type)
 "invalidate_mt_cache"
 MethodInstance for show(::IOContext{IOBuffer}, ::Type)
 "invalidate_mt_cache"
 MethodInstance for show(::IOContext{IOBuffer}, ::Type)
 "invalidate_mt_cache"
 MethodInstance for show(::IOContext{IOBuffer}, ::Type)
 "invalidate_mt_cache"
 show(io::IO, ::Type{nametype(HasBranchingCtx)}) @ FunctionProperties C:\Users\Hossein Pourbozorg\.julia\packages\Cassette\6X8m9\src\context.jl:251
 "jl_method_table_insert"
 MethodInstance for getproperty(::Function, ::Symbol)
 "jl_method_table_insert"
 MethodInstance for getproperty(::Function, ::Symbol)
 "invalidate_mt_cache"

julia> @show length(uinvalidated(invalidations))  # show total invalidations
length(uinvalidated(invalidations)) = 8269
8269

julia> trees = invalidation_trees(invalidations)
278-element Vector{SnoopCompile.MethodInvalidations}:
Error showing value of type Vector{SnoopCompile.MethodInvalidations}:
ERROR: UndefVarError: `A` not defined
Stacktrace:
  [1] show(io::IOContext{IOBuffer}, t::
SYSTEM (REPL): showing an error caused an error
ERROR: UndefVarError: `A` not defined
Stacktrace:
  [1] show(io::IOContext{IOBuffer}, t::
SYSTEM (REPL): caught exception of type UndefVarError while trying to handle a nested exception; giving up

julia> reverse(trees)[2:7]
6-element Vector{SnoopCompile.MethodInvalidations}:
 inserting show(io::IO, ::Type{nametype(HasBranchingCtx)}) @ FunctionProperties C:\Users\Hossein Pourbozorg\.julia\packages\Cassette\6X8m9\src\context.jl:251 invalidated:
   backedges: 1: superseding show(io::IO, x::Type) @ Base show.jl:950 with MethodInstance for show(::IOContext{IOBuffer}, ::Type) (37 children)
              2: superseding show(io::IO, x::Type) @ Base show.jl:950 with MethodInstance for show(::IOBuffer, ::Type) (2686 children)
   5 mt_cache

 inserting convert(::Type{Array{T, N}}, sa::StaticArraysCore.SizedArray{S, T, N, N, Array{T, N}}) where {S, T, N} @ StaticArrays C:\Users\Hossein Pourbozorg\.julia\packages\StaticArrays\cZ1ET\src\SizedArray.jl:88 invalidated:
   mt_backedges: 1: signature Tuple{typeof(convert), Type{Vector{String}}, Any} triggered MethodInstance for setindex!(::Dict{String, Vector{String}}, ::Any, ::String) (1 children)
                 2: signature Tuple{typeof(convert), Type{Vector{Tuple{LineNumberNode, Expr}}}, Any} triggered MethodInstance for convert(::Type{Union{Missing, Vector{Tuple{LineNumberNode, Expr}}}}, ::Any) (1 children)
                 3: signature Tuple{typeof(convert), Type{Vector{String}}, Any} triggered MethodInstance for Cthulhu.CthulhuMenu(::Any, ::Any, ::Int64, ::Int64, ::Nothing, ::Bool, ::REPL.TerminalMenus.Config, ::Vector{Cthulhu.CustomToggle}) (7 children)
                 4: signature Tuple{typeof(convert), Type{Vector{Int64}}, Any} triggered MethodInstance for setindex!(::IdDict{UInt64, Vector{Int64}}, ::Any, ::Any) (9 children)
                 5: signature Tuple{typeof(convert), Type{Vector{Any}}, Any} triggered MethodInstance for setindex!(::Vector{Vector{Any}}, ::Any, ::Int64) (14 children)
                 6: signature Tuple{typeof(convert), Type{Vector{Any}}, Any} triggered MethodInstance for setindex!(::IdDict{Type, Vector{Any}}, ::Any, ::Any) (17 children)
   backedges:  1: superseding convert(::Type{T}, a::AbstractArray) where T<:Array @ Base array.jl:613 with MethodInstance for convert(::Type{Vector{Int64}}, ::AbstractArray) (1 children)
               2: superseding convert(::Type{T}, a::AbstractArray) where T<:Array @ Base array.jl:613 with MethodInstance for convert(::Type{Vector{Tuple{LineNumberNode, Expr}}}, ::AbstractArray) (1 children)
               3: superseding convert(::Type{T}, a::AbstractArray) where T<:Array @ Base array.jl:613 with MethodInstance for convert(::Type{Vector{String}}, ::AbstractArray) (2 children)
               4: superseding convert(::Type{T}, a::AbstractArray) where T<:Array @ Base array.jl:613 with MethodInstance for convert(::Type{Vector{Any}}, ::AbstractArray) (2 children)
               5: superseding convert(::Type{T}, a::AbstractArray) where T<:Array @ Base array.jl:613 with MethodInstance for convert(::Type{Vector{ColorTypes.RGB{FixedPointNumbers.N0f8}}}, ::AbstractVector) (9 children)
               6: superseding convert(::Type{T}, a::AbstractArray) where T<:Array @ Base array.jl:613 with MethodInstance for convert(::Type{Vector{IRTools.Inner.Branch}}, ::AbstractArray) (118 children)
               7: superseding convert(::Type{T}, a::AbstractArray) where T<:Array @ Base array.jl:613 with MethodInstance for convert(::Type{Vector{Any}}, ::AbstractArray) (4 children)
               8: superseding convert(::Type{T}, a::AbstractArray) where T<:Array @ Base array.jl:613 with MethodInstance for convert(::Type{Vector{Any}}, ::AbstractArray) (1 children)
               9: superseding convert(::Type{T}, a::AbstractArray) where T<:Array @ Base array.jl:613 with MethodInstance for convert(::Type{Vector{Any}}, ::AbstractVector) (1 children)
              10: superseding convert(::Type{T}, a::AbstractArray) where T<:Array @ Base array.jl:613 with MethodInstance for convert(::Type{Vector{IRTools.Inner.Branch}}, ::AbstractArray) (387 children)
              11: superseding convert(::Type{T}, a::AbstractArray) where T<:Array @ Base array.jl:613 with MethodInstance for convert(::Type{Vector{Vector{Int64}}}, ::AbstractArray) (7 children)
              12: superseding convert(::Type{T}, a::AbstractArray) where T<:Array @ Base array.jl:613 with MethodInstance for convert(::Type{Vector{Any}}, ::AbstractArray) (129 children)
              13: superseding convert(::Type{T}, a::AbstractArray) where T<:Array @ Base array.jl:613 with MethodInstance for convert(::Type{Vector{IRTools.Inner.BasicBlock}}, ::AbstractArray) (18 children)
              14: superseding convert(::Type{T}, a::AbstractArray) where T<:Array @ Base array.jl:613 with MethodInstance for convert(::Type{Vector{IRTools.Inner.Branch}}, ::AbstractArray) (35 children)
              15: superseding convert(::Type{T}, a::AbstractArray) where T<:Array @ Base array.jl:613 with MethodInstance for convert(::Type{Vector{Core.CodeInstance}}, ::AbstractArray) (208 children)
              16: superseding convert(::Type{T}, a::AbstractArray) where T<:Array @ Base array.jl:613 with MethodInstance for convert(::Type{Vector{Base.StackTraces.StackFrame}}, ::AbstractArray) (3 children)
              17: superseding convert(::Type{T}, a::AbstractArray) where T<:Array @ Base array.jl:613 with MethodInstance for convert(::Type{Vector{Core.CodeInstance}}, ::AbstractArray) (3 children)
              18: superseding convert(::Type{T}, a::AbstractArray) where T<:Array @ Base array.jl:613 with MethodInstance for convert(::Type{Vector{Int64}}, ::AbstractArray) (17 children)
              19: superseding convert(::Type{T}, a::AbstractArray) where T<:Array @ Base array.jl:613 with MethodInstance for convert(::Type{Vector{LLVM.Value}}, ::AbstractArray) (5 children)
   1 mt_cache

 inserting cconvert(::Type{<:Ptr}, a::StaticArraysCore.FieldArray) @ StaticArrays C:\Users\Hossein Pourbozorg\.julia\packages\StaticArrays\cZ1ET\src\FieldArray.jl:19 invalidated:
   backedges:   1: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
                2: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOrcOpaqueThreadSafeContext}}, ::Any) (5 children)
                3: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOrcOpaqueThreadSafeContext}}, ::Any) (5 children)
                4: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (5 children)
                5: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (5 children)
                6: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
                7: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
                8: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
                9: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
               10: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
               11: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
               12: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (40 children)
               13: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (40 children)
               14: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
               15: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
               16: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
               17: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
               18: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (7 children)
               19: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (7 children)
               20: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
               21: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
               22: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
               23: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
               24: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
               25: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
               26: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
               27: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
               28: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
               29: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
               30: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (96 children)
               31: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (96 children)
               32: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (204 children)
               33: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (204 children)
               34: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueMetadata}}, ::Any) (1 children)
               35: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueMetadata}}, ::Any) (1 children)
               36: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (2 children)
               37: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (2 children)
               38: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               39: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               40: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{Nothing}}, ::Any) (1 children)
               41: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{Nothing}}, ::Any) (1 children)
               42: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               43: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               44: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               45: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               46: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueType}}, ::Any) (1 children)
               47: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueType}}, ::Any) (1 children)
               48: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               49: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               50: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               51: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               52: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               53: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               54: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueMetadata}}, ::Any) (1 children)
               55: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueMetadata}}, ::Any) (1 children)
               56: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               57: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               58: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               59: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               60: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               61: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               62: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               63: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               64: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueMetadata}}, ::Any) (1 children)
               65: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueMetadata}}, ::Any) (1 children)
               66: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               67: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               68: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{Enzyme.API.EnzymeTypeTree}}, ::Any) (1 children)
               69: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{Enzyme.API.EnzymeTypeTree}}, ::Any) (1 children)
               70: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               71: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               72: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               73: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               74: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               75: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               76: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               77: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               78: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueModule}}, ::Any) (1 children)
               79: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueModule}}, ::Any) (1 children)
               80: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               81: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               82: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               83: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               84: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               85: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               86: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{Enzyme.API.EnzymeTypeTree}}, ::Any) (1 children)
               87: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{Enzyme.API.EnzymeTypeTree}}, ::Any) (1 children)
               88: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               89: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               90: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               91: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               92: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (2 children)
               93: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (2 children)
               94: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (2 children)
               95: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (2 children)
               96: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (14 children)
               97: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (14 children)
               98: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueMetadata}}, ::Any) (1 children)
               99: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueMetadata}}, ::Any) (1 children)
              100: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              101: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              102: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueType}}, ::Any) (1 children)
              103: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueType}}, ::Any) (1 children)
              104: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              105: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              106: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              107: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              108: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueModule}}, ::Any) (1 children)
              109: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueModule}}, ::Any) (1 children)
              110: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{Enzyme.API.EnzymeTypeTree}}, ::Any) (1 children)
              111: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{Enzyme.API.EnzymeTypeTree}}, ::Any) (1 children)
              112: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              113: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              114: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              115: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              116: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueType}}, ::Any) (1 children)
              117: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueType}}, ::Any) (1 children)
              118: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              119: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              120: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              121: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              122: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              123: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              124: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              125: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              126: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (3 children)
              127: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (3 children)
              128: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
              129: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
              130: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
              131: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
              132: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              133: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              134: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
              135: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
              136: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              137: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              138: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
              139: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
              140: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOrcOpaqueThreadSafeContext}}, ::Any) (2 children)
              141: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOrcOpaqueThreadSafeContext}}, ::Any) (2 children)
              142: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
              143: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
              144: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
              145: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
              146: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              147: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              148: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              149: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              150: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              151: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              152: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              153: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              154: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              155: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              156: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              157: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              158: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              159: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              160: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              161: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              162: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (3 children)
              163: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (3 children)
              164: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              165: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              166: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              167: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              168: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (3 children)
              169: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (3 children)
              170: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              171: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              172: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              173: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              174: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              175: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              176: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              177: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              178: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{UInt64}}, ::Any) (1 children)
              179: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{UInt64}}, ::Any) (1 children)
              180: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              181: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              182: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
              183: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
              184: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (3 children)
              185: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (3 children)
              186: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueModule}}, ::Any) (1 children)
              187: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueModule}}, ::Any) (1 children)
              188: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
              189: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
              190: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              191: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              192: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              193: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)

 inserting cconvert(::Type{Ptr{T}}, a::StaticArraysCore.SArray) where T @ StaticArrays C:\Users\Hossein Pourbozorg\.julia\packages\StaticArrays\cZ1ET\src\SArray.jl:70 invalidated:
   backedges:   1: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
                2: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOrcOpaqueThreadSafeContext}}, ::Any) (5 children)
                3: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOrcOpaqueThreadSafeContext}}, ::Any) (5 children)
                4: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (5 children)
                5: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (5 children)
                6: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
                7: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
                8: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
                9: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
               10: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
               11: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
               12: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (40 children)
               13: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (40 children)
               14: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
               15: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
               16: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
               17: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
               18: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (7 children)
               19: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (7 children)
               20: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
               21: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
               22: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
               23: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
               24: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
               25: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
               26: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
               27: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
               28: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
               29: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
               30: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (96 children)
               31: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (96 children)
               32: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (204 children)
               33: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (204 children)
               34: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueMetadata}}, ::Any) (1 children)
               35: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueMetadata}}, ::Any) (1 children)
               36: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (2 children)
               37: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (2 children)
               38: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               39: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               40: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{Nothing}}, ::Any) (1 children)
               41: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{Nothing}}, ::Any) (1 children)
               42: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               43: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               44: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               45: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               46: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueType}}, ::Any) (1 children)
               47: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueType}}, ::Any) (1 children)
               48: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               49: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               50: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               51: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               52: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               53: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               54: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueMetadata}}, ::Any) (1 children)
               55: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueMetadata}}, ::Any) (1 children)
               56: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               57: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               58: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               59: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               60: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               61: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               62: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               63: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               64: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueMetadata}}, ::Any) (1 children)
               65: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueMetadata}}, ::Any) (1 children)
               66: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               67: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               68: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{Enzyme.API.EnzymeTypeTree}}, ::Any) (1 children)
               69: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{Enzyme.API.EnzymeTypeTree}}, ::Any) (1 children)
               70: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               71: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               72: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               73: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               74: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               75: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               76: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               77: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               78: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueModule}}, ::Any) (1 children)
               79: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueModule}}, ::Any) (1 children)
               80: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               81: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               82: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               83: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               84: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               85: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               86: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{Enzyme.API.EnzymeTypeTree}}, ::Any) (1 children)
               87: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{Enzyme.API.EnzymeTypeTree}}, ::Any) (1 children)
               88: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               89: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               90: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               91: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
               92: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (2 children)
               93: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (2 children)
               94: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (2 children)
               95: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (2 children)
               96: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (14 children)
               97: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (14 children)
               98: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueMetadata}}, ::Any) (1 children)
               99: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueMetadata}}, ::Any) (1 children)
              100: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              101: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              102: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueType}}, ::Any) (1 children)
              103: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueType}}, ::Any) (1 children)
              104: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              105: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              106: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              107: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              108: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueModule}}, ::Any) (1 children)
              109: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueModule}}, ::Any) (1 children)
              110: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{Enzyme.API.EnzymeTypeTree}}, ::Any) (1 children)
              111: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{Enzyme.API.EnzymeTypeTree}}, ::Any) (1 children)
              112: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              113: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              114: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              115: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              116: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueType}}, ::Any) (1 children)
              117: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueType}}, ::Any) (1 children)
              118: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              119: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              120: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              121: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              122: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              123: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              124: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              125: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              126: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (3 children)
              127: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (3 children)
              128: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
              129: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
              130: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
              131: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
              132: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              133: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              134: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
              135: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
              136: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              137: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              138: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
              139: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
              140: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOrcOpaqueThreadSafeContext}}, ::Any) (2 children)
              141: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOrcOpaqueThreadSafeContext}}, ::Any) (2 children)
              142: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
              143: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
              144: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
              145: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
              146: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              147: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              148: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              149: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              150: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              151: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              152: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              153: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              154: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              155: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              156: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              157: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              158: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              159: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              160: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              161: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              162: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (3 children)
              163: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (3 children)
              164: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              165: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              166: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              167: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              168: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (3 children)
              169: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (3 children)
              170: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              171: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              172: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              173: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              174: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              175: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              176: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              177: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              178: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{UInt64}}, ::Any) (1 children)
              179: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{UInt64}}, ::Any) (1 children)
              180: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              181: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              182: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
              183: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
              184: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (3 children)
              185: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (3 children)
              186: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueModule}}, ::Any) (1 children)
              187: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueModule}}, ::Any) (1 children)
              188: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
              189: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (2 children)
              190: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              191: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueContext}}, ::Any) (1 children)
              192: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)
              193: superseding cconvert(::Type{<:Ptr}, x) @ Base essentials.jl:493 with MethodInstance for Base.cconvert(::Type{Ptr{LLVM.API.LLVMOpaqueValue}}, ::Any) (1 children)

 inserting convert(::Type{Array{T, N}}, sa::StaticArraysCore.SizedArray{S, T, N, M, TData} where {M, TData<:AbstractArray{T, M}}) where {T, S, N} @ StaticArrays C:\Users\Hossein Pourbozorg\.julia\packages\StaticArrays\cZ1ET\src\SizedArray.jl:82 invalidated:
   backedges:  1: superseding convert(::Type{T}, a::AbstractArray) where T<:Array @ Base array.jl:613 with MethodInstance for convert(::Type{Vector{IRTools.Inner.Branch}}, ::AbstractArray) (118 children)
               2: superseding convert(::Type{T}, a::AbstractArray) where T<:Array @ Base array.jl:613 with MethodInstance for convert(::Type{Vector{Any}}, ::AbstractArray) (4 children)
               3: superseding convert(::Type{T}, a::AbstractArray) where T<:Array @ Base array.jl:613 with MethodInstance for convert(::Type{Vector{Any}}, ::AbstractArray) (1 children)
               4: superseding convert(::Type{T}, a::AbstractArray) where T<:Array @ Base array.jl:613 with MethodInstance for convert(::Type{Vector{Any}}, ::AbstractVector) (1 children)
               5: superseding convert(::Type{T}, a::AbstractArray) where T<:Array @ Base array.jl:613 with MethodInstance for convert(::Type{Vector{IRTools.Inner.Branch}}, ::AbstractArray) (387 children)
               6: superseding convert(::Type{T}, a::AbstractArray) where T<:Array @ Base array.jl:613 with MethodInstance for convert(::Type{Vector{Vector{Int64}}}, ::AbstractArray) (7 children)
               7: superseding convert(::Type{T}, a::AbstractArray) where T<:Array @ Base array.jl:613 with MethodInstance for convert(::Type{Vector{Any}}, ::AbstractArray) (129 children)
               8: superseding convert(::Type{T}, a::AbstractArray) where T<:Array @ Base array.jl:613 with MethodInstance for convert(::Type{Vector{IRTools.Inner.BasicBlock}}, ::AbstractArray) (18 children)
               9: superseding convert(::Type{T}, a::AbstractArray) where T<:Array @ Base array.jl:613 with MethodInstance for convert(::Type{Vector{IRTools.Inner.Branch}}, ::AbstractArray) (35 children)
              10: superseding convert(::Type{T}, a::AbstractArray) where T<:Array @ Base array.jl:613 with MethodInstance for convert(::Type{Vector{Core.CodeInstance}}, ::AbstractArray) (208 children)
              11: superseding convert(::Type{T}, a::AbstractArray) where T<:Array @ Base array.jl:613 with MethodInstance for convert(::Type{Vector{Base.StackTraces.StackFrame}}, ::AbstractArray) (3 children)
              12: superseding convert(::Type{T}, a::AbstractArray) where T<:Array @ Base array.jl:613 with MethodInstance for convert(::Type{Vector{Core.CodeInstance}}, ::AbstractArray) (3 children)
              13: superseding convert(::Type{T}, a::AbstractArray) where T<:Array @ Base array.jl:613 with MethodInstance for convert(::Type{Vector{Int64}}, ::AbstractArray) (17 children)
              14: superseding convert(::Type{T}, a::AbstractArray) where T<:Array @ Base array.jl:613 with MethodInstance for convert(::Type{Vector{LLVM.Value}}, ::AbstractArray) (5 children)
   1 mt_cache

 inserting is_splat_index(::Type{EllipsisNotation.Ellipsis}) @ EllipsisNotation C:\Users\Hossein Pourbozorg\.julia\packages\EllipsisNotation\QedAR\src\EllipsisNotation.jl:66 invalidated:
   backedges: 1: superseding is_splat_index(T::Type) @ StaticArrayInterface C:\Users\Hossein Pourbozorg\.julia\packages\StaticArrayInterface\gIECl\src\indexing.jl:513 with MethodInstance for StaticArrayInterface.is_splat_index(::Type) (1 children)
              2: superseding is_splat_index(T::Type) @ StaticArrayInterface C:\Users\Hossein Pourbozorg\.julia\packages\StaticArrayInterface\gIECl\src\indexing.jl:513 with MethodInstance for StaticArrayInterface.is_splat_index(::DataType) (1 children)
              3: superseding is_splat_index(x) @ StaticArrayInterface C:\Users\Hossein Pourbozorg\.julia\packages\StaticArrayInterface\gIECl\src\indexing.jl:514 with MethodInstance for StaticArrayInterface.is_splat_index(::Any) (232 children)
   1 mt_cache

julia> reverse(trees)[1]
inserting Error showing value of type SnoopCompile.MethodInvalidations:
ERROR: UndefVarError: `A` not defined
Stacktrace:
  [1] show(io::IOContext{IOBuffer}, t::
SYSTEM (REPL): showing an error caused an error
ERROR: UndefVarError: `A` not defined
Stacktrace:
  [1] show(io::IOContext{IOBuffer}, t::
SYSTEM (REPL): caught exception of type UndefVarError while trying to handle a nested exception; giving up
ChrisRackauckas commented 10 months ago

Well that error is interesting 😅. Maybe report that to SnoopCompile?

The static arrays stuff is known. I think we @recompile_invalidations after we import it though.

show(io::IO, ::Type{nametype(HasBranchingCtx)}) is odd, I don't see a show function in the whole package 😅 https://github.com/SciML/FunctionProperties.jl/blob/main/src/FunctionProperties.jl

prbzrg commented 10 months ago

inserting show(io::IO, ::Type{nametype(HasBranchingCtx)}) @ FunctionProperties C:\Users\Hossein Pourbozorg.julia\packages\Cassette\6X8m9\src\context.jl:251 invalidated:

It's coming from Cassette.

https://github.com/SciML/FunctionProperties.jl/blob/5f3e64e60b1c897219b30b55778bf41f57df27e0/src/FunctionProperties.jl#L8

https://github.com/JuliaLabs/Cassette.jl/blob/5fe09b7bea8a76b029ab914fa4c412a9ece3529a/src/context.jl#L251