aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2011-12-14 11:26:13 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2011-12-14 11:26:13 +0000
commitef61eb6071c93d36b434df32c83505b95c90201d (patch)
treef0372c6e50786fd0e4975b91533b4caa16211ca3
parentd7288dfb9fac1451adede96e855c8fde9ee5f2c1 (diff)
downloadgcc-ef61eb6071c93d36b434df32c83505b95c90201d.zip
gcc-ef61eb6071c93d36b434df32c83505b95c90201d.tar.gz
gcc-ef61eb6071c93d36b434df32c83505b95c90201d.tar.bz2
tree.c (free_lang_data_in_type): Do not clear fields dependent on debuginfo level setting.
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
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/tree.c5
-rw-r--r--gcc/tree.h2
3 files changed, 10 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c9e927a..b763bbe 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/tree.c b/gcc/tree.c
index d62afe5..247c601 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -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)
diff --git a/gcc/tree.h b/gcc/tree.h
index a72a3f6..eca2f8b 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -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