diff options
Diffstat (limited to 'gcc/fortran')
-rw-r--r-- | gcc/fortran/dump-parse-tree.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/gcc/fortran/dump-parse-tree.c b/gcc/fortran/dump-parse-tree.c index b3fa178..440627a 100644 --- a/gcc/fortran/dump-parse-tree.c +++ b/gcc/fortran/dump-parse-tree.c @@ -361,6 +361,31 @@ show_array_ref (gfc_array_ref * ar) } fputc (')', dumpfile); + if (ar->codimen == 0) + return; + + /* Show coarray part of the reference, if any. */ + fputc ('[',dumpfile); + for (i = ar->dimen; i < ar->dimen + ar->codimen; i++) + { + if (ar->dimen_type[i] == DIMEN_STAR) + fputc('*',dumpfile); + else if (ar->dimen_type[i] == DIMEN_THIS_IMAGE) + fputs("THIS_IMAGE", dumpfile); + else + { + show_expr (ar->start[i]); + if (ar->end[i]) + { + fputc(':', dumpfile); + show_expr (ar->end[i]); + } + } + if (i != ar->dimen + ar->codimen - 1) + fputs (" , ", dumpfile); + + } + fputc (']',dumpfile); } @@ -3635,3 +3660,14 @@ gfc_dump_global_symbols (FILE *f) else gfc_traverse_gsymbol (gfc_gsym_root, show_global_symbol, (void *) f); } + +/* Show an array ref. */ + +void debug (gfc_array_ref *ar) +{ + FILE *tmp = dumpfile; + dumpfile = stderr; + show_array_ref (ar); + fputc ('\n', dumpfile); + dumpfile = tmp; +} |