<html>
    <head>
      <base href="https://llvm.org/bugs/" />
    </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 --- - [MS] Clang passes small objects with implicitly deleted copy constructors incorrectly on x64"
   href="https://llvm.org/bugs/show_bug.cgi?id=31049">31049</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>[MS] Clang passes small objects with implicitly deleted copy constructors incorrectly on x64
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>clang
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>unspecified
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Windows NT
          </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>LLVM Codegen
          </td>
        </tr>

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

        <tr>
          <th>Reporter</th>
          <td>rnk@google.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvm-bugs@lists.llvm.org
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Consider:

struct A {
  A();
  A(A &&o) : a(o.a) {}
  int a;
};
struct B {
  B();
  // B(B &&o);
  A a;
  int val;
};
int getit(B b) { return b.val; }

B's copy ctor is implicitly deleted, but the ABI code can't figure it out
because there isn't enough information in the AST right now.

Itanium has similar bugs. Fixing this in all cases will require a big overhaul
of how we track special member triviality, but it's probably worth doing in the
long run.

For now, we can probably add a workaround to MicrosoftCXXABI.cpp.</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>