Hello world,

after finding myself debug a PR where showing all the attributes
of a symbol would have helped enormously (which I realized only
afterwards), I went ahead and added most of the flags to show_attr,
in the hope that this will help all of us debugging some murky corners
of the compiler where attributes are not what they should be.

If you see anything that is still missing, please freel free
to add.

Committed as obvious (no user impact) after testing that
the compiler still compiles :-)

Regards

        Thomas

2020-04-20  Thomas Koenig  <tkoe...@gcc.gnu.org>

        * dump-parse-tree.c (show_attr): Add numerous flags, some cleanup.
diff --git a/gcc/fortran/dump-parse-tree.c b/gcc/fortran/dump-parse-tree.c
index d324bfd83c0..f32330685e7 100644
--- a/gcc/fortran/dump-parse-tree.c
+++ b/gcc/fortran/dump-parse-tree.c
@@ -735,7 +735,7 @@ show_attr (symbol_attribute *attr, const char * module)
   if (attr->flavor != FL_UNKNOWN)
     {
       if (attr->flavor == FL_DERIVED && attr->pdt_template)
-       fputs (" (PDT template", dumpfile);
+       fputs (" (PDT-TEMPLATE", dumpfile);
       else
     fprintf (dumpfile, "(%s ", gfc_code2string (flavors, attr->flavor));
     }
@@ -770,6 +770,12 @@ show_attr (symbol_attribute *attr, const char * module)
     fputs (" LEN", dumpfile);
   if (attr->pointer)
     fputs (" POINTER", dumpfile);
+  if (attr->subref_array_pointer)
+    fputs (" SUBREF-ARRAY-POINTER", dumpfile);
+  if (attr->cray_pointer)
+    fputs (" CRAY-POINTER", dumpfile);
+  if (attr->cray_pointee)
+    fputs (" CRAY-POINTEE", dumpfile);
   if (attr->is_protected)
     fputs (" PROTECTED", dumpfile);
   if (attr->value)
@@ -791,6 +797,10 @@ show_attr (symbol_attribute *attr, const char * module)
     fputs (" RESULT", dumpfile);
   if (attr->entry)
     fputs (" ENTRY", dumpfile);
+  if (attr->entry_master)
+    fputs (" ENTRY-MASTER", dumpfile);
+  if (attr->mixed_entry_master)
+    fputs (" MIXED-ENTRY-MASTER", dumpfile);
   if (attr->is_bind_c)
     fputs (" BIND(C)", dumpfile);
 
@@ -819,15 +829,80 @@ show_attr (symbol_attribute *attr, const char * module)
 
   if (attr->sequence)
     fputs (" SEQUENCE", dumpfile);
+  if (attr->alloc_comp)
+    fputs (" ALLOC-COMP", dumpfile);
+  if (attr->pointer_comp)
+    fputs (" POINTER-COMP", dumpfile);
+  if (attr->proc_pointer_comp)
+    fputs (" PROC-POINTER-COMP", dumpfile);
+  if (attr->private_comp)
+    fputs (" PRIVATE-COMP", dumpfile);
+  if (attr->zero_comp)
+    fputs (" ZERO-COMP", dumpfile);
+  if (attr->coarray_comp)
+    fputs (" COARRAY-COMP", dumpfile);
+  if (attr->lock_comp)
+    fputs (" LOCK-COMP", dumpfile);
+  if (attr->event_comp)
+    fputs (" EVENT-COMP", dumpfile);
+  if (attr->defined_assign_comp)
+    fputs (" DEFINED-ASSIGNED-COMP", dumpfile);
+  if (attr->unlimited_polymorphic)
+    fputs (" UNLIMITED-POLYMORPHIC", dumpfile);
+  if (attr->has_dtio_procs)
+    fputs (" HAS-DTIO-PROCS", dumpfile);
+  if (attr->caf_token)
+    fputs (" CAF-TOKEN", dumpfile);
+  if (attr->select_type_temporary)
+    fputs (" SELECT-TYPE-TEMPORARY", dumpfile);
+  if (attr->associate_var)
+    fputs (" ASSOCIATE-VAR", dumpfile);
+  if (attr->pdt_kind)
+    fputs (" PDT-KIND", dumpfile);
+  if (attr->pdt_len)
+    fputs (" PDT-LEN", dumpfile);
+  if (attr->pdt_type)
+    fputs (" PDT-TYPE", dumpfile);
+  if (attr->pdt_array)
+    fputs (" PDT-ARRAY", dumpfile);
+  if (attr->pdt_string)
+    fputs (" PDT-STRING", dumpfile);
+  if (attr->omp_udr_artificial_var)
+    fputs (" OMP-UDT-ARTIFICIAL-VAR", dumpfile);
+  if (attr->omp_declare_target)
+    fputs (" OMP-DECLARE-TARGET", dumpfile);
+  if (attr->omp_declare_target_link)
+    fputs (" OMP-DECLARE-TARGET-LINK", dumpfile);
   if (attr->elemental)
     fputs (" ELEMENTAL", dumpfile);
   if (attr->pure)
     fputs (" PURE", dumpfile);
   if (attr->implicit_pure)
-    fputs (" IMPLICIT_PURE", dumpfile);
+    fputs (" IMPLICIT-PURE", dumpfile);
   if (attr->recursive)
     fputs (" RECURSIVE", dumpfile);
-
+  if (attr->unmaskable)
+    fputs (" UNMASKABKE", dumpfile);
+  if (attr->masked)
+    fputs (" MASKED", dumpfile);
+  if (attr->contained)
+    fputs (" CONTAINED", dumpfile);
+  if (attr->mod_proc)
+    fputs (" MOD-PROC", dumpfile);
+  if (attr->module_procedure)
+    fputs (" MODULE-PROCEDURE", dumpfile);
+  if (attr->public_used)
+    fputs (" PUBLIC_USED", dumpfile);
+  if (attr->array_outer_dependency)
+    fputs (" ARRAY-OUTER-DEPENDENCY", dumpfile);
+  if (attr->noreturn)
+    fputs (" NORETURN", dumpfile);
+  if (attr->always_explicit)
+    fputs (" ALWAYS-EXPLICIT", dumpfile);
+  if (attr->is_main_program)
+    fputs (" IS-MAIN-PROGRAM", dumpfile);
+
+  /* FIXME: Still missing are oacc_routine_lop and ext_attr.  */
   fputc (')', dumpfile);
 }
 

Reply via email to