[Relax] Allow DeadCodeElimination within ApplyPassToFunction #16801
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.
The
tvm.ir.transform.ApplyPassToFunction
allows a transform to be applied selectively to some portions of aIRModule
, without applying to the entireIRModule
. For example, to apply an optimization pass (e.g.relax.transform.ExpandMatmulOfSum
) or an interface-altering pass (e.g.relax.transform.BundleModelParams
) to specific functions. It does so by generating an intermediateIRModule
containing only the functions specified, applying the transform to that intermediate, then merging the results.When using
ApplyPassToFunction
to applyDeadCodeElimination
, or a pipeline containingDeadCodeElimination
, this intermediateIRModule
may contain calls toGlobalVar
instances that are not within the intermediateIRModule
. Prior to this commit, this resulted in an error being thrown when collecting the call graph. This commit updatesDeadCodeElimination
to instead handle incomplete call-graph collection.