SciML/SciMLSensitivity.jl

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

prbzrg opened this issue · 8 comments

prbzrg commented
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
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

One (main?) factor contributing to the ReverseDiff timings might be JuliaDiff/ReverseDiff.jl#226.

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

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

Enzyme invalidation is tracked at EnzymeAD/Enzyme.jl#776

prbzrg commented
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

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

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