[PATCH] D25435: Generate more debug info in -gmlt
Dehao Chen via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 29 11:21:24 PST 2016
danielcdh updated this revision to Diff 79609.
danielcdh added a comment.
Add -femit-accurate-debug-info flag to guard the change.
https://reviews.llvm.org/D25435
Files:
include/clang/Driver/Options.td
include/clang/Frontend/CodeGenOptions.def
lib/CodeGen/CGDebugInfo.cpp
lib/Driver/Tools.cpp
lib/Frontend/CompilerInvocation.cpp
test/Driver/clang_f_opts.c
Index: test/Driver/clang_f_opts.c
===================================================================
--- test/Driver/clang_f_opts.c
+++ test/Driver/clang_f_opts.c
@@ -469,3 +469,8 @@
// CHECK-WCHAR2: -fshort-wchar
// CHECK-WCHAR2-NOT: -fno-short-wchar
// DELIMITERS: {{^ *"}}
+
+// RUN: %clang -### -S -fno-emit-accurate-debug-info -femit-accurate-debug-info %s 2>&1 | FileCheck -check-prefix=CHECK-EMIT-ACCURATE-DEBUG-INFO %s
+// RUN: %clang -### -S -femit-accurate-debug-info -fno-emit-accurate-debug-info %s 2>&1 | FileCheck -check-prefix=CHECK-NO-EMIT-ACCURATE-DEBUG-INFO %s
+// CHECK-EMIT-ACCURATE-DEBUG-INFO: -femit-accurate-debug-info
+// CHECK-NO-EMIT-ACCURATE-DEBUG-INFO-NOT: -femit-accurate-debug-info
Index: lib/Frontend/CompilerInvocation.cpp
===================================================================
--- lib/Frontend/CompilerInvocation.cpp
+++ lib/Frontend/CompilerInvocation.cpp
@@ -538,6 +538,8 @@
Opts.DisableIntegratedAS = Args.hasArg(OPT_fno_integrated_as);
Opts.Autolink = !Args.hasArg(OPT_fno_autolink);
Opts.SampleProfileFile = Args.getLastArgValue(OPT_fprofile_sample_use_EQ);
+ Opts.EmitAccurateDebugInfo = Args.hasFlag(
+ OPT_femit_accurate_debug_info, OPT_fno_emit_accurate_debug_info, false);
setPGOInstrumentor(Opts, Args, Diags);
Opts.InstrProfileOutput =
Index: lib/Driver/Tools.cpp
===================================================================
--- lib/Driver/Tools.cpp
+++ lib/Driver/Tools.cpp
@@ -5508,6 +5508,10 @@
A->render(Args, CmdArgs);
}
+ if (Args.hasFlag(options::OPT_femit_accurate_debug_info,
+ options::OPT_fno_emit_accurate_debug_info, false))
+ CmdArgs.push_back("-femit-accurate-debug-info");
+
// -fbuiltin is default unless -mkernel is used.
bool UseBuiltins =
Args.hasFlag(options::OPT_fbuiltin, options::OPT_fno_builtin,
Index: lib/CodeGen/CGDebugInfo.cpp
===================================================================
--- lib/CodeGen/CGDebugInfo.cpp
+++ lib/CodeGen/CGDebugInfo.cpp
@@ -2739,9 +2739,11 @@
}
// No need to replicate the linkage name if it isn't different from the
// subprogram name, no need to have it at all unless coverage is enabled or
- // debug is set to more than just line tables.
+ // debug is set to more than just line tables or accurate debug info is
+ // needed.
if (LinkageName == Name || (!CGM.getCodeGenOpts().EmitGcovArcs &&
!CGM.getCodeGenOpts().EmitGcovNotes &&
+ !CGM.getCodeGenOpts().EmitAccurateDebugInfo &&
DebugKind <= codegenoptions::DebugLineTablesOnly))
LinkageName = StringRef();
Index: include/clang/Frontend/CodeGenOptions.def
===================================================================
--- include/clang/Frontend/CodeGenOptions.def
+++ include/clang/Frontend/CodeGenOptions.def
@@ -256,6 +256,9 @@
/// Whether copy relocations support is available when building as PIE.
CODEGENOPT(PIECopyRelocations, 1, 0)
+/// Whether emit more accurate debug info for sample pgo profile collection.
+CODEGENOPT(EmitAccurateDebugInfo, 1, 0)
+
#undef CODEGENOPT
#undef ENUM_CODEGENOPT
#undef VALUE_CODEGENOPT
Index: include/clang/Driver/Options.td
===================================================================
--- include/clang/Driver/Options.td
+++ include/clang/Driver/Options.td
@@ -509,6 +509,12 @@
HelpText<"Enable sample-based profile guided optimizations">;
def fauto_profile_EQ : Joined<["-"], "fauto-profile=">,
Alias<fprofile_sample_use_EQ>;
+def femit_accurate_debug_info : Flag<["-"], "femit-accurate-debug-info">,
+ Group<f_Group>, Flags<[CC1Option]>,
+ HelpText<"Emit accurate debug info to make sample profile more accurate.">;
+def fno_emit_accurate_debug_info : Flag<["-"], "fno-emit-accurate-debug-info">,
+ Group<f_Group>, Flags<[DriverOption]>,
+ HelpText<"Do not emit accurate debug info.">;
def fprofile_instr_generate : Flag<["-"], "fprofile-instr-generate">,
Group<f_Group>, Flags<[DriverOption]>,
HelpText<"Generate instrumented code to collect execution counts into default.profraw file (overriden by '=' form of option or LLVM_PROFILE_FILE env var)">;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D25435.79609.patch
Type: text/x-patch
Size: 4223 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161129/c1a0ec16/attachment.bin>
More information about the llvm-commits
mailing list