This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Do not stream DECL_FCONTEXT
- From: Jan Hubicka <hubicka at ucw dot cz>
- To: gcc-patches at gcc dot gnu dot org, rguenther at suse dot de
- Date: Thu, 12 Jul 2018 12:51:29 +0200
- Subject: Do not stream DECL_FCONTEXT
Hi,
this is another field that I believe needs no streaming. I however think we are pretty
much done with low hanging fruit.
lto-bootstrapped/regtested x86_64-linux, OK?
Honza
* lto-streamer-out.c (DFS::DFS_write_tree_body): Do not stream
DECL_FCONTEXT
(hash_tree): Do not hash DECL_FCONTEXT
* tree-streamer-in.c (lto_input_ts_field_decl_tree_pointers):
Do not stream DECL_FCONTEXT.
* tree-streamer-out.c (write_ts_field_decl_tree_pointers): Likewise.
* tree.c (free_lang_data_in_decl): Free DECL_FCONTEXT.
Index: lto-streamer-out.c
===================================================================
--- lto-streamer-out.c (revision 262560)
+++ lto-streamer-out.c (working copy)
@@ -832,7 +832,7 @@ DFS::DFS_write_tree_body (struct output_
DFS_follow_tree_edge (DECL_BIT_FIELD_TYPE (expr));
DFS_follow_tree_edge (DECL_BIT_FIELD_REPRESENTATIVE (expr));
DFS_follow_tree_edge (DECL_FIELD_BIT_OFFSET (expr));
- DFS_follow_tree_edge (DECL_FCONTEXT (expr));
+ gcc_checking_assert (!DECL_FCONTEXT (expr));
}
if (CODE_CONTAINS_STRUCT (code, TS_FUNCTION_DECL))
@@ -1249,7 +1249,6 @@ hash_tree (struct streamer_tree_cache_d
visit (DECL_BIT_FIELD_TYPE (t));
visit (DECL_BIT_FIELD_REPRESENTATIVE (t));
visit (DECL_FIELD_BIT_OFFSET (t));
- visit (DECL_FCONTEXT (t));
}
if (CODE_CONTAINS_STRUCT (code, TS_FUNCTION_DECL))
Index: tree-streamer-in.c
===================================================================
--- tree-streamer-in.c (revision 262560)
+++ tree-streamer-in.c (working copy)
@@ -758,7 +758,6 @@ lto_input_ts_field_decl_tree_pointers (s
DECL_BIT_FIELD_TYPE (expr) = stream_read_tree (ib, data_in);
DECL_BIT_FIELD_REPRESENTATIVE (expr) = stream_read_tree (ib, data_in);
DECL_FIELD_BIT_OFFSET (expr) = stream_read_tree (ib, data_in);
- DECL_FCONTEXT (expr) = stream_read_tree (ib, data_in);
}
Index: tree-streamer-out.c
===================================================================
--- tree-streamer-out.c (revision 262560)
+++ tree-streamer-out.c (working copy)
@@ -646,7 +646,6 @@ write_ts_field_decl_tree_pointers (struc
stream_write_tree (ob, DECL_BIT_FIELD_TYPE (expr), ref_p);
stream_write_tree (ob, DECL_BIT_FIELD_REPRESENTATIVE (expr), ref_p);
stream_write_tree (ob, DECL_FIELD_BIT_OFFSET (expr), ref_p);
- stream_write_tree (ob, DECL_FCONTEXT (expr), ref_p);
}
Index: tree.c
===================================================================
--- tree.c (revision 262560)
+++ tree.c (working copy)
@@ -5280,6 +5280,7 @@ free_lang_data_in_decl (tree decl)
free_lang_data_in_one_sizepos (&DECL_SIZE_UNIT (decl));
if (TREE_CODE (decl) == FIELD_DECL)
{
+ DECL_FCONTEXT (decl) = NULL;
free_lang_data_in_one_sizepos (&DECL_FIELD_OFFSET (decl));
if (TREE_CODE (DECL_CONTEXT (decl)) == QUAL_UNION_TYPE)
DECL_QUALIFIER (decl) = NULL_TREE;