<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJy1U8uOmzAU_RrYXA0CQ0JYsMhMpqsuqvYLDFwHVwYj2yTK3_caSEJGzUjVqJIFts99HJ9jV7q5lME2XkZ8COJ9p5tRIQRZPHDn0PQWgvx1xgCGRkXLPgTpHirsUUgXsF0SsGIdCRCwTUxBhynJXQZ8gJLnELtBekDD-2Zq5cs9hKXPwpKHsGwKm0Kc1ESbMaE1fYm0bxawt2s1n534gieuRpyB9boAeAnSd5gzk3XGdAhW3Dv7TYNnIx0uLNbazDhRsjO6Ypwfrovb9D559Gr-1pY65xachr9G_QdHn7j5qV3scx-SxYfkn32IP_Vh5QH76MFNf_YV_c-trFsQ2tRIJrQIHXe0IXsyREhFysr-CLpXFzq9vZ8bztK1V80saDElW97hpG-07rFvGl_EygYBhcDaeb-9MtyBQm6dn_vyrqUd2Q1K1tJRy5oPbjTETBjdTR2wP0mj-w57B7bVo2qgRTVEYVOmTZEWPOSja7Upe1lrxe2JW6l43WI4GlW2zg2WBA_YNxpHOsJYRbXuaKHU6fp7GYz-TSxpKa0d0dJkk-62adiWaZYV-XbXYF6wLBPptua7nai2xQabmgseKl6hsmWweSWVOiUNtau1QX9XNofw6xxkyWJGI9kkeRZnuyitRMJFQsrGVZrS9cli7LhUka8TaXMMTTmVrMajJVBJ6-wd5NbKY4-4UP4pT2jyOF_4OvIByx-H75Ot4B_IzfS3X-_04lp-ktqAtNAR049GhxP7cqL-B_Nnnu4>53863</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            PDL type and operands CSE behavior is missing side effects
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            mlir:core
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
            River707
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          nicolasvasilache
      </td>
    </tr>
</table>

<pre>
    ```
module @patterns {
  pdl.pattern : benefit(1) {
    %0 = pdl.type
    %1 = pdl.type
    %2 = pdl.operand : %0
    %3 = pdl.operand : %1
    %4 = operation "foo"(%2, %3 : !pdl.value, !pdl.value)  -> (%1 : !pdl.type)
    pdl.rewrite %4 {
      pdl.erase %4
    }
  }
}
```

cse's to 
```
module @patterns {
  pdl.pattern : benefit(1) {
    %0 = type
    %1 = operand : %0
    %2 = operation "foo"(%1, %1 : !pdl.value, !pdl.value)  -> (%0 : !pdl.type)
    rewrite %2 {
      erase %2
    }
  }
}
```

which forces the match into filtering only ops "foo" with operands of the same type.

Adding side effects to, at least, ops that implicitly captures from the environment should help.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy1Uk2PmzAQ_TVwGS0CGwI5cMhutqceqvYXGBiCK4ORbYjy7zsmX2TVrLSqKllg-83MezPPlW5OZbCJLyveB_Gu182kEII0HoVzaAYLQf56xgDGRkWXewj4DiocsJUuYEUSsO06EiBgWUxB-yXJnUZ8gJLnELtBekQjhmah8uUewvizsOQhLF3ClhAnNclmrNWaviTakwXs7VrNZye-4CzUhGdgfd4CvAT8Hc6ZyTpjaYJt78z-0uDRSIcXFevZnHGSZM_oSnG-vx5u2_vm0avzt7bEnFtwGv4a9R8cfeLmp3axz31ILj4kX_Yh_tSHlQfsowe3-bN_mf-xk3UHrTY1kgkdQi8cXciBDGmlosnK4QB6UCfq3t77hqN03XVmFnS7JFvR4zLfaM2xaxpfxMoGAdsWa-f99pMRDhQK6_zel3cd3ch-VLKWjihrMbrJkLLW6H5hwGGWRg89Dg5spyfVQIdqjMKm5M2Wb0XoKBPLH_vvixDwlt5kvv16pzfSiVlqA9JCL639KC2cjCo750ZLzgTsG60D9TpVUa17Oig1X38vo9G_KYeOVGhCS5uMFxsediWyTVGwrKhYnsZZsWk4JnmRpmLLedzwPFSiQmXLIHulcfZKGqKrtUH_qLJ9KEsWM1pJllCBtIh41SaiTUhlXHFOrySNsRdSRV5JpM0hNOUiqpoOlkAlrbN3UFCnhwHxQvhTzmjyOL-wicl12pSDrLUSdhZWKlF3GC5tlUtPfwAKlYgX">