[mlir][shape] Split out structural type conversions for shape dialect.
A "structural" type conversion is one where the underlying ops are completely agnostic to the actual types involved and simply need to update their types. An example of this is shape.assuming -- the shape.assuming op and the corresponding shape.assuming_yield op need to update their types accordingly to the TypeConverter, but otherwise don't care what type conversions are happening. Also, the previous conversion code would not correctly materialize conversions for the shape.assuming_yield op. This should have caused a verification failure, but shape.assuming's verifier wasn't calling RegionBranchOpInterface::verifyTypes (which for reasons can't be called automatically as part of the trait verification, and requires being called manually). This patch also adds that verification. Differential Revision: https://reviews.llvm.org/D89833
Loading
Please sign in to comment