Commit 7e17f52d by Richard Guenther Committed by Richard Biener

re PR lto/54625 (lto/profiledbootstrap broken by r191466: ICE: in…

re PR lto/54625 (lto/profiledbootstrap broken by r191466: ICE: in cgraph_clone_edge, at cgraphclones.c:123)

2012-09-25  Richard Guenther  <rguenther@suse.de>

	PR lto/54625
	* lto-symtab.c (lto_symtab_merge_cgraph_nodes_1): Do not merge
	cgraph nodes for builtins.

	* gcc.dg/lto/pr54702_0.c: New testcase.
	* gcc.dg/lto/pr54702_1.c: Likewise.
	* gcc.dg/lto/pr54625-1_0.c: Likewise.
	* gcc.dg/lto/pr54625-1_1.C: Likewise.
	* gcc.dg/lto/pr54625-2_0.c: Likewise.
	* gcc.dg/lto/pr54625-2_1.C: Likewise.

From-SVN: r191713
parent 5677bc1f
2012-09-25 Richard Guenther <rguenther@suse.de>
PR lto/54625
* lto-symtab.c (lto_symtab_merge_cgraph_nodes_1): Do not merge
cgraph nodes for builtins.
2012-09-25 Dehao Chen <dehao@google.com>
PR middle-end/54645
......
......@@ -629,7 +629,8 @@ lto_symtab_merge_cgraph_nodes_1 (symtab_node prevailing)
if (!symtab_real_symbol_p (e))
continue;
if (symtab_function_p (e))
if (symtab_function_p (e)
&& !DECL_BUILT_IN (e->symbol.decl))
lto_cgraph_replace_node (cgraph (e), cgraph (prevailing));
if (symtab_variable_p (e))
lto_varpool_replace_node (varpool (e), varpool (prevailing));
......
2012-09-25 Richard Guenther <rguenther@suse.de>
PR lto/54625
* gcc.dg/lto/pr54702_0.c: New testcase.
* gcc.dg/lto/pr54702_1.c: Likewise.
* gcc.dg/lto/pr54625-1_0.c: Likewise.
* gcc.dg/lto/pr54625-1_1.C: Likewise.
* gcc.dg/lto/pr54625-2_0.c: Likewise.
* gcc.dg/lto/pr54625-2_1.C: Likewise.
2012-09-25 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/54526
......
/* { dg-lto-do link } */
/* { dg-extra-ld-options { -r -nostdlib } } */
float a;
double sin ();
speex_resampler_init_frac ()
{
a = sin (0);
}
extern "C" double sin (double);
typedef double UnaryFunType (double);
class A
{
public:
int hash ();
double lookup (UnaryFunType p1)
{
int a = hash ();
if (p1)
return 0;
}
};
A b;
void
math_sin_impl ()
{
b.lookup (sin);
}
/* { dg-lto-do link } */
/* { dg-extra-ld-options { -r -nostdlib } } */
float a;
double sin ();
update_filter ()
{
a = sin (0);
}
extern "C" double sin (double);
typedef double (*UnaryFunType) (double);
class A
{
public:
int hash ();
void lookup (UnaryFunType p1)
{
int a = hash ();
p1 (0);
}
};
A b, c;
void
math_sin_impl ()
{
b.lookup (sin);
}
void
js_math_sqrt ()
{
c.lookup (0);
}
/* { dg-lto-do link } */
/* { dg-lto-options { { -O2 -flto -w } } } */
/* { dg-extra-ld-options { -r -nostdlib } } */
#include <stdlib.h>
void* f ()
{
void* p = malloc (1);
return p;
}
int *b;
void *d;
int c;
static int *f1 ();
void f2 ()
{
int *a = f1 (0);
}
int *f1 (j)
{
b = malloc (0);
d = *malloc;
c = j;
}
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