diff options
Diffstat (limited to 'lldb/scripts/clang.is-being-completed-from-lexical-storage.diff')
| -rw-r--r-- | lldb/scripts/clang.is-being-completed-from-lexical-storage.diff | 78 |
1 files changed, 0 insertions, 78 deletions
diff --git a/lldb/scripts/clang.is-being-completed-from-lexical-storage.diff b/lldb/scripts/clang.is-being-completed-from-lexical-storage.diff deleted file mode 100644 index 4a973a5be93..00000000000 --- a/lldb/scripts/clang.is-being-completed-from-lexical-storage.diff +++ /dev/null @@ -1,78 +0,0 @@ -Index: lib/AST/ASTImporter.cpp -=================================================================== ---- lib/AST/ASTImporter.cpp (revision 146622) -+++ lib/AST/ASTImporter.cpp (working copy) -@@ -2300,7 +2300,8 @@ - - if (RecordDecl *FoundRecord = dyn_cast<RecordDecl>(Found)) { - if (RecordDecl *FoundDef = FoundRecord->getDefinition()) { -- if (!D->isCompleteDefinition() || IsStructuralMatch(D, FoundDef)) { -+ if (FoundDef->isBeingCompletedFromLexicalStorage() || -+ !D->isCompleteDefinition() || IsStructuralMatch(D, FoundDef)) { - // The record types structurally match, or the "from" translation - // unit only had a forward declaration anyway; call it the same - // function. -Index: lib/AST/Decl.cpp -=================================================================== ---- lib/AST/Decl.cpp (revision 146622) -+++ lib/AST/Decl.cpp (working copy) -@@ -2421,8 +2421,14 @@ - ExternalASTSource::Deserializing TheFields(Source); - - SmallVector<Decl*, 64> Decls; -- LoadedFieldsFromExternalStorage = true; -- switch (Source->FindExternalLexicalDeclsBy<FieldDecl>(this, Decls)) { -+ LoadedFieldsFromExternalStorage = true; -+ -+ setIsBeingCompletedFromLexicalStorage(true); -+ ExternalLoadResult LoadResult = -+ Source->FindExternalLexicalDeclsBy<FieldDecl>(this, Decls); -+ setIsBeingCompletedFromLexicalStorage(false); -+ -+ switch (LoadResult) { - case ELR_Success: - break; - -Index: include/clang/AST/DeclBase.h -=================================================================== ---- include/clang/AST/DeclBase.h (revision 146622) -+++ include/clang/AST/DeclBase.h (working copy) -@@ -836,6 +836,12 @@ - /// storage that contains additional declarations that are visible - /// in this context. - mutable unsigned ExternalVisibleStorage : 1; -+ -+ /// \brief True if this declaration context is currently having -+ /// declarations added from its external lexical storage. This flag -+ /// is intended to prevent One Definition Rule checking as the -+ /// declarations are imported. -+ mutable unsigned IsBeingCompletedFromLexicalStorage : 1; - - /// \brief Pointer to the data structure used to lookup declarations - /// within this context (or a DependentStoredDeclsMap if this is a -@@ -863,8 +869,8 @@ - - DeclContext(Decl::Kind K) - : DeclKind(K), ExternalLexicalStorage(false), -- ExternalVisibleStorage(false), LookupPtr(0), FirstDecl(0), -- LastDecl(0) { } -+ ExternalVisibleStorage(false), IsBeingCompletedFromLexicalStorage(false), -+ LookupPtr(0), FirstDecl(0), LastDecl(0) { } - - public: - ~DeclContext(); -@@ -1368,6 +1374,14 @@ - ExternalVisibleStorage = ES; - } - -+ bool isBeingCompletedFromLexicalStorage() const { -+ return IsBeingCompletedFromLexicalStorage; -+ } -+ -+ void setIsBeingCompletedFromLexicalStorage(bool IBC) const { -+ IsBeingCompletedFromLexicalStorage = IBC; -+ } -+ - /// \brief Determine whether the given declaration is stored in the list of - /// declarations lexically within this context. - bool isDeclInLexicalTraversal(const Decl *D) const { |

