mirror of https://github.com/microsoft/clang.git
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190716 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
0b5ca510fb
commit
8b6aaa975f
|
@ -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();
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue