Skip to content

Cannot descend into function without revising #688

@AayushSabharwal

Description

@AayushSabharwal

On JuliaSymbolics/SymbolicUtils.jl@e7016cc, with

Julia Version 1.12.2
Commit ca9b6662be4 (2025-11-20 16:25 UTC)
Build Info:
  Official https://julialang.org release
Platform Info:
  OS: macOS (arm64-apple-darwin24.0.0)
  CPU: 14 × Apple M4 Max
  WORD_SIZE: 64
  LLVM: libLLVM-18.1.7 (ORCJIT, apple-m4)
  GC: Built with stock GC
Threads: 16 default, 2 interactive, 10 GC (on 10 virtual cores)
Environment:
  JULIA_PKG_PRECOMPILE_AUTO = 0
  JULIA_PKG_USE_CLI_GIT = true

and global environment

Status `~/.julia/environments/v1.12/Project.toml`
  [6e4b80f9] BenchmarkTools v1.6.3
  [0ca39b1e] Chairmarks v1.3.1
⌃ [f68482b8] Cthulhu v2.17.10
  [31a5f54b] Debugger v0.7.16
  [5903a43b] Infiltrator v1.9.4
  [5fb14364] OhMyREPL v0.5.32
  [e4faabce] PProf v3.2.0
  [4722fa14] PkgAuthentication v2.3.2
⌃ [295af30f] Revise v3.12.2
  [aa65fe97] SnoopCompile v3.2.4
  [e2b509da] SnoopCompileCore v3.1.1
  [1e6cf692] TestEnv v1.102.3
  [44cfe95a] Pkg v1.12.0
  [8dfed614] Test v1.11.0

In the REPL

julia> using Revise, Cthulhu
julia> using SymbolicUtils
julia> @syms x y;
julia> @descend sorted_arguments(x + y)q

In Typed IR with warn enabled, the IR contains

2 ─ %9  = SymbolicUtils._sorted_args1::Core.Const(SymbolicUtils._sorted_args1)
│   %10 =   dynamic (%9)(x)::ReadOnlyArrays.ReadOnlyVector{SymbolicUtils.BasicSymbolicImpl.var"typeof(BasicSymbolicImpl)"{SymReal}, SymbolicUtils.SmallVec{SymbolicUtils.BasicSymbolicImpl.var"typeof(BasicSymbolicImpl)"{SymReal}, Vector{SymbolicUtils.BasicSymbolicImpl.var"typeof(BasicSymbolicImpl)"{SymReal}}}}

However, I cannot descend into this call:

Toggles: [w]arn, [h]ide type-stable statements, [o]ptimize, [d]ebuginfo, [r]emarks, [e]ffects, e[x]ception_types, [i]nlining costs, [t]ype_annotations, [s]yntax highlight for Source/LLVM/Native, [j]ump to source always.
Show: [S]ource, [A]ST, [T]yped, [L]LVM, [N]ative.
Actions: [q]uit, ⟵ ascend, [b]ookmark, [E]dit source code, [R]evise and redisplay, dum[P] params cache.

 • ↩

Pressing R to "Revise and redisplay"

Toggles: [w]arn, [h]ide type-stable statements, [o]ptimize, [d]ebuginfo, [r]emarks, [e]ffects, e[x]ception_types, [i]nlining costs, [t]ype_annotations, [s]yntax highlight for Source/LLVM/Native, [j]ump to source always.
Show: [S]ource, [A]ST, [T]yped, [L]LVM, [N]ative.
Actions: [q]uit, ⟵ ascend, [b]ookmark, [E]dit source code, [R]evise and redisplay, dum[P] params cache.

 • %10 = _sorted_args1(::SymbolicUtils.BasicSymbolicImpl.var"typeof(BasicSymbolicImpl)"{SymReal})::…

Now shows this option. This happens at multiple levels of the stack. Descending into this call, the IR

7 ── %28 = SymbolicUtils.:(var"##_sorted_args1#457")::Core.Const(SymbolicUtils.var"##_sorted_args1#457")
│    %29 =   dynamic (%28)(x)::ReadOnlyArrays.ReadOnlyVector{SymbolicUtils.BasicSymbolicImpl.var"typeof(BasicSymbolicImpl)"{SymReal}, SymbolicUtils.SmallVec{SymbolicUtils.BasicSymbolicImpl.var"typeof(BasicSymbolicImpl)"{SymReal}, Vector{SymbolicUtils.BasicSymbolicImpl.var"typeof(BasicSymbolicImpl)"{SymReal}}}}

is displayed. Again, I cannot descend into this call but pressing R enables me to.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions