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: unassignedclangb...@nondot.org Reporter: r...@google.com CC: llvm-bugs@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.
_______________________________________________ llvm-bugs mailing list llvm-bugs@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs