[Lldb-commits] [lldb] r114512 - /lldb/trunk/source/Symbol/ClangASTContext.cpp
Greg Clayton
gclayton at apple.com
Tue Sep 21 17:24:45 PDT 2010
Author: gclayton
Date: Tue Sep 21 19:24:45 2010
New Revision: 114512
URL: http://llvm.org/viewvc/llvm-project?rev=114512&view=rev
Log:
Fixed CXXRecordDecl declaration settings for whether a class in a POD type
or not.
Modified:
lldb/trunk/source/Symbol/ClangASTContext.cpp
Modified: lldb/trunk/source/Symbol/ClangASTContext.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/ClangASTContext.cpp?rev=114512&r1=114511&r2=114512&view=diff
==============================================================================
--- lldb/trunk/source/Symbol/ClangASTContext.cpp (original)
+++ lldb/trunk/source/Symbol/ClangASTContext.cpp Tue Sep 21 19:24:45 2010
@@ -943,7 +943,13 @@
if (field)
{
record_decl->addDecl(field);
- return true;
+
+ if (cxx_record_decl->isPOD())
+ {
+ if (!field->getType()->isPODType())
+ cxx_record_decl->setPOD (false);
+ return true;
+ }
}
}
else
@@ -1095,7 +1101,7 @@
{
cxx_record_decl->setBases(base_classes, num_base_classes);
- if (cxx_record_decl->isEmpty())
+ if (cxx_record_decl->isEmpty() || cxx_record_decl->isPOD())
{
// set empty to false if any bases are virtual, or not empty.
@@ -1107,16 +1113,22 @@
if (base_class->isVirtual())
{
cxx_record_decl->setEmpty (false);
+ cxx_record_decl->setPOD (false);
break;
}
else
{
- const CXXRecordDecl *base_class_decl = cast<CXXRecordDecl>(base_class->getType()->getAs<RecordType>()->getDecl());
- if (!base_class_decl->isEmpty())
- {
+ QualType base_type (base_class->getType());
+
+ if (!base_type->isPODType())
+ cxx_record_decl->setPOD (false);
+
+ const CXXRecordDecl *base_class_decl = cast<CXXRecordDecl>(base_type->getAs<RecordType>()->getDecl());
+ if (!base_class_decl->isEmpty())
+ {
cxx_record_decl->setEmpty (false);
break;
- }
+ }
}
}
}
More information about the lldb-commits
mailing list