tqchen opened a new pull request, #19607:
URL: https://github.com/apache/tvm/pull/19607

   ## Overview
   
   This PR cleans up `include/tvm/ir/attrs.h` by removing four deprecated 
abstractions:
   
   1. `NullValue<T>()` sentinel helpers (replaced by `ffi::Optional<T>`)
   2. `AttrsNodeReflAdapter<DerivedType>` shim template (Attrs structs now 
inherit `BaseAttrsNode` directly)
   3. `BaseAttrsNode::InitBySeq` / `InitByPackedArgs` legacy initialization 
methods
   4. `DictAttrsNode::InitByPackedArgs` override
   
   It also migrates 9 pass-config classes from `Attrs`/`AttrsNodeReflAdapter` 
to `ffi::Object`, since they are pass configuration objects, not IR attributes.
   
   ## Changes
   
   **Commit A — Replace NullValue<T>() call sites** (`[REFACTOR][IR] Replace 
NullValue<T>() call sites with default construction`)
   - 11 source files: replace `NullValue<T>()` with `T()`, `std::nullopt`, or 
`DataType::Void()`
   - `manipulate.h`/`manipulate.cc`: `FlipAttrs::axis` changed from `Integer` 
to `ffi::Optional<int64_t>`
   
   **Commit B — Drop NullValue, AttrsNodeReflAdapter, legacy BaseAttrsNode 
methods** (`[REFACTOR][IR] Drop NullValue declaration, AttrsNodeReflAdapter, 
BaseAttrsNode legacy methods`)
   - `include/tvm/ir/attrs.h`: removes `NullValue<T>`, `InitBySeq`, 
`InitByPackedArgs`, `AttrsNodeReflAdapter<T>`
   - `src/ir/attrs.cc`: removes `DictAttrsNode::InitByPackedArgs` definition
   - `AttrsWithDefaultValues<T>()` broadened to accept any `ffi::ObjectRef` 
subtype (needed for Commit D)
   - Removes unused includes: `reflection/accessor.h`, `<functional>`, 
`<vector>`
   
   **Commit C — Subclass BaseAttrsNode directly** (`[REFACTOR][IR] Subclass 
BaseAttrsNode directly, drop AttrsNodeReflAdapter`)
   - 17 attrs headers in `include/tvm/relax/attrs/` + 
`include/tvm/target/virtual_device.h`
   - All `struct FooAttrs : public AttrsNodeReflAdapter<FooAttrs>` → `struct 
FooAttrs : public BaseAttrsNode`
   
   **Commit D — Migrate pass-config classes to ffi::Object** (`[REFACTOR] 
Migrate pass-config classes to subclass ffi::Object`)
   - 9 pass-config classes in `src/s_tir/`, `src/tirx/`, 
`src/relax/backend/contrib/`
   - `XConfigNode : public ffi::Object` (was 
`AttrsNodeReflAdapter<XConfigNode>`)
   - `XConfig : public ffi::ObjectRef` (was `Attrs`)
   - Python bindings updated: 7 classes changed from `_ir.Attrs` to 
`_ffi.Object`
   
   ## Design Decisions
   
   **`AttrFieldInfo` / `OpNode::arguments` kept**: Pre-flight check revealed 
`GetArgStructInfo()` in `op_common.h` and `op_common.cc` actively reads 
`op->arguments` (names, counts). These were not dead metadata — deleting them 
would break Relax op argument validation. They are kept as-is.
   
   **Commit E (trim attrs.h includes) reduced in scope**: Removing 
`structural_equal.h`, `structural_hash.h`, and `<unordered_map>` from `attrs.h` 
caused 47 downstream files to fail compilation. Rather than adding explicit 
includes to 47 files, only clearly-unused includes (`reflection/accessor.h`, 
`<functional>`, `<vector>`) were removed in Commit B.
   
   ## Testing
   
   - Build: clean compile with `-DUSE_CUDA=OFF -DUSE_LLVM=ON`
   - Tests passing:
     - `tests/python/ir/` (93 passed)
     - `tests/python/relax/test_analysis.py`, `test_blockbuilder_core.py`, 
`test_op_manipulate.py`, `test_transform.py` (209 passed)
     - `tests/python/s_tir/transform/test_s_tir_transform_loop_partition.py`, 
`test_s_tir_transform_unify_thread_binding.py` (30 passed)
     - `tests/python/tirx-transform/test_tir_transform_unroll_loop.py`, 
`test_tir_transform_simplify.py`, `test_tir_transform_remove_no_op.py` (108 
passed, 6 xfailed)
   - Pre-existing failures (unrelated to this PR): 
`test_s_tir_transform_lower_opaque_block`, 
`test_s_tir_transform_compact_buffer_region::TestLetBinding::test_compact`, 
`test_tir_transform_vectorize::test_vectorize_llvm_pure_intrin_fail`


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to