<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">