summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSean Callanan <scallanan@apple.com>2013-05-01 23:18:34 +0000
committerSean Callanan <scallanan@apple.com>2013-05-01 23:18:34 +0000
commit16f45ca6ba2ce662e4f8a02f6904bbf7f5019768 (patch)
treea5ae7cbac09ba9b3a18a005e4a0e7fdefa2db7ba
parent89bbd1fb6432f679b0c499c4a96f0907f494bb57 (diff)
downloadbcm5719-llvm-16f45ca6ba2ce662e4f8a02f6904bbf7f5019768.tar.gz
bcm5719-llvm-16f45ca6ba2ce662e4f8a02f6904bbf7f5019768.zip
Make our eliding of artificially-generated methods
in debug information more aggressive. Emitting classes containing these methods causes crashes in Clang when dealing with complex code bases. <rdar://problem/12640887> llvm-svn: 180895
-rw-r--r--lldb/source/Symbol/ClangASTContext.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/lldb/source/Symbol/ClangASTContext.cpp b/lldb/source/Symbol/ClangASTContext.cpp
index cf16799570e..b2e98c26a8d 100644
--- a/lldb/source/Symbol/ClangASTContext.cpp
+++ b/lldb/source/Symbol/ClangASTContext.cpp
@@ -1769,6 +1769,9 @@ ClangASTContext::AddMethodToCXXRecordType
CXXDestructorDecl *cxx_dtor_decl(NULL);
CXXConstructorDecl *cxx_ctor_decl(NULL);
+ if (is_artificial)
+ return NULL; // skip everything artificial
+
if (name[0] == '~')
{
cxx_dtor_decl = CXXDestructorDecl::Create (*ast,
@@ -1783,9 +1786,6 @@ ClangASTContext::AddMethodToCXXRecordType
}
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,
cxx_record_decl,
SourceLocation(),
OpenPOWER on IntegriCloud