<html>
    <head>
      <base href="https://bugs.llvm.org/">
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - LLVM generates far less than ideal code for cold functions (when optimizing for size)"
   href="https://bugs.llvm.org/show_bug.cgi?id=33249">33249</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>LLVM generates far less than ideal code for cold functions (when optimizing for size)
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>libraries
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>trunk
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>enhancement
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>Scalar Optimizations
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>davide@freebsd.org
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>davidxl@google.com, filcab@gmail.com, llvm-bugs@lists.llvm.org, llvm-dev@redking.me.uk, rafael.espindola@gmail.com, simon.f.whittaker@gmail.com, wmi@google.com, xinliangli@gmail.com
          </td>
        </tr></table>
      <p>
        <div>
        <pre><a href="https://godbolt.org/g/kgGJxw">https://godbolt.org/g/kgGJxw</a>

This function is cold, we should optimize for size (also at -O3), as GCC does:

winky(int):                              # @winky(int)
        mov     eax, 1
        movd    xmm2, eax
        movd    xmm0, edi
        pshufd  xmm1, xmm0, 0           # xmm1 = xmm0[0,0,0,0]
        punpckldq       xmm0, xmm2      # xmm0 =
xmm0[0],xmm2[0],xmm0[1],xmm2[1]
        pshufd  xmm2, xmm2, 80          # xmm2 = xmm2[0,0,1,1]
        punpckldq       xmm0, xmm2      # xmm0 =
xmm0[0],xmm2[0],xmm0[1],xmm2[1]
        mov     eax, 36
        pshufd  xmm2, xmm1, 245         # xmm2 = xmm1[1,1,3,3]
.LBB1_1:                                # =>This Inner Loop Header: Depth=1
        pshufd  xmm3, xmm0, 245         # xmm3 = xmm0[1,1,3,3]
        pmuludq xmm0, xmm1
        pshufd  xmm0, xmm0, 232         # xmm0 = xmm0[0,2,2,3]
        pmuludq xmm3, xmm2
        pshufd  xmm3, xmm3, 232         # xmm3 = xmm3[0,2,2,3]
        punpckldq       xmm0, xmm3      # xmm0 =
xmm0[0],xmm3[0],xmm0[1],xmm3[1]
        add     eax, -4
        jne     .LBB1_1
        pshufd  xmm1, xmm0, 78          # xmm1 = xmm0[2,3,0,1]
        pshufd  xmm2, xmm0, 245         # xmm2 = xmm0[1,1,3,3]
        pmuludq xmm0, xmm1
        pshufd  xmm0, xmm0, 232         # xmm0 = xmm0[0,2,2,3]
        pshufd  xmm1, xmm1, 245         # xmm1 = xmm1[1,1,3,3]
        pmuludq xmm1, xmm2
        pshufd  xmm1, xmm1, 232         # xmm1 = xmm1[0,2,2,3]
        punpckldq       xmm0, xmm1      # xmm0 =
xmm0[0],xmm1[0],xmm0[1],xmm1[1]
        pshufd  xmm1, xmm0, 229         # xmm1 = xmm0[1,1,2,3]
        pmuludq xmm1, xmm0
        pshufd  xmm1, xmm1, 232         # xmm1 = xmm1[0,2,2,3]
        pshufd  xmm0, xmm0, 245         # xmm0 = xmm0[1,1,3,3]
        pmuludq xmm0, xmm0
        pshufd  xmm0, xmm0, 232         # xmm0 = xmm0[0,2,2,3]
        punpckldq       xmm1, xmm0      # xmm1 =
xmm1[0],xmm0[0],xmm1[1],xmm0[1]
        movd    eax, xmm1
        ret

vs

winky(int):
        mov     eax, edi
        mov     edx, 36
.L6:
        imul    eax, edi
        dec     edx
        jne     .L6
        ret</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>