]> granicus.if.org Git - clang/commitdiff
Revert previous patch unifying all of the C++ record prep in one area,
authorEric Christopher <echristo@apple.com>
Thu, 26 Jan 2012 07:01:04 +0000 (07:01 +0000)
committerEric Christopher <echristo@apple.com>
Thu, 26 Jan 2012 07:01:04 +0000 (07:01 +0000)
the gdb testsuite complains too much about the ordering of items printed,
even if the offsets in the debug info are correct.

This reverts commit 027cb30af828f07750f9185782822297a5c57231.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149049 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGDebugInfo.cpp

index 7fd5daa1825fc1e889d896c105698a1aed8ad900..6a775ccba648506c61b98a8cea48e0e8ebd4001b 100644 (file)
@@ -1171,16 +1171,21 @@ llvm::DIType CGDebugInfo::CreateType(const RecordType *Ty) {
   // Convert all the elements.
   SmallVector<llvm::Value *, 16> EltTys;
 
-  // Collect static variables with initializers.
-  CollectRecordStaticVars(RD, FwdDecl);
-  CollectRecordFields(RD, DefUnit, EltTys, FwdDecl);
-
-  // Collect C++ information.
+  // Note: The split of CXXDecl information here is intentional, the
+  // gdb tests will depend on a certain ordering at printout. The debug
+  // information offsets are still correct if we merge them all together
+  // though.
   const CXXRecordDecl *CXXDecl = dyn_cast<CXXRecordDecl>(RD);
-  llvm::DIArray TParamsArray;
   if (CXXDecl) {
     CollectCXXBases(CXXDecl, DefUnit, EltTys, FwdDecl);
     CollectVTableInfo(CXXDecl, DefUnit, EltTys);
+  }
+
+  // Collect static variables with initializers and other fields.
+  CollectRecordStaticVars(RD, FwdDecl);
+  CollectRecordFields(RD, DefUnit, EltTys, FwdDecl);
+  llvm::DIArray TParamsArray;
+  if (CXXDecl) {
     CollectCXXMemberFunctions(CXXDecl, DefUnit, EltTys, FwdDecl);
     CollectCXXFriends(CXXDecl, DefUnit, EltTys, FwdDecl);
     if (const ClassTemplateSpecializationDecl *TSpecial