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

    <tr>
        <th>Summary</th>
        <td>
            [flang][hlfir] Potential excessive stack usage
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            crash,
            flang
      </td>
    </tr>

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

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

<pre>
    During converting `AssignOp` to FIR we insert `AllocaOp` here: https://github.com/llvm/llvm-project/blob/be5f35e24f4c15caf3c4aeccddc54c52560c28a0/flang/lib/Optimizer/HLFIR/Transforms/ConvertToFIR.cpp#L99

If the `AssignOp` is inside a loop, this `alloca` may cause excessive stack usage.  We need to either insert `stacksave`/`stackrestore` around it or use `fir::FirOpBuilder::createTemporary` as discussed in https://reviews.llvm.org/D149222.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUkkFr3DAQhX-NfBE18shy1gcfNllMFwIpIdCzLI_WarSW0cibJr--yJu0JfTSi2VGMxq-954mcqcZsWPqlqlDodc0hdhd3vTzpKMrhjC-doc1uvnETZgvGFP-ZY3Yb5MPC2sET4H3x0f-gtzNhDFt994Ho6_3E0Zkcs-nlBZics-gZ9CfXJrWoTThzKD3_vJxfFli-IEmMegHH4Z8oLJSIdS2NpUy2kpTazRmHI2qjQLVCAM7LRj01uv5lB9yefBhSe7s3jAy6L_e98dHBv1T1DPZEM_EoL-7Mj2F_vhYmmVhIO_blokDE_vr92h5mvAzsaOM6kbkmvsQFgZ3PE2Ocp_eyHPXWb9yo1dCjj8NErkLckraPPOV9AlLzr8jnxHHrCC6NGH8S8Gtk_QFWZPJPioRKYWYi1zHsM4jd4mHyPMa1gjrYlZY7nsXH5bb1fkR3ysmok74hOclRB1ftxeIj47MSoQjd_MnhyJeHL5QmV0pQ8y6Hqq6BYCyGDs5trLVBXZVs4NGqqoVxdTdmMoOOwnCNFVdoYHsjKxsO1gldbMrXAcCpKjhBkC2SpQCbaUENtZga26MZbXAs3b-99rCEa3YNVBXbeH1gJ62vAKYqGliAAzuGMC795CDHLstSsN6IlYL7yj9wSiSS36L_HVCHZi6nXxWTh34t5BwTk77f5tWrNF3_x3kjSAHboP4FQAA__-_RRzU">