The following provides opt-info for autopar and graphite.  That should
help to track down miscompilations by them given they usually do not
apply in many places (like for hunting down PR79321).

I've used the loop location of the loop containing the SCOP
which is probably reasonable for an option like -floop-nest-optimize.
There may be corner cases where this is confusing though (like when
that loop is the root of the loop tree and thus the SCOP covers
more than one outermost loop or when the SCOP covers adjacent loops
and the entry enters the first loop).  But ISTR we restrict SCOP
building / merging so that this doesn't happen (too often).

Bootstrap / regtest in progress on x86_64-unknown-linux-gnu (just to
check if any dump scanning is affected).

Richard.

2017-02-01  Richard Biener  <rguent...@suse.de>

        * graphite.c: Include tree-vectorizer.h for find_loop_location.
        (graphite_transform_loops): Provide opt-info for optimized nests.
        * tree-parloop.c (parallelize_loops): Provide opt-info for
        parallelized loops.

Index: gcc/graphite.c
===================================================================
--- gcc/graphite.c      (revision 245022)
+++ gcc/graphite.c      (working copy)
@@ -52,6 +52,7 @@ along with GCC; see the file COPYING3.
 #include "dbgcnt.h"
 #include "tree-parloops.h"
 #include "tree-cfgcleanup.h"
+#include "tree-vectorizer.h"
 #include "graphite.h"
 
 /* Print global statistics to FILE.  */
@@ -328,6 +329,11 @@ graphite_transform_loops (void)
           and could be in an inconsistent state.  */
        if (!graphite_regenerate_ast_isl (scop))
          break;
+
+       location_t loc = find_loop_location
+                          (scop->scop_info->region.entry->dest->loop_father);
+       dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, loc,
+                        "loop nest optimized\n");
       }
 
   free_scops (scops);
Index: gcc/tree-parloops.c
===================================================================
--- gcc/tree-parloops.c (revision 245022)
+++ gcc/tree-parloops.c (working copy)
@@ -3322,17 +3322,14 @@ parallelize_loops (bool oacc_kernels_p)
 
       changed = true;
       skip_loop = loop->inner;
-      if (dump_file && (dump_flags & TDF_DETAILS))
-      {
-       if (loop->inner)
-         fprintf (dump_file, "parallelizing outer loop 
%d\n",loop->header->index);
-       else
-         fprintf (dump_file, "parallelizing inner loop 
%d\n",loop->header->index);
-       loop_loc = find_loop_location (loop);
-       if (loop_loc != UNKNOWN_LOCATION)
-         fprintf (dump_file, "\nloop at %s:%d: ",
-                  LOCATION_FILE (loop_loc), LOCATION_LINE (loop_loc));
-      }
+
+      loop_loc = find_loop_location (loop);
+      if (loop->inner)
+       dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, loop_loc,
+                        "parallelizing outer loop %d\n", loop->num);
+      else
+       dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, loop_loc,
+                        "parallelizing inner loop %d\n", loop->num);
 
       gen_parallel_loop (loop, &reduction_list,
                         n_threads, &niter_desc, oacc_kernels_p);

Reply via email to