Hi,
This patch adds new option -Wmissed-loop-optimizations warning on loops whose
counter may overflow, as well as makes -Wunsafe-loop-optimizations an alias to
the new option.
Bootstrap and test on x86_64 ongoing. Is it OK?
Thanks,
bin
2016-07-20 Bin Cheng <bin.ch...@arm.com>
* common.opt (Wmissed-loop-optimizations): New option.
(Wunsafe-loop-optimizations): Alias to Wmissed-loop-optimizations.
* doc/invoke.texi (Wmissed-loop-optimizations): Ditto.
(Wunsafe-loop-optimizations): Alias to Wmissed-loop-optimizations.
* tree-ssa-loop-niter.c (number_of_iterations_exit): Use option
Wmissed-loop-optimizations.
diff --git a/gcc/common.opt b/gcc/common.opt
index 8a292ed..3d62657 100644
--- a/gcc/common.opt
+++ b/gcc/common.opt
@@ -625,7 +625,12 @@ Common Var(warn_null_dereference) Warning
Warn if dereferencing a NULL pointer may lead to erroneous or undefined
behavior.
Wunsafe-loop-optimizations
-Common Var(warn_unsafe_loop_optimizations) Warning
+Common Alias(Wmissed-loop-optimizations)
+Warn if the loop cannot be optimized due to nontrivial assumptions.
+Same as -Wmissed-loop-optimizations.
+
+Wmissed-loop-optimizations
+Common Var(warn_missed_loop_optimizations) Warning
Warn if the loop cannot be optimized due to nontrivial assumptions.
Wmissing-noreturn
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 3041c18..5a2bb09 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -302,8 +302,8 @@ Objective-C and Objective-C++ Dialects}.
-Wswitch -Wswitch-bool -Wswitch-default -Wswitch-enum @gol
-Wswitch-unreachable -Wsync-nand @gol
-Wsystem-headers -Wtautological-compare -Wtrampolines -Wtrigraphs @gol
--Wtype-limits -Wundef @gol
--Wuninitialized -Wunknown-pragmas -Wunsafe-loop-optimizations @gol
+-Wtype-limits -Wundef -Wuninitialized -Wunknown-pragmas @gol
+-Wmissed-loop-optimizations -Wunsafe-loop-optimizations @gol
-Wunsuffixed-float-constants -Wunused -Wunused-function @gol
-Wunused-label -Wunused-local-typedefs -Wunused-parameter @gol
-Wno-unused-result -Wunused-value @gol -Wunused-variable @gol
@@ -4990,9 +4990,14 @@ If the stack usage is (partly) dynamic and not bounded,
it's:
@opindex Wunsafe-loop-optimizations
@opindex Wno-unsafe-loop-optimizations
Warn if the loop cannot be optimized because the compiler cannot
-assume anything on the bounds of the loop indices. With
-@option{-funsafe-loop-optimizations} warn if the compiler makes
-such assumptions.
+assume anything on the bounds of the loop indices. Same as
+@option{-Wmissed-loop-optimizations}.
+
+@item -Wmissed-loop-optimizations
+@opindex Wmissed-loop-optimizations
+@opindex Wno-missed-loop-optimizations
+Warn if the loop cannot be optimized because the compiler cannot
+assume anything on the bounds of the loop indices.
@item -Wno-pedantic-ms-format @r{(MinGW targets only)}
@opindex Wno-pedantic-ms-format
diff --git a/gcc/tree-ssa-loop-niter.c b/gcc/tree-ssa-loop-niter.c
index 2061eafa..38b5552 100644
--- a/gcc/tree-ssa-loop-niter.c
+++ b/gcc/tree-ssa-loop-niter.c
@@ -2333,7 +2333,7 @@ number_of_iterations_exit (struct loop *loop, edge exit,
wording = N_("missed loop optimization, the loop counter may overflow");
warning_at ((LOCATION_LINE (loc) > 0) ? loc : input_location,
- OPT_Wunsafe_loop_optimizations, "%s", gettext (wording));
+ OPT_Wmissed_loop_optimizations, "%s", gettext (wording));
}
return false;