[llvm-bugs] [Bug 31049] New: [MS] Clang passes small objects with implicitly deleted copy constructors incorrectly on x64

via llvm-bugs llvm-bugs at lists.llvm.org
Thu Nov 17 16:16:39 PST 2016


https://llvm.org/bugs/show_bug.cgi?id=31049

            Bug ID: 31049
           Summary: [MS] Clang passes small objects with implicitly
                    deleted copy constructors incorrectly on x64
           Product: clang
           Version: unspecified
          Hardware: PC
                OS: Windows NT
            Status: NEW
          Severity: normal
          Priority: P
         Component: LLVM Codegen
          Assignee: unassignedclangbugs at nondot.org
          Reporter: rnk at google.com
                CC: llvm-bugs at lists.llvm.org
    Classification: Unclassified

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.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20161118/6532362e/attachment.html>


More information about the llvm-bugs mailing list