Hello. There's suggested patch for the issue that survives regression tests on x86_64-linux-pc.
Ready for trunk? Thanks, Martin
>From d4e9d2906a90151d1239e7b32b00f7cb46b045fa Mon Sep 17 00:00:00 2001 From: mliska <mli...@suse.cz> Date: Tue, 3 Mar 2015 10:36:59 +0100 Subject: [PATCH] Fix PR ipa/65287. gcc/testsuite/ChangeLog: 2015-03-03 Martin Liska <mli...@suse.cz> * gcc.dg/ipa/pr65287.c: New test. gcc/ChangeLog: 2015-03-03 Martin Liska <mli...@suse.cz> PR ipa/65287 * ipa-icf.c (sem_variable::parse): Skip all alias variables. --- gcc/ipa-icf.c | 3 ++- gcc/testsuite/gcc.dg/ipa/pr65287.c | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/ipa/pr65287.c diff --git a/gcc/ipa-icf.c b/gcc/ipa-icf.c index 155b96b..14ccea5 100644 --- a/gcc/ipa-icf.c +++ b/gcc/ipa-icf.c @@ -1681,7 +1681,8 @@ sem_variable::equals (tree t1, tree t2) sem_variable * sem_variable::parse (varpool_node *node, bitmap_obstack *stack) { - if (TREE_THIS_VOLATILE (node->decl) || DECL_HARD_REGISTER (node->decl)) + if (TREE_THIS_VOLATILE (node->decl) || DECL_HARD_REGISTER (node->decl) + || node->alias) return NULL; sem_variable *v = new sem_variable (node, 0, stack); diff --git a/gcc/testsuite/gcc.dg/ipa/pr65287.c b/gcc/testsuite/gcc.dg/ipa/pr65287.c new file mode 100644 index 0000000..9292984 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ipa/pr65287.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +const int __new_sys_siglist[] = {}; + +extern __typeof(__new_sys_siglist) _new_sys_siglist + __attribute__((alias("__new_sys_siglist"))); +extern __typeof(__new_sys_siglist) _sys_siglist + __attribute__((alias("__new_sys_siglist"))); + +int main() +{ + return 0; +} -- 2.1.2