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;

Reply via email to