aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2018-11-01 01:23:08 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2018-11-01 01:23:08 +0000
commitf4baf89f7c7cef908c23081f35b3f9fc226c0d12 (patch)
treea7962616c7cc7c1826eff04a8931a5fbc1eb2986
parent8ff3295bc7c28972f06a7743e005599b82aacea9 (diff)
downloadgcc-f4baf89f7c7cef908c23081f35b3f9fc226c0d12.zip
gcc-f4baf89f7c7cef908c23081f35b3f9fc226c0d12.tar.gz
gcc-f4baf89f7c7cef908c23081f35b3f9fc226c0d12.tar.bz2
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
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/doc/invoke.texi3
-rw-r--r--gcc/opts.c2
3 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 56e802e..234457a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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):
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 284594d..e290128 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -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
diff --git a/gcc/opts.c b/gcc/opts.c
index 3b61e17..34c283d 100644
--- a/gcc/opts.c
+++ b/gcc/opts.c
@@ -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 },