Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[mlir][Transforms] Dialect Conversion: Simplify materialization fn result type #113031

Merged
merged 1 commit into from
Oct 23, 2024

Commits on Oct 23, 2024

  1. [mlir][Transforms] Dialect Conversion: Simplify materialization fn re…

    …sult type
    
    This commit simplifies the result type of materialization functions.
    
    Previously: `std::optional<Value>`
    Now: `Value`
    
    The previous implementation allowed 3 possible return values:
    - Non-null value: The materialization function produced a valid materialization.
    - `std::nullopt`: The materialization function failed, but another materialization can be attempted.
    - `Value()`: The materialization failed and so should the dialect conversion. (Previously: Dialect conversion can roll back.)
    
    This commit removes the last variant. It is not particularly useful because the dialect conversion will fail anyway if all other materialization functions produced `std::nullopt`. In contrast to type conversions, at least one materialization callback is expected to succeed. In case of a failing type conversion, the current dialect conversion can roll back and try a different pattern. This also used to be the case for materializations, but that functionality was removed with #112669: failed materializations can no longer trigger a rollback. (They can just make the entire dialect conversion fail immediately without rollback.) With this in mind, it is even less useful to have an additional error state for materialization functions.
    
    This commit is in preparation of merging the 1:1 and 1:N type converters. Target materializations will have to return multiple values instead of a single one. With this commit, we can keep the API simple: `SmallVector<Value>` instead of `std::optional<SmallVector<Value>>`.
    matthias-springer committed Oct 23, 2024
    Configuration menu
    Copy the full SHA
    59a9bbb View commit details
    Browse the repository at this point in the history