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

    <tr>
        <th>Summary</th>
        <td>
            optimize for builtin functions
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

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

<pre>
    Is it possible to teach llvm do optimizations on builtin functions?
For such code:
void test_mtspr() {
__builtin_ppc_mtspr(3,5);
__builtin_ppc_mtspr(3,5);
}
With command:
clang -cc1 -internal-isystem ~/mywork/llvm/build/lib/clang/15.0.0/include -nostdsysteminc -triple powerpc-unknown-unknown -S y.c -O2
The generated asm code is like this:
# %bb.0:                                # %entry
    li 3, 5
    mtudscr 3
    mtudscr 3
    blr


Can LLVM remove the second mtudscr?
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyVU9uK2zAQ_Rr5ZbBx5HWcPPghu9tAYUsLLe1j0GUSqytLRpIT0q_v2MkmC4WWGqMZn7nozMXS63P7MYJJMPgYjbQIyUNCoTqw9tiD9uCHZHrzSyTjXQTvQI7GJuNgPzo1g6zasvKZlZutDxBHilVeI6s2F_TojaacMe36FIfA-IrxNbDm8WLe7a4Jd8Ogbi4V4081-bHq_9xY83xRfpg08eh74fSNirLCHSBXagG5cQmDEzY38RwT9sToA-Pb_nzy4ZWUqX4S0616-jSSzjkByUVdlEVJinHKjhohdz4mfclEGOQpmIHaOfgThkHlo3t1_uTeJORf4VyQ22d-YfatQzigwyASahCxn3sIJoI1rzSVzsRbFYxXwHgtJTGoNvCP5-qNLoXzJX5CrYGpd1DfoT6NOqpA-N8gacOVxbvzSTh4efn-CQL2_jjRRYiovNNvKWhHMt1Wel2tRZZMstheFwthT2vzx1JlY7Btl9Iw18239B5opKMsaKj38UwiH4L_iSpN44hxxEhKvVw2Tda1DYp1vZflqsbVQjdq32DZ1GWzLpe1WvFFZoVEG1tWP7L6OTMtLzkvG84X64fVoimEbPYUtUJconyokD2U2Atji-niwodDFtqZgxwPkYzWxBTvRkF_1cEhvuUXY-p8aB-Fj51wX2iZsplyO_P9DS41G1c">