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

    <tr>
        <th>Summary</th>
        <td>
            [mlir] flattener.walkPostOrder exceeds stack
        </td>
    </tr>

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

    <tr>
      <th>Assignees</th>
      <td>
            jsetoain,
            lipracer
      </td>
    </tr>

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

<pre>
    [https://github.com/llvm/llvm-project/blame/main/mlir/lib/IR/AffineExpr.cpp#L1561](https://github.com/llvm/llvm-project/blame/main/mlir/lib/IR/AffineExpr.cpp#L1561) results in recursing while walking the operation resulting in segfault 

Was using something akin to

{test = \[affine\_map\<(d0)\[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32, s33, s34, s35, s36, s37, s38, s39, s40, s41, s42, s43, s44, s45, s46, s47, s48, s49, s50, s51, s52, s53, s54, s55, s56, s57, s58, s59, s60, s61, s62, s63, s64, s65, s66, s67, s68, s69, s70, s71, s72, s73, s74, s75, s76, s77, s78, s79, s80, s81, s82, s83, s84, s85, s86, s87, s88, s89, s90, s91, s92, s93, s94, s95, s96, s97, s98, s99\] -> (s0 \* 4428 + s1 \* 394 - s2 \* 5572 - s3 \* 9275 + s4 \* 4108 + s5 \* 6656 + s6 \* 7912 - s7 \* 1953 - s8 \* 7438 - s9 \* 7540 - s10 \* 131 - s11 \* 4508 + s12 \* 1560 - s13 \* 5586 + s14 \* 8159 + s15 \* 932 - s16 \* 8506 - s17 \* 3325 - s18 \* 5040 + s19 \* 7930 - s20 \* 3091 + s21 \* 2389 + s22 \* 9877 + s23 \* 1941 - s24 \* 8175 - s25 \* 9956 + s26 \* 6537 + s27 \* 8439 - s28 \* 262 - s29 \* 8363 - s30 \* 34 + s31 \* 5919 + s32 \* 7510 - s33 \* 2022 + s34 \* 9986 - s35 \* 2417 + s36 \* 892 + s37 \* 6307 - s38 \* 8347 + s39 \* 3130 + s40 \* 6385 + s41 \* 2693 - s42 \* 4571 - s43 \* 3279 - s44 \* 7035 + s45 \* 5372 - s46 \* 3948 - s47 \* 5548 - s48 \* 2615 - s49 \* 1547 + s50 \* 8 - s51 \* 4483 - s52 \* 9041 + s53 \* 2074 + s54 \* 6123 + s55 \* 9648 - s56 \* 4958 - s57 \* 8982 + s58 \* 8436 - s59 \* 7755 - s60 \* 3659 + s61 \* 3272 + s62 \* 6137 + s63 \* 1058 + s64 \* 3285 - s65 \* 985 + s66 \* 1658 + s67 \* 8626 - s68 \* 7975 - s69 \* 9610 - s70 \* 8678 - s71 \* 768 - s72 \* 2846 - s73 \* 5229 + s74 \* 1065 + s75 \* 6757 + s76 \* 8854 - s77 \* 7809 - s78 \* 2659 - s79 \* 592 - s80 \* 5537 - s81 \* 7616 + s82 \* 2033 - s83 \* 5121 - s84 \* 9005 - s85 \* 8493 + s86 \* 4449 - s87 \* 5269 - s88 \* 8447 + s89 \* 8878 + s90 \* 1967 + s91 \* 1938 + s92 \* 2483 - s93 \* 6314 + s94 \* 7379 + s95 \* 6090 + s96 \* 1264 - s97 \* 5371 + s98 \* 1766 - s99 \* 2218)>\]}

Is this just not meant to handle larger equations?
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8l82uGzcPhq9G3gg5kEhRPwsvzk8MBPiAr-imy2Jsy_acjD3uaJykd1-MqJG87aYbJSbExy_JVzpyl1J_vsW4FfQmAD5TnMeuvwkAAe8CYOjvU3eI0xKgj033mC_jtP289_HWddNmPx7_XlIv83xPAl8F7ATszv18eexfDuNVwG4Yfqz_fLlP42c8zAJ2-6G7RgG7a_6y3XXop2VTvxew-_a7gN3r6dTf4tdf9-nlcL8LwP9pslrQhwD_n30bBDnF9BjmJPubnOLhMaX-dpY_L_0Q5c9u-L58mi9Rjvc4dXM_3krCEu9vMsXzqXsMs3gH8aqE-hDqldc_uiQfGZbGa5wvy_-67_1NzuPzNuHe5phmKfBDCnoX9NZlqYLe_7x29yWE7wL8UQkIvCEpAe8y6bxCXjGvJq-UV5tXl1ef18BZJZmzNadrztcM0EzQjNDM0AzRTAGmQNHAFGAKMAWYAkwBpgBTgCnIFGQKllKYgkxBpiBTkCnIFGSKYYphimGKKR1himGKYYphimGKYQoxhZhCTCGmUGksU4gpxBRiCjHFMsUyxTLFMsUyxZb5MMUyxTLFMsUxxTHFMcUxxTHFMcWVMTPFMcUxxTPFM8UzxTPFM8UzxTPFF7cwxTMlMCUwJTAlMCUwJTAlMCUwJRTTsWc_5BeBX6UAn1S2ObxKY8BLAW8y6TWEwcgvMsH6mcjBEsA1EMAR55iK0apgaA1ZS5ZDdg25oDPJrQEdCJeArzsM-iUQaoCMWgK6Ktaoc6DqNbR-t66aNVlOw1aFL3J0Ve01hRKrsgNmibqK9qRsjlTViEA5UmWTMqqAmvKAWQJU5aiC5l1QxQP6IgGq-OCdKzFsnTK5bHgS77IKaNLD2nGo6i3hyqr6vcGQM6t-sLloqOI92jwYbOINY7BKp6CLdIQ2Lp2Lxioc1FJY3mWaUJ9bilU6GF1kYmt8WBOrcovK5UTfhJo1sYpHjWUaRrVMv3q29d6GXKSBZiWXu2yqfASXe2WqeKdwJVX5hHxEjH06RNnIxjUDlshT13WeoAnNtms1VJXnJGpuNz6LpmYXZYqt6KnrrsyLqnCrFzvlWLOMZVFUhZtAHGl2Cb4MgvyThfIEqdndUS7GNsfY9XRZ_dTOwrLQdK0Wtc3uisqZtqblev6Gpn6dqa3yta2JrQALWaxt10zgs2NDawQb17W-W5cb4ap4ZzlQlYM3GezaLQNQanam1WKLTNcuR0elZtf87ilfvK4Kd15l87knyxBHQjuF2XleNZ9hPiP-Sbcu94Jv0hXyzduka8je9-2YKpW75KmNPRQL-WYYY7Ik35wOliNPdll97dsV412ZVGh3e7BlX9Athuu-pr4cgoDtfOti-NBOKroyjNAar0K5G0LzDNjc-OCeznM5UqHWoJ3Nww61AoDlPRYEfuU_r8J9PD8qvyU5X_okPx9plrdxltfY3WY5j_LS3Y5DlEM3neMk41-P_KZNAneb4xaPAUO3iVvtQDtFjsLmsjX2YCkeTz4QnPTeEJy6095YRDCdO8Km34ICoxygQiQKL-4YoonqZI_-6A-nIIyK164fXpZX-8s4nTd9So-41UopCpuh28chlR8o-emOr-URzD9Kpm1-7u8f5ySMGvo0p4aa-3nIv25yJn3I09DNc7zF6WV5v_82pvn_03Ep9tchxmOSae4O3zePadj-658ZWXYSsCvKf2zhnwAAAP__9aY2pg">