This patch adds a new Clang compiler flag "-gline-tables-only".
It reduces the amount of emitted debug information: 1) DIEs in .debug_info have types DW_TAG_compile_unit, DW_TAG_subprogram, DW_TAG_inlined_subroutine (for opt builds) and DW_TAG_lexical_block only. 2) .debug_str contains only function names. 3) No debug data for types/namespaces/variables is emitted. 4) The data in .debug_line is enough to produce valid stack traces with function names and line numbers. Reviewed by Eric Christopher. llvm-svn: 156160
This commit is contained in:
@@ -184,6 +184,9 @@ static void CodeGenOptsToArgs(const CodeGenOptions &Opts, ToArgsList &Res) {
|
||||
switch (Opts.DebugInfo) {
|
||||
case CodeGenOptions::NoDebugInfo:
|
||||
break;
|
||||
case CodeGenOptions::DebugLineTablesOnly:
|
||||
Res.push_back("-gline-tables-only");
|
||||
break;
|
||||
case CodeGenOptions::LimitedDebugInfo:
|
||||
Res.push_back("-g");
|
||||
Res.push_back("-flimit-debug-info");
|
||||
@@ -1148,7 +1151,9 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,
|
||||
Opts.Inlining = Args.hasArg(OPT_fno_inline_functions) ?
|
||||
CodeGenOptions::OnlyAlwaysInlining : Opts.Inlining;
|
||||
|
||||
if (Args.hasArg(OPT_g_Flag)) {
|
||||
if (Args.hasArg(OPT_gline_tables_only)) {
|
||||
Opts.DebugInfo = CodeGenOptions::DebugLineTablesOnly;
|
||||
} else if (Args.hasArg(OPT_g_Flag)) {
|
||||
if (Args.hasFlag(OPT_flimit_debug_info, OPT_fno_limit_debug_info, true))
|
||||
Opts.DebugInfo = CodeGenOptions::LimitedDebugInfo;
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user