2014-04-16 17:18 GMT+04:00 Ilya Enkovich <enkovich....@gmail.com>: > Hi, > > This patch add new field for varpool_node to mark vars requiring bounds > initalization. These changes were previously reverted from 4.9 and I'll > assume patch is OK for trunk if no objections arise. > > Patch was bootstrapped and tested for linux-x86_64. > > Thanks, > Ilya > -- > gcc/ > > 2014-04-16 Ilya Enkovich <ilya.enkov...@intel.com> > > * cgraph.h (varpool_node): Add need_bounds_init field. > * lto-cgraph.c (lto_output_varpool_node): Output > need_bounds_init value. > (input_varpool_node): Read need_bounds_init value. > * varpool.c (dump_varpool_node): Dump need_bounds_init field. > > > diff --git a/gcc/cgraph.h b/gcc/cgraph.h > index 15310d8..a6a51cf 100644 > --- a/gcc/cgraph.h > +++ b/gcc/cgraph.h > @@ -640,6 +640,10 @@ public: > /* Set when variable is scheduled to be assembled. */ > unsigned output : 1; > > + /* Set when variable has statically initialized pointer > + or is a static bounds variable and needs initalization. */ > + unsigned need_bounds_init : 1; > + > /* Set if the variable is dynamically initialized, except for > function local statics. */ > unsigned dynamically_initialized : 1; > diff --git a/gcc/lto-cgraph.c b/gcc/lto-cgraph.c > index 173067f..999ce3d 100644 > --- a/gcc/lto-cgraph.c > +++ b/gcc/lto-cgraph.c > @@ -585,6 +585,7 @@ lto_output_varpool_node (struct lto_simple_output_block > *ob, varpool_node *node, > && boundary_p && !DECL_EXTERNAL (node->decl), 1); > /* in_other_partition. */ > } > + bp_pack_value (&bp, node->need_bounds_init, 1); > streamer_write_bitpack (&bp); > if (node->same_comdat_group && !boundary_p) > { > @@ -1160,6 +1161,7 @@ input_varpool_node (struct lto_file_decl_data > *file_data, > node->analyzed = bp_unpack_value (&bp, 1); > node->used_from_other_partition = bp_unpack_value (&bp, 1); > node->in_other_partition = bp_unpack_value (&bp, 1); > + node->need_bounds_init = bp_unpack_value (&bp, 1); > if (node->in_other_partition) > { > DECL_EXTERNAL (node->decl) = 1; > diff --git a/gcc/varpool.c b/gcc/varpool.c > index acb5221..0eeb2b6 100644 > --- a/gcc/varpool.c > +++ b/gcc/varpool.c > @@ -205,6 +205,8 @@ dump_varpool_node (FILE *f, varpool_node *node) > fprintf (f, " initialized"); > if (node->output) > fprintf (f, " output"); > + if (node->need_bounds_init) > + fprintf (f, " need-bounds-init"); > if (TREE_READONLY (node->decl)) > fprintf (f, " read-only"); > if (ctor_for_folding (node->decl) != error_mark_node)
Will install it in a couple of days. Ilya