Skip to content

Drop dead AI bindings + retype SVFG def/use-site bindings - #56

Merged
bjjwwang merged 2 commits into
SVF-tools:mainfrom
bjjwwang:fix/drop-removed-defuse-bindings
May 4, 2026
Merged

bjjwwang merged 2 commits into
SVF-tools:mainfrom
bjjwwang:fix/drop-removed-defuse-bindings

Conversation

@bjjwwang

@bjjwwang bjjwwang commented May 4, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • Upstream PR #1812 (sparse-AE refactor) moved getUseSitesOf{Obj,Val}Var and getDefSiteOf{Val,Obj}Var from AbstractInterpretation onto the FullSparseAbstractInterpretation subclass — drop the four bindings + matching .pyi stubs.
  • Upstream commit e4e02013 (add/update SVFG APIs for sparseAE) retyped the same-named methods on SVFG to take/return SVFGNode* instead of ICFGNode*. Update pybind/Graphs.cpp and pysvf.pyi accordingly. Callers that need the ICFG node can map back via SVFGNode::getICFGNode().

CI was failing on svf-lib >= 1.0.2558 with both error families.

Test plan

  • Built a fresh wheel in a clean ubuntu:24.04 Docker against npm install svf-lib@latest (1.0.2558, LLVM 21.1.0, Z3 4.8.8): Successfully built pysvf-0.0.0.dev0-cp312-cp312-linux_x86_64.whl.
  • Smoke imported (pysvf.AbstractInterpretation + Options.max_field_limit()) from a non-source cwd.
  • mypy.stubtest pysvf --allowlist ./stubtest_allowlist.txt → Success: no issues found in 4 modules.

🤖 Generated with Claude Code

Claude (SVF sync) and others added 2 commits May 4, 2026 14:50
Upstream PR #1812 (sparse-AE refactor) and the follow-up SVFG-API commit
moved getUseSitesOf{Obj,Val}Var and getDefSiteOf{Val,Obj}Var from
AbstractInterpretation onto the FullSparseAbstractInterpretation
subclass.  The dense base class no longer exposes them, so pybind/AE.cpp
fails to compile on master with "is not a member of
SVF::AbstractInterpretation".

Drop the four bindings (and the matching pyi stubs).  Equivalent
def/use-site queries live on SVFG and are still bound there; pysvf does
not currently expose FullSparseAbstractInterpretation, so there is
no replacement to wire up here.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Upstream commit e4e02013 ("add/update SVFG APIs for sparseAE") retyped
SVFG::getDefSiteOf{Val,Obj}Var and getUseSitesOf{Val,Obj}Var to return
SVFGNode (sets of SVFGNode) and to take SVFGNode* in place of
ICFGNode*.  pybind11 fails to compile against svf-lib >= 1.0.2558:

    cannot convert 'const SVF::ICFGNode*' to 'const SVF::SVFGNode*'

Update pybind/Graphs.cpp to use the new signatures, return
std::vector<const SVFGNode*>, and adjust pysvf.pyi to match.  Callers
that need the ICFG node can map back via SVFGNode::getICFGNode().

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@bjjwwang bjjwwang changed the title Drop def/use site bindings moved out of AbstractInterpretation Drop dead AI bindings + retype SVFG def/use-site bindings May 4, 2026
@bjjwwang
bjjwwang merged commit 9ff6a76 into SVF-tools:main May 4, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant