diff options
author | Jan Hubicka <jh@suse.cz> | 2010-04-30 16:26:51 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2010-04-30 14:26:51 +0000 |
commit | 05575e078047eec2ec0730ffd9f2f99f344c3f35 (patch) | |
tree | 5ecd0243cf1b240d9c4aba38a058cf969ac70a4d /gcc/lto-cgraph.c | |
parent | 9c6e0798279c7a954be6eb782d07edc14f3b9ee8 (diff) | |
download | gcc-05575e078047eec2ec0730ffd9f2f99f344c3f35.zip gcc-05575e078047eec2ec0730ffd9f2f99f344c3f35.tar.gz gcc-05575e078047eec2ec0730ffd9f2f99f344c3f35.tar.bz2 |
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
Diffstat (limited to 'gcc/lto-cgraph.c')
-rw-r--r-- | gcc/lto-cgraph.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/gcc/lto-cgraph.c b/gcc/lto-cgraph.c index 338250a..8a8855a 100644 --- a/gcc/lto-cgraph.c +++ b/gcc/lto-cgraph.c @@ -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->needed); gcc_assert (!node->alias); - /* 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. */ + /* 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. */ + 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. */ for (alias = node->extra_name; alias; alias = alias->next) count++; |