gOlogy: skip dbranch at -Og
authorAlexandre Oliva <aoliva@redhat.com>
Thu, 1 Nov 2018 01:23:08 +0000 (01:23 +0000)
committerAlexandre Oliva <aoliva@gcc.gnu.org>
Thu, 1 Nov 2018 01:23:08 +0000 (01:23 +0000)
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

gcc/ChangeLog
gcc/doc/invoke.texi
gcc/opts.c

index 56e802ef0afbef91dbb6294f45ee85a99a09a3eb..234457a2584a1df70d3a08a90d857199a25a95cf 100644 (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):
index 284594df010ba2bb0747da4e44159e77aac3b05b..e290128f535f3e6b515bff5a81fae0aa0d1c8baf 100644 (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
index 3b61e17a7ab07b0bff93f6d8f0bdafaf80d7a8e5..34c283dd76557b714d1c4abc1962b5bda537058e 100644 (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 },