RecordDecl:
- Added method 'isForwardDeclaration', a predicate method that returns true
  if a RecordDecl represents a forward declaration.
- Added method 'getDefinitionDecl', a query method that returns a pointer to
  the RecordDecl that provides the actual definition of a struct/union.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55642 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/AST/Decl.cpp b/lib/AST/Decl.cpp
index c2ae5d9..4b4aa65 100644
--- a/lib/AST/Decl.cpp
+++ b/lib/AST/Decl.cpp
@@ -160,6 +160,18 @@
   return new (Mem) RecordDecl(DK, DC, L, Id, PrevDecl);
 }
 
+/// getDefinitionDecl - Returns the RecordDecl for the struct/union that
+///  represents the actual definition (i.e., not a forward declaration).
+///  This method returns NULL if no such RecordDecl exists.
+const RecordDecl* RecordDecl::getDefinitionDecl() const {
+  const RecordDecl* R = this;
+  
+  for (RecordDecl* N = R->NextDecl; N; N = R->NextDecl)
+    R = N;
+  
+  return R->Members ? R : 0;
+}
+
 
 FileScopeAsmDecl *FileScopeAsmDecl::Create(ASTContext &C,
                                            SourceLocation L,