<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/58742>58742</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [mlir][scf] Invalid `scf.for` conversion in `populateSCFStructuralTypeConversionsAndLegality`
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

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

<pre>
    https://github.com/llvm/llvm-project/blob/d3f5f330671e718a0e28598c412d09e9a3b54273/mlir/lib/Dialect/SCF/Transforms/StructuralTypeConversions.cpp#L79

Here `adaptor.getLowerBound(), adaptor.getUpperBound(), adaptor.getStep()` are passed to newly created `scf.for`. If index -> i64 conversion is present it will generate invalid `scf.for`. Need to add `unrealisedConversionCast` back to index type.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyVUttu3CAQ_Rr8gmJh8I0HPySbVokU9SXpB2AYe2lZgwDvdv--492maZW2UiVjBg5z5sxl9OY87HMOiYhbwj_iN9u8X8dS-wMenDu-bjch-i-gMx5H50fcjJiaSQjWdhV0Va8Y8L6Rva4rbpgEqcTY1LwT-PTgbNx47OZ3b5W7Ej3vtogvUS1p8vGQtqscV53XqNzLOcDOL0eIyfollToEwsVTJwm7J-z2-n-ACJS0TBkVso_lDPnJnyDe-XUxhPeES8J39Bf4cwj_gp8zhB9Ay6hC9qBSAkOzpwuc3JnqCCrjBeJJTyUKR6ukjxO1i4Fv9IaID9S2NdU_xVObaIiQYMnUZnqyztEZFohIhF5H5ew7vk9wDarMBVoXDOssKnmryU6lvKkclf66Pb3Gz1i3soChattOiLbvZGEGYaSQqsg2OxhIc3dpSHOPFsZEgz7-ScVvKSwbFnxYHarGzv21U7eLeYIZ2fIZPYo1uv8fMZvSCts8NH1X82I_cMkxTV1JwYzuOzbVVW96CZo1OIZ1Xzg1gktbbphOYQfOOK8qVvGKdY0s25ZVujGTmHCJUZCawUFZV26BSx_nIg4XDeM6JwSx1Dm9gTgDdl4AXvnVmvc-Dg8qGu0N9HVxUTxc5H4HOg4Umg">