[Relay] Fix VM compiler for while loop with free vars #4889
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a fix to the issue reported in
https://discuss.tvm.ai/t/a-relay-vm-question-while-loop-and-free-vars/5541/
It seems if a recursive function contains free variables, the lambda lift pass (or others) generates nested call nodes, which is not handled by the VM compiler currently. See the test case for a concrete example (
body_with_free_var
triggers the bug).Actually, the test case added in #4432 by @icemelon9 also triggers the same bug if I create the vm executor on the module in #4432.
please review @icemelon9 @wweic @zhiics @MarisaKirisame