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

   Port of #20096, which landed on the `v0.26.0` release branch first to 
unblock the `v0.26.0.rc0` Windows wheel. `main` has the same breakage.
   
   MSVC fails to compile the class-qualified call:
   
   ```
   src\tirx\ir\data_type_rewriter.cc(696,47): error C2352:
     'tvm::tirx::ExprMutator::VisitPrimExpr': a call of a non-static member 
function requires an object
   ```
   
   `StmtExprMutator` derives from both `ExprMutator` and `StmtMutator` and 
re-exports the name via `using ExprMutator::VisitPrimExpr;`. MSVC resolves the 
qualified `IndexDataTypeNormalizer::VisitPrimExpr` down to 
`ExprMutator::VisitPrimExpr` and then fails to form the implicit object 
conversion. GCC and Clang accept the same expression, so only the Windows leg 
broke — macOS and both Linux wheels built fine.
   
   The fix calls it through `this`, matching every other `VisitPrimExpr` call 
site in this file. `VisitPrimExpr` is a non-virtual inline helper, so the 
qualification was suppressing nothing and behavior is unchanged. The other 
class-qualified call sites in the tree name `StmtExprMutator` directly — that 
is where the using-declaration lives, so they resolve fine and are left alone.
   
   The call was introduced in #19931, which changed 
`IndexDataTypeNormalizer::VisitExpr` to 
`IndexDataTypeNormalizer::VisitPrimExpr`; the former resolved unambiguously.
   
   Original failing job: 
https://github.com/apache/tvm/actions/runs/31033249253/job/92400739674


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


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to