tree.c (free_lang_data_in_type): Do not clear fields dependent on debuginfo level...
authorRichard Guenther <rguenther@suse.de>
Wed, 14 Dec 2011 11:26:13 +0000 (11:26 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Wed, 14 Dec 2011 11:26:13 +0000 (11:26 +0000)
2011-12-14  Richard Guenther  <rguenther@suse.de>

* tree.c (free_lang_data_in_type): Do not clear fields
dependent on debuginfo level setting.
(find_decls_types_r): Use TYPE_STUB_DECL rathern than TREE_CHAIN.
* tree.h (TYPE_STUB_DECL): Properly check that we access
a type.

From-SVN: r182329

gcc/ChangeLog
gcc/tree.c
gcc/tree.h

index c9e927a..b763bbe 100644 (file)
@@ -1,3 +1,11 @@
+2011-12-14  Richard Guenther  <rguenther@suse.de>
+
+       * tree.c (free_lang_data_in_type): Do not clear fields
+       dependent on debuginfo level setting.
+       (find_decls_types_r): Use TYPE_STUB_DECL rathern than TREE_CHAIN.
+       * tree.h (TYPE_STUB_DECL): Properly check that we access
+       a type.
+
 2011-12-14  Georg-Johann Lay  <avr@gjlay.de>
 
        PR target/50931
index d62afe5..247c601 100644 (file)
@@ -4521,9 +4521,6 @@ free_lang_data_in_type (tree type)
          && TREE_CODE (TYPE_CONTEXT (type)) != FUNCTION_DECL
          && TREE_CODE (TYPE_CONTEXT (type)) != NAMESPACE_DECL))
     TYPE_CONTEXT (type) = NULL_TREE;
-
-  if (debug_info_level < DINFO_LEVEL_TERSE)
-    TYPE_STUB_DECL (type) = NULL_TREE;
 }
 
 
@@ -4881,7 +4878,7 @@ find_decls_types_r (tree *tp, int *ws, void *data)
            }
        }
 
-      fld_worklist_push (TREE_CHAIN (t), fld);
+      fld_worklist_push (TYPE_STUB_DECL (t), fld);
       *ws = 0;
     }
   else if (TREE_CODE (t) == BLOCK)
index a72a3f6..eca2f8b 100644 (file)
@@ -2247,7 +2247,7 @@ extern enum machine_mode vector_type_mode (const_tree);
    to point back at the TYPE_DECL node.  This allows the debug routines
    to know that the two nodes represent the same type, so that we only
    get one debug info record for them.  */
-#define TYPE_STUB_DECL(NODE) TREE_CHAIN (NODE)
+#define TYPE_STUB_DECL(NODE) (TREE_CHAIN (TYPE_CHECK (NODE)))
 
 /* In a RECORD_TYPE, UNION_TYPE or QUAL_UNION_TYPE, it means the type
    has BLKmode only because it lacks the alignment requirement for