<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/105244>105244</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[HLSL] Disallow function recursion
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
pow2clk
</td>
</tr>
</table>
<pre>
Due to inlining everything, HLSL doesn't allow recursion. We need to detect recursion and produce an error when it is encountered.
My initial investigations suggest this isn't currently detected in clang and existing checks in the inliner rely on inlining itself to detect loops involving multiple functions. There is a norecurse attribute, but it is descriptive rather than prescriptive.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxMkr2O2zAQhJ-GahYnULTkn0LFJYaR4lIlQGqKWoubo5cCuZTjtw9kO3AaqRjuYGbw2ZxpYsRedV9Ud6xsER9TP8erceGzGuJ4648FQSIQB2LiCXDBdBNPPCnzFb59_PiAMWJmZXYCNoR4hYSupEyRa_iFwIjj6jCioJOXCJZHmFMci0OwDJhSTHD1yEAClAHZxcKCCcda6aPS74_v9xsQk5ANQLxgFpqsUOQMuUwTZgHxlIGemVxJCVnC7ZkARyAGFyxP9wj4h7KszZxH95lXUTw-CmOChOEGkV8DkGQM5_8ahRjn9WyJYVkfXEoQmgPCubC7B6vhp8eEaykLHB8TIFiRREMRXJccijx7j5hdolloQUhWPCYQbxnm9BLqauw342FzsBX2zc60zV5rrSvfn62zjcWm7c7nzW5vugG3W7sftsPOuLbVFfVGm1bvjW723cbo2rjdzg3WDOfDaJptq1qNF0uhDmG51DFNFeVcsG90Z9q2CnbAkO_IGMN4hbuqjFkJSv169DaUKatWB8qSXzZCEu6srdSo7ghHyg9i_i31oqMqKfReZM5q867MSZnTROLLULt4Uea0mj5_b3OKv9GJMqd7lKzM6Zl16c3fAAAA__93eP6R">