Hello world,
I have committed a few small fixes for -fdump-fortran-original and
friends.
Since there was interest on c.l.f from somebdoy who actually wanted to
use the dump for something useful, I have also clarified in the docs
that this is something that is not guaranteed to work between releases.
Regards
Thomas
2017-10-08 Thomas Koenig <[email protected]>
* dump_prase_tree (show_symbol): Output list of variables in
NAMELIST.
(show_code_node): Add new line for ELSE and END DO for DO
CONCURRENT.
* invoke.texi: Document that the output of
-fdump-fortran-original, -fdump-fortran-optimized and
-fdump-parse-tree is unsable and may lead to ICEs.
Index: dump-parse-tree.c
===================================================================
--- dump-parse-tree.c (Revision 253381)
+++ dump-parse-tree.c (Arbeitskopie)
@@ -967,8 +967,17 @@ show_symbol (gfc_symbol *sym)
show_indent ();
fputs ("PDT parameters", dumpfile);
show_actual_arglist (sym->param_list);
+ }
+ if (sym->attr.flavor == FL_NAMELIST)
+ {
+ gfc_namelist *nl;
+ show_indent ();
+ fputs ("variables : ", dumpfile);
+ for (nl = sym->namelist; nl; nl = nl->next)
+ fprintf (dumpfile, " %s",nl->sym->name);
}
+
--show_level;
}
@@ -1979,8 +1988,8 @@ show_code_node (int level, gfc_code *c)
d = d->block;
for (; d; d = d->block)
{
+ fputs("\n", dumpfile);
code_indent (level, 0);
-
if (d->expr1 == NULL)
fputs ("ELSE", dumpfile);
else
@@ -2170,9 +2179,12 @@ show_code_node (int level, gfc_code *c)
fputc (',', dumpfile);
}
show_expr (c->expr1);
+ ++show_level;
show_code (level + 1, c->block->next);
+ --show_level;
code_indent (level, c->label1);
+ show_indent ();
fputs ("END DO", dumpfile);
break;
Index: invoke.texi
===================================================================
--- invoke.texi (Revision 253377)
+++ invoke.texi (Arbeitskopie)
@@ -1120,20 +1120,28 @@ either your program or the GNU Fortran compiler.
@item -fdump-fortran-original
@opindex @code{fdump-fortran-original}
Output the internal parse tree after translating the source program
-into internal representation. Only really useful for debugging the
-GNU Fortran compiler itself.
+into internal representation. This option is mostly useful for
+debugging the GNU Fortran compiler itself. The output generated by
+this option might change between releases. This option may also
+generate internal compiler errors for features which have only
+recently been added.
@item -fdump-fortran-optimized
@opindex @code{fdump-fortran-optimized}
-Output the parse tree after front-end optimization. Only really
-useful for debugging the GNU Fortran compiler itself.
+Output the parse tree after front-end optimization. Mostly useful for
+debugging the GNU Fortran compiler itself. The output generated by
+this option might change between releases. This option may also
+generate internal compiler errors for features which have only
+recently been added.
@item -fdump-parse-tree
@opindex @code{fdump-parse-tree}
Output the internal parse tree after translating the source program
-into internal representation. Only really useful for debugging the
-GNU Fortran compiler itself. This option is deprecated; use
-@code{-fdump-fortran-original} instead.
+into internal representation. Mostly useful for debugging the GNU
+Fortran compiler itself. The output generated by this option might
+change between releases. This option may also generate internal
+compiler errors for features which have only recently been added. This
+option is deprecated; use @code{-fdump-fortran-original} instead.
@item -ffpe-trap=@var{list}
@opindex @code{ffpe-trap=}@var{list}