Commit 05575e07 by Jan Hubicka Committed by Jan Hubicka

lto-cgraph.c (lto_output_varpool_node): Always output constant pool references.


	* lto-cgraph.c (lto_output_varpool_node): Always output constant pool
	references.

	* lto.c: Do not attempt to make constant pool references global.

From-SVN: r158938
parent 9c6e0798
2010-04-30 Jan Hubicka <jh@suse.cz> 2010-04-30 Jan Hubicka <jh@suse.cz>
* lto-cgraph.c (lto_output_varpool_node): Always output constant pool
references.
2010-04-30 Jan Hubicka <jh@suse.cz>
* tree-profile.c (tree_init_ic_make_global_vars): Mark new decls as * tree-profile.c (tree_init_ic_make_global_vars): Mark new decls as
needed. needed.
......
...@@ -374,10 +374,21 @@ lto_output_varpool_node (struct lto_simple_output_block *ob, struct varpool_node ...@@ -374,10 +374,21 @@ lto_output_varpool_node (struct lto_simple_output_block *ob, struct varpool_node
gcc_assert (node->finalized || !node->analyzed); gcc_assert (node->finalized || !node->analyzed);
gcc_assert (node->needed); gcc_assert (node->needed);
gcc_assert (!node->alias); gcc_assert (!node->alias);
/* FIXME: We have no idea how we move references around. For moment assume that /* Constant pool initializers can be de-unified into individual ltrans units.
everything is used externally. */ FIXME: Alternatively at -Os we may want to avoid generating for them the local
bp_pack_value (bp, flag_wpa, 1); /* used_from_other_parition. */ labels and share them across LTRANS partitions. */
bp_pack_value (bp, boundary_p, 1); /* in_other_partition. */ if (DECL_IN_CONSTANT_POOL (node->decl))
{
bp_pack_value (bp, 0, 1); /* used_from_other_parition. */
bp_pack_value (bp, 0, 1); /* in_other_partition. */
}
else
{
/* FIXME: We have no idea how we move references around. For moment assume that
everything is used externally. */
bp_pack_value (bp, flag_wpa, 1); /* used_from_other_parition. */
bp_pack_value (bp, boundary_p, 1); /* in_other_partition. */
}
/* Also emit any extra name aliases. */ /* Also emit any extra name aliases. */
for (alias = node->extra_name; alias; alias = alias->next) for (alias = node->extra_name; alias; alias = alias->next)
count++; count++;
......
2010-04-30 Jan Hubicka <jh@suse.cz>
* lto.c: Do not attempt to make constant pool references global.
2010-04-28 Jan Hubicka <jh@suse.cz> 2010-04-28 Jan Hubicka <jh@suse.cz>
* lto/lto.c (lto_read_in_decl_state): Use GGC. * lto/lto.c (lto_read_in_decl_state): Use GGC.
......
...@@ -723,9 +723,13 @@ lto_promote_cross_file_statics (void) ...@@ -723,9 +723,13 @@ lto_promote_cross_file_statics (void)
gcc_assert (flag_wpa); gcc_assert (flag_wpa);
/* At moment we make no attempt to figure out who is refering the variables, /* At moment we make no attempt to figure out who is refering the variables,
so all must become global. */ so all must become global.
Constant pool references use internal labels and thus can not be made global.
It is sensible to keep those ltrans local to allow better optimization. */
for (vnode = varpool_nodes; vnode; vnode = vnode->next) for (vnode = varpool_nodes; vnode; vnode = vnode->next)
if (!vnode->externally_visible && vnode->analyzed) if (!vnode->externally_visible && vnode->analyzed
&& !DECL_IN_CONSTANT_POOL (vnode->decl))
{ {
TREE_PUBLIC (vnode->decl) = 1; TREE_PUBLIC (vnode->decl) = 1;
DECL_VISIBILITY (vnode->decl) = VISIBILITY_HIDDEN; DECL_VISIBILITY (vnode->decl) = VISIBILITY_HIDDEN;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment