Putting back safe fixes 116836,116837,116838

llvm-svn: 116866
diff --git a/clang/lib/AST/Decl.cpp b/clang/lib/AST/Decl.cpp
index e822009..4898d6f 100644
--- a/clang/lib/AST/Decl.cpp
+++ b/clang/lib/AST/Decl.cpp
@@ -1580,6 +1580,8 @@
 TagDecl* TagDecl::getDefinition() const {
   if (isDefinition())
     return const_cast<TagDecl *>(this);
+  if (const CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(this))
+    return CXXRD->getDefinition();
 
   for (redecl_iterator R = redecls_begin(), REnd = redecls_end();
        R != REnd; ++R)