Commit be46831f by Jan Hubicka Committed by Jan Hubicka

re PR tree-optimization/47276 (ICE in function_and_variable_visibility, at…

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
parent 620437f2
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> 2011-01-15 Martin Jambor <mjambor@suse.cz>
* common.opt (fdevirtualize): New flag. * common.opt (fdevirtualize): New flag.
......
...@@ -847,6 +847,8 @@ function_and_variable_visibility (bool whole_program) ...@@ -847,6 +847,8 @@ function_and_variable_visibility (bool whole_program)
if ((node = cgraph_node_for_asm (p->target)) != NULL if ((node = cgraph_node_for_asm (p->target)) != NULL
&& !DECL_EXTERNAL (node->decl)) && !DECL_EXTERNAL (node->decl))
{ {
if (!node->analyzed)
continue;
/* Weakrefs alias symbols from other compilation unit. In the case /* Weakrefs alias symbols from other compilation unit. In the case
the destination of weakref became available because of LTO, we must the destination of weakref became available because of LTO, we must
mark it as needed. */ mark it as needed. */
......
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> 2011-01-15 Giovanni Funchal <gafunchal@gmail.com>
Jonathan Wakely <jwakely.gcc@gmail.com> Jonathan Wakely <jwakely.gcc@gmail.com>
......
/* { 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")));
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment