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

    <tr>
        <th>Summary</th>
        <td>
            [LoongArch] Unnecessary JILR instruction for function call
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          24bit-xjkp
      </td>
    </tr>
</table>

<pre>
    Here is an example: <https://gcc.godbolt.org/z/W4q37MT6E>
Clang 21 and 22 generates `pcaddu18i` and `jilr` sequence for function call while a simple `bl` is enough. 
Clang 17~20 and GCC generate correct instruction.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJxkkc-O3CwQxJ8GX1prQRvsmQOH-WbXXxJtLlGinDHusZkwMAt4_-SQZ4_srDZRckIIqqq7fiZnNwUizdR_TN1WZilzTBrl4MrN8_nbtRri-KLfUSJwGUwAejaXqyfWHIA1x7mUa2bNgWHPsJ-srac4DtGXOqaJYf-dYf9VPjTdx8_tHWvuGD8cvQkToAATRkCEiQIlUygDa_nVmnFcxM6xlm8fWMvPzqf1mulhoWAJTjHBaQm2uBjAGu_haXaewEB262yraPCrxGWgEJdpruEtWXQ_8Jf3_8fjWzrYmBLZAi7kkpbNu65G3Yz7Zm8q0qJTUrVCNbKa9V6ak911496g6ORJnWzTdJJ3Ai0XgnjlNHJUfMc7wQUKWbfD3ghsWzXaVuBuZJLTxThfe_94WcuqXM4LaaFQdqryZiCfNyqIgZ5ge2WIK6SkV9HNsEyZSe5dLvm3TXHFbzjvYwzTIdmZqVv4EgJZytmkF_jw_v7Tn2v-22e1JK__QuvKvAy1jReG_Rr2etxcUzyTLQz7bcTMsH_d4VHjzwAAAP__EVfBaQ">