aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2010-10-01 23:31:40 +0000
committerDevang Patel <dpatel@apple.com>2010-10-01 23:31:40 +0000
commit21ea1d5b4cad8c8dee1288453f797572766c94d8 (patch)
tree96f5a5fab1f035de2c81ac3694613679e4d65f45
parent2b2de24fe2bdbe0c533bab2208f4b666ea0d6e86 (diff)
downloadexternal_llvm-21ea1d5b4cad8c8dee1288453f797572766c94d8.zip
external_llvm-21ea1d5b4cad8c8dee1288453f797572766c94d8.tar.gz
external_llvm-21ea1d5b4cad8c8dee1288453f797572766c94d8.tar.bz2
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
-rw-r--r--include/llvm/Analysis/DebugInfo.h10
-rw-r--r--lib/CodeGen/AsmPrinter/DwarfDebug.cpp2
2 files changed, 11 insertions, 1 deletions
diff --git a/include/llvm/Analysis/DebugInfo.h b/include/llvm/Analysis/DebugInfo.h
index d76271a..4189f5d 100644
--- a/include/llvm/Analysis/DebugInfo.h
+++ b/include/llvm/Analysis/DebugInfo.h
@@ -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 {
diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
index e6ac0eb..ddda184 100644
--- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
+++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
@@ -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);