Emit debug info for virtual functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94467 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Devang Patel 2010-01-25 23:17:15 +00:00
Родитель 841d5e607f
Коммит c002464ae5
1 изменённых файлов: 12 добавлений и 2 удалений

Просмотреть файл

@ -562,14 +562,24 @@ CollectCXXMemberFunctions(const CXXRecordDecl *Decl,
MethodLine = PLoc.getLine();
}
// Collect virtual method info.
llvm::DIType ContainingType;
unsigned Virtuality = 0;
unsigned VIndex = 0;
if (Method->isVirtual()) {
// FIXME: Identify pure virtual functions.
Virtuality = llvm::dwarf::DW_VIRTUALITY_virtual;
VIndex = CGM.getVtableInfo().getMethodVtableIndex(Method);
ContainingType = RecordTy;
}
llvm::DISubprogram SP =
DebugFactory.CreateSubprogram(RecordTy , MethodName, MethodName,
MethodLinkageName,
MethodDefUnit, MethodLine,
MethodTy, false,
Method->isThisDeclarationADefinition(),
0 /*Virtuality*/, 0 /*VIndex*/,
llvm::DIType() /*ContainingType*/);
Virtuality, VIndex, ContainingType);
if (Method->isThisDeclarationADefinition())
SPCache[cast<FunctionDecl>(Method)] = llvm::WeakVH(SP.getNode());
EltTys.push_back(SP);