[PATCH] D25434: Generate more debug info in -gmlt
Dehao Chen via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Dec 15 10:12:57 PST 2016
danielcdh updated this revision to Diff 81608.
danielcdh added a comment.
update option name
https://reviews.llvm.org/D25434
Files:
include/llvm/Target/TargetOptions.h
lib/CodeGen/AsmPrinter/DwarfDebug.cpp
lib/CodeGen/AsmPrinter/DwarfUnit.cpp
Index: lib/CodeGen/AsmPrinter/DwarfUnit.cpp
===================================================================
--- lib/CodeGen/AsmPrinter/DwarfUnit.cpp
+++ lib/CodeGen/AsmPrinter/DwarfUnit.cpp
@@ -1179,20 +1179,23 @@
void DwarfUnit::applySubprogramAttributes(const DISubprogram *SP, DIE &SPDie,
bool Minimal) {
- if (!Minimal)
+ // If -fprofile-debug is enabled, need to emit the subprogram and its source
+ // location.
+ if (Asm->TM.Options.DebugInfoForProfiling || !Minimal)
if (applySubprogramDefinitionAttributes(SP, SPDie))
return;
// Constructors and operators for anonymous aggregates do not have names.
if (!SP->getName().empty())
addString(SPDie, dwarf::DW_AT_name, SP->getName());
+ if (Asm->TM.Options.DebugInfoForProfiling || !Minimal)
+ addSourceLine(SPDie, SP);
+
// Skip the rest of the attributes under -gmlt to save space.
if (Minimal)
return;
- addSourceLine(SPDie, SP);
-
// Add the prototype if we have a prototype and we have a C like
// language.
uint16_t Language = getLanguage();
Index: lib/CodeGen/AsmPrinter/DwarfDebug.cpp
===================================================================
--- lib/CodeGen/AsmPrinter/DwarfDebug.cpp
+++ lib/CodeGen/AsmPrinter/DwarfDebug.cpp
@@ -1184,8 +1184,10 @@
TheCU.addRange(RangeSpan(Asm->getFunctionBegin(), Asm->getFunctionEnd()));
// Under -gmlt, skip building the subprogram if there are no inlined
- // subroutines inside it.
- if (TheCU.getCUNode()->getEmissionKind() == DICompileUnit::LineTablesOnly &&
+ // subroutines inside it. But with -fprofile-debug, the subprogram is still
+ // needed as we need its source location.
+ if (!Asm->TM.Options.DebugInfoForProfiling &&
+ TheCU.getCUNode()->getEmissionKind() == DICompileUnit::LineTablesOnly &&
LScopes.getAbstractScopesList().empty() && !IsDarwin) {
assert(InfoHolder.getScopeVariables().empty());
assert(DbgValues.empty());
Index: include/llvm/Target/TargetOptions.h
===================================================================
--- include/llvm/Target/TargetOptions.h
+++ include/llvm/Target/TargetOptions.h
@@ -108,7 +108,7 @@
DisableIntegratedAS(false), CompressDebugSections(false),
RelaxELFRelocations(false), FunctionSections(false),
DataSections(false), UniqueSectionNames(true), TrapUnreachable(false),
- EmulatedTLS(false), EnableIPRA(false),
+ EmulatedTLS(false), EnableIPRA(false), DebugInfoForProfiling(false),
FloatABIType(FloatABI::Default),
AllowFPOpFusion(FPOpFusion::Standard),
ThreadModel(ThreadModel::POSIX),
@@ -225,6 +225,9 @@
/// This flag enables InterProcedural Register Allocation (IPRA).
unsigned EnableIPRA : 1;
+ /// This flag enables emitting extra debug info for sample profiling.
+ unsigned DebugInfoForProfiling : 1;
+
/// FloatABIType - This setting is set by -float-abi=xxx option is specfied
/// on the command line. This setting may either be Default, Soft, or Hard.
/// Default selects the target's default behavior. Soft selects the ABI for
@@ -299,7 +302,8 @@
ARE_EQUAL(FPDenormalMode) &&
ARE_EQUAL(ExceptionModel) &&
ARE_EQUAL(MCOptions) &&
- ARE_EQUAL(EnableIPRA);
+ ARE_EQUAL(EnableIPRA) &&
+ ARE_EQUAL(DebugInfoForProfiling);
#undef ARE_EQUAL
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D25434.81608.patch
Type: text/x-patch
Size: 3407 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161215/774d58e2/attachment.bin>
More information about the llvm-commits
mailing list