<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 - __builtin_constant_p lowering is inconsistent, producing false-negatives"
   href="https://bugs.llvm.org/show_bug.cgi?id=42949">42949</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>__builtin_constant_p lowering is inconsistent, producing false-negatives
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>clang
          </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>normal
          </td>
        </tr>

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

        <tr>
          <th>Component</th>
          <td>C
          </td>
        </tr>

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

        <tr>
          <th>Reporter</th>
          <td>george.burgess.iv@gmail.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>blitzrakete@gmail.com, dgregor@apple.com, erik.pilkington@gmail.com, llvm-bugs@lists.llvm.org, richard-llvm@metafoo.co.uk
          </td>
        </tr></table>
      <p>
        <div>
        <pre>It appears that __builtin_constant_p will eagerly get lowered to `false` in the
frontend if clang has reason to believe that __bcp's argument may have
side-effects. This has unintuitive consequences: <a href="https://godbolt.org/z/P-8vLS">https://godbolt.org/z/P-8vLS</a>

Looks like this is a result of some special casing added in r359844.

It's understandable that __builtin_constant_p is totally a best-effort thing,
and there may be cases where it produces odd results, but this particular case
seems like it may be pretty confusing to anyone who isn't willing to read
clang's source code. :)</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>