Add support to let FE mark explict methods as explict in debug info.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115378 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Devang Patel 2010-10-01 23:31:40 +00:00
parent 2b2de24fe2
commit 21ea1d5b4c
2 changed files with 11 additions and 1 deletions

View File

@ -54,7 +54,8 @@ namespace llvm {
FlagAppleBlock = 1 << 3,
FlagBlockByrefStruct = 1 << 4,
FlagVirtual = 1 << 5,
FlagArtificial = 1 << 6
FlagArtificial = 1 << 6,
FlagExplicit = 1 << 7
};
protected:
const MDNode *DbgNode;
@ -414,6 +415,13 @@ namespace llvm {
return false;
return (getUnsignedField(14) & FlagProtected) != 0;
}
/// isExplicit - Return true if this subprogram is marked as explicit.
bool isExplicit() const {
if (getVersion() <= llvm::LLVMDebugVersion8)
return false;
return (getUnsignedField(14) & FlagExplicit) != 0;
}
unsigned isOptimized() const;
StringRef getFilename() const {

View File

@ -1081,6 +1081,8 @@ void DwarfDebug::constructTypeDIE(DIE &Buffer, DICompositeType CTy) {
else
addUInt(ElemDie, dwarf::DW_AT_accessibility, dwarf::DW_FORM_flag,
dwarf::DW_ACCESS_public);
if (SP.isExplicit())
addUInt(ElemDie, dwarf::DW_AT_explicit, dwarf::DW_FORM_flag, 1);
}
else if (Element.isVariable()) {
DIVariable DV(Element);