OSDN Git Service

* dwarf2out.c (gen_struct_or_union_type_die): Check AGGREGATE_TYPE_P
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 15 Dec 1998 01:48:48 +0000 (01:48 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 15 Dec 1998 01:48:48 +0000 (01:48 +0000)
instead of TREE_CODE_CLASS == 't'.
(gen_type_die): Likewise.
(scope_die_for): Ignore FUNCTION_TYPE "scopes".

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@24319 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/dwarf2out.c

index f56cbc3..4d7e907 100644 (file)
@@ -1,3 +1,10 @@
+Tue Dec 15 01:45:26 1998  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * dwarf2out.c (gen_struct_or_union_type_die): Check AGGREGATE_TYPE_P
+       instead of TREE_CODE_CLASS == 't'.
+       (gen_type_die): Likewise.
+       (scope_die_for): Ignore FUNCTION_TYPE "scopes".
+
 Mon Dec 14 16:23:27 1998  Jim Wilson  <wilson@cygnus.com>
 
        * real.c (endian): Disable last change unless
index 8f99206..3c59c3f 100644 (file)
@@ -7559,7 +7559,7 @@ push_decl_scope (scope)
      subtype.  In such a case, we need to search the decl_scope_table to
      find the parent of this subtype.  */
 
-  if (TREE_CODE_CLASS (TREE_CODE (scope)) == 't')
+  if (AGGREGATE_TYPE_P (scope))
     containing_scope = TYPE_CONTEXT (scope);
   else
     containing_scope = NULL_TREE;
@@ -7611,6 +7611,12 @@ scope_die_for (t, context_die)
   if (containing_scope && TREE_CODE (containing_scope) == NAMESPACE_DECL)
     containing_scope = NULL_TREE;
 
+  /* Ignore function type "scopes" from the C frontend.  They mean that
+     a tagged type is local to a parmlist of a function declarator, but
+     that isn't useful to DWARF.  */
+  if (containing_scope && TREE_CODE (containing_scope) == FUNCTION_TYPE)
+    containing_scope = NULL_TREE;
+
   /* Function-local tags and functions get stuck in limbo until they are
      fixed up by decls_for_scope.  */
   if (context_die == NULL && containing_scope != NULL_TREE
@@ -8838,7 +8844,7 @@ gen_struct_or_union_type_die (type, context_die)
     return;
 
   if (TYPE_CONTEXT (type) != NULL_TREE
-      && TREE_CODE_CLASS (TREE_CODE (TYPE_CONTEXT (type))) == 't')
+      && AGGREGATE_TYPE_P (TYPE_CONTEXT (type)))
     nested = 1;
 
   scope_die = scope_die_for (type, context_die);
@@ -9051,7 +9057,7 @@ gen_type_die (type, context_die)
       /* If this is a nested type whose containing class hasn't been
         written out yet, writing it out will cover this one, too.  */
       if (TYPE_CONTEXT (type)
-         && TREE_CODE_CLASS (TREE_CODE (TYPE_CONTEXT (type))) == 't'
+         && AGGREGATE_TYPE_P (TYPE_CONTEXT (type))
          && ! TREE_ASM_WRITTEN (TYPE_CONTEXT (type)))
        {
          gen_type_die (TYPE_CONTEXT (type), context_die);
@@ -9070,7 +9076,7 @@ gen_type_die (type, context_die)
        gen_struct_or_union_type_die (type, context_die);
 
       if (TYPE_CONTEXT (type)
-         && TREE_CODE_CLASS (TREE_CODE (TYPE_CONTEXT (type))) == 't'
+         && AGGREGATE_TYPE_P (TYPE_CONTEXT (type))
          && ! TREE_ASM_WRITTEN (TYPE_CONTEXT (type)))
        pop_decl_scope ();