diff options
author | Siva Chandra <sivachandra@google.com> | 2015-09-23 17:47:08 +0000 |
---|---|---|
committer | Siva Chandra <sivachandra@google.com> | 2015-09-23 17:47:08 +0000 |
commit | cebabb9fc0a4f921171448304ae62445dfb29019 (patch) | |
tree | 561ec1b024015f67edc193d60251af2ac5756b0f /llvm/lib/Analysis/InstructionSimplify.cpp | |
parent | 7b41f70e6c323615d54ce5058220214c46279add (diff) | |
download | bcm5719-llvm-cebabb9fc0a4f921171448304ae62445dfb29019.tar.gz bcm5719-llvm-cebabb9fc0a4f921171448304ae62445dfb29019.zip |
DWARFASTParserClang::CompleteTypeFromDWARF: Handle incomplete baseclass or child
Summary:
With this change DWARFASTParserClang::CompleteTypeFromDWARF returns false if
DWARFASTParserClang::ParseChildMembers returns false. Similarly, it returns
false if any base class is of an incomplete type. This helps in cases like
these:
class Foo
{
public:
std::string str;
};
...
Foo f;
If a file with the above code is compiled with a modern clang but without
the -fno-limit-debug-info (or similar) option, then the DWARF has only
a forward declration for std::string. In which case, the type for
"class Foo" cannot be completed. If LLDB does not detect that a child
member has incomplete type, then it wrongly conveys to clang (the LLDB
compiler) that "class Foo" is complete, and consequently crashes due to
an assertion failure in clang when running commands like "p f" or
"frame var f".
Reviewers: clayborg
Subscribers: lldb-commits
Differential Revision: http://reviews.llvm.org/D13066
llvm-svn: 248401
Diffstat (limited to 'llvm/lib/Analysis/InstructionSimplify.cpp')
0 files changed, 0 insertions, 0 deletions