Skip to content

[BugFix][TIRx] Return rewritten nodes from Python mutator defaults - #73

Open
anerli wants to merge 1 commit into
tile-ai:tilelang_mainfrom
magnitudedev:pr/python-mutator-defaults
Open

anerli wants to merge 1 commit into
tile-ai:tilelang_mainfrom
magnitudedev:pr/python-mutator-defaults

Conversation

@anerli

@anerli anerli commented Sep 15, 2026

Copy link
Copy Markdown

Problem and root cause

Python subclasses of PyStmtExprMutator that delegate to a default visitor receive None instead of the rewritten expression or statement. The C++ default visitors invoke their dispatch tables but discard the returned nodes.

Change

  • src/tirx/ir/py_functor.cc: return PrimExpr and Stmt from the default visitors and propagate the dispatch-table results.
  • tests/python/tirx-base/test_tir_python_mutator_defaults.py: cover delegated expression and statement visitors, checking rewritten children, attribute values, and statement bodies.

Tests and validation

Both new regression tests fail on unmodified upstream because the result is None. With this isolated change, the following command passes 7 tests, 0 skipped:

PYTHONPATH=$PWD/python python -m pytest -q \
  tests/python/tirx-base/test_tir_python_mutator_defaults.py \
  tests/python/tirx-base/test_tir_stmt_functor_ir_transform.py \
  tests/python/tirx-base/test_tir_stmt_functor_substitute.py
pre-commit run --files src/tirx/ir/py_functor.cc \
  tests/python/tirx-base/test_tir_python_mutator_defaults.py

Validation environment: Apple M4 Max, macOS/Darwin 24.5.0 arm64, Python 3.12.11. Each branch was rebuilt separately from upstream 907a88c87 with:

cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release \
  -DUSE_METAL=ON -DUSE_LLVM=OFF -DUSE_CUDA=OFF -DUSE_Z3=OFF
cmake --build build --target tvm tvm_compiler tvm_runtime -j 8

git diff --check passes. The applicable formatting and other pre-commit hooks pass. The repository-wide ASF-header hook reports 11 existing violations, reproduced on unmodified upstream; none is in the changed files.

Related

Independent of BF16 Let/Bind legalization in #70. No duplicate open PR was found.

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