gOlogy: skip dbranch at -Og

Delayed slot filling moves insns without any regard to variable
location notes, causing the location information in them to become
incorrect.

Fixing that appears to be quite difficult, but filling delay slots is
hardly an essential optimization to run at -Og, so if the user wants
to privilege debuggability, skip delay slot filling.

for  gcc/ChangeLog

	* opts.c (default_options_table): Do not enable
	OPT_fdelayed_branch at -Og.
	* doc/invoke.texi (-fdelayed-branch): Document it.

From-SVN: r265708
This commit is contained in:
Alexandre Oliva 2018-11-01 01:23:08 +00:00 committed by Alexandre Oliva
parent 8ff3295bc7
commit f4baf89f7c
3 changed files with 9 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2018-10-31 Alexandre Oliva <aoliva@redhat.com>
* opts.c (default_options_table): Do not enable
OPT_fdelayed_branch at -Og.
* doc/invoke.texi (-fdelayed-branch): Document it.
2018-10-31 Richard Henderson <richard.henderson@linaro.org>
* optabs-libfuncs.c (build_libfunc_function_visibility):

View File

@ -8595,7 +8595,8 @@ If supported for the target machine, attempt to reorder instructions
to exploit instruction slots available after delayed branch
instructions.
Enabled at levels @option{-O}, @option{-O2}, @option{-O3}, @option{-Os}.
Enabled at levels @option{-O}, @option{-O2}, @option{-O3}, @option{-Os},
but not at @option{-Og}.
@item -fschedule-insns
@opindex fschedule-insns

View File

@ -442,7 +442,7 @@ static const struct default_options default_options_table[] =
/* -O1 optimizations. */
{ OPT_LEVELS_1_PLUS, OPT_fdefer_pop, NULL, 1 },
#if DELAY_SLOTS
{ OPT_LEVELS_1_PLUS, OPT_fdelayed_branch, NULL, 1 },
{ OPT_LEVELS_1_PLUS_NOT_DEBUG, OPT_fdelayed_branch, NULL, 1 },
#endif
{ OPT_LEVELS_1_PLUS, OPT_fguess_branch_probability, NULL, 1 },
{ OPT_LEVELS_1_PLUS, OPT_fcprop_registers, NULL, 1 },