diff options
author | David Blaikie <dblaikie@gmail.com> | 2013-09-13 18:45:00 +0000 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2013-09-13 18:45:00 +0000 |
commit | dedd27fc62528220ec4cd539498567238d832e78 (patch) | |
tree | bdc2e97a1b728601d2baa5190dd7adfadb8cb77c | |
parent | 0a4e61f81c0f4de860e26e03d7395f78bc4564db (diff) | |
download | bcm5719-llvm-dedd27fc62528220ec4cd539498567238d832e78.tar.gz bcm5719-llvm-dedd27fc62528220ec4cd539498567238d832e78.zip |
DebugInfo: omit debug info for friends
GCC ToT doesn't do this & it's worth about 3.2% on Clang's DWO file size
with Clang. Some or all of this may be due to things like r190715 which
could have source fixes/improvements, but it's not clear that's the case
and that doesn't help other source bases.
llvm-svn: 190716
-rw-r--r-- | clang/lib/CodeGen/CGDebugInfo.cpp | 18 | ||||
-rw-r--r-- | clang/lib/CodeGen/CGDebugInfo.h | 5 | ||||
-rw-r--r-- | clang/test/CodeGenCXX/debug-info-friend.cpp | 5 |
3 files changed, 4 insertions, 24 deletions
diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp b/clang/lib/CodeGen/CGDebugInfo.cpp index f81d2cf683e..0069d577f24 100644 --- a/clang/lib/CodeGen/CGDebugInfo.cpp +++ b/clang/lib/CodeGen/CGDebugInfo.cpp @@ -1139,23 +1139,6 @@ CollectCXXMemberFunctions(const CXXRecordDecl *RD, llvm::DIFile Unit, } } -/// CollectCXXFriends - A helper function to collect debug info for -/// C++ base classes. This is used while creating debug info entry for -/// a Record. -void CGDebugInfo:: -CollectCXXFriends(const CXXRecordDecl *RD, llvm::DIFile Unit, - SmallVectorImpl<llvm::Value *> &EltTys, - llvm::DIType RecordTy) { - for (CXXRecordDecl::friend_iterator BI = RD->friend_begin(), - BE = RD->friend_end(); BI != BE; ++BI) { - if ((*BI)->isUnsupportedFriend()) - continue; - if (TypeSourceInfo *TInfo = (*BI)->getFriendType()) - EltTys.push_back(DBuilder.createFriend( - RecordTy, getOrCreateType(TInfo->getType(), Unit))); - } -} - /// CollectCXXBases - A helper function to collect debug info for /// C++ base classes. This is used while creating debug info entry for /// a Record. @@ -1528,7 +1511,6 @@ llvm::DIType CGDebugInfo::CreateTypeDefinition(const RecordType *Ty) { CollectRecordFields(RD, DefUnit, EltTys, FwdDecl); if (CXXDecl) { CollectCXXMemberFunctions(CXXDecl, DefUnit, EltTys, FwdDecl); - CollectCXXFriends(CXXDecl, DefUnit, EltTys, FwdDecl); } LexicalBlockStack.pop_back(); diff --git a/clang/lib/CodeGen/CGDebugInfo.h b/clang/lib/CodeGen/CGDebugInfo.h index d480d9bbc87..0ca274f5688 100644 --- a/clang/lib/CodeGen/CGDebugInfo.h +++ b/clang/lib/CodeGen/CGDebugInfo.h @@ -155,11 +155,6 @@ class CGDebugInfo { SmallVectorImpl<llvm::Value *> &E, llvm::DIType T); - void CollectCXXFriends(const CXXRecordDecl *Decl, - llvm::DIFile F, - SmallVectorImpl<llvm::Value *> &EltTys, - llvm::DIType RecordTy); - void CollectCXXBases(const CXXRecordDecl *Decl, llvm::DIFile F, SmallVectorImpl<llvm::Value *> &EltTys, diff --git a/clang/test/CodeGenCXX/debug-info-friend.cpp b/clang/test/CodeGenCXX/debug-info-friend.cpp index cf6651cde18..b103b142a2a 100644 --- a/clang/test/CodeGenCXX/debug-info-friend.cpp +++ b/clang/test/CodeGenCXX/debug-info-friend.cpp @@ -14,4 +14,7 @@ struct MyFriend { } }; -// CHECK: DW_TAG_friend +// Emitting debug info for friends unnecessarily bloats debug info without any +// known benefit or debugger feature that requires it. Re-enable this is a +// use-case appears. +// CHECK-NOT: DW_TAG_friend |