[Lldb-commits] [lldb] r178411 - Elide all artificial copy constructors, because

Sean Callanan scallanan at apple.com
Fri Mar 29 20:06:46 PDT 2013

Author: spyffe
Date: Fri Mar 29 22:06:45 2013
New Revision: 178411

URL: http://llvm.org/viewvc/llvm-project?rev=178411&view=rev
Elide all artificial copy constructors, because
they are probably trivial.  This means that we
don't confuse Clang about whether a class is
trivially copy constructible.  It can figure
that out itself as long as we don't explicitly
feed it the constructors.

If the class is trivially copy-constructible,
this can change the ABI that Clang uses to call
functions that return that class (e.g., by making
the object be returned in a register), so this
is quite important for correctness.



Modified: lldb/trunk/source/Symbol/ClangASTContext.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/ClangASTContext.cpp?rev=178411&r1=178410&r2=178411&view=diff
--- lldb/trunk/source/Symbol/ClangASTContext.cpp (original)
+++ lldb/trunk/source/Symbol/ClangASTContext.cpp Fri Mar 29 22:06:45 2013
@@ -1777,6 +1777,9 @@ ClangASTContext::AddMethodToCXXRecordTyp
     else if (decl_name == cxx_record_decl->getDeclName())
+       if (is_artificial && method_function_prototype->getNumArgs() == 1)
+          return NULL; // skip artificial copy constructors
        cxx_ctor_decl = CXXConstructorDecl::Create (*ast,

More information about the lldb-commits mailing list