<html>
    <head>
      <base href="https://llvm.org/bugs/" />
    </head>
    <body><span class="vcard"><a class="email" href="mailto:richard-llvm@metafoo.co.uk" title="Richard Smith <richard-llvm@metafoo.co.uk>"> <span class="fn">Richard Smith</span></a>
</span> changed
              <a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED INVALID - clang++ -O1 evaluates wrong branch in C++ ternary operator ?:"
   href="https://llvm.org/bugs/show_bug.cgi?id=24807">bug 24807</a>
        <br>
             <table border="1" cellspacing="0" cellpadding="8">
          <tr>
            <th>What</th>
            <th>Removed</th>
            <th>Added</th>
          </tr>

         <tr>
           <td style="text-align:right;">Status</td>
           <td>NEW
           </td>
           <td>RESOLVED
           </td>
         </tr>

         <tr>
           <td style="text-align:right;">CC</td>
           <td>
                
           </td>
           <td>richard-llvm@metafoo.co.uk
           </td>
         </tr>

         <tr>
           <td style="text-align:right;">Resolution</td>
           <td>---
           </td>
           <td>INVALID
           </td>
         </tr></table>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED INVALID - clang++ -O1 evaluates wrong branch in C++ ternary operator ?:"
   href="https://llvm.org/bugs/show_bug.cgi?id=24807#c6">Comment # 6</a>
              on <a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED INVALID - clang++ -O1 evaluates wrong branch in C++ ternary operator ?:"
   href="https://llvm.org/bugs/show_bug.cgi?id=24807">bug 24807</a>
              from <span class="vcard"><a class="email" href="mailto:richard-llvm@metafoo.co.uk" title="Richard Smith <richard-llvm@metafoo.co.uk>"> <span class="fn">Richard Smith</span></a>
</span></b>
        <pre>From the C standard:

"If part of a program tests floating-point status flags, sets floating-point
control modes, or runs under non-default mode settings, but was translated with
the state for the FENV_ACCESS pragma "off", the behavior is undefined."

Since the FENV_ACCESS pragma is not part of C++, and Clang's only supported
state for it is "off", and in any case you didn't use it, your call to
feenableexcept invokes undefined behavior.

Resolving invalid as your code invokes UB, but this is morally a duplicate of
<a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - clang/llvm don't support C99 FP rounding mode pragmas (FENV_ACCESS etc)"
   href="show_bug.cgi?id=8100">bug 8100</a> (it would be a duplicate if you had used the necessary pragma).</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>