aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2012-02-14 08:39:55 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2012-02-14 08:39:55 +0000
commit837487be7baafd715566395ef75b0e0f16868e7b (patch)
tree69a9dfb528a98335e61c6964d9ba59459ba565e6
parentf0ebe02d7fb107fa61c9f04b2dad2c63886b8c3d (diff)
downloadgcc-837487be7baafd715566395ef75b0e0f16868e7b.zip
gcc-837487be7baafd715566395ef75b0e0f16868e7b.tar.gz
gcc-837487be7baafd715566395ef75b0e0f16868e7b.tar.bz2
re PR lto/52178 (Ada bootstrap failure in LTO mode)
2012-02-14 Richard Guenther <rguenther@suse.de> PR lto/52178 * tree-streamer-in.c (lto_input_ts_field_decl_tree_pointers): Do not stream DECL_QUALIFIER. * tree-streamer-out.c (write_ts_field_decl_tree_pointers): Likewise. * tree.c (free_lang_data_in_decl): Free DECL_QUALIFIER. (find_decls_types_r): Do not walk DECL_QUALIFIER. From-SVN: r184200
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/tree-streamer-in.c2
-rw-r--r--gcc/tree-streamer-out.c2
-rw-r--r--gcc/tree.c6
4 files changed, 15 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b297a6d..0fc9120 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2012-02-14 Richard Guenther <rguenther@suse.de>
+
+ PR lto/52178
+ * tree-streamer-in.c (lto_input_ts_field_decl_tree_pointers):
+ Do not stream DECL_QUALIFIER.
+ * tree-streamer-out.c (write_ts_field_decl_tree_pointers): Likewise.
+ * tree.c (free_lang_data_in_decl): Free DECL_QUALIFIER.
+ (find_decls_types_r): Do not walk DECL_QUALIFIER.
+
2012-02-14 Jakub Jelinek <jakub@redhat.com>
PR c/52181
diff --git a/gcc/tree-streamer-in.c b/gcc/tree-streamer-in.c
index c721510..cc6fae7 100644
--- a/gcc/tree-streamer-in.c
+++ b/gcc/tree-streamer-in.c
@@ -640,7 +640,7 @@ lto_input_ts_field_decl_tree_pointers (struct lto_input_block *ib,
{
DECL_FIELD_OFFSET (expr) = stream_read_tree (ib, data_in);
DECL_BIT_FIELD_TYPE (expr) = stream_read_tree (ib, data_in);
- DECL_QUALIFIER (expr) = stream_read_tree (ib, data_in);
+ /* Do not stream DECL_QUALIFIER, it is useless after gimplification. */
DECL_FIELD_BIT_OFFSET (expr) = stream_read_tree (ib, data_in);
DECL_FCONTEXT (expr) = stream_read_tree (ib, data_in);
}
diff --git a/gcc/tree-streamer-out.c b/gcc/tree-streamer-out.c
index ea5834e..21689dfe 100644
--- a/gcc/tree-streamer-out.c
+++ b/gcc/tree-streamer-out.c
@@ -552,7 +552,7 @@ write_ts_field_decl_tree_pointers (struct output_block *ob, tree expr,
{
stream_write_tree (ob, DECL_FIELD_OFFSET (expr), ref_p);
stream_write_tree (ob, DECL_BIT_FIELD_TYPE (expr), ref_p);
- stream_write_tree (ob, DECL_QUALIFIER (expr), ref_p);
+ /* Do not stream DECL_QUALIFIER, it is useless after gimplification. */
stream_write_tree (ob, DECL_FIELD_BIT_OFFSET (expr), ref_p);
stream_write_tree (ob, DECL_FCONTEXT (expr), ref_p);
}
diff --git a/gcc/tree.c b/gcc/tree.c
index 22f9d00..fa01583 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -4596,7 +4596,10 @@ free_lang_data_in_decl (tree decl)
free_lang_data_in_one_sizepos (&DECL_SIZE (decl));
free_lang_data_in_one_sizepos (&DECL_SIZE_UNIT (decl));
if (TREE_CODE (decl) == FIELD_DECL)
- free_lang_data_in_one_sizepos (&DECL_FIELD_OFFSET (decl));
+ {
+ free_lang_data_in_one_sizepos (&DECL_FIELD_OFFSET (decl));
+ DECL_QUALIFIER (decl) = NULL_TREE;
+ }
if (TREE_CODE (decl) == FUNCTION_DECL)
{
@@ -4800,7 +4803,6 @@ find_decls_types_r (tree *tp, int *ws, void *data)
{
fld_worklist_push (DECL_FIELD_OFFSET (t), fld);
fld_worklist_push (DECL_BIT_FIELD_TYPE (t), fld);
- fld_worklist_push (DECL_QUALIFIER (t), fld);
fld_worklist_push (DECL_FIELD_BIT_OFFSET (t), fld);
fld_worklist_push (DECL_FCONTEXT (t), fld);
}