aboutsummaryrefslogtreecommitdiff
path: root/gcc/ipa-icf.c
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2015-03-19 18:37:15 +0100
committerMartin Liska <marxin@gcc.gnu.org>2015-03-19 17:37:15 +0000
commit257291fc895a29a88d3d68719e580edcddd9a280 (patch)
tree4131d253704587c3f03d9fdd02c026b7655a4cae /gcc/ipa-icf.c
parente68287df88d7afcf7f25049f45de9ae614912157 (diff)
downloadgcc-257291fc895a29a88d3d68719e580edcddd9a280.zip
gcc-257291fc895a29a88d3d68719e580edcddd9a280.tar.gz
gcc-257291fc895a29a88d3d68719e580edcddd9a280.tar.bz2
re PR lto/65380 ([ICF] LTO: ICE in add_symbol_to_partition_1, at lto/lto-partition.c:158)
Fix PR ipa/65380. PR ipa/65380 * ipa-icf.c (sem_function::merge): Do not merge DECL_EXTERNAL symbols. (sem_variable::merge): Likewise. From-SVN: r221519
Diffstat (limited to 'gcc/ipa-icf.c')
-rw-r--r--gcc/ipa-icf.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/gcc/ipa-icf.c b/gcc/ipa-icf.c
index f68d23c..360cf17 100644
--- a/gcc/ipa-icf.c
+++ b/gcc/ipa-icf.c
@@ -814,6 +814,13 @@ sem_function::merge (sem_item *alias_item)
bool original_address_matters = original->address_matters_p ();
bool alias_address_matters = alias->address_matters_p ();
+ if (DECL_EXTERNAL (alias->decl))
+ {
+ if (dump_file)
+ fprintf (dump_file, "Not unifying; alias is external.\n\n");
+ return false;
+ }
+
if (DECL_NO_INLINE_WARNING_P (original->decl)
!= DECL_NO_INLINE_WARNING_P (alias->decl))
{
@@ -1776,6 +1783,13 @@ sem_variable::merge (sem_item *alias_item)
return false;
}
+ if (DECL_EXTERNAL (alias_item->decl))
+ {
+ if (dump_file)
+ fprintf (dump_file, "Not unifying; alias is external.\n\n");
+ return false;
+ }
+
sem_variable *alias_var = static_cast<sem_variable *> (alias_item);
varpool_node *original = get_node ();