<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_mul_overflow with mixed sign int operands incorrect result"
   href="https://bugs.llvm.org/show_bug.cgi?id=35750">35750</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>__builtin_mul_overflow with mixed sign int operands incorrect result
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>new-bugs
          </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>release blocker
          </td>
        </tr>

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

        <tr>
          <th>Component</th>
          <td>new bugs
          </td>
        </tr>

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

        <tr>
          <th>Reporter</th>
          <td>ruttenberg@reservoir.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvm-bugs@lists.llvm.org
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Created <span class=""><a href="attachment.cgi?id=19603" name="attach_19603" title="Reproducer -- passes with gcc and clang 4.0">attachment 19603</a> <a href="attachment.cgi?id=19603&action=edit" title="Reproducer -- passes with gcc and clang 4.0">[details]</a></span>
Reproducer -- passes with gcc and clang 4.0

Attaching a test simplified from the gcc test suite.

Essentially unsigned int = ((signed) -1) * 1 == 1

Gcc gets ((unsigned) -1) as the result, which I think is right.

The bug originated with this change:

Author: Vedant Kumar <<a href="mailto:vsk@apple.com">vsk@apple.com</a>>
Date:   Sat Dec 16 01:28:25 2017 +0000

Previously, the signed operand was sign extended to 33 bits and the unsigned
operand was zero extended to 33 bits and the multiply was carried out in
extended precision, which seems right.

Now we just negate the first operand if it is negative, which seems wrong.</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>