We dump the target hook calls but sofar omit the resulting cost
(which might not be final).  It's still useful info for debugging
a target cost model.

Bootstrapped and tested on x86_64-unknown-linux-gnu, applied.

Richard.

2018-10-08  Richard Biener  <rguent...@suse.de>

        * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
        Open a dump scope.
        * tree-vectorizer.c (dump_stmt_cost): Add cost param and dump it.
        * tree-vectorizer.h (dump_stmt_cost): Adjust.
        (add_stmt_cost): Dump return value of the hook.

Index: gcc/tree-vect-loop.c
===================================================================
--- gcc/tree-vect-loop.c        (revision 264912)
+++ gcc/tree-vect-loop.c        (working copy)
@@ -1072,6 +1072,8 @@ vect_compute_single_scalar_iteration_cos
   int nbbs = loop->num_nodes, factor;
   int innerloop_iters, i;
 
+  DUMP_VECT_SCOPE ("vect_compute_single_scalar_iteration_cost");
+
   /* Gather costs for statements in the scalar loop.  */
 
   /* FORNOW.  */
Index: gcc/tree-vectorizer.c
===================================================================
--- gcc/tree-vectorizer.c       (revision 264912)
+++ gcc/tree-vectorizer.c       (working copy)
@@ -89,7 +89,7 @@ dump_user_location_t vect_location;
 
 void
 dump_stmt_cost (FILE *f, void *data, int count, enum vect_cost_for_stmt kind,
-               stmt_vec_info stmt_info, int misalign,
+               stmt_vec_info stmt_info, int misalign, unsigned cost,
                enum vect_cost_model_location where)
 {
   fprintf (f, "%p ", data);
@@ -159,6 +159,7 @@ dump_stmt_cost (FILE *f, void *data, int
   fprintf (f, "%s ", ks);
   if (kind == unaligned_load || kind == unaligned_store)
     fprintf (f, "(misalign %d) ", misalign);
+  fprintf (f, "costs %u ", cost);
   const char *ws = "unknown";
   switch (where)
     {
Index: gcc/tree-vectorizer.h
===================================================================
--- gcc/tree-vectorizer.h       (revision 264912)
+++ gcc/tree-vectorizer.h       (working copy)
@@ -1199,7 +1199,8 @@ init_cost (struct loop *loop_info)
 }
 
 extern void dump_stmt_cost (FILE *, void *, int, enum vect_cost_for_stmt,
-                           stmt_vec_info, int, enum vect_cost_model_location);
+                           stmt_vec_info, int, unsigned,
+                           enum vect_cost_model_location);
 
 /* Alias targetm.vectorize.add_stmt_cost.  */
 
@@ -1208,10 +1209,12 @@ add_stmt_cost (void *data, int count, en
               stmt_vec_info stmt_info, int misalign,
               enum vect_cost_model_location where)
 {
+  unsigned cost = targetm.vectorize.add_stmt_cost (data, count, kind,
+                                                  stmt_info, misalign, where);
   if (dump_file && (dump_flags & TDF_DETAILS))
-    dump_stmt_cost (dump_file, data, count, kind, stmt_info, misalign, where);
-  return targetm.vectorize.add_stmt_cost (data, count, kind,
-                                         stmt_info, misalign, where);
+    dump_stmt_cost (dump_file, data, count, kind, stmt_info, misalign,
+                   cost, where);
+  return cost;
 }
 
 /* Alias targetm.vectorize.finish_cost.  */

Reply via email to