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
This commit is contained in:
Jan Hubicka 2011-01-15 16:44:56 +01:00 committed by Jan Hubicka
parent 620437f2d4
commit be46831f5a
4 changed files with 43 additions and 0 deletions

View File

@ -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.

View File

@ -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. */

View File

@ -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>

View File

@ -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")));