tree-vect-stmts.c (vect_is_simple_use): Consolidate dumping, always set *dt.
authorRichard Biener <rguenther@suse.de>
Tue, 3 Jul 2018 09:39:59 +0000 (09:39 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Tue, 3 Jul 2018 09:39:59 +0000 (09:39 +0000)
2018-07-03  Richard Biener  <rguenther@suse.de>

* tree-vect-stmts.c (vect_is_simple_use): Consolidate dumping,
always set *dt.  Dump vectype in vectype overload.
* dumpfile.h (dump_gimple_expr): New function.
(dump_gimple_expr_loc): Likewise.
* dumpfile.c (dump_gimple_expr): New function.
(dump_gimple_expr_loc): Likewise.

From-SVN: r262330

gcc/ChangeLog
gcc/dumpfile.c
gcc/dumpfile.h
gcc/tree-vect-stmts.c

index a1f2d351983b540f6973f9025d0079636f77b493..99226d5861fe1537083498eb580e592f9c181952 100644 (file)
@@ -1,3 +1,12 @@
+2018-07-03  Richard Biener  <rguenther@suse.de>
+
+       * tree-vect-stmts.c (vect_is_simple_use): Consolidate dumping,
+       always set *dt.  Dump vectype in vectype overload.
+       * dumpfile.h (dump_gimple_expr): New function.
+       (dump_gimple_expr_loc): Likewise.
+       * dumpfile.c (dump_gimple_expr): New function.
+       (dump_gimple_expr_loc): Likewise.
+
 2018-07-02  Jeff Law  <law@redhat.com>
 
        * config/h8300/h8300.md (movqi_h8300, movqi_h8300hs): Consolidate
index 5f69f9bd64612fc29fe6c19550f2430c048d5519..3296299e86b746d9a5c85255a355d60c83e906b3 100644 (file)
@@ -492,6 +492,42 @@ dump_gimple_stmt_loc (dump_flags_t dump_kind, const dump_location_t &loc,
     }
 }
 
+/* Dump gimple statement GS with SPC indentation spaces and
+   EXTRA_DUMP_FLAGS on the dump streams if DUMP_KIND is enabled.
+   Do not terminate with a newline or semicolon.  */
+
+void
+dump_gimple_expr (dump_flags_t dump_kind, dump_flags_t extra_dump_flags,
+                 gimple *gs, int spc)
+{
+  if (dump_file && (dump_kind & pflags))
+    print_gimple_expr (dump_file, gs, spc, dump_flags | extra_dump_flags);
+
+  if (alt_dump_file && (dump_kind & alt_flags))
+    print_gimple_expr (alt_dump_file, gs, spc, dump_flags | extra_dump_flags);
+}
+
+/* Similar to dump_gimple_expr, except additionally print source location.  */
+
+void
+dump_gimple_expr_loc (dump_flags_t dump_kind, const dump_location_t &loc,
+                     dump_flags_t extra_dump_flags, gimple *gs, int spc)
+{
+  location_t srcloc = loc.get_location_t ();
+  if (dump_file && (dump_kind & pflags))
+    {
+      dump_loc (dump_kind, dump_file, srcloc);
+      print_gimple_expr (dump_file, gs, spc, dump_flags | extra_dump_flags);
+    }
+
+  if (alt_dump_file && (dump_kind & alt_flags))
+    {
+      dump_loc (dump_kind, alt_dump_file, srcloc);
+      print_gimple_expr (alt_dump_file, gs, spc, dump_flags | extra_dump_flags);
+    }
+}
+
+
 /* Dump expression tree T using EXTRA_DUMP_FLAGS on dump streams if
    DUMP_KIND is enabled.  */
 
index 0e588a6dac6a85cb8bb51a5f42fefa526cdac402..a4172419c1dc5b8679a3c2146af3620d26fffd87 100644 (file)
@@ -431,6 +431,9 @@ extern void dump_generic_expr (dump_flags_t, dump_flags_t, tree);
 extern void dump_gimple_stmt_loc (dump_flags_t, const dump_location_t &,
                                  dump_flags_t, gimple *, int);
 extern void dump_gimple_stmt (dump_flags_t, dump_flags_t, gimple *, int);
+extern void dump_gimple_expr_loc (dump_flags_t, const dump_location_t &,
+                                 dump_flags_t, gimple *, int);
+extern void dump_gimple_expr (dump_flags_t, dump_flags_t, gimple *, int);
 extern void print_combine_total_stats (void);
 extern bool enable_rtl_dump_file (void);
 
