diff options
author | Jan Hubicka <jh@suse.cz> | 2011-01-15 16:44:56 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2011-01-15 15:44:56 +0000 |
commit | be46831f5a914a19bce02cb73a5c31bbba95d1b0 (patch) | |
tree | f0d2df8b9a10af944cde23619b915e72b462a63c /gcc | |
parent | 620437f2d4773ab2b42f4edebbd949577788ca86 (diff) | |
download | gcc-be46831f5a914a19bce02cb73a5c31bbba95d1b0.zip gcc-be46831f5a914a19bce02cb73a5c31bbba95d1b0.tar.gz gcc-be46831f5a914a19bce02cb73a5c31bbba95d1b0.tar.bz2 |
re PR tree-optimization/47276 (ICE in function_and_variable_visibility, at ipa.c:857 during compiling glibc.)
PR tree-optimization/47276
* ipa.c (function_and_variable_visibility): Do not try to mark alias
declarations as needed.
* gcc.dg/pr47276.c: New testcase.
From-SVN: r168844
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/ipa.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr47276.c | 30 |
4 files changed, 43 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f9e9b35..610507b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-01-13 Jan Hubicka <jh@suse.cz> + + PR tree-optimization/47276 + * ipa.c (function_and_variable_visibility): Do not try to mark alias + declarations as needed. + 2011-01-15 Martin Jambor <mjambor@suse.cz> * common.opt (fdevirtualize): New flag. @@ -847,6 +847,8 @@ function_and_variable_visibility (bool whole_program) if ((node = cgraph_node_for_asm (p->target)) != NULL && !DECL_EXTERNAL (node->decl)) { + if (!node->analyzed) + continue; /* Weakrefs alias symbols from other compilation unit. In the case the destination of weakref became available because of LTO, we must mark it as needed. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b30e532..d95034f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-01-13 Jan Hubicka <jh@suse.cz> + + PR tree-optimization/47276 + * gcc.dg/pr47276.c: New testcase. + 2011-01-15 Giovanni Funchal <gafunchal@gmail.com> Jonathan Wakely <jwakely.gcc@gmail.com> diff --git a/gcc/testsuite/gcc.dg/pr47276.c b/gcc/testsuite/gcc.dg/pr47276.c new file mode 100644 index 0000000..ae1e81a --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr47276.c @@ -0,0 +1,30 @@ +/* { dg-do compile } */ +/* { dg-require-alias "" } */ +extern void syslog (int __pri, __const char *__fmt, ...) + __attribute__ ((__format__ (__printf__, 2, 3))); +extern void vsyslog (int __pri, __const char *__fmt, int __ap) + __attribute__ ((__format__ (__printf__, 2, 0))); +void +__vsyslog(int pri, const char *fmt, int ap) +{ +} +void +__syslog_chk(int pri, int flag, const char *fmt, ...) +{ +} +void +__vsyslog_chk(int pri, int flag, const char *fmt, int ap) +{ +} +extern __typeof (__vsyslog_chk) __EI___vsyslog_chk __asm__("" "__vsyslog_chk"); extern __typeof (__vsyslog_chk) __EI___vsyslog_chk __attribute__((alias ("" "__GI___vsyslog_chk"))); +void +__syslog(int pri, const char *fmt, ...) +{ +} +extern __typeof (__syslog) syslog __attribute__ ((alias ("__syslog"))); +extern __typeof (syslog) __EI_syslog __asm__("" "syslog"); extern __typeof (syslog) __EI_syslog __attribute__((alias ("" "__GI_syslog"))); +extern __typeof (__vsyslog) vsyslog __attribute__ ((alias ("__vsyslog"))); +extern __typeof (vsyslog) __EI_vsyslog __asm__("" "vsyslog"); extern __typeof (vsyslog) __EI_vsyslog __attribute__((alias ("" "__GI_vsyslog"))); +extern __typeof (syslog) syslog __asm__ ("" "__GI_syslog") __attribute__ ((visibility ("hidden"))); +extern __typeof (vsyslog) vsyslog __asm__ ("" "__GI_vsyslog") __attribute__ ((visibility ("hidden"))); +extern __typeof (__vsyslog_chk) __vsyslog_chk __asm__ ("" "__GI___vsyslog_chk") __attribute__ ((visibility ("hidden"))); |