]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR middle-end/82123 (spurious -Wformat-overflow warning for converted vars)
authorJeff Law <law@redhat.com>
Tue, 20 Feb 2018 18:52:07 +0000 (11:52 -0700)
committerJeff Law <law@gcc.gnu.org>
Tue, 20 Feb 2018 18:52:07 +0000 (11:52 -0700)
PR middle-end/82123
PR tree-optimization/81592
PR middle-end/79257
* gimple-ssa-sprintf.c: Include alloc-pool.h, vr-values.h and
gimple-ssa-evrp-analyze.h
(class sprintf_dom_walker): Add after_dom_children member function.
Add evrp_range_analyzer member.
(sprintf_dom_walker::before_dom_children): Call into the EVRP
range analyzer as needed.
(sprintf_dom_walker::after_dom_children): New member function.

* gcc.dg/builtin-unreachable-6.c: Turn off VRP.

From-SVN: r257852

gcc/ChangeLog
gcc/gimple-ssa-sprintf.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/builtin-unreachable-6.c

index 748be06d67117a002af76058c7feba15da303d7d..bef9eb1d3ffb35862dd3b7fd8c3c39bddec76b49 100644 (file)
@@ -3,6 +3,13 @@
        PR middle-end/82123
        PR tree-optimization/81592
        PR middle-end/79257
+       * gimple-ssa-sprintf.c: Include alloc-pool.h, vr-values.h and 
+       gimple-ssa-evrp-analyze.h
+       (class sprintf_dom_walker): Add after_dom_children member function.
+       Add evrp_range_analyzer member.
+       (sprintf_dom_walker::before_dom_children): Call into the EVRP
+       range analyzer as needed.
+       (sprintf_dom_walker::after_dom_children): New member function.
        * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::enter): Do nothing
        if not optimizing.
        (evrp_range_analyzer::record_ranges_from_stmt): Likewise.
index a2dd54502e854781ee435df8dd3073325f39f353..545f8337c13c184717de94e98a008347ea55681e 100644 (file)
@@ -80,6 +80,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "substring-locations.h"
 #include "diagnostic.h"
 #include "domwalk.h"
+#include "alloc-pool.h"
+#include "vr-values.h"
+#include "gimple-ssa-evrp-analyze.h"
 
 /* The likely worst case value of MB_LEN_MAX for the target, large enough
    for UTF-8.  Ideally, this would be obtained by a target hook if it were
@@ -121,10 +124,12 @@ class sprintf_dom_walker : public dom_walker
   ~sprintf_dom_walker () {}
 
   edge before_dom_children (basic_block) FINAL OVERRIDE;
+  void after_dom_children (basic_block) FINAL OVERRIDE;
   bool handle_gimple_call (gimple_stmt_iterator *);
 
   struct call_info;
   bool compute_format_length (call_info &, format_result *);
+  class evrp_range_analyzer evrp_range_analyzer;
 };
 
 class pass_sprintf_length : public gimple_opt_pass
@@ -3456,7 +3461,7 @@ parse_directive (sprintf_dom_walker::call_info &info,
 
 bool
 sprintf_dom_walker::compute_format_length (call_info &info,
-                                           format_result *res)
+                                          format_result *res)
 {
   if (dump_file)
     {
@@ -4012,11 +4017,15 @@ sprintf_dom_walker::handle_gimple_call (gimple_stmt_iterator *gsi)
 edge
 sprintf_dom_walker::before_dom_children (basic_block bb)
 {
+  evrp_range_analyzer.enter (bb);
   for (gimple_stmt_iterator si = gsi_start_bb (bb); !gsi_end_p (si); )
     {
       /* Iterate over statements, looking for function calls.  */
       gimple *stmt = gsi_stmt (si);
 
+      /* First record ranges generated by this statement.  */
+      evrp_range_analyzer.record_ranges_from_stmt (stmt, false);
+
       if (is_gimple_call (stmt) && handle_gimple_call (&si))
        /* If handle_gimple_call returns true, the iterator is
           already pointing to the next statement.  */
@@ -4027,6 +4036,12 @@ sprintf_dom_walker::before_dom_children (basic_block bb)
   return NULL;
 }
 
+void
+sprintf_dom_walker::after_dom_children (basic_block bb)
+{
+  evrp_range_analyzer.leave (bb);
+}
+
 /* Execute the pass for function FUN.  */
 
 unsigned int
index d6cedecf44ace889b3e4bdfee0190f2c5c366173..de9cd420e9e4f04486ea87100a34e73392595017 100644 (file)
@@ -1,3 +1,10 @@
+2018-02-20  Jeff Law  <law@redhat.com>
+
+        PR middle-end/82123
+        PR tree-optimization/81592
+        PR middle-end/79257
+       * gcc.dg/builtin-unreachable-6.c: Turn off VRP.
+
 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
 
        PR c++/84488
index 1915dd13f42f13f6415447a882d9cc5840fe0a1e..b0504be89cc75d13c9b1dc203b72c2291a981104 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-fab1 -fno-tree-dominator-opts" } */
+/* { dg-options "-O2 -fdump-tree-fab1 -fno-tree-dominator-opts -fno-tree-vrp" } */
 
 void
 foo (int b, int c)