index ab8cc8049a427b74bc862fdaf95ce5d4ca90d4de..ae62fc36401ac7a6c822326693f114ba3458bb22 100644 (file)
@@ -10036,61 +10036,53 @@ vect_is_simple_use (tree operand, vec_info *vinfo, enum vect_def_type *dt,
     {
       dump_printf_loc (MSG_NOTE, vect_location,
                        "vect_is_simple_use: operand ");
-      dump_generic_expr (MSG_NOTE, TDF_SLIM, operand);
-      dump_printf (MSG_NOTE, "\n");
+      if (TREE_CODE (operand) == SSA_NAME
+         && !SSA_NAME_IS_DEFAULT_DEF (operand))
+       dump_gimple_expr (MSG_NOTE, TDF_SLIM, SSA_NAME_DEF_STMT (operand), 0);
+      else
+       dump_generic_expr (MSG_NOTE, TDF_SLIM, operand);
     }
 
   if (CONSTANT_CLASS_P (operand))
-    {
-      *dt = vect_constant_def;
-      return true;
-    }
-
-  if (is_gimple_min_invariant (operand))
-    {
-      *dt = vect_external_def;
-      return true;
-    }
-
-  if (TREE_CODE (operand) != SSA_NAME)
-    {
-      if (dump_enabled_p ())
-       dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
-                        "not ssa-name.\n");
-      return false;
-    }
-
-  if (SSA_NAME_IS_DEFAULT_DEF (operand))
-    {
-      *dt = vect_external_def;
-      return true;
-    }
-
-  gimple *def_stmt = SSA_NAME_DEF_STMT (operand);
-  if (dump_enabled_p ())
-    {
-      dump_printf_loc (MSG_NOTE, vect_location, "def_stmt: ");
-      dump_gimple_stmt (MSG_NOTE, TDF_SLIM, def_stmt, 0);
-    }
-
-  if (! vect_stmt_in_region_p (vinfo, def_stmt))
+    *dt = vect_constant_def;
+  else if (is_gimple_min_invariant (operand))
+    *dt = vect_external_def;
+  else if (TREE_CODE (operand) != SSA_NAME)
+    *dt = vect_unknown_def_type;
+  else if (SSA_NAME_IS_DEFAULT_DEF (operand))
     *dt = vect_external_def;
   else
     {
-      stmt_vec_info stmt_vinfo = vinfo_for_stmt (def_stmt);
-      if (STMT_VINFO_IN_PATTERN_P (stmt_vinfo))
+      gimple *def_stmt = SSA_NAME_DEF_STMT (operand);
+      if (! vect_stmt_in_region_p (vinfo, def_stmt))
+       *dt = vect_external_def;
+      else
        {
-         def_stmt = STMT_VINFO_RELATED_STMT (stmt_vinfo);
-         stmt_vinfo = vinfo_for_stmt (def_stmt);
+         stmt_vec_info stmt_vinfo = vinfo_for_stmt (def_stmt);
+         if (STMT_VINFO_IN_PATTERN_P (stmt_vinfo))
+           {
+             def_stmt = STMT_VINFO_RELATED_STMT (stmt_vinfo);
+             stmt_vinfo = vinfo_for_stmt (def_stmt);
+           }
+         switch (gimple_code (def_stmt))
+           {
+           case GIMPLE_PHI:
+           case GIMPLE_ASSIGN:
+           case GIMPLE_CALL:
+             *dt = STMT_VINFO_DEF_TYPE (stmt_vinfo);
+             break;
+           default:
+             *dt = vect_unknown_def_type;
+             break;
+           }
        }
-      *dt = STMT_VINFO_DEF_TYPE (stmt_vinfo);
+      if (def_stmt_out)
+       *def_stmt_out = def_stmt;
     }
-  if (def_stmt_out)
-    *def_stmt_out = def_stmt;
 
   if (dump_enabled_p ())
     {
-      dump_printf_loc (MSG_NOTE, vect_location, "type of def: ");
+      dump_printf (MSG_NOTE, ", type of def: ");
       switch (*dt)
        {
        case vect_uninitialized_def:
@@ -10131,19 +10123,6 @@ vect_is_simple_use (tree operand, vec_info *vinfo, enum vect_def_type *dt,
       return false;
     }
 
-  switch (gimple_code (def_stmt))
-    {
-    case GIMPLE_PHI:
-    case GIMPLE_ASSIGN:
-    case GIMPLE_CALL:
-      break;
-    default:
-      if (dump_enabled_p ())
-        dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
-                         "unsupported defining stmt:\n");
-      return false;
-    }
-
   return true;
 }
 
@@ -10179,6 +10158,13 @@ vect_is_simple_use (tree operand, vec_info *vinfo, enum vect_def_type *dt,
       stmt_vec_info stmt_info = vinfo_for_stmt (def_stmt);
       *vectype = STMT_VINFO_VECTYPE (stmt_info);
       gcc_assert (*vectype != NULL_TREE);
+      if (dump_enabled_p ())
+       {
+         dump_printf_loc (MSG_NOTE, vect_location,
+                          "vect_is_simple_use: vectype ");
+         dump_generic_expr (MSG_NOTE, TDF_SLIM, *vectype);
+         dump_printf (MSG_NOTE, "\n");
+       }
     }
   else if (*dt == vect_uninitialized_def
           || *dt == vect_constant_def