[all-commits] [llvm/llvm-project] 339944: [mlir][Transforms] Dialect conversion: Extra check...

Matthias Springer via All-commits all-commits at lists.llvm.org
Sun Sep 29 02:34:48 PDT 2024


  Branch: refs/heads/users/matthias-springer/replace_op_hardening
  Home:   https://github.com/llvm/llvm-project
  Commit: 3399448ea348a5f1aa9fdff2e8b83833667e1b32
      https://github.com/llvm/llvm-project/commit/3399448ea348a5f1aa9fdff2e8b83833667e1b32
  Author: Matthias Springer <mspringer at nvidia.com>
  Date:   2024-09-29 (Sun, 29 Sep 2024)

  Changed paths:
    M mlir/lib/Transforms/Utils/DialectConversion.cpp

  Log Message:
  -----------
  [mlir][Transforms] Dialect conversion: Extra checks during `replaceOp`

This commit adds extra checks/assertions to the `ConversionPatternRewriterImpl::notifyOpReplaced` to improve its robustness.

Replacing an `unrealized_conversion_cast` op that was created by the driver is forbidden and is now caught early during `replaceOp`. It may work in some cases, but is generally dangerous because the conversion driver keeps track of these ops. (Erasing is them is fine.) This change is also in preparation of a subsequent commit that splits the `ConversionValueMapping` into replacements and materializations (with the goal of simplifying block signature conversions).

`null` replacement values are no longer registered in the `ConversionValueMapping`. This was an oversight in #106760. `null` values in the mapping could result in crashes when using the `ConversionValueMapping` API.



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list