<html><head><style type='text/css'>p { margin: 0; }</style></head><body><div style='font-family: arial,helvetica,sans-serif; font-size: 10pt; color: #000000'><br><hr id="zwchr"><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px; color: rgb(0, 0, 0); font-weight: normal; font-style: normal; text-decoration: none; font-family: Helvetica,Arial,sans-serif; font-size: 12pt;"><b>From: </b>"Mehdi Amini" <mehdi.amini@apple.com><br><b>To: </b>"Hal Finkel" <hfinkel@anl.gov><br><b>Cc: </b>llvm-dev@lists.llvm.org, "Warren Ristow" <warren.ristow@sony.com><br><b>Sent: </b>Wednesday, November 16, 2016 11:03:48 AM<br><b>Subject: </b>Re: [llvm-dev] RFC: Consider changing the semantics of 'fast' flag implying all fast-math-flags<br><br>
<br class=""><div><blockquote class=""><div class="">On Nov 15, 2016, at 11:59 PM, Hal Finkel <<a href="mailto:hfinkel@anl.gov" class="" target="_blank">hfinkel@anl.gov</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><br class="Apple-interchange-newline"><hr id="zwchr" style="font-family: arial,helvetica,sans-serif; font-size: 13.3333px; font-style: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;" class=""><blockquote style="font-style: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px; text-decoration: none; font-family: Helvetica,Arial,sans-serif; font-size: 12pt;" class=""><b class="">From:<span class="Apple-converted-space"> </span></b>"Mehdi Amini via llvm-dev" <<a href="mailto:llvm-dev@lists.llvm.org" class="" target="_blank">llvm-dev@lists.llvm.org</a>><br class=""><b class="">To:<span class="Apple-converted-space"> </span></b>"Warren Ristow" <<a href="mailto:warren.ristow@sony.com" class="" target="_blank">warren.ristow@sony.com</a>><br class=""><b class="">Cc:<span class="Apple-converted-space"> </span></b><a href="mailto:llvm-dev@lists.llvm.org" class="" target="_blank">llvm-dev@lists.llvm.org</a><br class=""><b class="">Sent:<span class="Apple-converted-space"> </span></b>Tuesday, November 15, 2016 11:10:48 PM<br class=""><b class="">Subject:<span class="Apple-converted-space"> </span></b>Re: [llvm-dev] RFC: Consider changing the semantics of 'fast' flag implying all fast-math-flags<br class=""><br class="">Hi,<div class=""><br class=""><div class=""><blockquote class=""><div class="">On Nov 15, 2016, at 5:15 PM, Ristow, Warren via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" class="" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="WordSection1" style="page: WordSection1; font-family: Helvetica; font-size: 12px; font-style: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">Hi all,</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';"> </span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">This is about<span class="Apple-converted-space"> </span><a href="https://reviews.llvm.org/D26708" class="" target="_blank" style="color: rgb(149, 79, 114); text-decoration: underline;">https://reviews.llvm.org/D26708</a></span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';"> </span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">Currently when the command-line switch '-ffast-math' is specified, the</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">IR-level fast-math-flag 'fast' gets attached to appropriate FP math</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">instructions.  That flag acts as an "umbrella" to implicitly turn on all the</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">other fast-math-flags ('nnan', 'ninf', 'nsz' and 'arcp'):</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';"> </span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';"><a href="http://llvm.org/docs/LangRef.html#fast-math-flags" class="" target="_blank" style="color: rgb(149, 79, 114); text-decoration: underline;">http://llvm.org/docs/LangRef.html#fast-math-flags</a></span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';"> </span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">This approach has the shortcoming that when there is a desire to disable one</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">of these fast-math-flags, if the 'fast' flag remains, it implicitly</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">re-enables the one being disabled.  For example, compiling this test-case:</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';"> </span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">    extern void use(float x, float y);</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">    void test(float a, float b, float c) {</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">      float q1 = a / c;</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">      float q2 = b / c;</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">      use(q1, q2);</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">    }</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';"> </span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">at '-O2 -ffast-math' does a reciprocal-transformation, so only one division</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">is done (as desired with fast-math).  Compiling it with:</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';"> </span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">  -O2 -ffast-math -fno-reciprocal-math</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';"> </span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">should disable the reciprocal transformations (the flag 'arcp'), but leave</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">all the other fast-math transformations enabled.  The current implementation</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">doesn't do that, since the 'fast' IR-level flag still gets set.</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';"> </span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">Motivation of this discussion:<span class="Apple-converted-space"> </span><a href="https://llvm.org/bugs/show_bug.cgi?id=27372#c2" class="" target="_blank" style="color: rgb(149, 79, 114); text-decoration: underline;">https://llvm.org/bugs/show_bug.cgi?id=27372#c2</a></span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';"> </span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">As an aside, when '-ffast-math' is specified on the command-line, the</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">following six switches are all passed to cc1:</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';"> </span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">    -menable-no-infs</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">    -menable-no-nans</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">    -fno-signed-zeros</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">    -freciprocal-math</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">    -fno-trapping-math</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">    -ffp-contract=fast</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';"> </span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">and '-ffast-math' itself is also passed cc1 (the act of passing '-ffast-math'</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">to cc1 results in the macro '__FAST_MATH__' being defined).  When (for</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">example) '-fno-reciprocal-math' is passed in addition to '-ffast-math', then</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">'-freciprocal-math' is no longer passed to cc1 (and the other five listed</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">above still are passed, along with '-ffast-math' still being passed).  It</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">seems like the intention was that these individual switches were to enable</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">the individual floating-point transformations (and so the lack of any of</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">those switches would suppress the relevant transformations), but the</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">'-ffast-math' "umbrella" is over-riding the attempted suppression.</span></div></div></div></blockquote><div class=""><br class=""></div><div class="">Sure, this looks like a bug, disable an individual fast-math flag on the command line should be possible and override a prior -ffast-math (usually the last one on the command line “wins”/override).</div><div class=""><br class=""></div><div class="">The Cfe-dev mailing list would be more appropriate to discuss the behavior of clang command line flags though.</div><div class=""><br class=""></div><br class=""><blockquote class=""><div class=""><div class="WordSection1" style="page: WordSection1; font-family: Helvetica; font-size: 12px; font-style: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';"></span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';"> </span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">The change proposed at<span class="Apple-converted-space"> </span><a href="https://reviews.llvm.org/D26708" class="" target="_blank" style="color: rgb(149, 79, 114); text-decoration: underline;">https://reviews.llvm.org/D26708</a><span class="Apple-converted-space"> </span>deals with this issue</span></div></div></div></blockquote><div class=""><br class=""></div><div class="">This patch seems to modify on LLVM, it does not deal at all with the issue you describe above. </div><div class="">I don’t see why the issue with the clang command line flags need to be dealt with at the LLVM level.</div><div class=""><br class=""></div><br class=""><blockquote class=""><div class=""><div class="WordSection1" style="page: WordSection1; font-family: Helvetica; font-size: 12px; font-style: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';"></span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">just for the reciprocal-transformation case, but it changes the semantics of</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">the 'fast' IR-level flag so that it no longer implies all the others. </span></div></div></div></blockquote><div class=""><br class=""></div><div class="">The starting point for any change is:<span class="Apple-converted-space"> </span><a href="http://llvm.org/docs/LangRef.html#fast-math-flags" class="" target="_blank">http://llvm.org/docs/LangRef.html#fast-math-flags</a></div><div class="">You would need to write a new definition for what “fast” would mean.</div><div class=""><br class=""></div><div id="DWT3626" class="">However I don’t need anything need to be changed here to address the use-case you want to fix.</div></div></div></blockquote><span style="font-family: arial,helvetica,sans-serif; font-size: 13.3333px; font-style: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; float: none; display: inline ! important;" class="">I suspect that we want to start by getting rid of 'fast' on the IR level and replacing it with individual flags for the various optimization classes - Do we have only allowing reassociation and libm optimizations? Then we can readjust the Clang flags in a straightforward way.</span><br style="font-family: arial,helvetica,sans-serif; font-size: 13.3333px; font-style: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;" class=""></div></blockquote><div><br class=""></div><div>Individual flags for various optimization classes make sense only if you don’t end up with a lot of very specialized new flags.</div><div>If a single “reassociate” flag could be enough to complete the existing and replace the “fast” that would be great. </div><div id="DWT2655">But some auditing of all the users of “fast" would be needed first. For instance is "X * log2(0.5*Y) = X*log2(Y) - X” covered by “reassociation”? That seems a bit more than what people think about with reassociation at first.</div></div></blockquote>I can only think of two flags we might need: One for reassociation and one for libm-function optimization. Your example with log2 might require both.<br><br> -Hal<br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px; color: rgb(0, 0, 0); font-weight: normal; font-style: normal; text-decoration: none; font-family: Helvetica,Arial,sans-serif; font-size: 12pt;"><div><div></div><div><br class=""></div><div>— </div><div>Mehdi</div><div><br class=""></div><blockquote class=""><div class=""><br style="font-family: arial,helvetica,sans-serif; font-size: 13.3333px; font-style: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;" class=""><blockquote style="font-style: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px; text-decoration: none; font-family: Helvetica,Arial,sans-serif; font-size: 12pt;" class=""><div class=""><div class=""><div class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><blockquote class=""><div class=""><div class="WordSection1" style="page: WordSection1; font-family: Helvetica; font-size: 12px; font-style: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">With</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">that proposed approach, rather than an "umbrella" flag such as 'fast' being</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">checked in the back-end (along with an individual flag like 'arcp'), just</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">checking the individual flag ('arcp') would be done. </span></div></div></div></blockquote><div class=""><br class=""></div><div class="">There is already no need to check the “fast” *and* arcp flag, if a transformation is about reciprocal, then you only need to check arcp (fast implies arcp, checking for fast would be redundant).</div><div class=""><br class=""></div><div class="">Be careful also that the fast-math flags are mainly an IR level definition, the backend only inherited these per instruction flag very recently. It has been entirely converted to use these, and it still uses a global flag in some places.</div><div class="">The line you’re touching in your patch for instance is about this legacy:</div><div class=""><br class=""></div><div class="">  if (!UnsafeMath && !Flags->hasAllowReciprocal())</div><div class=""><br class=""></div><div class="">The first flag is the global “fast-math” mode on the backend, which is not as fine grain as the per-instruction model.</div><div class="">The second flag is the “per instruction” flag, which is the model we aim at.</div><div class=""><br class=""></div><div class="">We should get rid of the “global” UnsafeMath in the backend, but that does not require any change to the IR or the individual fast-math flags.</div><div class=""><br class=""></div><div class=""><br class=""></div><blockquote class=""><div class=""><div class="WordSection1" style="page: WordSection1; font-family: Helvetica; font-size: 12px; font-style: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">Any fast-math-related</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">transformation that doesn't have an individual flag (e.g., re-association</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">currently doesn't), should eventually have an individual flag defined for</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">it, and then that individual flag should be checked.</span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';"> </span></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri,sans-serif;"><span class="" style="font-family: 'Courier New';">What do people think?</span></div></div></div></blockquote><div class=""><br class=""></div></div><div class="">I think these are valuable problems to solve, but you should tackle them piece by piece: </div><div class=""><br class=""></div><div class="">1) the clang part of overriding the individual FMF and emitting the right IR is the first thing to fix.</div><div class="">2) the backend is still using the global UnsafeFPMath and it should be killed.</div><div class=""><br class=""></div><div class="">Hope this makes sense.</div><div class=""><br class=""></div><div class="">— </div><div class="">Mehdi</div><div class=""><br class=""></div></div><br class="">_______________________________________________<br class="">LLVM Developers mailing list<br class=""><a href="mailto:llvm-dev@lists.llvm.org" class="" target="_blank">llvm-dev@lists.llvm.org</a><br class=""><a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" class="" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br class=""></blockquote><br style="font-family: arial,helvetica,sans-serif; font-size: 13.3333px; font-style: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;" class=""><br style="font-family: arial,helvetica,sans-serif; font-size: 13.3333px; font-style: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;" class=""><br style="font-family: arial,helvetica,sans-serif; font-size: 13.3333px; font-style: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;" class=""><span style="font-family: arial,helvetica,sans-serif; font-size: 13.3333px; font-style: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; float: none; display: inline ! important;" class="">--<span class="Apple-converted-space"> </span></span><br style="font-family: arial,helvetica,sans-serif; font-size: 13.3333px; font-style: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;" class=""><div style="font-family: arial,helvetica,sans-serif; font-size: 13.3333px; font-style: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;" class=""><span class=""></span>Hal Finkel<br class="">Lead, Compiler Technology and Programming Languages<br class="">Leadership Computing Facility<br class="">Argonne National Laboratory</div></div></blockquote></div><br class=""></blockquote><br><br><br>-- <br><div><span name="x"></span>Hal Finkel<br>Lead, Compiler Technology and Programming Languages<br>Leadership Computing Facility<br>Argonne National Laboratory<span name="x"></span><br></div></div></body></html>