On Thu, 12 Jul 2018, Jan Hubicka wrote:

> 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?

OK.

Thanks,
Richard.

> 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;
> 
> 

-- 
Richard Biener <rguent...@suse.de>
SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 
21284 (AG Nuernberg)

Reply via email to