<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>