[all-commits] [llvm/llvm-project] 2bee24: [mlir][bugfix] Fix erroneous condition in `getEffe...

Andrzej Warzyński via All-commits all-commits at lists.llvm.org
Wed Apr 2 13:27:02 PDT 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 2bee24632f38699f1af8fdf4daa5b28053c7ae5f
      https://github.com/llvm/llvm-project/commit/2bee24632f38699f1af8fdf4daa5b28053c7ae5f
  Author: Andrzej Warzyński <andrzej.warzynski at arm.com>
  Date:   2025-04-02 (Wed, 02 Apr 2025)

  Changed paths:
    M mlir/include/mlir/Interfaces/SideEffectInterfaceBase.td

  Log Message:
  -----------
  [mlir][bugfix] Fix erroneous condition in `getEffectsOnResource` (#133638)

This patch corrects an invalid condition in `getEffectsOnResource` used
to identify relevant "resources":

```cpp
return it.getResource() != resource;
```

The current implementation assumes that only one instance of each
resource will exist, so comparing raw pointers is both safe and
sufficient. This assumption stems from constructs like:

```cpp
static DerivedResource *get() {
  static DerivedResource instance;
  return &instance;
}
```
i.e., resource instances returned via static singleton methods.

However, as discussed in
 * https://github.com/llvm/llvm-project/issues/129216,

this assumption breaks in practice — notably on macOS (Apple Silicon)
when built with:

* `-DBUILD_SHARED_LIBS=On`.

In such cases, multiple instances of the same logical resource may exist
across shared library boundaries, leading to incorrect behavior and
causing failures in tests like:

* test/Dialect/Transform/check-use-after-free.mlir

This patch replaces the pointer comparison with a comparison based on
resource identity:

```cpp
return it.getResource()->getResourceID() != resource->getResourceID();
```
This approach aligns better with the intent of `getEffectsOnResource`,
which is to:

```cpp
/// Collect all of the effect instances that operate on the provided
/// resource (...)
```

Fixes #129216



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