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

   The `PatternRewriter` is intended to iterate until no matching patterns 
remain, as implemented in #14446 and #15495.  Prior to this commit, this only 
involved repeating the pattern match rewrite rules.  However, intermediate 
results produced by pattern replacement could cause the iterative pattern 
matching to terminate early.
   
   * If two rewrite rules each introduce the same intermediate, there will 
exist two copies of that intermediate, which can prevent `only_used_by` 
patterns from matching.  Applying `EliminateCommonSubexpr` allows the pattern 
matching to continue.
   
   * Applying a rewrite rule may result in dangling intermediates that are no 
longer used.  These dangling intermediates may prevent the next application of 
a rewrite rule that uses the `only_used_by` constraint.  Applying 
`RemoveAllUnused` allows the pattern matching to continue.
   
   * A rewrite rule that returns a `relax::Var` or `relax::TupleGetItem` as the 
replacement introduces trivial var-to-var rebinding, which are not tracked by 
`PatternRewriter`.  Applying `CanonicalizeBindings` allows the pattern matching 
to continue.
   
   While this could be fixed externally by repeatedly applying `rewrite_call`, 
this would require re-inspecting the entire function, and not just the dataflow 
block in which the replacement occurred.


-- 
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]

Reply via email to