[PATCH] New flag: -fgraphite-dump-cloog.

Sebastian Pop sebpop@gmail.com
Mon Sep 20 19:34:00 GMT 2010


On Mon, Sep 20, 2010 at 13:57, Andreas Simbürger
<simbuerg@googlemail.com> wrote:
> Introduce a new flag: -fgraphite-dump-cloog. If enabled, graphite
> dumps each SCoP into a CLooG input file for further debugging.
> The naming follows the naming scheme of -fgraphite-write:
>  <basename>.<scopnumber>.cloog
>
> The file is dumped into the current working directory.
>
> 2010-09-16  Andreas Simbuerger  <simbuerg@fim.uni-passau.de>
>
>        * common.opt (fgraphite-dump-cloog): New flag.
>        * doc/invoke.texi (-fgraphite-dump-cloog): Documented.
>        * graphite-clast-to-gimple.c (init_cloog_input_file): New.
>        (build_cloog_prog): Dump CLooG input file when
>        flag_graphite_dump_cloog is set.

Thanks.  I will commit this to the graphite branch.

Sebastian

> ---
>  gcc/ChangeLog.graphite         |    8 ++++++++
>  gcc/common.opt                 |    5 +++++
>  gcc/doc/invoke.texi            |    8 ++++++++
>  gcc/graphite-clast-to-gimple.c |   35 +++++++++++++++++++++++++++++++++++
>  4 files changed, 56 insertions(+), 0 deletions(-)
>
> diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite
> index f7fca3a..4a703bf 100644
> --- a/gcc/ChangeLog.graphite
> +++ b/gcc/ChangeLog.graphite
> @@ -1,3 +1,11 @@
> +2010-09-16  Andreas Simbuerger  <simbuerg@fim.uni-passau.de>
> +
> +       * common.opt (fgraphite-dump-cloog): New flag.
> +       * doc/invoke.texi (-fgraphite-dump-cloog): Documented.
> +       * graphite-clast-to-gimple.c (init_cloog_input_file): New.
> +       (build_cloog_prog): Dump CLooG input file when
> +       flag_graphite_dump_cloog is set.
> +
>  2010-09-09  Sebastian Pop  <sebastian.pop@amd.com>
>
>        * graphite-poly.c (pbb_number_of_iterations_at_time): Only iterate
> diff --git a/gcc/common.opt b/gcc/common.opt
> index 60de165..fea545c 100644
> --- a/gcc/common.opt
> +++ b/gcc/common.opt
> @@ -683,6 +683,11 @@ fgraphite-read
>  Common Report Var(flag_graphite_read) Optimization
>  Read Graphite transformation file
>
> +; This option is not documented yet as it is for debugging only.
> +fgraphite-dump-cloog
> +Common Report Var(flag_graphite_dump_cloog) Optimization
> +Write CLooG compatible input file
> +
>  ; This option is not documented as it will be removed
>  floop-parallelize-all
>  Common Report Var(flag_loop_parallelize_all) Optimization
> diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
> index 61b1d45..a70a084 100644
> --- a/gcc/doc/invoke.texi
> +++ b/gcc/doc/invoke.texi
> @@ -311,6 +311,7 @@ Objective-C and Objective-C++ Dialects}.
>  -feliminate-unused-debug-symbols -femit-class-debug-always @gol
>  -fenable-icf-debug @gol
>  -fgraphite-read -fgraphite-write @gol
> +-fgraphite-dump-cloog @gol
>  -fmem-report -fpre-ipa-mem-report -fpost-ipa-mem-report -fprofile-arcs @gol
>  -frandom-seed=@var{string} -fsched-verbose=@var{n} @gol
>  -fsel-sched-verbose -fsel-sched-dump-cfg -fsel-sched-pipelining-verbose @gol
> @@ -6934,6 +6935,13 @@ program is described in a separate file.  For a program @code{file.c}
>  that has 3 scops, the dumped files are named @code{file.0.graphite},
>  @code{file.1.graphite}, and @code{file.2.graphite}.
>
> +@item -fgraphite-dump-cloog
> +@opindex fgraphite-dump-cloog
> +Enable graphite to dump a cloog input file for each scop.  Each scop in
> +the program is stored in a separate file.  For a program @code{file.c}
> +that has 3 scops, the dumped files are named @code{file.0.cloog},
> +@code{file.1.cloog} and @code{file.2.graphite}.
> +
>  @item -floop-flatten
>  @opindex floop-flatten
>  Removes the loop nesting structure: transforms the loop nest into a
> diff --git a/gcc/graphite-clast-to-gimple.c b/gcc/graphite-clast-to-gimple.c
> index 6899c78..14e4f07 100644
> --- a/gcc/graphite-clast-to-gimple.c
> +++ b/gcc/graphite-clast-to-gimple.c
> @@ -1217,6 +1217,31 @@ initialize_cloog_names (scop_p scop, CloogProgram *prog)
>                              scattering);
>  }
>
> +/* Initialize a CLooG input file.  */
> +
> +static FILE *
> +init_cloog_input_file (int scop_number)
> +{
> +  FILE *graphite_out_file;
> +  int len = strlen (dump_base_name);
> +  char *dumpname = XNEWVEC (char, len + 25);
> +  char *s_scop_number = XNEWVEC (char, 15);
> +
> +  memcpy (dumpname, dump_base_name, len + 1);
> +  strip_off_ending (dumpname, len);
> +  sprintf (s_scop_number, ".%d", scop_number);
> +  strcat (dumpname, s_scop_number);
> +  strcat (dumpname, ".cloog");
> +  graphite_out_file = fopen (dumpname, "w+b");
> +
> +  if (graphite_out_file == 0)
> +    fatal_error ("can%'t open %s for writing: %m", dumpname);
> +
> +  free (dumpname);
> +
> +  return graphite_out_file;
> +}
> +
>  /* Build cloog program for SCoP.  */
>
>  static void
> @@ -1307,6 +1332,16 @@ build_cloog_prog (scop_p scop, CloogProgram *prog,
>   /* Extract scalar dimensions to simplify the code generation problem.  */
>   cloog_program_extract_scalars (prog, scattering, options);
>
> +  /* Dump a .cloog input file, if requested.  */
> +  if (flag_graphite_dump_cloog)
> +    {
> +      static size_t file_scop_number = 0;
> +      FILE *cloog_file = init_cloog_input_file (file_scop_number);
> +
> +      cloog_program_dump_cloog (cloog_file, prog, scattering);
> +      ++file_scop_number;
> +    }
> +
>   /* Apply scattering.  */
>   cloog_program_scatter (prog, scattering, options);
>   free_scattering (scattering);
> --
> 1.7.2.3
>
>



More information about the Gcc-patches mailing list