mirror of git://gcc.gnu.org/git/gcc.git
[SFN] Introduce -gstatement-frontiers option, enable debug markers
Introduce a command line option to enable statement frontiers, enabled by default in optimized builds with DWARF2+ debug information. This patch depends on an earlier patch that completed the infrastructure for debug markers, and on another patch that turns -g into a negatable option prefix. for gcc/ChangeLog * common.opt (gstatement-frontiers): New, setting debug_nonbind_markers_p. * rtl.h (MAY_HAVE_DEBUG_MARKER_INSNS): Activate. * toplev.c (process_options): Autodetect value for debug statement frontiers option. * tree.h (MAY_HAVE_DEBUG_MARKER_STMTS): Activate. * doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers): New. From-SVN: r255569
This commit is contained in:
parent
96a95ac18c
commit
8697bf9f46
|
|
@ -1,5 +1,13 @@
|
||||||
2017-12-12 Alexandre Oliva <aoliva@redhat.com>
|
2017-12-12 Alexandre Oliva <aoliva@redhat.com>
|
||||||
|
|
||||||
|
* common.opt (gstatement-frontiers): New, setting
|
||||||
|
debug_nonbind_markers_p.
|
||||||
|
* rtl.h (MAY_HAVE_DEBUG_MARKER_INSNS): Activate.
|
||||||
|
* toplev.c (process_options): Autodetect value for debug statement
|
||||||
|
frontiers option.
|
||||||
|
* tree.h (MAY_HAVE_DEBUG_MARKER_STMTS): Activate.
|
||||||
|
* doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers): New.
|
||||||
|
|
||||||
* cfgexpand.c (expand_gimple_basic_block): Handle begin stmt
|
* cfgexpand.c (expand_gimple_basic_block): Handle begin stmt
|
||||||
markers. Integrate source bind into debug stmt expand loop.
|
markers. Integrate source bind into debug stmt expand loop.
|
||||||
(pass_expand::execute): Check debug marker limit. Avoid deep
|
(pass_expand::execute): Check debug marker limit. Avoid deep
|
||||||
|
|
|
||||||
|
|
@ -2936,6 +2936,10 @@ gstabs+
|
||||||
Common Driver JoinedOrMissing Negative(gvms)
|
Common Driver JoinedOrMissing Negative(gvms)
|
||||||
Generate debug information in extended STABS format.
|
Generate debug information in extended STABS format.
|
||||||
|
|
||||||
|
gstatement-frontiers
|
||||||
|
Common Driver Var(debug_nonbind_markers_p) Init(2)
|
||||||
|
Emit progressive recommended breakpoint locations.
|
||||||
|
|
||||||
gstrict-dwarf
|
gstrict-dwarf
|
||||||
Common Driver Report Var(dwarf_strict) Init(0)
|
Common Driver Report Var(dwarf_strict) Init(0)
|
||||||
Don't emit DWARF additions beyond selected version.
|
Don't emit DWARF additions beyond selected version.
|
||||||
|
|
|
||||||
|
|
@ -346,6 +346,7 @@ Objective-C and Objective-C++ Dialects}.
|
||||||
-ggdb -grecord-gcc-switches -gno-record-gcc-switches @gol
|
-ggdb -grecord-gcc-switches -gno-record-gcc-switches @gol
|
||||||
-gstabs -gstabs+ -gstrict-dwarf -gno-strict-dwarf @gol
|
-gstabs -gstabs+ -gstrict-dwarf -gno-strict-dwarf @gol
|
||||||
-gcolumn-info -gno-column-info @gol
|
-gcolumn-info -gno-column-info @gol
|
||||||
|
-gstatement-frontiers -gno-statement-frontiers @gol
|
||||||
-gvms -gxcoff -gxcoff+ -gz@r{[}=@var{type}@r{]} @gol
|
-gvms -gxcoff -gxcoff+ -gz@r{[}=@var{type}@r{]} @gol
|
||||||
-fdebug-prefix-map=@var{old}=@var{new} -fdebug-types-section @gol
|
-fdebug-prefix-map=@var{old}=@var{new} -fdebug-types-section @gol
|
||||||
-fno-eliminate-unused-debug-types @gol
|
-fno-eliminate-unused-debug-types @gol
|
||||||
|
|
@ -7146,6 +7147,17 @@ Emit location column information into DWARF debugging information, rather
|
||||||
than just file and line.
|
than just file and line.
|
||||||
This option is enabled by default.
|
This option is enabled by default.
|
||||||
|
|
||||||
|
@item -gstatement-frontiers
|
||||||
|
@item -gno-statement-frontiers
|
||||||
|
@opindex gstatement-frontiers
|
||||||
|
@opindex gno-statement-frontiers
|
||||||
|
This option causes GCC to create markers in the internal representation
|
||||||
|
at the beginning of statements, and to keep them roughly in place
|
||||||
|
throughout compilation, using them to guide the output of @code{is_stmt}
|
||||||
|
markers in the line number table. This is enabled by default when
|
||||||
|
compiling with optimization (@option{-Os}, @option{-O}, @option{-O2},
|
||||||
|
@dots{}), and outputting DWARF 2 debug information at the normal level.
|
||||||
|
|
||||||
@item -gz@r{[}=@var{type}@r{]}
|
@item -gz@r{[}=@var{type}@r{]}
|
||||||
@opindex gz
|
@opindex gz
|
||||||
Produce compressed debug sections in DWARF format, if that is supported.
|
Produce compressed debug sections in DWARF format, if that is supported.
|
||||||
|
|
|
||||||
|
|
@ -816,7 +816,7 @@ struct GTY(()) rtvec_def {
|
||||||
#define NONDEBUG_INSN_P(X) (INSN_P (X) && !DEBUG_INSN_P (X))
|
#define NONDEBUG_INSN_P(X) (INSN_P (X) && !DEBUG_INSN_P (X))
|
||||||
|
|
||||||
/* Nonzero if DEBUG_MARKER_INSN_P may possibly hold. */
|
/* Nonzero if DEBUG_MARKER_INSN_P may possibly hold. */
|
||||||
#define MAY_HAVE_DEBUG_MARKER_INSNS 0 /* debug_nonbind_markers_p */
|
#define MAY_HAVE_DEBUG_MARKER_INSNS debug_nonbind_markers_p
|
||||||
/* Nonzero if DEBUG_BIND_INSN_P may possibly hold. */
|
/* Nonzero if DEBUG_BIND_INSN_P may possibly hold. */
|
||||||
#define MAY_HAVE_DEBUG_BIND_INSNS flag_var_tracking_assignments
|
#define MAY_HAVE_DEBUG_BIND_INSNS flag_var_tracking_assignments
|
||||||
/* Nonzero if DEBUG_INSN_P may possibly hold. */
|
/* Nonzero if DEBUG_INSN_P may possibly hold. */
|
||||||
|
|
|
||||||
|
|
@ -1536,6 +1536,10 @@ process_options (void)
|
||||||
warning_at (UNKNOWN_LOCATION, 0,
|
warning_at (UNKNOWN_LOCATION, 0,
|
||||||
"var-tracking-assignments changes selective scheduling");
|
"var-tracking-assignments changes selective scheduling");
|
||||||
|
|
||||||
|
if (debug_nonbind_markers_p == AUTODETECT_VALUE)
|
||||||
|
debug_nonbind_markers_p = optimize && debug_info_level >= DINFO_LEVEL_NORMAL
|
||||||
|
&& (write_symbols == DWARF2_DEBUG || write_symbols == VMS_AND_DWARF2_DEBUG);
|
||||||
|
|
||||||
if (flag_tree_cselim == AUTODETECT_VALUE)
|
if (flag_tree_cselim == AUTODETECT_VALUE)
|
||||||
{
|
{
|
||||||
if (HAVE_conditional_move)
|
if (HAVE_conditional_move)
|
||||||
|
|
|
||||||
|
|
@ -1124,7 +1124,7 @@ extern void omp_clause_range_check_failed (const_tree, const char *, int,
|
||||||
((int)TREE_INT_CST_LOW (VL_EXP_CHECK (NODE)->exp.operands[0]))
|
((int)TREE_INT_CST_LOW (VL_EXP_CHECK (NODE)->exp.operands[0]))
|
||||||
|
|
||||||
/* Nonzero if gimple_debug_nonbind_marker_p() may possibly hold. */
|
/* Nonzero if gimple_debug_nonbind_marker_p() may possibly hold. */
|
||||||
#define MAY_HAVE_DEBUG_MARKER_STMTS 0 /* debug_nonbind_markers_p */
|
#define MAY_HAVE_DEBUG_MARKER_STMTS debug_nonbind_markers_p
|
||||||
/* Nonzero if gimple_debug_bind_p() (and thus
|
/* Nonzero if gimple_debug_bind_p() (and thus
|
||||||
gimple_debug_source_bind_p()) may possibly hold. */
|
gimple_debug_source_bind_p()) may possibly hold. */
|
||||||
#define MAY_HAVE_DEBUG_BIND_STMTS flag_var_tracking_assignments
|
#define MAY_HAVE_DEBUG_BIND_STMTS flag_var_tracking_assignments
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue