This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Fix alias varpool node streaming


On Wed, May 5, 2010 at 2:04 PM, Jan Hubicka <hubicka@ucw.cz> wrote:
> Hi,
> I missed the following failure compiling gcc.c-torture/compile/20040323-1.c
> caused by previous patch. ?The problem here is that varpool has two kinds of
> aliases. ?One kind if created via varpool_extra_name_alias interface that sits
> off the main list of varpool nodes, other kind is created by
> assemble_alias_pair.
>
> I have patch to clean this up, but it is more involved and thus I am testing
> the following patch fixing the ice that makes streamer happy about this fact.
> Will commit it once testing finish. ?I apologize for the breakage.

We indeed should get rid of the alias_pair stuff and use
same-body and varpool aliases.

Richard.

> Honza
>
> ? ? ? ?* lto-cgraph.c (lto_output_varpool_node): Stream alias flag.
> ? ? ? ?(input_varpool_node): Read it.
>
> Index: lto-cgraph.c
> ===================================================================
> --- lto-cgraph.c ? ? ? ?(revision 159062)
> +++ lto-cgraph.c ? ? ? ?(working copy)
> @@ -472,9 +472,10 @@ lto_output_varpool_node (struct lto_simp
> ? bp_pack_value (bp, node->externally_visible, 1);
> ? bp_pack_value (bp, node->force_output, 1);
> ? bp_pack_value (bp, node->finalized, 1);
> + ?bp_pack_value (bp, node->alias, 1);
> + ?gcc_assert (!node->alias || !node->extra_name);
> ? gcc_assert (node->finalized || !node->analyzed);
> ? gcc_assert (node->needed);
> - ?gcc_assert (!node->alias);
> ? /* Constant pool initializers can be de-unified into individual ltrans units.
> ? ? ?FIXME: Alternatively at -Os we may want to avoid generating for them the local
> ? ? ?labels and share them across LTRANS partitions. ?*/
> @@ -867,6 +868,7 @@ input_varpool_node (struct lto_file_decl
> ? node->externally_visible = bp_unpack_value (bp, 1);
> ? node->force_output = bp_unpack_value (bp, 1);
> ? node->finalized = bp_unpack_value (bp, 1);
> + ?node->alias = bp_unpack_value (bp, 1);
> ? node->analyzed = node->finalized;
> ? node->used_from_other_partition = bp_unpack_value (bp, 1);
> ? node->in_other_partition = bp_unpack_value (bp, 1);
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]