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

   Prior to this commit, the implementation of
   `relax::BlockBuilder::AddFunction` implicitly assumed that the input 
`IRModule` does not contain duplicate copies of the same function. This commit 
updates the implementation, removing the reliance on this assumption.  This 
commit resolves the error by tracking all `GlobalVar` that map to the same 
function, rather than an just one.
   
   A well-formed IRModule may contain duplicate function definitions. This is 
rare, as most functions can be disambiguated by the the function attribute 
`tvm::attr::kGlobalSymbol`.  However, private functions do not have this 
attribute, and a well-formed IRModule may contain multiple copies of the same 
function.
   
   The regression test added in this PR calls `BlockBuilder::UpdateFunc` and 
`BlockBuilder::AddFunc` in a specific order to reproduce this issue.  In 
practice, this failure was sporadic, depending on the order in which a 
transformation pass visited functions in a module.  This was first observed in 
`VMShapeLower`, with sporadic errors depending on the order of iteration over 
`mod->functions`.


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