llvm-project
d5408557 - [mlir][Bytecode] Fix stale deferred worklist entries in attribute callback fallthrough (#186150)

Commit
1 day ago
[mlir][Bytecode] Fix stale deferred worklist entries in attribute callback fallthrough (#186150) When parseCustomEntry() calls a user attribute/type callback that internally reads sub-attributes/types via the bytecode reader, the reader may add entries to the deferredWorklist if the depth limit is exceeded. If the callback then returns success with an empty entry (falling through to the regular dialect reader), the reader position is reset but deferredWorklist retains stale entries from the failed partial read. This causes an assert(deferredWorklist.empty()) failure in debug builds when the fallback dialect reader successfully parses the attribute. Fix by saving and restoring deferredWorklist.size() around each callback invocation, discarding any stale entries added during a callback's partial read when the reader position is rolled back. Fixes #163337 Assisted-by: Claude Code
Author
Parents
Loading