<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Please not (1).<br>
    <br>
    Cheers,<br>
    -Neil.<br>
    <br>
    <div class="moz-cite-prefix">On 04/04/16 14:59, James Molloy via
      llvm-dev wrote:<br>
    </div>
    <blockquote
cite="mid:CALCTSA1d6rxSc5hF4=+_Ap04Yp2ff=XsHLiDz5u30fuE_R_SOA@mail.gmail.com"
      type="cite">
      <div dir="ltr"><span
          style="color:rgb(33,33,33);font-size:13px;line-height:19.5px">Hi,</span>
        <div
          style="color:rgb(33,33,33);font-size:13px;line-height:19.5px"><br>
        </div>
        <div
          style="color:rgb(33,33,33);font-size:13px;line-height:19.5px">Clang
          is currently unable to constant fold calls to math.h functions
          such as logl(), expl() etc.</div>
        <div
          style="color:rgb(33,33,33);font-size:13px;line-height:19.5px"><br>
        </div>
        <div
          style="color:rgb(33,33,33);font-size:13px;line-height:19.5px">The
          problem is that APFloat doesn't have these functions, so Clang
          is forced to rely on the host math library. Because long
          double isn't portable, we only ever query the host math
          library for double or float results.</div>
        <div
          style="color:rgb(33,33,33);font-size:13px;line-height:19.5px"><br>
        </div>
        <div
          style="color:rgb(33,33,33);font-size:13px;line-height:19.5px">I
          can see three methods for allowing constant folding for types
          that are larger than double, some more expensive than others:</div>
        <div
          style="color:rgb(33,33,33);font-size:13px;line-height:19.5px"><br>
        </div>
        <div
          style="color:rgb(33,33,33);font-size:13px;line-height:19.5px"> 
          1. Introduce a dependency on libMPFR, as GCC does. The
          dependency could be hard or soft, with a fallback to the
          current behaviour if it doesn't exist.</div>
        <div
          style="color:rgb(33,33,33);font-size:13px;line-height:19.5px"> 
          2. Write the trancendental functions ourselves in APFloat
          (yuck!)</div>
        <div
          style="color:rgb(33,33,33);font-size:13px;line-height:19.5px"> 
          3. If the long double format on the compiler host is the same
          as the target, use the host library.</div>
        <div
          style="color:rgb(33,33,33);font-size:13px;line-height:19.5px"><br>
        </div>
        <div
          style="color:rgb(33,33,33);font-size:13px;line-height:19.5px">(2)
          is the hardest. (3) is the easiest, but only works in a subset
          of cases and I really don't like the idea of better output
          when compiling on one platform compared to another (with
          equivalent targets).</div>
        <div
          style="color:rgb(33,33,33);font-size:13px;line-height:19.5px"><br>
        </div>
        <div
          style="color:rgb(33,33,33);font-size:13px;line-height:19.5px">What
          do people think about (1)? Or is this completely out of the
          question?</div>
        <div
          style="color:rgb(33,33,33);font-size:13px;line-height:19.5px"><br>
        </div>
        <div
          style="color:rgb(33,33,33);font-size:13px;line-height:19.5px">Cheers,</div>
        <div
          style="color:rgb(33,33,33);font-size:13px;line-height:19.5px"><br>
        </div>
        <div
          style="color:rgb(33,33,33);font-size:13px;line-height:19.5px">James</div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
LLVM Developers mailing list
<a class="moz-txt-link-abbreviated" href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>
<a class="moz-txt-link-freetext" href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>