diff options
| author | Sean Callanan <scallanan@apple.com> | 2012-03-16 05:34:53 +0000 |
|---|---|---|
| committer | Sean Callanan <scallanan@apple.com> | 2012-03-16 05:34:53 +0000 |
| commit | d6a4b2cdb2acf37bc96a701f84bbb1ec7496db01 (patch) | |
| tree | ec2bc78dbb4c439927a285fda8d4cf10c95dc010 | |
| parent | e2355255570aa6573538d6030ee6442df2960fd2 (diff) | |
| download | bcm5719-llvm-d6a4b2cdb2acf37bc96a701f84bbb1ec7496db01.tar.gz bcm5719-llvm-d6a4b2cdb2acf37bc96a701f84bbb1ec7496db01.zip | |
Integrated two high-value Clang fixes:
- Clang now completes all Objective-C objects (if
they are not already complete, and they have
external lexical sources) during structure
layout, avoiding a LLDB crash.
- The Clang Decl printer handles reference types
correctly. This prevents LLDB from crashing
when expression logging is enabled.
llvm-svn: 152897
| -rw-r--r-- | lldb/scripts/clang.complete-type-getObjCLayout.diff | 13 | ||||
| -rw-r--r-- | lldb/scripts/clang.decl-printer-reference-type.diff | 13 |
2 files changed, 26 insertions, 0 deletions
diff --git a/lldb/scripts/clang.complete-type-getObjCLayout.diff b/lldb/scripts/clang.complete-type-getObjCLayout.diff new file mode 100644 index 00000000000..23609572540 --- /dev/null +++ b/lldb/scripts/clang.complete-type-getObjCLayout.diff @@ -0,0 +1,13 @@ +Index: lib/AST/RecordLayoutBuilder.cpp +=================================================================== +--- lib/AST/RecordLayoutBuilder.cpp (revision 152265) ++++ lib/AST/RecordLayoutBuilder.cpp (working copy) +@@ -2313,6 +2313,8 @@ + ASTContext::getObjCLayout(const ObjCInterfaceDecl *D, + const ObjCImplementationDecl *Impl) const { + // Retrieve the definition ++ if (D->hasExternalLexicalStorage() && !D->getDefinition()) ++ getExternalSource()->CompleteType(const_cast<ObjCInterfaceDecl*>(D)); + D = D->getDefinition(); + assert(D && D->isThisDeclarationADefinition() && "Invalid interface decl!"); + diff --git a/lldb/scripts/clang.decl-printer-reference-type.diff b/lldb/scripts/clang.decl-printer-reference-type.diff new file mode 100644 index 00000000000..b0150fee695 --- /dev/null +++ b/lldb/scripts/clang.decl-printer-reference-type.diff @@ -0,0 +1,13 @@ +Index: lib/AST/DeclPrinter.cpp +=================================================================== +--- lib/AST/DeclPrinter.cpp (revision 152772) ++++ lib/AST/DeclPrinter.cpp (working copy) +@@ -114,6 +114,8 @@ + BaseType = FTy->getResultType(); + else if (const VectorType *VTy = BaseType->getAs<VectorType>()) + BaseType = VTy->getElementType(); ++ else if (const ReferenceType *RTy = BaseType->getAs<ReferenceType>()) ++ BaseType = RTy->getPointeeType(); + else + llvm_unreachable("Unknown declarator!"); + } |

